Зверніть увагу на те, що в самому тілі функції FACT необхідно змінній, ім'я якої співпадає з ім'ям самої функції, присвоїти значення результату виконання функції: FACT:=F.
Завдання з розв'язками до тематичного оцінювання з теми " Процедури і функції."
1. Як описується функція мовою Паскаль?
Відповідь: FUNCTION назва(список формальних параметрів): тип;
2. Як називаються змінні в процедурі?
Відповідь: формальні параметри.
3. Скільки результатів має функція?
Відповідь: один.
4. Виправити помилки в опису процедури.
Procedure energia;
Var e:real;
E:=m*g*h;
Відповідь:
Procedure energia(m,g,h:real;var e:real);
Begin
E:=m*g*h;
End;
5. Написати функцію знаходження більшого з двох чисел.
Відповідь:
Function max(a,b:real):real;
Var m1:real;
Begin
If a>= b then m1:=a else m1:=b;
Max:=m1;
End;
6. Як викликається функція?
Відповідь: a:=назва(список фактичних параметрів);
7. Що може бути формальним параметром?
Відповідь: змінна.
8. В яке місце програми відбувається повернення з процедури?
Відповідь: оператор після виклику процедури;
9. Виправити помилки в описі функції.
Function SUM(integer):integer;
Var s:integer;
Begin
S:=0;
For i:= 1 to n do s:=s+n;
End;
Відповідь:
Function SUM(n:integer):integer;
Var s:integer;
Begin
S:=0;
For i:= 1 to n do s:=s+n;
SUM:=s;
End;
10. Записати процедуру знаходження периметра та площі прямокутника за заданими довжинами сторін.
Відповідь:
Procedure PS(a,b:real; var p,s:real);
Begin
P:=(a+b)*2;
S:=a*b;
End;
11. Скласти програму обчислення виразу, використовуючи процедуру або функцію: , де a,c,x [1..7].
Відповідь:
Program Minimin;
Var m1,m2,m3, y:real;
Procedure MIN(var m: real);
Var b:array[1..7] of real;
I:integer;
Begin
Writeln(‘введіть 7 елементів’);
For I:=1 to 7 do readln(b[i]);
m:=b[1];
For I :=1 to 7 do if b[i]<m then m:=b[i];
End;
Begin
min(m1) ; min(m2) ; min(m3) ;
Y:= (m1+m2)/(1+m3);
Writeln(‘y=’,y:6:2);
End.
12. Куплено 10 мішків капусти. В одному М1 кг, у другому М2 кг М3 г, а у всіх інших М4 кг М5 г. Визначити скільки куплено тонн капусти. В програмі використати підпрограму, що переводить кілограми і грами в кілограми.
Відповідь:
Program kapusta;
Var m1,m2,m3,m4,m5, Vsego,KG:real;
Procedure Perevod(Kg,G:real; Var Rez:real); {процедура переведення кг і г в begin кг, вхідні параметри вага в кг і
Rez:=kg+g/1000; г, вихідний Rez — вага в кг}
End;
Begin
Writeln(‘Введіть вагу першого мішка’);
Readln(M1);
Vsego=:=m1; { Vsego—змінна для накопичення загальної ваги}
Writeln(‘Введіть вагу другого мішка (кг, г)’);
Readln(M2,M3);
Perevod(m2,m3,KG);
Vsego:=Vsego+KG;
Writeln(‘Введіть вагу інших мішків (кг, г)’);
Readln(M4,M5);
Perevod(m4,m5,KG);
Vsego:=Vsego+KG*8; {Загальна вага в кг}
Vsego:=Vsego/1000; {Загальна вага в тоннах}
Writeln(‘Вага всієї капусти ’, Vsego, ‘тонн’);
End.
13. У продавця N ящиків, у кожному з яких по В кг бананів. Визначити, який штраф він сплатить комітету із захисту прав споживачів, якщо він продає банани по С гривень за кілограм і при цьому обважує покупців на G грам при зважуванні кожного кілограма, а сума штрафу дорівнює п’ятикратному розміру прибутку , отриманого за рахунок обважування покупців. Скласти функцію для визначення результату задачі.
Відповідь:
Program Banan;
Var c,n,b,g,prib,st;real;
Function Shtraf(a:real):real;
Var ss:real;
Begin
Ss:=a*5;
Shtraf:=ss;
End;
Begin
Writeln(‘введіть n, b, c і g’);
Readln(n,b,c,g);
Prib:=n*b*g/1000*c; {прибуток за рахунок обважування}
St:=Straf(prib); {функція обчислює суму штрафу}
Writeln(‘Сума штрафу становить ’, St:6:2, ‘ грн.’);
End.
Завдання для самостійної роботи з теми "Процедури і функції"
1. Знайти довжину сторін трикутника ABC, якщо відомі координати його вершин A(xl, yl, zl), B(x2, y2, z2), С(хЗ, уЗ, сЗ). Необхідно скористатись формулою:
d =
2. У масиві al, а2, аЗ, ..., an є додатні і від'ємні числа.
Знайти окремо суму додатних і від'ємних чисел.
3. Скласти програму знаходження більшого з трьох чисел.
4. Скласти програму знаходження площі чотирикутника ABCD,якщо відомо довжини сторін AD, AB, AC, BC, CD. При розв'язуванні задачі використати формулу Герона.
P = (a + b + c)/2; S =
5. Обчислити значення виразу
де Sa,Sb—сума елементів головної діагоналі матриці A і B
Ra, Rb— сума елементів побічної діагоналі матриці A і B.
6. Підрахувати кількість від’ємних елементів кожного рядка матриць А, В і С, розмірністю 4*4.
7. Трикутник заданий координатами своїх вершин x1,y1,x2,y2,x3,y3. Знайти периметр і площу трикутника.(Довжина сторони визначається по формулі )/
8. Написати процедури, які дозволять розпізнати повні квадрати, степені п’ятірки , прості числа в послідовності із N чисел.
9. Обчислити площу опуклого п’ятикутника ABCDE, якщо відомі довжини всіх його сторін і довжини двох діагоналей, що виходять із вершини А.
10.Дано натуральне число N. Цілі числа a1,a2,…an. Визначити, чи є серед цих чисел числа—близнюки, прості числа різниця між якими дорівнює 2.
11.*Скласти процедуру перетворення десяткового числа в двійкове.
12.*Скласти процедуру перетворення двійкового числа в десяткове.
13.*Скласти процедуру перетворення десяткового числа в вісімкове.
14.*Скласти процедуру перетворення вісімкового числа в десяткове.
15.* Скласти процедуру перетворення десяткового числа в шістнадцяткове.
16.*Скласти процедуру перетворення шістнадцяткового числа в десяткове.
Примітка:
Для побудови двійкового числа використовується тільки 0 і 1
Для побудови вісімкового числа використовується тільки 0,1,2,3,4,5,6,7
Для побудови шістнадцяткового числа використовується тільки 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
9. Робота з рядками
Рядок являє собою особливу форму одномірного масиву символів. Для збереження й обробки рядків використовується тип данихSTRING (рядок).
Змінна типуSTRING складається з ланцюжка символів, тобто елементів типу CHAR. Рядки можуть виводитися на екран монітора за допомогою стандартних процедур WRITE і WRITELN і вводитися за допомогою процедур READ і READLN.
Змінна типуSTRING з'являється, як правило, шляхом вказівки імені змінної, зарезервованого словаSTRING і вказівки (у квадратних дужках) максимального розміру (довжини) рядка, що може зберігатися в цієї змінній,
ІМ'Я: STRING [ число]число може приймати натуральне значення до 255.
Якщо максимальний розмір рядка не зазначений, то він автоматично приймається рівним 255 - максимально можлива довжина рядка.
У Турбо Паскалі існує два шляхи обробки змінних типуSTRING.Перший шлях припускає обробку всього рядка як єдиного цілого. Другий шлях розглядає рядок як складений об'єкт, що складається з окремих символів ( типуCHAR), що при обробці доступні кожний окремо.
Значення рядка, що привласнюється, так само як і окремий символтипуCHAR заключається в апострофи. Якщо апострофи опущені, то компілятор розглядає приведений фрагмент тексту як числову величину чи як ідентифікатор.
Для доступу до окремого символу рядка необхідно вказати ім'я рядка й уквадратних дужках номер позиції елемента ( символу) у рядку.