- •Центр Компьютерного Обучения
- •Подпрограммы: процедуры.
- •1. Структурное программирование и технология нисходящего программирования.
- •2. Подпрограммы в языке Pascal. Понятие «процедура».
- •3. Формальные и фактические параметры.
- •4. Параметры-значения и параметры-переменные (входные и выходные параметры) подпрограмм, механизм передачи параметров (можно перенести на Занятие 2, если не хватит времени).
- •5. Локальные и глобальные переменные, область действия переменных
- •Подпрограммы: функции
- •Функция не имеет выходных параметров, она возвращает единственное значение (результат);
- •Рекурсия
- •Строковый тип данных – String
- •6. Для обработки строковых данных можно использовать стандартные процедуры и функции, описание которых можно найти в [1] или в любом справочнике по Pascal.
- •1. Общие сведения.
- •5. Доступ к компонентам файла.
- •Дополнительно (на усмотрение преподавателя!!!) процедуры Rename и Erase.
- •Текстовые файлы
- •1. Назначение.
- •Типизированные файлы
- •Динамические структуры данных
- •1. Статическая и динамическая память.
- •Распределение памяти.
- •2. Статические и динамические переменные.
- •Статическая переменная:
- •4. Доступ к переменной по указателю.
- •5. Управление динамической памятью (процедуры New и Dispose).
- •Формирование с помощью указателей однонаправленного списка по принципу стека, поиск элемента
- •Однонаправленный список
- •Пояснения к программе
- •Формирование с помощью указателей однонаправленного списка по принципу «очереди», поиск элемента
- •Пояснения к программе
- •Удаление элемента из линейного однонаправленного списка
Подпрограммы: функции
Подпрограмма-функция предназначена для вычисления какого-либо значения. Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок функции:
function <имя_функции> (<список формальных параметров>): тип_возвр_значения;
Функция может возвращать значения следующих типов: любого порядкового, любого вещественного, типа string. Тело функции имеет структуру, аналогичную структуре программы на языке Pascal. При этом в разделе операторов в теле функции должен находиться, по крайней мере, один оператор, присваивающий имени функции значение. В основную программу возвращается результат последнего присваивания.
Обращение к функции осуществляется по имени в составе некоторого выражения с указанием списка фактических параметров.
Функция имеет четыре основных отличия от процедуры:
заголовок;
в теле функции хотя бы один раз (перед выходом из подпрограммы) имени функции должно быть присвоено значение;
Функция не имеет выходных параметров, она возвращает единственное значение (результат);
вызов функции происходит в составе некоторого выражения внутри оператора, в то время как процедура не может выступать в качестве операнда в выражении.
Пример. Используя функцию, найти сумму чисел А и В, вводимых с клавиатуры.
Program Primer;
Uses Crt;
Var A, B, Summa : Integer;
Function Sum(C, D:Integer):Integer; {описание функции}
Var S:Integer; {для нахождения суммы двух чисел}
Begin
S:=C+D;
Sum:=S;
End;
Begin
Clrscr;
Writeln(‘Введите первое число’);
Readln(A);
Writeln(‘Введите второе число’);
Readln(B);
Summa:=Sum(A,B); {вызов функции}
Writeln(‘Сумма равна ’,Summa);
Readkey;
End.
Задача
Сформировать матрицы А{15,13} и В{5,7}. Вывести их. Используя функцию, найти максимальные элементы матриц.
а) Схема алгоритма основной программы:
б) Схема алгоритма функции поиска максимального элемента матрицы.
Схемы алгоритмов процедур формирования и вывода матрицы см. в Занятии 5.
Program Primer; Uses Crt; Type Matrica=array[1..15,1..13] of Integer; Var A, B : Matrica; Max1, Max2 :Integer; Procedure Input(Var D:Matrica; N,K:Integer); Var i, j : Integer; Begin Randomize; For i:=1 to N Do For j:=1 to K Do D[i,j]:=Random(10)-5; End; Procedure Output(D:Matrica; N,K:Integer); Var i, j : Integer; Begin For i:=1 to N Do Begin For j:=1 to K Do Write(D[i,j]:4,’ ‘); Writeln; End; End; Function Max_Elem(D:Matrica; N,K:Integer) :Integer; Var i, j, max : Integer; Begin Max:=D[1,1]; For i:=1 to N Do For j:=1 to K Do If D[i,j]>Max Then Max:=D[i,j]; Max_Elem:=Max; End; Begin Input(A,15,13); Input(B,5,7); Clrscr; Writeln(‘Матрица А’); Output(A,15,13); Readkey; Clrscr; Writeln(‘Матрица В’); Output(В,5,7); Readkey; Max1:=Max_Elem(A,15,13); Max2:=Max_Elem(B,5,7); Writeln(‘Макс. элемент матрицы А равен Writeln(‘Макс. элемент матрицы B равен Readkey; End. |
{заголовок программы}
{объявление типа - матрица} {объявление переменных}
{процедура формирования матрицы} {указанной размерности} {N – число строк в матрице} {K – число столбцов в матрице} {формирование матрицы с помощью} {датчика случайных чисел}
{процедура вывода матрицы заданной} {размерности} {N – число строк в матрице} {K – число столбцов в матрице}
{функция поиска максимального} {элемента в матрице указанной} {размерности}
{основная программа} (вызов процедуры форм-я для матрицы А) {вызов процедуры форм-я для матрицы В} {очистка экран}
{вызов проц. вывода матр. для матр. А} {ожидание нажатия любой клавиш} {очистка экрана}
{вызов проц. вывода матр. для матр. В} {ожидание нажатия любой клавиши} {вызов ф-ии Max_Elem для матрицы А} {вызов ф-ии Max_Elem для матрицы В} ’,Max1); {вывод максимума для матрицы А} ’,Max2); {вывод максимума для матрицы В} {ожидание нажатия любой клавиш} {конец программы} |
