Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оператор вибору case
Умовний оператор if...then забезпечує розгалуження тільки з двома ва-ріантами вибору. Для задания множинного розгалуження використовується потужніший оператор - оператор вибору. Цей оператор складається з виразу (селектора) i списку варіантів: case < вираз> of < список 1>: < оператор 1; > < список 2>: < оператор 2; > < список N>: < оператор N> else < оператор> end; Схема роботи оператора case така: спочатку обчислюється значення селектора, що йде за словом case. Потім виконується оператор з константою вибору, яка дорівнює значенню селектора. Якщо жодна з констант не дорівнюе поточному значенню селектора, то виконується оператор, що стоїтъ після слова else. Частину else < оператор> у тексті програми можна випустити. Toдi, якщо серед констант селектора потрібне значення відсутнє, виконання оператора case не дасть жодного результату. Приклади селекторів Використовуємо оператор case для обчислення функції Y=(1+X + X2)N, у якій степінь N набуває цілих значень (1, 2, 3). program Degree; var N: integer; X, Y: real; begin Writeln ('Введите значение основания X'); Readln (X); Writeln ('Введите показатель степени от 1 до 3'); Readln (N); Х: =1+Х+Х*Х; case N of (*Вычисление селектора и выбор варианта*) 1: Writeln ('Y=", X: 6: 3); 2: Writeln ('Y=', X*X: 6: 3); 3: Writeln ('Y=', Х*Х*Х: б: 3) else Writeln ('Нет данных'); end; end. У цьому прикладі на екран виводиться запит на введення аргументу х i показника степеня N. Уведений показник застосовується потім як значення селектора, залежно від нього реалізується той чи інший варіант розрахунку функції Xм, наприклад, для N=2 - варіант, позначений як 2. Якщо за N на початку роботи програми буде введене число, не назване серед констант вибору (наприклад, 9), то на екран буде виведене повідомлення «Немає даних». Ми розглянули приклад, коли кожному оператору в списку саsе передує лише одна константа вибору (1, 2 або 3). Однак у загальному випадку перед кожним оператором може бути список констант (< список 1>, < список 2> у записі формату оператора сазе). Крім того, може бути зазначений інтервал зміни констант. Такий інтервал позначається двома крапками «..». Наведемо простий приклад селектора, який містить списки констант вибору. Складемо програму, за допомогою якої можна було б увести номер місяця, а програма відповіла б, якій порі року відповідає цей місяць. Program Season; Var N: integer; Begin Writeln (' Введите номер месяца '); Readln(n); саsе N оf 1, 2, 12: Writeln ('Зто зимає’); 3..5: Writeln ('Зто весна'); 6.. 8: Writeln ('Зто лето'); 9..11: Writeln ('Зто осень') еlsе Writeln ('Нет такого месяца'); End; Readln; end. Як константи вибору можуть використовуватися цілі числа (integer), символи (char), логічні значення (boolean), а також користувальний тип. Оператор repeat («цикл-до») Оператор repeat записується так: Repeat < тіло циклу> until < умова закінчення циклу> Цей оператор організує циклічні обчислення таким чином, що умова перевіряється після чергового виконання тіла циклу. Якщо вираз умови набуває значення True, повторення припиняються. Тому оператор repeat називають ще циклом з постумовою чи просто - «циклом-до» (робота циклу триває, поки не виконана умова завершення). Оператор repeat (як i оператор while) дозволяв виконувати повторювані, діїколи числа повторень заздалегідь не відомо. Розглянемо як приклад спадну геометричну прогресію (q< l): 1, q, q2,..q,.. program Progression; var I, N: integer; Q, Y, S, E: real; begin Writeln ('Введите Q’); Readln (Q); Writeln ('Введите границу для последнего учитываемого члена прогрессии'); Readln (E); Y: =l; S: =l; repeat begin Y: =Y*Q; S.: =S+Y; end; until Abs(Y)< =E; Writeln ('Сумма = *, S: 8: 6); Readln; end. Хід роботи 1. Перевірте роботу програми Season. 2. Створіть програму обчислення суми S = X + X2 +...+ XN i nepeвіpтe її роботу при piзних значеннях X и натурального N. 3. Наберіть програму обчислення суми членів нескінченної прогресії. Перевірте її роботу при різних q i E. Зафіксуйте q, набравши q=0.2, i запустіть програму при різних спадних значениях Е: 0.01, 0.001, 0.0001. Погляньте, до якого значення сходиться сума i чи збігається воно з тим, що дає формула l/(l-q). 4. Створіть програму яка буде, в залежності від вибраної операції, додавати віднімати, множити чи ділити два дані числа. 5. Створіть програму яка буде, в залежності від вибраної фігури, малювати квадрат, куб, коло чи еліпс. Контрольні запитання 1. Як записуються умовні оператори в Паскалі? 2. Який вигляд мають вкладені умовні оператори? 3. Яке призначення оператора вибору? 4. Що таке селектор? 5. Як працює оператор вибору? 6. Як записується оператор циклу for у випадку зростаючих i спадних значень параметра циклу? 7. Який вигляд мае оператор «цикл-поки» у Паскалі? 8. Яка структура оператора «цикл-до»? 9. Чи існує такий випадок, коли «цикл до» не виконається ні разу? Відповідь обґрунтуйте.
|