После запуска программы пользователь вводит свое имя, например, Александр, в прямоугольник с мигающим текстовым курсором и нажимает клавишу Enter. Появляется вопрос: "Александр, ты любишь читать?". Если пользователь нажмет на клавишу
Вид материала | Практическая работа |
- При исполнении этой программы появляется пустой экран. После нажатия на клавишу пробел, 1052.99kb.
- Tab, а при переходе на новую строку таблицы нажимая клавишу Enter, 73.87kb.
- Задача А. Однорукий программист Ограничение по времени: 2 секунды, 144.33kb.
- Настройка модема Billion на работу в сети “Megaline”, 85.54kb.
- А Пользователь обязуется оплатить стоимость лицензии на его использование в размере,, 32.9kb.
- Минский Институт Управления Факультет: Учетно финансовый, Финансы и Кредит. Специальность, 57.68kb.
- Справочник «Клиенты», 1818.27kb.
- «реальное время», 245.33kb.
- Взаимодействие локальных и глобальных сетей, 772.19kb.
- Лекция 5 Тема: Программное обеспечение средств вычислительной техники Классификация, 237.53kb.
Практическая работа №1
Разработка проекта ДИАЛОГ
Постановка задачи
Создать программу, выполняющую следующие действия.
![]() | Создать программу, выполняющую следующие действия. После запуска программы пользователь вводит свое имя, например, Александр, в прямоугольник с мигающим текстовым курсором и нажимает клавишу Enter. Появляется вопрос: "Александр, ты любишь читать?". Если пользователь нажмет на клавишу Да, то должна появиться реплика: "Молодец!", если он нажмет на клавишу Нет, то появится реплика: "Почему же? Надо читать". |
План разработки программы, №1
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов в соответствии с рисунком.

3. Сохранить код программы и проект под именами, например, Unit2.pas и Pr2.dpr.
4. Запустить программу, затем закрыть окно проекта, щелкнув на кнопке Выход.
5. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Form1 | Properties | Caption | Диалог |
BitBtn1 | Properties | Caption | &Выход |
Kind | bkClose | ||
Label1 | Properties | Caption | Введи свое имя и нажми Enter |
Edit1 | Events | OnKeyPress | If key=#13 then begin Label2.Caption:=Edit1.Text + ', ты любишь читать?’; end; |
Button1 | Properties | Caption | Да |
Events | OnClick | Label3.Caption:=‘Молодец!’; | |
Button2 | Properties | Caption | Нет |
Events | OnClick | Label3.Caption:=‘Почему же? Надо читать.’; | |
Label2 | Properties | Caption | Удалить название объекта |
Label3 | Properties | Caption | Удалить название объекта |
6. Сохранить проект окончательно, запустить и протестировать его.
Задание для самостоятельного выполнения, №1
| Задание | Подсказка |
1 | Сделать кнопки Да и Нет доступными только после ввода имени и нажатия клавиши Enter. | Значение свойства Enabled кнопок Да и Нет установить равными False, а в процедуруEdit1KeyPressed включить, код: Button1.Enabled := true; Button2.Enabled := true; |
2 | Удалить имена компонентов Edit1, Label2, Label3 для обеспечения возможности повторить диалог. | Разместить на форме еще одну кнопку BitBtn. Установить значение bkRetry свойства Kind, и значение &Повторить свойства Caption. Ввести программно по нажатию кнопки Повторить пустые строки вместо надписей и имен кнопок: Label2.Caption := ''; Label3.Caption := ''; Edit1.Text := ''; |
3 | Ввести дополнительную кнопку Повторить, которая позволяет повторно выполнить задание. Сделать так, чтобы при повторении диалога строка ввода была бы снова активной. | Ввести команду: Form1.ActiveControl := Edit1. |
Практическая работа №2
Разработка проекта СПРАВОЧНИК
Постановка задачи
Создать программу, выполняющую следующие действия.
![]() | После запуска программы пользователь выбирает с помощью мышки или стрелок название цвета и нажимает клавишу Enter. На экране появляется название цвета на русском языке и код в формате RGB. Программа заканчивает свою работу по нажатию клавиши Выход. |
План разработки программы, №2
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов в соответствии с рисунком.

3. Сохранить код программы и проект под именами, например, Unit3.pas и Pr3.dpr.
4. Запустить программу, затем закрыть окно проекта, щелкнув на кнопке Выход.
5. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Form1 | Properties | Caption | Справочник |
BitBtn1 | Properties | Caption | &Выход |
Kind | bkClose | ||
Label1 | Properties | Caption | Справочник записи цвета в формате RGB |
Label2 | Properties | Caption | Цвет в формате RGB |
Label3 | Properties | Caption | Удалить название объекта |
6. Выделить объект ListBox1, найти свойство Items, щелкнуть на кнопке с тремя точками, расположенными справа от него. В появившемся окне встроенного редактора ввести названия цветов, каждый на новой строке.

7. Сохранить набранный текст под именем Color.txt. Для этого нажмите правую клавишу мыши и выберите режим Save. Для выхода из встроенного редактора щелкните на кнопке OK.
8. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
ListBox1 | Events | OnKeyPress | if key=#13 then Case Listbox1.ItemIndex of 0: Label3.Caption:='черный 000000'; 1: Label3.Caption:='белый FFFFFF'; 2: Label3.Caption:='красный FF0000 '; 3: Label3.Caption:='зеленый 00FF00'; 4: Label3.Caption:='бирюзовый 00FFFF'; 5: Label3.Caption:='синий 0000FF '; 6: Label3.Caption:='фиолетовый FF00FF'; 7: Label3.Caption:='желтый FFFF00'; 8: Label3.Caption:='коричневый 996633 '; 9: Label3.Caption:='оранжевый FF8000 '; 10: Label3.Caption:='лиловый 8000FF '; end; |
9. Сохранить проект окончательно, запустить и протестировать его.
Задание для самостоятельного выполнения, №2
| Задание | Подсказка |
1 | Изменить шрифты, цвет экрана и букв. | Возможно, придется в коде программы подкорректировать количество пробелов между названием цвета и его кодом. |
2 | Сделать так, чтобы при установке курсора мыши в поле ListBox1, появлялась подсказка о том, что надо сделать. | Воспользуйтесь свойствами Hint (текст сообщения), Showhint (показывать ли сообщение) объекта ListBox1. |
3 | Внести изменения в программу, чтобы для надписей цвета и формата RGB использовались два отдельных объекта Label. | |
4 | Внесите изменения в программу для того, чтобы исходные данные о таблице цветов задавались в массиве. | |
5 | Сделать так, чтобы выбор цвета в окне ListBox1 осуществлялся ни только по нажатию клавиши Enter, но и при щелчке мыши. | Для компоненты ListBox1 в обработчике события OnClick вставить те же действия, которые описаны в п.8 Плана разработки. |
Практическая работа №3
Разработка проекта СЛОВАРЬ
Постановка задачи
Разработать программу для составления словаря новых терминов.
![]() | Должна иметься возможность внесения в словарь изменений, дополнений или сокращения его. На форме должны отображаться текущий номер записи и общее количество записей в словаре. |
План разработки программы, №3
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов в соответствии с рисунком.

3. Сохранить код программы и проект под именами, например, Unit4.pas и Pr4.dpr.
4. Запустить программу, затем закрыть окно проекта, щелкнув на кнопке Выход.
5. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Form1 | Properties | Caption | Словарь |
BitBtn1 | Properties | Caption | &Выход |
Kind | bkClose | ||
ComboBox1 | Properties | Text | Вставка пробела |
Item | Открытие двойным щелчком списка String list editor. Ввод нескольких терминов, сохранение их в файле Glostext.txt, предварительно убедившись, что выбрана нужная папка (см. практическую работу №4 п.7). |
6. Запустить программу, щелкнуть на стрелке компонента ComboBox1, выбрать из открывшегося списка любой термин, а затем убедиться, что текст, набираемый в строке ввода, в список не вносится. После этого закрыть проект кнопкой Выход.
7. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Button1 | Properties | Caption | Довавить |
Events | OnClick | ComboBox1.Items.Add (ComboBox1.Text); if ComboBox1.ItemIndex = -1 then ComboBox1.Text :=‘’; Последний оператор очищает строку ввода после того, как текст из нее попадает в список. |
8. Запустить программу и убедиться, что набранные в строке ввода слова после нажатия кнопки Добавить добавляются в список ComboBox1.
9. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Button2 | Properties | Caption | Удалить |
Events | OnClick | If MessageDlg('Вы действительно хотите удалить запись?', mtWarning, [mbYes, mbNo], 0) = mrYes then ComboBox1.Items.Delete(ComboBox1.ItemIndex); |
Пояснения.
Условие If MessageDlg... означает, что при нажатии кнопки Удалить появится диалоговое окно с вопросом 'Вы действительно хотите удалить запись?' с двумя кнопками Yes и No. Предварительно выбранный термин будет удален из списка только при нажатии кнопки Yes.
MessageDlg является функцией с четырьмя аргументами:
1. Сообщение, которое нужно отобразить, в одинарных кавычках.
2. Тип диалогового окна - константы: mtWarning, mtError, mtInformation, mtConformation, определяющие специальную пиктограмму и заголовок диалогового окна.
3. Список констант в квадратных скобках, определяющих присутствующие в окне кнопки. Возможные значения - mbYes, mbNo, mbCancel, mbHelp.
4. Число, с которым ассоциирована тема справки. Оно отлично от нуля, если в окне присутствует кнопка mbHelp, а программа имеет связанный с ней файл справки Windows.
Функция MessageDlg возвращает константу, определяющую нажатую пользователем кнопку.
10. Запустить программу, добавить в список и (или) удалить несколько строк, закрыть ее, а затем снова запустить. Заметим, что внесенные изменения не сохранились. Это связано с тем, что в ComboBox загружается первоначальный список.
11. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Button4 | Properties | Caption | Сохранить |
Events | OnClick | ComboBox1.Items.SaveToFile (‘glostext.txt’); | |
Form1 | Events | OnCreate | ComboBox1.Items.LoadFromFile (‘glostext.txt’); |
Пояснения.
Теперь при создании формы в список ComboBox1 будет загружаться содержимое файла ‘Glostext.txt’, а измененный список запоминается в нем при нажатии кнопки Сохранить.
12. Выполнить следующие действия:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Button3 | Properties | Caption | Редактировать |
ComboBox1 | Events | OnClick | num:= ComboBox1.ItemIndex; Предварительно описать в разделе Var целочисленную переменную num. |
Button3 | Events | OnClick | ComboBox1.Items.Delete (num); ComboBox1.Items.Add (ComboBox1.Text); if ComboBox1.ItemIndex = -1 then ComboBox1.Text:=‘’; |
Пояснения.
1. Для исправления ошибок, замеченных в строках списка, выделенную строку надо удалить из списка, а исправленную строку (т.е. содержимое строки ввода) добавить в список.
2. Новая переменная num необходима для сохранения номера выбранной строки. При внесении изменений выбранной строкой становится строка ввода, для которой ItemIndex = -1.
13. Для кнопок Добавить, Редактировать, Удалить для сохранения внесенных изменений необходимо добавить:
Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Events | OnClick | ComboBox1.Items.SaveToFile (‘Glostext.txt’); |
14. Запустить программу и убедиться, что если выбрать строку, исправив ее, а затем щелкнуть на кнопке Редактировать, то измененная строка попадет в конец списка.
15. Предусмотреть режим работы со списком, допускающий только чтение.
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
CheckBox1 | Properties | Caption | Только чтение |
Events | OnClick | if CheckBox1.Checked = False then ComboBox1.Style:= csDropDown else ComboBox1.Style:= csDropDownList; Свойство Checked у выбранного выключателя имеет значение True, а в исходном состоянии - значение False. |
Пояснения.
Комбинированные списки бывают 3 типов:
простые (simple) - список всегда открыт;
раскрывающиеся (drop down) - список свернут;
неизменяемые (drop down list) - список свернут и возможен только выбор элемента из списка.
16. В режиме Только чтение, сделать недоступной кнопку Добавить:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
CheckBox1 | Events | OnClick | if CheckBox1.Checked = false then Button1.Enabled := true else Button1.Enabled := false; |
Аналогично сделать недоступными кнопки Редактировать, Удалить, Сохранить.
17. Сохранить проект окончательно, запустить и протестировать его.
Задание для самостоятельного выполнения, №3
| Задание | Подсказка |
1 | Предусмотреть возможность добавления терминов в список не только при щелчке на кнопке Добавить, но и при нажатии клавиши Enter. | Для компоненты ComboBox1 в обработчик события onKeyPress вставить код: if Key = #13 then ... |
2 | Сделать так, чтобы при щелчке на кнопке Добавитьосуществлялся ввод пустой строки, а не копировалась запись, на которой стоит курсор. | |
3 | Добавить две метки и вывести на них общее количество терминов в списке и номер выбранного термина. | Для объекта ComboBox1 в обработчик события Change вставить код, присваивающий заголовку панели значение ComboBox1.Items.Count, а в обработчик события Click - код, присваивающий заголовку другой панели значение ComboBox1.ItemIndex+1, имея ввиду, что первый термин имеет индекс 0, второй - 1 и т.д. |
4 | Предусмотреть изменение значений общее количество и номер выбранного термина при выполнении операций Добавить иУдалить. | |
5 | Обеспечить сохранение всех изменений словаря при закрытии формы. | Для объекта Form в обработчик события CloseQuerry вставить код, сохраняющий измененный список в файле Glostext.txt. |
6 | Отсортировать список. | Свойству Sorted объекта ComboBox1 присвоить значение True. |
7 | Предусмотреть отображение на форме общего количества терминов в списке и номер выбранного термина, начиная с самого первого момента запуска программы. | Для объекта Form в обработчик события Create вставить необходимый код (см. п.3). |
Практическая работа №4
Разработка проекта ВАШ ВЕС
Постановка задачи
Пусть оптимальный вес человека определяется как рост минус 100. Если фактический вес человека меньше оптимального, то будем считать его худым, если больше, то полным.
![]() | Создать программу, с помощью которой можно выполнить: Введя свой рост и фактический вес, и нажав кнопку Расчет, учащийся может определить, худой ты или полный и на сколько надо поправиться или похудеть. |
План разработки программы, №4
1. Открыть новый проект.
2. Разместить в форме экземпляры компонентов в соответствии с рисунком . В Edit1 будем вводить вес в кг, а в Edit2 – рост в см.

3. Сохранить код программы и проект под именами, например, Unit5.pas и Pr5.dpr.
4. Ввести в раздел VAR переменные для сохранения значений:
фактического веса (faktW),
оптимального веса (optW),
роста (Rost)
разницы между оптимальным весом и фактическим (Delta).
В начале будем считать, что все данные у нас целые числа:
VAR
factW, optW, Rost, Delta : integer;
5. Создать процедуру, реагирующую на щелчок по кнопке Button1, и заполнить ее следующим кодом:
Выделенный объект | Вкладка окна Object Inspector | Имя свойства/ Имя события | Значение/Действие |
Button1 | Events | OnClick | factW := StrToInt(Edit1.text); Rost := StrToInt(Edit2.Text); OptW :=Rost - 100; Delta := abs(factW - OptW); if OptW = factW then Label3.caption := 'Ваш вес идеален!' else if OptW > factW then Label3.caption := 'Вам надо поправиться на '+IntToStr(Delta)+' кг.' else Label3.caption := 'Вам надо похудеть на '+IntToStr(Delta)+' кг.' |
Пояснение
Функция StrToInt преобразует строку в целое число, функция IntToStr выполняет обратное действие – целое число преобразует в строку.
6. Усовершенствовать программу так, чтобы можно было бы вводить любые десятичные величины. Для этого необходимо использовать вещественный тип переменных Real:
VAR
factW, optW, Rost, Delta : real;
Преобразование действительных чисел в строковый тип и строковый тип в действительное число выполняется с помощью функций: FloatToStr и StrToFloat. Внесите соответствующие изменения в обработку события OnClick компонента Button1.
7. Сохранить проект окончательно, запустить и протестировать его.
Задание для самостоятельного выполнения, №4
| Задание | Подсказка |
1 | Для форматирования и преобразования действительных чисел вместо функции FloatToStr() применить функцию Format(‘ %f ',[пeременная]). Например, Format(‘%f ‘, [Delta]) | |
2 | Для форматирования и преобразования применить эту же функцию в таком виде Format(‘Строка %f’,[пeременная]). Например, Format(‘Вам надо похудеть %f',[Delta]) . | |
3 | Усовершенствовать проект: сделать к программе заголовок; сделать шрифт выводимой реплики отличным от стандартного по виду, цвету и размеру; вставить кнопку выхода из программы; предусмотреть возможность повторного запуска программы (см. проект Диалог). | |
4 | Сделайте так, чтобы в начале программы или после повторного запуска объекты Label2 и Edit2были не видны и появлялись бы на экране только после того, как будет введен вес. | Свойству Visible нужно присвоить False. |
5 | Предусмотреть возможность повторного запуска задачи - ввести кнопку Повторить. | |
5. В случае преобразования строкового типа в числовой тип может возникнуть ситуация появления ошибки, если введены недопустимые символы. Если функции StrToInt или StrToFloat обнаружат ошибку в записи числа, они инициируют так называемую исключительную ситуацию (исключений), которая обычно приводит к аварийному завершению работы программы.
Обработчик исключений строится в виде таких конструкций:
Try
<защищенный блок операторов>
except
<обработка исключений>
end;
Если при выполнении операторов из защищенного блока возникнет исключение, управление будет передано в блок операторов, располагающийся междуexcept и end, но если обработка пройдет без ошибок, блок исключений игнорируется и управление передается оператору, следующему за end.
Пример использования обработки исключений для процедуры Edit1KeyPressed может выглядеть так:
try
FactW:=StrToInt(Edit1.Text);
except
ShowMessage('Ошибочная запись числа: ' + Edit1.Text);
Edit1.SetFocus;
Exit;
end;
В результате выполнения
FactW:=StrToInt(Edit1.Text);
если возникнет исключительная ситуация, то на экране появится окно с текстовым сообщением и кнопкой ОК. После появления окна работа программы приостановится в ожидании реакции пользователя. При вызове стандартной процедуры Exit снова активизируется редактор, в котором обнаружен ошибочный текст.
Внесите необходимые изменения для обработки исключительных ситуаций, возникающих при вводе чисел.
Внимание!
При работе в среде Delphi эксперименты с исключениями плохо прослеживаются, так как при каждом исключении среда перехватывает управление программой. Для отмены этого необходимо в команде Tools/Debugger Options/Language Exceptions убрать флаг у опции Stop on Delphi Exceptions.
6. Предусмотрите невозможность ввода отрицательных значений веса и роста.
7. Измените алгоритм расчета с учетом Индекса массы тела.
Вес – X,
Рост – Y.
Индекс массы тела – A, где A = X / Y2 (кг/м2)
Результат определяется по таблице:
| Значение индекса | Результат (сообщение, которое надо вывести) |
1 | A < 18 | Большой недовес |
2 | 18 <= A < 20 | Маловато и небезопасно, можно получить истощение |
3 | 20 <= A <= 25 | Идеально |
4 | 26 <=A <=30 | Легкий недобор |
5 | 30 < A | Срочно нужно худеть |