- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 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 можна не ставити операторні дужки?