.RU

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

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

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

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

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(ac)AND(ad)AND(cd) OR(a=c)AND(ab)AND(ad)AND(bd)OR

(a=d)AND(ab)AND(ac)AND(bc)OR(b=c)AND(ba)AND(bd)AND(ad)OR

(b=d)AND(ba)AND(bc)AND(ac)OR(c=d)AND(ca)AND(cb)AND(ab)

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.


utopiya-i-antiutopiya-v-nauchnoj-fantastike.html
utoplenie-porazhenie-elektricheskim-tokom-pishevie-otravleniya.html
utverdit-itogovij-otchet-o-realizacii-oblastnoj-celevoj-programmi-ekologiya-podmoskovya-na-2005-2006-godi-prilozhenie-predsedatel-stranica-4.html
utverzhdayu-direktor-gbou-mcfvpgv-ospo-svodnij-plan-meropriyatij-provodimih-v-sisteme-obrazovaniya-goroda-moskvi.html
utverzhdayu-stranica-6.html
utverzhden-ukazom-prezidenta-stranica-20.html
  • predmet.bystrickaya.ru/sistema-podgotovki-kvalificirovannih-rabochih-vo-francii.html
  • zanyatie.bystrickaya.ru/tema-15-rabochaya-programma-disciplini-mezhdunarodnoe-pravo-cikl.html
  • books.bystrickaya.ru/doklad-o-pravovom-statuse-geneticheskih-resursov-v-nacionalnom-zakonodatelstve-otdelnih-stran-v-tom-chisle-v-ih-prave-sobstvennosti-v-sluchayah-primenimosti-stranica-3.html
  • occupation.bystrickaya.ru/na-assortiment-izdatelskoj-produkcii-dlya-komplektovaniya-fondov-bibliotek-muk-cbs-g-irkutska-stranica-8.html
  • shkola.bystrickaya.ru/tehnologii-zashiti-zheleznodorozhnih-vagonov-i-mehanicheskoj-obrabotki-visokotverdih-vosstanovlennih-uprochnennih-i-zakalennih-detalej-zheleznodorozhnogo-transporta.html
  • crib.bystrickaya.ru/iv-dolzhnosti-rabotnikov-administrativno-hozyajstvennogo-i-uchebno-vspomogatelnogo-personala.html
  • control.bystrickaya.ru/bibliografiya-pr-tehnologii-v-sisteme-gosudarstvennogo-upravleniya.html
  • crib.bystrickaya.ru/i-i-mechnikov-v-1894-godu-obratil-vnimanie-na-vozmozhnost-ispolzovaniya-nekotorih-saprofitnih-bakterij-v-borbe-s-patogennimi-mikroorganizmami.html
  • prepodavatel.bystrickaya.ru/tema-uroka-metodi-i-formi-obucheniya.html
  • essay.bystrickaya.ru/dengi-funkcii-sushnost.html
  • ekzamen.bystrickaya.ru/sinibi-8-a-pn-ataui.html
  • composition.bystrickaya.ru/osnovnaya-ispolzovanie-elektivnih-kursov-kak-novoe-napravlenie-estestvennonauchnoj-podgotovki-uchashihsya-starshih-klassov.html
  • learn.bystrickaya.ru/glava-22-na-poroge-xx-veka-bohanov-a-n-gorinov-m-m-istoriya-rossii-s-drevnejshih-vremen-do-konca-xx-veka.html
  • doklad.bystrickaya.ru/vdoklade-rassmotreni-resheniya-sistemi-predostavlyayushie-polzovatelyam-sleduyushie-vozmozhnosti-raboti-v-graficheskom-rezhime.html
  • kolledzh.bystrickaya.ru/7-voprosov-po-pedagogike.html
  • turn.bystrickaya.ru/oprosnij-list-20-uchebno-metodicheskij-kompleks-po-discipline-ugolovnoe-pravo-nizhnij-novgorod-2010.html
  • nauka.bystrickaya.ru/vkus-vizivaetsya-nalichiem-v-vode-rastvorennih-veshestv-i-mozhet-bit-solenim-gorkim-sladkim-i-kislim.html
  • turn.bystrickaya.ru/polozhenie-rabochee-vremya-i-vremya-otdiha.html
  • thesis.bystrickaya.ru/primernaya-programma-disciplini-istoriya-i-teoriya-muziki-stranica-3.html
  • otsenki.bystrickaya.ru/sostavlenie-obosnovanij-polozhenij-shemi-territorialnogo-planirovaniya-stranica-21.html
  • student.bystrickaya.ru/2-metodi-issledovanij-v-menedzhmente-metodicheskie-ukazaniya-po-vipolneniyu-referatov-i-nauchnih-rabot-dlya-studentov.html
  • university.bystrickaya.ru/glava-3-fenomen-levshestva-s-pozicij-nejropsihologii-prakticheskoe-posobie-dlya-psihologov-i-roditelej-m-genezis-2008.html
  • paragraph.bystrickaya.ru/magisterskie-kursi-lekcij-programma-universiteti-rossii.html
  • uchebnik.bystrickaya.ru/virazitelnoe-chtenie-i-ego-rol-v-razvitii-rechi-shkolnikov-nachalnih-klassov-na-primere-shkol-respubliki-tadzhikistan.html
  • tasks.bystrickaya.ru/-2-pravovoj-rezhim-voennih-rashodov-kak-istochnika-finansirovaniya-vooruzhennih-sil-rossijskoj-federacii.html
  • write.bystrickaya.ru/federalnoe-agentstvo-po-obrazovaniyu-gosudarstvennoe-obrazovatelnoe-uchrezhdenie-visshego-professionalnogo-obrazovaniya-irkutskij-gosudarstvennij-universitet-yuridicheskij-institut-martinov-a.html
  • esse.bystrickaya.ru/razdel-3-elementi-obshej-algebri-pridnestrovskij-gosudarstvennij-universitet-im-t-g-shevchenko-inzhenerno-tehnicheskij.html
  • report.bystrickaya.ru/instrukciya-po-deloproizvodstvu-v-organah-i-uchrezhdeniyah-prokuraturi-rossijskoj-federacii-stranica-8.html
  • obrazovanie.bystrickaya.ru/pravitelstvo-rf-vihodit-iz-pod-kontrolya-deputatov-gosdumi-novosti-10.html
  • college.bystrickaya.ru/-v-gorode-projdet-edinij-parad-pobedi-informacionnij-byulleten-mestnogo-samoupravleniya-izdaetsya-asdg-po-soglasheniyu.html
  • obrazovanie.bystrickaya.ru/pourochno-tematicheskoe-planirovanie-rabochaya-programma-po-uchebnomu-predmetu-anglijskij-yazik.html
  • laboratornaya.bystrickaya.ru/r-sh-zhemuhov-antropogennoe-izmenenie-klimata-i-upravlenie-vodnimi-i-zemelnimi-resursami-orositelnoj-sistemi.html
  • tests.bystrickaya.ru/kopchenie.html
  • institute.bystrickaya.ru/glava-17-zakat-krepostnoj-epohi-bohanov-a-n-gorinov-m-m-istoriya-rossii-s-drevnejshih-vremen-do-konca-xx-veka.html
  • pisat.bystrickaya.ru/telnost-buzhdeniya-otricatelnih-emociogennih-centrov-vovlecheniya-kurs-fiziologii-funkcionalnih-sistem.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.