Алгоритми вибору case мовою програмування Pascal
Згадаємо, що вся програма мовою програмування розбита на певні розділи. Бажано зберігати таку послідовність розташування розділів, хоча з досвідом ви побачите, що деякі з них можна міняти місцями. Першим рядком зі службовим словом program можна знехтувати.
Умовно цю структуру можна поділити на 2 частини - описову й виконувану.
Описова частина (program, uses, label, const, type, var) містить інформацію про те, які константи, мітки, змінні використовуватимуться в програмі. Саме за змістом цієї частини всім вказаним змінним відводиться місце в пам’яті комп’ютера за типами і послідовністю, в якій вони вказані в програмі.
Виконувана частина містить опис процедур, функцій та основний блок програми, який ще називається тілом програми і розташований між службовими словами begin і end.
Завершується Pascal-програма завжди символом “.”.
Послідовність представлення алгоритму у вигляді Pascal-програми має певну закономірність:
Program<ім’япрограми>;
Uses <розділ опису бібліотек (модулів), що підключаються>;
Label <розділ опису міток>;
Const <розділ опису констант>;·
Type <розділ опису типів>;·
Var <розділ опису змінних>;
procedure або function <розділ опису процедур або функцій>;
Begin
<розділ операторів>;
End.
Приклад:
Програма мовою Turbo Pascal
PROGRAM Syma; Var d1, d2, sym : integer; BEGIN sym : =d1+d2; END. | · Назву писати кирилицею не можна · Описуємо змінні без поділу на аргументи і результати · Оформляємо з відступами (для зручності) · У кінці кожної лексеми (рядка) ставимо “;” · Описуємо формулу · Turbo Pascal не розрізняє великі й малі букви |
Примітка. BEGIN і END пишемо великими, щоб чітко бачити початок і кінець програми. У серйозних програмах будуть вкладені begin і end, до того ж не одні. Потрібно слідкувати, щоб кількість begin співпадала з кількістю end (за невеличкими винятками).
**************************
Загальна форма запису алгоритму вибору:
case <селектор (логічний вираз, математичний вираз, змінна)> of
case <селектор (логічний вираз, математичний вираз, змінна)> of
значення1 : оператор;
значення2 : оператор;
. . . . . . . . . .
значенняN : оператор
else оператор;
end;
значення2 : оператор;
. . . . . . . . . .
значенняN : оператор
else оператор;
end;
В
операторі може бути кілька дій, тобто використовуватися begin, end, а може бути
порожній оператор. Значень може бути кілька.
Завдання 1.
З клавіатури
вводиться цифра. Вивести письмову назву цієї цифри.
Розв’язання.
Кодування
мовою програмування Pascal:
program Z1;
var
a : integer;
begin
write('введіть цифру: ');
readln(a);
case a
of
0 : writeln ('ви
ввели нуль.');
1 : writeln ('ви
ввели одиницю.');
2 : writeln ('ви
ввели двійку.');
3 : writeln ('ви
ввели трійку.');
4 : writeln ('ви
ввели четвірку.');
5 : writeln ('ви
ввели пятірку.');
6 : writeln ('ви
ввели шістку.');
7 : writeln ('ви
ввели сімку.');
8 : writeln ('ви
ввели вісімку.');
9 : writeln ('ви
ввели цифру девять.')
else writeln('ви
ввели не цифру.');
end;
end.
Задача
2.
Складіть
програму, яка імітує своєрідний калькулятор, де 1-сума двох чисел, 2-різницю
двох чисел, 3-твір двох чисел, 4-ціла частина від ділення, 5-залишок від
ділення, 6 - квадратний корінь числа, інакше введений невідомий номер операції .
Розв’язання.
Кодування
мовою програмування Pascal:
program Z2;
var
a, b: real;
i, c, d: integer;
begin
writeln('Калькулятор.');
writeln('1 - сума двох чисел;');
writeln('2 - різниця двох чисел;');
writeln('3 - добуток двох чисел;');
writeln('4 - ціла частина від ділення;');
writeln('5 - остача від ділення;');
writeln('6 - квадратний корінь числа.');
write('Введіть цифру: ');
readln(i);
case i of
1:
begin
write('Введіть
три довільні числа: ');
read(a, b, c);
writeln(1*a+1*b+1*c);
end;
2:
begin
write(' Введіть
два довільні числа: ');
read(a, b);
writeln(1*a - 1*b);
end;
3:
begin
write(' Введіть
два довільні числа: ');
read(a, b);
writeln(1*a * b);
end;
4:
begin
write(' Введіть
два довільні числа: ');
read(c, d);
writeln(c
div d);
end;
5:
begin
write(' Введіть
два довільні числа: ');
read(c, d);
writeln(c
mod d);
end;
6:
begin
write('Введіть
число: ');
read(c);
writeln(sqrt(c):4:5);
end;
else writeln('Помилка.');
end;
end.
Завдання для самостійного опрацювання
Задачі Case
1. Дано ціле
число, що визначає оцінку. Вивести опис оцінки (1-3: погано, 4-6: задовільно,
7-9: добре, 10-12: відмінно, інші випадки: помилка)
2. Написати
програму, яка вводить два цілих числа та виводить таке меню:
Введіть номер завдання:
1 – знаходження суми чисел;
2 – знаходження модулю різниці чисел;
3 – знаходження добутку чисел;
1 – знаходження суми чисел;
2 – знаходження модулю різниці чисел;
3 – знаходження добутку чисел;
3. Програма повинна виконати завдання, номер якого буде введено
Написати програму, яка вводить радіус та виводить таке меню:
Введіть номер завдання:
1 – обчислення довжини кола (L=2*3.1415926*R);
2 – обчислення площі круга (S=3.1415926*R*R);
3 – обчислення об’єму сфери(V=(4/3)* 3.1415926*R*R*R).
Програма повинна виконати завдання, номер якого буде введено.
1 – обчислення довжини кола (L=2*3.1415926*R);
2 – обчислення площі круга (S=3.1415926*R*R);
3 – обчислення об’єму сфери(V=(4/3)* 3.1415926*R*R*R).
Програма повинна виконати завдання, номер якого буде введено.
4. Мастям гральних
карт присвоєні номери: 1 — піки, 2 — трефи, 3 — бубни, 4 — черви. Значенням
карт, що старші десятки, присвоєно номери: 11 — валет, 12 — дама, 13 — король,
14 — туз. Дано два цілих числа: N — значення (6 <= N <= 14) та M — масть
карти (1<= M <= 4). Вивести назву карти у вигляді «шістка бубн», «дама
чирв», «туз треф» та ін.
5. Дано ціле число від 280 до 299.
Вивести рядок – письмово запис назви цього числа. Наприклад, 256 – двісті
п’ятдесят шість (11 балів)
Завдання 6. Скласти і
реалізувати алгоритм для знаходження кількості цифр, суми цифр натурального числа,
подільності на цифри, якщо ціле число задане випадковим чином.
Використайте сase для найкращого способу запису даного нижче алгоритму.
program SummaNumer; {назва алгоритму підрахунку суми цифр цілого
числа}
var m, n, i, m1, k, s: integer;
{оголошення
змінних величин: цілі
числа}
begin {початок виконання алгоритму і введення випадкових натуральних чисел}
m:=(10+random(5))*(20+random(7)) *(random(20)) + 1+random(3) ;
writeln( ' Якщо натуральне число m=', m); writeln; m1:=m; k:=0;
s:=0; n:=0;
repeat n:=m mod 10;
k:=k+1; s:=s+n; m:=m div 10; until m=0;
{виконання циклу з післяумовою
для обчислення}
writeln('Сума цифр
числа ', m1, ' дорівнює числу:
', s); writeln;
writeln('Кількість
цифр числа ', m1, ' дорівнює числу:
', n); writeln;
if (m1 mod 2) =0 then writeln(m1, ' - це
парне число '); writeln;
if (m1 mod 2) =1 then writeln(m1, ' - це непарне число '); writeln;
if (s mod 3) =0 then writeln(m1, ' - це число має вигляд 3k, ділиться на 3 націло'); writeln;
if (s mod 3) =1 then writeln(m1, ' - це
число має вигляд 3k+1'); writeln;
if (s mod 3) =2 then writeln(m1, ' - це число
має вигляд 3k+2'); writeln; m:= m1 mod 100;
if (m mod 4) =0 then writeln(m1, ' - це
число має вигляд 4k, ділиться на 4 націло'); writeln;
if (m mod 4) =1 then writeln(m1, ' - це
число має вигляд 4k+1'); writeln;
if (m mod 4) =2 then writeln(m1, ' - це
число має вигляд 4k+2'); writeln;
if (m mod 4) =3 then writeln(m1, ' - це
число має вигляд 4k+3'); writeln; m:= m1 mod 10;
if (m mod 5) =0 then writeln(m1, ' - це
число має вигляд 5k, ділиться на 5 націло'); writeln;
if ( (s mod 3) =0) and ((m mod
2)=0) then writeln(m1, ' - це
число має вигляд 6k, ділиться на 6 націло'); writeln;
if (m mod 7) =0 then writeln(m1, ' - це
число має вигляд 7k, ділиться на 7 націло'); writeln;
m:=m1; m:= m mod 1000;
if (m mod 8) =0 then writeln(m1, ' - це число
має вигляд 8k, ділиться на 8 націло'); writeln;
if (s mod 9) =0 then writeln(m1, ' - це
число має вигляд 9k, ділиться на 9 націло'); writeln;
if (m mod 10) =0 then writeln(m1, ' - це
число має вигляд 10k, ділиться на 10 націло'); writeln;
end. {закінчення алгоритму}
Протестуйте алгоритм чотири рази та
перевірте правильність результатів.
Немає коментарів:
Дописати коментар