Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, полный углублённый курс, по 4 часа в неделю)



Уроки 101 - 102
Модель и представление
(§55. Модель и представление)




Содержание урока

Введение

Вычисление арифметических выражений: модель

Вычисление арифметических выражений: представление

Вопросы и задания

Задачи


Вычисление арифметических выражений: представление


Теперь построим интерфейс программы. В верхней части окна будет размещён выпадающий список (компонент TComboBox), в котором пользователь вводит выражение (рис. 7.24). При нажатии на клавишу Enter выражение вычисляется и его результат выводится в последней строке многострочного редактора текста (компонента ТМеmо). Список полезен для того, чтобы можно было вернуться к уже введенному ранее выражению и исправить его. Для этого каждое новое выражение будем добавлять в выпадающий список.

Рис. 7.24

Рис. 7.24

Итак, на форму нужно добавить компонент TComboBox (группа Standard). Чтобы прижать его к верху, установим свойство Align, равное alTop. Назовем этот компонент Input (в переводе с англ. — ввод).

Добавляем второй компонент — ТМешо (группа Standard), устанавливаем для него выравнивание alClient (заполнить всю свободную область) и имя Answers (в переводе с англ. — ответы). Для того чтобы пользователь не мог менять поле вывода, для компонента Answers устанавливаем логическое свойство Readonly (только для чтения), равное True.

Логика работы программы может быть записана в виде псевдокода:

если нажата клавиша Enter то 
	х:= значение выражения
	добавить результат вычислений в конец поля вывода
	если выражения нет в списке то 
		добавить его в список 
	все
все

Для перехвата нажатия клавиши Enter будем использовать обработчик OnKeyPress компонента Input. Клавиша Enter имеет код 13, поэтому условие «если нажата клавиша Enter» запишется в виде

if Кеу=#13 then begin
end;

Значение выражения будем вычислять с помощью функции Calc:

х:= Calc(Input.Text);

Эта функция находится в модуле Model, который нужно подключить, добавив в начало секции implementation команду

uses Model;

Компонент TMemo содержит массив строк, которые доступны как свойство-массив Lines. Чтобы добавить к ним новую строку (в конец массива), нужно использовать метод Add (в переводе с англ. — добавить):

Answers.Lines.Add (Input.Text+'='+IntToStr(x));

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

Строки, входящие в выпадающий список, доступны как свойство-массив Items объекта Input. Метод IndexOf служит для поиска строки в списке и возвращает номер найденного элемента (нумерация начинается с нуля) или значение -1, если образец не найден. Поэтому команда добавления в список новой строки выглядит так:

i:=Input.Items.IndexOf(Input.Text);
if i<0 then
Input.Items.Insert(0, Input.Text);

Метод Insert добавляет строку в список. На первом месте указывается позиция, в которую добавляется строка (0 — в начало списка). Приведём полностью обработчик OnKeyPress:

procedure TForml.InputKeyPress(Sender: TObject;
		var Key: char);
var x, i: integer;
begin
	if Key=#13 then begin
		x:=Calc(Input.Text);
		Answers.Lines.Add(Input.Text+' ='+IntToStr(x)) ; 
		i:=Input.Items.IndexOf(Input.Text); 
		if i<0 then
			Input.Items.Insert(0, Input.Text);
		end;
end;

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

Итак, в этой программе мы разделили модель (данные и средства их обработки) и представление (взаимодействие модели с пользователем), которые разнесены по разным модулям. Это позволяет использовать модуль модели в любых программах, где нужно вычислять арифметические выражения.

Часто к паре «модель — представление» добавляют ещё управляющий блок (контроллер), который, например, обрабатывает ошибки ввода данных. Но при программировании в RAD-средах контроллер и представление, как правило, объединяются вместе — контроль данных происходит в обработчиках событий.

Следующая страница Вопросы и задания



Cкачать материалы урока






Наверх