end
else <оператор 2>;
Наведений приклад є типовим для пояснення, що операторні дужки потрібні не тільки у випадках, коли кілька простих операторів треба оформити як єдиний блок.
Не забувайте також слідкувати за відповідністю операторів (за номерами) гілкам блок-схеми.
1. Вкажіть неправильно записані операції відношення, якщо діє наступний опис var a, b,c:integer;
а) a+1=<b потрібно замість складеного символу «=<» написати «<=»
б) a>=b правильно
в) a<b+c правильно
г) a>b=c помилка несумісності типів
д) a<<b символ «<<» не є символом порівняння
е) a>b>c подвійна нерівність записується так (a>b) and (b>c)
2. Вкажіть правильно записані логічні вирази, якщо A, B, C – змінні логічного типу:
Примітка: оскільки усі змінні є змінними логічного типу, з ними можна виконувати будь-які логічні операції. Крім операції not, яка являється унарною операцією, всі інші є бінарними, а тому помилками є тільки відсутність операнда у бінарній операції (зліва або справа) або відсутність операнда праворуч від унарної операції.
а) A
б) not or B відсутній операнд праворуч від унарної операції not
в) A and B
г) A and not B
д) A and B and C
е) and A and B відсутній операнд ліворуч від бінарної операції and
ж) A or B or відсутній операнд праворуч від бінарної операції or
3. Вкажіть неправильно сформовані логічні вирази, якщо діє такий опис var a, b,c:integer; d:boolean;
а) a=b=c подвійна рівність записується так (a=b) and (b=c)
б) not d and(b>c)
в) ord(a>b) результатом функції ord() є не логічне значення, а числове
г) a=b or a=c складена умова повинна містити прості умови у круглих дужках (a=b) or (a=c)
д) d and not(a+b>c)
е) d and(not a=c) цей вираз хоч і здається помилковим, насправді є правильним, оскільки з цілими числами дозволяється виконувати логічні операції, результатом яких буде інше число, тобто not a – це число, яке порівнюється з іншим числом с.
4. Якщо значення змінної a дійсного типу не менше від 1, то потрібно подвоїти значення цієї змінної. Вкажіть правильно сформовані записи:
а) if not(a<1) then a:=a*2;
б) if a>1 then a:=2*a;
в) if a>=1 then a:=2*a;
г) if a>=1 then a:=a+2;
д) if(a>1)or(a=1) then a:=a*2;
е) if a<1 then else a:=2*a;
Пояснення. Усі виділені відповіді є правильними, оскільки в них або умова написана по-різному (a>=1) рівнозначно (a>1) or (a=1), що в свою чергу може бути записане, як not(a<1)), або змінені місцями гілки then та else.
5. При виконанні таких дій
a:=–0.5;
if a>0
then if a<1 then writeln(–a)
else writeln(a);
на екрані монітора буде виведено число
а) –0.5; б) 0.5; в) не буде виведене нічого.
Пояснення. Оскільки при заданому значенні змінної a логічний вираз першого умовного оператора буде мати значення false (хибність), жоден з інших операторів не буде виконаний, а тому екран залигиться порожнім.
6. Вкажіть істинне відношення при виконанні умови – «натуральне число k не кратне 5»:
а) k mod 5 = 0;
б) k mod 5 <> 0;
в) k mod 5 < 1;
г) not(k mod 5 = 0);
д) k mod 5 > 0
е) k div 5 = 0;
ж) not (k mod 5 <> 0);
з) k div 5 = 1;
Пояснення. Якщо натуральне число k не є кратним деякому іншому числу p, то залишок від ділення числа k на число p не буде нульовим. А оскільки обидва числа натуральні, він не може бути і від’ємним. Звідси випливає вибір правильних відповідей.
7. Якою буде умова Sqr(2*X)<5*Y – 2 при X = 2, Y = 4?
а) істиною
б) хибною
Пояснення. Достатньо порахувати значення логічного виразу:
, отримаємо нерівність 4<18. Відповідь очевидна.
8. Вкажіть логічний вираз, еквівалентний виразу „x¹max(x, y,z)”:
а) (x<y) and (x<z);
б) (y>x)and(y>=z) or (z>x)and(z>=y);
в) (x<y)or(x<z);
г) (x<y)and(x>z);
д) (x<z)and(x>y);
е) (x>z)and(x<y);
Пояснення. В кожному із записів Х дійсно не є максимальним значенням.
9. При яких значеннях a і b умова –2*a<=–b/2 буде істинна:
a) a=2, b=5 -2*2<-5/2; -4<2.5 істина
б) a=1, b=4 -2*1=-4/2; -2<=-2 істина
в) a=-2, b=2 -2*(-2)<=-2/2; 4<=-1 хибна
г) a=-5, b=-20 -2*(-5)<=-(-20)/2; 10<=10 істина
10. За допомогою дужок вкажіть порядок виконання дій при обчисленні логічного виразу a or not b and c and d
а) (a or not b) and (c and d)
б) (a or (((not b) and c) and d))
в) a or ((not b and c) and d)
г) a or (not b and (c and d))
Пояснення. При розв’язанні потрібно враховувати пріоритет виконання операцій у виразах. Оскільки найвищий пріоритет має унарна операція not, беремо в дужки (not b), наступними будуть виконані операції and в порядку їх слідування, тобто ((not b) and c), потім (((not b) and c) and d)і нарешті операція or. Тобто остаточна відповідь: (a or (((not b) and c) and d)).
Розглянемо тепер кілька простих задач з використанням команди розгалуження.
Задача 1. Фактично ця задача у самому формулюванні має алгоритм її розв’язання. При записі її мовою програмування потрібно просто записати у формалізованому вигляді саму умову задачі.
Умова задачі. Задано значення дійсних чисел a, b, с. Подвоїти ці значення, якщо
, і замінити їх абсолютним значенням, якщо це не так.
Розв’язок задачі:
1. Нагадуємо, що кожна програма починається з опису необхідних для розв’язання задачі даних. В умові даної задачі записано, що потрібні три змінних дійсного типу для збереження трьох чисел.
2. Значення описаним змінним, як було зазначено раніше, можна надати за допомогою команди присвоєння або шляхом уведення цих значень з клавіатури. Другий метод є оптимальнішим, оскільки дозволяє при кожному запуску програми увести різні значення і перевірити правильність розв’язку для різних вхідних значень. Уведення даних виконується командою readln, перед якою записується команда writeln, що дозволяє вивести на екран повідомлення для користувача програми, введення яких саме даних очікує система.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


