ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.04.2025
Просмотров: 1477
Скачиваний: 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. Объявление и создание динамических структур данных. Указатели
Программа на языке Паскаль.
Program Nomer_Row;
Var
F1: text;
A: array[1..10,1..10] of integer;
K: array[1..10] of integer;
i, j, n, m, kmax, imax: integer;
fn: string;
begin
write('input filename '); readln(fn);
assign(F1,fn);
{$I-} Reset(F1); {$I+}
if IOResult<>0 then
begin
write('File ', fn, ' not found!'); readln; Halt;
End;
read(F1,n); read(F1,m);
for i:=1 to n do begin
for j:=1 to n do begin
read(F1,A[i,j]);
write(A[i,j],' ');
end;
writeln;
end;
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);
close(F1);
write('PRESS ANY KEY!');
readln;
end.
Результаты тестирования.
1. Исходные данные:
Текстовый файл matrix.txt, содержащий следующую информацию
<n- число строк > <m- число столбцов>
<матрица nxm, элементы разделяются пробелами, каждая строка матрицы записывается в отдельной строке файла>
Тестовый пример 1:
Файл matrix.txt
4 4
1 2 -3 -6
-3 -9 0 5
-6 -3 7 8
11 6 23 -1
Результат: imax=4.
Тестовый пример 2:
Файл matr.txt
4 4
-1 -2 -3 -6
-3 -9 0 -5
-6 -3 -7 -8
-11 -6 -23 -1
Результат: сообщение - NotA[i][j]>0 !
Результаты, выданные программой.
1. Тестовый пример1
input filename c:\matrix.txt
1 2 -3 -6
-3 -9 0 5
-6 -3 7 8
11 6 23 -1
imax= 4
PRESS ANY KEY!
2. Тестовый пример 2
input filename c:\matr.txt
-1 -2 -3 -6
-3 -9 0 -5
-6 -3 -7 -8
-11 -6 -23 -1
Not A[i][j]>0 !
PRESS ANY KEY!
9.Разработка программ сложной структуры
9.1. Процедуры и функции
При создании программы решения сложной задачи выполняется декомпозиция (разделение) задачи на подзадачи, а подзадачи – на еще меньшие подзадачи. Каждая подзадача имеет точно определенное функциональное назначение и интерфейс, т.е. описание входных и выходных данных. Представление алгоритма решения задачи ив виде совокупности связанных между собой подзадач обусловливает структуру сложной программы в виде множества взаимосвязанных подпрограмм.
Подпрограмма– это отдельно запрограммированный алгоритм, который могут использовать другие алгоритмы. Подпрограмма является самостоятельной частью программы, имеет свое имя и оформляется в соответствии с правилами синтаксиса языка программирования высокого уровня.
В языке Паскаль существуют два вида подпрограмм: процедуры и функции. Каждая процедура или функция должна быть описана один раз, но может использоваться внутри программы многократно. Описания процедур и функций размещаются в программе после раздела объявления переменных.
Использование подпрограмм позволяет избежать повторений одной и той же последовательности операторов в программе, упростить разработку и отладку больших программ.
Описание процедуры или функции имеет такую же структуру, как и программа на Паскале, и может включать в себя разделы Label,Const,Type, Var, Procedure,Functionи раздел операторов. Любой из разделов, кроме раздела операторов, может отсутствовать. Процедуры и функции могут включать в себя другие, внутренние процедуры и функции.
Описание процедуры имеет следующий вид:
Procedure<имя> (<список формальных параметров>);
L
abel
Constразделы описаний меток, констант, типов,
T
ypeпеременных
Var
P
rocedureразделы
описаний внутренних
F
unctionпроцедур
и функций
Begin
<операторы>
end;
Описание функции имеет следующий вид:
Function<имя> (<список формальных параметров>): <тип результата>;
L
abel
Constразделы описаний меток, констант, типов,
T
ypeпеременных
Var
P
rocedureразделы
описаний внутренних
F
unctionпроцедур
и функций
Begin
<операторы>
end;
Описание процедуры или функции завершается точкой с запятой.
В разделе операторов функции должен быть хотя бы один оператор, который присваивает имени функции значение результата следующего вида:
<имя функции>:=<выражение>;
Тип значения выражения должен быть совместим с типом результата функции.
Предложение Procedure(Function) называется заголовком процедуры (функции). В заголовке в круглых скобках указывается список формальных параметров, с помощью которого осуществляется обмен данными между вызывающей программой или подпрограммой и вызываемой процедурой или функцией. Обмен данными между программами и подпрограммами осуществляется тремя способами:
с помощью глобальных переменных;
с помощью списка формальных параметров;
с помощью возвращаемых значений в случае функции.
Рассмотрим подробно все три способа.
9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
Областью действияидентификатора называется часть программы, где он может быть использован и определяется местом его объявления. Если идентификаторы объявлены в рамках одной процедуры или функции, не содержащей вложенных процедур и функций, то такие идентификаторы называютсялокальнымии могут использоваться только в этой подпрограмме.
Если программа, процедура или функция содержит вложенные процедуры или функции, то объявленные в ней идентификаторы являются локальными для той подпрограммы, в которой они объявлены, и глобальными для процедур и функций, вложенных в нее.
Понятие «локальный» или «глобальный» следует понимать относительно, т. е. по отношению к конкретной процедуре или функции.
Пример.
Program Scope;
Var a0,b0,c0: integer;
Procedure p1;
Var a1,b1,c1: integer;
Begin
{ допустимо использование локальных переменных a1,b1,c1
и глобальных переменных a0,b0,c0 }
……….
End;
……….
Begin
{ допустимо использование локальных переменных a0,b0,c0}
…….
End.
Общие правила определения области действия для идентификаторов таковы:
действуют все идентификаторы, определенные внутри процедуры или функции;
действуют все идентификаторы окружающего контекста, если они отличаются от имен, объявленных внутри процедуры или функции;
локальные идентификаторы процедуры и функции во внешнем окружении не будут действовать;
в случае совпадения имен глобальной и локальной переменной будет действовать только внутренний, локальный идентификатор.
Локальные переменные создаются при вызове процедуры или функции и существуют только во время ее выполнения. Выделение памяти для локальной переменной происходит автоматически в начале выполнения подпрограммы, а освобождение этой памяти – как только выполнение подпрограммы заканчивается.
Операторы подпрограммы могут обращаться к глобальным данным. Изменение глобальных данных в процедуре или функции называется побочным эффектом. Использование побочного эффекта усложняет отладку программы и ее познаваемость.
9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
Как заголовок процедуры, так и заголовок функции может содержать список формальных параметров, который имеет следующий формат:
(<описание параметра 1>; < описание параметра 2>;…
< описание параметра n>) .
Описание параметра в списке зависит от способа передачи параметра и возможны следующие категории формальных параметров:
параметры – значения:
<имя параметра>: <тип параметра>;
параметры – переменные:
Var<имя параметра>: <тип параметра>;
параметры – константы:
Const<имя параметра>: <тип параметра>;
параметры без типа:
<имя параметра>;
в конце описания любого формального параметра, кроме последнего ставится точка с запятой.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме, т.е. количество параметров, их последовательность и типы. Активизация подпрограммы осуществляется с помощью операции вызова подпрограммы, которая имеет следующий синтаксис:
<имя процедуры>(< список фактических параметров >); в случае процедуры;
< имя переменной >:=<имя функции>(< список фактических параметров >); в случае функций вызов функции должен присутствовать в выражении как операнд.
Список фактических параметров содержит список выражений, разделенных запятыми, типы которых позиционно соответствуют типам формальных параметров, указанных в заголовке подпрограммы.
Рассмотрим способы передачи параметров.
Параметры – значения.
Пусть имеется процедура с заголовком:
Procedure Proc1(par1: type1; par2,par3: type2);
В этом случае в ячейку памяти формального параметра передается копия фактического параметра и обратно не возвращается (рис. 9.1).
Рис.
9.1