Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка лаб по ООП с ИИТ.doc
Скачиваний:
17
Добавлен:
23.08.2019
Размер:
919.04 Кб
Скачать

2.6. Компиляция и исполнение программы

После завершения формирования формы и написания программного кода отклика на событие, проект запускается на исполнение.

Запуск программы на исполнение производится нажатием на кнопку Run, расположенную на панели Debug, либо командой Run - Run (клавиша F9).

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

Синтаксические ошибки проверяются и устраняются на этапе компиляции. Строка, содержащая ошибку выделяется коричневым цветом, а в окне отладки, расположенном в нижней части окна редактора кода появляется сообщение с видом найденной ошибки.

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

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

Для того чтобы отследить выполнение программы, надо остановить выпол­нение на каком-то операторе. Для этого есть несколько способов.

1) Команда Run | Run To Cursor (горячая клавиша F4). Она обеспечивает выполнение приложения вплоть то того момента, когда должен выполняться оператор, на кото­ром находится курсор в окне Редактора Кода.

2) Простановка точек прерывания. Следует щелкнуть мышью в окне Редактора Кода на полосе слева от того оператора, перед выполнением кото­рого вы хотите остановиться. В полосе появится красная точка, а сама строка окра­сится красным цветом. Это значит, что вы ввели на этом операторе так называемую точку прерывания.

Применение точек прерывания предпочтительнее, т.к. можно установить сразу несколько точек пре­рывания в разных местах программы, поскольку в сложной разветвленной программе не всегда ясно, по каким вет­вям алгоритма проходит ее выполнение. Тогда легче это понять, установив одно­временно точки прерывания в разных ветвях. Кроме того, в точки прерывания можно вводить условия останова, что очень полезно в циклических программах.

2.7. Ввод и вывод данных. Функции преобразования типов данных

Для ввода данных часто используются окно редактирования Edit, позволяющее вводить одиночные текстовые ли числовые (после преобразования) данные (свойство Text).

Например, Fam := Edit1.Text;

Для ввода массивов данных удобно использовать таблицу StringGrid. Элементы таблицы нумеруются по столбцам и строкам, начиная с 0. Доступ к ячейкам производится через свойство Cells[col, row]. Таблица StringGrid по умолчанию содержит фиксированные строки и столбцы (свойство FixedCols и FixedRows), которые не перемещаются при использовании полосы прокрутки. При использовании для ввода массива их следует убрать - назначить свойствам FixedCols и FixedRows значение 0, а также разрешить редактирование данных в ячейках: назначить True свойству Option.goEditing. Нумерация строк и столбцов по умолчанию ведется с 0, поэтому первая ячейка таблицы: Cells[0,0].

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

For i:=1 to 10 do

Fam[i] :=StringGrid1.Cells[i-1,0];

Для ввода данных также используется функция InputBox(), выводящая заголовок, текстовое сообщение, поле ввода с указанным значением по умолчанию и кнопку ОК. Синтаксис:

InputBox( ACaption: String, APromt: String , ADefalt: String);

Где AСaption - заголовок окна, AProm - текстовое сообщение выводимое в окно, а ADefalt - значение по умолчанию, выводимое в поле ввода.

Пример:

Name:=InputBox('Окно ввода данных',' Введите имя', ' ' );

Переменной строкового типа Name присваивается значение, введенное пользователем в поле ввода (по умолчанию поле ввода пустое).

Или целой переменной b присваивается числовое значение, введенное в поле ввода диалогового окна:

b := StrToInt (InputBox('Окно ввода данных', ' Введите значение переменной b ', ' ' ));

Текст, вводимый пользователем в окно редактирования Edit, таблицу StringGrid, поле Memo, диалоговое окно InputBox и др. объекты представляет собой текстовую стро­ку типа string. Поэтому при вводе в них чисел, над которыми предполагается выполнение арифметических операций, этот текст следует преобразовать к нужному числовому типу.

Для преобразования строки в числа используются функции:

StrToFloat() - преобразует тип данных String в действительное число;

StrToInt() - преобразует тип данных String в целое число;

Например, выражение StrToFloat(Edit1.Text) возвращает действительное число, получение в результате преобразования текста в окне Edit1.

Далее эти числа можно использовать в любых математических выражениях.

Для отображения результатов расчета часто используется функция ShowMessage(), отображающая диалоговое окно с текстовым сообщением. В качестве аргумента этой функции используется строка или совокупность строк соединенных знаком "+" типа String, поэтому числовые данные перед выводом их в окно следует преобразовать к строковому типу данных.

Также часто используется вывод данных в метку Label, свойству Caption которой присваивается нужный текст, в который включаются результаты расчета (путем преобразования их к типу String).

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

FloatToStr() - переводит действительное число в строку

IntToStr() - переводит целое число в строку.

Например, вывод данных в диалоговое окно:

ShowMessage(' Дискриминант равен ' + FloatToStr(D));

Или в метку Label1, заранее созданную на форме:

Label1.Caption:= ' Дискриминант= ' + FloatToStr(D);

Для вывода надписи, используемой для вывода данных пользователем в несколько строк используется код клавиши Enter (13), осуществляющей переход на новую строку, следующим образом:

Label1.Caption:= ' Дискриминант= ' + FloatToStr(D) + #13 + 'Первый корень=' + FloatToStr(х1) + #13 + 'Второй корень=' + FloatToStr(х2) ;

Для формирования надписи Label на форме в несколько строк достаточно включить (поменять на True) свойство WordWrap метки. Выравнивание текста определяется свойством Alignment (например, по центру - taCenter)

Пример процедуры, вычисляющей при щелчке на кнопке Button1 произведение чисел a и b, вводимых пользователем в поля ввода Edit1 и Edit2 и использующей преобразование типов данных:

procedure TForm1.Button1Click(Sender: TObject);

var а, b, c: real;

begin

a := StrToFloat(Edit1.Text); // Первое число

b := StrToFloat(Edit2.Text); // Второе число

c := a* b; // Произведение

ShowMessage('Произведение чисел a*b = ' + FloatToStr(c));

Label1.Caption:='Произведение чисел a*b = ' + FloatToStr(c);

end;