Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули
Принцип модульности В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы Подпрограммы являются основными строительными блоками, из которых собирается программа
Преимущества модульности: 1.один и тот же фрагмент можно использовать многократно как в одной, так и разных программах, не набирая его текст заново 2.программы, состоящие из небольших частей, легче читать, тестировать и отлаживать
Подпрограмма – это самостоятельный фрагмент программы, к которому можно обратиться по имени описывается один раз, а вызывается столько раз, сколько необходимо в Pascal два вида подпрограмм: процедуры и функции для того чтобы подпрограмма выполнилась, её надо вызвать подпрограмма вызывается по имени в том месте программы, где требуется получить результаты её работы процедура вызывается с помощью отдельного оператора, а функция – в правой части оператора присваивания inc (i); у := Sin (x) + 1;
Структура процедуры
Структура функции
Область действия переменных описываются в главной программе время жизни: с момента начала программы и до её завершения доступны в любом месте программы, кроме подпрограмм, в которых описаны локальные переменные с такими же именами Глобальные описываются внутри подпрограммы время жизни: время выполнения подпрограммы могут использоваться только в подпрограмме, в которой описаны, и во всех вложенных в неё подпрограммах Локальные
Правила определения области действия для переменных подпрограммы 1.действуют все переменные, определённые внутри подпрограммы 2.действуют все переменные окружающего контекста, если их имена отличаются от имен, объявленных внутри подпрограммы 3.локальные переменные процедуры и функции во внешнем окружении действовать не будут никогда 4.в случае совпадения имен глобальной и локальной переменной действовать будет только внутренняя локальная переменная
Параметры подпрограмм Список параметров подпрограммы содержится в её заголовке Для каждого параметра задаётся имя, тип и способ передачи Параметры, имена которых указаны в заголовке подпрограммы, называются формальными При обращении к подпрограмме в неё могут передаваться значения разных переменных Переменные, имена которых подставляются в оператор вызова подпрограммы при фактическом обращении к ней, называются фактическими параметрами Количество и тип фактических параметров должны соответствовать количеству и типу формальных параметров
В Pascal можно выделить четыре вида параметров 1.значения 2.переменные 3.константы 4.нетипизированные
Параметр-значение
Параметр-переменная
Параметр-константа
Нетипизированные параметры При описании нетипизированных параметров тип не указывается Procedure P (Const a, b; Var у); Передаются всегда по адресу Перед тем как выполнять в подпрограмме действия с таким параметром, его требуется привести к какому-либо типу
Var a, b, с, d, e: Word; Procedure Х (а, b, с: Word; Var d: Word); Var e: Word; Begin с := a + b; d := c; e := с; WriteLn ('Podprogramma:'); WriteLn ('с = ', c, 'd = ', d, 'e = ', e); End; Begin a := 3; b := 5; x (a, b, c, d); WriteLn (Glavnaiya programma:'); WriteLn ('с = ', с, 'd = ', d, 'e = ', e); ReadLn; End.
Модули Модуль – подключаемая к программе библиотека ресурсов (типов, констант, переменных и подпрограмм) Модуль содержит описание и подпрограммы, которые могут использоваться в различных программах Модули бывают стандартные и создаваемые программистом
Задача 1 Напишите программу, которая в массиве из 20 элементов подсчитывает количество отрицательных элементов. Массив должен заполняться случайными значениями в интервале от -50 до 50.
Алгоритм 1 Начало Ввод mas[20], n = 0 Ввод mas[20], n = 0 i = 0, 19, 1 mas[i]
Используемые в программе переменные mas – массив целых чисел i – параметр цикла, целый тип n – количество отрицательных чисел
Программа 1 Program Otr; Uses CRT; Var i, n: Integer; mas: Array [0..19] Of Integer; Begin ClrScr; Randomize; For i := 0 To 19 Do Begin mas [i] := Random (100)-50; Write (mas[i]: 4); End; WriteLn; n := 0; For i := 0 To 19 Do If mas [i]
Задача 2 Напишите программу, которая в массиве размером 15х10 для каждого столбца находит минимальный элемент. Массив должен заполняться случайными значениями в интервале от 0 до 120
Алгоритм 2 Начало Ввод mas1 [15, 10] mas2 [10] Ввод mas1 [15, 10] mas2 [10] j =o, 9, 1 i =o, 14, 1 min = mas1 [0, j] mas1 [i, j] < min min = mas1 [i, j] mas2 [j] = min Вывод mas2 [10] Вывод mas2 [10] j =o, 9, 1 Конец Да Нет
Используемые в программе переменные mas1 – начальный двухмерный массив целых чисел mas2 – одномерный массив, для хранения минимальных значений i, j – параметры цикла, целый тип min – минимальное значение
Программа 2 Program Minimum; Uses CRT; Var i, j, min: Integer; mas1: Array [0..14, 0..9] Of Integer; mas2: Array [0..9] Of Integer; Begin ClrScr; Randomize; For i := 0 To 14 Do Begin For j := 0 To 9 Do Begin mas1 [i, j] := Random (120); Write (mas1 [i, j]: 4); End; WriteLn; End;
WriteLn; For j := 0 To 9 Do Begin min := mas1 [0, j]; For i := 0 To 14 Do If mas1 [i, j]
Задача 3 Напишите программу, которая во введенной с клавиатуры строке удаляет все символы 'b'. Длина вводимой строки не должна превышать 25 символов. Если символ 'b' не найдены, то должно выводиться сообщение об этом
Алгоритм 3 Начало Ввод s [25], fl =false Ввод s [25], fl =false i = 1, length (s), 1 s [i] = b delete (s, i, 1) fl = true i = i-1 delete (s, i, 1) fl = true i = i-1 fl Вывод s Вывод s Вывод Буквы b нет Вывод Буквы b нет Конец Да Нет Да Нет
Используемые в программе переменные s – вводимая строка i – параметр цикла fl – флаг (логический), определяет найден нужный символ или нет
Программа 3 Program bukv_b; Var s: String [25]; i: Integer; fl: boolean; Begin fl := false; Write (' Vvedite stroku: '); Readln (s); i:=1;
While i