АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Сase вираз-селектор of

Читайте также:

    значення 1: begin серія 1 end;

    значення 2: begin серія 2 end;

    ….

    Значення N: begin серія N end

    else begin серія N+1 end;

    end;

     

    Гілка else, як і в команді розгалуження if може бути відсутньою. Зарезервовані слова begin та end можна так само не використовувати, як і в команді if. Як вираз-селектор можна використовувати тільки вирази перелічуваного типу, тобто будь-які цілі (byte, shortint, integer, word), літерні (char) або булівські (boolean). Як значення можна використовувати або константи, або списки константних значень (через кому), або діапазин значень.

    Наприклад, якщо змінна Х типу byte, то:

    Case X of

    0: оператор 1; {константа}

    1, 3, 5, 7, 9: оператор 2; {список констант}

    10…20: оператор 3; {діапазон значень}

    end;

    Виконання команди CASE аналогічне команді вибору у НАМ: тобто якщо вираз-селектор набуватиме певного значення, буде виконуватися та серія, яка знаходиться у відповідному рядку.

     

    Наведемо кілька прикладів розгалуження алгоритмів.

     

    Приклад 1. Складіть алгоритм знаходження більшого з трьох чисел.

    Алгоритм має вигляд:

    АЛГ Приклад 1 (дійсн a, b, c, r)

    АРГ a, b, c

    РЕЗ r

    ПОЧ

    якщо a>b

    то r:=a

    інакше r:=b

    Все

    якщо r<c

    то r:=c

    Все

    ДРУКУВАТИ (“Більше з трьох чисел дорівнює”,r)

    КІН

    Пояснення до алгоритму

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

    Мовою Паскаль цей алгоритм виглядає так:

    Program Example_1;

    Var

    a, b, c, r: real;

    begin readln (a, b, c); {Введення значень a, b, c з клавіатури}

    if a>=b

    then r:=a;

    else r:=b;

    if r<c;

    then r:=c;

    writeln (‘ Найбільше з трьох чисел дорівнює‘, r);

    End.

     

    ЗВЕРНІТЬ УВАГУ НА ВИКОРИСТАННЯ ОПЕРАТОРА WRITELN. ВІН ВИВОДИТЬ НЕОБХІДНУ ІНФОРМАЦІЮ НА ЕКРАН МОНІТОРА!

     

    Формат команди:

    writeln (список виведення);

    Як елемент списку виведення можна використовувати:

    а) текст – довільний набір ASII-символів, взятий в апострофи;

    б) константу або константний вираз:

    writeln (‘5+3=’, 5+3);

    writeln (‘5+3=’, 8);

    В обох випадках результатом роботи оператора writeln буде виведення на екран тексту: 5+3=8;

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

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

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

    writeln (‘ Результат задачі‘, 2*r);

    За замовчуванням мова Паскаль здійснює виведення дійсних чисел на екран у форматі з плаваючою крапкою, тобто числа 2 та 13.5 на екрані матимуть вигляд:

    2. 00000000Е+00 1.35000000Е+01

    Це важко сприймають учні, тому пропонуємо використовувати форматування виведення дійсних чисел:

    змінна: число1: число2;

    де число1 задає загальну кількість позиції виведення;

    число2 кількість цифр після десяткової крапки.

    Наприклад, для оператора

    writeln (r: 8: 2);

    якщо r=13.914 на екрані буде вісім знаків (тобто 3 пробіли, 2 цифри до крапки та 2 цифри після десяткової крапки). Загальна довжина поля 8, тому попереду додано три пробіли.

    _ _ _ 13.91

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

    Обчислення відбувається за формулою:

    .

    Алгоритм має вигляд:

    АЛГ Приклад_2 (дійсн x1, y1, x2, y2, r1, r2)

    АРГ х1, у1, х2, у2

    РЕЗ r1, r2

    ПОЧ

    ДРУКУВАТИ (“ Яка з двох точок знаходиться ближче до початку координат?“)

    якщо r1<r2

    то ДРУКУВАТИ (“ 1-а точка знаходиться ближче до початку координат “)

    ДРУКУВАТИ (“ Її відстань= “, r1,,” а відстань 2-ої точки - “,r2)

    Інакше

    якщо r2<r1

    то ДРУКУВАТИ (“ 2-а точка знаходиться ближче до початку координат “)

    ДРУКУВАТИ (“ Її відстань= “, r2, “, а відстань 1-ої точки – точки - “, r1)

    Інакше

    ДРУКУВАТИ (“ Точки знаходяться на однаковій відстані від початку координат “);

    ДРУКУВАТИ (“ Ця відстань= “,r1)

    Все

    Все

    КІН

     

    Мовою Паскаль алгоритм має вигляд:

    Program Example_2;

    Var X1, Y1, X2, Y2, R1, R2: real;

    Begin

    write (‘ Введіть координати 1-ої точки ‘);

    readln (X1,Y1);

    write(‘ Введіть координати 2-ої точки ‘);

    readln (X2, Y2);

    R1:=sqrt(X1*X1+Y1*Y1);

    R2:=sqrt(sqr(X2)+sqr(Y2));

    if R1<R2


    1 | 2 | 3 | 4 | 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 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |

    Поиск по сайту:



    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)