Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция Pascal_mat №4_5.doc
Скачиваний:
3
Добавлен:
02.12.2018
Размер:
404.48 Кб
Скачать

Порожній оператор

Порожній оператор це точка – (.) Використовується там, де за синтаксисом оператор необхідний, однак ніяких дій виконувати не потрібно.

Структурні оператори

Структурні оператори містять у собі інші оператори й управляють послідовністю їхнього виконання.

В Turbo Pascal структурними операторами є:

  1. складений оператор;

  2. умовні оператори;

  • оператор альтернативи if;

  • оператор вибору case;

  1. оператори циклу:

  • оператор циклу з передумовою while;

  • оператор циклу з післяумовою repeat;

  • оператор циклу з лічильником for;

  1. оператор для записів with.

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

Складений оператор поєднує групу операторів у єдине ціле, після чого вони можуть вважатися одним оператором. Складений оператор складається з послідовності поєднуваних операторів, які розташовуються між ключовими словами 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.