Сьогодн і на уроці Тема. Підпрограми . ...

12
10-А 31.03.2014 * Сьогодні на уроці Тема. Підпрограми. (11 уроків) Урок №1. Тема. Поняття підпрограми.

Upload: eric-ayala

Post on 02-Jan-2016

69 views

Category:

Documents


4 download

DESCRIPTION

Урок №1. Тема. Поняття підпрограми. Сьогодн і на уроці Тема. Підпрограми . (11 уроків ). 10-А 31.03.2014. Підпрограми. Що це таке?. Як з цим працювати?. Допоміжний алгоритм. - PowerPoint PPT Presentation

TRANSCRIPT

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 елементів.

Як видно з умови, для двох масивів потрібно знайти одну і ту ж величину - середнє арифметичне. Отже, логічним буде оформити його знаходження у вигляді підпрограми, яка зможе працювати з різними масивами.

Домашнє завдання:Створити власні програми за аналогією1. прикладу №1(процедури без параметрів)2. Прикладу №2 (процедури з параметром)3. Вивчити теоретичний матеріал.