03.03.2019
Lazarus. Урок № 6.
Урок 6. Организация ввода и вывода данных
Любая программа в своей работе использует какие-то исходные данные.
Для организации ввода можно использовать компонент формы TEdit (Поле ввода), для вывода результатов – компонент Label (Поле вывода).
Другой способ организации ввода и вывода данных – использование встроенных диалоговых окон InputBox, ShowMessage. Эти диалоговые окна не устанавливаются программистом на форму во время разработки. Операторы их активации нужно вставлять в программный код.
Более подробно остановимся на втором способе.
Ввод данных
Функция InputBox() выводит на экран диалоговое окно, в котором можно ввести данные.
Аргументами этой функции являются три строки, а значением функции – строка введенная пользователем.
В общем виде строка программного кода с использованием функции InputBox выглядит так:
Переменная := InputBox(‘Заголовок’, ‘Подсказка’, ‘Значение по умолчанию’);
где:
Переменная – переменная строкового типа, значение которой должно быть получено от пользователя;
Заголовок – текст заголовка окна;
Подсказка – текст поясняющего сообщения;
Значение по умолчанию – текст, который будет находиться в поле ввода, когда окно появиться на экране.
Например,
n := InputBox(‘Ввод числа’, ‘Введите число:’, ‘ ‘);
Результат показан на рисунке:
Если пользователь щелкнет по кнопке ОК, то значением функции станет строка, введенная пользователем в текстовое поле. Если пользователь щелкнет по кнопке Cancel, то значением функции станет строка «Значение по умолчанию».
Значение функции InputBox всегда строкового типа (String), поэтому в случае, если нужно ввести число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования.
В качестве примера возьмем задачу пересчета веса из фунтов в килограммы
Ввод исходных данных из окна ввода и последующее преобразование данных может выглядеть так:
funtStr:= InputBox(‘Фунты-килограммы’,’Введите вес в фунтах:’,’ ‘);
funtFloat:=StrToFloat(funtStr);
Вывод данных
Результат работы программы чаще всего выводят в окно сообщения ShowMessage или в поле вывода (компонент Label).
Вывод в окно сообщения ShowMessage
Для вывода результата используется процедура ShowMessage(). Она выводит на экран диалоговое окно с текстом и командной кнопкой OK.
Общий вид инструкции вызова процедуры ShowMessage:
ShowMessage(‘Сообщение’);
где Сообщение – текст, который будет выведен в окне.
Например, для того чтобы вывести результат в программе пересчета веса из фунтов в килограммы, можно использовать следующую строку кода:
ShowMessage(‘Вес в килограммах: ‘+ FloatToStr(kg));
Результат показан на рисунке.
Вывод в поле вывода (Label)
Компонент TLabel(Поле вывода), в который будет осуществляться вывод, устанавливают на форме во время разработки. Содержание этого поля определяется значением свойства Caption.
Для того чтобы вывести результаты в это поле, нужно в программном коде поместить оператор присваивания, который будет изменить значение свойства Caption на нужное вам значение.
Например, для того чтобы вывести результат в поле вывода Label1 в рассмотренной выше задаче, нужно использовать следующий оператор присваивания:
Label1.Caption:=FloatToStr(kg) + ‘кг‘;
Практическая работа
Задание. Поместить на форму две кнопки: Ввод данных и Выход. Пользователь должен ввести фамилию, имя и возраст. Для ввода данных использовать функцию InputBox. По окончании ввода анкетные данные вывести в поле вывода (компонент Label).
Ход выполнения
- Создать новый проект. Папку проекта назвать Анкетные данные.
- Разместить на форме две кнопки и надпись так, как показано на рисунке выше.
- Написать программный код для кнопки Ввод данных.
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=InputBox(‘Ввод анкетных данных’, ‘Введите фамилию, имя,
возраст:’,”);
end;
- Написать программный код для кнопки Выход
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
- Сохранить проект. Проверить работу приложения.
После щелчка на кнопке Ввод данных должно появиться диалоговое окно. Введите в него исходные данные.
После нажатия на клавишу Enter введенные данные должны отобразиться на форме.
Результат показан на рисунке.
В этом уроке мы рассмотрели способы организации ввода и вывода данных в среде Lazarus. Для ввода данных мы использовали диалоговое окно InputBox , для вывода – диалоговое окно ShowMessage и компонент формы TLabel (Поле вывода) .
Компонент TLabel устанавливается на форме во время разработки, диалоговые окна выводятся в отдельном окне во время выполнения приложения, не занимают место на форме. Для их вывода нужен соответствующий программный код.
Lazarus. Урок № 5.
Урок 5. Типы данных
В этом уроке Вы познакомитесь с основными элементами языка программирования: переменными, их типами, основными операциями и функциями.
Данные в языке Free Pascal
Для решения задач в любой программе выполняется обработка каких-либо данных. Данные хранятся в памяти компьютера и могут быть самых различных типов: целые и вещественные числа, символы, строки, массивы.
Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размеры ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания.
Участок памяти (ячейка), в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение.
Имя служит для обращения к области памяти, в которой хранится значение.
Во время выполнения программы значение переменной можно изменить.
В Lazarus каждая переменная перед использованием должна быть описана (объявлена). При объявлении переменной задается ее имя и тип. В оперативной памяти выделяется место для хранения переменной.
Для описание переменных используется служебного слова var.
Общий вид оператора:
Var имя_переменной: тип_переменной;
Например:
Var a: integer; //Объявлена целочисленная переменная
b, c: real; //Объявлены две вещественные переменные.
Целочисленный тип данных
Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или 8 байтов.
Тип | Диапазон | Размер (байт) |
Shortint | -128 .. 127 | 1 |
Integer | -32768 .. 32767 | 4 |
Longint | -2147483648 .. 2147483647 | 4 |
Byte | 0 .. 255 | 1 |
Word | 0 .. 65535 | 2 |
Вещественный тип данных
Внутренне представление вещественного числа в памяти компьютера отличается от представления целого числа. Вещественное число представлено в экспоненциальной форме mE±p, где m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое число).Чтобы перейти от экспоненциальной формы к обычному представлению числа, необходимо мантиссу умножить на десять в степени порядок.
Вещественное число может занимать от 4 до 10 байтов.
Вещественные типы | Диапазон | Кол-во значащих цифр | Размер, байт |
Real | 2.9e-39 ..1.7e+38 | 11-12 | 8 |
Single | 1.5-e45 .. 3.4e+38 | 7-8 | 4 |
Double | 5.0e-324.. 1.7e308 | 15-16 | 8 |
Extended | 3.4e-4932 ..1.1e4932 | 19-20 | 8 |
Пример описания вещественных переменных:
Var
r1, r2: real; d: double;
Операции и выражения
Выражение задает порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций.
Например a + b*sin(x).
В таблице представлены основные алгебраические операторы языка программирования Free Pascal.
Оператор | Действие |
+ | Сложение |
– | Вычитание |
* | Умножение |
/ | Деление |
DIV | Целочисленное деление |
MOD | Вычисление остатка от деления |
Операторы целочисленной арифметики DIV и MOD применяются только к целочисленным операндам.
DIV позволяет получать целую часть результата деления одного числа на другое.
Например, 15 DIV 7 = 2.
Оператор MOD получает остаток от деления одного числа на другое.
Например, 15 MOD 7 = 1, Для задания нужного порядка выполнения операций в выражении можно использовать скобки.
Стандартные функции
В языке определены стандартные функции. Некоторые арифметические функции представлены в таблице ниже.
Обозначение | Действие |
Abs(n) | Абсолютное значение n. |
Sqrt(n) | Квадратный корень из n. |
Sqr(n) | Квадрат n. |
Exp(n) | Экспонента n. |
Ln(n) | Натуральный логарифм n. |
Random(n) | Случайное целое число в диапазоне от 0 до n-1. (перед первым обращением к функции необходимо вызвать функцию Randomize, которая выполнит инициализацию программного генератора случайных чисел) |
Sin() | Синус выраженного в радианах угла |
Cos() | Косинус выраженного в радианах угла |
Arctan() | Арктангенс выраженного в радианах угла |
Величина угла тригонометрических функций должна быть выражена в радианах. Для преобразования величины угла из градусов в радианы используется формула:
(α * 3.1415256 ) / 180,
где α – величина угла в градусах, 3.1415256 –число π.
Вместо константы 3.1415256 можно использовать стандартную именованную константу PI.
Функции преобразования
Функции преобразования типов часто используются при вводе и выводе информации
Например, для того чтобы вывести в поле вывода (компонент Label) диалогового окна значение переменной Real, необходимо преобразовать число в строку символов, изображающую данное число. Это можно сделать при помощи функции FloatToStr, которая возвращает строковое представление значения выражения, указанного в качестве параметра функции.
Основные функции преобразования типов
Обозначение | Действие |
Chr(n) | Символ, код которого равен n. |
IntToStr(k) | Строка, являющаяся изображением целого k. |
FloatToStr(n) | Строка, являющаяся изображением вещественного n. |
FloatToStrF(n,f,k,m) | Строка, являющаяся изображением вещественного n. При вызове функции указывают: f – формат; k – точностью (общее количество цифр); m – количество цифр после десятичной точки.Возможны следующие значения параметра Format: ffGeneral – общий числовой формат; ffFixed – фиксированный формат; ffCurrency – денежный формат. |
StrToInt(s) | Целое, изображением которого является строка s. |
StrToFloat(s) | Вещественное, изображением, которого является строка s. |
Round(n) | Целое, полученное путем округления n по известным правилам. |
Trunc(n) | Целое, полученное путем отбрасывания дробной части n. |
Frac(n) | Дробное, представляющее собой дробную часть вещественного n. |
Int(n) | Дробное, представляющее собой целую часть вещественного n. |
Наиболее часто программа может получать исходные данные из окна ввода или из поля редактирования (компонент Edit). Для преобразования данных в числовой тип используют соответствующую функцию.
Например, для преобразования в вещественный тип используется оператор:
Funt:= StrToFloat(Edit1.Text);