ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.04.2025
Просмотров: 1464
Скачиваний: 1
СОДЕРЖАНИЕ
Федеральное агенство по образованию российской федерации
1. Основные категории и понятия информатики
1.2. Информация: структура, форма, измерение
2. Техническое и программное обеспечение пэвм
2.1. Структура аппаратных средств пэвм
2.2. Программное обеспечение пэвм
3.2.Формы представления алгоритмов
3.2.1. Алгоритм линейной структуры.
3.2.2. Алгоритм разветвляющейся структуры.
3.2.3. Алгоритмы циклической структуры.
4.2. Структура программы на языке Паскаль
4.3. Скалярные стандартные типы данных
4.4. Скалярные, пользовательские типы данных
6. Операции над данными скалярных типов. Выражения
8. Примеры программ на языке Паскаль
8.1. Пример 1. Арифметические выражения. Оператор присваивания
8.3. Пример 3. Программа обработки одномерного массива
8.4. Пример 4. Программа обработки двумерного массива
8.5. Пример 5. Программа обработки символьных строк
8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
9.Разработка программ сложной структуры
9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
9.4. Использование процедур и функций
9.5. Массивы – параметры процедур и функций
True False True False Рис. 9.7
True False True False True False Рис 9.9
9.6. Рекурсивные процедуры и функции
True False Рис. 9.10 True False
10. Динамические структуры данных
10.2. Объявление и создание динамических структур данных. Указатели
Рис
8.7
Программа на языке Паскаль.
Program Nomer_Row;
Var
A: array[1..10,1..10] of integer;
K: array[1..10] of integer;
i, j, n, m, kmax, imax: integer;
begin
write('input n<10 ');
readln(n);
write('input m<10 ');
readln(m);
for i:=1 to n do
for j:=1 to n do
read(A[i,j]);
for i:=1 to n do
begin
K[i]:=0;
for j:=1 to m do
if (A[i,j]>0) then
K[i]:= K[i]+1;
end;
kmax:=K[1];
imax:=1;
for i:=1 to n do
if (K[i]>kmax) then
begin
kmax:=K[i];
imax:=i;
end;
if kmax=0 then
writeln('Not A[i][j]>0 !')
else
writeln('imax= ',imax);
write('PRESS ANY KEY!');
readln;
end.
Результаты тестирования.
1. Исходные данные:
n=3
m=3
A=((-1,-2,-3), (-1,0,-3), (-5,-2,-8)
Результат- сообщение «notA[i,j]>0».
Результаты, выданные программой.
input n<10 3
input m<10 3
-1 -2 -3
-1 0 -3
-5 -2 -8
Not A[i][j]>0 !
PRESS ANY KEY!
2. Исходные данные:
n=3
m=3
A=((1,2,3), (1,0,-3), (-5,-2,-8)
Результат- сообщение «imax=1».
Результаты, выданные программой.
input n<10 3
input m<10 3
1 2 3
1 0 -3
-5 -2 -8
imax= 1
PRESS ANY KEY!
8.5. Пример 5. Программа обработки символьных строк
Задание 5. В массиве строк (тексте) определить число слов.
Постановка задачи.
Исходные данные:
Число строк в тексте ns<=10;
Массив размером ns, содержащий символьные строки максимальной длины, равной 255.
Выходные данные:количество слов в тексте.
Алгоритм.Подсчет числа слов в тексте.
Исходные данные:
СКАЛЯР ns<=10 - целое число;
МАССИВ Mtext[ns] типа string.
Выходные данные:
СКАЛЯР K– целое число.
Промежуточные данные:
СКАЛЯР i– целое число /* параметр цикла */
СКАЛЯР j– целое число /* параметр цикла */
Начало
Вывод(‘inputns<10’)
Ввод(ns)
ЦИКЛОТi:=1ДОns
Вывод(‘line ‘,i)
Ввод(Mtext[i])
КОНЕЦ_ЦИКЛА
K=0;
ЦИКЛ ОТi:=1ДОns
ЦИКЛ ОТ j:=1 ДО length(Mtext[I])
ЕСЛИ (Mtext[i,j]=’ ‘) ТО
K= K+1
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
вывод(‘K= ‘,K)
Конец
Блок-схема алгоритма.



False
True

False
True


False
True


Рис.
8.8



















True False



Program K_Words;
Var
Mtext: array[1..10] of string;
i, j, ns, k: integer;
begin
writeln;
write('input ns<10 ');
readln(ns);
for i:=1 to ns do
begin
write(' Line ',i,': ');
readln(Mtext[i]);
end;
k:=0;
for i:=1 to ns do
begin
for j:=1 to length(Mtext[i]) do
if (Mtext[i,j]=' ') then
k:= k+1;
k:= k+1;
end;
writeln(k,' words in the text ');
write('PRESS ANY KEY!');
readln;
end.
Результаты тестирования.
1. Исходные данные:
ns=3
Mtext= (‘В этой программе определяется’,
‘число слов в тексте.’
‘Слова разделяются пробелами.’)
Результат – сообщение «11 words in the text».
Результаты, выданные программой.
input ns<10 3
Line 1: В этой программе определяется
Line 2: число слов в тексте.
Line 3: Слова разделяются пробелами.
11 words in the text
PRESS ANY KEY!
8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
Задание 6. В двумерном массиве (матрице) определить номер строки, в которой находится максимальное количество положительных элементов. Если положительных элементов нет в массиве, вывести сообщение об этом.
Исходные данные ввести из текстового файла, сохраняемого на диске.
Постановка задачи.
Исходные данные.
Имя текстового файла на диске
-
Текстовый файл на диске с указанным именем, содержащий следующую информацию:
число строк в матрице n<=10;
число столбцов в матрице m<=10;
двумерный массив (матрица) размером nxm, содержащий положительные и отрицательные значения.
Выходные данные:номер строки, в которой находится максимальное количество положительных элементов.
Аномалии:
отсутствие файла с исходными данными на диске;
отсутствие положительных элементов в массиве.
Реакция на аномальную ситуацию – выдача сообщения.
Алгоритм.Подсчет числа положительных элементов в строках матрицы.
Исходные данные:
СТРОКА fn– имя входного файла на диске;
ФАЙЛ F1 – входной, текстовый файл (файловая переменная);
СКАЛЯР n<=10 - целое число;
СКАЛЯР m<=10 - целое число;
МАССИВ A[nxm] целого типа.
Выходные данные:
СКАЛЯР imax– целое число.
Промежуточные данные:
МАССИВ K[n] целого типа /* массив счетчиков количества положительных элементов в строках матрицы */
СКАЛЯР kmax– целое число /* максимальное количество положительных элементов */
СКАЛЯР i– целое число /* параметр цикла */
СКАЛЯР j– целое число /* параметр цикла */
Начало
Вывод(‘inputfilename’)
Ввод(fn)
Связывание файловой переменной F1cфайлом, имя которогоfn
Отключение проверки завершения операции ввода-вывода
Открытие файла F1 в режиме чтения
Включение проверки завершения операции ввода-вывода
Если IOResult<>0 то
Вывод(‘File not found!’)
Принудительное завершение программы
КОНЕЦ_ЕСЛИ
Ввод_из_файла(n)
Ввод_из_файла (m)
ЦИКЛОТi:=1ДОn
ЦИКЛОТ j:=1ДОm
Ввод_из_файла (A[i,j])
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
ЦИКЛ ОТi:=1ДОn
K[i]=0;
ЦИКЛ ОТj:=1ДОm
ЕСЛИ (A[i,j]>0) ТО
K[i]= K[i]+1
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
Kmax=K[1]
imax=1
ЦИКЛ ОТi:=1ДОn
ЕСЛИ (K[i]>Kmax)ТО
Kmax=K[i]
imax=i
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
ЕСЛИ (Kmax=0)ТО
Вывод(‘Not A[i,j]>0!’)
ИНАЧЕ
Вывод(‘imax= ‘,imax)
КОНЕЦ_ЕСЛИ
Закрытие файла
Конец
Блок-схема данного алгоритма, описанного на псевдокоде, представлена на рис. 8.9.
Блок-схема алгоритма.
Отключение
проверки завершения операции ввода-вывода Включение
проверки завершения операции ввода-вывода True False Рис.
8.9





























