- •Д.С.Ситкин
- •Информатика.
- •Программированиевdelphi
- •Лабораторныйпрактикум
- •Содержание
- •Введение
- •Основныепонятияпрограммирования
- •Этапыпрограммирования
- •Средаdelphi.Созданиепростейшегопроекта
- •Формаиеёсвойства
- •Компонентыформыиихсвойства
- •КомпонентLabeledEdit
- •Событиеипроцедураобработкисобытия
- •Пример1.1
- •Компиляцияизапускпроектанаисполнение
- •Структураисохранениепроекта
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Линейныйалгоритм
- •Типыданных
- •Константыипеременные
- •Арифметическиеоперации
- •Правилазаписитиповыхдействий
- •Структурапроцедурыобработкисобытия
- •Пример2.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Подпрограммы
- •Классификацияиструктураподпрограмм
- •Механизмработыподпрограммыиобменапараметрами
- •Пример3.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Структурамодуля
- •Созданиеиподключениемодуля
- •Пример4.1
- •Условныйоператор.Неполнаяформа
- •Условныйоператор.Полнаяформа
- •IfусловиеthenоператорS1elseоператорS2
- •Пример5.1
- •Пример5.2
- •Операторвыбора
- •Пример5.3
- •Содержаниеотчёта
- •Контрольныевопросы
- •Контрольсинтаксисавводимыхданных
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Алгоритмыповторений
- •Операторцикласпредварительнымусловием
- •Пример7.1
- •Операторцикласпараметром(сосчётчиком)
- •Пример7.2
- •Пример7.3
- •Операторцикласпоследующимусловием
- •Пример7.4
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Массивы
- •Объявлениемассива
- •Обработкамассивов
- •Пример8.1
- •Динамическиемассивы
- •Подпрограммасоткрытымпараметром-массивом
- •Пример8.2
- •Целесообразностьвыделенияпамятиподмассивы
- •Контрольсинтаксисаэлементовмассива
- •Задание
- •Обработкамногомерныхмассивов
- •Пример9.1
- •КомпонентStringGrid
- •Пример9.2
- •Сортировкамассивов
- •Пример9.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Внешниефайлы
- •Физическиеилогическиефайлы
- •Классификациялогическихфайлов
- •Процедурыифункцииобработкифайлов
- •Пример 10.1
- •КомпонентыOpenDialog иSaveDialog
- •Пример 10.2
- •Пример 10.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Олабораторнойработе
- •Информатика. Программированиев delphi
Условныйоператор.Неполнаяформа
Неполнаяформаусловногооператораимеетвид
ifусловиеthenоператорS
гдеifиthenслужебные слова;условиепеременная или выра-жение логического типа;операторSоператор, выполняемый, ес-лиусловиеприняло значениеTrue. Блок-схема алгоритма, которыйреализуетусловныйоператорвнеполнойформе,представленанарис.5.1.Принципработыпрост.Сначалавычисляетсязначениеусло-
вия,еслиусловиепринялозначениеTrue,
|
|
|
да |
|
|
операторS |
|
|
|
|
|
|
||
нет
то выполняетсяоператорS(ветвь «да»),если жеусловиеприняло значениеFalse(ветвь «нет»), тооператорSпропускается,и выполняется оператор, следующий далеепо текступрограммызаусловным.
Рис.5.1
Условныйоператор.Полнаяформа
Полнаяформаусловногооператораимеетвид
IfусловиеthenоператорS1elseоператор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, x2
y
1,
x,2x1 .
x1
Функциязадананатрёхинтервалахразнымизависимостями.Однакопосколькуобластьопределенияфункциинеимеетразрывов,
то
достаточно проверить принадлежность
аргументаxтолько двуминтервалам
и, если он не принадлежит ни первому, ни
второму,
тоостаётсятолькотретий.Крометого,есливведённыйаргументнепринадлежит
первому интервалу, т.е. не выполняется
условиеx2,это
уже означает, чтоx2,
и при проверке принадлежности
аргу-мента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:=x1
elseifx<1theny:=1
elsey:=x;
Label1.Caption:=’y=’+FloatToStr(y);
end;
Рис.5.6
Примерработыприложенияпредставленнарис.5.6.
