.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/sabati-tairibi-oip-jrenud-negzg-masattari-sa-sani-merzm-oituda-oldanilatin.html
  • university.bystrickaya.ru/glava-osma-obuchitelni-institucii-uchebnikt-vklyuchva-temi-otnasyashi-se-do-predmeta-metodologiyata-i-sistemata-na-uchebnata.html
  • education.bystrickaya.ru/12-zdravoohranenie-otchet-o-socialno-ekonomicheskom-razvitii-mo-viborgskij-rajon-leningradskoj-oblasti.html
  • tetrad.bystrickaya.ru/vi-semestr-metodika-obucheniya-matematike-v-5-6-klassah-algebre-i-geometrii-v-7-klasse-44.html
  • holiday.bystrickaya.ru/nevrologiya-nejrohirurgiya-psihiatriya-psihoterapiya-bibliograficheskij-ukazatel-novih-postuplenij-v-rnmb-yanvar-fevral-2006-g.html
  • reading.bystrickaya.ru/meri-bezopasnosti-pri-tehnicheskom-obsluzhivanii-i-remonte.html
  • studies.bystrickaya.ru/deyatelnoe-raskayanie-v-sovershennom-prestuplenii.html
  • vospitanie.bystrickaya.ru/zapros-kotirovok-cen-ot-15-marta-2012g-dokumentaciya-o-zaprose-kotirovok-cen.html
  • assessments.bystrickaya.ru/deputat-ot-matrosskoj-tishini-ria-novosti.html
  • spur.bystrickaya.ru/medvedev-poruchil-tshatelno-rassledovat-prichini-krusheniya-teplohoda-na-volge-informacionnoe-agentstvo-regnum-10072011.html
  • exchangerate.bystrickaya.ru/glava-8-shagayu-po-arbatu-na-svidanie-tatyana-nikolaevna-egorova.html
  • essay.bystrickaya.ru/chast-2-yurij-nikitin.html
  • composition.bystrickaya.ru/ohorona-prac-zhnok-nepovnoltnh-nvaldv.html
  • universitet.bystrickaya.ru/svadba-v-slovenii-oficialnie-svadebnie-ceremonii-za-granicej.html
  • literatura.bystrickaya.ru/sleng-kak-yavlenie-v-sovremennoj-lingvistike.html
  • bukva.bystrickaya.ru/mineralnie-vodi-ukraini-ih-lechebnoe-znachenie.html
  • literatura.bystrickaya.ru/spisok-nominantov-na-soiskanie-respublikanskoj-premii-im-m-dzhalilya.html
  • uchebnik.bystrickaya.ru/uchebniki-dlya-vseh-urovnej-obucheniya-instrukcii-po-tehnicheskim-ustrojstvam-opisaniya-yazikov-programmirovaniya-specifikacii-nauchno-populyarnie-knigi-starie-raboti-i-drugie.html
  • education.bystrickaya.ru/13-teoriya-i-ee-struktura-druzhinin-v-n-eksperimentalnaya-psihologiya-uchebnoe-posobie.html
  • doklad.bystrickaya.ru/vladet--navikom-raboti-s-uchashimisya-klassov-korrekcii-obrazovatelnie-tehnologii.html
  • composition.bystrickaya.ru/perfekcionizm-v-strukture-lichnosti.html
  • tests.bystrickaya.ru/kontrolnaya-rabota-po-istorii-gosudarstva-i-prava-rossii-variant-2.html
  • bukva.bystrickaya.ru/razdelitelnij-sillogizm-chast-3.html
  • education.bystrickaya.ru/4-instituti-i-mehanizmi-ekonomicheskoj-diplomatii-i-ekonomicheskaya-diplomatiya-i-ee-sushnost-3.html
  • universitet.bystrickaya.ru/tom-ii-materiali-po-obosnovaniyu-proekta-generalnogo-plana-shuberskogoselskogo-poseleniya-novousmanskogo-municipalnogo-rajona.html
  • literatura.bystrickaya.ru/sotrudniki-mchs-obespechat-bezopasnost-na-izbiratelnih-uchastkah-kamchatki-informacionnoe-agentstvo-regnum-01122011.html
  • ucheba.bystrickaya.ru/programma-informatizacii-shkoli-na-2006-2009-gg-adres-shkoli-stranica-6.html
  • spur.bystrickaya.ru/metodi-opredeleniya-antagonisticheskoj-aktivnosti-molochnokislih-bakterij.html
  • tetrad.bystrickaya.ru/visshij-arbitrazhnij-sud-rossijskoj-federacii-opredelenie-ot-10-dekabrya-2010-g-n-vas-890510-o-peredache-dela-v-prezidium-visshego-arbitrazhnogo-suda-rossijskoj-federacii.html
  • zadachi.bystrickaya.ru/obrasheniya-grazhdan-v-federalnie-organi-ispolnitelnoj-vlasti-chast-6.html
  • thescience.bystrickaya.ru/kaznit-nelzya-pomilovat-ili-staraya-skazka-na-novij-lad.html
  • assessments.bystrickaya.ru/doklad-pasport-subekta-rossijskoj-federacii-kak-instrument-regionalnogo-monitoringa.html
  • assessments.bystrickaya.ru/bilyaletdinov-i-belov-budut-rabotat-v-sbornoj-s-polnoj-otdachej-fhr-rossijskij-sport-v-inostrannih-smi-po-materialam.html
  • literature.bystrickaya.ru/ekonomicheskaya-effektivnost-proizvodstva-moloka.html
  • control.bystrickaya.ru/celevoj-programmi-kultura-rossii-2006-2011-godi-na-2009-god-stranica-6.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.