Главная/Раздел 2

 

 

Главная

 

 Раздел 1

 

Раздел 2

 

Раздел 3

 

Раздел 4

 

Раздел 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управляющие конструкции языка.
Оператор безусловного перехода

Практически невозможно научить
хорошо программировать студентов,
ориентированных первоначально на
Бейсик: как потенциальные программисты
они умственно оболванены без надежды
на исцеление.
Эдсгер Дейкстра.

В языке программирования Паскаль, и следовательно в системе программирования Turbo Pascal 7.0 поддерживаются современные методологии проектирования программ (нисходящее, модульное проектирование, структурное программирование). Концепция структурного программирования пришла в своё время на смену линейному программированию, реализованному в таких языках программирования как Бейсик. В настоящее время наиболее применяемой является структурная концепция программирования. В структурном программировании принят естественный порядок выполнения программы: все операторы выполняются последовательно один за другим в том порядке, как они записаны. Для структурированных программ характерны легкость отладки и корректировка, низкая частота ошибок. Описанный в данной лабораторной работе безусловный оператор, строго говоря просто "запрещён" структурной концепцией как грубо нарушающий её основные принципы, и является "атавизмом" оставшимся как воспоминание о более примитивном линейном программировании. Система программирования Turbo Pascal 7.0 обладает достаточно мощными средствами, позволяющими полностью отказаться от применения этого оператора. Учитывая все описанные выше причины, настоятельно рекомендуется вообще отказаться от использования оператора безусловного перехода, или свести его применение к минимуму. Если же вы всё-таки решили применить его в своей программе, то вы должны помнить, что использовать этот оператор следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного (составного) оператора, т.к. он может дать неправильный результат, с помощью оператора перехода, расположенного вне условного оператора или оператора цикла, нельзя перейти внутрь этого условного оператора или оператора цикла и т.д.

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

Оператор безусловного (быстрого) перехода GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора.

Форма записи оператора.

GOTO <метка>

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

Описание меток.

Метки используемые в TP, могут быть двух типов: - целым числом в диапазоне от 0 до 9999; - обычным идентификатором.

Все перечисленные метки должны быть перечислены в разделе объявления меток, начинающимся зарезервированным словом label, например: label 1, 2, Metka;

Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием. Метка может устанавливаться перед любым оператором, в том числе и перед пустым оператором. Например:
1: Write('Привет ');

Пустой оператор.

Пустой оператор не предписывает никаких действий. По определению он представляет собой пустую совокупность символов. Как и все операторы, пустой оператор может быть помечен меткой. Примеры программ.

  П р и м е р   1.
     Найти частное от деления целых чисел.

PROGRAM Ex_1;

  Label
     Out;                        {описание метки}

  Var                            {описание переменных}
     X,Y,Res: Integer;

Begin

     Write('Введите делимое:  ');   {вывод сообщения на экран}
       Readln(X);                         {ввод числа}
     Write('Введите делитель:  ');
       Redln(Y);
     if Y = 0 then                        {ветвление}
              begin                         {составной оператор}
                Writeln('деление на ноль');
                GOTO Out;                {использование GOTO}
              end;
       Res := X div Y;
     Write('Частное = ',Res);

  Out:                              {метка на "пустой" оператор}

End.

     П Р И М Е Р    2.
    

Программа определения частного действительных чисел, исключающая деление на ноль, и производящая запрос об окончании работы программы. PROGRAMM Ex_2; Label 1, 2; Var x,y,res: real; s: byte; Begin 1: Write('Введите делимое: '); Readln(x); Write('Введите делитель: '); Readln(y); if Y = 0 then begin Writeln('деление на ноль'); GOTO 2; end; res := x/y; Writeln('Частное = ',res); 2: Write('Продолжить вычисления? 1-да, 2-нет. : '); Readln(s); if s = 1 then GOTO 1; End.

Контрольные вопросы.

  1. Назовите причины нежелательного использования оператора безусловного перехода.
  2. Что такое метка? Как она описывается и используется?
  3. Что такое пустой оператор?

Задания для самостоятельного выполнения.

  1. Напишите программу "калькулятор", позволяющую вычислять по выбору одну из четырёх основных арифметических операций. Снабдите программу запросом об окончании работы.
  2. Напишите программу выбора наибольшего из трёх, введённых с клавиатуры действительных чисел, и производящую запрос об окончании работы.
  3. Напишите программу вычисления квадратного корня из числа введённого с клавиатуры. Исключите вычисление корня из отрицательных чисел и нуля. Снабдите программу запросом об окончании работы.
  4. Напишите программу, которая выводит название дня недели по номеру дня введённому с клавиатуры. Исключите несуществующие номера дней недели и снабдите программу запросом об окончании работы.
  5. Напишите программу, которая возводит действительное число, введённое с клавиатуры, в степень, введённую с клавиатуры в диапазоне от 2 до 9. Исключите несуществующие (меньше 2 и больше 9) степени, и снабдите программу запросом об окончании работы.
  6. Напишите программу, которая выводит на экран квадраты целых чисел от числа a до числа b.
  7. Напишите программу вычисления значения функции y=x^2-16x+32 для x от 1 до 10 с шагом 0,25.
  8. Напишите программу вычисления функции
     
             + x^3,  при x>0
         y = ¦ x^2,  при -2>=x>=0
             + x,    в остальных случаях
       для x в диапазоне от -5 до 5 с шагом 0,5.
    
  9. Напишите программу вычисления функции
     
              4x^2+16(x+2)
       f(x) = ------------ для x от a до b с шагом d введённым 
                   2x                            c клавиатуры.
       
  10. Напишите программу отпределения времени года по порядковому номеру недели. Снабдите программу запросом об окончании работы.
     назад                            ДАЛЕЕ


 

 

 

 

 

 

 

 

 

 

 

 :::

 

 :::

 

 

 

 

 

 

 

Сайт создан в системе uCoz