Главная страница
Навигация по странице:

  • Тип селектора должен быть ординальным.

  • Каждое из постоянных значений должно быть сопоставлено самое большее с одним оператором.

  • Константы выбора НЕ являются метками.

  • лекция по основам алгоритмизации. Оператор выбора лекция. Оператор выбора Оператор выбора (


    Скачать 19.09 Kb.
    НазваниеОператор выбора Оператор выбора (
    Анкорлекция по основам алгоритмизации
    Дата07.12.2021
    Размер19.09 Kb.
    Формат файлаdocx
    Имя файлаОператор выбора лекция.docx
    ТипДокументы
    #294499

    Оператор выбора
    Оператор выбора (варианта) предназначен для организации выбора одной из любого количества ветвей алгоритма в зависимости от значения некоторого выражения.
    Общий вид оператора выбора:
    Case < селектор > Of

    < константа 1 > : < оператор 1 > ;

    < константа 2 > : < оператор 2 > ;

    …….

    Else

    < оператор N > ;

    End ;
    Селектор представляет собой некоторое выражение, имеющее один возможный результат.

    Выполнение оператора выбора начинается с вычисления значения селектора. Затем передается управление тому оператору, перед которым стоит константа, совпадающая со значением селектора. Если таких совпадений не обнаружено, то выполняется оператор, стоящий после Else. Ветвь Else может отсутствовать.

    где Case - зарезервированное слово (от англ. "выбор", "вариант");

    <селектор> - выражение, исходя из значения которого будет выбран оператор из списка для дальнейшего выполнения;

    of - зарезервированное слово (от англ. "из");

    <константа> - константа выбора;

    <оператор> - любые операторы языка Pascal, в том числе может быть составной или пустой операторы;

    else - зарезервированное слово (от англ. "иначе"). Если ни одна из констант не подошла к селектору, то будут выполнены операторы, следующие за else. Блок else не обязателен, поэтому если его нет, оператор case завершит свою работу, так и не выполнив ни одного оператора из списка;

    end - зарезервированное слово (от англ. "конец"), завершение оператора варианта.

    Разберем работу оператора Case на примере.

    Каждый из вас, прежде чем выйти на улицу одевает одежду. Выбор этой одежды во многом зависит от температуры на улице. Если на термометре -15, то вы наденете куртку, брюки и сапоги. А если на улице +20, ваш выбор будет состоять из майки, шорт и сандалий. Представьте, что термометр с его показаниями температуры - это своего рода <селектор> в программе. В роли <констант> выступают градусы цельсия, а в роли <операторов> ваш гардероб. Тогда программу, которая выбирает гардероб в зависимости от температуры, можно записать следующим образом:

    program garderob;

    var

    temperatura:integer;

    begin

    write('Температура = ');

    read(temperatura);

    case temperatura of

    -24..-15 : writeln('Шапка-ушанка, фуфайка, ватные штаны, валенки');

    -14..0 : writeln('Шапка, теплая куртка, штаны, ботинки');

    1..10 : writeln('Куртка, штаны, ботинки');

    11..17 : writeln('Ветровка, джинсы, кроссовки');

    18..25 : writeln('Кепка, майка, сандалии');

    26..35 : writeln('Плавки, маска, ласты');

    else writeln('Лучше остаться дома')

    end;

    end.
    Пользователь вводит значение температуры, если это значение расположено в интервале от -24 до +35 градусов цельсия, то программа находит среди констант ту, которая равна введенному значению, и выводит на экран список гардероба, соответствующий этой температуре. Если введенное значение температуры лежит за пределом от -24 до +35, то на экран выводится сообщение из блока else - 'Лучше остаться дома'.

    Несколько важных замечаний

    • Тип селектора должен быть ординальным. То есть он может быть любого типа, кроме вещественного 

    • Тип константы должен совпадать с типом селектора. То есть, если у вас селектор имеет тип integer, то и константы выбора должны быть типа integer;

    • Каждое из постоянных значений должно быть сопоставлено самое большее с одним оператором. То есть, говоря простым языком, константы не должны повторяться;

    • Константы выбора НЕ являются метками. То есть на них нельзя ссылаться в операторе перехода goto.

    <Kонстанта> может быть не только простым числом, но и представлять собой некий диапазон. Запись диапазона происходит следующим образом: <начало>..<конец>Также <константа> может быть задана перечисляемым списком. Такой список записывается через запятую, например (при x:integer):

    case x of

    0, 1, 2 : <операторы 1>;

    3, 4, 5 : <операторы 2>;

    6, 9, 15 : <операторы 3>;

    end;

    через запятую и в одинарных кавычках (при x:char):

    case x of

    'A', 'B', 'C' : <операторы 1>;

    'D', 'E', 'F' : <операторы 2>;

    'Monday', 'Tuesday', 'Wednesday' : <операторы 3>;

    end;


    написать администратору сайта