1 / 34

Подпрограммы

Подпрограммы. Принцип модульности Область действия переменных Параметры подпрограмм Модули. Принцип модульности. В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы

denton-rush
Download Presentation

Подпрограммы

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Подпрограммы Принцип модульности Область действия переменных Параметры подпрограмм Модули

  2. Принцип модульности • В модульной программе отдельные её части, предназначенные для решения каких-либо частных задач, организованы в подпрограммы • Подпрограммы являются основными строительными блоками, из которыхсобирается программа

  3. Преимущества модульности: • один и тот же фрагмент можно использовать многократно как в одной, так и разных программах, не набирая его текст заново • программы, состоящие из небольших частей, легче читать, тестировать и отлаживать

  4. Подпрограмма – это самостоятельный фрагмент программы, к которому можно обратиться по имени • описывается один раз, а вызывается столько раз, сколько необходимо • в Pascal два вида подпрограмм: процедуры и функции • для того чтобы подпрограмма выполнилась, её надо вызвать • подпрограмма вызывается по имени в том месте программы, где требуется получить результаты её работы • процедура вызывается с помощью отдельного оператора, а функция – в правой части оператора присваивания inc (i); у := Sin (x) + 1;

  5. Структура процедуры Procedure имя (список_параметров); Label Const Type Var Procedure Function Begin … End;

  6. Структура функции Function имя (список_параметров): тип_результата; Label Const Type Var Procedure Function Begin … имя := значение; End;

  7. Область действия переменных

  8. Правила определения области действия для переменных подпрограммы • действуют все переменные, определённые внутри подпрограммы • действуют все переменные окружающего контекста, если их имена отличаются от имен, объявленных внутри подпрограммы • локальные переменные процедуры и функции во внешнем окружении действовать не будут никогда • в случае совпадения имен глобальной и локальной переменной действовать будет только внутренняя локальная переменная

  9. Параметры подпрограмм • Список параметров подпрограммы содержится в её заголовке • Для каждого параметра задаётся имя, тип и способ передачи • Параметры, имена которых указаны в заголовке подпрограммы, называются формальными • При обращении к подпрограмме в неё могут передаваться значения разных переменных • Переменные, имена которых подставляются в оператор вызова подпрограммы при фактическом обращении к ней, называются фактическими параметрами • Количество и тип фактических параметров должны соответствовать количеству и типу формальных параметров

  10. В Pascal можно выделить четыре вида параметров • значения • переменные • константы • нетипизированные

  11. Параметр-значение Имя: тип_данных; Procedure P(x: Integer); • Использует способ передачи по значению • Подпрограмма работает с копией переменной

  12. Параметр-переменная VarИмя: тип_данных; Procedure P (Varx: Integer); • Использует способ передачей по адресу • Подпрограмма работает непосредственно с переменной

  13. Параметр-константа Const Имя: тип_данных; Procedure P (Const x: Integer); • В пределах подпрограммы параметр изменить невозможно

  14. Нетипизированные параметры • При описании нетипизированных параметров тип не указывается Procedure P (Const a, b; Varу); • Передаются всегда по адресу • Перед тем как выполнять в подпрограмме действия с таким параметром, его требуется привести к какому-либо типу

  15. 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.

  16. Модули • Модуль – подключаемая к программе библиотека ресурсов (типов, констант, переменных и подпрограмм) • Модуль содержит описание и подпрограммы, которые могут использоваться в различных программах • Модули бывают стандартные и создаваемые программистом

  17. Решение задач

  18. Задача 1 • Напишите программу, которая в массиве из 20 элементов подсчитывает количество отрицательных элементов. Массив должен заполняться случайными значениями в интервале от -50 до 50.

  19. Алгоритм 1 Начало Ввод mas[20], n = 0 i = 0, 19, 1 Вывод n mas[i] <0 Да n = n+1 Нет Конец

  20. Используемые в программе переменные • mas – массив целых чисел • i – параметр цикла, целый тип • n – количество отрицательных чисел

  21. Программа 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.

  22. Задача 2 • Напишите программу, которая в массиве размером 15х10 для каждого столбца находит минимальный элемент. Массив должен заполняться случайными значениями в интервале от 0 до 120

  23. Алгоритм 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] Нет

  24. Используемые в программе переменные • mas1 – начальный двухмерный массив целых чисел • mas2 – одномерный массив, для хранения минимальных значений • i, j – параметры цикла, целый тип • min – минимальное значение

  25. Программа 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;

  26. 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.

  27. Задача 3 • Напишите программу, которая во введенной с клавиатуры строке удаляет все символы 'b'. Длина вводимой строки не должна превышать 25 символов. Если символ 'b' не найдены, то должно выводиться сообщение об этом

  28. Алгоритм 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 Нет Конец

  29. Используемые в программе переменные • s – вводимая строка • i – параметр цикла • fl – флаг (логический), определяет найден нужный символ или нет

  30. Программа 3 Programbukv_b; Var s: String [25]; i: Integer; fl: boolean; Begin fl := false; Write (' Vveditestroku: '); Readln (s); i:=1;

  31. 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.

More Related