ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.04.2025

Просмотров: 1477

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Федеральное агенство по образованию российской федерации

1. Основные категории и понятия информатики

1.2. Информация: структура, форма, измерение

2. Техническое и программное обеспечение пэвм

2.1. Структура аппаратных средств пэвм

2.2. Программное обеспечение пэвм

3. Основы алгоритмизации

3.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. Структурные операторы

8. Примеры программ на языке Паскаль

8.1. Пример 1. Арифметические выражения. Оператор присваивания

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. Объявление и создание динамических структур данных. Указатели

Приложение. Контрольные вопросы

Литература

Программа на языке Паскаль.

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. Тестовый пример 1:

Файл matrix.txt

4 4

1 2 -3 -6

-3 -9 0 5

-6 -3 7 8

11 6 23 -1

Результат: imax=4.

  1. Тестовый пример 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<имя> (<список формальных параметров>);

Label

Constразделы описаний меток, констант, типов,

Typeпеременных

Var

Procedureразделы описаний внутренних

Functionпроцедур и функций

Begin

<операторы>

end;

Описание функции имеет следующий вид:

Function<имя> (<список формальных параметров>): <тип результата>;

Label


Constразделы описаний меток, констант, типов,

Typeпеременных

Var

Procedureразделы описаний внутренних

Functionпроцедур и функций

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>) .

Описание параметра в списке зависит от способа передачи параметра и возможны следующие категории формальных параметров:

  1. параметры – значения:

<имя параметра>: <тип параметра>;

  1. параметры – переменные:

Var<имя параметра>: <тип параметра>;

  1. параметры – константы:

Const<имя параметра>: <тип параметра>;

  1. параметры без типа:

<имя параметра>;

в конце описания любого формального параметра, кроме последнего ставится точка с запятой.

Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме, т.е. количество параметров, их последовательность и типы. Активизация подпрограммы осуществляется с помощью операции вызова подпрограммы, которая имеет следующий синтаксис:

<имя процедуры>(< список фактических параметров >); в случае процедуры;

< имя переменной >:=<имя функции>(< список фактических параметров >); в случае функций вызов функции должен присутствовать в выражении как операнд.

Список фактических параметров содержит список выражений, разделенных запятыми, типы которых позиционно соответствуют типам формальных параметров, указанных в заголовке подпрограммы.

Рассмотрим способы передачи параметров.

Параметры – значения.

Пусть имеется процедура с заголовком:

Procedure Proc1(par1: type1; par2,par3: type2);

В этом случае в ячейку памяти формального параметра передается копия фактического параметра и обратно не возвращается (рис. 9.1).

Рис. 9.1