I,J:integer;
Suma:real;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (blue);
GotoXY (7,2);
Writeln ('ПРОГРАМА ВИЗНАЧЕННЯ СУМИ ',
'ЕЛЕМЕНТIВ РЯДКIВ МАТРИЦI A(',N,'x',M,')');
Window (1,3,80,25);
{початок зовнiшнього циклу по рядкам матрицi}
for I:= 1 to N do
{початок внутрiшнього циклу по стовпцям матрицi}
for J:= 1 to M do
begin
GotoXY (21,2);
TextColor (red);
Write ('Введiть елемент матрицi А[',i,',',j,']= ');
TextColor (black);
Read (a[i,j]);
ClrScr;
end;
{кiнець внутрiшнього циклу}
{кiнець зовнiшнього циклу}
GotoXY (30,2);
Writeln ('Рядок');
GotoXY (39,2);
Writeln ('Сума');
TextColor (yellow);
{початок зовнiшнього циклу по рядкам матрицi}
for I:= 1 to N do
begin
Suma:= 0;
{початок внутрiшнього циклу по стовпцям матрицi}
for J:= 1 to M do
Suma:= Suma+ a[i,j];
{кiнець внутрiшнього циклу}
GotoXY (30,3+I);
Writeln (I:3);
GotoXY (35,3+I);
Writeln (Suma:9:2);
end;
{кiнець зовнiшнього циклу}
Repeat Until KeyPressed;
End.
1.10. Оператор циклу з передумовою while та оператор із постумовою repeat доцільно використовувати, якщо крок зміни параметра циклу відрізняється від одиниці чи кількість повторень циклу наперед невідомо.
Приклад 4. Обчислити значення функції y=Asin(x) при зміні аргументу х на проміжку від p/2 до p з кроком h=(p-p/2)/20 для трьох значень коефіцієнта А, рівних, 3, 5 та 7.
Program Function_ASinx;
Uses Crt;
Var
A:integer;
y,x,h:real;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (blue);
GotoXY (6,1);
Writeln ('ПРОГРАМА ОБЧИСЛЕННЯ ФУНКЦIЇ "y=Asinx"');
TextColor (red);
Writeln (' ':13,'A',' ':4,'x',' ':6,'y');
TextColor (black);
Window (1,4,80,25);
A:=3;
h:=(pi-pi/2)/20;
{початок зовнiшнього циклу по коефіцієнту „А”}
while A <=7 do
begin
x:=pi/2;
{початок внутрішнього циклу по аргументу „х”}
while x<=pi do
begin
y:=A*sin(x);
Writeln (' ':11,A:3,x:7:2,y:7:2);
x:=x+h;
end;
{кінець внутрішнього циклу}
A:=A+2;
Readln;
ClrScr;
end;
{кінець зовнiшнього циклу}
End.
2. ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу дві програми на мові програмування “Паскаль”, які вирішують задачі відповідно до заданого нижче варіанта. При цьому детально вивчити та практично застосувати пункти меню Search,Help інтегрованого середовища мови.
2.1. Обчислити значення функції y=10e-tcos(4t) при збільшенні аргументу t від нуля із заданим кроком, поки функція e-t не досягне за значення 0,1. Знайти найбільшу суму елементів рядків цілочислової матриці А3х5.
2.2. Обчислити значення функції y=23(1-e-3t) при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 22,5. Знайти добуток найменших елементів стовпців дійсної матриці В3х5.
2.3. Обчислити значення функції y=17e-t при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 1,3. Знайти найменший добуток елементів стовпців цілочислової матриці С3х5.
2.4. Обчислити значення функції y=0,5t2-4t+6 при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 0,2. Знайти суму найбільших елементів рядків дійсної матриці D3х5.
2.5. Обчислити значення функції y=5t при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 99,9. Знайти найменшу суму елементів стовпців цілочислової матриці Е3х5.
2.6. Обчислити значення функції y=19ln(t) при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 45,3. Знайти добуток найбільших елементів рядків дійсної матриці F3х5.
2.7. Обчислити значення функції y=14tg(t) при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 345,3. Знайти найбільший добуток елементів рядків цілочислової матриці Н3х5.
2.8. Обчислити значення функції y=33sin(3t) при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 30,3. Знайти суму найменших елементів стовпців дійсної матриці R3х5.
2.9. Обчислити значення функції y=13-10e-t при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 5,5. Знайти найбільшу суму елементів стовпців цілочислової матриці Q3х5.
2.10. Обчислити значення функції y=6arctg(t) при збільшенні аргументу t від нуля із заданим кроком, поки функція y не досягне значення 7,4. Знайти добуток найменших елементів рядків дійсної матриці Z3х5.
3. КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Що таке цикл.
3.2. Що таке параметр циклу.
3.3. Які оператори застосовуються для організації циклів.
3.4. Який крок зміни параметра циклу у оператора for.
3.5. Як організується цикл із заданим числом повторень за допомогою оператора з перед- та постумовою.
3.6. Чому цикл називається з невідомим числом повторень.
3.7. Які оператори керування використовуються для реалізації циклу з невідомим числом повторень.
3.8. Коли завершується цикл із невідомим числом повторень.
3.9. При якій умові виконується цикл із передумовою.
3.10. При якій умові виконується цикл із постумовою.
3.11. Що називається вкладеним циклом.
3.12. Які правила організації вкладеного циклу.
3.13. Як змінюється параметр зовнішнього та внутрішнього циклу.
Комп'ютерний практикум № 4
ПІДПРОГРАМИ НА МОВІ "ПАСКАЛЬ"
Мета практикуму – розробка програмного забезпечення на мові програмування "Паскаль" з використанням методів структурного програмування та багатовіконного інтерфейсу, а також детальне вивчення та практичне застосування пунктів меню Windows, Debug інтегрованого середовища мови.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. Підпрограма – це логічно завершена група операторів, що має ім'я та яку можна викликати будь-яку кількість разів із різних місць програми. Для реалізації підпрограм на мові “Паскаль” використовується функція та процедура.
Структурно підпрограма складається із заголовка, описуючої та виконавчої частини. Останні дві мають такий само вигляд, як і у звичайної програми, проте всі елементи, що об'явлені в описуючій частині діють тільки у межах підпрограми. Спроба їх використання за межами підпрограми призводить до помилки.
1.2. Підпрограма-функція обчислює та повертає тільки одну змінну, причому ця змінна та підпрограма-функція мають однакове ім'я. Специфікація заголовка підпрограми-функції має наступний вид
Function <ім’я> ( <формальні параметри> ): <тип даних>;
Список <формальні параметри> забезпечує механізм обчислення значення функції для різних значень вхідних даних у вигляді фактичних параметрів, які передаються з основної програми. Між формальним та фактичним списком параметрів установлюється однозначний зв'язок при перелічуванні їх зліва направо. Формальні параметри записуються через символ крапка з комою “; ” з указуванням через двокрапку типу даних. Змінні одного типу можна записувати через кому. Наприклад,
Function Alfha(a,b:real; c:byte):real;
У загальному випадку список формальних параметрів функції є необов'язковим. В залежності від умов задачі він може бути відсутнім, наприклад,
Function Beta:integer;
Виклик підпрограми-функції в основній програмі здійснюється у виразах за іменем функції та вказуванням у круглих дужках через кому списку фактичних параметрів, причому останні повинні співпадати за типом даних із формальними параметрами, наприклад,
x:=2.5;
y:=3.9;
z:=7;
t:=2*Alfha(x,y,z);
Приклад 1. Обчислити значення виразу z=xy+(2y)3x. Уведення в степінь оформити у вигляді підпрограми-функції за формулою ab=e(b*ln(a) ).
Program Function_Program;
Uses Crt;
Var
x,y,z:real;
Function Stepin (a,b:real):real;
Begin
Stepin:=Exp(b*Ln(a));
End;
Begin
TextBackGround (lightgray);
ClrScr;
TextColor (blue);
GotoXY (6,2);
Writeln ('ПРОГРАМА ОБЧИСЛЕННЯ ЗНАЧЕННЯ ВИРАЗУ');
TextColor (red);
GotoXY (9,4);
Write ('Введiть значення Х та Y: ');
TextColor (black);
Readln (x,y);
z:=Stepin(x,y)+Stepin(2*y,3*x);
TextColor (yellow);
GotoXY (9,7);
Writeln ('z= ',z:9:2);
Readln;
End.
1.3. Підпрограма-процедура дозволяє обчислювати значення будь-якої кількості змінних. Специфікація заголовка процедури має наступний вид
Procedure <ім’я> ( <формальні параметри> );
Список <формальні параметри> забезпечує, як і у підпрограмі-функції, механізм обчислення значень змінних для різних значень вхідних даних. Правила запису формальних параметрів такі ж, як для функції, проте у процедурі вони складаються з параметрів-значень та параметрів-змінних. Параметри-значення – це вхідні дані, які передаються з основної програми для проведення обчислень. Параметри-змінні – це результати роботи процедури, які повертаються у основну програму після обчислень. Для позначення параметрів-змінних перед ними записується слово Var, наприклад,
Procedure Sorter (a,b:real; c:byte; Var x,y:real);
У загальному випадку список формальних параметрів процедури є необов'язковим. В залежності від умов задачі параметри-значення, параметри-змінні чи увесь список може бути відсутнім, наприклад,
Procedure Beep;
Виклик процедури в основній програмі здійснюється за іменем процедури та вказуванням у круглих дужках через кому списку фактичних параметрів, причому останні повинні співпадати за типом даних із формальними параметрами, наприклад,
t:=2.5;
h:=3.9;
z:=7;
Sorter(t,h,z,Alfha,Beta);
Приклад 2. Знайти максимальний елемент дійсної матриці А3х5. Знаходження максимуму оформити у вигляді процедури.
Program Max_Array;
Uses Crt;
Const
n=3; m=5;
Type
Masiv=array [1..n,1..m] of real;
Var
A:Masiv;
Amax:real;
I,J:byte;
Procedure Max (X:Masiv; Var Xmax:real);
Var
k,p:byte;
Begin
Xmax:=x[1,1];
for k:=1 to n do
for p:=1 to m do
if x[k,p]>Xmax then Xmax:=x[k,p];
End;
Begin
TextColor (blue);
TextBackground (lightgray);
ClrScr;
GotoXY (21,2);
Writeln ('ПОШУК МАКСИМУМУ МАТРИЦI');
Window (1,3,80,25);
for I:= 1 to n do
for J:= 1 to m do
begin
GotoXY (21,2);
TextColor (red);
Write ('Введiть елемент матрицi А[',i,',',j,']= ');
TextColor (black);
Read (a[i,j]);
ClrScr;
end;
Max (A,Amax);
GotoXY (21,2);
TextColor (red);
Write ('Максимум= ',Amax:9:2);
Repeat Until KeyPressed;
End.
1.4. Текстовий режим екрана включено за згодою. Він призначений для виводу символів кодової таблиці ASCII. Найчастіше екран умовно розбивається на 25 рядків та 80 стовпців із координатою верхнього лівого кута (1,1) та нижнього правого (80,25)
1.5. За допомогою текстових вікон здійснюється вивід інформації не на весь екран, а тільки в область вікна. Для роботи з текстовими вікнами необхідно підключити бібліотеку CRT командою
Uses CRT;
За допомогою оператора
Window (x1,y1,x2,y2);
відкривається текстове вікно з координатою верхнього лівого кута x1,y1 та нижнього правого x2,y2, наприклад,
Window (10,5,45,15);
Після відкриття вікна його контур є невидимим, а фон співпадає з фоном екрана. Може бути відкрито декілька вікон, проте тільки останнє вікно є поточне і відносно його верхнього лівого кута працюють всі команди роботи з екраном: вивід інформації, очистка, зміна кольору символів і фону тощо.
Для відновлення повного екрану потрібно задати вікно на весь екран
Window (1,1,80,25);
1.6. При роботі в текстовому режимі кожен символ на екрані може мати 16 кольорів, а фон під ним – 8. Колір змінюється тільки після виконання у програмі команд виводу Write, Writeln.
Колір символу задається командою бібліотеки CRT
TextColor ( <колір символу> );
а колір фону – командою
TextBackGround ( <колір фону> );
Кольори можна задавати цифрами або відповідними англомовними словами згідно табл. 1.1. За згодою встановлено білий колір символів на чорному фоні.
Колір символу або фону | Колір тільки символу | ||
Значення | Назва | Значення | Назва |
Black (чорний) | DarckGray (темносірий) | ||
Blue (синій) | LightBlue (світлосиній) | ||
Green (зелений) | LightGreen (світлозелений) | ||
Cian (бірюзовий) | LightCian (світлобірюзовий) | ||
Red (червоний) | LightRed (світлочервоний) | ||
Magenta (малиновий) | LightMagenta (світло малиновий) | ||
Brown (коричневий) | Yellow (жовтий) | ||
LightGray (світлосірий) | White (білий) |
Наприклад, жовтий колір символів задається командою
TextColor (yellow);
або
TextColor (14);
Для зміни фону всього екрану, а не фону символу, задається колір фону, а потім здійснюється очистка екрану. Наприклад, встановлення синього фону екрану реалізується наступними командами
TextBackGround (blue);
ClrScr;
Мерехтіння символів задається за допомогою константи blink, що має значення 128, шляхом додавання до кольору символу, наприклад
TextColor (red+blink);
Write ('Mерехтіння червоних символів');
Мерехтіння відбувається до тих пір, поки не буде задано новий колір символів без мерехтіння.
Приклад 3. Створити меню програми, яке виводиться в окреме вікно з тінню. Меню вміщує три пункти, в тому числі для виходу з програми.
Program Menu;
Uses Crt;
Const
K= 3;
NameRegime: array[1..K] of string[50]=
(' 1 – Перша програма меню ',
' 2 – Друга програма меню ',
' 3 - Вихід ');
Var
J:integer;
I:Char;
Procedure Windows (X1, Y1, X2, Y2:integer);
Begin
TextBackGround (blue);
ClrSCr;
Window (X1+2, Y1+1, X2+2, Y2+1);
TextBackGround (black);
ClrScr;
Window (X1, Y1, X2, Y2);
TextBackGround (red);
ClrScr;
end;
Procedure Menu1;
Begin
Window (1,1,80,25);
ClrScr;
GotoXY (25, 13);
writeln ('Це - перша програма меню');
repeat until KeyPressed;
End;
Procedure Menu2;
Begin
Window (1,1,80,25);
ClrScr;
GotoXY (25, 13);
writeln ('Це - друга програма меню');
repeat until KeyPressed;
End;
BEGIN
while True do
begin
Windows (20, 7, 60, 17);
GotoXY (15, 3);
Write ('ГОЛОВНЕ МЕНЮ');
for J:= 1 to K do
begin
GotoXY (9,4+J);
write (NameRegime[J])
end;
repeat
I:= ReadKey;
until ((I='1')or(I='2')or(I='3'));
Case I of
'1': Menu1;
'2': Menu2;
'3': begin
ClrScr;
TextMode (LastMode);
Halt
end;
end;
end;
END.
2. ЗАВДАННЯ НА РОБОТУ
Розробити та запустити у роботу програму на мові програмування "Паскаль", яка вирішує задачу відповідно до заданого нижче варіанта. При цьому детально вивчити та практично застосувати пункти меню Windows, Debug інтегрованого середовища мови.
2.1. Знайти добуток найбільших елементів рядків матриці С7х3. Знаходження найбільших елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор найбільших елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.2. Знайти найбільшу суму елементів рядків матриці А5х3. Знаходження сум оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор сум. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.3. Знайти добуток найменших елементів стовпців матриці В3х5. Знаходження найменших елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор найменших елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.4. Знайти найменший добуток елементів стовпців матриці С3х7. Знаходження добутків елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор добутків елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.5. Знайти суму найбільших елементів рядків матриці А4х4. Знаходження найбільших елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор найбільших елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.6. Знайти найменшу суму елементів стовпців матриці В4х5. Знаходження сум оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор сум. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.7. Знайти добуток найбільших елементів рядків матриці С5х3. Знаходження найбільших елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор найбільших елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.8. Знайти найбільший добуток елементів рядків матриці А6х3. Знаходження добутків елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор добутків. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.9. Знайти суму найменших елементів стовпців матриці В3х7. Знаходження найменших елементів оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор найменших елементів. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
2.10. Знайти найбільшу суму елементів рядків матриці С5х4. Знаходження сум оформити у вигляді процедури з параметрами, в яку передається матриця, а повертається вектор сум. Програму реалізувати за допомогою меню з чотирма пунктами: увід даних, обчислення, результат, вихід.
3. КОНТРОЛЬНІ ЗАПИТАННЯ
3.1. Що таке підпрограма.
3.2. Які види підпрограм реалізує мова “Паскаль”.
3.3. Що таке формальні та фактичні параметри підпрограм.
3.4. В чому відмінність між підпрограмою-функцією та процедурою.
3.5. Як позначаються параметри-змінні у процедурі.
3.6. Як викликаються підпрограми у основній програмі.
3.7. Яка вимога до імені підпрограми-функції.
3.8. Для чого призначено текстовий режим роботи екрана.
3.9. Чому найчастіше дорівнює роздільність екрана в текстовому режимі.
3.10. Як відкрити текстове вікно.
3.11. Відносно якої координати вікна здійснюються команди виводу інформації.
3.12. Як відновити повний розмір екрана.
3.13. Як змінити колір символу та фону.
Комп'ютерний практикум № 5
ТЕКСТОВІ ТА ТИПІЗОВАНІ ФАЙЛИ МОВИ "ПАСКАЛЬ"
Мета практикуму – розробка програмного забезпечення на мові програмування "Паскаль" з використанням засобів запису та читання інформації з файлів різного типу, а також детальне вивчення та практичне застосування пункту меню Options інтегрованого середовища мови.
1. ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1. За допомогою команд мови "Паскаль" інформацію з файлів можна вводити у програму, а результати роботи програми записувати у файли. У файлi є невидимий вказiвник файлу, як курсор на екранi, який при вiдкриттi файлу встановлюється на початок файлу. При виконаннi операцiй читання та запису вказiвник перемiщується праворуч в рядку та з рядка на рядок. В кiнцi кожного рядка є невидимий маркер кiнця рядка, а в кiнцi файлу - маркер кiнця файлу.
В Паскалі визначено три класи файлiв: текстовi, типізовані та нетипізованi.
1.2. Робота з текстовими та типізованими файлами виконується в наступній послiдовності:
1) В роздiлi Var описуються файлові змiнні, за допомогою яких буде здiйснюватися доступ до файлiв;
2) У виконавчому блоцi за допомогою команди Assign встановлюється зв'язок мiж конкретною файловою змiнною та конкретним файлом. Це означає, що звернення до файлу буде здійснюється не за його іменем, а за іменем файлової змінної;
3) За допомогою команди Reset чи Rewrite зв'язаний файл відкривається для читання чи запису. Одночасно в програмi може бути вiдкрито декiлька файлiв;
4) Здiйснюється запис або читання інформації командами Write чи Read;
5) Після завершення роботи з файлом він обов'язково закривається командою Close, інакше данi у файлi можуть бути втраченi.
1.3. Текстовi файли є найбiльш унiверсальними. Iнформацiя у них представляється у виглядi символiв кодової таблицi ASCII, тому файл може вмiщувати дані будь-якого типу. Проте дані різного типу мають і різний розмір у байтах й одже текстовий файл дозволяє тільки послiдовний доступ до них.
Файлова змiнна, ім'я якої вільно вибирає програміст, має тип text. Наприклад, файлова зміна з іменем f1 описується наступним чином
Var
f1: text;
Команда встановлення зв'язку, наприклад, між файловою змінною f1 та файлом Data.pas, має наступний формат
Assign (f1, ’E:\EP21\Data.pas’);
Iм'я файлу має рядковий тип, тому записується в апострофах. Воно може бути повним, тобто із вказуванням диску та шляху, як у наведеному прикладі, або скороченим – тільки безпосередньо iм'я, наприклад
Assign (f1, ’Data.pas’);
В останньому випадку програма шукатиме файл Data.pas в поточному каталозi.
За допомогою команди
Reset (f1);
вiдкривається iснуючий файл, в даному випадку Data.pas, для читання.
Команда
Rewrite (f1);
створює новий файл Data.pas й відкриває його для запису. Якщо файл із ім’ям Data.pas вже iснує, то його вмiст знищується.
Інколи необхідно дописати інформацію в кінець існуючого файлу, наприклад, файлу Data.pas. В цьому випадку файл відкривається не командами Reset чи Rewrite, а командою
Append (f1);
Читання інформації з файлів здійснюється тими ж командами, що і для клавіатури Read чи Readln, проте перед списком даних вказується файлова змінна, тобто вказується з якого файлу читати дані. Наприклад, значення змінних А та В читаються з файлу Data.pas наступним чином
Read (f1, А,В);
Для запису iнформацiї в файл використовуються тіж самі команди, що і для виводу інформації на екран Write чи Writeln, проте перед даними вказується файлова змінна. Наприклад, у файл Data.pas записуються значення змінних С та D
Write (f1, C,D);
Аналогічно до екрана вільний рядок у файлі створюється командою
Writeln (f1);
Закриття файлу здійснюється командою
Close (f1);
1.4. Типізованi файли вміщують дані тільки одного типу, наприклад, тільки дійсні числа, тому всі елементи мають однаковий розмір у байтах. Це дозволяє, крім послідовного доступу, як у текстових файлах, організувати ще і прямий доступ до конкретного елементу.
Файлова змiнна, ім'я якої вільно вибирає програміст, описується із вказуванням типу даних елементів файлу. Наприклад, опис файлової змінної з іменем f2 для файлуз цілочисленими елементами типу integer має наступний вигляд
Var
f2: file of integer;
Команда встановлення зв'язку, наприклад, між файловою змінною f2 та файлом Inputa.out записується як і для текстового файлу
Assign (f2, ’E:\EP22\Inputa.out’);
За допомогою команди
Reset (f2);