вівторок, 2 червня 2020 р.

Алгоритми вибору case мовою програмування Pascal


Алгоритми вибору  case мовою програмування Pascal


Згадаємо, що вся програма мовою програмування розбита на певні розділи. Бажано зберігати таку послідовність розташування розділів, хоча з досвідом ви побачите, що деякі з них можна міняти місцями. Першим рядком зі службовим словом program можна знехтувати.
Умовно цю структуру можна поділити на 2 частини - описову й виконувану.
Описова частина (programuseslabelconsttypevar) містить інформацію про те, які константи, мітки, змінні використовуватимуться в програмі. Саме за змістом цієї частини всім вказаним змінним відводиться місце в пам’яті комп’ютера за типами і послідовністю, в якій вони вказані в програмі.
Виконувана частина містить опис процедур, функцій та основний блок програми, який ще називається тілом програми і розташований між службовими словами 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
значення1 : оператор;
значення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*- 1*b);
      end;
    3:
      begin
        write(' Введіть два довільні числа: ');
        read(a, b);
        writeln(1** 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 – знаходження добутку чисел;

3. Програма повинна виконати завдання, номер якого буде введено
Написати програму, яка вводить радіус та виводить таке меню:
Введіть номер завдання:
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.   {закінчення алгоритму}

Протестуйте алгоритм  чотири рази та перевірте правильність результатів.

Немає коментарів:

Дописати коментар