Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторная работа 3

.pdf
Скачиваний:
16
Добавлен:
18.03.2016
Размер:
940.7 Кб
Скачать

1

Лабораторная работа № 3

Тема: «Знакомство со структурой программ среды разработки Delphi. Знакомство с элементами и операторами языка Object Pascal.

Знакомство с простыми типами данных. Приемы работы с базовыми компонентами».

Цель работы:

1.Изучить структуру модуля Unit1.pas.

2.Изучить структуру файла проекта Project1.dpr.

3.Изучить состав проекта разрабатываемого приложения. Назначение файла опций, файла конфигурации, файла ресурсов, файла формы, файлы резервных копий.

4.Изучить элементы программы (зарезервированные слова; идентификаторы; типы; константы; переменные; метки; подпрограммы; комментарии).

5.Изучить элементы и операторы языка Object Pascal.

6.Изучить типы данных: порядковые (целые, логические, символьный);

вещественные; Дата/Время; Строки.

7. Выполнить практическую работу по разработке приложений. Выполнить самостоятельную работу по разработке приложений.

8.Защитить лабораторную работу, продемонстрировать программы всех практических заданий, ответить на дополнительные вопросы по данной теме.

Задачи с самостоятельным решением оформить в каталоге по номеру задания, который должен содержать: файл проекта (.dpr), файл форм (.dfm), исходные модули (.pas), файл конфигурации (.cfg), файл опций (.dof), файл ресурсов (.res).

Откомпилированный модуль (.dcu), исполняемый файл (.exe) сохранять не обязательно, т.к. при защите проекта компиляцию выполнять заново.

Примечание

Справочный материал выложен в электронном виде на сервере в

 

папке Книги.

Иллюстрированный самоучитель в формате html.

Глава 5

2

Глава 5

Глава 5

Порядок работы:

Практическое задание № 1.

Написать программу, которая позволяет пользователю вводить с помощью клавиатуры символьную информацию разнообразного назначения в строку ввода класса TEdit, по нажатию на кнопку из класса TButton позволяет выводить на форме введенный текст в надписи класса TLabel.

Для выполнения этого задания разместите компоненты, как показано на рисунке:

При нажатии кнопки Пуск в Label1 должен отобразиться текст из Edit1. Для этого описываем событие OnClick объекта Button1.

procedure TForm1.Button1Click(Sender: TObject); begin

Label1.Caption := Edit1.Text; end;

Сохраните проект в новой папке. Запустите компиляцию проекта. Выполните запуск программы.

Самостоятельная работа № 1: Напишите обработку, в которой при наборе текста в Edit1 он сразу появляется в Label1. Какое событие, и у какого объекта нужно использовать?

Самостоятельная работа № 2: Создать всплывающую подсказку у объекта Edit1 с текстом «Введите ФИО и нажмите кнопку Пуск». Какие свойства строки ввода Edit1 позволят вам это осуществить?

3

Самостоятельная работа № 3: Создать обработку, в которой при наборе текста в Edit1 он сразу появляется в Panel1. Какое событие у панели нужно использовать?

Практическое задание № 2

Создать обработку, в которой кнопка Пуск становится доступной только в случае, если пользователь ввел исходные данные в строку ввода Edit1.

Использовать свойство Enabled - Признак доступности кнопки. Если значение свойства равно True, то кнопка доступна. Если значение свойства равно False, то кнопка не доступна и событие Click в результате щелчка не возникнет.

Алгоритм обработки будет следующий:

1.В момент старта приложения на экране появится форма

2.Т.к. поле Edit1 пустое, т.е. пользователь не ввел исходные данные, то сделаем кнопку Пуск недоступной

Button1.Enabled := False;

Это можно сделать статически через Инспектор объектов, выбрав указанное свойство кнопки и установив его в «ложь»

либо динамически во время создания формы (событие onCreate у объекта Form1).

procedure TForm1.FormCreate(Sender: TObject); begin

Button1.Enabled := False; end;

3.При вводе данных в поле Edit1 его содержимое изменится, а значит, возникнет событие у Edit1 OnChange. Как только ФИО пользователь ввел, можно делать кнопку Пуск доступной.

procedure TForm1.Edit1Change(Sender: TObject); begin

Button1.Enabled := true; // кнопка пересчет доступна end;

4. Обработка нажатия на кнопку Пуск

procedure TForm1.Button1Click(Sender: TObject); begin

Label1.Caption := Edit1.Text; end;

5.При вводе в поле Edit1 пробелов событие OnChange

тоже возникнет и кнопка Пуск станет доступной. А в задаче по постановке требуется вводить ФИО, значит, следует добавить проверку, есть ли в поле Edit1 исходные данные.

6.Алгоритм теперь будет такой:

-проверим, есть ли в поле ввода значение для перевода

-если значения нет, то выход из процедуры с выводом предупреждения пользователю, что «Ошибка ввода!»

-если значение есть – выполняем перевод.

Вот примерная реализация:

procedure TForm1.Button1Click(Sender: TObject);

4

begin

if edit1.Text = ' ' then begin

Label1.Caption := 'Ошибка! Введите ФИО'; exit;

end;

Label1.Caption := Edit1.Text; end;

7.Для вывода сообщения об ошибке ввода можно воспользоваться процедурой ShowMessage с выводом окна, в котором находится сообщение s и командная кнопка ОК.

ShowMessage(s). Реализуйте эту процедуру для вывода сообщения вместо

Label1.Caption := 'Ошибка! Введите ФИО';

Самостоятельная работа № 4: Создать обработку, в которой при наборе текста в Edit1 он появится в Panel1 по нажатию клавиши ENTER. Какое событие для этого нужно использовать? Добавить также проверку на наличие текста в строке ввода. Кнопок для управления на форме нет.

Самостоятельная работа № 5 Создайте программу, с помощью которой пользователь вводит свое имя и фамилию в двух отдельных полях ввода, а затем программа выводит в одной строке просмотра фамилию, запятую и имя.

Практическое задание № 3

Написать программу, демонстрирующую работу с ComboBox. Для добавления нового значения в список значений использовать Edit. При выборе значения в ComboBox, отображать его на форме.

Выполнение:

Расположите на форме необходимые компоненты: ComboBox, Edit, Button, Label. Выполните необходимые операции, чтобы было похоже как на рисунке.

- Создать обработчик добавления значений в

ComboBox:

procedure TForm1.Button1Click(Sender: TObject); begin

ComboBox1.Items.Add(Edit1.Text);

end;

- Создать обработчик, который заставит в Label отображать выбранный текст из ComboBox:

procedure TForm1.ComboBox1Change(Sender: TObject); begin

Label1.Caption := ComboBox1.Text; end;

Вопрос: Какое событие возникает у ComboBox, когда пользователь закрывает список значений?

Самостоятельная работа № 6: Напишите (или исправьте существующие) обработки таким образом, чтобы при добавлении значения в ComboBox оно автоматически убиралось из Edit.

Самостоятельная работа № 7: Опишите процедуру, которая заставит добавлять в ComboBox значения из Edit по нажатию ENTER. Т.е., после набора значения в Edit нажимаем «ENTER» и значение добавляется в ComboBox.

Практическое задание № 4

5

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

Для выполнения этого задания создать новый проект и сохранить его в отдельной папке. Задайте имя проекту type_data. Разместите на форме компоненты GroupBox, Label, Button как показано на рисунке.

Для перечня целых типов использовать элементы управления – кнопки Button, разместить их слева на компоненте GroupBox1 и в свойстве Caption создать надписи на кнопках. Для визуализации информации пользователю о выбранном типе данных справа на компоненте GroupBox2 разместить набор надписей Label.

Для каждой кнопки Button нужно описать событие OnClick.

В процедуре нужно получить информацию о типе и передать ее в «Label2, Label4, Label6, Label8». Например, выберите кнопку «ShortInt». В инспекторе объектов переключитесь на закладку «Events» и выберите событие «OnClick». Выполните двойной щелчок левой кнопкой мышки на поле обработчика события.

Опишем обработчик:

procedure TForm1.Button1Click(Sender: TObject); var

myVariant: Shortint; begin

Label2.Caption := 'ShortInt';

Label4.Caption := IntToStr(SizeOf(myVariant));

Label6.Caption := IntToStr(High(myVariant));

Label8.Caption := IntToStr(Low(myVariant));

end;

Сохраните проект. Запустите компиляцию проекта. Выполните запуск программы.

Контрольные вопросы к заданию:

С помощью какого свойства можно выполнить выравнивание объекта по нужному краю?

Что возвращает функция «High()»?

Что возвращает функция «Low()»?

Что возвращает функция «SizeOf()»?

К какой категории относится переменная «myVariant»: глобальная или локальная?

Самостоятельная работа 8:

Создайте пользовательский интерфейс программы для просмотра характеристик типов данных – логические, символьные и строковые, вещественные, дата/время.

Логические типы данных

Название

Размер, байт

Boolean

1

ByteBool

1

Bool

2

6

WordBool

2

LongBool

4

Логические переменные могут принимать одно из двух значений: Истина (True) или Ложь (False)

– этому соответствует число 0.

Символьный тип

Это тип данных, состоящих из одного символа. В Windows используется код ANSI (по названию разработавшего этот код института – American National Standard Institute - американский национальный институт стандартизации). См. таблицу 7.3. «Кодировка символов в соответствии со стандартом ANSI» в самоучителе.

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

Название

Размер, байт

Char (любой один символ

1

из набора Ansi)

 

AnsiChar ()

2

WideChar

1

Строковый тип

Для обработки текстов имеются строки. Они бывают четырех типов:

Название

Описание

String

Длинная строка

ShortString или String[n]

Короткая строка

WideString

Широкая строка

Pchar

Строка, оканчивающаяся нулем

Вещественные типы данных

Числа, состоящие из целой и дробной частей.

Тип дата-время

Тип дата-время определяется стандартным идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной - время. Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время - как часть суток, прошедших с 0 часов. Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов.

Для работы с датой и временем используются подпрограммы, перечисленные в табл. 7.6. самоучителя.

7

Порядок выполнения самостоятельной работы:

Для визуализации информации на экране воспользуйтесь компонентом PageControl. Найти его можно на закладке «Win32» палитры компонент. Выберите этот компонент и поместите его на форму вашего приложения. Растяните этот объект по всей форме. В инспекторе объектов найдите свойство «Align» и поставьте значение «alClient».

Контрольный вопрос: Какие значения может принимать свойство «Align» и что они означают?

Теперь добавьте нужное количество страниц.

По условию задачи нужно выполнять просмотр разных типов данных, поэтому добавляем страницы для каждого типа. Для этого правой кнопкой мыши вызываем контекстное меню объекта «PageControl1» и выбираем пункт «New Page». Появится новая страница с именем «TabSheet1». Для удобства работы переименуем эту страницу. Найдите свойство «Name» и вместо «TabSheet1» наберите «Tab1». Название страницы задается свойством «Caption». Назовите страницу «Логические типы», следующую - «Строковые типы», а свойство «Name» замените на «Tab2» и т.д.

После этого сохраните проект.

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

Сохраните проект. Запустите компиляцию проекта. Выполните запуск программы.

Самостоятельная работа 9:

Ознакомиться со стандартными процедурами и функциями, применимыми к целым типам.

Реализовать в приложении примеры для работы каждой функции.

8

Самостоятельная работа 10:

Ознакомиться со стандартными математическими функциями, применимыми к вещественным типам.

Реализовать в приложении примеры для работы каждой функции.

Тригонометрические, логарифмические, экспоненциальные, статистические функции и др. содержатся в модуле Math, т.е. на него необходимо ссылаться при вызове подпрограммы в разделе Uses модуля Unit. Описаны эти функции в приложении 3 самоучителя.

Самостоятельная работа 11:

Ознакомиться со стандартными процедурами и функциями, применимыми к типам дата/время.

9

Самостоятельная работа 12:

Ознакомиться со стандартными процедурами и функциями, применимыми к символьным типам в таблице 7.7. самоучителя (глава 7).

Там же ознакомиться с подпрограммами преобразования строк в другие типы и подпрограммами обратного преобразования.

Практическое задание № 5

Написать программу «Генератор случайных чисел», генерирующую:

случайные числа в диапазоне от 1 до 10;

заглавные буквы латинского алфавита (от A до Z);

прописные буквы латинского алфавита (от a до z);

строку, состоящую из различных символов (буквы русского алфавита и цифры).

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

Практическое задание № 6.

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

10

Практическое задание № 7.

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

Практическое задание № 8.

Написать программу, которая после занесения в строку ввода любого вещественного числа предоставляет возможность увидеть это значение, преобразованное к типу TdateTime. Например, число 45434,456. Это соответствовать должно – 22.05.2024 10:56:38

Практическое задание № 9.

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

Сегодня: 3.10.05 Сейчас: 23:15:40

Практическое задание № 10.

Написать программу, которая выполняет декодирование текущей даты и показывает информацию в формате: Год, месяц, день. Также определить день недели.

Например: Сегодня День 30 Месяц 3 год 2011

Практическое задание № 11.

Написать программу, которая выполняет вычисление, какая дата будет через 10 дней.

Практическое задание № 12.

Написать программу «Электронные часы», на поверхности формы которой отображается текущее время. Использовать функции: Now – для получения системного времени; FormatDateTime (‘hh:mm:ss’,

Time)

Проектируемое приложение

Окно программы Электронные часы

Практическое задание № 13.

Написать программу «Электронные часы», в окне которой отображается текущее время и дата. Использовать функции: Now – для получения системного времени; FormatDateTime (‘hh:mm:ss’, Time) FormatDateTime('dd:mm:yy', Now())