- •Курс лабораторних робіт
- •Порядок виконання контрольної роботи
- •Зміст пояснювальної записки
- •Лабораторна робота № 1
- •Варіанти
- •Контрольні питання
- •Лабораторна робота № 2
- •Варіанти
- •Контрольні питання
- •Лабораторна робота № 3 організація циклів і робота з одномірними масивами
- •Контрольныe питання
- •Лабораторна робота № 4
- •Варіанти
- •Контрольні питання
- •Список використаної і літератури, що рекомендується
- •Додаток 1
- •Алгоритм обчислення знаменника наступний:
- •Алгоритм обчислення значення виразу:
- •Алгоритм роботи процедури Input:
- •Алгоритм виконання головної програми:
- •Додаток 2
- •Алгоритм виконання функції f
- •Алгоритм виконання процедури Input
- •Опис головної програми
- •Додаток 3
- •{Головна програма}
- •Опис процедури Input
- •Опис процедури InputVector
- •Опис процедури OutputVector
- •Опис функції Summa
- •Опис головної програми
- •Додаток 4
- •Опис процедури Input
- •Опис процедури InputMatrix.
- •Опис процедури OutputMatrix.
- •Опис процедури Evaluate.
- •Опис головної програми
Алгоритм виконання функції f
Спочатку функції F присвоюється значення TRUE і перевіряється b>a.
Якщо умова виконується, тоді обчислюється значення x1:=b/4.0*a.
Інакше перевіряється b=a.
Якщо так, то х1:=-55.
Якщо ж ця умова не виконується , то залишається умова b<a, у якій треба перевірити на нуль знаменник a виразу (b-5)/a.
Якщо ця умова (a=0) виконується (знаменник у виразі (b-5)/a дорівнює нулю), обчислюється складений оператор після THEN, взятий у дужки - begin ... end:
У цьому випадку стрічкова змінна s1:=inv1+inv2 буде дорівнює:
‘Ділення на нуль!!!!!!! Повторіть введення’.
Це повідомлення виводиться на екран.
Функція F приймає значення FALSE і керування передається по EXIT в головну програму.
У випадку, якщо знаменник не дорівнює нулю, обчислюється значення x1:=(b-5.0)/a.
Далі перевіряється, чи входить значення х1 у допустимий діапазон (для змінних типу INTEGER).
Якщо так, то ціла змінна одержує значення х:=trunc(x1).
Якщо значення х1 виходить за допустимий діапазон, то:
s1:=inv3+inv4 (‘Результат виходить за діапазон [-3268...32767]!!!!’);
значенння S1 виводиться на екран - Writeln(s1);
виводиться на екран отримане значення Х1 - Writeln(x1);
і нове запрошення - Writeln(Inv1) (‘Повторіть ввод’).
Функція F приймає значення FALSE і керування по EXIT передається в головну програму.
Далі описана процедура введення вихідного значення змінної А з перевіркою на область допустимих значень. Ім'я процедури - Input. У заголовку описані формальні параметри A:integer і inv:string (ім'я змінної). У тілі процедури використовуються локальні змінні al:real і s1:string, у полі опису міток визначена мітка L.
Алгоритм виконання процедури Input
На екран повідомляємо про введення змінної А - Write(‘Введіть значення ’+ inv,'===>'). При виконанні цього оператора на екрані з'являється повідомлення: Введіть значення А===>.
Вводимо з клавіатури її значення - READLN(a).
Перевіряємо чи входить ці значення в допустимий діапазон:
якщо так, то A:=TRUNC(a),
якщо ні, то змінна s1отримує значення s1:=inv5+inv4
(' значення, що вводиться, виходить за діапазон [-32768...32767]!!!’).
На екран виводиться значення inv1 (‘Повторіть введення’).
Керування передається на мітку L для повторного введення значення А.
Ця процедура може бути використана для введення і контролю діапазону будь-якої цілої змінної типу INTEGER.
Опис головної програми
У циклі REPEAT ... UNTIL очищається екран (ClrScr), виводиться на екран вид вихідного завдання, через процедуру INPUT вводяться змінні a і b, через функцію F обчислюється шукане значення x.
Якщо значення функції F дорівнює False, керування передається на мітку L1 для повторного введення змінних а і b .
Якщо значення функції F дорівнює TRUE, - виводиться результат (змінна х).
На екрані з'являється ‘Знову? (Y/N)’.
Змінна ch:=ReadKey і в залежності від відповіді керування передається на початок циклу (ch:=’Y’) чи програма закінчує виконання (ch:= ‘N’).
Додаток 3
Приклад виконання лабораторної роботи № 3
ЛІСТИНГ ПРОГРАМИ Work3.pas
program Work3;
{$N+,E+}
{ Варіант 60 - елементів масиву типу LONGINT.
Знайти суму перших K від’ємних елементів масиву A.
}
Uses CRT;
Const NN=20; {Максимальна довжина вектора}
inv=' N';
inv=' К';
inv1='Повторіть введення';
inv4='виходить за діапазон [-2147483648..2147483647]!!!!';
inv5=' значення, що вводиться, ';
Type ArrayA=Array [1..NN] of LongInt;
Var k,N:integer;
A:Array;
ch:char;
{введення значення N, 1<=N<=NN}
Procedure Input(inv:String; NN:Integer; Var N:integer);
Begin
Repeat
Write('введіть значення'+inv,'=====>');
Readln(N);
Until (N<=NN) and (N>=1);
End;
{введення N значень компонентів вектора A[i], -2147483648<=A[i]<= 2147483647}
Procedure InputVector(N:integer;Var A:arrayA);
Label L;
Var i :integer;
Ra:Real;
s1:String;
Begin
for i:=1 to N do
Begin
L:
Write('введіть значення елемента вектора A[',і,']=====>');
Readln(Ra);
if (Ra>=-2147483648.0)and(Ra<=2147483647.0) then A[i]:=trunc(Ra)
else
Begin
s1:=inv5+inv4;
Writeln(s1);
Writeln(inv1);
goto L;
End
End;
End;
{Висновок значень компонентів вектора A пострічно}
Procedure OutputVector(N:integer; A:arrayA);
Var i :integer;
Begin
Writeln(' -і-і-і- Вихідний вектор -і-і-і-');
for i:=1 to N do
Write(A[i]:11,' ');
Writeln;
End;
{Перебування суми перших K від’ємних елементів масиву A довжиною N}
Function Summa(k,N:Integer; A:ArrayA):Extended;
Var i,Kk:integer;
S:Extended;
Begin
Kk:=1; {Лічильник від’ємних елементів масиву}
S:=0;
for i:=1 to N do
if (A[i]<0) and (Kk<=k) then
Begin
S:=S+A[i];
Kk:=Kk+1
End;
Summa:=S
End;