- •Д.С.Ситкин
- •Информатика.
- •Программированиев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
Пример5.2
Разработаем алгоритм определенияотношения (принадлежит или не принад-лежит) точки плоскости с заданными ко-ординатами области, представленной нарис. 5.7 и напишем проект, реализующийэтоталгоритм.
Основнаязадачазаключаетсявформулированииусловийввидесово-
Рис.5.7
купности неравенств, описывающих множество точек, принадлежа-щих выделенной области. Если введённые координаты точки удовле-творяютусловиюпринадлежностиобласти,тоследуетвывестина
форму сообщение, что точка принадлежит области, в противном слу-чаене принадлежит. Представленную область можно разделить надве треугольные части первого и третьего квадрантов. Часть области,относящаяся к первому квадранту, описывается тремя неравенствами:yx;y0;x3. Для попадания точки в первую часть должны выпол-нитьсявсетринеравенстваэтоозначает,чтоихследуетсоединить
связкой
«и», что соответствует
логи-ческойоперацииумноженияand.Второй
части соответствуют
неравен-ства:yx;y0;x3,которыетакжедолжныбытьсоединеныоперациейand.Междусобойдветройкинера-венствследуетобъединитьсвязкой
«или»,чтосоответствуетлогическойоперации сложенияor. Это объясня-ется тем, что если точка принадлежитобласти,тоонапринадлежитлибопервой части, либо второй, но не мо-жетпринадлежатьобеимчастямод-новременно.Описанныйспособре-шенияпредставленввидеблок-схемы
Рис.5.8
алгоритманарис.5.8.
Длявводазначенийкоординат
точки разместим на форме двакомпонентаLabeledEdit, для выводаинформациикомпонентLabel, процесс определения принадлежно-ститочкиобластисвяжемсощелчком(событиемOnClick)длякнопкиButton.
procedureTForm1.Button1Click(Sender:TObject);
varx,y:real;
a,b:boolean;
begin
x:= StrToFloat(LabeledEdit1.Text);y:= StrToFloat(LabeledEdit2.Text);a:=(y<=x)and(y>=0)and(x<=3);b:=(y>=x)and(y<=0)and(x>=-3);
ifaorbthenLabel1.Caption:='Точкапринадлежитобласти'
elseLabel1.Caption:='Точканепринадлежитобласти';
end;
ВданномслучаепривыводерезультатавкомпонентLabel1неиспользовалисьфункциипреобразованийFloatToStr.Этообъясняется
тем,
что выводится не
число-войрезультат,атекст(типString),что
соответствует ти-пу
свойстваCaptionи
преоб-разованияне
нужны.
Примерработыприложения
представленнарис.5.9.
Рис.5.9
Операторвыбора
В тех случаях, когда количество условий становится значитель-ным, использование условных операторов создаёт громоздкие и запу-танные конструкции. Для реализации множественного выбора удобноиспользовать оператор выбора, схема работы которого представленанарис.5.10,асамоператорвобщемслучаеимеет вид
caseключof
константы1:операторS1;
константы2:операторS2;
…………………………………
константыN:операторSN;
elseоператорSN+1;
end;
гдеcase,of,else,endслужеб-ныеслова;ключперемен-ная или выражение порядковоготипа(обычно,целыйилисим-вольныйтипы);константыN
список констант порядковоготипа;операторSNоператор,
Рис.5.10
выполняемый в случае совпадения значенияключасо значением изспискаконстантыN.Еслинеобходимовыполнениенесколькихоператоров в ветви, то они заключаются в операторные скобкиbeginиend.
Сначала вычисляется значениеключа, затем оно сравниваетсясо значениями констант из списков. В случае совпадения выполняетсясоответствующий оператор. Константа не должна входить в несколь-ко списков. Если значениеключане совпало ни с одной из кон-стант из списков, то выполняетсяоператорSN+1. Ветвьelse(опера-торSN+1)можетотсутствовать,тогдаприотсутствиисовпаденийоператор выбора пропускается, такая конструкция соответствует не-полнойформеоператоравыбора.
КомпонентCheckBox(независимыйпереключатель/флажок/)
Предназначендляустановкипараметровсдвумявозможнымисостояниями.Основныесвойствакомпонентаописанывтабл.5.2.
Таблица5.2
ОсновныесвойствакомпонентаCheckBox
-
Свойство
Описание
Name
Имякомпонента.Используетсядлядоступак
компонентуиегосвойствам
Caption
Текстрядомспереключателем
Alignment
Определяетпозициютекстаотносительнопере-ключателя: taRightJustify (справа), taLeftJustify
(слева)
Checked
True/FalseСостояниепереключателя установ-лен(естьгалочка)/сброшен(нет галочки)
AllowGrayed
True/FalseВозможностьнахожденияпереключа-
телявпромежуточномсостоянии
State
Состояниепереключателя.Вотличиеотсвойства
Checked позволяет различать установленное(cbChecked), промежуточное (cbGrayed), сбро-
шенное(cbUnChecked)состояние
WordWrap
True/FalseВозможностьпереносасловнасле-
дующуюстроку
Обычно независимый переключательCheckBoxможет иметь двасостояния, определяемые свойствомChecked: установлен (True)илисброшен (False). Бывает, что переключатель может иметь еще и тре-тье состояниепромежуточное. В этом состоянии переключатель за-крашивается серым цветом. Если переключатель может находиться втрёх состояния, то вместо свойстваCheckedиспользуется свойствоState,авсвойствеAllowGrayedустанавливается значениеTrue.
Состояние независимого переключателя не зависит от состоя-нийдругихпереключателей,отсюда иназваниенезависимый.
КомпонентRadioButton(зависимыйпереключатель)
Предназначендляустановкивзаимоисключающихпараметров.
Основныесвойствакомпонентаописанывтабл.5.3.
ОсновныесвойствакомпонентаRadioButton
Таблица5.3
-
Свойство
Описание
Name
Имякомпонента.Используетсядлядоступак
компонентуиегосвойствам
Caption
Текстрядомспереключателем
Alignment
Определяетпозициютекстаотносительнопере-ключателя: taRightJustify (справа), taLeftJustify
(слева)
Checked
True/FalseСостояниепереключателя установ-лен(есть точка)/сброшен(нет точки)
WordWrap
True/FalseВозможностьпереносасловнасле-
дующуюстроку
На форме должно находиться несколько зависимых переключа-телей. Из группы зависимых переключателей в установленном состо-янииможетнаходитьсятолькоодин,отсюдаиназваниезависимый.
