Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Оператор вибору варіанта



Оператор вибору варіанта є узагальненням умовного оператора: він дає можливість виконувати один з деяких операторів в залежності від значення певного виразу, що називається селектором.

У загальному вигляді оператор має вигляд :

case <селектор> of

<список-констант-1> : < оператор 1>;

<список-констант-2> : < оператор 2>;

.................................................................

<список-констант-N> : < оператор N>;

else < оператор N+1>

end;

Тут case (у разі), of (iз), end (кінець) – службові слова;

<селектор> – вираз будь-якого скалярного типу, окрім дійсного; відповідно з цим і списки констант не можуть мати дійсний тип;

<оператор> – будь-який оператор мови, зокрема складений;

<список констант> – список відокремлених комами можливих значень селектора. Ці конcтанти повинні мати той самий тип, що і селектор, вони називаються позначками варіантів. Позначка варіантів не описується у розділі Label, на неї не можна посилатися в операторі goto.

Оператор варіанта діє у такий спосіб. Якщо значення селектора дорівнює значенню однієї з констант, то виконується оператор, який помічений цією константою (позначкою). Після цього керування передається за межі оператора варіанта.

Якщо значення селектора не збігається з жодною з констант, то виконується оператор N+1. Else – необов’язкова частина. Якщо вона відсутня і значення селектора не збігається з жодною з позначок, то керування передається за межі оператора. На відміну від оператора if, перед else необхідно ставити “ ;”.

Наприклад,

case nomer of

2 : y:=g;

4 : y:=g*x;

6 : y:=g*sqrt (abs(X));

end;

Якщо селектор nomer дорівнюватиме 4, то виконається оператор y:=g*x, і управління буде надано операторові, розміщеному після слова End.

У операторі варіанта в якості константи припускається використання списку констант.

Наприклад,

case s of

'+', '-', '*', '/' : p:=1;

'a', 'b' : p:=2;

'; ' : p:=3;

end;

Змінна s має бути описана у розділі опису як символьна. Якщо значенням s буде один із символів '+', '-', '*', '/', то змінна p матиме значення 1. Якщо значенням s буде символ 'a' або 'b', то p набере значення 2. Якщо s прийме значення ';', то p дорівнюватиме 3.

Тип виразу селектора може бути визначено користувачем.

2.5 Приклади розв’язання задач c оператором if і case

Приклад 1.Визначити приналежність заданого дійсного числа xдоодного з двох відрізків: [a,b] або [c,d].

Якщо x належить одному з відрізків, то вивести повідомлення “Належить”, у противному разі – “Не належить”.

Пояснення.Виведення у вікно повідомлення реалізовується процедурою ShowMessageабо функцією MessageDlg.Процедура ShowMessageвиводить на екран просте діалогове вікно з текстом повідомлення з однією командною кнопкою OK.Загальний вигляд процедур ShowMessageтакий:

ShowMessage(“Повідомлення”);

Заголовок вікна повідомлення у цьому разі збігається з ім'ям файла проекту.

Функція MessageDlgдозволяє додати повідомлення однієї зі стандартних позначок Windows,наприклад, позначкою “Увага”, а також задати кількість і тип командних кнопок.

Схема алгоритму програми зображена на рис. 2.4.

 
 

 

 


 
 

Форма проекту з вхідними даними та результатом має вигляд:

Текст програми

{Оброблення події натиснення кнопки “Розв’язок” }

ProcedureTForm1.Button1Click(Sender: TObject);

var a,b,c,d,x:Real;

begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

c:=StrToFloat(Edit3.Text);

d:=StrToFloat(Edit4.Text);

x:=StrToFloat(Edit5.Text);

if (A<=x)And(x<=b)or(c<=x)and(x<=d)

then showmessage (' Належить ')

else showmessage (' Не належить ');

end;

Приклад 2.Написати програму, котра вводить число з клавіатури й повідомляє парне воно чи непарне.

Пояснення. Перевірку на парність можна виконати двома способами: використовувати стандартну функцію Odd(), яка повертає значення true,якщо її аргумент є непарний, або перевіряти, чи дорівнює остача від ділення числа на 2 (операція mod).

Схема алгоритму програми зображена на рис. 2.5.

           
   
 
 
 
   
Рисунок 2.5 – Схема алгоритму програми

 


Текст программи:

Program project1;

{$APPTYPE CONCOLE}

Uses sysutils;

Var N:integer;

Begin

// введення числа

Writeln(‘Введіть число’);

Readln(N);

// виведення повідомлення

If Odd(N) then Writeln(‘Число непарне’

Else Written (‘Число парне’);

Readln

End.

Пояснення. Програму написано в стилі MS DOS.Це консольний додаток. Ззовні він має вигляд програми з текстовим інтерфейсом, але здатні звертатись до більшості функцій Windows.

Для того, щоб створити консольний додаток, треба дати команду File®New (Файл®Создать) і у діалоговому вікні New Itens (Створення програми)обрати позначку Console Wizard (Майстер консольних додатків).

Система Delphi-5автоматично згенерує в текстовому редакторі код (заготовку додатку).

 

Program project1;

{$APPTYPE CONCOLE}

Uses SysUtils;

Begin

// Insert uses code here;

{ Тут вставте вихідний текст }

 

End.

Директива {$APPTYPE CONCOLE} повідомлює, що ця програма є консольний додаток.

За допомогою ключового слова Usesпідключають стандартний модуль SysUtils.

Консольна програма спілкуватись з користувачем за допомогою графічного інтерфейсу не може. Для цього потрібні простіші засоби обміну інформацією з людиною.

У Pascal є дві стандартні процедури Readln(для введення даних) і Writeln(для виведення даних), які можна використовувати в консольних додатках.

ПроцедураReadlnвиконує введення значення з клавіатури й передання його в змінну. При введенні списку змінних їхні значення треба відокремлювати пропусками. Після закінчення введення необхідно натиснути клавішу Enter.У процедурі Readlnможе не бути жодного параметра. Тоді при її виконанні програма просто очікує натиснення Enter.

Процедури Writeі Writelnслугують для виведення даних. При звертанні до Writeвиведення даних здійснюється у рядок, а при кожному звертанні до Writelnвиведення значень починається з нового рядка.

Якщо Writeln не має параметрів, то відбувається пропускання рядка. Для першого пробного запуску у головний логічний блок програми можна помістити лише один оператор Readln:

Begin

Readln

End

Цяпрограма просто виведе чорне консольне вікно й закриється, коли буде натиснуто клавішу Enter.

Приклад 3. Обчислити значення y для трьох варіантів параметрів:

1) a=-3,7; b=5,6; c=tg ,

2) a=0,81; b=-2,4; c=tg ,

3) a=2,5; b=0,6; c=tg

за формулами

Значення х=0,5 ввести із компонента Edit, результати обчислень вивести в компонент Memo.

Пояснення.Компонет Memo –це багаторядкове текстове вікно для введення чи виведення значень даних програми. У вікні компонентів Delphi вона має позначення, зображене на рис. 2.6.

 
 

Рисунок 2.6 – Позначення компонета Memo

Основні властивості компонента Memo:

· Name – ім’я компонента у программі,

· Lines– вікно для введення чи редагування початкових даних програми,

· ScrollBars –встановлення у вікніMemo лінійки прокручування. Ця властивість може приймати одне із значень: None, Vertical, Gorizontal, Both (відсутня, вертикальна, горизонтальна, обидві).

Основні методи компонента Memo:

· Clear – очищення вікна Memo,

·

 
 

Lines.Add(s) – додавання рядка S у вікно Memo.

Рисунок 2.7 – Виведення результату в Memo

Форма проекту із результатами обчислень має вигляд:

Текст програми:

{Оброблення події натиснення кнопки “Пуск” }

ProcedureTForm1.Button1Click(Sender: TObject);

var a,b,c,d,x,y: real; s:integer;

begin

x:= StrToFloat(Edit1.Text);

s:=1;

{ Cелектор }

88: case s of

1: begin a:=-3.7; b:=5.6; c:=abs(sin(b*x)/cos(b*x)); end;

2: begin a:=0.81; b:=-2.4; c:=abs(sin(b*x)/cos(b*x)); end;

3: begin a:=2.5; b:=0.6; c:=abs(sin(b*x)/cos(b*x)); end;

end;

if x<a then y:=sin(exp(a+c))+sqr(x);

if (x>=a) and (x<b) then y:=exp((1/3)*ln(a+abs(5.3*b)))+c;

if x>=b then y:=sqr(cos(a))+sin(x*x)-b*c;

// виведення результатів у Memo

Memo1.Lines.Add(‘x=’+ FloatToStr(x) + ’ y=’ + FloatToStr(y) +

ІntToStr(s)+’й - варіант’);

if s<=3 then goto 88; end;

3 Контрольні запитання

1 Які програми називаються розгалуженими?

2 Назвіть оператори, котрі дозволяють змінювати порядок виконання операторів програми.

3 Запишіть оператор умовного переходу (повна форма), накресліть структурну схему його роботи.

4 Запишіть оператор умовного переходу (скорочена форма), накресліть структурну схему його роботи.

5 До складу умовного оператора може входити лише один оператор. Як бути, якщо необхідно використати декілька операторів?

6 Які можливості має оператор варіанта?

7 Назвіть правила запису "селектора".

8 Як "працює " оператор варіанта?

9 Запишіть загальну форму оператора безумовного переходу. В яких випадках він виконується?

10 Запишіть фрагмент програми обчислення Z :

Лабораторне завдання

Скласти структурну схему алгоритму та програму обчислення значень Y для трьох варіантів значень параметрів за формулами, зазначеними в індивідуальному завданні. Індивідуальне завдання взяти з таблиці 2.9 згідно порядкового номера прізвища студента в списку групи.

При складанні програми передбачити: введення значень х з дисплею, виведення на форму проекту всіх варіантів значень вихідних даних і результатів обчислення. Оформити протокол. Зробити висновки за результатами розрахунків.

Таблиця 2.9

N вар Формули виразів Варіанти параметрів
 
 
 
Обчислити дійсні корені рівняння Якщо коренів немає, то повідомити про це : “Коренів немає”.
Визначити, чи можна побудувати трикутник з наданими сторонами . Якщо не можна - надрукувати 0, інакше -”ТАК, МОЖЛИВО”.
Змінній К присвоїти номер чверті плоскості, в якій знаходиться точка з координатами Координати ввести з дисплею за завданням викладача.
Значення змінних поміняти місцями таким чином, щоб було a<b<c. a=-5; b=5; c=2; a=5; b=-5; c=2; a=2; b=5; c=15




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.