После запуска программы пользователь вводит свое имя, например, Александр, в прямоугольник с мигающим текстовым курсором и нажимает клавишу  Enter. Появляется вопрос: "Александр, ты любишь читать?". Если пользователь нажмет на клавишу 

Вид материалаПрактическая работа

Содержание


План разработки программы, №1
Object Inspector
Задание для самостоятельного выполнения, №1
BitBtn. Установить значение bkRetry
Практическая работа №2 Разработка проекта СПРАВОЧНИК Постановка задачи
Enter. На экране появляется название цвета на русском языке и код в формате RGB
План разработки программы, №2
Object Inspector
Object Inspector
Задание для самостоятельного выполнения, №2
Hint (текст сообщения), Showhint
RGB использовались два отдельных объекта Label
Разработка проекта СЛОВАРЬ
План разработки программы, №3
Object Inspector
String list editor
Object Inspector
Object Inspector
Удалить появится диалоговое окно с вопросом 'Вы действительно хотите удалить запись?
Object Inspector
...
Полное содержание
Подобный материал:

Практическая работа №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

Удалить имена  компонентов Edit1Label2Label3 для обеспечения возможности повторить диалог. 

Разместить на форме еще одну кнопку  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. Тип диалогового окна - константы: mtWarningmtErrormtInformationmtConformation, определяющие специальную пиктограмму и заголовок диалогового окна. 
3. Список констант в квадратных скобках, определяющих присутствующие в окне кнопки. Возможные значения - mbYesmbNombCancelmbHelp
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

Срочно нужно худеть