Модульное программирование 1

Скачать презентацию Модульное программирование  1 Скачать презентацию Модульное программирование 1

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

  • Количество слайдов: 47

>  Модульное программирование  1 Модульное программирование 1

>   Раздел 1 ПОДПРОГРАММЫ 2 Раздел 1 ПОДПРОГРАММЫ 2

>  ПОДПРОГРАММЫ 1. Понятие подпрограммы. Механизм вызова. Виды подпрограмм. 2. Подпрограмма – функция ПОДПРОГРАММЫ 1. Понятие подпрограммы. Механизм вызова. Виды подпрограмм. 2. Подпрограмма – функция 3. Подпрограмма – процедура 4. Глобальные и локальные переменные 5. Формальные и фактические параметры 3

>1. Понятие подпрограммы. Механизм вызова. Виды.     4 1. Понятие подпрограммы. Механизм вызова. Виды. 4

>   Подпрограммы Подпрограмма – это повторяющаяся группа операторов, оформленная в виде самостоятельной Подпрограммы Подпрограмма – это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Записывается однократно, а в соответствующих местах программы происходит вызов по имени подпрограммы. 5

>   Подпрограммы Подпрограмма – это самостоятельный алгоритм, который может многократно использоваться при Подпрограммы Подпрограмма – это самостоятельный алгоритм, который может многократно использоваться при решении более общей задачи 6

>   Механизм вызова Основная программа      подпрограмма … Механизм вызова Основная программа подпрограмма … … Вызов Точка подпрограммы вызова … … Вызов подпрограммы 7

> Подпрограммы позволяют:  1.  Упростить структуру программы (повышение степени абстракции) 2. Подпрограммы позволяют: 1. Упростить структуру программы (повышение степени абстракции) 2. Избежать избыточности кода (не повторять одно и то же в разных частях) 3. Уменьшить вероятность ошибок и упростить процесс отладки программы 8

>   Виды подпрограмм:  1.  Процедуры – подпрограмма, которая может не Виды подпрограмм: 1. Процедуры – подпрограмма, которая может не возвращать в основную программу значения переменных 2. Функции – подпрограмма, которая обязана возвращать в основную программу значения переменных 9

> 2. Подпрограмма - функция Функция – подпрограмма, которая  обязательно имеет один выходной 2. Подпрограмма - функция Функция – подпрограмма, которая обязательно имеет один выходной параметр, передаваемый через ее имя. Дополнительно может иметь любое количество входных и выходных параметров. 10

> Подпрограмма - функция Виды: 1. Стандартные (описаны в модуле System). Вызываются без предварительного Подпрограмма - функция Виды: 1. Стандартные (описаны в модуле System). Вызываются без предварительного описания. 2. Пользовательские (определяются программистом в разделе процедур и функций программы или в созданном модуле) 11

> Описание функции function имя [(список формальных параметров) ] : тип результата; [Описание локальных Описание функции function имя [(список формальных параметров) ] : тип результата; [Описание локальных переменных] begin тело функции имя: =значение end; 12

>  Вызов функции В основной программе в правой части оператора присваивания: Имя переменной: Вызов функции В основной программе в правой части оператора присваивания: Имя переменной: = имя функции(список фактических параметров) Y: =SIN(X) или Число и тип формальных и фактически С: =Summa(3, 6); параметров должно совпадать с точностью до их следования! 13

>  Примеры функций (1) Var K, N, Res : Byte;  function Sum(A, Примеры функций (1) Var K, N, Res : Byte; function Sum(A, B : Byte) : Byte; begin Sum : = A + B; end; Begin readln(K, N); Res : = Sum(K, N); End. 14

> Примеры функций (2) Var K, N, Res : Byte; function Sum : Byte; Примеры функций (2) Var K, N, Res : Byte; function Sum : Byte; begin Sum : = K + N; end; Begin readln(K, N); Res : = Sum; End. 15

>  Примеры функций (3) Var X, Y, Res : Real; function Del(A, B Примеры функций (3) Var X, Y, Res : Real; function Del(A, B : Real, Var R : Real) : Boolean; begin if B = 0 then Del : = False else begin R : = A / B; Del : = True end; Begin readln(X, Y); if Del(X, Y, Res) then writeln(Res: 12: 4) else writeln(‘Деление на ноль’) End. 16

>  Примеры функций (4) Var Res : Real; Const X = 20; Y Примеры функций (4) Var Res : Real; Const X = 20; Y = 7; function Del(A, B : Real, Var R : Real) : Boolean; begin if B = 0 then Del : = False else begin R : = A / B; Del : = True end; Begin if Del(X, 7, Res) then writeln(Res: 12: 4) else writeln(‘Деление на ноль’) End. 17

> Примеры функций (5) Var X, Res : Real; N : Byte; function Step(A Примеры функций (5) Var X, Res : Real; N : Byte; function Step(A : Real, M : Byte) : Real; Var J : Byte; Y : Real; begin Y : = 1; for J: =1 to M do Y : = Y * A; Step : = Y end; Begin readln(X, N); Res : = Step(X, N); writeln(Res: 12: 4) End. 18

>      1  Примеры функций (6) Найти разность средних 1 Примеры функций (6) Найти разность средних арифметических значений двух вещественных массивов из 10 элементов. 19

>    2 Примеры функций (6_продолжение) {Раздел описания} Const N=10; Type mas 2 Примеры функций (6_продолжение) {Раздел описания} Const N=10; Type mas = array [1. . N] of real; Var a, b: mas; I : integer; dif : real; 20

>       3 Примеры функций (6 _продолжение) {Раздел описания} 3 Примеры функций (6 _продолжение) {Раздел описания} function Average(X : mas) : Real; Var i : integer; av: real; begin av : = 0; for i: =1 to n do av : = av+x[i]; Average: =av/n; end; 21

>       4 Примеры функций (6 _продолжение) {Основная программа} 4 Примеры функций (6 _продолжение) {Основная программа} Begin for i: =1 to n do read (a[i]); for i: =1 to n do read (b[i]); dif: = average(a)- average(b); Writeln (‘Разность значений ’, dif: 6: 2) end. 22

>3. Подпрограмма - процедура     23 3. Подпрограмма - процедура 23

>   Процедура – подпрограмма, которая может быть без параметров. Также может иметь Процедура – подпрограмма, которая может быть без параметров. Также может иметь любое количество входных и выходных параметров. Вызывается по имени: Writeln (X, Y) 24

>     1  Описание процедур procedure Имя(Параметры) ; [Локальные переменные] 1 Описание процедур procedure Имя(Параметры) ; [Локальные переменные] begin операторы ; end; 25

>      2  Описание процедур procedure Имя 1(Параметры) ; 2 Описание процедур procedure Имя 1(Параметры) ; begin операторы ; end; procedure Имя 2 ; {Локальные переменные} begin операторы ; end; 26

> Примеры процедур (1) Var K, N, Res : Byte; procedure Sum. P(A, B Примеры процедур (1) Var K, N, Res : Byte; procedure Sum. P(A, B : Byte, Var Result : Byte); begin Result : = A + B; end; Begin readln(K, N); Sum. P(K, N, Res); End. 27

> Примеры процедур (2) Var K, N, Res : Byte; procedure Sum. P; begin Примеры процедур (2) Var K, N, Res : Byte; procedure Sum. P; begin Res : = K + N; end; Begin readln(K, N); Sum. P; writeln(Res); End. 28

>  Примеры процедур (3) Var X, Y, Res : Real; Code. E : Примеры процедур (3) Var X, Y, Res : Real; Code. E : Boolean; procedure Del. P(A, B : Real, Var R : Real; Var Err : Boolean); begin if B = 0 then Err : = True else begin R : = A / B; Err : = False end; Begin readln(X, Y); Del. P(X, Y, Res, Code. E); If Not Code. E then writeln(Res: 12: 4) else writeln(‘Деление на ноль’) End. 29

>      1 Примеры процедур (4) Найти разность средних арифметических 1 Примеры процедур (4) Найти разность средних арифметических значений двух вещественных массивов из 10 элементов. 30

>    2 Примеры процедур (4  продолжение  ) {Раздел описания} 2 Примеры процедур (4 продолжение ) {Раздел описания} Const N=10; Type mas = array [1. . N] of real; Var a, b: mas; I : integer; dif, av_a, av_b, : real; 31

>       3 Примеры процедур (4   продолжение 3 Примеры процедур (4 продолжение ) {Раздел описания} Procedure Average(X : mas; var av: real); Var i : integer; begin av : = 0; for i: =1 to n do av : = av+x[i]; av: =av/n; end; 32

>    4 Примеры процедур (4   продолжение  ) {Основная 4 Примеры процедур (4 продолжение ) {Основная программа} Begin for i: =1 to n do read (a[i]); for i: =1 to n do read (b[i]); average (a, av_a); average (b, av_b); Dif: = av_a- av_b; Writeln (‘Разность значений ’, dif: 6: 2) end. 33

>4. Глобальные и локальные   переменные      34 4. Глобальные и локальные переменные 34

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

>Локальные переменные § Описываются внутри подпрограмм. § Значения локальных переменных между двумя вызовами Локальные переменные § Описываются внутри подпрограмм. § Значения локальных переменных между двумя вызовами одной и той же подпрограммы не сохраняются и эти переменные предварительно не обнуляются. § Локальные переменные могут использоваться только в подпрограмме, в которой они описаны, и всех вложенных в нее. 36

>5. Формальные и  фактические  параметры    37 5. Формальные и фактические параметры 37

>  Формальные и фактические  параметры § Фактические параметры - передаются процедуре при Формальные и фактические параметры § Фактические параметры - передаются процедуре при обращении к ней. § Формальные параметры – это переменные, фиктивно присутствующие в процедуре и определяющие тип и место подстановки фактических параметров, над которыми производятся действия. Число и тип формальных и фактических параметров должны совпадать с точностью до их следования. Описание Procedure A 1(x 1, x 2: integer; a, b: char); . . Вызов: A 1(x, y, z, f) X, Y: должны быть типа integer Z, F: типа char 38

>  Виды формальных параметров подпрограмм • Значения • Переменные • Константы • Нетипизированные Виды формальных параметров подпрограмм • Значения • Переменные • Константы • Нетипизированные параметры • Открытые массивы и строки • Процедурные и функциональные параметры • Объекты 39

>  Параметры-значения Описывается в заголовке подпрограммы:      имя : Параметры-значения Описывается в заголовке подпрограммы: имя : тип; Например, передача в процедуру Р величины целого типа записывается так: procedure P(x : integer); Имя параметра может быть произвольным. Параметр х можно представить себе как локальную переменную, которая получает свое значение из главной программы при вызове подпрограммы. В подпрограмму передается копия значения аргумента. 40

>  Параметры-значения. Механизм передачи параметра 1. Из ячейки памяти, в которой хранится переменная, Параметры-значения. Механизм передачи параметра 1. Из ячейки памяти, в которой хранится переменная, передаваемая в подпрограмму, берется ее значение и копируется в область оперативной памяти, называемую областью параметров. 2. Подпрограмма работает с этой копией, следовательно, доступа к ячейке, где хранится сама переменная, не имеет. По завершении работы подпрограммы стек освобождается. Такой способ называется передачей по значению. 41

>  Параметры-значения При вызове подпрограммы на месте параметра, передаваемого по  значению, может Параметры-значения При вызове подпрограммы на месте параметра, передаваемого по значению, может находиться выражение. Тип выражения должен быть совместим по присваиванию с типом параметра. Например, если в вызывающей программе описаны переменные var x : integer; c : byte; y : longint; то следующие вызовы подпрограммы Р, ( procedure P(x : integer); ) будут синтаксически правильными: P(x); P(c); P(y); P(200); P(x div 4 + 1); 42

>Недостатки передачи по значению 1. Затраты времени на копирование параметра 2. Затраты памяти в Недостатки передачи по значению 1. Затраты времени на копирование параметра 2. Затраты памяти в стеке и опасность его переполнения, когда речь идет о параметрах, занимающих много места - например, массивах большого размера. Более правильно использовать для передачи в подпрограмму исходных данных параметры-константы 43

> Параметры-переменные  Признаком параметра-переменной является ключевое  слово var перед описанием параметра: Параметры-переменные Признаком параметра-переменной является ключевое слово var перед описанием параметра: var имя : тип; Например, передача в процедуру Р параметра- переменной целого типа записывается так: procedure P(var x : integer); 44

>   Параметры-переменные  При вызове подпрограммы в область параметров копируется не Параметры-переменные При вызове подпрограммы в область параметров копируется не значение переменной, а ее адрес, и подпрограмма через него имеет доступ к ячейке, в которой хранится переменная. Этот способ передачи параметров называется передачей по адресу. Подпрограмма работает непосредственно с переменной из вызывающей программы и, следовательно, может ее изменить. ВНИМАНИЕ! При вызове подпрограммы на месте параметра- переменной может находиться только ссылка на переменную точно того же типа. 45

>§ Константы § Нетипизированные параметры      § САМОСТОЯТЕЛЬНО!  § Константы § Нетипизированные параметры § САМОСТОЯТЕЛЬНО! 46

>http: //www. pascal 7. ru/     47 http: //www. pascal 7. ru/ 47