на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Структуровані типи даних записи та множини. Використання процедур та функції мови Turbo Pascal. Поняття про записи. Прості записи
p align="left">Глобальні - описані у зовнішньому блоці але використовують у внутрішньому блоці.

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

Правила локалізації змінних:

змінна (константа) існує в рамках того блока де вона описана;

кожна змінна в межах блока повинна бути описана тільки один раз;

якщо у внутрішньому блоці використовується змінна, яка описана у зовнішніх блоках, то діє тільки опис самого внутрішнього блоку (найблищого);

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

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

В мові Паскаль існує два типа процедур і функцій:

з параметрами;

без параметрів.

Вони відрізняються способом їх вмикання в основну програму.

6. Процедури з параметрами

Для успішної побудови блочних програм необхідно оволодіти двома методиками:

розробки побудови процедури;

використання процедури в програмі або в іншій процедурі.

a. Методика розробки процедури.

Як було сказано, процедура складається із заголовка і блока. Блок будується стандартно і не відрізняється від блока програми за винятком того, що наприкінці процедури ставиться крапка з комою.

Розглянемо заголовок (рис.1). ім'я вибирають довільно. Параметри, які містяться у списку параметрів, носять назву формальних - т.б. вони не приймають ніяких значень, а тільки позначають місця, на які далі будуть поставлені так звані фактичні параметри.

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

Список параметрів складається із окремих секцій, які відокремлюють крапкою з комою ( ; ).

В секції вказується перелік (список) параметрів і через двокрапку їх тип. Наприклад:

Procedure R(x, y : real; k : integer; var s : real);

Тут параметри x і y вказують першу секцію, k - другу, s - третю. Розміщення секцій параметрів в них довільне. В даному прикладі x, y, k - параметри значення; s - оператор-змінна, перед яким повинно стояти службове слово var.

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

Приклад1 розробки процедури:

Procedure Sum (a, b : real; var y, z : real);

const n=10;

var i : integer;

begin

for i := 1 to n do

begin

y := a + b * i;

z := 4 * y - i;

end;

end.

Тут a і b - вхідні параметри, їх значення передаються із основної програми в цю процедуру. Результати процедури (вхідні параметри)є обчислені значення y і z, які передаються із процедури в основну програму і там можуть бути використані.

b. Методика використання процедури у зовнішньому блоці.

Для використання процедур існує так званий оператор процедури:

<ім'я процедури>_ (список фактичних параметрів)

Ім'я повинно співпадати з іменем записаної процедури. Параметри у дужках носять назву фактичні. Вони відповідають реальним змінним, над якими виконують операції. Фактичні і формальні параметри повинні відповідати одне одному за містом їх розміщення і типом. Список фактичних параметрів не містить типів даних, бо вони вже вказані у списку формальних параметрів.

Program PR;

procedure P(x, y : real; var z : real );

end;

begin

P(a, b, c);{виклик процедури}

end.

Рис.3

Приклад 2: в програмі визначити довжину кола C і площі круга S, обмеженого цим колом; відстань L центра кола від початку координат О. Координати центра кола - x, y , радіус кола - R.

Program KOLO ( input, output );

Var R : real; {радіус}

x, y : real:{координати центра}

C : real;{довжина кола}

S : real;{площа круга}

L : real;{відстань від центру}

Procedure KRUG ( R, x, y : real; var C, S, L : real);

Const pi = 3.14;

Begin

C := 2 * pi * R;

S := pi* sqr ( R );

L := sqrt ( sqr(x) + sqr(y));

End;

Begin

Writeln ( ` ввести R, x , y :`);

Read ( x, y , R);

KRUG ( R, x ,y, C, S, L);

Writeln (`довжина кола = ', C : 6 : 2);

Writeln (`площа кола = ', S : 6 : 2);

Writeln (`відстань = ', L : 6 : 2);

End.

Результат виконання:

Ввести значення R, x, y:

386

довжина кола = 18,84

площа круга = 8,26

відстань = 10,00

Пояснення процесу звертання до процедур:

При виконанні дій, заданих оператором процедури, виконується передача фактичних параметрів, т.б. їх підставка на місце фіктивних. Таким чином в тілі процедури кожен формальний параметр заміняється фактичним. Виникає, так зване, модифіковане тіло процедури, яке безпосередньо реалізується ЕОМ. Після виконання процедури в комірках пам'яті ЕОМ залишаються результати, які поіменовані фактичними параметрами, які відповідають даним результатам.

Суть (трактовка) параметрів-значень і параметрів змінних.

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

1-й спосіб - підстановка на місце формальних параметрів обчислених значень фактичних параметрів. Наприклад:

Sum (3.5, 7.6, y, z);

2-й спосіб - підстановка замість формальних параметрів імен фактичних параметрів:

Sum (x1, x2, y, z);

При цьому результати процедури завжди утримують імена (і не обов'язкого співпадаючи з іменами формальних параметрів). Наприклад:

Sum (x1, x2, С, D);

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

Таблиця 1

І. Procedure P (x : тип; y : тип; var z : тип);

1

A - const; B - const;

C - var

P (A, B, C)

2

A - var; B - var;

C - var

A := F1; B := F2;

…………….

P (A, B, C); або

read (A, B);

……………

P (A, B, C);

3

C - var;

P (3, 4 ,C);

ІІ. Procedure P1 (var x : тип; var y : тип; var z : тип);

4

var;

var;

var;

A := F1; B :=F2;

aбо

read (A, B);

……………………

P1 (A, B, C);

Коментарій табл.1:

1) фактичні параметри A,B у зовнішньому блоці описані як const і замінюють формальні параметри-значення x, y процедури Р;

2) фактичні параметри А і В обчислюються або вводяться у зовнішньому блоці перед вставленням їх у процедуру;

фактичні параметри А і В не об'явлені. Тому замість їх імен вставленні конкретні значення 3 і 4;

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

7. Процедури без параметрів

В таких процедурах замість формальних параметрів використовують глобальні змінні.

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

Для приклада 2 - програма обчислення параметрів кола при використані процедури без параметрів буде мати вигляд:

Приклад 2а:

Program KOLO1 ( input, output );

Var R, x, y, С, S, L : real;

Procedure KRUG ( R, x, y : real; var C, S, L : real);

Const pi = 3.14;

Begin

C := 2 * pi * R;

S := pi* sqr ( R );

L := sqrt ( sqr(x) + sqr(y));

End;

Begin

Writeln ( ` ввести R, x , y :`);

Read ( x, y , R);

KRUG ;

Writeln (`довжина кола = ', C : 6 : 2);

Writeln (`площа кола = ', S : 6 : 2);

Writeln (`відстань = ', L : 6 : 2);

End.

Змінні, яки використані у процедурі описані як глобальні.

8. Особливості використання функцій

За своїм призначенням і способом побудови функція мало чим відрізняється від процедур.

Особливості функцій:

має тільки один результат виконання;

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

форма побудови функції відрізняється від процедури тільки заголовком;

можна викликати в середині виразу:

F := FAST (M) - FAST (K);

Приклади заголовків функції:

FUNCTION f (a, b :real) : real;

А і В - дійсні параметри значення;

F - ім'я функції, яка отримає результат виконання функції типа real/

FUNCTION f1 (x : real; var y, z : integer) : real;

x - дійсні параметри значення;

y, z - цілі параметри змінні;

Суть параметрів-значень і параметрів-змінних аналогічна процедурам

FUNCTION f2 : real;

без параметрів

Приклад 3; знайти різницю факторіалів F=m! - k!

FUNCTION FACT ( n: real) : real;

Var i :integer:

p : real;

Begin

p :=1:

for i := 1 to n do

p := p * i;

FACT := p;

End;

Тут FACT - ім'я функції, якому присвоюється результат типа real. Формальним параметром є n - параметр-значення типу integer.

(наприк. m i k):

F := FAST (M) - FAST (K);

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

9. Методи звертань до процедур і функцій

Існує 3 варіанти звертання до процедур і функцій:

із зовнішнього блоку (цей спосіб розглянули у попередніх питаннях лекції);

із сусідньої функції;

із самої функції - рекурсія.

Розглянемо на прикладах 3-й і 2-й варіанти звертання:

Функцій (процедура), яка викликає сама себе називається рекурсивною.

Суть рекурсії розглянемо на прикладі4:

Визначити факторіал у рекурсивній формі:

n!=1, при n=0ж

n!=n(n-1)!, при n>0.

Тут n! визначається через (n!-1), т.б. через ту ж саму функцію.

Programa FACT (input, output);

Var n : integer;

FUNCTION F ( v : integer) : integer;

Begin

If v = 0 then

F := 1

else

F := v * F(v-1);

End;

Begin

Writeln (` ввести аргумент n `);

Read ( n );

If n<0 then

Writeln (`факторіал не визнач.');

else Writeln (`факторіал', n ,'= ', F(n));

end.

В прикладі4 рекурсивна функція F можно представити і не в рекурсивною:

FUNCTION F( v : integer) : integer;

Begin

F := 1:

for i := 1 to v do

F := F * i;

End;

Особливість: на реалізацію рекурсивної функції ЕОМ затрачує значний час, хоча її опис більш компактний і наочний. Не рекурсивні функції обчислюються швидко.

Формально у мові Паскаль не дозволяється використовувати конструкції, які ще не описані.

Для виключення таких ситуацій використовують, так званий, випереджальний опис процедур і функцій. При цьому до опису процедури F1 вказується на подальші використання процедури F2. Тоді звертання з F1 до F2 допустимо (рис.5).

Program Pr…;

Procedure F2 (…);

FORWARD;

Procedure F1 (…);

F2 (…);

End;

Procedure F2;

end;

begin

end.

Рис.5

Pr містить 2-і незалежні процедури F1, F2. В F1 є звертання до F2, тому використаний випереджальний опис процедури F2, який складається із заголовка з параметрами і службового слова FORWARD.

Тоді сам опис F2 має заголовок без повторення формальних параметрів.

Особливості:

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

Вхід до блоку процедур або функцій тільки через його початок, а вихід по закінченню всіх дій.

Т. ч. оператори go to - заборонені, т.б. всі мітки у блоці належать блоку і описуються у блоці. Поняття локальних і глобальних міток не існує.

при необхідності із середини блока можна використати стандартну процедуру EXIT , яка має форму:

EXIT (аргумент)

Якщо аргументом є ім'я програми або службове слово PROGRAM , то виконання програми достроково завершується.

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

Висновки

Таким чином, в Паскалі є широкі можливості використання процедур і функцій, що надає більшу наочність, компактність, структурованість програм; виникають умови для створення складних програмних комплексів групами програмістів; процес програмування стає більш систематичним і цілеспрямованим.

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.