Назад
Зміст
Вперед
Приклади найпростіших задач
У лінійних програмах виконуються всі оператори у тому порядку, в якому вони записані.
У програмах з розгалуженням за допомогою операторів
IF та CASE, в залежності від деяких умов, можуть виконуватись не всі оператори, що записані у програмі.
Досить часто у програмах потрібно деяку кількість операторів виконати декілька разів. Для цього використовують оператори циклів. Оператори циклу бувають двох
видів: з параметром (FOR) та з умовою (WHILE, REPEAT). Оператор циклу з параметром використовують, якщо заздалегідь відомо скільки разів потрібно виконувати деякі оператори.
Приклади
- Надрукувати літеру О зірочками.
Щоб надрукувати цю літеру, потрібно спочатку надрукувати п’ять зірочок, це виконує оператор writeln('*****'). Потім потрібно вивести на екран зірочку, три пробіли, зірочку. Це виконує оператор writeln('* *'). Цей оператор потрібно виконати 3 рази. Щоб вказати це, перед оператором writeln('* *') ставиться оператор
for i:=1 to 3 do, який вказує, що змінна i по черзі приймає значення 1, 2, 3. Цих значень три. Тому оператор (його виділено), що стоїть після
do, буде виконуватись три рази. Після цього знов потрібно вивести п’ять зірочок, це виконує оператор
writeln('*****').
Програма | Екран |
var i:byte;
begin
writeln('*****');
for i:=1 to 3 do
writeln('* *');
writeln('*****');
end.
|
*****
* *
* *
* *
*****
|
- Надрукувати ялинку зірочками.
Щоб надрукувати ялинку потрібно надрукувати 3 трикутника.
Малювання одного трикутника:
- два пробіли, зірочка, два пробіли,
writeln(' * ');
- пробіл, три зірочки, пробіл,
writeln(' *** ');
- п’ять зірочок, writeln('*****').
Ці три оператори (їх виділено) потрібно виконати 3 рази. Щоб вказати, що повторювати потрібно не один, а три оператори, їх беруть у операторні дужки: перед першим ставлять
begin, після останнього ставлять end.
Програма | Екран |
var i:byte;
begin
for i:=1 to 3 do
begin
writeln(' * ');
writeln(' *** ');
writeln('*****'); end;
end.
|
*
***
*****
*
***
*****
*
***
*****
|
- Надрукуйте число 20 у стовпчик 5 раз.
Щоб вивести на екран число 20 використовують оператор writeln(20). Щоб зробити це 5 раз, перед цим оператором ставлять оператор циклу for i:=1 to 5.
Програма | Екран |
var i:byte;
begin
for i:=1 to 5 do writeln(20);
end.
|
20
20
20
20
20
|
- Дано цілі числа K и N (N > 0). Вивести
N раз число K.
Дано числа K и N. Потрібно спочатку ввести значення ці змінні за допомогою оператору
read(n, k).
Щоб вивести на екран число K, використовують оператор
writeln(K). Щоб зробити це N раз, перед цим оператором ставлять оператор циклу
for i:=1 to N.
Програма | Екран |
Ввід | Вивід |
var i,n,k:byte;
begin
read(n,k);
for i:=1 to n do
writeln(k);
end.
| 5 6
|
6
6
6
6
6
|
- Надрукуйте в рядок всі натуральні числа n<=20 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
У попередніх задачах змінна i використовувалась тільки для того, щоб вказати програмі, скільки разів буде повторюватись оператор або оператори. На екран значення цієї змінної ми не виводили. Але ми знаємо, що ця змінна по черзі приймає цілі значення від першого числа до останнього включно. Цей
факт можна використати в цій програмі,
якщо оператор, що повторюється, буде виводити значення цієї змінної через пробіл:
write(i,' '). Щоб ця змінна приймала значення від 1 до 20 та цей оператор виконувався 20 разів, потрібно перед ним поставити оператор циклу
for i:=1 to 20 do.
Програма | Екран |
var i:byte;
begin
for i:=1 to 20 do
write(i,' ');
end.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
- Надрукуйте в стовпчик всі натуральні числа
300<=n<=310.
Змінна i (може бути будь-яке інше ім’я), яка називається параметром циклу, може приймати значення не тільки від 1 до якогось числа, але
й від будь-якого другого цілого числа. Оператор, який повторюється, буде виконуватись стільки разів, скільки різних значень прийме параметр циклу (і). Для змінної
i обрано тип integer, тому що значення 300, ... не відповідають типу byte.
Програма | Екран |
var i:integer;
begin
for i:=300 to 310 do
writeln (i,' ');
end.
|
300
301
302
303
304
305
306
307
308
309
310
|
- Надрукуйте в рядок всі натуральні двохзначні числа.
Натуральні двохзначні числа - це 10, 11, 12, ...98, 99.
Тому програма проста.
Програма | Екран |
var i:byte;
begin
for i:=10 to 99 do
write(i,' ');
end.
|
10 11 12 13 14...
не будемо писати всі числа
... 95 96 97 98 99
|
- Надрукувати всі цілі числа з інтервалу [a,
b].
У цій програмі спочатку потрібно ввести значення a, b з клавіатури за допомогою оператору
read(a, b), а потім все як у попередній програмі.
Програма | Екран |
Ввід | Вивід |
ar i,a,b:integer;
begin
read(a,b);
for i:=a to b do
writeln(i);
end. | 10 16 |
10
11
12
13
14
15
16
|
- Надрукуйте в зворотному порядку всі натуральні числа
n<=20 :
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
У попередніх програмах ми використовували оператор for, в якому параметр циклу
i збільшується від першого числа до другого включно. Але існує оператор, у якому параметр зменшується. У цій програмі змінна приймає всі цілі значення від 20 до 1 включно.
Програма | Екран |
var i:byte;
begin
for i:=20 downto 1 do
write(i,' ');
end.
| 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
|
- Надрукувати перші 10 натуральних чисел та знайти їх суму.
Для того, щоб надрукувати перші 10 натуральних чисел, використовується оператор
write(i,' '). Щоб цей оператор виконувався 10 разів та щоб параметр циклу
i приймав значення від 1 до 10, потрібно перед
ним поставити оператор циклу for i:=1 to 10 do. Оператор накопичення суми
s:=s+i теж потрібно виконувати 10 разів для різних значень
i. Тобто 10 разів потрібно виконувати два оператори. Тому їх беруть у операторні дужки: перед першим оператором
begin після другого end. Початкове значення суми s:=0 потрібно присвоїти до початку циклу. Після виводу всіх чисел та накопичення суми, її потрібно вивести на екран оператором
writeln(s). Дуже важливо, щоб цей оператор стояв у програмі після циклу (після
end), тому що надрукувати суму потрібно один раз. У прикладі 55 – сума перших 10 чисел.
Програма | Екран |
var i,s:integer;
begin
s:=0;
for i:=1 to 10 do
begin
write(i,' ');
s:=s+i;
end;
writeln(s);
end.
|
1 2 3 4 5 6 7 8 9 10 55
|
- Дано дійсне a та натуральне
n. Обчисліть an=a*a*…a.
У Паскалі немає функції піднесення до степеня. Тому будемо заміняти його множенням. Формула знаходження добутку:
p:=1; p:=p*число. Ми знаходимо an, тому число=a і формула буде мати вигляд:
p:=p*a. Ми знаходимо an, тому оператор p:=p*a потрібно виконати
n раз. Для цього використовуємо оператор циклу for i:=1 to n. Початкове значення
p:=1 присвоюється перед циклом. Значення a, n вводяться з клавіатури оператором
read. Типи змінних: n, i – натуральні, a
– дійсне, тому p - теж дійсне.
Програма | Екран |
Ввід | Вивід |
var i,n:integer;a,p:real;
begin
read(a,n); p:=1;
for i:=1 to n do p:=p*a;
writeln(p:1:1);
end.
|
3 4
|
81.0
|
- Дано натуральне n. Обчисліть значення
n!=1*2*3*…*n (читається n факторіал).
Для обчислення факторіалу, як і у попередній програмі, використовується операція множення. Але у попередній програмі виконувалось множення на одне і теж саме число
a. Для знаходження факторіалу спочатку потрібно помножити на 2, потім результат на 3, потім результат на 4 і т.д. Тобто у формулі
p:=1; p:=p*число, число повинно змінюватись від 2 до n. У якості цього числа зручно використовувати параметр циклу
for i:=2 to n do. Тоді оператор, який повторюється p:=p*i. Типи змінних:
n, i – натуральні, p – дійсне, тому що значення факторіалу дуже швидко зростає.
Програма | Екран |
Ввід | Вивід |
var i,n:integer;p:real;
begin
read(n); p:=1;
for i:=2 to n do p:=p*i;
writeln(p:1:0);
end.
|
10
|
3628800
|
Назад
Зміст
Вперед