Сьогодн і на уроці Тема. Підпрограми . ...
DESCRIPTION
Урок №1. Тема. Поняття підпрограми. Сьогодн і на уроці Тема. Підпрограми . (11 уроків ). 10-А 31.03.2014. Підпрограми. Що це таке?. Як з цим працювати?. Допоміжний алгоритм. - PowerPoint PPT PresentationTRANSCRIPT
10-А 31.03.2014
*Сьогодні на уроціТема. Підпрограми. (11 уроків)
Урок №1. Тема. Поняття підпрограми.
ПідпрограмиЩо це таке?
Для чого це?
Як з цим працювати?
Підпрограми потрібні для того, щоб спростити структуру програми і полегшити її налагодження.
Підпрограми оформляються у вигляді логічно закінченої частини програми.
Допоміжний алгоритм
- Підпрограма - це фрагмент коду, до якого можна звернутися по імені.
Вона описується один раз, а викликатися може стільки разів, скільки необхідно.
Одна і та ж підпрограма може обробляти різні дані, передані їй як аргументи.
S1-?
S2-?
S3-?
S -?
a b
c
d
e
nm
При розробці програм іноді з’являються повторювані групи дій або виникає необхідність поділити програму на окремі модулі. Для цього існують підпрограми.
Підпрограма – це іменована, логічно закінчена група операторів, яку можна викликати для виконання будь-яку кількість разів із різних місць програми.
Підпрограми мають структуру, аналогічну до структури головної програми на Паскалі.
Кожна підпрограма – це міні-програма в програмі. В ній діють всі закони, що притаманні будь-якій програмі.
Це варто знати:
uses crt;const n=6; var a:array[1..n,1..n] of integer;i,j,d1,d2:integer;beginfor i:=1 to n dofor j:=1 to n do заповнитиa[i,j]:=random(10);for i:=1 to n do beginfor j:=1 to n do вивестиwrite(a[i,j]:4); writeln;end;d1:=1; d2:=1;for i:=1 to n do beginfor j:=1 to n do begin обчислитиif (i<j) and(i+j<n+1) then d1:=d1*a[i,j];if (i>j) and(i+j>n+1) then d2:=d2*a[i,j]; end;end;if d1>d2 then writeln(' d1>d2 ') else writeln(' d1<d2 ');writeln(' d1= ',d1);writeln(' d2= ',d2)
end.
procedure input; begin writeln('r1,r2,r3'); readln(r1,r2,r3); end;
procedure plosha(r:integer;var s:real); begin s:=4*pi*r*r; end;
procedure output; begin writeln('s1=',s1:6:1,' s2=',s2:6:1,' s3=',s3:6:1); writeln('v1=',v1:5:1,' v2=',v2:6:1,' v3=', v3:6:1); end;
Підпрограми у вигляді процедури:
Підпрограма
Процедура Функція (користувача)
З параметрами
Без параметрів
Процедури і функції описуються у відповідних розділах опису, до початку блоку виконуваних операторів.
Процедури і функції мають незначні відмінності в синтаксисі і правилах виклику.
Структура процедури аналогічна структурі основної програми:
procedure ім’я [(список параметрів)]; { заголовок }розділ опису
Begin
розділ операторівend;
procedure ім’я;розділ опису
Begin
розділ операторівend;
Процедура без параметрів
Виклик процедури без параметрів здійснюєтьсяза назвою процедури:figyra1;figyra2;
Створіть свою власну програму, яка складається з процедури без параметрів
Основначастина програми
procedure input; begin writeln('r1,r2,r3');readln(r1,r2,r3); end; procedure plosha(r:integer;var s:real); begin s:=4*pi*r*r; end; procedure obiem(r:integer;var v:real); begin v:=4/3*pi*r*r*r; end; procedure output; begin writeln('s1=',s1:6:1,' s2=',s2:6:1,' s3=',s3:6:1); writeln('v1=',v1:5:1,' v2=',v2:6:1,' v3=', v3:6:1); end; begin clrscr; input; plosha(r1,s1); plosha(r2,s2); plosha(r3,s3); obiem(r1,v1); obiem(r2,v2); obiem(r3,v3); output; end.
r1
r2
r3
s:=4*pi*r*r;
v:=4/3*pi*r*r*r;
Процедура з параметрами
Приклад №1
procedure plosha(r:integer; var s:real); begin s:=4*pi*r*r; end;
readln(r1, r1,r2,r3,r3); Фактично відомо величини : r1,r2,r3
У процедурі використовують формальні величини: r
plosha Ім’я процедури – надає користувач
При звернені (виклику процедури) до процедури, формальні величини замінюються фактичними.
plosha(r1,s1); Після фактичних величин через кому записують результат
Var Вказує на передачу значень S в основну програму
uses crt;Const n = 8;type mas = array[1 .. n] of real;var a, b : mas;i : integer;riz, sr_a, sr_b : real;procedure sr_arufm(x : mas; var sr : real); {1}Var i : integer; s:real;begins:= 0;for i := 1 to n dos := s + x[i];sr := s / n;end; {2}Begin { головна програма}writeln('masiv A:');for i := 1 to n doreadln(a[i]);writeln('masiv B:');for i := 1 to n doreadln(b[i]);{звернення до процедури 2 рази}Sr_arufm(a, sr_a); {3} {виклик процедури}Sr_arufm(b, sr_b); {4}riz := sr_a - sr_b;writeln( ‘sr_a =',sr_a);writeln( ‘sr_b =',sr_b);writeln(‘rizno= ', riz:6:2)end.
Сам по собі опис не приводить до виконання підпрограми. Для того щоб підпрограма виконалася, її треба викликати. Виклик записується в тому місці програми, де потрібно отримати результати роботи підпрограми
Приклад № 2.Знайти різницю середніх арифметичних значень двох дійсних масивів з 8 елементів.
Як видно з умови, для двох масивів потрібно знайти одну і ту ж величину - середнє арифметичне. Отже, логічним буде оформити його знаходження у вигляді підпрограми, яка зможе працювати з різними масивами.