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

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

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

Добавлен: 07.04.2025

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

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

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

Литература

Параметры – значения являются входными параметрами подпрограммы. В качестве фактического параметра могут использоваться как переменные, так и константы.

Параметры – переменные.

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

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

В этом случае подпрограмме передается адрес фактического параметра. По имеющемуся адресу изменяется содержимое ячеек памяти фактического параметра, т.е. выполняется возврат значения в вызывающую программу. (рис. 9.2).

Рис. 9.2

Параметры – переменные являются выходными параметрами подпрограммы. В качестве фактического параметра могут использоваться только переменные, тип которых совместим с типом того соответствующего формального параметра.

Параметры – константы.

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

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

В этом случае подпрограмме передается адрес фактического параметра. По имеющемуся адресу разрешено только брать значение фактического параметра, а изменять его значение запрещено (рис. 9.3).

Рис. 9.3

В качестве фактического параметра могут использоваться как переменные, так и константы, тип которых совместим с типом того соответствующего формального параметра. Запрещается присваивать значения параметрам – константам и передавать такие параметры другим подпрограммам в качестве фактических параметров.

Параметры без типа.

Бестиповые параметры могут передаваться только по адресу, т. е. как параметры – переменные или параметры – константы. Для параметра без типа в списке формальных параметров тип в описании не указывается.


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

Procedure Proc1(Var par1, par2; Const par3);

Вследствие отсутствия типа, нельзя использовать бестиповые параметры так же, как типизированные параметры. Перед использованием параметра требуется параметр без типа привести к какому-либо типу.

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

<имя типа>(<имя переменной>) .

Например,

Var a: integer;

R: real;

…………..

R:= real(a) /2;

…………..

где real(a) – операция явного приведения целочисленной переменной в вещественный тип.


9.4. Использование процедур и функций

Задание. Определить наибольший общий делитель двух целых чисел.

Постановка задачи.

Входные данные:

A,B– целые, положительные числа.

Выходные данные:

Nod– наибольший общий делительAиB.

Метод решения: алгоритм Евклида.

Алгоритм.Выдача наибольшего общего делителя двух целых чисел.

Входные данные.

СКАЛЯР A,B– целые, положительные числа.

Выходные данные.

СКАЛЯР Nod– целое число.

Начало

A:=0

B:=0

ЦИКЛ_ПОКА(A<=0 ИЛИ B<=0)

Вывод(‘Input A,B : ’)

ввод(A,B)

КОНЕЦ_ЦИКЛА

Findnod(A,B,Nod)

Вывод(‘Nod(A,B)= ’,Nod)

Конец

Алгоритм.Процедура определения наибольшего общего делителя двух целых чисел (findnod).

Входные данные.

СКАЛЯР A,B– целые, положительные числа.

Выходные данные.

СКАЛЯР Nod– целое число.

Промежуточные данные.

СКАЛЯР R– целое число. {остаток от деления }

Начало

R:=1

ЦИКЛ_ПОКА(R<>0)

R:=A mod B

A:=B

B:=R

КОНЕЦ_ЦИКЛА

Nod:= A

Конец

Блок - схема программы

True False Рис. 9.4

Блок-схема процедуры findnod.

True

False

Рис. 9.5


Программа на языке Паскаль, использующая процедуру.

Program Exam7;

Var

A, B, Nod: integer;

procedure findnod (A, B: integer; Var X: integer);

Var R: integer;

Begin

R:=1;

While R<>0 do

Begin

R:=A mod B;

A:=B; B:=R;

End;

X:=A;

End;

Begin A:=0; B:=0;

While (A<=0) or (B<=0) do begin

Writeln('Input A,B <>0 :');

Readln(A,B);

End;

findnod(A,B,Nod);

Writeln('Nod(A,B) = ',Nod);

Readln;

End.

Результаты тестирования.

1. Исходные данные:

A=84

B=36

Результат: Nod(A,B)=12

  1. Тестовый пример 2:

A=84

B=56

Результат: Nod(A,B)=28

Результаты, выданные программой.

  1. Тестовый пример1

InputA,B<>0 :

84

36

Nod(A,B) = 12

  1. Тестовый пример 2

InputA,B<>0 :

84

56

Nod(A,B) = 28

Программа на языке Паскаль, использующая функцию.

Program Exam7;

Var

A, B, Nod: integer;

Function findnod (A, B: integer): integer;

Var R: integer;

Begin

R:=1;

While R<>0 do

Begin

R:=A mod B;

A:=B; B:=R;

End;

findnod :=A;

End;

Begin A:=0; B:=0;

While (A<=0) or (B<=0) do begin

Writeln('Input A,B <>0 :');

Readln(A,B);

End;

Nod := findnod(A,B);

Writeln('Nod(A,B) = ',Nod);

Readln;

End.

Результаты тестирования.

1. Исходные данные:

A=84

B=36

Результат: Nod(A,B)=12

  1. Тестовый пример 2:

A=84

B=56

Результат: Nod(A,B)=28

Результаты, выданные программой.

  1. Тестовый пример1

InputA,B<>0 :

84

36

Nod(A,B) = 12

  1. Тестовый пример 2

InputA,B<>0 :

84

56

Nod(A,B) = 28

Замечание.

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

В общем случае функция может возвращать значения следующих типов: любого порядкового типа, любого вещественного типа, стандартного типа stringи типа-указателя.


9.5. Массивы – параметры процедур и функций

Массив является структурным типом данных, поэтому для того, чтобы передать массив в качестве параметра в подпрограмму, необходимо в разделе типов основной программы объявить требуемый тип «массив». Например,

TYPEVect=array[1..20]ofreal; { тип одномерного массива}

TMatrix=array[1..10,1..10] of real; { тип двумерного массива} .

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

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

Постановка задачи.

Входные данные:

A,B– одномерные массивы размераn1 иn1, соответственно.

Выходные данные:

Proizv– произведение максимальных элементов массивовAиB.

Метод решения: для определения максимального элемента массива использовать функцию.

Программа будет включать внутреннюю функцию MaxEl. Алгоритм основной программыMainпредставлен на рис. 9.6, алгоритм функцииMaxElпредставлен на рис. 9.7.

Рис. 9.6