Март 2019
Проблема № 1. Уничтожение зеленых насаждений на территории села.
Проблема № 1. Уничтожение зеленых насаждений на территории села.
В январе 2019 года на перекрестке улиц Советская и Центральная, по прямому указанию главы поселения Онищенко Антона Николаевича были уничтожены 6 тополей, входящих в зеленую зону нашего села. На мой вопрос “Кто разрешил?”, Онищенко ответил – Я. Молодец Антон Николаевич! Умница! Так держать! Я подозреваю, что уничтожение было бы продолжено дальше и все остальные тополя из этой аллеи, ждала бы такая же участь. На вопрос “Почему”, Антон Николаевич сказал: “Они (тополя) больны и опасны для дорожного движения”, а я вижу причину в другом. Просто новому домовладельцу на углу улиц Центральной и Советской, нужно было подготовить территорию для расширения своего домовладения и заодно заготовить дровишек впрок, а Антон Николаевич решил бездумно быть “хорошеньким” для предприимчивого жителя села. Молодцы оба! Современные Геростраты, одно слово.
P.S. по фотографиям видно, что деревья были здоровыми, полными сил, чтобы весной покрыться зеленой листвой и радовать своим видом жителей села.
Вот так эта аллея выглядела еще осенью.
А вот такой стала в январе.
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);