Програма записується в окремому exe-файлі. Таким чином, програма це алгоритм, який призначається для виконання комп'ютером. Двійкове подання команд комп'ютера називається

Вид материалаУрок

Содержание


Цикл із лічильником
Пряма форма: for := to do ; У перекладі з англійської for
Приклади використання оператора циклу з лічильником
Підпрограми. Процедури
Приклад використання процедури
Подобный материал:
1   2   3   4   5   6   7   8   9

Цикл із лічильником


Для програмування алгоритмів, у яких до початку роботи циклу стає точно відомо, скільки саме разів необхідно виконати тіло циклу, зручно використовувати оператор циклу з лічильником.

У мові програмування Паскаль існує дві форми оператора циклу з лічильником: пряма та зворотна. Пряма форма:

for <змінна>:=<ПЗ> to do

<оператор>;

У перекладі з англійської for означає «для», to — «до», do — «робити».

<3мінна> — це змінна цілого або символьного типу даних, вона називається лічильником циклу; ПЗ (початкове значення) і КЗ (кінцеве значення) — величини відповідного тилу.

Принцип роботи:

<0ператор> (тіло циклу) виконується КЗ-ПЗ+1 разів (для лічильника цілого типу, для символьного тут і далі треба замість КЗ і ПЗ підставляти відповідні номери в таблиці кодів ASCII) для всієї послідовності значень лічильника циклу від початкового до кінцевого -включно. Тож, перший раз значення <змінної> дорі»* нює ПЗ, другий — ПЗ+1, третій — ПЗ+2 і так далі доКЗ.

Звичайно КЗ>ПЗ. Якщо ПЗ виявляється більшим за КЗ, то <оператор> не виконується жодного разу, якщо вони рівні, цикл буде виконано один раз.

Для того щоб тіло циклу містило не один, а декілька операторів, їх треба взяти в оцерато-рні дужки begin ... end.

Якщо треба, щоб значення лічильника циклу змінювалися від більших до менших, застосовується зворотна форма циклу з лічильником:

for <змінна>:=<ПЗ> downto do <оператор>;

У перекладі з англійської down to означає «вниз до».

Тут звичайно ПЗ>КЗ, <оператор> виконується ПЗ-КЗ+1 разів для всієї послідовності цілих значень лічильника циклу, які послідовно зменшуються від початкового до кінцевого включно. Перший раз значення <змінної> до,-. рівнює ПЗ, другий — ПЗ-1, третій — ПЗ-2» в останній — КЗ. Якщо ПЗ виявляється менше КЗ, то <оператор> не виконується жодного разу.

Роботу оператора циклу з лічильником легко змоделювати за допомогою циклу з передумовою чи з післяумовою.

Наприклад, фрагмент програми

for i:=1 to 100 do

write('A');

можна записати з використанням циклу з передумовою так:

1:=1

while i<=100 do

begin

write('A');

і:=і+1;

end;

Приклади використання оператора циклу з лічильником:

а) for і:=1 to 6 do

write('*');

Результат роботи: змінна і пробігає значення від 1 до 6, усього шість значень, на екран буде іибедено шість зірочок.

б) for с:='А' to 'Z' do

write(c);

Результат роботи: на екран в рядок будуть виведені всі великі букви латинського алфавіту «ABCDEF...XYZ».

в) for m:=-4 to 4 do

begin

n:=m*m; - write(n,' ');

end;

Результат роботи: на екран будуть виведені в рядок квадрати цілих чисел від -4 до 4 (загалом дев'ять чисел).

Підпрограми. Процедури


На практиці програми розв'язування задач бувають досить великими, часто деякі фрагменти програми використовуються по декілька разів. Тому е зручним виділити з програми такі фрагменти та оформити їх окремо, так щоб програма могла користуватися результатами їх роботи, коли це буде потрібно. Такий окремо оформлений фрагмент програми називається підпрограмою.

Підпрограма в мові програмування — це самостійний фрагмент розв'язку деякої окремої задачі, записаний та оформлений таким чином, щоб його можна було неодноразово виконувати з різними вхідними даними в різних місцях головної програми.

"У мові програмування Паскаль визначено два види підпрограм: процедури та функції. Підпрограми описуються в розділі опису програми після розділу опису змінних.

Процедура в мові програмування Паскаль завжди оформлюється стандартним чином і має такий вигляд:

procedure <ім'я процедури>

(<список параметрів>);

...<розділ описів> . Begin

... <серія операторів>

End;

У перекладі з англійської procedure означає «метод дій». Після слова end, яке завершує процедуру, ставиться крапка з комою.

<Ім'я процедури> — це ідентифікатор, ство-і рений за правилами мови програмування.

<Серія операторів> (називається тілом прoцедури) містить скінченну послідовність операн торів, відокремлених крапкою з комою. Оператори виконуються один за одним, у порядку їх запису. Серія може складатися з одного оператора або бути порожньою (не містити жодного оператора).

<Розділ описів> призначається для опису тих величин, які опрацьовуються чи використовуються процедурою. Розділ описів процедури складається з тих самих розділів, що й розділи описів програми. Змінні, константи, типи даних тощо, описані в процедурі, носять назву локальних (на відміну від об'єктів головної програми, які називаються глобальними). Процедура має доступ до глобальних об'єктів, воваї може використовувати їх, змінювати тощо. Локальні об'єкти недоступні у головній прогрв та в інших підпрограмах.

У <списку параметрів> перелічуються змінні, які використовуються у процедурі, із зазна~ ченням їх типів. Імена змінних відокремлю» ся одне від одного комами, від назви типу двокрапкою. Після назви кожного типу ставиться крапка з комою.

Існує два типи параметрів процедури; метри-змінні та параметри-знлценпя. У <списку параметрів> перед параметрами-змінними ставиться службове слово var.

Наприклад:

procedure Example (var a, b: integer ;

с:char; var d:real; e:integerjf У цьому прикладі змінні a, b, d — це nap метри-змінні, с,-е — це параметри-значенщя.

Використовуються процедури через»

процедури, який записується так:

<ім'я процедури>(<список значеаь>)т де <ім'я процедури> — це ім'я процедури, яку необхідно використати;

<список значень> — це перелік відділених ркомами змінних (для відповідних параметрів-: змінних) та довільних виразів (для відповідних параметрів-значень).

Наприклад:

Example(x,y,'?',f,y*(x+5));

Параметри, перелічені в заголовку опису процедури, називаються формальними параметрами.

При виконанні оператора процедури (це називають ще виклик процедури) формальні параметри дістають конкретні значення. Ці значення називаються фактичними параметрами.

У момент виконання оператора процедури головна програма припиняє роботу та починаться виконання процедури (говорять, що до неї передається управління). Після припинення виконання процедури головна програма продовжує роботу з місця виклику.

Головна програма може викликати будь-яку підпрограму, підпрограма може викликати тільки підпрограми, які описані вище від неї.

При виклику процедури параметри-значення вабувають нових значень, які здобуваються в результаті обчислення виразів оператора процедури. Наприклад, у вищенаведеному прикладі якщо до виклику процедури змінна х мала значення 5, а змінна у значення 2, то параметр е набуде значення 20, а параметр с значення «?». Параметри-значення >в процедурі можна використовувати як звичайні змінні, нові значення, яких вони набудуть, не матимуть впливу на будь-які змінні головної програми.

При виклику процедури параметри-змінні .отримують доступ до комірок пам'яті, де знаходяться значення змінних, які стоять в операторі виклику процедури. Починаючи з моменту виклику, всі зміни значень параметрів-змінних будуть автоматично відображатися на значен--вях пов'язаних з ними змінних. Наприклад, у вищенаведеному прикладі після виклику продедури змінна зв'яжеться зі змінною а, уsb, fsd.

У програмах параметри-значення звичайно використовуються для передачі процедурі вхідних даних, параметри-змінні — для повернення результатів роботи процедур.


Приклад використання процедури:

Знайти периметр трикутника, який заданий координатами своїх вершин. Для визначення периметра трикутника мож-ла використати процедуру знаходження довжини відрізка.

Program triangle;

var Xl,ylfx2,y2,x3,y3,dl,d2.,d3jreal;

procedure dist(xxl,yyl,xx2,yy2:real;

var d:real);

begin

d:=sgrt(sqr(xx2-xxl)+sqr{yy2-yyl)); end;

Begin

write('Введіть координати перші вершшн:'If

readln(xl,yl);

write('Введіть координати другої верпини:')?,

readln(x2,y2);

write( 'Введіть координати третьої веряшиї') f

readln(x3,y3);

dist(xl,yl,x2,y2,dl);

dist(x2,y2,x3,y3,d2);

dist(xl,yl,x3,y3,d3);

writeln( 'Периметр трикутника дорівнює',

dl+d2+d3); End.