- •Кафедра прикладної математики
- •Методичні вказівки та завдання для виконання контрольної роботи з дисципліни “Основи інформаційних технологій та програмування”
- •Методичні вказівки
- •Найпростіші програми на мові Pascal. Структура Pascal-програми
- •Оператори введення та виведення даних
- •Оператор присвоєння
- •Приклади програм:
- •Оператор розгалуження If. Оператор вибору Case.
- •Оператор вибору Case
- •Стандартні типи даних
- •Цілі типи даних
- •Дійсні типи даних
- •Символьний тип Char
- •Логічний тип Boolean
- •Приклади програм
- •Циклічні алгоритми.
- •Оператор циклу For.
- •Оператор циклу while.
- •Оператор циклу repeat - until
- •Організація циклів за допомогою оператора безумовного переходу goto
- •Приклади програм:
- •Приклад3. В цьому прикладі розглянемо задачу обчислення мінімального елементу масиву та його місцезнаходження.
- •Матриця в дійсних чисел розмірності 4*4, заповнена значеннями
- •Процедури та функції у мові Pascal.
- •Процедури без параметрів
- •Const{опис локальних констант}
- •Var {опис локальних змінних}
- •Процедури з параметрами
- •Функції в мові Pascal
- •Приклади програм
Організація циклів за допомогою оператора безумовного переходу goto
Оператор безумовного переходу goto дозволяє перейти на виконання іншого оператора (поміченого міткою) замість послідовного виконання команд. Синтаксис оператора безумовного переходу такий:
goto <мітка>;
Один із операторів програми повинен бути помічений вказаною міткою, а мітка обов'язково описана в розділі Label програми. Як організувати цикл за допомогою оператора goto, розглянемо на наступному прикладі:
Program Example1; {малює на екрані 10 символів '*'//**********}
Label L1; {описана мітка L1 в розділі Label}
Var i: Integer;
Begin
i:=0;
L1:write('*'); {рядок помічений міткою L1}
i:=i+1; {збільшуємо i на 1}
if i<10 then goto L1;{якщо i<10, то переходимо на
помічений міткою рядок}
End.
Будь-який циклічний процес можна запрограмувати без використання міток, за допомогою операторів циклу for, while та repeat-until.
Приклади програм:
Прикдад 6: Обчислити значення , x - дійсне, n - ціле. Врахувати випадок від'ємного n.
Program pr6;
Var
x, p: Real;
i, n: Integer;
Begin
Readln(n);
p:=1;
if n<0 then begin x:=1/x; n:=-n; end;
for i:=1 to n do
p:=p*x;
Writeln('Значення х^n = ', p);
End.
Приклад 7: Знайти суму всіх парних натуральних чисел, що не перевищують деякого n і не діляться на 13.
Program pr7;
Var i, n, S: Integer;
Begin
Writeln('Введіть n');
Readln(n);
S:=0; i:=2;
while i<=n do
begin
if (i mod 13 <> 0) then S:=S+i; {додаємо до змінної S лише ті числа i, для яких остача від ділення на 13 відмінна від нуля}
i:=i+2; {збільшуєм на 2, так як потрібно переглянути лише парні числа}
end;
Writeln('Значення суми = ', S);
End.
Приклад 8: Написати програму для вгадування числа від 1 до 100 задуманого програмою за допомогою генератора випадкових чисел Random. Функція Random(n) – повертає випадкове число від 0 до n-1.
Program pr8;
Uses crt;{підключаємо модуль crt, для використання функції random}
Var
x, y: Byte;
Begin
Randomize;{для того, щоб значення random не повторювались при новому запуску програми}
x:=Random(100)+1;{повертає число від 1 до 100}
repeat
Writeln('Введіть число');
Readln(y);
If x<y then Writeln(‘Задумане число менше !’) else
If x>y then Writeln(‘Задумане число більше !’);
Until x=y;
Writeln(‘Ви відгадали !’);
End.
Масиви даних
Масивом називається впорядкована скінченна послідовність однотипних даних, які називаються елементами масиву. Тип даних може бути довільним. Порядок елементів в масиві задається набором індексів-чисел, які однозначно визначають місце елемента в масиві та забезпечують прямий доступ до його елементів. Масив характеризується іменем, типом даних, які його утворюють, вимірністю (кількістю індексів) та максимальним значенням кожного індекса. За вимірнісю розрізняють одновимірні (один індекс), двовимірні (два індекси) масиви і т.д.
Для звертання до масиву досить вказати його ім’я, для доступу до його елемента вказують ім’я масиву та, у квадратних дужках, через кому, значення відповідних індексів даного елемента. Наприклад, B[1]-перший елемент масиву B, Y1[i]- i-й елемент масиву Y1, SS[5,2]-елемент двовимірного масиву SS, який стоїть на перетині п’ятого рядка та другого стовпчика.
Будь-який масив, що використовується в програмі, повинен бути описаним в розділі описів прграми.При цьому вказується тип масиву та межі зміни його індексів. Опис має вигляд
<ім´я масиву>: Array [список індексів] of <тип масиву>
Одновимірні масиви
Приклади опису одновимірних масивів змінних:
Var
A, B: array [1..10] of Real;
{A, B-одновимірні масиви дійсних чисел}
N: array [1..10] of Integer;
{N-одновимірний масив цілих чисел}
P: array [1..10] of String [15];
{P-одновимірний масив рядкових змінних}
Приклади опису одновимірних масивів констант:
Const
X: array [1..10] of real=(1.2,-4.5,0.8,9.1,0.1,-6.4,3.9,-7.6,1.4,3.6);
P: array [1..10] of String [15]=(‘Комаров’,’Степанчук’,…);
Введення значень елементів одновимірного масиву зручно робити так:
For i:=1 no 10 do
Readln(A[i]);
або з підказкою:
For i:=1 no 10 do
Begin
Write(‘Введіть A’,i:1,’=’);
Readln(A[i]);
End;
При цьому оператор Write виконує допоміжну роль, виводячи на екран пояснюючий текст. Надання значень елементам масиву можна здійснювати, використовуючи типізовані константи або шляхом присвоєння.
Виведення на екран значень елементів масиву змінних можна виконати так:
For i:=1 to 10 do
Writeln(‘A’,i:1,’=’,A[i]:8:2);
Тепер розглянемо приклади використання масивів при розв’ язку задач.
Приклад 1. Протабулювати функцію в нерівновіддалених точках.
Так як точки нерівновіддалені, то їх абсциси можуть бути задані масивом
. Тоді програма обчислення значень функції при відомих може мати наступну структуру:
Program tabul;
Const n=10;
Var
X:array[1..n] of real;
Y:real;
i:integer;
Begin
{Введення елементів масиву Х}
for i:=1 to n do
readln(x[i]);
{Обчислення значень функції}
for i:=1 to n do
begin
y:=x[i]+sin(abs(x[i]));
writeln(y:10:2,x[i]:6:2)
end;
End.
Приклад 2. Нехай в одновимірному масиві { }потрібно обчислити суму додатніх і суму від´ємних елементів масиву. Враховуючи, що нульовий елемент суми не змінює, програма розв´язку даної задачі матиме наступний вигляд:
Program sum;
Const n=20;
Var
X:array[1..n] of real;
sd,sv:real;
i:integer;
Begin
{Введення елементів масиву Х}
for i:=1 to n do
readln(x[i]);
sd:=0; sv:=0;
{Обчислення суми додатніх та від´ємних елементів
масиву x}
for i:=1 to n do
if x[i]>0 then sd:=sd+x[i] else sv:=sv+x[i];
writeln(‘Сума додатніх елементів масиву =’,sd:8:2,
‘Сума від´ємних елементів масиву=’,sv:8:2);
End.