Основні відмінності між функціями і процедурами

1. Функція, як правило, повертає одне єдине значення, наприклад Sin (x).

Процедура може повертати складні структури, наприклад масиви.

2. Тема функції (її перший рядок) завершується зазначенням типу значення, що повертається (наприклад, real, integer і т.д.). У заголовку процедури така інформація не потрібна.

3. В кінці тіла функції їй присвоюється то значення, для обчислення якого вона призначена, наприклад, Sum_Mas: = S;

4. Функція може бути операндом математичного виразу. Процедура не може бути частиною вираження.

Правила застосування підпрограм

Не можна в заголовку підпрограми описувати складні структури, необхідно посилатися на опис типів цих структур в основній програмі. наприклад,

Procedure pr1 (a: array [1..n] of integer); - не можна!

Procedure pr1 (a: Mas_Type); ,

де Mas_Type - ім'я типу, описаного в основній програмі:

Type Mas_Type = array [1..n] jf integer;

2. Типи формальних і фактичних параметрів повинні бути узгодженими.

3. Підпрограми з параметром-значенням не повертають цей параметр головній програмі, параметр значення копіюється в стек; їм може бути змінна, константа або математичний вираз.

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

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


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

type
TFileData = record
Name: String [10];
ExtDat: Extended;
end;
var
Cals: File of TFileData;

begin
Road: = '. Dat';
Dest: = '' + Road;
try
AssignFile (Cals, Dest);
// Якщо файл існує відкриваємо на читання, інакше створюємо новий

If FileExists (Cals) then Reset (cals) else Rewrite (cals);

// встановимо позицію читання в кінець файлу

CalsData.Name: = 'назва параметра';

Write (Cals, CalsData);
except
on E: EInOutError do

ShowMessage ( 'При виконанні файлової операції виникла помилка' +

'№' + IntToStr (E. ErrorCode) + ':' + SysErrorMessage (GetLastError));

on E: EAccessViolation do

end;
CloseFile (cals); // Незалежно від того що сталося вище закриваємо

Перепишемо файл a.dat в файл b.dat, видаливши ознаки кінця файлу:

var
f1, f2: file of Byte;

begin

AssignFile (f1, 'a.dat');

Reset (f1);
Rewrite (f2);
for i: = 1 to FileSize (f1) do

if a <> 26 then Write (f2, a);

end;
CloseFile (f1);
CloseFile (f2);
end.

Файл записів. Пишемо і читаємо будь-яку:

Name: string [100];
Age: Byte;
Income: Real;
end;
var f: file of TR;

r: TR;
begin
// assign file

if FileExists ( 'MyFileName') then

reset (f)
else
rewrite (f);
// читання 10-й записи

seek (f, 10);
read (f, r);
// запис 20й записи

write (f, r);
closefile (f);
end;

3.3. Контрольні питання

12. У яких випадках можна застосувати параметри - константи?

13. Чому в функціях небажано використовувати параметри -

Завдання до лабораторної роботи № 3

1.Треугольнік заданий координатами своїх вершин. Скласти програму для обчислення його площі.

2.Дані дві дробу А / В і С / D (A, B, C, D-натуральні числа). Скласти програму для вирахування з першого дробу другий. Результат повинен бути нескоротного дробом.

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

2.Дані дві дробу A / В і С / D (A, B, C, D-натуральні числа). Скласти програму для складання дробів. Результат повинен бути нескоротного дробом.

1.Сформіровать масив X (N), N-й член якого визначається формулою X (N) = 1 / N !.

2.На площині задані своїми координатами n точок. Створити масив розміром n (n-1), елементами якого є відстані від кожної з точок до n-1 інших.

1.Дані числа X, Y, Z, T - довжини сторін чотирикутника. Обчислити його площу, якщо кут між сторонами довжиною X і Y-прямий.

2.Составіть програму для обчислення суми факториалов всіх парних чисел від m до n.

1.Заменіть дане натуральне число на число, яке виходить з вихідного записом його цифр у зворотному порядку (наприклад, дано число 156, потрібно отримати 651).

2.Дані просте число. Скласти функцію, яка буде знаходити наступне за ним просте число.

1.Написати програму обчислення суми p / q = 1-1 / 2 + 1 / 3- ... + ((- 1) ^ (n + 1)) / n для заданого числа n. Дріб p / q повинна бути нескоротного (p, q - натуральні).

2.Составіть функцію для знаходження найменшого непарного натурального подільника k (k ≠ 1) будь-якого заданого натурального числа n.

1.Напечатать всі пари чисел-близнюків з відрізка [n, 2n], де n - задане натуральне число більше 2.

2.Дані натуральне число N. Скласти програму для формування масиву, елементами якого є цифри числа N.

1.Найти всі пари дружніх чисел, що не більше даного числа К.

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

Написати програму обчислення суми 1 + 1/2 + 1/3 + ... + 1 / n для зааданного числа n. Результат представити у вигляді нескоротного дробу p / q (p, q - натуральні).

1.Скласти програму для знаходження чисел з інтервалу [M, N], що мають найбільшу кількість дільників.

2.Найті все числа Армстронга від 1 до К написати програму, яка знаходить і виводить на друк всі чотиризначні числа виду abcd. для яких виконується: 1) a, b, c, d - різні цифри; 2) ab - cd = a + b + c + d.

1.Дані числа X, Y, Z, T-довжини сторін чотирикутника. Обчислити його площу, якщо кут між сторонами X і Y-

2.Составіть програму для обчислення суми факториалов, всіх чисел, кратних 3, від А до В.

1.Сформіровать масив X (N), N-ий член якого визначається формулою X (N) = 1 / N!

1.Дані просте число. Скласти функцію, яка буде знаходити такі До простих чисел.

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

1.Найти все натуральні числа, що не перевищують заданого n, які діляться на кожну зі своїх цифр.

2.Найті все прості натуральні числа, що не перевищують n, двійковий запис яких є паліндром.

1.Скласти підпрограму, яка буде знаходити коріння квадратного рівняння.

2.Напісать програму обчислення суми 1 + 1/2 + 1/3 + ... + 1 / n для заданого числа n. Результат представити у вигляді нескоротного дробу p / q (p, q-натуральні).

1.Дані натуральні числа K і N. Скласти програму формування масиву А, елементами якого є числа, сума цифр яких дорівнює K і які не більше N.

2.Найті все натуральні n-значні числа, цифри в яких утворюють строго зростаючу послідовність (наприклад, 1234, 5789).

1.Дані просте число. Скласти функцію, яка буде знаходити такі за ним останнім просте число ..

2. Є частина котушки з автобусними квитками. Номер квитка шестизначний. Скласти програму, що визначає кількість щасливих квитків на котушці, якщо менший номер квитка - N, більший - М (квиток є щасливим, якщо сума перших трьох його цифр равнв сумі останніх трьох).

Схожі статті