Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programuv_good.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
990.21 Кб
Скачать
  1. Оператор розгалуження. В ряді випадків алгоритм розв’язку задачі передбачає розгалуження, тобто можливість виконання декількох різних дій в залежності від значення певної логічної умови.

Для реалізації розгалуження використовують оператор розгалуження.

IF <логічний вираз> THEN <оператор 1> ELSE <оператор 2>;

Логічний вираз може набувати одного із значень true або false. Якщо результат true, то виконується оператор 1, якщо false – оператор 2.

В якості операторів 1,2 виконується один оператор, якщо він дійсно один, або складений оператор об’єднаний операторними дужками begin, end.

Наприклад

Програма знаходження коренів квадратного рівняння.

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

Begin

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

Readln(a,b,c);

d:=b*b-4*a*c;

if d >0 then

begin

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

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

writeln(‘x1=’,x1:12:6, ‘ x2=’,x2:12:6)

end

else

if d=0 then

begin

x1:=-b/2/a;

writeln (‘x=’,x1:12:6)

end

else

writeln (‘коренів немає’)

end.

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

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

FOR <параметр> : = <початкове значення> TO<кінцеве значення> DO <оператор тіла циклу> ;

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

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

Тіло циклу складається з 1 оператора, якщо він 1, або є складеним оператором в операторних дужках.

Наприклад

  1. Програма знаходження суми чисел 1..10.

Var

i, S:integer;

begin

S:=0;

For i:=1 to 10 do S:=S+i;

Writeln(S);

End.

  1. Програма друкування символів ‘a’..’z’.

Var c:char;

Begin

For c:=’a’ to ‘z’ do write(c:3);

End.

  1. Програма побудови таблиці істинності для and.

Var a,b: Boolean;

Begin

For a:=false to true do

Begin

For b:=false to true do

Write (a and b :6);

Writeln

End End;

End.

Цей оператор циклу ще називають оператором циклу з параметром for to, він передбачає повторення із збільшенням параметру. Оскільки в Turbo Pascal не можна керувати кроком зміни параметра, то для реалізації повторення із зменшенням параметра використовують інший варіант циклу for downto.

FOR<параметр> : = <початкове значення> DOWNTO <кінцеве значення> DO <тіло циклу>;

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

Зауваження. У випадку необхідності вийти з тіла циклу достроково, тобто до досягнення параметру кінцевого значення не бажано користуватися оператором безумовного переходу, а також аналітичним йому підпрограм типу exit, halt(1).

Для виконання виходу краще змінити значення параметру в тілі циклу.

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

WHILE <логічний вираз> DO <тіло циклу> ;

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

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

Наприклад

Дано мішок картоплі, яка вся різної маси. Найменша картоплина важить 50 г. Крок маси 5 г . Скільки картоплин вміститься в 10 кг відрі, якщо їх класти в порядку зростання маси.

Var m, dm, S: real;

i: integer;

begin

m:=0.05;

dm:=0.005;

S:=0; i:=0;

While S<=10 do

Begin

S:=S+m; i:=i+1;

m:=m+dm

end;

writeln(кількість картоплин‘’,i-1)

end.

в) Оператор циклу з післяумовою. Цикл з передумовою передбачає спочатку перевірку, а потім виконується. Деколи потрібно навпаки, спочатку виконати дію, а потім перевірити результат. Якщо результат незадовільняє, то повторити відповідні дії.

REPEAT <тіло циклу> UNTIL <логічний вираз> ;

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

Не потрібно об’єднувати тіло циклу операторними дужками.

Наприклад

Відрахувати кількість картоплин, що у відрі, якщо остання повинна важити не менше півкіло.

...

begin

m:= 0.05;

dm:= 0.005;

i:=0;

repeat i:=i+1;

m:=m+dm

until m>=0.5;

writeln(кількість картоплин‘’,i+1)

end.

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

Наприклад

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

begin

m:=0.05;

dm:=0.005;

S:=0; i:=0;

While (S<=10) and(m<0.5) do

Begin S:=S+m; m:=m+dm; i:=i+1

End;

If S>10 then writeln(‘відро переповнилося’) else writeln(‘0ю5 кг картоплина під №’,i);

End.

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

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

CASE <параметр> OF

<значення1> : <оператор>;

<значення2> : <оператор2>;

...

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

END

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

Параметр може бути або константою, або змінною, або виразом деякого порядкового типу.

Значення 1, 2... – деякі можливі значення відповідного порядкового типу, яких може набувати параметр. В залежності від значень параметра виконується один з операторів.

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

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

Наприклад

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

Var c:char;

Begin

Repeat

Writeln (‘введіть символ, клавіша esc - кінець’);

Readln(c);

Case c of

#0..#31: writeln(‘командний’);

A’..’Z’,’a’..’z’: writeln(‘англійська буква’);

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

#128..#255: writeln(‘альтернативна частина таблиці’);

end

else writeln (розділовий знак‘’)

until c=#27;

end.

ТЕМА: Система типів мови Pascal.

Мову програмуванняTurbo Pascal відносять до строго типізованих мов. Це означає, що всі елементи програми повинні бути оголошені явним чином. Явне оголошення типу визначає діапазон допустимих значень та допустимими операціями.

Компілятор мови здійснює перевірку типів у всіх типів даних.

Мова програмування має розгалужену систему типів. Частина з них є скалярними, інші є структурними або складеними.

ТИПИ МОВИ ПРОГРАМУВАННЯ TURBO PASCAL:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]