- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 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
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
True False True False Рис. 9.7
Текст программы на языке Паскаль.
Program Main;
Type Vect = array[1..20] of real;
Var A,B: Vect;
n1, n2, I: integer;
Proizv, MaxA, MaxB: real;
Function MaxEl(M: Vect; nm : integer): real;
Var I: integer;
Max: real;
Begin
Max:=M[1] ;
For I:=1 to n1 do
If (M[I]>Max) then
Max:=M[I];
MaxEl:=Max;
End;
Begin
Writeln('Input n1: ');
Readln(n1);
Writeln('Input ',n1, ' real numbers: ');
For I:=1 to n1 do readln(A[I]);
Writeln('Input n2: ');
Readln(n2);
Writeln('Input ',n2, ' real numbers: ');
For I:=1 to n2 do readln(B[I]);
MaxA:=MaxEl(A,n1);
MaxB:=MaxEl(B,n2);
Proizv:= MaxA*MaxB;
Writeln('MaxA = ', MaxA);
Writeln('MaxB = ', MaxB);
Writeln('MaxA*MaxB = ', Proizv);
Write('Press any key!!!');
Readln;
End.
Результаты тестирования.
Input n1:
5
Input 5 real numbers:
1.6
-5.8
2
7
1.45
Input n2:
3
Input 3 real numbers:
1.5
2
-8
MaxA = 7.00000000000000E+0000
MaxB = 2.00000000000000E+0000
MaxA*MaxB = 1.40000000000000E+0001
Press any key!!!
Аналогично можно передавать двумерные массивы в качестве параметра процедурам и функциям. Рассмотрим пример программы обработки матриц с использованием подпрограмм.
Задание. В двумерном массиве (матрице) определить номер строки, в которой находится максимальное количество положительных элементов. Для определения числа положительных элементов в строке использовать процедуру. Если положительных элементов нет в массиве, вывести сообщение об этом.
Постановка задачи.
Исходные данные:
число строк в матрице n<=10;
число столбцов в матрице m<=10;
двумерный массив (матрица) размером nxm, содержащий положительные и отрицательные значения.
Выходные данные:номер строки, в которой находится максимальное количество положительных элементов.
Метод решения:для определения числа положительных элементов в строке матрицы использовать функцию.
Аномалии:отсутствие положительных элементов в массиве.
Реакция на аномальную ситуацию – выдача сообщения.
Блок-схема основной программы представлена на рис. 9.8.
Рис.
9.8
Блок-схема подпрограммы - процедуры для подсчета количества положительных элементов в каждой строке матрицы и записи счетчиков в массив Kизnэлементов представлена на рис. 9.9.
K[I]= количествоA[I,J], для которых справедливо неравенствоA[I,J]>0.
True False True False True False Рис 9.9
Текст программы на языке Паскаль.
Program Main;
Type Tmatrix = array[1..10,1..10] of integer;
Vect = array[1..10] of integer;
Var
A: Tmatrix;
K: Vect;
i, j, n, m, kmax, imax: integer;
Procedure PositiveEl(M:Tmatrix; n, m: integer; VAR K: Vect);
Var i, j: integer;
begin
for i:=1 to n do
begin
K[i]:=0;
for j:=1 to m do
if (Mt[i,j]>0) then
K[i]:= K[i]+1;
end;
end;
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]);
PositiveEl(A, n, m, K);
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!