Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Отчёт.doc
Скачиваний:
4
Добавлен:
06.05.2019
Размер:
390.66 Кб
Скачать

Задача 2. Ввод исходных данных

Исходные данные:

n – количество вычисляемых значений, глобальная переменная на уровне модуля, тип – целый;

X – глобальная переменная на уровне модуля, тип – целый;

dX – приращение, глобальная переменная на уровне модуля, тип – целый.

Соглашение: при вводе будем контролировать только соответствие вводимых символов алфавиту целых чисел.

Выбор компонентов: для всех переменных – компонент класса TLabeledEdit.

Выбор события: для всех компонентов – OnKeyPress.

  1. Установить компонент TLabeledEdit для ввода n.

  2. Переопределить свойства компонента.

Переименовать в LE_n.

Изменить свойство Положение метки LabelPosition на LpLeft.

Изменить размер шрифта метки на 10.

  1. Назначить событие LE_nKeyPress и разработать код процедуры обработки события.

  2. Протестировать результат, вводя недопустимые символы для алфавита целых типов.

Фрагмент листинга модуля.

type

TForm1 = class(TForm)

LInfo: TLabel; //Для информационного сообщения

LE_n: TLabeledEdit; //Для ввода n

procedure FormActivate(Sender: TObject); {Вывод информационного сообщения}

procedure LE_nKeyPress(Sender: TObject; var Key: Char); {Контроль ввода n}

...........................

implementation

..............................

//Контроль ввода n

procedure TForm1.LE_nKeyPress(Sender: TObject; var Key: Char);

//Проверка соответствия вводимого символа алфавиту целых чисел

// Key - вводимый символ

begin

If not (Key in ['0'..'9', '-', #8])

//несоответствие Key алфавиту вещественных чисел, #8 - <Backspace>

then key := #0 ; //подмена недопустимого Key пустым значением

end;

.................................

  1. Аналогичные действия выполните для ввода и контроля переменных X и dX.

  2. Блок-схему алгоритма Контроль ввода n поместите в отчёт.

Процедуры контроля ввода X и dX и их алгоритмы приводить в отчёте не следует, так как они аналогичны рассмотренной.

Задача 3. Преобразование в числовые типы значений полей ввода

Исходные данные: свойства Text компонентов LE_n, LE_X и LE_dX.

Разделим задачу на две подзадачи: разработка процедуры пользователя преобразования Строка–Целое число; вызов процедуры для определения значений переменных n, X, dX .

Процедура преобразования Строка–Целое число

Критическая ситуация может возникнуть при пустых значениях полей ввода или при синтаксической ошибке значения свойства Caption.

Соглашения.

  1. Для преобразования Строка–Число используем процедуру

Val(S: string; var V; var Code: Integer), где

S – значение свойств Text компонентов LE_n или LE_X, или LE_dX;

V – числовое значение переменных, соответственно n или X, или dX;

Code – код ошибки преобразования, при Cod=0 – успешное

преобразование, при Cod > 0 – ошибка преобразования;

  1. Решение оформим в виде процедуры

Inp_Int(LE: TLabeledEdit; var V, Flag: Integer) пользователя с формальными параметрами:

входной параметр: LE – компонент типа TLabeledEdit;

выходные параметры:

V – числовое значение переменной;

Flag - сигнал ошибки, если Cod > 0 то Flag:= 1, иначе Flag не определён – ошибки нет.

Код процедуры Inp_Int(LE: TLabeledEdit; var V, Flag: Integer).

//Преобразование строка – целое число

Procedure Inp_Int(L: TLabeledEdit; var V, Flag: Integer);

{LE - поле ввода переменной, тип - TLabeledEdit;

значение L.Text будет преобразовано в переменную V целого типа;

Flag=1 - сигнал об ошибке преобразования, если Flag не определён, то ошибки нет}

Var Cod : Integer; {код ошибки преобразования, при Cod=0 - успешное преобразование}

begin

Val(L.Text, V, Cod); //Преобразование строка-число

If Cod <> 0 //ошибка преобразования

then begin //сообщение об ошибке

ShowMessage('Поле ' + LE.EditLabel.Caption + ' ?????');

Flag:= 1;

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]