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


Порядок виконання контрольної роботи

Загрузка...

Курс лабораторних робіт

У запропонованому розділі містяться варіанти лабораторних робіт з курсу «Програмування», методичні вказівки і зразки машинних лістингів базових варіантів усіх лабораторних робіт (див. Додатки 1-4).

Наприкінці кожної лабораторної роботи дається орієнтований перелік питань для самопідготовки.

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

Порядок виконання контрольної роботи

1. Уважно прочитати й усвідомити умови задачі, що треба буде розв'язати.

2.Ознайомитися з необхідним теоретичним матеріалом - див.Список що рекомендується.

3. Вивчити потрібний додаток для відповідної лабораторної роботи і, особливо, лістинг програми. Для цього досить персонального комп'ютера типу IBM PC, починаючи з процесора i286.

4. Підготувати свій варіант тексту програми і спробувати вирішити його за допомогою комп'ютера. Звичайно з першого разу рішення не вдається - це нормально. Потрібно повторити редагування і рахунок до одержання потрібного результату.

5. Зробити звіт.

Кожен звіт оформляється у виді пояснювальної записки (див. Прил. 1) і повинний містити наступні елементи:

¨ титульний лист;

¨ текст пояснювальної записки в машинописному чи рукописному виді;

¨ список використаної літератури;

¨ машинний лістинг програми мовою PASCAL - у виді додатка.

Зміст пояснювальної записки

1. Постановка задачі.

2. Короткі теоретичні відомості про особливості застосовуваних операторів і методів (теоретичний вступ).

3. Опис програми:

¨ загальні відомості (мова програмування, операційна система, тип процесора);

¨ опис логічної структури програми;

¨ опис алгоритму рішення задачі (у виді блок-схеми);

¨ опис вхідних і вихідних даних програми;

¨ опис підпрограм;

¨ перелік аномалій і припустимих значень вхідних даних (тестові приклади).


Лабораторна робота № 1

ОБЧИСЛЕННЯ АРИФМЕТИЧНИХ ВИРАЗІВ

 

Мета роботи. Обчислити заданий змішаний арифметичний вираз для даних у форматах REAL (змінні a,b) і INTEGER (інші змінні).

У програмі повинна бути передбачена, як мінімум, одна процедура чи функція. Вихідні дані повинні вводитися з перевіркою на область припустимих значень - див. Прил. 2.

Варіанти

1) 2*c - d + 2) c + 4*d -

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

- 1 1 -

 

3) -2*c + d*82 4) lg(2*c) + d - 52

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

tg( - 1) + 1

 

5) arctg(c/4) - d*62 6) -2*c - ln(d) + 53

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a*a - 1 - 1

 

7) 2*c - lg(d/4) 8) tg ( c ) - d*23

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a*a - 1 2*a - 1

 

9) 2*c - d/23 10) 4*c + d - 1

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

ln(1 - ) c - tg

 

11) 2*c - d* 12) - d + 2

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c + a - 1 d + a*a - 1

 

 

13) arctg(c - d/2) 14) 4*lg ( c ) - d/2 + 23

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

2*a - 1 a*a - 1

 

15) c*tg(b + 23) 16) c/d + ln(3*a/2)

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a/2 -4*d - 1 c - a + 1


 

17) 2*c + lg(d)*51 18) 2*c + ln(d/4) + 23

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

d - a - 1 a*a - 1

 

19) 42*c - d/2 + 1 20) arctg(2*c)/d + 2

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a*a - ln(b-5) d - a*a - 1

 

21) arctg(12/c) + 73 22) 2*c/a - d*d

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a*a - 1 d + tg(a - 1)

 

23) + d -4*a 24) + b -

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

1 + a*b b*a -1

 

25) -25/a + c - tg(b) 26) lg(4*a - 1) + b/2

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

1 + c*b/2 b*c – 5

 

27) 8*lg(b + 1) - c 28) 4*a - ln(b - 1)

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a/2 + b*c c/b + 18*a

 

29) arctg(4*b)/c - 1 30) arctg(b) + c*b - a/4

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

12*c + a - b a*b - 1

 

31) a + - 32) - + a

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

4*b*a + 1 2*a*c - 1

 

 

33) 2*b - ln(a + b)*c 34) 41 - d/4 - 1

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c/4 - 1 c/tg(b + a) - d

 

35) a - b*4 - 1 36) lg(b/a + 4)*c

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c/31 + tg(a*b) 41*c - b + 1

 

37) lg(21 - a)*c/4 38) c - ln(33 + b)/4

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

1 + c/a + b a*c/b - 1

 

39) 2*b - 38*c 40) arctg(c/4 + 28)*d

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

arctg(b + a)/c + 1 a/d - c - 1

 

41) a*b/4 - 1 42) 1 + a - b/2

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

- b*a + c b* + a/b

 

43) ln(a*b + 2)*c 44) lg(4*b - c)*a

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

41 - b/c + 1 b + c/28 - 1

 

45) 2*c + tg(a - 21) 46) 4/c + tg(3*a)

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c/a*b + 1 c/a - b - 1

 

47) 8*lg(b - 1) - c 48) 4*ln(a/b) + 1

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a*2 + b/c c*b - 18 + a

 

49) 4*ln(b)/c + 1 50) arctg(b - c)/b + a/4

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

2*c + a*c - b a*b - 1

 

51) arctg(a - c)*b + 28 52) c*b - 24 + a

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

4*b/a + 1 b/lg(2*c - 1) + a

 

53) - a + b/c 54) + 1

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

a - c/4 + 1 a - c/b + a*d

 

55) a + tg(b/4 - 1) 56) b*a + c/2

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c/3 - a*b 4*c - tg(b + 1)

 

57) lg(25 + 2*a/c) 58) c + 23 - b*4

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

c*a - b - 1 a - ln(a + c/b - 1)

 

 

59) b/2 - 53/c 60) c*4 + 28/d

¾¾¾¾¾¾¾ ¾¾¾¾¾¾¾¾

arctg(b - a)*c + 1 5 - arctg(a*d - c - 1)

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

1. Особливості виконання досліджуваних операторів: присвоювання, введення-виведення.

2. Процедури і функції. Формальні і фактичні параметри.

3. Арифметичні вирази: знаки арифметичних операцій, стандартні функції.

4. Діапазон припустимих значень для дійсних (REAL) і цілих (INTEGER)

змінних.

5. Обробка аварійних ситуацій.

 

Лабораторна робота № 2

ОРГАНІЗАЦІЯ РОЗГАЛУЖЕНЬ

 

Мета роботи: Обчислити заданий цілочисельний вираз для данных a, b у форматі INTEGER, використовуючи оператор IF. Результат Х - теж цілочисельний (INTEGERчи LONGINT).

У програмі повинна бути передбачена, як мінімум, одна чи процедура чи функція. Вихідні дані і результат повинні перевірятися на область припустимих значень - див. Прикл.3

Варіанти

1) 2)

 

3) 4)

 

5) 6)

 

7) 8)

 

9) 10)

 

11) 12)

 

13) 14)

15) 16)

 

17) 18)

 

19) 20)

 

21) 22)

 

23) 24)

 

25) 26)

 

27) 28)

 

29) 30)

 

31) 32)

 

33) 34)

35) 36)

 

37) 38)

 

39) 40)

 

41) 42)

 

43) 44)

 

45) 46)

 

47) 48)

 

49) 50)

 

51) 52)

 

53) 54)

 

55) 56)

 

57) 58)

 

59) 60)

 

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

1. Особливості виконання досліджуваних операторів: умовні, уведення-висновку.

2. Процедури і функції. Формальні і фактичні параметри.

3. Арифметичні вирази: знаки арифметичних операцій, стандартні функції.

4. Діапазон припустимих значень для цілочисельних змінних (INTEGER або LONGINT).

5. Обробка аварійних ситуацій.

 

Лабораторна робота № 3

Лабораторна робота № 4

Варіанти

Задано квадратну матрицюA розміром N x N (N<=10), що складається з дійсних елементів.

1) Знайти середнє арифметичне елементів кожного з парних стовпців цієї матриці.

2) Знайти середнє арифметичне елементів кожного з непарних стовпців цієї матриці.

3) Знайти середнє арифметичне елементів кожної з рядків цієї матриці.

4) Знайти середнє арифметичне елементів кожної з парних рядків цієї матриці.

5) Знайти середнє арифметичне елементів кожної з непарних рядків цієї матриці.

6) Знайти середнє арифметичне з усіх від’ємних елементів цієї матриці.

7) Знайти середнє арифметичне з усіх додатних елементів цієї матриці.

8) Знайти характеристику кожного її рядка (суму додатних парних елементів у кожнім рядку).

9) Знайти характеристику кожного її стовпця (суму модулів від’ємних непарних елементів у кожнім стовпці).

10) Знайти суму і добуток усіх її додатних елементів.

11) Знайти суму і добуток усіх її від’ємних елементів.

12) Знайти суму всіх її додатних і добуток усіх її від’ємних елементів.

13) Знайти суму всіх її від’ємних і добуток усіх її додатних елементів.

14) Знайти суму всіх її елементів і замінити нею всі діагональні елементи цієї матриці.

15) Знайти добуток усіх її елементів і замінити їм усі діагональні елементи цієї матриці.

16) Знайти суму всіх її додатних елементів і замінити нею всі діагональні елементи цієї матриці.

17) Знайти добуток усіх її додатних елементів і замінити їм усі діагональні елементи цієї матриці.

18) Знайти суму всіх її від’ємних елементів і замінити нею всі діагональні елементи цієї матриці.

19) Знайти добуток усіх її від’ємних елементів і замінити їм усі діагональні елементи цієї матриці.

20) Знайти мінімальне з чисел, що зустрічається в даній матриці більше одного разу.

21) Знайти максимальне з чисел, що зустрічається в даній матриці більше одного разу.

22) Знайти суму найбільших елементів кожного рядка матриці і їхніх координат.

23) Знайти суму найменших елементів кожного рядка матриці і їхніх координат.

24) Знайти добуток найбільших елементів кожного рядка матриці і їхніх координат.

25) Знайти добуток найменших елементів кожного рядка матриці і їхніх координат.

26) Знайти суму найбільших елементів кожного стовпця матриці і їхніх координат.

27) Знайти суму найменших елементів кожного стовпця матриці і їхніх координат.

28) Знайти добуток найбільших елементів кожного стовпця матриці і їхніх координат.

29) Знайти добуток найменших елементів кожного стовпця матриці і їхніх координат.

30) Знайти, скільки додатних елементів містить дана матриця в кожнім рядку.

31) Знайти, скільки від’ємних елементів містить дана матриця в кожнім рядку.

32) Знайти, скільки додатних елементів містить дана матриця в кожнім стовпці.

33) Знайти, скільки від’ємних елементів містить дана матриця в кожнім стовпці.

34) Одержати нову матрицю шляхом розподілу всіх елементів даної матриці на її найбільший по модулю елемент.

35) Одержати нову матрицю шляхом ділення всіх елементів даної матриці на її найменший по модулю елемент.

36) Одержати нову матрицю шляхом множення всіх елементів даної матриці на її найбільший по модулі елемент.

37) Одержати нову матрицю шляхом множення всіх елементів даної матриці на її найменший по модулю елемент.

38) Одержати нову матрицю шляхом додавання всіх елементів даної матриці з її найбільшим по модулю елементом.

39) Одержати нову матрицю шляхом додавання всіх елементів даної матриці з її найменшим по модулю елементом.

40) Одержати нову матрицю шляхом вирахування всіх елементів даної матриці з її найбільшого по модулю елемента.

41) Одержати нову матрицю шляхом вирахування всіх елементів даної матриці з її найменшого по модулю елемента.

42) Замінити нулями всі її елементи, розташовані на головній діагоналі і вище неї.

43) Замінити нулями всі її елементи, розташовані на головній діагоналі і нижче неї.

44) Сформувати вектор із суми елементів рядків і знайти їх середнє арифметичне.

45) Сформувати вектор із суми елементів стовпців і знайти їх середнє арифметичне.

46) Сформувати вектор з добутку елементів рядків і знайти їх середнє арифметичне.

47) Сформувати вектор з добутку елементів стовпців і знайти їх середнє арифметичне.

48) Сформувати вектор з найменших значень елементів рядків і знайти їх середнє арифметичне.

49) Сформувати вектор з найменших значень елементів стовпців і знайти їх середнє арифметичне.

50) Сформувати вектор з найбільших значень елементів рядків і знайти їх середнє арифметичне.

51) Сформувати вектор з найбільших значень елементів стовпців і знайти їх середнє арифметичне.

52) Сформувати вектор з різниць найбільших і найменших значень елементів рядків.

53) Сформувати вектор з різниць найбільших і найменших значень елементів стовпців.

54) Сформувати вектор із суми найбільших і найменших значень елементів рядків.

55) Сформувати вектор із суми найбільших і найменших значень елементів стовпців.

56) Знайти суму елементів рядка, у якій розташований найменший елемент.

57) Знайти суму елементів рядка, у якій розташований найбільший елемент.

58) Знайти суму елементів стовпця, у якому розташований найменший елемент.

59) Знайти суму елементів стовпця, у якому розташований найбільший елемент.

60) Поміняти місцями рядок, що містить максимальний елемент, з рядком, що містить мінімальний елемент.

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

1. Особливості виконання досліджуваних операторів: циклів, умовних, введення-висновку.

2. Процедури і функції. Формальні і фактичні параметри. Передача в параметрах масивів.

3. Розмірність масивів. Контроль за коректним розподілом пам'яті для масивів.

4. Двовимірні масиви. Рядки і стовпці. Розташування в пам'яті двовимірних масивів.

ДОДАТОК 1

ЛІСТИНГ ПРОГРАМИ Work1.pas

program Work1;

{ Обчислити варіант

 

3 arctg(b) + c*b - a/4

x= ------------------------

12*c + a - b

}

Uses CRT;

Label L1;

Var

a,b,x,x1,x2 : Real;

c : Integer;

ch : Char;

 

{Обчислення знаменника з перевіркою його на нуль}

function Flag (a,b:real; c:Integer; Var x2:Real) : Boolean;

Begin

Flag:=True;

x2:=12.0*c + a - b; {12*c приведе до помилки приc>abs(32767.0/12)}

if x2=0 then

Begin

Writeln('Ділення на нуль!!!!!!!! Повторіть введення.');

Flag:=False;

Exit;

End;

End;

{Обчислення арифметичного виразу}

function F (a,b,x2:real; c:Integer) : Real;

Var x1 : Real;

Begin

x1:= ArcTan(b)+c*b-a/4;

F:=x1/x2

End;

{Введення значення змінної С з перевіркою його на припустимий діапазон}

Procedure InputC(Var c:integer);

Var cL:Real;

Begin

Repeat

Write('Введіть значення c=====>');

Readln(cL);

Until (cL>=-32768)and(cL<=32767);

c:=trunc(cL)

End;


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

Begin

Repeat

ClrScr;

Writeln(' Варіант 30');

Writeln(' arctg(b) + c*b - a/4');

Writeln(' x= ------------------------');

Writeln(' 12*c + a - b');

Writeln;

L1:

Write('Введіть значення a=====>');

Readln(a);

Write('Введіть значення b=====>');

Readln(b);

InputC(c);

if Flag(a,b,c,x2) then Writeln ('x=',F(a,b,x2,c))

else goto L1;

Writeln('Знову? (y/n)');

ch:=ReadKey;

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

End.

Розглянемо поетапне виконаннялабораторної роботи №1.

У даному завданні необхідно обчислити значення арифметичного виразу (варіант 30), що є часткою від ділення виразу в чисельнику на вираз у знаменнику.

Для одержання результату необхідно зробити наступне:

1. Ввести значення змінних, які входять у даний вираз (a, b, c).

2. Перевірити, чи знаходяться цілочисельні змінні (у даному випадку тільки c) у діапазоні допустимих значень.

3. Обчислити знаменник з перевіркою його на нуль (тому що ділення на нуль НЕПРИПУСТИМЕ).

4. Обчислити вираз.

5. Вивести результат обчислення.

Програмі привласнене ім'яWork1,ім'я файлу - Work1.pas:

· У фігурних дужках написані коментарі - у даному випадку номер варіанта і вид виразу.

· Далі після зарезервованого слова Uses написане ім'я стандартного модуля середовища Turbo Pascal - CRT (докладніше - див. Додаток. 9).

· Потім описана мітка L1.

· У полі опису Var змінні a,b,x,x1,x2 оголошені як Real, змінна з какInteger, змінна ch как Char( типи даних - див. [4]).

· Далі іде опис функцій Flag, F і процедури Input.

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

Обчислимо знаменник з перевіркою його на нуль за допомогою функції Flag (основні поняття функції і процедури подані в [4]). ФункціяFlag описана якBoolean і приймає два значення True (якщо знаменник НЕ дорівнює нулю) чи False (якщо знаменник дорівнює нулю). У заголовку функції використовуємо параметри:

· вхідні змінні a,b,c, значення яких передається з основної програми у функцію Flag;

· вихідну змінну x2, значення якої обчислюється (це - знаменник виразу) і передається в основну програму.


Алгоритм обчислення знаменника наступний:

¨ Присвоюємо функції значення Flag:=True;

¨ Обчислюємо знаменник і присвоюємо зміннійх2значення виразу в знаменнику:х2:=12.0*з+a-b;

¨ Якщо знаменник дорівнює нулю (х2=0), функціяFlag приймає значення рівне False і керування передається в основну програму (Exit).

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

У цьому фрагменті використаний умовний оператор if-then - див. [4].

 

Безпосереднє значення виразу визначимо за допомогою функціїF.Функція F описана як Real. Змінні a, b, c (вхідні) передаються з основної програми. Значення функції F обчислюється і передається в основну програму.

Алгоритм обчислення значення виразу:

¨ обчислюємо значення виразу в чисельнику : х1:=ArcTan(b)+c*b-a/4;

¨ присвоюємо функції F значення вихідного виразу: F:=x1/x2і керування передається в основну програму.

 

Введення змінної сздійснюємо за допомогою процедури Input. У заголовку процедури описаний параметр-змінна:Var с : integer -одержуване значення введеної змінної.

Алгоритм роботи процедури Input:

¨ У циклі вводимо з клавіатури значення змінної с, одночасно перевіряється чи знаходиться значення с у діапазоні -32768 ... +32767 (діапазон значень для цілих чисел типу INTEGER). Тіло циклу розташоване між Repeat...і ...Until.Докладніше про цикли див. [4].

¨ Змінній с присвоюємо значення рівне цілій частині (функція trunc) змінної c c:=trunc(c);

¨ Отримане значення змінної с передається в головну програму.

Алгоритм виконання головної програми:

У циклі Repeat .... Until(ch=’n’) or (ch:=’N’) виконуємо введення змінних , перевірку знаменника на нуль і обчислення значення виразу для одного комплекту даних a,b,c:

· Вводимо значення змінної а: Readln(а);

· Вводимо значення змінної b: Readln(b);

· Звертаємося до процедури Input(с)длявведення значення цілої змінної c (значення спередається в головну програму з процедури Input).

· Перевіряємо значення функції Flag. Якщо воно True , то виводимо значення виразу на екран, інакше керування переходить на мітку L1, повторюємо введення змінних a, b, c доти, поки знаменник прийме значення, відмінне від нуля.

· Після висновку результату на екрані дисплея з'являється повідомлення - Знову? (y/n), змінної chприсвоюється значення натиснутої клавіші (оператор ReadKey читає символ із клавіатури - N чи Y). Якщо ви натиснули N, виконання програми закінчується, якщо натиснули клавішу Y, - керування передається на початок циклу і ви можете повторити обчислення з новими значеннями змінних a,b,c.

 


ДОДАТОК 2

ЛІСТИНГ ПРОГРАМИ Work2.pas

Program Work2;

{Варіант 30: a*b/4, якщо b > a

X = -55, якщо b = a

(b - 5)/a, якщо b < a

}

Uses CRT;

Const

inv1='Повторите введення';

inv2=' Ділення на нуль!!!!!!! ';

inv3='Результат ';

inv4='виходить за діапазон [-32768..32767]!!!!';

inv5=' значення, що вводиться, ';

invA='A';

invB='B';

Label L1;

Var

a,b,x : Integer;

ch : Char;

 

{Обчислення значення Xз перевіркою на допустимий діапазон

для змінної типу INTEGER}

function F (a,b:Integer; Var x:Integer) : Boolean;

Var x1 : Real;

s1 : String;

Begin

F:=True;

if b>a then x1:=b/4.0*a {Тільки так, інакше буде помилка обчислення!!!!}

else if b=a then x1:=-55

else if a=0 then

Begin

s1:=inv2+inv1;

Writeln(s1);

F:=False;

Exit;

End

else x1:=(b-5.0)/a;

{-і-і-і Перевірка результату на допустимий діапазон -і-і-і}

if (x1>=-32768)and(x1<=32767) then x:=trunc(x1)

else

Begin

s1:=inv3+inv4;

Writeln(s1);

Writeln(x1);

Writeln(inv1);

F:=False;

Exit;

End

End;


{Процедура введення вихідного значення змінноїА з перевіркою на область

допустимих значень}

Procedure Input(Var A:integer; inv:String);

Label L;

Var aL :Real;

s1 : String;

Begin

L:

Write('Введіть значення '+inv,'===>');

Readln(aL);

if (aL>=-32768)and(aL<=32767) then A:=trunc(aL)

else

Begin

s1:=inv5+inv4;

Writeln(s1);

Writeln(inv1);

goto L;

End

End;

 

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

Begin

Repeat

ClrScr;

Writeln(' Варіант 30');

Writeln(' a*b/4, якщо b > a');

Writeln(' X = -55, якщо b = a');

Writeln(' (b - 5)/a, якщо b < a');

Writeln;

L1:

Input(b,invB);

Input(a,invA);

if F(a,b,x) then Writeln ('x=',x)

else goto L1;

Writeln('Знову? (y/n)');

ch:=ReadKey;

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

End.

У контрольній роботі №2 необхідно обчислити значення цілої змінної Х в залежності від значень теж цілих зміннихa і bз обліком області допустимих значень.

Програмі присвоєне ім'яWork2:

· У фігурних дужках (коментар) записана умова задачі варіанта 30.

· У поле виклику бібліотечних модулівUSES записаний модуль CRT.

· У поле завдання констант визначені значення строкових констант: inv1, inv2, inv3, inv4, inv5, inv, inv.

· У поле міток описана міткаL1.

· У поле опису змінних описані змінні - a, b, x : integer; ch : char.

· Далі випливають описання функції Fі процедуриInput.

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

Функція F визначена як BOOLEAN.У заголовку функції описані вхідні параметриa,b:integer(передаються з головної програми) і вихідний параметр x:integer( передається в головну програму). У тілі функції використовуються локальні змінні x1: real і s1: string.


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

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

ЛІСТИНГ ПРОГРАМИ 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 передається з головної програми, значення елементів масиву А передається з процедури).

¨ Проц

Загрузка...

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