Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді(парні) на екзаменаційні питання АМПЗ.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
436.22 Кб
Скачать

1

Зауваження!! Слова синоніми:

ВКАЗІВКА=ОПЕРАТОР,

РОЗГАЛУЖЕННЯ=УМОВА

ФРАГМЕНТ=ЧАСТИНА ПРОГРАМИ

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

Складений оператор – це декілька операторів, об'єднаних в одну групу (блок) за допомогою службових слів BEGIN та END.

Ці слова називають операторними дужками.

Складений оператор має таку структуру:

BEGIN

<оператор1 >;

<оператор2 >;

<оператор3 >;

***

<оператор n >

END;

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

Запис BEGIN END чи ;; називається порожнім операторм або операторними дужками.

Приклад 1. Розглянемо складений оператор (фрагмент програми):

BEGIN

Suma:=Suma+Cina;

N:=N+1

END;

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

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

GOTO <позначка>

Оператор переходу має таку структуру:

Позначку заздалегідь оголошують в розділі оголошення позначок:

LABEL <список позначок>.

<позначка>: <оператор>

Якщо позначка (ціле число) оголошена, то в програмі повинен бути такий фрагмент:

Зауваження 1. Оператор GOTO використовують зрідка.

Зауваження 2. У середовищі програмування Turbo (Borland) Pascal 7.0 службове слово PROGRAM можна не писати. Але це тільки у версії 7.0 і вище

A

Not A

A

B

A and B

A or B

True

False

False

false

True

false

false

true

True

False

False

True

False

True

False

True

true

true

true

true

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

Мітка — це довільне ціле число в інтервалі від 0 до 9999 або довільний ідентифікатор (тобто ім'я мітки записується згідно з правилами запису ідентифікаторів).

Однією міткою може бути помічена тільки одна вказівка. Ідентифікатор мітки не повинен співпадати з ідентифікатором змінної або константи.

Вказівка вибору ( варіанту)

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

Вказівка вибору записується у вигляді:

C

Зауваження!!

Слова синоніми:

Варіант=Селектор,

Значеня=Мітка

ase
<вираз> of

значення1:<вказівка1>;

значення2:<вказівка2>;

значенняМ:<вказівкаM>

end;

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

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

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

Виконується вказівка варіанту так.

Примітка.

Мітки варіанту не потрібно описувати в розділі міток Label і їх не можна використовувати у вказівці безумовного переходу Goto.

Наприклад.

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

Program PORA;

Var MONTH: integer;

begin

Write('Введіть порядковий номер місяця (від 1 до 12): ');

readln(MONTH);

case MONTH of

3,4,5:writeln('Becнa');

6,7,8 : writeln ('Літо');

9,10,11:writeln('Ociнь');

12,1,2:writeln('Зимa')

end;

end.

8.Типи задач, що вирішуються за допомогою розгалужень.

Задача 1. Знайти значення складеної функції у для заданого значення х, якщо функція задана формулою:

var x,y:real;

begin clrscr;

writeln (‘Ввести х’);

read(x);

if x>0 then y:=x+3

else y:=x-5;

writeln (‘y=’, y)

readln

end.

Задача 2. Розв’язати квадратне рівняння (а≠0)

ax2+bx+c=0.

^ Program Equation;

uses crt;

var a, b, c, d, x1, x2: real;

begin

clrscr;

writeln(‘Введіть коефіцієнти a, b, c’);

readln(a, b, c);

d:=sqrt(b)- 4*a*c;

if d<0 then writeln(‘коренів немає’)

else begin

x1:= (-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln(‘корені є:’, x1:6:2, x2:6:2) end;

readln

end.

Дано три числа а, в, с. З’ясуйте, чи має місце нерівність а<в<с. Відповідь подати у вигляді тексту: „так” чи „ні”.

Program P1;

uses crt;

var a, b, c:real;

begin

writeln(‘Введіть три числа а, в, с’);

readln(a,b,c);

if(aand (bthen writeln (‘так’)

else writeln (‘ні’);

readln

end.

№7. Присвоїти z значення більшого з чисел х і у у тому разі, якщо х<0, і меншого, якщо х≥0.

Program EX7;

var x, y, max,min,z:real;

begin

writeln(‘Введіть два числа х,у’);

readln(x,y);

if x>y then begin

max:=y; min:=x;

writeln(‘max=’, max:4:2);

end;

else begin

max:=y; min:=x;

writeln(‘min=’, min:4:2);

end;

if xthen writeln (‘z=’, max:4:2);

else writeln(‘z=’, min:4:2);

readln;

end.

А тепер за цією блок- схемою напишем програму на мові Паскаль.

^ Program Triangle;

uses crt;

var a,b,c,p,s: real;

label 2;

begin clrscr;

writeln(‘Ввести довжини трьох сторін трикутника a,b,c’);

2: readln(a,b,c);

writeln(‘a=’, a, ‘b=’, b,’c=’,c);

if (aand (band (c<(a+b) then {нерівність трикутника}

begin writeln(‘трикутник існує’);

p:= (a+b+c)/2;

s:= sqrt(p*(p-a)*(p-b)*(p-c));

p:=p*2;

writeln(‘s=’, s:6:2, ‘p=’, p:6:2);

end

else

begin writeln (‘трикутника не існує’);

writeln(‘ввести нові сторони а, в, c’);

goto 2;

end;

readln

end.

Задача 2. Для заданого місяця року вивести пору року. Місяць задається числом.

Запишем програму для розв’язання цієї задачі, використовуючи оператор сase.

^ Program Season;

uses crt;

var month: 1..12;

begin clrscr;

writeln (Введіть номер місяця’);

read(month);

сase month of

1,2,12: writeln(‘зима’);

3,4,5: writeln(‘весна’);

6, 7,8: writeln(‘літо’);

9, 10, 11: writeln(‘осінь’);

end;

end.

Якщо замість сase використати неповні логічні оператори, то програма матиме такий вигляд:

^ Program Season;

uses crt;

var month: integer;

begin clrscr;

writeln (Введіть номер місяця’);

read(month);

if( month=1) or (month=2) or (month=12) then writeln(‘зима’);

if( month=3) or (month=4) or (month=5) then writeln(‘весна’);

if( month=6) or (month=7) or (month=8) then writeln(‘літо’);

if( month=9) or (month=10) or (month=11) then writeln(‘осінь’);

if month >12 writeln(‘помилка’);

readln

end.

10.Алгоритми розгалуження, які призначені для пошуку найбільших або найменших величин.

Задача. Скласти програму, де у змінні а та b ввести два цілих числа. Третій змінній с присвоїти значення більшого з-поміж уведених. Якщо числа рівні, то змінні с присвоїти значення будь-якого з чисел.

program twonumbers;

var a,b, c: integer;

begin

write (’Введіть два числа’);

read ln(a,b);

if a>b then c:=a;

if a<b then c:=b;

if a=b then c:=a;

write ln (‘c=’, c); read ln

end.

Дано три числа а, в, с. З’ясуйте, чи має місце нерівність а<в<с. Відповідь подати у вигляді тексту: „так” чи „ні”.

Program P1;

uses crt;

var a, b, c:real;

begin

writeln(‘Введіть три числа а, в, с’);

readln(a,b,c);

if(aand (bthen writeln (‘так’)

else writeln (‘ні’);

readln

end.

№7. Присвоїти z значення більшого з чисел х і у у тому разі, якщо х<0, і меншого, якщо х≥0.

Program EX7;

var x, y, max,min,z:real;

begin

writeln(‘Введіть два числа х,у’);

readln(x,y);

if x>y then begin

max:=y; min:=x;

writeln(‘max=’, max:4:2);

end;

else begin

max:=y; min:=x;

writeln(‘min=’, min:4:2);

end;

if xthen writeln (‘z=’, max:4:2);

else writeln(‘z=’, min:4:2);

readln;

end.

12.Алгоритми розгалуження, які призначені для перевірки влучення в один з декількох інтервалів.

Бали Оцінка

88-100 <<відмінно>>

71-87 <<добре>>

50-70 <<задовільно>>

0-49 <<незадовільно>>

Скласти програму, яка для конкретного студента (name) і його кількості

балів (bal) виводить його оцінку (mark).

program Marks;

var bal: integer; name, mark: string;

begin

write (‘Введіть прізвище’);

readln (name);

write (‘Введіть бали’);

readln (bal);

case bal of

88…100: mark:= ‘відмінно’;

71…87: mark:= ‘добре’;

50…70: mark:= ‘задовільно’;

0…49: mark:= ‘незадовільно’;

else mark: = ‘0’

end;

if mark < > ‘0’ then writeln (name:15, mark:15)

else writeln (‘помилка під час введення кількості балів’):

end.

Напишем программу, которая определяет квартал года по введенному числу месяца.

program vetvlenija8;

uses crt;

var NUM :integer;

begin

clrscr;

write (‘Введите номер месяца’);

readln (NUM);

case NUM of

1,2,3: writeln (‘Первый квартал’);

4,5,6: writeln (‘Второй квартал’);

7,8,9: writeln (‘Третий квартал’);

10,11,12: writeln (‘Четвертый квартал’)

else

writeln (‘Вы неправильно указали месяц’)

end;

readln

end.

Задача 1. Обчислити і вивести значення складеної функції у у деякій заданій користувачем точці х, якщо

program Myfunction;

uses Crt;

var x,y:real;

begin

writeln ('Bвeдіть x');

readln(x);

if x < -1 then y:=ln(abs(x)) else

if (x>=-l) and (x<l) then y:=sin(x) else y:=cos(x);

writeln('x=',x:5:2,' y=',y:5:2);

readln;

end.

За рейтинговою системою оцінка визначається таким чином: якщо загальний бал учня становить не менше 92% від максимального, то виставляється оцінка 12, якщо не нижче 70%,

то – оцінка 8, якщо ж не нижче 50%, то – оцінка 5, в інших випадках – оцінка 2. Визначте оцінку учня, якщо він набрав N балів, а максимальне значення загального балу становить S.

Program Task_14;

Uses crt;

Var N, S, Grade:integer; {N – бали, що набрав учень;

S – максимальне значення сумарного балу;

Grade – оцінка учня}

Begin

Clrscr;

Wrіte(‘Введіть максимальне значення сумарного балу, що може набрати учень: ‘);

Readln(S);

Write (‘Введіть кількість балів, що отримав учень: ‘) ;

Readln(N);

If (S<=0) or (N<=0) or (N>S) Then writeln(‘Помилка вхідних даних’)

Else

Begin

N:=round(N/S*100); {Знаходження відношення балів учня до максимально можливого}

If N>=92 then Grade:=12;

If (N<92)>=70) then Grade:=8;

If (N<70)>=50) then Grade:=5;

If (N<50)>0 then Grade:=2;

Writeln(‘Учень отримав оцінку: ’, Grade);

End;

Readkey;

End.

14.Алфавіт і словник мови Турбо Паскаль. Правила запису ідентифікаторів.

Основними елементами мови Паскаль є символи, слова, вирази, команди (оператори).

Символи — нероздільні знаки, які обробляє транслятор мови.

Слова — мінімальна смислова одиниця мови, що складається із символів (ідентифікатори, числа, службові слова).

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

Вирази можуть бути арифметичними і логічними. Арифметичними є вирази, які записуються за допомогою арифметичних операцій і в результаті обчислення яких одержують числові значення. Окрім відомих чотирьох арифметичних дій у Паскалі є дії div (частка від ділення націло двох цілих чисел) і mod (остача від ділення націло двох цілих чисел). В арифметичних виразах можуть використовуватися також стандартні функції: тригонометричні (sin(x), cos(x), arctan(x)), визначення модуля (abs(x)), округлення (round(x)), піднесення до квадрата (sqr(x)) та інші.

Команди (оператори) — це вказівки на виконання окремих дій.

Мова Паскаль містить символи для складання ідентифікаторів (великі та малі латинські букви, арабські цифри, знак підкреслення); символи-роздільники (пропуск, керуючі символи з ASCII-кодами від 0 до 31);спеціальні символи, що виконують певні функції при побудові різних конструкцій мови (+ – * / = > <.,; : @ ‘ ( ) { } [ ] # $ ^); складові символи, які сприймаються компілятором як єдине ціле (=: = (* *) (..)..); «невживані» символи (символи, що не входять до алфавіту мови, але використовуються в коментарях та у вигляді значень символьних і рядкових констант).

Идентификаторы. Константы и переменные. Выражения. Комментарий.

Идентификатор - это строка символов, используемая для идентификации (или именования) некоторого элемента программы.

Идентификаторы в Паскаль- это имена констант, переменных, типов, процедур и функций используемых в программах.

Идентификатор всегда начинается буквой или знаком подчёркивания, за которым могут следовать буквы и цифры. Идентификатор может иметь произвольную длину, но значащими являются только первые 63 символа.

Пробелы и специальные символы не могут входить в идентификатор.

Приведём примеры идентификаторов:

А к Alpha MyProgram MY_PROGRAM _ttt _123

__В программе каждый элемент данных является константой или переменной. Константы и переменные определяются именами, к которым затем можно обратиться.

Константой называется элемент данных, значения которых установлено в описательной части программы и в процессе выполнения программы не изменяется.

Для определения значения констант существует зарезервированное слово Const.

Формат1 записи:

Const

<идентификатор>=<значение константы>;

Например:

Const Pi=3.1415;

Переменной называется элемент данных, идентификатор которых указывается в описательной части программы, и значения которых, в процессе выполнения программы, могут изменяться.

Для описания переменных используется зарезервированное слово Var.

Формат записи:

Var

<идентификатор> : <тип переменной>;

Например:

Var A:integer;

D,f,k:real;

My_Program:char;

__После описания переменной её значение не определено, но на начальной стадии компиляции значение переменной принимает значение равное нулю.

Каждая переменная или константа должны принадлежать определённому типу данных.

Процесс описания идентификаторов (констант и переменных) с физической точки зрения - это выделение участков оперативной памяти для хранения значений этих идентификаторов. Имя идентификатора в данном случае - это адрес первого байта данного участка памяти. Тип идентификатора - это размер участка памяти.

С помощью знаков операций и скобок из констант и переменных можно составлять выражения.

Частным случаем выражения может быть просто одиночный элемент, т.е. константа или переменная.

Тип выражения определяется типом констант и переменных его составляющих.

Алфавіт мови складається з безлічі символів, що включають:

- Латинські букви: від A до Z (прописні) і від а до z. (Рядкові);

- Знак підкреслення _;

- Цифри: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

- Спеціальні символи: + - * / (знаки арифметичних операцій), = <> <=> = (операції відносини),: = (операції привласнення), []. , ():; {} ^ @ $ # '(Обмежники). До спецсимволи належать службові слова, зміст яких визначено однозначно (begin, end, for, div і т.д.).

- Пропуск - символ пробілу (ASCI1-32) і всі керуючі символи коду ASCII (від 0 до 31).

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

знаки математичних операцій: додавання – “+”, віднімання – “-”, множення – “*”, ділення – “/”;

знаки відношення: більше – “>”, менше – “<”, дорівнює – “=”, не дорівнює – “<>”, більше або дорівнює – “>=”, менше або дорівнює – “<=”;

знак присвоювання “:=”;

апостроф “’”;

роздільники: “.” “;” “:” “,”;

дужки: “(” “)”;

індексні дужки: “[” “]”;

дужки для коментарів: “{” “}” або “(*” “*)”;

спеціальні символи: “^” “$” “#”.

Службові (зарезервовані) слова. Це обмежена група слів, які побудовані з букв. Кожне службове слово являє собою неподільне утворення, смисл котрого зафіксований в мові. Службові слова не можна використовувати в якості імен, що вводяться програмістом. Існує 55 службових слів. Всі вони перелічені нижче.

Absolute

And

Array

Asm

Begin

Case

Const

Constructor

Destructor

Div

Do

Downto

Else

And

External

File

For

Forward Procedure

Function

Goto

If

Implementation

In

Inline

Interface

Interrupt

Label

Mem

Nil

Not

Object

Of

Or

Packed

Private Program

Record

Repeat

Set

Shl

Shr

String

Then

To

Type

Until

Uses

Var

Virtual

While

With

Xor

16.Види даних. Особливості використання у програмі.

Тип визначає:

скільки байтів пам’яті відведено для заданої змінної;

які ці дані (числові чи текстові, цілі числа чи ні);

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

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

Цілі типи

Найменування типу Діапазон значень Розмір у байтах

Shortint -128 .. 127 1

Integer -32768 .. 32767 2

Longint -2147483648 .. 2147483648 4

Byte 0 .. 255 1

Word 0 .. 65535 2

Змінна

У вигляді змінної описуються дані, які змінюються при виконанні програми. Описати змінну - це вказати її ім’я та тип. Значення змінної при опису не визначено, але числовим змінним програма Паскаль присвоює значення 0.

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

Приклад. Var x, y: integer; beta:byte; c:longint;

Змінні та сталі описують у розділу даних у будь-якому порядку, але за звичаєм сталі описують раніше змінних.

Зауваження

При визначенні типу для даних потрібно враховувати їх можливі значення. Наприклад, дані, що мають цілі та додатні значення, можуть бути типу Byte або Word. Дані, які можуть мати від’ємні значення, повинні бути типу Integer або Shortint. Якщо значення може бути досить великим, то краще обрати тип Longint.

Всі дані мають бути описані! Якщо змінна не описана, з'являється повідомлення про помилку: Error 3. Unknown identifier.

Не може бути даних з однаковими іменами! Якщо є, то видається повідомлення про помилку: Error 4. Duplicate identifier.

При використанні процедур і функцій з цілочисельними параметрамислід керуватися «вкладень» типів, тобто скрізь, де можевикористовуватися Word, допускається використання Byte (але не навпаки), в

LongInt "входить" Integer, який, у свою чергу, включає в себе

ShortInt.

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

Логічний тип

| Логічні ТИПИ |

| Назва | Довжина, Байт | OS | Значення |

| BOOLEAN | 1 | Linux, DOS | False, True |

| BYTEBOOL | 1 | Сумісний з С | False, True |

| WORDBOOL | 2 | Win | False, True |

| LONGBOOL | 4 | Win | False, True |

. Значеннями логічного типу може бути один із заздалегідьоголошених констант FALSE (неправда) або TRUE (істина).

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

символьний тип. CHAR - займає 1 байт. Значним символьного типує безліч всіх символів ПК. Кожному символу присвоюється цілечисло в діапозоні 0 ... 255. Це число служить кодом внутрішнього поданнясимволу.

Для кодування іспоьзуется код ASCII (American Standart Code for

Information Interchange - американський стандартний код для обмінуінформацією). Це 7-бітний код, тобто з його допомогою можн озакодіровать лише

128 символів у діапозоні від 0 до 127. У той же час у 8-бітному байті,відведеному для зберігання символу в Турбо Паскалі, можна закодувати в дварази більше символів у дапозоне від 0 до 255. Перша половина символів ПК зкодами 0 ... 127 відповідає стандарту ASCII. Друга половина символів зкодами 128ююю255 не обмежена жорсткими рамками стандарту і може змінюватисьна ПК різних типів.

Символи з кодами 0 ... 31 відносяться до слжебним кодами. Якщо ці кодивикористовувати в символьному тексті програми, вони вважаються пробілами.

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

Type

Colors = (red, white, blue);

Застосування перелічуваних типів робить програми наочніше.

Відповідність між значеннями перераховується типу і порядковиминомерами цих значень встановлюється порядком перерахування: першазначення списку отримує порядковий номер 0, друга - 1 і т.д. максимальнапотужність що перераховується типу складає 65536 значень, тому фактичноперераховуються тип задає деякий підмножина цілого типу WORD і можерозглядатися як компактне оголошення відразу групи цілочисельнихконстант зі значеннями 0,1 і т.д.

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

Тип-діапазон. Тип-діапазон є підмножина свого базового типу, вякості якого може виступати будь-який порядковий тип, окрім типу -діапазону.

Тип-діапазон задається межами своїх значень всередині базового типу:

..

Тут - мінімальне значення типу-діапазону.

- максимальне його значення.

Type

Digit = '0 '.. '9';

Dig2 = 48 .. 57;

При визначенні типу-діапазону потрібно керуватися наступнимиправилами:

1. два символи «..» розглядаються як один символ, тому між ними неприпустимі пробіли.

2. ліва межа діапазону не повинна перевищувати його праву кордон.

Тип-діапазон успадковує всі властивості базового ітпа, але з обмеженнями, пов'язаними з його меншою потужністю.

Речовий ТИПИ < p> На відміну від порядкових типів, значення яких завжди зіставляютьсяз низкою цілих чисел і, отже, представляється в ПК абсолютно точно,значення речових типів визначають довільне число лише з деякоюкінцевою точністю, яка залежить від внутрішнього формату дійсного числа.

| Довжина, | Назва | Кількість | Діапазон десяткового |

| байт | | значущих цифр | порядку |

| 6 | Real | 11 ... 12 | -39 ... +38 |

| 4 | Single | 7 ... 8 | -45 ... +38 |

| 8 | Double | 15 ... 16 | -324 ... +308 |

| 10 | Extended | 19 ... 20 | -4951 ... 4932 |

| 8 | comp | 19 ... 20 | -2 * 1063 +1 ... +2 * 1063-1 |

Структуровані ТИПИ

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

Масиву

Массіиви в Турбо Паскалі багато в чому схожі з аналогічними типами данихв інших мовах програмування. Відмінна риса масивівполягає в тому, що всі їх компоненти суть дані одного типу (можливоструктурованого). Ці компоненти можна легко впорядкувати і забезпечитидоступ до будь-якого з них простим зазначенням порядкового номера.

Опис масиву задається наступним чином:

= array [] of

Тут - правильний індіфікатор;

Array, of - зарезірвірование слова (масив, з);

- список з одного або декількох індексних типів,розділених комами; квадратні дужки, що обрамляють список, - вимогасинтаксису;

- будь-який тип Турбо Паскаля.

Як індексних типів у Турбо Паскалі можна використовувати будь-якіпорядкові типи, крім LongInt і типів-діапазонів з базовим типом LongInt.

Глибина вкладеності структурованих типів взагалі, а отже, імасивів - довільна, тому кількість елементів у списку індексівтипів (розмірність масиву) не обмежена, однак сумарна довжинавнутрішнього подання будь-якого масиву не може бути більше 65520 байт.

ЗАПИСИ

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

(поля) запису можуть бути різного типу. Щоб можна було посилатися на тойабо інший компонент записи, поля іменуються.

Структура оголошення типу запису така:

= RECORD END

Тут - правильний індіфікатор;

RECORD, END - зарезервірование слова (запис, кінець);

- список полів, представляє собою послідовністьрозділів записи, між якими ставиться крапка з комою.

МНОЖЕСТВ

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

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

Опис типу безлічі має вигляд:

= SET OF

Тут - правильний індіфікатор;

SET, OF - зарезірвірованние слова (безліч, з);

- базовий тип елементів множини, в якості якого можевикористовуватися будь-який порядковий тип, крім WORD, INTEGER і LONGINT.

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

СТРОКИ

Тип STRING (рядок) у Турбо Паскалі широко використовується для обробкитекстів. Він багато в чому схожий на одновимірний масив символів ARRAY [0 .. N] OF

CHAR, проте, на відміну від останнього, кількість символів у рядку --змінної може змінюватись від 0 до N, де N - кількість максімалльноесимволів в рядку. Значення N визначається оголошенням типу STRING [N] N іможе бути будь-якою константою порядкового типу, але ен більше 255. Турбо

Паскаль дозволяє не вказувати N, у тому випадку довжина рядка приймаєтьсямаксимально можливою, а саме N = 255.

Рядок у Турбо Паскалі трактується як ланцюжок символів. До будь-якогосимволу в рядку можна звернутися точно так само, як до елементу одновимірногомасиву ARRAY [0 .. N] OF CHAR.

ФАЙЛИ

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

Будь-який файл має три характерні особливості. По-перше, у нього єім'я, що дає можливість програмі працювати одночасно з декількомафайлами. По-друге, він містить компоненти одного типу. Типом компонентівможе бути будь-який тип Турбо Паскаля, крім файлів. Іншими словами, недьзястворити «файл файлів». По-третє, довжина знову створюваного файла ніяк необмовляється при його оголошенні і обмежується лише розміром пристроївзовнішньої пам'яті.

Файловий тип або змінну файлового типу можна поставити одним з трьохспособів:

= FILE OF;

= TEXT;

= FILE;

Тут - ім'я файлового типу (правильний індіфікатор);

FILE, OF - зарезервовані слова (файл, з);

TEXT - ім'я стандартного типу текстових файлів;

- будь-який тип Турбо Паскаля, крім файлів.

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

. типізовані файли (задаються пропозицією FILE OF ...);

. текстові файли (визначаються типом TEXT);

. нетипізовані файли (визначаються типом FILE).

ПРОЦЕДУРНІ ТИПИ

Процедурні типи - це нововедення фірми Borland (у стандартному

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

Для оголошення процедурного типу використовується заголовок процедури

(функції), в якому опускається її ім'я, напріме: type

Proc = procedure;

Proc1 = procedure (var X, Y: Integer);

StrProc = procedure (S: String);

MathFunc = function (X: Real): Real:

DeviceFunc = function (var F: Text): Integer;

MaxFunc = function (A, B: Real; F: MathFunc): Real;

Як видно з наведених прикладів існує два види процедурнихтипів: тип-роцедура і тип-функція.

У програмі можуть бути оголошені змінні процедурних типів,наприклад, так:

Var

P1: Proc1;

F1, f2: MathFunc;

Ap: array [1 .. N] of Proc1

змінним процедурних типів допускається привласнювати якзначень імена відповідних підпрограм. Після такого присвоювання ім'язмінної стає синонімом імені підпрограми.

18.Прості користувацькі типи: тип-діапазон і перелічуваний тип. Оголошення і приклади використання.

Тип переліку

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

type

season = (winter, spring,summer, outumn);

Значенням присвоюються порядкові номери: 0,1,2,3…255.

Наприклад: ord (summer) = 2.

Значення можуть бути тільки іменними. Їх можна присвоювати і порівнювати, але не можна вводити і виводити операторами READ і WRITE.

Приклад:

type

season = (win, spr, sum, out);

var

b: byte;

c: season;

begin

readln(b);

c:= season (b);

case c of

win : writeln(‘winter’);

spr : writeln(‘spring’);

sum : writeln(‘summer’);

out : writeln(‘outumn’);

end

end.

Тип – діапазон

Визначається як інтервал значень базового типу (раніш визначеного), яким може бути будь-який порядковий тип:

<ім’я> = <min значення>..<max значення>;

Приклад:

type

day = 1..31;

month = 1..12;

letter = ‘A’..’Z’;

При визначенні типа-діпазона, слід користуватись правилами:

а) – це один символ(без пробілу);

б) ліва границя не повинна перевищувати праву;

в) ім’я повинно бути правильним ідентифікатором (починатись з букви, не співпадати зі службовими словами, тільки латинські букви, цифри та підкреслення).

20.Реалізація обчислень у Паскалі. Пріоритети операцій. Правила запису арифметичних виразів. Приклади використання цілочисельних операцій.

Реалізація обчислень у Паскалі.

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

Вирази містять:

- цілі й дійсні сталі та імена змінних;

- символи "+", "-", "*", "/" двомісних арифметичних операцій;

- імена (ідентифікатори) одномісних функцій sin та cos;

- дужки "(" та ")".

Задачу обчислення значення виразу розіб'ємо на дві підзадачі:

1) прочитати вираз і побудувати його внутрішнє подання;

2) за внутрішнім поданням виразу обчислити його значення.

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

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

Пріоритети операцій.

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

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

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

3. Правила проходження: операції однакового старшинства (пріоритету) виконуються зліва направо у порядку їх слідування.

Приклад. Цифрами зверху зазначений порядок виконання операцій:

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

ЛОГІЧНІ ВИРАЗИ Логічні вирази складаються з логічних даних, логічних операцій і операцій відношення. В операціях відношен-ня можуть брати участь арефметичні і логічні вирази, а також символічні дані.

В логічних виразах прийнятий наступний пріорітет операцій:

1) NOT 2) * (множення), / (ділення), DIV, MOD, AND;

3) + (плюс), - (мінус), OR;

4) (менше), = (менше або дорівнює), = (рівно),

(не рівно), = (більше або рівно), (більше).

Правила запису арифметичних виразів

1. Вирази записуються в рядок.

2. Допускається застосування круглих дужках

3. Не допускається поспіль два знака операцій

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

5. Частину виразу укладена в дужки виконується в першу чергу (тобто дужки змінюють пріоритет)

Запис арифметичних виразів в Паскале

Правила запису основних арифметичних функцій мовою Турбо-Паскаль наведені в птаблице 1.

Таблиця 1 У ТР

<математики/strong>

|x| abs(x)

  • sqrt(x)

X2 sqr(x)

ex exp(x)

sinx sin(x)

cosx cos(x)

tgx sin(x)/cos(x)

ctgx cos(x)/ sin(x)

arctgx arctan(x)

arcsinx arctan(x/sqrt(1-sqrt(x)))

arccosx Pi/2-arctan(x/sqrt(1-sqrt(x)))

lnx ln(x)

lgx ln(x)/ ln(10)

log2x ln(x)/ ln(2)

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

Приклади запису виразів

1.

y:=(a*2.5*exp(x)+sqrt(abs(x-1))+ln(sqr(x)/2/a)/ln(10))

( arctan(x/sqrt(1-sqr(x))+exp(2/3*ln(x)));

2.

L:=((sqr(x)+sqr(y))<=sqr(R))and(x*y>=0).

Приклади використання цілочисельних операцій.

У Pascal є операції цілочисельного поділу і знаходження залишку від ділення. При виконанні цілочисельного поділу (операція DIV) залишок від ділення відкидається.

Наприклад, 15 div 3 = 5; 18 div 5 = 3; 123 div 10 = 12, 7 div 10 = 0.

За допомогою операції MOD можна знайти залишок від ділення одного цілого числа на інше.

Наприклад, 15 mod 3 = 0; 18 mod 5 = 3; 123 mod 10 = 3, 7 mod 10 = 7.

22.Засоби алгоритмічної мови для введення та виведення інформації.

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

У мові Pascal ця команда виглядає таким чином:

Read (список змінних);

Наприклад,

Var

A : Real; B: Integer; C: Char;

Begin

Read (A, B, C)

End.

Читається: "Ввести речовинну А, В і цілу символьну С".

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

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

Приклади введення даних за допомогою процедури ReadLn:

ReadLn (A, B, C);

ReadLn (X);

ReadLn (LogPer);

Процедура, яка виводить зміст змінних на екран, називається процедурою виведення на екран.

У Pascal ця команда виглядає наступним чином

Write (список констант і/або змінних, розділених комою)

Наприклад Write ( 'Вихідна значення:', C).

У списку виводу цих операторів може бути або один вислів, або послідовність таких виразів, розділених між собою комами.

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

Приклади виводу даних:

Write (A, B, C);

WriteLn ( 'Коренем рівняння є', X);

WriteLn (LogPer);

Для управління розміщенням виведених значень процедури Write і WriteLn використовуються з форматами. Під форматом даних розуміється розташування і порядок кодування окремих полів елементів даних.

Процедура виведення з форматом для цілого типу має вигляд:

WriteLn (A: N, B: M, C: L);

Тут N, M, L -- вираження цілого типу, що задають ширину поля виведення значень.

При виведенні речових значень оператор Write (R) без зазначення формату виводить речовий R в поле шириною 18 символів у формі з плаваючою комою в нормалізованому вигляді. Для десяткового подання значення R застосовується оператор з форматами виду WriteLn (R: N: M). У десяткового запису числа R виводиться M (0 Ј M Ј 24) знаків після коми, всього виводиться N знаків.

Приклади:

WriteLn (N: 4);

WriteLn (K: 10: 5, S: 7: 3);

24.Класифікація операторів. Поняття простого, порожнього і складеного оператора. Приклади використання при реалізації розгалужень і циклів.

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

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

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

Оператор виклику процедури служить для активізації стандартної процедури чи процедури, визначеної користувачем. Стандартні процедури знаходяться у файлах, що підключаються модулем і для їхнього використання досить вказати ім"я процедури, і якщо необхідно додаткові параметри. Для того, щоб викликати свою процедуру, її для цього треба описати перед початком програми (begin), а потім уже використовувати.

Наприклад, ClrScr; {Виклик стандартної процедури очищення екрана}.

Оператор безумовного переходу

Оператор безумовного переходу (go to) означає «перейти до» і застосовується у випадках, коли після виконання деякого оператора треба виконати не наступний один по одному, а якою-небудь іншою, відзначеною міткою, оператор. Загальний вид: go to <мітка>.

Мітка з"являється в розділі опису міток і складається з імені і наступного за ним двокрапки. Ім"я мітки може містити цифрові і буквені символи, максимальна довжина імені обмежена 127 знаками.

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

· Варто прагнути застосовувати оператори переходу для передачі керування тільки вниз (уперед) по тексту програми;

· Відстань між міткою й оператором переходу на неї не повинно перевищувати однієї сторінки тексту (чи висоти екрана дисплея).

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

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

В Turbo Pascal оператори поділяються на прості та структурні. До простих операторів відносяться: - оператор присвоєння (:=); - оператор безумовного переходу (goto); - оператор звертання до процедури (функції). Структурними операторами називаються такі, що складаються з інших операторів. До них відносяться: - складний оператор - представляє собою набір операторів, що поміщені в операторні дужки (begin - end); - умовний оператор (if); - оператор вибору (case); - оператори циклу (repeat, while, for); - оператор приєднання (with). Усі вищеописані елементи алфавіту мови програмування складаються з окремих символів. В якості символів, що складають елементи алфавіту, в Turbo Pascal можна використовувати більшість символів, що входять в стандартну ASCII-таблицю.

Якщо в програмі виникає необхідність кількаразового виконання деяких операторів, то для цього використовуються оператори повтору (циклу). У мові Паскаль розрізняють три види операторів циклу: цикл із предусловием (while), цикл із постусловием (repeat) і цикл із параметром (for).

26.Умовний оператор. Правила запису і приклади використання. Операції відношення.

Умовний оператор в мові програмування Паскаль використовується для реалізації розгалужень у програмах.

If L then OP1 else OP2;

пгде:

If - якщо;

then - той;

else - інакше;

L - вираз логічного типу;

OP1, OP2 - оператори.

Робота оператора: Обчислюється значення логічного вирази, якщо обчислена значення істинно, то виконується оператор OP1 інакше OP2. Після виконання операторів OP1 або OP2 виконується оператор, наступний за умовним оператором.

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

If (x<0) and (x>-1) then y:=cos(x) else y:=sin(x);

Як OP1 або OP2 м.б. складовою оператор:

If x>then 0 y:=cos(x)

Begin

y:=sin(x); x:=x+0.1;

End;

У якості OP1 або м.б. умовний оператор:

If x>0 then y:=cos(x) else if x>then 0 y:=sin(x);

У Паскалі допускається коротка форма умовного оператора

Формат запису:

If L then OP;

Робота оператора: Обчислюється значення логічного вирази, якщо обчислена значення істинно, то виконується оператор OP інакше виконується оператор, наступний за умовним оператором.

приклад запису:

If x>then 0 y:=cos(x);

Скласти програму обчислення функції y для заданого значення x в мові програмування Паскаль.

Program Ex_1;

Uses crt;

Var

x, y :real;

Begin

clrscr;

Writeln("Уведіть x");

Read(x);

If x>0 then y:=cos(x)

else

Ifx<0 then y:=exp(x);

Writeln("Результат");

Writeln(‘ y=’, y:10);

End.

У мові Pascal операції відносини визначені для величин порядкового будь-якого типу (цілі, символьний, логічний, перечіслімий, діапазон). Операції відносини можуть бути виконані також над рядковими виразами. Порівняння двох рядків виконується посимвольний зліва направо відповідно до їх лексикографічної упорядкованістю в таблиці кодів ASCII. Ця впорядкованість припускає, що "1" < "2", "a" < "b", "B" < "C" і т.д. Як тільки в процесі попарних порівнянь символів з однаковою порядкової позицією виявляється більший за кодом ASCII символ, даний процес припиняється, і вважається, що рядок з цим символом відповідно більше іншого рядка. Якщо рядки мають різну довжину і їх символи збігаються до останнього знаку, то вважається, що більш короткий рядок менше.

28.Оператор варіанта. Правила запису і приклади використання.

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

case <вираз> of

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

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

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

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

end;

Вираз, що стоїть між службовим словом case (варіант) та of (з) називається селектором. Константи, що передують двокрапці та стоять перед відповідним оператором, називаються мітками варіанту. Мітки варіанту відрізняються від звичайних міток. На них неможна переходити за допомогою оператора goto, їх не треба описувати в розділі опису міток. Якщо список міток варіанту містить більше, ніж одну мітку, то вони розділяються комами.

Найпростіший вигляд оператора варіанту наведено нижче:

Case i of

1: x:=x+1;

2: x:=x-1;

3: x:=y;

end;

Даний оператор буде виконуватись так. Спочатку обчислюється значення змінної і. Потім це значення співставляється (порівнюється) з константами, що записані перед операторами. При співпадінні значення змінної з однією з констант буде виконаний оператор, який “помічений” даною константою. На цьому виконання оператора варіанту буде завершено. Якщо значення змінної і не співпаде ні з однією константою, то даний оператор не виконає ніяких дій.

Крім одиночних констант в альтернативах оператора варіанту можуть задаватись списки чи/або діапазони значень, які у цьому випадку повинні розділятись комою (“,”), наприклад:

Case i of

1..3: x:=x+1;

8,17,26: x:=x-1;

78,40..53: x:=y;

end;

Тип виразу - селектора може бути будь-яким дискретним типом, крім real. Тип констант – міток варіанту повинен співпадати з типом селектора. Всі константи в альтернативах повинні мати тип, сумісний з типом виразу. Всі константи в альтернативах повинні бути унікальними в межах оператора варіанту (тобто повторення констант в альтернативах не допускаються); діапазони не повинні перетинатись та містити констант, які вказані в даній та інших альтернативах.

У версії Turbo Pascal використовується інша (повна) форма оператора варіанту:

case <вираз> of

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

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

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

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

else

оператор N+1;

end;

Алгоритм його виконання відрізняється від неповної форми тим, що якщо значення змінної і не співпаде ні з однією константою, то виконується <оператор N+1>.

Зауваження. Якщо в операторі варіанту необхідно помістити після деякого списку констант – міток варіанту не один оператор, а декілька, то їх треба об'єднати в один складений оператор (взяти в операторні дужки begin-end). Наприклад,

Program P1;

var

month : integer;

begin

write(‘введіть номер місяця ’);

readln(month);

Case month of

1,2,3 : writeln(‘перший квартал’);

4,5,6 : writeln(‘другий квартал’);

7,8,9 : writeln(‘третій квартал’);

10..12 : writeln(‘четвертий квартал’);

else

writeln(‘такого місяця немає’);

end;

end.

30.Способи організації циклічних алгоритмів.

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

Для реалізації циклічних алгоритмів у мові Паскаль використовуються оператори повторення (цикли):

  • оператор циклу з параметром (For);

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

  • оператор циклу з післяумовою (Repeat).

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

а) зі значенням 1 кроку зміни параметра:

For < параметр > := <вираз1 > to <вираз2 > do <оператор >

б) зі значенням -1 кроку зміни параметра:

For < параметр >:=< вираз1 > downto <вираз2 > do <оператор>

Дія оператора: Ця команда діє як попередня, але крок зміни параметра є –1.

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

Параметр циклу, вираз1 і вираз2 повинні бути одного й того ж скалярного типу ( крім дійсного). Вираз1 і вираз2 обчислюється лише один раз - при вході в цикл, і, отже, повинні бути визначені до входу в цикл і не можуть бути змінені в тілі циклу.

Якщо вираз1 і вираз2 розділяє службове слово to, то після виконання оператора (тіла циклу) параметр циклу v приймає значення Succ(v), якщо ж дільником виразу1 і виразу2 служить слово downto, то параметр циклу v після виконання тіла циклу приймає значення Pred(v).

Приклад:

Піднести будь-яке дійсне число а до будь-якого цілого степення n.

Розв'язок:

program Stepin;

var

a,p:real;

i,n:integer;

begin

write('введіть a - основу степеня, а=');

readln(a);

write('введіть ціле n - показник степеня, n=');

readln(n);

p:=1;

for i:=1 to n do

p := p * a;

writeln('p=',p)

end.

6. Вказівка повторення WHILE

Оператор For використовується лише у випадку, коли заздалегідь відома кількість повторень тіла циклу. У більш загальному випадку, коли кількість повторень заздалегідь невідома, а задана деяка умова закінчення (або продовження) циклу, у мові Pascal використовують інші оператори повторення: оператор циклу з передумовою While і оператор циклу з післяумовою Repeat.

Вказівка циклу з передумовою:

Дія оператора:

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

Приклад 1. Роздрукувати символи латинського алфавіту.

а) звичайний порядок:

program latsimvol;

var

S:char;

begin

S:='A';

while S<='Z' do

begin

writeln(S);

S:=succ(S);

end

end.

б) у зворотному порядку:

program latsimvol;

var

S:char;

begin

S:='Z';

while S>='A' do

begin

writeln(S);

S:=pred(S);

end

end.

7. Вказівка повторення REPEAT

Оператор For використовується лише у випадку, коли заздалегідь відома кількість повторень тіла циклу. У більш загальному випадку, коли кількість повторень заздалегідь невідома, а задана деяка умова закінчення (або продовження) циклу, у мові Pascal використовують інші оператори повторення: оператор циклу з передумовою While і оператор циклу з післяумовою Repeat.

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

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

REPEAT

<оператор1 >

<оператор2 >

<оператор3 >

***

<оператор n >

UNTIL <умова>;

Дія оператора: Спочатку виконуються зазначені оператори, а пізніше перевіряється умова. Якщо умова справджується (істинна), то виконання циклу завершується, якщо ні, то оператори виконуються ще раз, і так далі.

ВКЛАДЕНІ ЦИКЛИ:

Вкладені цикли – це декілька циклів записаних один за одним.

Наприклад:

for i:=1 to 10 do

for j:=1 to 15 do

<оператори>

Зауваження:

Repeat Until KeyPressed – умова, чи

натиснена клавіша (пауза);

Приклад 1. Роздрукувати символи латинського алфавіту.

а) звичайний порядок:

program latsimvol;

var

S:char;

begin

S:='A';

Repeat

write(S);

S:=succ(S);

until S>'Z'

end.

б) у зворотному порядку:

program latsimvol;

var

S:char;

begin

S:='Z';

Repeat

write(S);

S:=pred(S);

until S<'A'

end.