ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Алгоритм виконання функції F

1. Спочатку функціїF присвоюється значення TRUE і перевіряєтьсяb>a.

2. Якщоумова виконується, тоді обчислюється значення x1:=b/4.0*a.

3. Інакше перевіряєтьсяb=a.

4. Якщо так, тох1:=-55.

5. Якщо ж ця умова не виконується , то залишається умова b<a, у якій треба перевірити на нуль знаменник a виразу (b-5)/a.

6. Якщо ця умова (a=0)виконується (знаменник у виразі (b-5)/a дорівнює нулю), обчислюється складений оператор після THEN, взятий у дужки -begin ... end:

¨ У цьому випадку стрічкова змінна s1:=inv1+inv2 буде дорівнює:

Ділення на нуль!!!!!!! Повторіть введення’.

¨ Це повідомлення виводиться на екран.

¨ Функція F приймає значення FALSE і керування передається по EXIT в головну програму.

7.У випадку,якщо знаменник не дорівнює нулю, обчислюється значенняx1:=(b-5.0)/a.

8. Далі перевіряється, чи входить значеннях1 у допустимий діапазон (для змінних типу INTEGER).

9. Якщотак, то ціла змінна одержує значення х:=trunc(x1).

10. Якщо значення х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

1.На екран повідомляємо про введення змінної А - Write(‘Введіть значення ’+ inv,'===>'). При виконанні цього оператора на екрані з'являється повідомлення:Введіть значення А===>.

2. Вводимо з клавіатури її значення- READLN(a).

3. Перевіряємо чи входить ці значення в допустимий діапазон:

¨ якщо так, то A:=TRUNC(a),

¨ якщо ні, то змінна s1отримує значення s1:=inv5+inv4

(' значення, що вводиться, виходить за діапазон [-32768...32767]!!!’).

¨ На екран виводиться значення inv1 (‘Повторіть введення’).

¨ Керування передається на мітку L для повторного введення значенняА.

Ця процедура може бути використана для введення і контролю діапазону будь-якої цілої змінної типу INTEGER.

Опис головної програми

1. У циклі REPEAT ... UNTIL очищається екран (ClrScr), виводиться на екран вид вихідного завдання, через процедуру INPUTвводяться змінні a і b, через функцію F обчислюється шукане значення x.

¨ Якщо значення функціїFдорівнює False, керування передається на мітку L1 для повторного введення змінних а і b .

¨ Якщо значення функції Fдорівнює TRUE, - виводиться результат (змінна х).

2. На екрані з'являється ‘Знову? (Y/N)’.

3. Змінна 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;

{Головна програма}

Begin

Repeat

ClrScr;

Input(inv,NN,N); {введення конкретної довжини масиву N<=NN }

{введення числа від’ємних елементів масиву K<=N, що треба підрахувати}

Input(invK,N,K);

InputVector(N,A);

OutputVector(N,A);

Writeln('Сума перших K від’ємних елементів масиву A=',

Summa(k,N,A):15:0);

Writeln('Повторити? (y/n)');

ch:=ReadKey;

Until (ch='n') or (ch='N');

End.

Для одержання результату в контрольній роботі №3 (варіант 60) необхідно ввести фактичне значення довжини масивуN (1<=N<=NN), значення числа від’ємних елементів масиву ДО (K<=N) , що треба підрахувати,і

 

 

значення елементів вихідного масиву A[i], i=1,...,N (з перевіркою на діапазон LONGINT).

Ім'я програми - WORK3.

· У фігурні дужки включені директиви компілятора (див. Дод. 8) для обробки дійсної суми типу EXTENDED:

¨ $N+ - використовувати числовий співпроцесор (реалізувати операції з крапкою, що плаває, апаратно);

¨ $E+ -включити режим програмної эмуляції співпроцесора.

· У поле опису бібліотек, констант і змінних завдань стандартний модуль CRT, визначені константи:NN, inv, inv, inv1, inv4, inv5.

· Описано власний тип даних Array для опису масиву довжиною NN, елементи якого мають тип LongInt, - Type Array=Array[1..NN] of Longint;

· Описано змінніk, N:Integer і масив A:Array; задана символьна змінна ch.

Далі йдуть описи процедур Input, InputVector, OutputVector, і функції Summa.

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

Опис процедури Input

¨ У заголовку процедури описані формальні змінні:

вхідні: inv, NN (значення яких передаються з основної програми);

вихідне N (значення визначається в процедурі і передається в основну програму).

¨ У цикліRepeat ...Until (N<=NN) and (N>=1) вводиться значення змінної N- Readln(N) з перевіркою (тобто що N повинно бути більше або дорівнює одиниці і менше або дорівнює NN - заданому за умовою завдання значенню розміру масиву). Потім керування передається в основну програму.

Опис процедури InputVector

¨ У заголовку процедури описані параметри:

N, переданий з основної програми;

A- масив елементів матриці, що вводяться.

¨ Описано локальні змінні:

i : integer- параметр циклу for;

Ra : Real- робоча змінна ( елемент масиву, що вводиться,);

s1 : String- рядок, формований для аварійного висновку.

¨ У циклі for вводяться значення елемента матрицічерез робочу змінну Ra і перевіряються на допустимі значення (у даному випадку взяті межі зміни для змінних типу longint).

¨ Якщо значення, що вводиться, задовольняє заданій умові, то елементам матриці присвоюєтьсязначення A[]]:=trunc(ra).

¨ Інакше

1) стрічковій змінний присвоюється значення s1:=inv5+inv4;

¨ (‘ значення, щов водяться, виходять за діапазон [- 147483648...2147483647]!!!!!!’).

 

2) це повідомлення виводиться на екран;

3) також на екран виводиться повідомлення «Повторите введення»;

4) керування передається на міткуL і знову вводимо значення елементів матриці з перевіркою на припустимі значення.

¨ Керування передається в головну програму, коли закінчиться цикл for .

Опис процедури OutputVector

¨ У заголовку процедури описані параметри:N, переданий з головної програми; A- масив виведених елементів матриці.

¨ Описано локальна перемінна i : integer- параметр циклу for.

¨ У процедурі в циклі forвиводяться значення елементів масивуА.В операторі висновкуWrite(A[i]:11,’ ’) заданий формат для виведеного елемента масиву:A[i]:11, що показує, що для висновку значення елемента масивуА приділяється 11 позицій.

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

Опис функції Summa

¨ У заголовку функції описані параметри:k - число від’ємних елементів масиву, щозчитуються, до<=N;N - розмірність масиву, А - масив елементів. Функція Summa описана, як Extended.

¨ У тілі функції задається лічильник від’ємних елементів масивуКк, йому привласнюється початкове значення 1 ( Kk:=1). Початкове значення суми дорівнює0 (s:=0).

 

¨

У циклі for від одиниці доN вважається сума перших K від’ємних елементів масиву:

1) перевіряється A[i]<0 (від’ємне число) і одночасно перевіряється значення лічильникаКк<=K (не перевищує числа негативних елементів масиву, щозчитуються, K);

2) S:=S+A[i];

3) лічильник від’ємних чисел збільшується на одиницю Кк:=Кк+1.

¨ Після закінчення циклу функції Summa присвоюється значення отриманої суми всіх від’ємних чисел - Summa:=S.

¨ Керування передається в головну програму.

Опис головної програми

1. У тілі головної програми в цикліRepeat ... Untilочищається екран (ClrScr).

2. Виробляється рішення задачі для одного комплекту вхідних даних N, K, A:

¨ Через виклик процедуриInput(inv,NN,N) здійснюється введення довжини масиву N<=NN(змінніinv, NN є вхідними, змінна N - результат роботи процедури).

¨ Через цю же процедуру Input(inv,N,K) здійснює введення числа від’ємних елементів масиву, щозчитуються, ДО<=N(змінного іnvк, N передаються з головної програми в процедуру, значення змінної K повертається з процедури в головну програму).

¨ Процедура InputVector(N,A) здійснює введення елементів масивуА (значення змінноїN передається з головної програми, значення елементів масиву А передається з процедури).

¨ Процедура OutputVector(N,A) здійснює висновок елементів масивуА (значення змінноїN і значення елементів масиву А передаються з головної програми).

¨ Виводиться значення суми через функцію Summa(k,N,A)(значення параметрівДО, N, A передається з головної програми);

¨ На екрані з'являється повідомлення «Знову? (Y/N)».

Змінній ch присвоюється значення натиснутої клавіші ch:=ReadKey і в залежності від відповіді керування передається на початок циклу (ch:=’Y’) чи програма закінчує виконання (ch:= ‘N’).

 

 


ДОДАТОК 4

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти