Студопедия

КАТЕГОРИИ:


Архитектура-(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)

For i := 1 to n do




Оператор циклу з параметром (з лічильником) for

Оператори повторення

Тема: Оператори циклу в мові Паскаль. Цикл з параметром. Цикл з передумовою. Цикл з післяумовою. Порівняльний аналіз операторів циклу. Оператор переходу.

End

Then

Begin

Else

End

Begin

Then

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

Оператор переходу

Оператор процедури

Оператори мови Pascal

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

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

Згідно синтаксису оператори мови Pascal діляться на дві групи:

ü прості оператори;

ü структурні оператори.

 

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

Означення. Простим оператором є такий оператор, що не містить у собі інших операторів.

Простий оператор – це:


ü Оператор присвоєння

ü Оператор процедури

ü Оператор переходу

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


Оператор присвоєння

Означення. Оператор присвоєння складається з

ü ідентифікатора змінної або користувацької функції,

ü символу присвоєння (:=)

ü виразу.

Наприклад:

A:= В * З;

і:= j div k;

Flag:= (i <> 1) and (B < C);

Mas1:= Mas2;

Reс1:= Rec2;

Set1:= Set2;

 
 

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

Виконання оператора присвоєння приводить до обчислення значення, що визначається виразом, і присвоєння цього значення змінній, що ідентифікується ім’ям, яке стоїть ліворуч від символу присвоєння. У випадку якщо ліворуч стоїть ідентифікатор функції, виконується визначення результату функції, тобто значення, що повертає функцією в точку виклику.

Допускається присвоєння значень не тільки простих, але й структурованих типів, таких як масиви, записи й множини.

Обов’язковою є вимога: щоб тип виразу в правій частині оператора й тип змінної або результату функції в лівій частині оператора були сумісні по присвоєнню.

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

 
 

Оператор процедури без параметрів складається тільки з ідентифікатора процедури.

 

Наприклад,

Summa (A, m, n, Sum)

Initialize;

Swap (X, Y);

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

Зауваження. Аналогічні дії виконуються при виклику методів, описаних в об’єктних типах.

Наприклад,

program Prim; procedure Hello; begin WriteLn(‘Hello’); end; begin Hello; end.   program Prim; uses Crt; procedure Hallo(Stroka); begin WriteLn(Stroka); end; Begin Clrscr; GoToXY(40,15); Hello(‘Привіт!’); end.

 

 
 

Оператор переходу складається із ключового слова goto, після якого вказується мітка.

Виконання оператора goto приводить до передачі керування на оператор, перед яким стоїть зазначена в операторі goto мітка.

Обов’язковою є вимога, щоб мітка, зазначена в операторі переходу, розташовувалася в тому ж блоці або модулі, що й сам оператор goto. Це означає, що за допомогою оператора переходу заборонена передача керування усередину процедури (функції), а також передача керування із процедури (функції) у основну програму.

Варто відмітити, що оператор goto суперечить принципам структурного програмування, і його використання в програмах не рекомендується. Особливо небезпечним є застосування оператора переходу в Turbo Pascal, у якому значно ослаблені, у порівнянні зі стандартом мови Pascal, обмеження на використання goto. Зокрема компілятор не видає повідомлення про помилку передачі керування усередину структурних операторів (наприклад, оператора for), що найчастіше приводить до непередбачених дій програми.

З огляду на сказане, можна порекомендувати взагалі виключити використання оператора переходу при написанні програм. Тим більше, що в Turbo Pascal включені певні процедури Break і Continue, які спеціально призначені ситуацій, при яких найчастіше і потрібен оператор goto.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

 
 

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

 

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

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

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

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

 

 

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

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

 
 

 

 


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

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

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

if А > В

then В: = А; (помилка!)

else С:= В;

У показаному вище прикладі крапка з комою, що стоїть перед ключовим словом else закінчує текст оператора if,а це приводить до синтаксичної помилки, оскільки оператора, що починається із ключового слова else в Turbo Pascal немає.

Щоб не допускати таких помилок доцільно запам’ятати таке правило: перед ключовим словом else символ ";" ніколи не ставиться.

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

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

 

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

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

Наприклад:

if вираз

оператор;

if вираз

then оператор

else оператор;

оператор

оператор;

if вираз

then оператор;

end;

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

Наприклад:

if вираз

then if вираз

then оператор

else оператор???? (невідомо, до якого з if він відноситься)

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

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

if вираз

if вираз

then оператор

else оператор

 

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

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

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

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

case Перемикач of

Список констант1: Оператор1;

Список констант2: Оператор2;

Список константN: ОператорN

else ОператорЕ

В якості Перемикача використовується вираз, який розташовується між словами case і of. Результатом цього виразу може бути тільки значення порядкового типу, загальна кількість елементів якого не перевищує 65535.

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

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

План лекції

1. Оператори повторення.

2. Оператор циклу з параметром (з лічильником) for.

3. Оператор циклу з передумовою while.

4. Оператор циклу з післяумовою repeat.

5. Порівняння роботи операторів while, repeat і for

Цикл - алгоритмічна структура для запису багаторазово повторюваних дій.

Оператори повторення мови Turbo Pascal підтримують три із чотирьох класичних керуючих конструкцій повторення:

ü цикл із передумовою (while),

ü цикл із післяумовою (repeat)

ü цикл із лічильником (з параметром)(for).

 

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


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

1) Якщо лічильник при виконанні циклу нарощує (збільшує) своє значення:

for Змінна: = ПочатковеЗначенхяЛічильникаto КінцевеЗначенняЛічильника do Оператор

Щоб Оператор виконався хоча б один раз ПочатковеЗначенхяЛічильника повинне бути не більше, ніж КінцевеЗначенняЛічильника.

 

2) Якщо лічильник при виконанні циклу зменшує своє значення:

for Змінна: = ПочатковеЗначенхяЛічильникаdownto КінцевеЗначенняЛічильника do Оператор

Щоб Оператор виконався хоча б один раз ПочатковеЗначенхяЛічильника повинне бути не менше, ніж КінцевеЗначенняЛічильника.

Приклад:

Suma:= 0;

for i:= 1 to n do

Suma:= Suma + i;

Помітимо, що для оператора for установка початкового значення лічильника циклів (i:=l) виконується не перед заголовком циклу, а прямо в заголовку. Крім того, щоразу після закінчення тіла циклу збільшення (зменшення) значення лічильника відбувається автоматично. Таким чином, спеціальний оператор для зміни значення лічильника (i:=i+l) не потрібний. Більше того, такий оператор приведе до неправильної роботи циклу.

У більшості реалізацій мови Pascal зміна значень змінних, використовуваних у заголовку циклу for, заборонена й приводить до видачі повідомлення про помилку на етапі компіляції. У реалізації Turbo Pascal ця заборона знята, однак такі дії в рамках циклу for, як правило, приводять до його непередбаченого поводження й вважаються поганим стилем програмування.

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

Suma:= 0;




Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 709; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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