
- •Введение
- •1. Программирование на языке Паскаль
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •2. Организация форматного вывода данных на языке Паскаль
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Вопросы для самопроверки
- •Лабораторная работа №9 составление программ с использованием модулей
- •Варианты заданий
- •10. Строковые типы данных (String)
- •10.1 Операции со строками
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •Лабораторная работа №12 организация работы с внешней памятью
- •Варианты заданий
- •13. Множества
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Библиографический список
8.3. Подпрограммы-функции (function)
Если подпрограмма генерирует одно выходное значение, которое получается после вычисления выражения, такая процедура называется функцией, где входными параметрами являются аргументы.
Формат объявления подпрограммы-функции:
FUNCTION <имя_функции> (<список_формальных_параметров>): <тип_возвращаемого_результата>; {раздел описания подпрограммы}
BEGIN {раздел операторов подпрограммы}
END;
Например (см. Задача 1), Function Power (x, y : real) : real;
Вызов подпрограммы-функции:
<имя_функции> (<список_фактических_параметров>) : <тип_возвращаемого_результата>;
Здесь, фактические («настоящие») параметры – параметры вызывающей программы.
Например (см. Задача 1), C:= Power (a, b);
При описании тела функции выходной результат присваивается её имени, то есть результат подпрограммы будет храниться в её имени. Результат функции не может быть массивом или другим структурированным типом.
Например (см. Задача 1), Power := exp(y*ln(x));
В качестве типа формального параметра может быть любой тип. Функция может использоваться без формальных параметров. Например, c:= Readkey;
Вызывается функция по имени с указанием фактических параметров. При этом вызов функции можно делать непосредственно внутри выражения основной программы. Фактический параметр должен иметь тот же тип, что и соответствующий ему формальный параметр в заголовке функции.
Задача 8.4. Составить подпрограмму возведения вещественного числа в вещественную степень.
Примечание. Для простоты обращения подпрограмма Power на представленной блок-схеме обозначена сокращённо буквой P.
Б
лок-схема
алгоритма подпрограммы Power
Б
лок-схема
алгоритма основной программы
Листинг основной программы
PROGRAM TASK;
USES CRT;
VAR
A, B, C : REAL;
{объявление подпрограммы-функции}
FUNCTION POWER (X, Y:REAL): REAL; {заголовок функции}
BEGIN {начало тела функции}
IF (X>0) AND (Y>0) THEN POWER := EXP(Y*LN(X))
ELES
IF (X>0) AND (Y<0) THEN POWER := 1/EXP(Y*LN(X))
ELSE
IF (X<0) AND (Y>0) THEN POWER := EXP(Y*LN(ABS(X)))
ELSE
IF (X<0) AND (Y<0) THEN POWER := 1/EXP(Y*LN(ABS(X)))
ELSE
IF X=0 THEN POWER := 0
ELSE
IF Y=0 THEN
POWER := 1; {присвоение выход-го результата имени функции}
END; {конец тела функции}
BEGIN {начало тела основной программы}
CLRSCR;
WRITELN (‘Введите два вещественных числа’);
READLN (A,B);
C := POWER(A,B); {вызов подпрограммы-функции}
WRITELN (C);
END. {конец тела подпрограммы}
Здесь,
A, B, C – глобальные переменные,
X, Y – формальные параметры, которые в свою очередь являются входными параметрами-значения.
Примечание. Уравнение с = 6.412.6+12.16-6.8-12.16-6.8; можно реализовать следующим образом: C:= POWER(6.4, 12.6)+POWER(12.16, -6.8)-POWER(12.16, -6.8);
З
адача
8.5.
Вычислить
площадь треугольника по формуле Герона.
Б
лок-схема
алгоритма подпрограммы SQUARE
Блок-схема алгоритма основной программы
Листинг основной программы
PROGRAM TASK;
USES CRT;
VAR
A, B, C, S: REAL;
FUNCTION SQUARE (L1, L2, L3 : REAL): REAL;
VAR P: REAL;
BEGIN
P:= (L1+L2+L3)/2;
SQUARE:= SQRT(P*(P-L1)*(P-L2)*(P-L3));
END;
BEGIN
CLRSCR;
WRITELN (‘Введите стороны’);
READLN (A, B, C);
S:= SQUARE(A, B, C);
WRITELN(S);
READLN; END.
З
адача
8.6.
Дан массив
целых чисел, размерностью 15 элементов.
Вычислить сумму элементов с 1-го по 12 и
с 8-го по 15. Найти произведение этих
сумм.
Блок-схема алгоритма подпрограммы
Блок-схема алгоритма основной программы
Листинг основной программы
PROGRAM TASK;
USES CRT;
CONST N=15;
TYPE VECTOR = ARRAY[1..N] OF INTEGER;
VAR
P, I : INTEGER;
A : VECTOR;
FUNCTION SUMMA (L1, L2 : INTEGER): INTEGER;
VAR
J, S : INTEGER;
BEGIN
S := 0;
FOR J:=L1 TO L2 DO S:= S+A[J];
SUMMA:= S;
END;
BEGIN
CLRSCR;
FOR I:=1 TO N DO READ (A[I]);
P:= SUMMA(1, 12)*SUMMA(8, 15);
WRITELN(P);
READLN;
END.
Примечание. Если обрабатываются массивы чисел, то ввод и вывод массивов можно организовать в подпрограммах-процедурах.
З
адача
8.7. Вычислить
сумму чётных элементов трёх одномерных
массивов.
Блок-схема алгоритма подпрограммы Summa
Блок-схема алгоритма основной программы
Листинг основной программы
PROGRAM TASK;
USES CRT;
CONST N=25;
TYPE
VECTOR=ARRAY[1..N] OF INTEGER;
VAR
A, B, C:VECTOR;
I: INTEGER;
FUNCTION SUMMA(L: INTEGER; D: VECTOR): INTEGER;
VAR
S, J: INTEGER;
BEGIN
S:= 0;
FOR J:=1 TO L DO
IF D[J] MOD 2 = 0 THEN S:= S+D[J];
SUMMA:=S;
END;
BEGIN
CLRSCR;
RANDOMIZE;
FOR I:=1 TO N DO
BEGIN
A[I]:=RANDOM(11);
B[I]:=RANDOM(21);
C[I]:=RANDOM(31);
END;
WRITELN (‘Сформированный массив A’);
FOR I:=1 TO N DO WRITE(A[I]:2, ‘’:3);
WRITELN;
WRITELN (‘A’, SUMMA(N,A));
WRITELN (‘Сформированный массив B’);
FOR I:=1 TO N DO WRITE(B[I]:2, ‘’:3);
WRITELN;
WRITELN (‘B’, SUMMA(N,B));
WRITELN (‘Сформированный массив C’);
FOR I:=1 TO N DO WRITE(C[I]:2, ‘’:3);
WRITELN;
WRITELN (‘C’, SUMMA(N,C));
READLN;
END.
Примечание. Вызов подпрограммы Summa в теле основной программы осуществляется три раза внутри операторов вывода. При этом каждый раз передаются различные фактические параметры: первый параметр – размерность массива, второй параметр – имя массива, элементы которого проверяются на чётность и суммируются.