Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Складений оператор

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

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

Умовні оператори

В Turbo Pascal включені два умовних оператори - if і case, кожний з яких може бути записаний у двох формах: повній й неповній, що відповідає чотирьом узагальненим керуючим конструкціям алгоритмів. Синтаксична діаграма умовного оператора має такий вигляд.

Хоча обоє операторів if і case по своїй суті є умовними, однак, історично склалося так, що оператором умови (умовним оператором) називається оператор if, а оператор case називається оператором вибору або оператором варіанта. Надалі будемо дотримуватися цієї історичної термінології.

Умовний оператор if

if Вираз then Оператор1 else 0ператор2;

Умовний оператор if, як відзначалося вище, може бути записаний у повній і неповній формах, які мають такий вигляд.

if Вираз then Оператор;

Неповна форма: Повна форма:

 

 

Синтаксична діаграма оператора if показана нижче.

При виконанні умовного оператора спочатку обчислюється Вираз, результат якого може приймати тільки логічний тип, а потім, залежно від значення результату (True, False), виконується або Оператор1, щостоїть після ключового слова then (якщо результат дорівнює True), або 0ператор2, щостоїть після ключового слова else (якщо результат дорівнює False).

У випадку, коли оператор if записаний у неповній формі, при значенні результату False керування передається операторові, що слідує безпосередньо після оператора if, а Оператор, що стоїть за ключовим словом then, пропускається.

if А > В then В: = А; ---- помилка! else С:= В;

Нагадаємо, що в Turbo Pascal оператори розділяються символом ";"• Це означає, що усередині будь-якого структурного оператора символ ";" зустрічатися не повинен, інакше все, що стоїть після нього, буде вважатися вже іншим оператором.

Приклад з помилкою:

У показаному вище прикладі крапка з комою, що стоїть перед ключовим словом else закінчує текст оператора if А це приводить до синтаксичної помилки, оскільки оператора, що починається із ключового слова else в Turbo Pascal немає. Щоб не допускати таких помилок доцільно запам'ятати таке правило: Перед ключовим словом else символ ";" ніколи не ставиться.

По синтаксису після ключових слів then і else може стояти всього лише один оператор.

Якщо ж у якій-небудь із гілок альтернативи (then або else ) або відразу в обох потрібно виконати декілька операторів, то варто скористатися складеним оператором begin … end, який дозволяє інтерпретувати групу операторів як один оператор. Відмітимо, що оператори, розташовані між ключовими словами begin... end, також як і скрізь, повинні розділятися крапкою з комою.

Узагальнені форми найпростішого випадку оператора if наведені в таблиці 3-1.

if вираз then begin оператор; if вираз then оператор else оператор; оператор end else begin оператор; if вираз then оператор end

Ще одна синтаксична складність коректного використання оператора if виникає при написанні вкладених операторів if. У випадку, якщо вкладений оператор if розташовується в межах складеного оператора, великих проблем не виникає, тому що ключові слова begin і end точно обмежують область кожної альтернативи.

Наприклад:

 

 

Таблиця 3-1

Кількість операторів у гілці Узагальнена форма оператора if
then else  
один один if вираз then оператор else оператор
декілька один if вираз then begin оператор; оператор; оператор end else оператор
один декілька if вираз then оператор else begin оператор; оператор; оператор end
декілька декілька if вираз then begin оператор; оператор; оператор end else begin оператор; оператор; оператор end

 

if вираз then if вираз then оператор else оператор????

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

Наприклад:

 

if вираз then if вираз then оператор else оператор

У таких випадках варто пам'ятати правило: Ключове слово else зв'язується з найближчим ключовим словом і£, що стоїть перед ним що ще не було пов'язане з яким-небудь ключовим словом else.

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

 

 

Завдання 1 З'ясувати, чи належить точка з координатами X і Y колу одиничного радіуса з центром на початку координат.

program Z1;

var X,Y;Real;

begin

Write ('уведіть 2 дійсні числа');

Readln (X,Y);

Write (Точка (', X:6:3, ',', Y:6:3, ')');

if sqr(X)+sqr(Y)<1

then Write('попадає')

else Write('не попадає');

Writeln ('у коло одиничного радіуса');

end.

 

Завдання 2 Написати програму, що аналізує, до якого алфавіту належать уведена буква, а також велика вона або мала.

program Z2;

var B: Char; Pr,Interval1, Interval2: Boolean;

begin

Write(' натисніть на символьну клавішу');

Read(B);

Write(' - це ');

Interval1:= (B<'A') or ((B>'Z') and (B<'a')) or ((B>'z') and (B<'А'));

Interval2:= ((B>'п') and (B<'p')) or (B>'я');

If (Interval1=True) or (Interval2=True)

then Write('не')

else

begin

if B<'z'

then

begin

Write('англійська');

Pr:=B<='Z'; {більша}

end

else

begin

Write('російська');

Pri:=B<='Ю';

end;

if Pr then Write('більша') else Write('маленька');

end;

Write('буква');

end.

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

Розглянутий умовний оператор if дозволяє вибирати тільки одне з двох можливих дій залежно від логічного виразу.

Оператор вибору case є узагальненням оператора if - він дає і можливість виконати одне з декількох дій залежно від значення перемикача.

Загальну структуру оператора вибору в повній формі можна представити в такий спосіб:

case Перемикач of Список констант1: Оператор1; Список констант2: Оператор2; Список константN: ОператорN else ОператорЕ end

Однією фразою логіку роботи оператора вибору можна описати так: обчислене значення Перемикача визначає, який з Операторів повинен бути виконаний. Якщо Перемикач приймає одне зі значень Спискаконстант1, то виконується Оператор1, а інші Оператори пропускаються. Якщо Перемикач приймає одне зі значень Спискаконстант2, то виконується 0ператор2. Аналогічно будуть виконуватися оператори від Оператора3 до ОператораN. ОператорЕ буде виконуватися в тому випадку, якщо значення Перемикача не збіглося з жодним зі значень Списківконстант від 1-го до N-ro.

У неповній формі оператора case альтернативна всім попереднім варіантам вибору вітка else відсутня. У цьому випадку, якщо значення Перемикача не збігається з жодним зі значень констант вибору, не виконується жоден з Операторів, описаних в case, і керування передається операторові, що стоїть безпосередньо після ключового слова end, що замикає оператор case.

Приклади, що демонструють найбільш характерні способи використання оператора case.

Завдання 3

var Arrow: Char;

Position: record

X,Y: Word

end;

begin

with Position d

case Arrow of

#72: Y:=Y-1;

#80: Y:=Y+1;

#75: X:=X-1;

#77: X:=X+1

end

end.

Завдання 4 var Symbol: Char;

begin

case Symbol of

’0’..’9’: writeln (‘Це цифра’);

’a'..’z: writeln (Це мала літера');

'A'..'Z': writeln ('Це прописна буква');

#10,#13,#26: writeln ('Це керуючий символ’)

else writeln ('Це інший символ’)

end

Завдання 5 Написати програму, що визначає по номері місяця кількість днів у ньому.

program Z4;

var Numer:Byte; B:Char;

begin

Write('уведіть номер місяця =>');

Readln(Number);

Write('У цьому місяці ');

case Number of

1,3,5,7,8,10,12: Writeln('31 день ');

4,6,9,11: Writeln('30 днів ');

2: begin

Writeln;

Write(' Рік високосний? Д/Н => ');

Readln(B);

case B of

'Д': Writeln('29 днів');

'Н': Writeln('28 днів');

else: Writeln('28 або 29 днів');

end;

end;

else Writeln('номер місяця уведений невірно');

end;

end.

<== предыдущая лекция | следующая лекция ==>
Оператор переходу | Діапазонний тип
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 5365; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.