Розв’язання: Припусти, що ми захотіли купити на базарі взуття. Будемо видавати на екран відповідні повідомлення в залежності від діапазону цін продавців.
program bazar;
var sk: integer;
begin
writeln(‘Скiльки коштують цi дирявi валяночки? ’);
readln(sk);
case sk of
1..10: writeln(‘Мабуть куплю, якщо не знайду дешевшi.’);
11..50: writeln(‘Трохи дорогувато!’);
51..100: writeln(‘Вони що у вас, золотi?’)
else writeln('Мабуть менi почулось!');
end; { case }
readln
end.
Цей нескладний приклад ми привели лише для того, щоб показати використання діапазонів значень при організації вибору. Слід наголосити, що змінні в діапазонах повинні обов’язково бути перераховуваних типів, крім того значення змінної не може перевищувати тип word. Саме тому допускається використання змінних лише відповідних цілочисельних типів та змінних типу char.
При перевірці значень оператор вибору знайшовши перше значення, що підходить, виконує відповідний блок команд і наступні значення змінної або діапазони не перевіряє. Про це слід обов’язково пам’ятати при застосуванні команди вибору.
З більш складнішими прикладами застосування команди вибору ми познайомимось трохи пізніше.
Організація розгалужень в програмах
При програмній реалізації розгалужень проблем практично не буде, якщо ви детально розібрались з матеріалом попереднього параграфу та запропонованими завданнями. Виникає питання, а що краще використовувати: команду розгалуження, чи команду вибору? Дати відповідь на це запитання рівнозначно вирішенню проблеми – що корисніше: мед чи овочі? Адже і те і інше потрібно для людини, причому в одних випадках перше, а в інших – друге. Більше того, існують такі ситуації коли не буде корисним ні перше, ні друге. Тому все повинно бути в міру, так само як і використання вище згадуваних команд. Для прикладу розглянемо ще одну задачу, яку розв’яжемо як з використанням команди розгалуження, так і з використанням команди вибору. На наш погляд розв’язки рівноцінні, але не найкращі, а який з них вам сподобається більше, то вже справа ваших уподобань.
Задача 59.59. Задано ціле число (не більше 100). Використовуючи лише дію множення піднести дане число до заданого степеня (не більшого 4).
Розв’язання: Спочатку приведемо програмну реалізацію розв’язку даної задачі з використанням команди розгалуження:
program step1;
var n,m,res: longint;
begin
write(‘Введiть цiле числo (не бiльше 100): ’);
readln(n);
write(‘До якого цiлого степеня пiднести (1-4): ’);
readln(m);
if m = 1 then res:= n
else if m = 2 then res:= n*n
else if m =3 then res:= n*n*n
else if m = 4 then res:= n*n*n*n;
writeln(res);
readln;
end.
Приведемо повну реалізацію останньої поставленої задачі з використанням команди вибору.
program step2;
var n,m,res: longint;
begin
write(‘Введiть цiле число (не бiльше 100): ’);
readln(n);
write(‘До якого цiлого степеня пiднести (1-4): ’);
readln(m);
case m of
1: res:= n;
2: res:= n*n;
3: res:= n*n*n;
4: res:= n*n*n*n;
end {case};
writeln(res);
readln;
end.
Вправи та завдання
60.60. Скласти програму знаходження більшого серед: а) двох чисел; б) трьох чисел; в) чотирьох чисел.
61.61. На площині задано трикутник координатами своїх вершин. Знайти найменшу сторону трикутника.
62.62. Точку А задано на площині своїми координатами (X,Y). Знайти номер координатної чверті, якій належить дана точка.
63.63. Дві точки на площині А (X1,Y1)і В(X2,Y2)задано своїми координатами. Перевірити, чи лежать ці точки в одній координатній чверті.
64.64. Дано дійсні додатні числа X, Y, Z. Чи існує трикутник з довжинами сторін X, Y, Z.
65.65. Три точки на площині задано своїми координатами (X 1, Y 1),(X 2, Y 2),(X 3, Y 3). Знайти радіус найменшого кола (з центром в початку координат), якому належать данні точки.
66.66. Дано коло радіусом Rі прямокутник зі сторонами A, B. Визначити, чи поміститься коло в прямокутнику.
67.67. Дано натуральне число N(N < 100), що визначає вік людини в роках. Після цього числа потрібно дописати одне з слів: "рік", "роки" або "років". Наприклад: 1 рік, 23 роки, 97 років.
68.68. Три точки на площині задано координатами A(X 1, Y 1),B(X 2,Y 2),C(X 3, Y 3). Чи належить початок координат трикутнику ABC.
69.69. Заданорозміри прямокутних дверей А, Bта розміри шафи, що має форму прямокутного паралелепіпеда X, Y, Z. Перевірити, чи можна шафу пронести через двері. а) Проносити шафу через двері дозволяється лише так, щоб кожне з її ребер було паралельно або перпендикулярно кожній з сторін дверей. б) Проносити шафу крізь двері можна під кутом.
70.70. На площині в прямокутній системі координат задано три точки Вважаючи, що вони є вершинами деякого прямокутника, знайти координати четвертої вершини.
71.71. На координатній площині задано два прямокутника, сторони яких паралельні координатним вісям. (X 1, Y 1),(X 2, Y 2) – координати діагоналей першого, а(X 3, Y 3),(X 4, Y 4) – другого прямокутника. У випадку, якщо прямокутники мають спільну частину, визначити її площу або вивести повідомлення про те, що прямокутники не перетинаються.
72.72. Чотири точки S, A, B, Cна площині, довільні три з яких не лежать на одній прямій, задані своїми координатами (X 1, Y 1), (X 2, Y 2), (X 3, Y 3), (X 4, Y 4). Розглядаючи фігуру SABC як зображення трикутної піраміди на площині, визначити, які з точок потрібно з’єднати пунктирною лінією.
Організація циклів
Досить часто в реальному житті виникають задачі, які вимагають виконання великої кількості однієї і тієї ж дії, або послідовності дій. Багатократно виконувана послідовність одних і тих самих інструкцій називається циклом. Наведемо приклади циклічних подій в нашому житті: зміна дня і ночі, робочий день школяра або дорослої людини, рух автобусу протягом дня по маршруту і т.д. Взагалі, важко привести приклад, в якому не було б циклів. Навіть читаючи текст цієї книги ви багатократно знаходите однакові символи українського алфавіту, зустрічаєте однакові слова, перегортаєте сторінки і т.п.
Нас будуть цікавити цикли, які використовуються в програмуванні, їх організація, правила використання і способи застосування. В мові Pascal використовують три види циклів:1
n цикл з параметром;
n цикл з передумовою;
n цикл з післяумовою.
Взагалі, якщо висловлюватись науково, то перші два цикли можна було б об’єднати в один – цикл з передумовою, що і зроблено в деяких книгах по програмуванню. Ми не робимо це по тій причині, що вважаємо, що ці цикли є все–таки різними і постараємось вам це довести. Крім того, запропонований вам поділ прийнятий серед більшості програмістів і дає розуміння процесу «машинного мислення».
Третій цикл – цикл з післяумовою часто називають циклом з постумовою, але ми поділяємо думку тієї частини програмістів, які називають його циклом з післяумовою. Чому саме – розберемось при розгляді даного виду циклу.
Розглянемо всі три види циклів на прикладі однієї простої, класичної задачі.