КОНТРОЛЬНА РОБОТА

з програмування

на тему:

Мова програмування Тurbo Pascal 7.0. Оператори повтору. Оператори циклу

ПЛАН

Мова програмування Тurbo Pascal 7.0

Оператори повтору

Оператори циклу

Мова програмування Тurbo Pascal 7.0

Мова програмування Паскаль, названа на честь французького філософа і
математика Блеза Паскаля (1623 — 1662), була вперше створена швейцарцем
Ніклаусом Віртом, який працював на кафедрі інформатики Стенфорського
університету. Широке ж поширення він одержав тільки через багато років
після розробки діалекту Турбо Паскаль широко відомої і донині фірмою
Borland International.

У першій версії були об’єднані швидкий компілятор і редактор тексту, а
так само додане могутнє розширення. Кардинально новим з’явилася мова
Turbo Pascal 6.0. У ній стало можливим практично застосовувати концепцію
обєктно-орієнтованого програмування. Це дозволило створювати програми,
що могли б вирішувати прикладні задачі користувача. Був уперше введений
багатовіконний інтерфейс і підключене миша, що значно полегшує роботу
користувача.

   У 1992 році все та ж фірма Borland International випустила Turbo
Pascal 7.0. Тут було застосовано виділення різними кольорами елементів
структури програми, зовсім новий компілятор і новий інтерфейс.

Базовими компонентами система програмування Турбо Паскаль є компілятор
мови Паскаль, засіб створення і редагування вихідних текстів програм і
засобу їхнього налагодження (пошуку помилок). Усі ці компоненти
об’єднані в єдине інтегроване середовище розроблювача, з яким саме і
працює програміст, створюючи свої програми.

Основний екран інтегрованого середовища розроблювача Turbo Pascal 7.0
виглядає так:

По функціональному призначенню виділяється три області екрана:

Рядок меню

Робоча область

Рядок стану

Рядок меню активізується натисканням клавіші F10. У меню містяться
наступні розділи:

File. Дозволяє виконувати всі основні дії з файлами (створення,
відкриття, збереження ..)

Edit. Дозволяє виконувати всі основні операції редагування тексту
(копіювання, вставка, видалення фрагментів, скасування останніх змін ..)

Search. Дозволяє здійснювати пошук і заміну фрагментів тексту.

Run. Дозволяє запускати програму, у тому числі в покроковому режимі.

Compile. Дозволяє здійснювати компіляцію програми.

Debug. Містить команди, що полегшують процес пошуку помилок у програмі.

Tools. Містить деякі додаткові засоби Турбо Паскаль.

Options. Дозволяє установити необхідні для роботи параметри компілятора
і середовища розроблювача.

Window. Дозволяє виконувати всі основні операції з вікнами (відкривати,
закривати, переміщати, змінювати розмір).

Help. Дозволяє одержати наявну в системі довідкову інформацію.

Усі пункти меню доступні через гарячі клавіші. Для цього треба натиснути
клавішу Alt і ту букву, що виділена червоної в назві пункту меню. Меню
також дозволяє працювати з мишею.

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

Рядок стану демонструє деякі доступні і важливі в даний момент операції
і відповідні їм комбінації клавіш.

Оператором називається пропозиція мови програмування, що задає повний
опис деякої дії, який необхідно виконати. Основна частина програми мовою
Турбо Паскаль являє собою послідовність операторів. Роздільником
операторів служить крапка з коми. Оператори, не утримуючих інших
операторів, називаються простими. До них відносяться оператори
присвоювання, безумовного переходу, виклику процедури, порожній.
Структурні оператори являють собою конструкції, побудовані з інших
операторів по строго визначених правилах. Ці оператори можна розділити
на три групи: складеного, умовні і повтору.

Для уведення вихідних даних найчастіше використовується процедура
ReadLn:

ReadLn(A1,A2,…AK);

Процедура робить читання До значень вихідних даних і привласнює ці
значення перемінним А1, А2, …, АК.

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

Значення вихідних даних можуть відокремлюватися друг від друга пробілами
і натисканням клавіш табуляції і Enter.

Не допускається поділ чисел, що вводяться, комами!

Для висновку результатів роботи програми на екран використовуються
процедури:

Write(A1,A2,…AK);

WriteLn(A1,A2,…AK);

Перший з цих операторів робить висновок значень перемінних А1, А2,…,АК
у рядок екрана. Другий оператор, на відміну від першого, не тільки
робить висновок даних на екран, але і робить перехід до початку
наступної екранного рядка. Якщо процедура writeln використовується без
параметрів, то вона просто робить пропуск рядка і перехід до початку
наступної рядка.

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

Форма представлення значень у полі висновку відповідає типу перемінних і
виражень: величини цілого типу виводяться як цілі десяткові числа,
дійсного типу — як дійсні десяткові числа з десятковим порядком,
символьного типу і рядка — у виді символів, логічного типу — у виді
логічних констант TRUE і FALSE.

Оператор висновку дозволяє задати ширину полючи висновку для кожного
елемента списку висновку. У цьому випадку елемент списку висновку має
вид А:ДО, де А — чи вираження рядок, ДО — вираження або константа цілого
типу. Якщо виведене значення займає в поле висновку менше позицій, чим
ДО, то перед цим значенням розташовуються пробіли. Якщо виведене
значення не міститься в ширину полючи ДО, то для цього значення буде
відведена необхідна кількість позицій.

Для величин дійсного типу елемент списку висновку може мати вид А:ДО:М,
де А — перемінного чи вираження дійсного типу, ДО — ширина полючи
висновку, М — число цифр дробової частини виведеного значення. ДО і М —
чи вираження константи цілого типу. У цьому випадку дійсні значення
виводяться у формі десяткового числа з фіксованою крапкою.

Приклад запису операторів висновку:

var rA, rB: Real;

iP,iQ:Integer;

bR, bS: Boolean;

chT, chV, chU, chW: Char;

begin

. . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

end.

У мові Паскаль використовується два оператори для реалізації умовних
переходів — IF і CASE, а також оператор безумовного переходу GOTO. Вони
дозволяють порушити послідовний порядок виконання інструкцій програми.

Оператор умовного переходу в Турбо Паскаль має вид:

if умова then оператор 1 else оператор 2;

умова — це логічне вираження, у залежності від який вибирається одна з
двох альтернативних галузей алгоритму. Якщо значення умови істинно
(TRUE), то буде виконуватися оператор 1, записаний після ключового слова
then. У противному випадку буде виконаний оператор 2, що випливає за
словом else, при цьому оператор 1 пропускається. Після виконання
зазначених операторів програма переходить до виполеннию команди, що
коштує безпосередньо після оператора if.

Необхідно пам’ятати, що перед ключовим словом else крапка з коми ніколи
не ставиться!

else — частина в операторі if може отсутствовать:

if умова then оператор 1;

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

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

Приклади.

if x > 0 then modul := x else modul := -x;

if k > 0 then WriteLn(‘k — число позитивне’);

if min > max then begin

t := min;

min := max;

max := t;

end;

 

2. Оператори повтору

Оператор for – оператор повтору

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

Оператор повтору for складається із заголовка і тіла циклу.

Дві форми циклу:

for <параметр циклу> := S1 to S2 do <оператор>;

for <параметр циклу> := S1 downto S2 do <оператор>;

Тіло циклу може бути простим чи складеним оператором.

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

Прикладом дії операторів for може служити програма DemoFor, що виводить
на екран таблицю перекладу з градусів по шкалі Цельсыя в градуси по
Фаренгейтові для значень від 15 градусів C до 30 градусів С с кроком 1
градус.Переклад здійснюється по формулі: F = C*1.8+32.

Program DemoFor;

Var

I: integer;

F : Real;

Begin

Writeln (‘ Температура ‘);

for i := 15 to 30 do begin

f := I*1.8+32;

Writeln (‘По Цельсию = ‘,і,’ по Фаренгейтові= ‘,F:5:2);

end;

End.

У блоці опису переменних описаний параметр циклу і(хранящий значення
температури по Цельсию) типу integer і перемінна F — температура по
Фаренгейтові типу Real.

На початку виконання програми на екран виводиться напис ‘Температура’, а
потім оператором повтору виводиться таблиця співвідношення температури
двох шкал.

В операторі for значення параметра циклу(у нашому варіанті I) саме
збільшується на одиницю, запис inc(і) не потрібний.

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

Оператор if…then…else…

Дуже часто подальше виконання програми можливе тільки при виконання
визначених умов. Для цього в Турбо Паскалі зарезервовані умовні
оператори.

Оператор if…then…else…. є удосконаленою моделлю оператора
if…then…, що не передбачає виконання якої-небудь дії, якщо жодна з
умов не виконалася.

Цей умовний оператор має вигляд: if expression then operation1 else
operation2;

Якщо деяке вираження expression приймає значення «истина», то управління
передається на оператор operation1, а якщо ні, то на оператор
operation2, причому, крапка з комою перед else не ставиться (!)

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

Program listing1;

Var a,b,s:integer;

Begin

Write(‘Уведіть число а: ‘);

Readln(a);

Write(‘Уведіть число b: ‘);

Readln(b);

s:=a+b;

if s>10 then write(‘Сума чисел більше 10!’)

else write(‘Сума чисел менше 10!’);

Readln;

End.

Оператор case…of…end

case expression of

value_1: operation_1;

value_2: operation_2;

value_n: operation_n;

else operation;

end;

Цей оператор добре підходить для ситуацій, де мається багато альтернатив
(наприклад, вибір елемента меню).

case, of і end; — зарезервовані слова. Тут expression — селектор —
вираження, що можливо приймає значення одного з value. У цьому випадку
буде виконуватися дія operation, що коштує напроти цього значення. У
випадку, якщо жодне значення в списку не збіглося із селектором,
виконується дія після else.

Program listing2;

Var selector:char;

Begin

Writeln(‘1. Зберегти’);

Writeln(‘2. Завантажити’);

Writeln(‘3. Вийти’);

readln(selector);

case selector of

‘1’: write(‘Ви вибрали меню «зберегти»‘);

‘2’: write(‘Ви вибрали меню «завантажити»‘);

‘3’: halt;

else write(‘Такого пункту немає в меню!’);

readln;

End.

У цій програмі в якості operation були використані оператор write, що
виводить на екран рядок. На його місці може стояти усе, що завгодно:
підпрограма, процедура, функція і т.д.

Оператор циклу repeat аналогічний оператору while, але відрізняється від
нього, по-перше, тим, що умова перевіряється після чергового виконання
операторів тіла циклу й у такий спосіб гарантується хоча б однократне
виконання циклу. По-друге, тим, що критерієм припинення циклу є рівність
вираження константі true . За це даний оператор часто називають циклом з
постусловием, тому що він припиняє виконуватися, як тільки умова,
записана після слова until, виконається. Оператор циклу repeat
складається з заголовка, тіла й умови закінчення.

Загальний вид: Repeat

<оператор>

. . . . .

<оператор>

until <умова закінчення циклу>

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

Розглянемо дещо штучну задачу: написати цілочислову функцію з ім’ям pow
для обчислення степеня an за довільним натуральним a і n? 0. Задача має
елементарне розв’язання: an=enlna, і в тілі функції достатньо написати
pow:=round(exp(n*ln(a))). Проте невід’ємні степені цілих чисел є цілими,
тому спробуємо обійтися без нецілих виразів із функціями exp і ln.

За означенням, an є a? a? …? a, тобто a0=1, ai=ai-1? a для i=1, 2, …
, n. Це підштовхує до спроби обчислення an шляхом багаторазового
множення на a. Спочатку шуканий степінь p=1, і треба n разів умножити
його на a. Після першого множення p=a, і треба n-1 разів умножити його
на a тощо. Перед останнім множенням p=an-1. Таким чином,

спочатку p=1 і треба виконати n множень на a, і поки залишаються
«невикористані» множники a, ми множимо p на a, одержуємо новий степінь p
і запам’ятовуємо, що «невикористаних» множників стало менше на 1.

Остання фраза, власне, і є алгоритмом обчислення an. Перекладемо його на
мову Паскаль.

Нам потрібні змінні p і a для збереження степеня і його основи, а також
змінні n і k для збереження показника степеня й кількості
«невикористаних» множників. Змінні a і n – параметри нашої функції, тому
їх початкові значення тут не важливі. Тепер алгоритм можна уточнити:

p:=1; k:=n;

поки k>0 виконувати {залишилися «невикористані» співмножники}

begin p:=p*a; k:=k-1 end

Якщо перекласти на англійську мову слова поки і виконувати як while і
do, то утвориться:

p:=1; k:=n;

while k>0 do{залишилися «невикористані» співмножники}

begin p:=p*a; k:=k-1 end

Але це вже Паскаль! Справа в тім, що вираз вигляду

while умова do оператор

називається while-оператором, або оператором циклу з перед-умовою. Вираз
«while умова do» називається заголовком циклу, «оператор» – тілом. Ми б
назвали while-оператор циклом з умовою продовження, але цей термін
дотепер у літературі не з’являвся.

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

Отже, обчислення умови й виконання тіла повторюється, тобто має
циклічний характер. Можна сказати, що обчислення умови й виконання тіла
утворюють цикл, як день і ніч, змінюючи одне одного, утворюють добу.
Істинність умови веде до продовження виконання оператора циклу, хибність
– до його завершення, тому умова називається умовою продовження. Вона
також називається перед-умовою, оскільки з її обчислення починається
черговий цикл. Останній цикл неповний – у ньому тільки обчислюється
умова (і виявляється хибною).

Оператору з перед-умовою відповідає блок-схема, зображена на рис.4.1.

Повернемося до задачі. Послідовність операторів для обчислення an при
a=2, n=3 задає процес

p:=1; k:=3;

обчислення умови k>0: true ;

p:=1*2; k:=3-1; {p=2; k=2}

обчислення умови k>0: true;

p:=2*2; k:=2-1; {p=4; k=1}

обчислення умови k>0: true;

p:=4*2; k:=1-1; {p=8; k=0}

обчислення умови k>0: false,

а при a=5, n=0 – процес

p:=1; k:=0;

обчислення умови k>0: false.

У вигляді коментарів тут указано стани пам’яті наприкінці циклів.

Запишемо, нарешті, функцію pow:

function pow(a, n:integer):integer;

var p, k: integer;

begin

p:=1; k:=n;

while k>0 do

begin p:=p*a; k:=k-1 end;

pow:=p

end;

?

Список використаної літеатури

Бартків А.Б. та ін.Турбо Паскаль: Алгоритми і програми. -К.: Вища школа,
1992.

Джонс Ж., Харроу К. Решение задач в Турбо Паскаль. -М.:Финансы и
статистика, 1991. -720с.

Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное
пособие. — М.: Нолидж, 1997. -432с.

Ян Белецкий. Турбо Паскаль с графикой для персональных компьютеров. -М.:
Машиностроение, 1991. -320с.

PAGE

Похожие записи