Статья

Статья Условный оператор. Блок. Оператор выбора

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024





Условный оператор. Блок. Оператор выбора


С.А. Григорьев

Условный оператор в Паскале записывается в виде:

IF логическое выражение THEN оператор/блок [ELSE оператор/блок] логическое выражение - это любое выражение, значение которого имеет тип Boolean, блок - это последовательность операторов, заключенная в логические скобки : BEGIN операторы END; . Перед ELSE никогда не ставится ";" ! Перед END в большинстве случаев можно не ставить ";". Если значение логического выражения TRUE, то выполняется оператор или блок, стоящий после THEN, в противном случае - оператор или блок, стоящий после ELSE. Конструкция ELSE необязательна, условный оператор можно использовать и в усеченном виде, тогда при значении логического выражения FALSE не выполняется никаких действий. Операторы, входящие в условный оператор, сами могут быть условными, т.е. допускается любая вложенность условных операторов. Запишем теперь предыдущую задачу о четырех числах, используя оператор IF :

VAR a,b,c,d : Integer;

BEGIN WRITELN('Введите 4 целых числа, a,b,c и d, среди ',

                'которых должно быть 2 и только 2 одинаковых!');

      WRITE('a='); READ(a); WRITELN; WRITE('b='); READ(a); WRITELN;

      WRITE('c='); READ(a); WRITELN; WRITE('d='); READ(a); WRITELN;

      IF(a=b)AND(a<>c)AND(a<>d)AND(c<>d) OR(a=c)AND(a<>b)AND(a<>d)AND(b<>d)OR

        (a=d)AND(a<>b)AND(a<>c)AND(b<>c)OR(b=c)AND(b<>a)AND(b<>d)AND(a<>d)OR

        (b=d)AND(b<>a)AND(b<>c)AND(a<>c)OR(c=d)AND(c<>a)AND(c<>b)AND(a<>b)

              THEN WRITELN('Вы довольно понятливы')

              ELSE  WRITELN('Вы ошиблись !!!');

            READLN;

       END.

Можно решить эту задачу и другим способом :

      VAR a,b,c,d  : Integer;

      CONST num : Byte = 0;

      BEGIN WRITELN('Введите 4 целых числа, a,b,c и d, среди ',

                       'которых должно быть 2 и только 2 одинаковых!');

             WRITE('a='); READ(a); WRITELN; WRITE('b='); READ(a); WRITELN;

             WRITE('c='); READ(a); WRITELN; WRITE('d='); READ(a); WRITELN;

             IF a=b THEN Inc(num); IF a=c THEN Inc(num); IF a=d THEN Inc(num);

             IF b=c THEN Inc(num); IF b=d THEN Inc(num); IF c=d THEN Inc(num);

             IF num=1 THEN WRITELN('Вы довольно понятливы')

                      ELSE WRITELN('Вы ошиблись !!!');

             READLN;

       END.

Теперь попробуем записать условный оператор, реализующий более сложную логическую структуру. Пусть даны три числа d, m и y, содержащие число, месяц и год для некоторой даты; необходимо выяснить, правильна ли эта дата.

 VAR d,m : Byte; y : Word; Valid : Boolean;

 BEGIN WRITE('Введите дату '); READ(d,m,y);

        IF (m=1)OR(m=3)OR(m=5)OR(m=7)

                OR(m=8)OR(m=10)OR(m=12) THEN

           IF (d>=1)AND(d<=31) THEN Valid:=TRUE

                                ELSE Valid:=FALSE

        ELSE

        IF (m=4)OR(m=6)OR(m=9)OR(m=11) THEN

           IF (d>=1)AND(d<=30) THEN Valid:=TRUE

                                 ELSE Valid:=FALSE

        ELSE

        IF m=2 THEN

          IF (d>=1)AND(d<=28) THEN Valid:=TRUE

        ELSE

        IF d=29 THEN

           IF (y MOD 4=0)AND(y MOD 100>0)

              OR(y MOD 400=0) THEN Valid:=TRUE

                               ELSE Valid:=FALSE

        ELSE Valid:=FALSE

        ELSE Valid:=FALSE;

        IF Valid THEN WRITELN('Дата верна')

               ELSE WRITELN('Дата не верна');

 END.

Оператор выбора во многих случаях удобнее, чем условный оператор,

он записывается в виде :

CASE выражение OF

           список значений : оператор/блок

           ..................................

           список значений : оператор/блок

           [ELSE          оператор/блок]

     END;

Здесь выражение - это любое выражение порядкового типа, список значений - это список разделенных запятыми константных выражений или диапазонов, диапазон - это конструкция вида константное выражение .. константное выражение. Константным будем называть любое выражение, в которое входят только неименованные и нетипизированные константы (т.е. в константное выражение не могут входить имена переменных, функции и типизированные константы). На самом деле константные выражения - это выражения, которые могут быть вычислены до выполнения программы, а отсюда уже и вытекают ограничения на их вид. Выражение, стоящее после CASE, и все константные выражения должны быть одного типа либо все иметь целочисленные типы.

Оператор выбора выполняется следующим образом: вычисляется выражение, стоящее после CASE, затем просматриваются все списки значений, и если значение выражения попало в список значений, выполняется соответствующий оператор или блок, и выполнение оператора CASE заканчивается; если значение выражения не содержится ни в одном из списков, то выполняется оператор или блок, стоящий после ELSE. Конструкция ELSE может отсутствовать, в этом случае оператор CASE может не выполнить никаких действий. В качестве примера использования оператора выбора решим предыдущую задачу о правильной дате.

 VAR d,m : Byte;  y : Word;  Valid : Boolean;

 BEGIN WRITE('Введите дату '); READ(d,m,y);

        CASE m OF

              1,3,5,7,8,10,12 :

               CASE d OF 1..31 : Valid:=TRUE

                          ELSE Valid:=FALSE

               END;

             4,6,9,11 :

               CASE d OF 1..30 : Valid:=TRUE

                          ELSE Valid:=FALSE

               END;

              2 : CASE d OF 1..28 : Valid:=TRUE;

                            29 : Valid:=(y MOD 4=0)AND(y MOD 100>0);

                           ELSE Valid:=FALSE

                 END;

           ELSE Valid:=FALSE;

        END;

        IF Valid THEN WRITELN('Дата верна')

                ELSE WRITELN('Дата не верна');

 END.

Вы можете видеть, что задачи такого типа решаются оператором CASE гораздо проще, чем оператором IF. Решим еще одну задачу: определить, какого рода символ введен - цифра, латинская буква, русская буква или ни то, ни другое и ни третье.

  VAR c : Char;

  BEGIN WRITE('Введите символ '); READ(c);

         CASE c OF

            '0'..'9'             : WRITELN('Вы ввели цифру');

            ' a'..'z','A'..'Z'       : WRITELN('Вы ввели латинскую букву');

            'а'..'п','р'..'я','А'..'Я'  : WRITELN('Вы ввели русскую букву');

            ELSE             WRITELN('Вы ввели неизвестно что !');

          END;

  END.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://elib.albertina.ru/



1. Курсовая на тему Курсовой по ТСП
2. Доклад Католицизм 2
3. Реферат Абу Райхан Беруни и геология
4. Реферат Сущность и содержание бухгалтерского учёта в современных условиях хозяйствования
5. Сочинение на тему Природа в изображении И С Тургенева и И А Бунина
6. Курсовая на тему Технология производства керамического кирпича 2
7. Реферат на тему Критическая философия Канта
8. Реферат на тему Alligator Essay Research Paper The American Crocodile
9. Реферат на тему Holden Caulfield Essay Research Paper This book
10. Реферат Мультифурма