Pascal. Операторы условного и безусловного перехода

      Комментарии к записи Pascal. Операторы условного и безусловного перехода отключены

Главная Форумы Программирование Программирование на Pascal Паскаль для школьников (учебник) Pascal. Операторы условного и безусловного перехода

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 мес. назад.

  • Автор
    Сообщения
  • #3733

    Оператор безусловного перехода

    Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора Goto, смысловое значение в программе «перейти к …», а его общий вид такой:

    Goto m;

    m – метка, заранее заданная в разделе описания меток. Следующая программа показывает как работает оператор безусловного перехода.

    program goto_primer; {имя программы}
    uses crt;            {подключение модуля}
    label m;             {описание метки m}
    begin
      write('Karl Marx '); {вывод строки}
      goto m;              {требование перейти к метки}
      write('clever');     {этот оператор пропускается}
      m: write('fool');    {выполняется переход в эту область}
      readkey;             {для останова программы}
    end.

    В этой программе нет никаких условий, но именно о них будет идти далее речь.
    Условный оператор

    В Паскале проверить какую-то часть программы для определения дальнейшего пути, по которому ей следует идти, есть оператор If. В зависимости от выполнения логического условия он указывает, какой блок выполниться следующим. Существует две формы записи: полная и краткая. Вторая отличается от первой тем что в ней имеется ветвь Else (иначе).

    Общий вид краткой формы:

    If <условие A> Then <оператор 1>;

    Общий вид полной формы:

    If <условие A> Then <оператор 1>
    
    Else <оператор 2>;

    В краткой форме выполняется оператор 1 тогда, когда условие A истинно, иначе управление переходит к следующему оператору. В полной форме если условие A истинно, то выполняется оператор 1, иначе выполняется оператор 2. Следует запомнить, что перед else точка с запятой не ставится.

    Пример программы с условным оператором, записанным в краткой форме:

    program if_else;
    uses crt;
    var Dima, Misha: integer;
    begin
      Misha:=18;
      write('Сколько лет Диме? '); {вывод сообщения}
      read(Dima);                  {ввод данных}
      if Dima=Misha then  {если возраст Димы равен возрасту Мише, то ...}
        write('Миша и Дима ровесники');
      readkey;
    end.

    Пример программы с условным оператором, записанным в полной форме:

    program if_else;
    uses crt;
    var Dima, Misha: integer;
    begin
      Misha:=18;
      write('Сколько лет Диме? ');
      read(Dima);
      if Dima=Misha then (* если возраст Димы равен возрасту Мише,
        то выполняется оператор 1 *)
        write('Миша и Дима ровесники') {оператор 1}
      else write('Миша и Дима не ровесники'); {иначе ...}
      readkey;
    end.

    В Паскале можно вкладывать один условный оператор в другой, причем делать это можно множество раз. При этом следует отметить, что каждому Then соответствует ближайшее Else.

    Оператор выбора

    Когда количество альтернатив больше двух применяется оператор выбора Case. Его вид:

    Case <селектор> Of
    
    <значение селектора>: <оператор 1>;
    
    <значение селектора>: <оператор 2>;
    
    . . .
    
    <значение селектора>: <оператор N>;
    
    Else <оператор>
    
    End;

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

    1) перечислением: 1, 10, 100, 1000

    2) диапазоном: ‘d’..’k’

    3) перечислением и диапазоном: 1..10, 20, 30, 50, 70..100

    Выполнятся в операторе выбора, может только одна ветка (идущая раньше), даже когда селектор совпадает с несколькими значениями. Также, в отличие от If в Case можно ставить точку с запятой перед Else.

    Рассмотрим программу, в которой условия проверяет оператор выбора.

    program case_primer;
    uses crt;
    var money: char;
    begin
      write('Первая буква кода денежной единицы: ');
      readln(money); {ввод значение в переменную}
      case money of
       'A', 'a': writeln ('Французский франк');
       'B', 'b': writeln ('Динар');
       'C', 'c': writeln ('Юань');
       'E', 'e': writeln ('Испанская песета');
       'G', 'g': writeln ('Английский фунт стерлингов');
       'I', 'i': writeln ('Итальянская лира');
       'J', 'j': writeln ('Иена');
       'R', 'r': writeln ('Рубль');
       'U', 'u': writeln ('Доллар США');
       'X', 'x': writeln ('Восточнокарибский доллар');
       else writeln ('Неизвестная единица')
      end;
      readkey;
    end.

    Программа проверяет селектор на соответствие его с имеющимися значениями. Если совпадений не находится, то выполняется блок Else.

Для ответа в этой теме необходимо авторизоваться.