120 likes | 266 Views
Урок №1. Тема. Поняття підпрограми. Сьогодн і на уроці Тема. Підпрограми . (11 уроків ). 10-А 31.03.2014. Підпрограми. Що це таке?. Як з цим працювати?. Допоміжний алгоритм.
E N D
Урок №1. Тема. Поняття підпрограми. Сьогодні на уроціТема. Підпрограми. (11 уроків) 10-А 31.03.2014
Підпрограми Що це таке? Як з цим працювати? Допоміжний алгоритм Підпрограмиоформляються у вигляділогічнозакінченоїчастинипрограми. • - Підпрограма- це фрагмент коду, до якогоможназвернутися по імені. • Вона описуєтьсяодин раз, а викликатисяможестількиразів, скількинеобхідно. • Одна і та ж підпрограмаможеоброблятирізнідані, переданіїй як аргументи. Для чого це? Підпрограмипотрібні для того, щобспростити структуру програми і полегшитиїїналагодження. b a S -? S1-? c m S2-? n d S3-? e
Цеварто знати: При розробціпрограмінодіз’являютьсяповторюванігрупидійабовиникаєнеобхідністьподілитипрограмуна окремімодулі. Для цьогоіснуютьпідпрограми. Підпрограмимають структуру, аналогічну до структуриголовноїпрограми на Паскалі. Підпрограма– цеіменована, логічнозакінченагрупаоператорів, яку можнавикликати для виконання будь-яку кількістьразівізрізнихмісцьпрограми. Кожнапідпрограма – цеміні-програма в програмі. В нійдіютьвсізакони, щопритаманні будь-якійпрограмі.
uses crt; const n=6; var a:array[1..n,1..n] of integer; i,j,d1,d2:integer; begin for i:=1 to n do for j:=1 to n doзаповнити a[i,j]:=random(10); for i:=1 to n do begin for j:=1 to n doвивести write(a[i,j]:4); writeln;end; d1:=1; d2:=1; for i:=1 to n do begin for 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; Створіть свою власну програму, яка складається з процедури без параметрів
Приклад №1 Процедура з параметрами 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 r3 r2 s:=4*pi*r*r; v:=4/3*pi*r*r*r;
readln(r1, r1,r2,r3,r3); Фактично відомо величини : r1,r2,r3 У процедурі використовують формальні величини: r procedure plosha(r:integer;vars:real); begin s:=4*pi*r*r; end; VarВказує на передачу значень S в основну програму plosha Ім’я процедури – надає користувач При звернені (виклику процедури) до процедури, формальні величини замінюються фактичними. plosha(r1,s1); Після фактичних величин через кому записують результат
uses crt; Constn = 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; varsr: real); {1} Vari : integer;s:real; begin s:= 0; for i := 1 to n do s := s + x[i]; sr:= s / n; end; {2} Begin{ головна програма} writeln('masiv A:'); for i := 1 to n do readln(a[i]); writeln('masiv B:'); for i := 1 to n do readln(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 елементів. Як видно з умови, для двохмасивівпотрібнознайти одну і ту ж величину - середнєарифметичне. Отже, логічним буде оформитийогознаходження у виглядіпідпрограми, яка зможепрацювати з різнимимасивами. Сам по собіопис не приводить до виконанняпідпрограми. Для того щобпідпрограмавиконалася, її треба викликати. Викликзаписується в тому місціпрограми, де потрібноотриматирезультатироботипідпрограми
Домашнє завдання: Створити власні програми за аналогією 1. прикладу №1 (процедури без параметрів) 2. Прикладу №2 (процедури з параметром) 3. Вивчити теоретичний матеріал.