350 likes | 552 Views
Подпрограммы. Принцип модульности Область действия переменных Параметры подпрограмм Модули. Принцип модульности. В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы
E N D
Подпрограммы Принцип модульности Область действия переменных Параметры подпрограмм Модули
Принцип модульности • В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы • Подпрограммы являются основными строительными блоками, из которыхсобирается программа
Преимущества модульности: • один и тот же фрагмент можно использовать многократно как в одной, так и разных программах, не набирая его текст заново • программы, состоящие из небольших частей, легче читать, тестировать и отлаживать
Подпрограмма – это самостоятельный фрагмент программы, к которому можно обратиться по имени • описывается один раз, а вызывается столько раз, сколько необходимо • в Pascal два вида подпрограмм: процедуры и функции • для того чтобы подпрограмма выполнилась, её надо вызвать • подпрограмма вызывается по имени в том месте программы, где требуется получить результаты её работы • процедура вызывается с помощью отдельного оператора, а функция – в правой части оператора присваивания inc (i); у := Sin (x) + 1;
Структура процедуры Procedure имя (список_параметров); Label Const Type Var Procedure Function Begin … End;
Структура функции Function имя (список_параметров): тип_результата; Label Const Type Var Procedure Function Begin … имя := значение; End;
Правила определения области действия для переменных подпрограммы • действуют все переменные, определённые внутри подпрограммы • действуют все переменные окружающего контекста, если их имена отличаются от имен, объявленных внутри подпрограммы • локальные переменные процедуры и функции во внешнем окружении действовать не будут никогда • в случае совпадения имен глобальной и локальной переменной действовать будет только внутренняя локальная переменная
Параметры подпрограмм • Список параметров подпрограммы содержится в её заголовке • Для каждого параметра задаётся имя, тип и способ передачи • Параметры, имена которых указаны в заголовке подпрограммы, называются формальными • При обращении к подпрограмме в неё могут передаваться значения разных переменных • Переменные, имена которых подставляются в оператор вызова подпрограммы при фактическом обращении к ней, называются фактическими параметрами • Количество и тип фактических параметров должны соответствовать количеству и типу формальных параметров
В Pascal можно выделить четыре вида параметров • значения • переменные • константы • нетипизированные
Параметр-значение Имя: тип_данных; Procedure P(x: Integer); • Использует способ передачи по значению • Подпрограмма работает с копией переменной
Параметр-переменная VarИмя: тип_данных; Procedure P (Varx: Integer); • Использует способ передачей по адресу • Подпрограмма работает непосредственно с переменной
Параметр-константа Const Имя: тип_данных; Procedure P (Const x: Integer); • В пределах подпрограммы параметр изменить невозможно
Нетипизированные параметры • При описании нетипизированных параметров тип не указывается 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 (‘Glavnaiyaprogramma:'); WriteLn ('с = ', с, 'd = ', d, 'e = ', e); ReadLn; End.
Модули • Модуль – подключаемая к программе библиотека ресурсов (типов, констант, переменных и подпрограмм) • Модуль содержит описание и подпрограммы, которые могут использоваться в различных программах • Модули бывают стандартные и создаваемые программистом
Задача 1 • Напишите программу, которая в массиве из 20 элементов подсчитывает количество отрицательных элементов. Массив должен заполняться случайными значениями в интервале от -50 до 50.
Алгоритм 1 Начало Ввод mas[20], n = 0 i = 0, 19, 1 Вывод n mas[i] <0 Да n = n+1 Нет Конец
Используемые в программе переменные • mas – массив целых чисел • i – параметр цикла, целый тип • n – количество отрицательных чисел
Программа 1 ProgramOtr; Uses CRT; Vari, n: Integer; mas: Array [0..19] Of Integer; Begin ClrScr; Randomize; Fori := 0 To 19 Do Begin mas [i] := Random (100)-50; Write (mas[i]: 4); End; WriteLn; n := 0; Fori := 0 To 19 Do Ifmas [i]<0 Then n := n+1; WriteLn (‘Otricatelnixelementov: ’, n); ReadLn; End.
Задача 2 • Напишите программу, которая в массиве размером 15х10 для каждого столбца находит минимальный элемент. Массив должен заполняться случайными значениями в интервале от 0 до 120
Алгоритм 2 Начало Ввод mas1 [15, 10] mas2 [10] Вывод mas2 [10] j =o, 9, 1 j =o, 9, 1 min = mas1 [0, j] Конец i =o, 14, 1 mas2 [j] = min mas1 [i, j] < min Да min = mas1 [i, j] Нет
Используемые в программе переменные • mas1 – начальный двухмерный массив целых чисел • mas2 – одномерный массив, для хранения минимальных значений • i, j – параметры цикла, целый тип • min – минимальное значение
Программа 2 Program Minimum; Uses CRT; Vari, j, min: Integer; mas1: Array [0..14, 0..9] Of Integer; mas2: Array [0..9] Of Integer; Begin ClrScr; Randomize; Fori := 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]; Fori := 0 To 14 Do If mas1 [i, j]<min Then min := mas1 [i, j]; mas2 [j]:= min; End; For j := 0 To 9 Do WriteLn (‘V ’, j+1, ‘ stolbce minimum element: ’, mas2 [j]); ReadLn; End.
Задача 3 • Напишите программу, которая во введенной с клавиатуры строке удаляет все символы 'b'. Длина вводимой строки не должна превышать 25 символов. Если символ 'b' не найдены, то должно выводиться сообщение об этом
Алгоритм 3 Начало Ввод s [25], fl =false i = 1, length (s), 1 Нет Да fl Да s [i] = ‘b’ Вывод s Вывод ‘Буквы “b” нет’ delete (s, i, 1) fl = true i = i-1 Нет Конец
Используемые в программе переменные • s – вводимая строка • i – параметр цикла • fl – флаг (логический), определяет найден нужный символ или нет
Программа 3 Programbukv_b; Var s: String [25]; i: Integer; fl: boolean; Begin fl := false; Write (' Vveditestroku: '); Readln (s); i:=1;
Whilei <= Length (s) Do Begin If s [i] = 'b' Then Begin Delete (s, i, 1); fl := true; i := i-1; End; i:=i+1; End; If fl Then WriteLn ('Poluchennajastroka: ', s) Else WriteLn (' Simvol “b” ne naiden'); ReadLn; End.