1 / 24

Подпрограммы в Паскале

(Технология нисходящего программирования). Подпрограммы в Паскале. Базируется на методе программирования «сверху – вниз» (иное название – метод пошаговой детализации ).

burke
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. flaw Виды подпрограмм

  4. ПРОЦЕДУРЫ Описание: PROCEDURE <имя>(<служебная информация>); < блок описаний>; BEGIN <тело процедуры> END;

  5. Имя процедуры – правильный идентификатор • Состоит из латинских букв и цифр. • Начинается с латинской буквы.

  6. Пример1. Program prim; Uses crt; Procedure a; Begin write(‘I am procedure’); end; BEGIN clrscr; writeln(‘ Where is a procedure?’); a; Writeln; write(‘good’); Readln end.

  7. Используя оператор выбора и процедуры, написать программу, вызывающую одну из трех страниц: 1 – справка; 2 – тест; 3 – выход. Используя цикл и процедуры, «построить» забор. Задания

  8. Оператор выбора Позволяет выбрать одно из нескольких продолжений программы. CASE < ключ выбора> OF <список выбора> Else <оператор>end; Ключ выбора – выражение, значение которого представлено порядковым типом. Список выбора <Константа выбора>:<оператор>;

  9. Работа оператора выбора • Вычисляется значение <ключ выбора>; • В последовательности операторов <список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению <ключ выбора>. Найденный оператор выполняется, после чего оператор выбора завершает работу.

  10. Используя оператор выбора и процедуры, написать программу, вызывающую одну из трех страниц: 1 – справка;2 – тест; 3 – выход. procedure vixod; begin textbackground(5); clrscr; gotoxy(38,12); write('vixod') end; BEGIN textbackground(0); clrscr; write('vibor1\2\3='); readln(m); case m of 1:sprav; 2:test; 3:vixod; end; readln; END. program menu1; uses crt; var m:integer; procedure sprav; begin textbackground(4); clrscr; gotoxy(38,12); write('spravka') end; procedure test; begin textbackground(2); clrscr; gotoxy(38,12); write('test') end;

  11. procedure ekran(c:byte;st:string); begin textbackground(c);textcolor(15); clrscr; gotoxy(38,12); write(st) end; begin textbackground(0); clrscr; write('vibor1\2\3='); readln(m); case m of 1:ekran(4,'cprav'); 2:ekran(2,'test'); 3:ekran(5,'vixod'); end; readln; end.

  12. Что включает в себя служебная информация PROCEDURE <имя>(<список формальных параметров>: <тип>); < блок описаний>; BEGIN <тело процедуры> END;

  13. Вызовпроцедуры Необходимо указать имя и список фактических параметров. Количество и тип формальных и фактических параметров должны совпадать.

  14. Формальные и фактические параметры При вызове процедуры её формальные параметры заменяются на фактические в порядке их следования. • Фактические параметры – это параметры, которые передаются процедуре при обращении к ней (т.е. записываются при вызове процедуры в основной программе) • Формальные параметры – это переменные, фиктивно присутствующие в процедуре и определяющие тип и место подстановки фактических параметров, над которыми производятся действия.

  15. Между формальными и фактическими параметрами должно быть полное соответствие: • формальных и фактических параметров должно быть одинаковое количество; • Порядок следования фактических и формальных параметров должен быть один и тот же; • Тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра. Формальные параметры Параметры-значения Параметры-переменные Параметры-процедуры Параметры-функции • Параметры-переменные – это формальные параметры, перед которыми стоит служебное слово VAR. Они передаются по ссылке (передаётся адрес фактического параметра) тогда, когда необходимо передать некоторые новые значения в точку вызова процедуры из программы. • Параметры-значения – перед ними слово VARне ставится и идёт передача по значению, т.е. передаётся только копия значения этих параметров. Их любые изменения никак не отражаются на значениях соответствующих фактических параметров.

  16. Глобальные и локальныепеременные • Глобальныепеременные – это те переменные, которые объявлены в описании основной части. • Локальныепеременные – это те, которые объявлены в процедурах и функциях. Локальные переменные существуют только тогда, когда работает подпрограмма, появляются при вызове и исчезают при завершении работы.

  17. Примеры обращения к процедуре (вызова процедуры). PROCEDURE SQ (a,b,c: real;VAR x1,x2:real) Примеры обращения к процедуре: SQ((25/3+2)*2, -1.5, (8.2-3.1)/3, a1, a2); SQ(P,Q,R,Y,Z); • Фактическим параметром, соответствующим формальному параметру-значению, может быть • любое выражение соответствующего типа; • константа соответствующего типа; • переменная соответствующего типа. • Фактический параметр, соответствующим формальному параметру-переменной, может быть только переменной.

  18. МЕХАНИЗМ ПЕРЕДАЧИ ПАРАМЕТРОВ • А) ПАРАМЕТРЫ-ЗНАЧЕНИЯ (п-з) • В памяти выделяется место для каждого формального параметра. • Вычисляется значение фактического параметра и засылается в ячейку, соответствующую формальному параметру. • Если фактический параметр есть имя переменной, то значение этой переменной пересылается в соответствующий формальный параметр. На этом всякая связь между фактической переменной и формальным параметром обрывается. Б) ПАРАМЕТРЫ-ПЕРЕМЕННЫЕ (п-п) Для формального параметра используется именно та ячейка, которая содержит соответствующий фактический параметр.

  19. 1. Пример процедуры с параметрами-значениями Механизм передачи параметров: PROGRAM PZ; VAR i : integer; Procedure P1 (i: integer); Begin i:=i*2; End; BEGIN i:=2; P1(i); WriteLn(‘i=‘, i); END. 1.Назовите глобальные и локальные переменные. 2. назовите формальные и фактические параметры. 3.Какие формальные параметры использованы? PROGRAM PZ; i 2 Procedure P1 i 2 4 ЭКРАН i= 2

  20. 2. Примерпроцедурыс параметрами-переменными Механизм передачи параметров: PROGRAM PP; VAR a,b:integer; PROCEDURE P2 (x: integer; VAR y: integer); Begin x:=x+1; y:=y+1; WriteLn(x,’ ‘,y); End; BEGIN a:=0; b:=0; P2(a,b); WRITELN(a,’ ‘,b); END 1.Назовите глобальные и локальные переменные. 2. назовите формальные и фактические параметры. 3.Какие формальные параметры использованы? PROGRAM PP; PROCEDURE P2 a 0 x 1 0 1 b 0 y адрес яч.b 1 ЭКРАН 1 1 0 1

  21. Упражнения на механизм передачи параметров в процедурах. А) var c,d:integer; Procedure P(x,y:integer;); Begin y:=x + 1; end; 1)   для каждой процедуры указать параметры-значения и параметры-переменные; 2)   определить, что будет выведено на экран в следующих случаях: с:=2;d:=0;P(sqr( c ) + c, d); Writeln(d); с:=2;d:=0;Q(sqr( c ) + c, d); Writeln(d); 3) допустимы ли обращения R(sqr( c ) + c, d); и R(c, d); ? Б) var c,d:integer; Procedure Q(x:integer; var y:integer); Begin y:=x + 1; end; B) var c,d:integer; Procedure R(var x,y:integer); Begin y:=x + 1; end;

  22. Задания: • Даны 4 действительных числа a,b,c,d (0). Решитьквадратные yравнения: ax2+bx+c=0; bx2+cx+d=0; ax2+dx+c=0; dx2+bx+c=0.

  23. Задания: • Даны 4 действительных числа a,b,c,d (0). Решитьлинейные yравнения: ax+c=0; bx+c=0; ax+d=0; dx+b=0.

  24. Задачи. 1. Вводятся два числа a и b. Определить ab и ba, используя процедуру вычисления степени числа. PROGRAM z1; VAR a, b: byte; ab: Longint; PROCEDURE stepen (x, y : byte, Var z : Longint); Var i: byte; Begin z:=1; For i:=1 To y Do z:=z*x; End; BEGIN WriteLn(‘Введите два целых числа’); ReadLn(a,b); stepen(a, b,ab); WriteLn(a:3, ‘в степени’b:3, ‘равно ’,ab:10); stepen(b, a,ab); WriteLn(‘’); END.

More Related