Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Приклад програми

Читайте также:
  1. I. ПРИКЛАДНОЕ ПРОГРАМНОЕ ОБЕСПЕЧЕНИЕ
  2. Алгоритм и его способы записи(язык програмирования,псевдокод,блок-схема).
  3. Анкетирование как метод сбора данных в прикладном политологическом исследовании.
  4. Анотація програми навчальної дисципліни
  5. б) приклади
  6. Вид прикладной компьютерной программы, предназначенной для производства (включая набор, редактирование, форматирование, иногда печать) любого вида печатной информации
  7. Виды прикладных бухгалтерских программ, их роль и значение в развитии бухгалтерского учета
  8. Витяг з робочої навчальної програми
  9. Вопрос Прикладное ПО
  10. Вопрос. Прикладная этика. Принципы этики управления.

Нижче приводиться варіант програми DORATIO.PAS, в якому використовується процедура для отримання двох значень і функція для обчислення коефіцієнта:

 

program DoRatio;

var

A,B: integer;

Ratio: real;

 

procedure GetData(var X,Y: integer);

begin

Write('Введіть два числа: ');

Readln(X,Y)

end;

 

function GetRatio(I,J: integer): real;

begin

GetRatio:= I/J

end;

 

begin

GetData(A,B);

Ratio:= GetRatio(A,B);

Writeln(' Відношення рівне ',Ratio)

end.

 

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

При компіляції і запуску програми першим в тілі програми виконується оператор GetData(A,B). Цей тип оператора називається викликом процедури. При обробці цього виклику програма виконує оператори в GetData, замінюючи X і У (формальні параметри) на А і B (фактичні параметри). Ключове слово var перед X і У в операторі виклику процедури GetData вказує, що фактичні параметри повинні бути змінними і що значення змінних можуть бути змінені і передані назад програмі, що їх викликала. Тому процедурі GetData не можна передавати, константи, вирази і так далі. При завершенні виконання GetData управління передається в основне тіло програми оператору, наступному за викликом GetData.

Цим наступним оператором є виклик функції GetRatio. Відзначимо тут деякі важливі відмінності. По-перше, GetRatio повертає значення, яке потім повинне бути де-небудь використано; в даному випадку це значення присвоюється Ratio. Пo-друге, в основному тілі функції значення привласнюється GetRatio. Taким чином функція визначає яке значення слід повернути. По-третє, перед формальними параметрами I і J тут відсутнє ключове слово var. Це означає, що фактичні параметри можуть бути довільними цілочисельними виразами, наприклад, Ratio:= GetRatio(A+B,300), і що навіть якщо значення формальних параметрів в тілі функції буде змінено, нові значення не будуть передані назад програмі. Це, до речі, не є відмінністю між процедурами і функціями; можна використовувати обидва типи параметрів із будь-яким видом підпpoгpaм.

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

 

function ім’я функції (параметри): тип даних;

 

Як бачимо, тут є тільки дві відмінності від структури звичайної програми: процедури і функції починаються із заголовка procedure або function, а не із заголовка program і закінчуються не крапкою, а крапкою з комою. Процедури і функції можуть мати свої власні константи, типи даних змінні і навіть власні процедури і функції. Але всі ці елементи можуть використовуватися тільки в тих процедурах і функціях, в яких вони визначені.

 

5.2 Описи функцій

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

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

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

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

Якщо ідентифікатор функції використовується при виклику функції усередині модуля-функції, то функція виконується рекуpсивно.

 

Наведемо далі приклади описів функції:

 

function Max(а: Vector; n: integer): extended;

var

x: extended;

i: integer;

begin

x:= а(1);

for i:= 2 to n do if x < а[i] then x:= а[i];

Max:= x;

end;

та

function Power(x: extended; у: integer): extended;

var

z: extended;

i: integer;

begin

z:= 1.0; i:= у;

while i > 0 do

begin

if Odd(i) then z:= z*x;

x:= Sqr(x);

end;

Power:= z;

end;

 

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




Дата добавления: 2015-01-29; просмотров: 97 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав