Умовний оператор
Умовний оператор у Pascalдозволяє виконати один чи два оператора, які входять до нього, залежно від значення логічного виразу.
Оператор має вигляд:
if< логічний вираз >then<оператор1 >else< оператор2>;
де if(якщо), then(то), else(інакше) - службові слова;
операторі, оператор2 - прості чи складені оператори мови.
Оператор if- це єдине речення, тому ані перед then, ані перед elseкрапку з комою ставити не можна. Порядок виконання умовного оператора показано на рис.2.2
True(так) ↓False(ні)
Як видно зі схеми, якщо значення логічного виразу дорівнює true, то виконується операторі, якщо логічний вираз - false, то виконується оператор2(оператор 1 пропускається). Далі у кожному разі виконується оператор 3, що стоїть за оператором іf Наприклад, фрагмент програми обчислення функції
ІП X, ЯКЩО X > 0 ех, ЯКЩОХ<0
має вигляд
ifх>0 thenу:=ln(x) elseу:=ехр(х);
Тут логічний вираз - відношення х>0, оператор 1 і оператор2 - оператори присвоєння у:=1п(х) і у:=ехр(х).
Існує скорочена конструкція if(без else):
if<логічний вираз>then<оператор1>;
Порядок виконання цього оператора показано на рис. 2.3.
Якщо логічний вираз набирає значення False, то виконується наступний за ifоператор.
У якості операторів можна використовувати складні оператори. Наприклад (фрагмент програми): ifj:=0 then
beginShowMessage(‘Ділення на нуль’);Result:=0;
end// крапка з комою не ставляться!!!
else Result:=I/j;
True(так) False (ні)
Рисунок 2.3 Схема скороченого оператора умовного переходу
Умовні оператори можуть бути необмежено вкладеними один в одного.
В деяких випадках складно розібратися, у якій послідовності виконуються такі вкладені оператори.Наприклад: ifa>bthen
ifа>е thenс:=1 elseс:=2;
Тут важко зрозуміти, в якому разі виконується оператор С:=2,: коли хибна є умова а>b або коли вона є правдива, але хибна є умова а>е.
У таких випадках чинне є правило: elseналежить до найближчого оператора if.
У даному прикладі частина elseс:=2 належить до найближчого оператора ifа>е then, а не до оператора ifa>bthen.
Треба намагатися запису ваги подібні вкладені оператори максимально наочно, використовуючи відступи із пропусків, уникати заплутаних складових і великого рівня вкладеності.
Треба намагатися запису ваги подібні вкладені оператори максимально наочно, використовуючи відступи із пропусків, уникати заплутаних складових і великого рівня вкладеності.
Приклад. Обчислити значення функції за формулою:
Y = 
Для програмної реалізації цих виразів можна використати конструкцію умовного оператора, оскільки тут умови є альтернативними, тобто взаємно доповнюють і виключають одна одну.
Перший варіант:
ifх> 0 then
ifх>= 1 then y:=sqrt (х)/2
else y:=exp(l/3*ln (x))/3 else y:=exp(l/4*ln(abs(x)))/4;
Другий варіант, простіший, може бути виконано за допомогою логічних операцій і послідовності незалежних умовних операторів:
ifx<=0then y:=exp(1.4*ln(abs(x)))/4;
if (x>0) and (x<l) theny:=exp(l,3*ln(x))/3;
ifx>=ltheny:=sqrt(x)/2;
На відміну від попереднього випадку, тут завдання розв’язано за допомогою трьох умовних операторів, тоді як там використано лише один оператор, але з укладеннями.
Другий варіант е більш переважним з точки зору зручності читання та наочності програми.
2. 4 Оператор вибору варіанта
Оператор вибору варіанта є узагальненням умовного оператора: він дає можливість виконувати один з деяких операторів в залежності від значення певного виразу, що називається селектором.
У загальному вигляді оператор має вигляд:
case <селектор> of
<список-констант-1>: < оператор 1>;
<список-констант-2>: < оператор 2>;
……………………………………………
<список-констант-№>: < оператор N>;
else < оператор N+l> end;
Тут case(у разі), of(із), end(кінець) - службові слова;
<селектор> — вираз будь-якого скалярного типу, окрім дійсного; відповідно з цим і списки констант не можуть мати дійсний тип;
<оператор> - будь-який оператор мови, зокрема складений;
<список констант> - список відокремлених комами можливих значень селектора. Ці константи повинні мати той самий тип, що і селектор, вони називаються позначками варіантів. Позначка варіантів не описується у розділі Label, на неї не можна посилатися в операторі goto.
Оператор варіанта діє у такий спосіб. Якщо значення селектора дорівнює значенню однієї з констант, то виконується оператор, який помічений цією константою (позначкою). Після цього керування передається за межі оператора варіанта.
Якщо значення селектора не збігається з жодною з констант, то виконується оператор N+l. Else- необов’язкова частина. Якщо вона відсутня і значення селектора не збігається з жодною з позначок, то керування передається за межі оператора. На відміну від оператора if, перед elseнеобхідно ставити “;
Наприклад,
casenomer of
2: y:=g;
4: y:=g*x;
6: y:=g*sqrt (abs(X));
end;
Якщо селектор nomerдорівнюватиме 4, то виконається оператор y:=g*x, і управління буде надано операторові, розміщеному після слова End.
У операторі варіанта в якості константи припускається використання списку констант.
Наприклад,
casesof
‘+’, ‘-‘, ‘*’, ‘/’:p:=1;
'а', ‘b’: р:=2;
‘;’: р:=3;
end;
Змінна sмає бути описана у розділі опису як символьна. Якщо значенням sбуде один із символів‘+’, ‘-‘, ‘*’, ‘/’, то змінна р матиме значення 1. Якщозначенням sбуде символ 'а' або 'b', то р набере значення 2. Якщо sприйме значення ‘;’ то р дорівнюватиме 3.
Тип виразу селектора може бути визначено користувачем.
2.5 Приклади розв’язання задач із операторами ifі case
Приклад 1. Визначити приналежність заданого дійсного числа х до одного з двох відрізків: [а,Ь] або [c,d].
Якщо х належить одному з відрізків, то вивести повідомлення “Належить”, у противному разі - “Не належить”.
Пояснення. Виведення у вікно повідомлення реалізовується процедурою ShowMessage або функцією MessageDlg. Процедура ShowMessage виводить на екран просте діалогове вікно з текстом повідомлення з однією командною кнопкою ОК. Загальний вигляд процедур ShowMessage такий:
ShowMessage («Повідомлення»);
Заголовок вікна повідомлення у цьому разі збігається з ім'ям файла проекту.
Функція MessageDlg дозволяє додати повідомлення однієї зі стандартних позначок Windows, наприклад, позначкою “ Увага ”, а також задати кількість і тип командних кнопок.
Схема алгоритму програми зображена на рис. 2.4.
Xналежить до
[a,b] чи [c,d]
|
Ні Так
Форма проекту з вхідними даними та результатом має вигляд:
Date: 2015-12-12; view: 664; Нарушение авторских прав Понравилась страница? Лайкни для друзей: |
|
|