Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 10: Оператор вибору

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

Загальний вид оператора:

case вираження чи ім'я перемінної of

константа_1, константа_2, … :оператор_1;

константа_3, константа_4, … :оператор_2;

[else оператор_3;

оператор_4;

… ]

end;

де Case (у випадку), Of (з), Else (інакше) і End - службові слова. В якості оператора може бути і складений оператор.

Кожна гілка, розділена “:”, називається альтернативою. У лівій частині альтернативи стоїть одна чи кілька констант, розділених “,” чи діапазони значень, у правій частині – відповідний їм оператор.

Робота оператора вибору. Спочатку обчислюється значення вираження чи змінної і, у випадку, якщо воно дорівнює одній з констант чи попадає в заданий діапазон значень, то виконується відповідний їй оператор. Потім керування передається за межі оператора вибору. Якщо значення вираження чи змінної не збігається з жодною константою чи не попадає в заданий діапазон значень, то виконується оператор (оператори) після “else” (якщо він є) і керування передається за межі оператора вибору. Якщо “else” немає, то керування передається на оператор End.

Приклад.

case x+1 of

2..10: y :=sqrt(x);

3,11,y :=a+b*x;

else writeln('значення не збіглися');

end;

Приклад використання списку констант.

case s of

‘+’, ‘-’, ‘*’, ‘\’, ‘=’ : y :=a+b;

‘a’, ‘b’, ‘c’, : y :=a-b;

'у' : y :=0;

end;

Приклад. Ввести номер дня тижня й одержати відповідний йому день українською мовою.

var n : integer {номер дня тижня}

begin

writeln('Введіть номер дня тижня:');

read(n);

case n of

1: writeln('Понеділок');

2: writeln('Вівторок');

3: writeln('Середа');

4: writeln('Четвер');

5: writeln('П'ятниця');

6: writeln('Субота');

7: writeln('Неділя');

else writeln('Немає такого номеру дня')

end;

end.

Питання для контролю.

1.Загальний вид оператора вибору і його застосування.

2.Гілка-альтернатива в операторі вибору і її склад.

3.Робота оператора вибору.

Тема 11: Оператори циклу. Оператор циклу з параметром

У Pascal-і мається три види операторів циклу: While – оператор циклу з попередньою умовою, Repeat – оператор циклу з наступною умовою і For – оператор циклу з параметром.

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

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

for i:=n1 to n2 do

begin

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

end;

де For, To, Do – службові слова; і – змінна циклу, n1,n2 – початкове і кінцеве значення перемінної.

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

Змінна циклу і повинна бути простого дискретного типу(найчастіше цілого типу). Крок її зміни дорівнює +1 чи –1. Якщо значення змінної збільшується від n1 до n2, то крок її зміни дорівнює +1, а якщо зменшується – то її крок зміни дорівнює –1 і тоді в операторі циклу For замість слова To записують слово Downto.

Початкове і кінцеве значення повинні бути сумісні за типом зі змінною циклу. Тип Real не допустим. Неможна змінювати змінну циклу в тілі циклу – це приведе до перекручування результату.

Приклад. Крок зміни змінної i +1

var

i,a,s:integer;

begin

for i:=1 to 4 do

begin

a:=a+i;

s:=2*a;

writeln(a:3,s:3);

end;

end.

Приклад 2. Крок зміни змінної i -1

var

i,a,s:integer;

begin

for i:=4 downto 1 do

begin

a:=a+i;

s:=2*a;

writeln(a:3,s:3);

end;

end.

Приклад. Обчислити y=x2 при x=2,4,6,8,10.

var x,k,y: integer;

begin

x:=2;

for k:=5 downto 1 do

begin

y:=x*x;

writeln(x:3,y:5);

x:=x+2;

end;

end.

Тут змінна k – лічильник кількості виконуваних обчислень.

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

for i:=n1 to n2 do оператор;

Приклад1. Приклад2.

var

i,a,s:integer:

begin

for i:=1 to 4 do

begin

a:=a+i;

s:=2*a;

writeln(a:3,s:3);

end;

end.

var

i,a,s:integer:

begin

for i:=4 downto 1 do

a:=a+i;

s:=2*a;

writeln(a:3,s:3);

end.

У першому прикладі оператори тіла циклу взяті в операторні дужки Begin…End в результаті чого цикл For буде виконаний для всіх операторів циклу. Цикл виконується 4 рази і для кожного виконання будуть виведені значення a,s.

У другому прикладі оператори тіла циклу не взяті в операторні дужки в результаті чого цикл For виконується тільки для оператора a:=a+і, а потім виконується оператор s:=2*a. Будуть виведені останні значення a,s.

Приклад. Вивести на екран латинський алфавіт. Оскільки символи латинського алфавіту упорядковані, програма буде наступною:

var simbol:char;

begin

writeln(‘Латинський алфавіт:’);

for simbol:=’A’ to ‘Z’ do

write(simbol);

end.

Приклад. Обчислити y=2x+t при x=1.5;2;2.5;3 і t=1;2;3.

Для рішення організуємо два цикли: для змінної х зовнішній цикл While, (значення змінної змінюється на 0,5 і цикл For застосувати неможна), для перемінної t внутрішній цикл For, тому що значення перемінної міняється на 1.

var t: integer;

x,y: real;

begin

x:=1.5;

while x=3 do begin

for t:=1 to 3 do begin

y:=2*x+t;

writeln(‘y=’,:1:1,’при x=’,x:3:1,’і t=’,t);

end;

x:=x+0.5;

end;

end.

Питання для контролю.

1. Оператор циклу з параметром і його застосування.

2. Робота оператора циклу з параметром.

3. Змінна циклу, її тип і крок зміни.

4. Який тип неприпустимий для змінної циклу?

5. Застосування в циклі з параметром слів To і Downto.

6. Чи можна змінювати змінну циклу в тілі циклу оператора For?

7. В якому випадку в операторі For можна не ставити операторні дужки?