Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sitkin_Informatika_Programmirovanie_v_DELPHI.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
600.56 Кб
Скачать

Условныйоператор.Неполнаяформа

Неполнаяформаусловногооператораимеетвид

ifусловиеthenоператорS

гдеifиthenслужебные слова;условиепеременная или выра-жение логического типа;операторSоператор, выполняемый, ес-лиусловиеприняло значениеTrue. Блок-схема алгоритма, которыйреализуетусловныйоператорвнеполнойформе,представленанарис.5.1.Принципработыпрост.Сначалавычисляетсязначениеусло-

вия,еслиусловиепринялозначениеTrue,

да

операторS

нет

то выполняетсяоператорS(ветвь «да»),если жеусловиеприняло значениеFalse(ветвь «нет»), тооператорSпропускается,и выполняется оператор, следующий далеепо текступрограммызаусловным.

Рис.5.1

Условныйоператор.Полнаяформа

Полнаяформаусловногооператораимеетвид

IfусловиеthenоператорS1elseоператорS2

здесьif,thenиelseслужебныеслова;условиепеременнаяили

выражениелогическоготипа;

операторS1оператор, выпол-няемый, еслиусловиепринялозначениеTrue;операторS2оператор,выполняемый,если

условиепринялозначениеFalse.

Соответствующаяблок-схемаалгоритмапредставленанарис.5.2.

Нарис.5.3представленыдвавариантаиспользованияусловныхоператоровдлявычислениязначениякусочно-заданнойфункции

x2,

y

x,

x0

x0

сфрагментамисоответствующихблок-схемалгоритмов.

нет

y:=x;

ifx<0theny:= sqr(x);

ifx<0theny:=sqr(x)

elsey:=x;

а б

Рис.5.3

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

ОператорыS,S1иS2(рис. 5.1 и 5.2), входящие в условные опе-раторы, могут быть составными.Составной операторэто группаоператоров, заключённых в операторные скобкиbeginиend. Опера-торы, входящие в составной, в зависимости от условия, либо все вы-полняются, либо все они пропускаются.Пример использования со-ставныхоператороввусловномоператорепредставленнарис.5.4.

ifусловиеthenbegin

операторS11;

операторS12;

end

else

begin

операторS21;

операторS22;

end;

операторS3;

Рис. 5.4

Пример5.1

Разработаемалгоритминапишемпроектдлявычислениязначе-нияфункции

x1, x2

y

1,

x,

2x1 .

x1

Функциязадананатрёхинтервалахразнымизависимостями.Однакопосколькуобластьопределенияфункциинеимеетразрывов,

то достаточно проверить принадлежность аргументаxтолько двуминтервалам и, если он не принадлежит ни первому, ни второму, тоостаётсятолькотретий.Крометого,есливведённыйаргументнепринадлежит первому интервалу, т.е. не выполняется условиеx2,это уже означает, чтоx2, и при проверке принадлежности аргу-ментаxвторомуинтервалудостаточнопроверитьтолькоусловиеx< 1 (а не проверятьусловие2 <x< 1). Таким образом алгоритмбудет избавлен от избыточных проверок. Блок-схема алгоритма пред-ставленанарис.5.5.

Представленнаянарис.5.5блок-схемапредставляетсобойкон-струкциювложенноговетвления(поливариантноеветвление).

Реализуем теперь разработанный алгоритм в проекте. Для вводазначенияаргументаxразместимнаформекомпонентLabeledEdit,длявывода значенияукомпонентLabel, вычисление значения функциисвяжемсощелчком(событиемOnClick)длякнопкиButton.

procedureTForm1.Button1Click(Sender:TObject);

varx,y:real;

begin

x:=StrToFloat(LabeledEdit1.Text);

ifx<=2theny:=x1

elseifx<1theny:=1

elsey:=x;

Label1.Caption:=’y=’+FloatToStr(y);

end;

Рис.5.6

Примерработыприложенияпредставленнарис.5.6.