WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 |
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИИ Томский политехнический университет _ УТВЕРЖДАЮ Декан АВТФ Мельников Ю.С.

“” 2002 г.

ИСПОЛЬЗОВАНИЕ УСЛОВНЫХ ОПЕРАТОРОВ В OBJECT PASCAL Методические указания к лабораторной работе № 132 по курсу “Программирование и основы алгоритмизации” для студентов направления 550200 “Автоматизация и управление” Томск - 2002 УДК 681.3 Использование условных операторов в Object Pascal. Методические указания к лабораторной работе № 132 по курсу “Программирование и основы алгоритмизации ” для студентов направления 550200 “Автоматизация и управление” Составитель Н.М. Семёнов Рецензент к.т.н., доцент Е.И. Громаков Методические указания рассмотрены и рекомендованы методическим семинаром кафедры интегрированных компьютерных систем управления “_” _ 2002 г.

Зав. кафедрой А.М. Малышенко ОГЛАВЛЕНИЕ 1 Оператор if........................................................................................... 4 2 Использование оператора if................................................................ 5 2.1 Интерактивное создание программы BUTTON1............... 5 2.2 Ввод кода программы BUTTON1........................................ 7 2.3 Выполнение программы BUTTON1.................................... 8 3 Оператор case...................................................................................... 8 4 Программа CASE1............................................................................. 9 4.1 Создание программы CASE1............................................... 9 4.2 Настройка компонента Notebook....................................... 10 4.3 Добавление компонента TabSet (набора закладок)........... 11 4.4 Задание содержимого блокнота......................................... 11 4.5 Синхронизация закладок со страницами блокнота........... 12 4.6 Добавление в форму новых управляющих элементов.......13 4.7 Добавление поведения кнопки Close................................. 4.8 Добавление обработчика событий OnClick для кнопки Add.................................................................. 4.9 Запуск программы............................................................. 5 Контрольные вопросы....................................................................... 6 Дополнительные задания................................................................. 7 Литература......................................................................................... Использование условных операторов в Object Pascal Цель работы: Настоящая лабораторная работа призвана познакомить студентов с особенностями использования условных операторов в Object Pascal и развить навыки работы со средой Delphi.

Возможности программы были бы весьма ограничены, если бы всё, что она могла делать, сводилось лишь к монотонному выполнению её операторов одного за другим. Обычно в программе требуется изменить ход выполнения в зависимости от значения логического условного выражения, которое фактически действует как переключатель, выбирающий различные пути выполнения программы.

В Object Pascal (и в Delphi) имеются две условные управляющие конструкции, также называемые структурами принятия решений:

1) оператор if, 2) оператор case.

Выполнение обеих конструкций зависит от оценки входящих в них выражений.

1 Оператор if Синтаксис оператора if соответствует языку Turbo Pascal. Поэтому ограничимся лишь некоторыми замечаниями относительно вложенных операторов if.

Операторы if могут быть вложены друг в друга произвольное число раз. Однако вложенный оператор if, подобный приведённому ниже, содержит потенциальную неоднозначность:

if Condition1 then if Condition2 then Statement else Statement2;

Из приведённого фрагмента кода не ясно (если не брать в расчёт отступы, которые не имеют значения для транслятора), к какому из двух операторов if принадлежит ключевое слово else. Когда будет выполняться операция Statement2 - всякий раз, когда Condition1 равно False, или только в том случае, когда Condition1 равно True, а Condition2 - False Эта неоднозначность устраняется транслятором, который обрабатывает предыдущий пример эквивалентно следующему:

if Condition1 then begin if Condition2 then Statement else Statement2;

end;

Другими словами, else всегда принадлежит последнему “открытому” оператору if, который ещё не имеет части else. Оператор Statement2 выполняется только при условии, что Condition1 равно True, а Condition2 - False.

Хотя операторы if могут быть вложены любое число раз, лучше сводить их вложенность до минимума, поскольку даже при аккуратно проставленных отступах бывает нелегко понять, какому именно оператору if принадлежат различные части then и else.

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

2 Использование оператора if Программа BUTTON1 иллюстрирует использование оператора if. Рис. показывает, как должен выглядеть экран этой программы.

Рис. 1. Программа - пример BUTTON1.

2.1 Интерактивное создание программы BUTTON Для создания этой программы выполните следующие действия:

1. Создайте новый проект с пустой формой.

2. Сохраните модуль формы проекта под именем BUTTON1F.PAS и файл проекта - под именем BUTTON1.DPR.

3. Щёлкните кнопкой мыши на странице Additional палитры компонентов.



4. Поместите в форму вблизи её нижнего края два компонента BitBtn (битовые кнопки). Delphi назовёт их BitBtn1 и BitBtn2. Измените их свойства Name на BtnToggle и BtnClose соответственно.

5. Измените свойство Kind компонента BtnToggle на bkOK, а его свойство Caption - на &Hide.

6. У компонента BtnClose измените свойство Kind на bkCancel и свойство Caption на &Close.

7. Поместите в форму компонент Label страницы Standard палитры компонентов, расположив её над битовыми кнопками. Этот компонент автоматически получит имя Label1.

8. Измените свойство Name компонента Label1 на LblHint.

9. Измените свойство AutoSize компонента LblHint на False, а свойство Alignment - на taCenter.

10. Разместите LblHint в форме таким образом, чтобы она заполнила как можно больше места над кнопками.

11. Измените у LblHint (для этого щёлкните на метке, расположенной на форме) свойство Caption на приведённый ниже текст подсказки для пользователя:

Press the Close button to close the window. Press the other button to hide/unhide the text of this explanation.

В таблице 1 приведены значения свойств компонентов формы BUTTON1.

Таблица 1. Свойства компонентов программы BUTTON1.

Компонент Свойство Установка Form Name FrmHideShow ActiveControl BtnToggle Left Top Caption ‘Text Hide/Show’ Color clYellow Label Name LblHint Left Top Width Height Alignment taCenter AutoSize False WordWrap True Caption ‘Press the Close button to close the window. Press the other button to hide/unhide the text of this explanation.’ Hide/Show Button Name BtnToggle Left Top Width Height TabOrder Kind bkOk Caption &Hide Default True ModalResult mrOK OnClick BtnToggleClick Close Button Name BtnClose Left Top Width Height TabOrder Kind bkCancel Окончание табл.1. Свойства компонентов программы BUTTON1.

Компонент Свойство Установка Cancel True Caption &Close ModalResult mrCancel OnClick BtnCloseClick 2.2 Ввод кода программы BUTTON Ниже приведены шаги, которые Вам надо проделать, чтобы ввести код программы BUTTON1:

1. Дважды щёлкните мышью на кнопке Close. Система Delphi ответит Вам созданием скелета обработчика событий BtnCloseClick. Появится редактор кода с курсором, расположенным между словами begin и end.

2. Вставьте в обработчик событий BtnCloseClick следующий оператор:

Close Теперь, если при работающей программе нажать на кнопку Close, форма закроется и программа завершит работу.

3. Откройте окно Дизайнера форм, чтобы перейти в окно с формой; затем дважды щёлкните мышью на кнопке BtnToggle.

Delphi создаст скелет обработчика событий BtnToggleClick. Опять появится редактор кода с курсором, помещённым между словами begin и end.

4. Находясь в редакторе кода, введите следующий текст программы в созданный Delphi обработчик событий BtnToggleClick:

if LblHint.Visible then begin LblHint.Visible:=False;

BtnToggle.Caption:='&Show';

end else begin LblHint.Visible:=True;

BtnToggle.Caption:='&Hide';

end;

Только что введённая часть программы будет выполняться в ответ на нажатие кнопки BtnToggle. Нажатие кнопки BtnToggle во время выполнения программы будет включать и выключать текст подсказки LblHint. Этот эффект достигается использованием условного оператора if.

Условие в операторе if проверяет, включен ли в данный момент текст подсказки LblHint, по значению её свойства Visible. Если текст подсказки виден, то выполняются операторы раздела if - then, который меняет Visible на False, тем самым убирая текст подсказки с экрана. Одновременно с этим надпись на кнопке BtnToggle меняется с Hide на Show.

Если же текст подсказки не виден, то выполняется раздел else, который изменяет свойство Visible компонента LblHint на True и меняет надпись на кнопке BtnToggle с Show на Hide.

2.3 Выполнение программы BUTTON Ниже приведены шаги, которые надо проделать при запуске программы:

1. Не забудьте сохранить проект перед испытанием программы.

2. Оттранслируйте и запустите программу.

3. Щёлкните мышью на кнопке Hide и убедитесь, что надпись на ней изменилась на Show и текст подсказки исчез. Эти изменения являются следствием выполнения раздела if-then оператора if-then-else в обработчике событий BtnToggleClick.

4. Щёлкните мышью на кнопке Show и убедитесь, что текст подсказки появился вновь. На этот раз сработал раздел else оператора if.

5. Для выхода из программы щёлкните мышью на кнопке Close.

3 Оператор case Необходимость более сжатых условных выражений становится очевидной, если надо выбирать не из двух, а из большего числа альтернативных путей выполнения.

Оператор case - вторая из доступных вObject Pascal структур условного управления - выбирает один из нескольких возможных путей выполнения (ветвей) в зависимости от значения селекторного выражения.

Общий синтаксис оператора case приведён ниже:

case СелекторноеВыражение of Значение11, Значение12,...

Значение1N:Оператор1;

Значение21, Значение22,...

Значение2М:Оператор2;

...

else ОператорПоУмолчанию1;

ОператорПоУмолчанию2;

...

ОператорПоУмолчаниюN;

end.

В операторе case может только присутствовать раздел else - специальный раздел с операторами, выполняемыми по умолчанию, то есть в том случае, когда значение селекторного выражения не соответствует ни одному из списков значений ветвей условного выполнения. Этот раздел вводится с помощью зарезервированного слова else. Блок else внутри оператора case гарантирует, что все возможные случаи учтены, то есть, что независимо от значения селектора по крайней мере один из условных переходов будет выполнен.





Избегайте ветвей с многими операторами везде, где это возможно. С точки зрения читаемости программы гораздо лучше преобразовать группы выполняемых операторов каждой ветви в отдельные процедуры и затем вызывать эти процедуры - уже как одиночные команды - в ветвях оператора case.

В громоздких операторах case, в которых каждая ветвь представляет собой большой блок со сложным кодом, гораздо труднее разобраться, поскольку назначение ветвей этого условного переключателя - оператора case - перестаёт быть очевидным.

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

4 Программа CASE Эта программа в своём первом варианте иллюстрирует концепцию использования оператора case. Этот пример познакомит Вас с некоторыми стандартными компонентами Delphi и покажет, как соединить компоненты между собой, заставляя их работать совместно.

Идея представленной здесь программы - еженедельника CASE1 проста:

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

Главная форма программы CASE1 показана на рис. 2.

Рис. 2. Главная форма программы CASE1.

4.1 Создание программы CASE Чтобы создать программу CASE1, надо проделать следующие шаги:

1. Создайте новый проект с пустой главной формой.

2. Сохраните файл вновь созданной формы в каталоге, предназначенном для проекта CASE1, под именем MAIN.PAS и файл проекта - под именем CASE1.DPR.

(Для этого в меню Файл выберите опции «Сохранить как…», «Сохранить проект как…»).

3. Щёлкните кнопкой мыши в окне Дизайнера форм, чтобы выбрать форму целиком. При этом в комбо - окне списка компонентов Инспектора объектов выберите Form1.

4. Измените свойство Caption формы на CASE1 Yearbook, и свойство Name - на FormMain.

5. Поместите в форму компонент Notebook (блокнот). Для этого сначала выберите страницу палитры Win 3.1, после чего щёлкните кнопкой мыши на пиктограмме компонента Notebook для выбора его, а затем щёлкните на форме приблизительно в том месте, где Вы хотите разместить этот компонент.

4.2 Настройка компонента Notebook Порядок описания Notebook следующий:

1. Выберите в форме компонент Notebook1, затем выберите в Инспекторе объектов его свойство Pages. Щёлкните дважды справа от названия свойства либо нажмите маленькую кнопку с тремя точками, расположенную после поля. При этом вызовется Notebook Editor (редактор настройки компонента Notebook, Редактор блокнота) и откроется его окно, показанное на рис. 3. По умолчанию в блокноте задана только одна страница под названием Default.

Рис. 3. Редактор настройки компонента Notebook - Notebook Editor.

2. Выберите страницу Default и щёлкните на клавише Edit. Появится диалоговое окно Edit Page, показанное на рис. 4.

Рис. 4. Диалоговое окно Edit Page Редактора блокнота.

3.Напишите в поле Page Name слово Jan. Не беспокойтесь о номере контекстной подсказки - пока просто оставьте его равным 0 (нулю).

4. Щёлкните на клавише ОК для сохранения изменений свойств страницы.

5. Теперь щёлкните на кнопке Add диалогового окна Редактора блокнота для добавления новой страницы. Появится окно Add Page, позволяющее ввести название страницы. Введите в качестве названия Feb, оставив номер контекстной подсказки равным 0 (нулю).

6. Повторите предыдущие шаги, создав страницы для остальных месяцев года.

Назовите их Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov и Dec соответственно.

7. По окончании добавления страниц в блокнот нажмите кнопку Close, окно редактора блокнота закроется.

4.3 Добавление компонента TabSet (набора закладок) Порядок действий для включения TabSet в свою форму:

1. Используя Дизайнер форм, добавьте в форму компонент TabSet. Для этого выберите его на странице Win 3.1 палитры компонентов, после чего щёлкните кнопкой мыши в форме прямо под уже размещённым здесь компонентом Notebook.

2. Измените свойство Align компонента Tabset на alBottom. При этом компонент TabSet1 выровняется по нижнему краю формы.

Обратите внимание: - поскольку Вы ещё не задали ни одной закладки, размещённый в форме компонент TabSet1 представляет собой светло - серый прямоугольник без надписи.

В принципе, на этой стадии можно выбрать свойство Tabs для TabSet, вызвав соответствующий редактор свойств, и ввести названия клавиш, которые соответствуют страницам блокнота. Однако при таком подходе растёт вероятность возникновения несоответствий между метками в TabSet и страницами блокнота.

В этом проекте вместо того, чтобы сейчас явно задавать метки TabSet, мы синхронизируем эти два компонента позднее на программном уровне. А пока не беспокойтесь о том, что компонент TabSet не заполнен.

4.4 Задание содержимого блокнота Содержимое блокнота задаётся следующим образом:

Pages:     || 2 | 3 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.