ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2024
Просмотров: 133
Скачиваний: 0
Структурные типы данных
Массив – это структура данных, доступ к элементам которой осуществляется по номеру (или индексу). Все элементы в массиве имеют одинаковый тип. Индекс элемента массива может быть вычисляемым, что позволяет организовывать компактную и эффективную обработку больших наборов данных. Описание массива имеет вид:
имя-массива : array[диапазон] of тип-элемента;
Слова array (массив) и of - ключевые. Диапазон определяет нижнюю и верхнюю границы массива и, соответственно, число элементов в нем. Тип элемента определяет тип каждого элемента массива. Массив А, состоящий из 5 столбцов и 10 строк целого типа описывается в программе так: А : array [1..5,1..10] of integer;
Множество - это группа элементов, объединённая под одним именем, и с которой можно сравнивать другие величины, чтобы определить, принадлежат ли они этому множеству. Количество элементов в одном множестве не может превышать 256. Множество описывается так:
type имя_множества = set of диапазон_значений_множества;
Конкретные значения множества задаются в программе с помощью перечисления элементов, заключённых в квадратные скобки. Допускается использовать и диапазоны: MySet:=[1, 3 .. 7, 9];
Таблица 4. Основные арифметические операции
Оператор |
Операция |
Типы операндов |
Тип результата |
Пример |
+ |
сложение |
integer, real |
integer, real |
2 + 1 = 3 |
- |
разность |
integer, real |
integer, real |
7 – 1 = 6 |
* |
умножение |
integer, real |
integer, real |
2 * 4 = 8 |
/ |
деление |
integer, real |
real |
10 / 2 = 5 |
div |
целая часть результата деления |
Integer |
integer |
10 div 3 = 3 |
mod |
остаток от деления |
integer |
integer |
10 mod 3 = 1 |
Таблица 5. Операции сравнения
-
Оператор
Значение
=
Равно
<>
Не равно
>
Больше
<
Меньше
>=
Больше или равно
<=
Меньше или равно
Таблица 6. Логические операции
-
Оператор
Значение
Результат
not
НЕ
отрицание
and
И
равен true, если оба операнда равны true
or
ИЛИ
равен true, если хотя бы один из операндов равен true
xor
исключающее ИЛИ
равен true, если операнды не равны друг другу
Для некоторых типов данных есть дополнительные операции. Например, для множеств - оператор in проверяет, входит ли некоторое значение в множество. Например: X := [2, 4, 8, 10]; Выражение 2 in X истинно (имеет значение true); Выражение 6 in X ложно (имеет значение false).
4.2. Контрольные вопросы
1. Что такое инспектор объектов?
2. Что такое свойства и события объекта?
3. В чем разница между переменной и константой?
4. Назовите численные типы данных.
5. Структурный тип данных.
6. Какие арифметические операции допускаются в Delphi?
7. Типы данных Delphi.
4.3. Задания
1. Вычислить частное от деления двух целых чисел и вывести сообщение об ошибке в случае попытки делить на 0.
2. Написать программу – калькулятор с оператором switch. Пользователь вводит два числа и знак операции (+, -, *, /).
3. Напишите программу, которая по введенному десятичному числу выводит символ, код которого равен этому числу. Программа заканчивает работу, если введенное число равно единице.
4. Написать программу, которая выполняет посимвольный вывод сообщения.
5. Написать программу решения квадратного уравнения. Необходимо реализовать проверку исходных данных и в случае, если коэффициент при второй степени неизвестного равен 0, выводить соответствующее сообщение.
6. Напишите программу вычисления длины окружности S=2Pi*r.
7. Напишите программу вычисления площадь треугольника S=1/2*b*h.
8. Напишите программу вычисления объема шара V=4/3*Pi*r.
9. Напишите программу вычисления площади трапеции S=(a+b)/2 * h.
10. Напишите программу вычисления объема цилиндра V=Pi*r*H.
Лабораторная работа № 5 процедуры и функции
Цель работы: научиться создавать процедуры и функции, а также использовать стандартные процедуры Delphi.
5.1. Теоретическая часть
Процедуры и функции
Преимущества использования подпрограмм (процедур или функций) очевидны. Во-первых, в программе нет дублирования кода, что сокращает трудоемкость создания программы. Во-вторых, значительно повышается надежность программы. Подпрограмма – это небольшая программа, которая решает часть общей задачи. В языке Delphi есть два вида подпрограмм – процедура и функция. У каждой подпрограммы есть имя, которое используется в программе для вызова подпрограммы. Отличие функции от процедуры состоит в том, что с именем функции связано значение, поэтому функцию можно использовать в качестве операнда выражения, например, инструкции присваивания. Параметры, которые указываются в объявлении функции, называются формальными. Параметры, которые указываются в инструкции вызова процедуры, называются фактическими.
Функция
Функция - это именованная часть программы, к которой можно обращаться из других частей программы столько раз, сколько потребуется. Функция обеспечивает удобный способ отдельно оформить некоторое вычисление и пользоваться им далее, не заботясь о том, как оно реализовано.
Процесс перехода к инструкциям функции называется вызовом функции или обращением к функции. В общем виде инструкция обращения к функции выглядит так:
Переменная := Функция (Параметры);
где: переменная – имя переменной, которой надо присвоить значение, вычисляемое функцией; функция – имя функции, значение которой надо присвоить переменной; параметры – список формальных параметров, которые применяются для вычисления значения функции. В качестве параметров обычно используют переменные или константы.
Объявление функции
Объявление функции в общем виде выглядит так:
function Имя(параметр1 : тип1, ..., параметрК : типК) : Тип;
var // здесь объявления локальных переменных
begin // здесь инструкции функции
Имя := Выражение;
end;
где: function – зарезервированное слово языка Delphi, обозначающее, что далее следуют инструкции, реализующие функцию программиста; имя – имя функции. Используется для перехода из программы к инструкциям функции; параметр – это переменная, значение которой используется для вычисления значения функции. Конкретное значение параметр получает во время работы программы в результате вызова функции из основной программы; тип – тип значения, которое функция возвращает в вызвавшую ее программу.
Тип выражения, определяющего значение функции, должен совпадать с типом функции, указанным в ее объявлении. Пример функции:
// проверяет, является ли символ допустимым во время ввода целого числа
function Islnt(ch : char) : Boolean;
begin
if (ch >= '0') and (ch <= '9') // цифры
or (ch = #13) // клавиша <Enter>
or (ch = #8) // клавиша <Backspace>
then Islnt := True // символ допустим
else Islnt := False; // недопустимый символ
end;
Данную функцию можно использовать (вызвать) при фильтрации вводимого текста в любое текстовое поле, например, Edit1:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Islnt(Key) = False then key:=#0;
end;
Из примера видно, что функция вызывается и ей передается параметр Key, который обрабатывается в самой функции, после чего возвращается результат (в данном случае – False). При возвращенном значении False переменной key присваивается #0,что предотвратит ввод какого-либо символа в поле ввода, иначе символ вводится в поле ввода.
Процедура
Процедура – это разновидность подпрограммы. Обычно подпрограмма реализуется как процедура в двух случаях: когда подпрограмма не возвращает в основную программу никаких данных. Например, вычерчивает график в диалоговом окне; когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение. Например, подпрограмма, которая решает квадратное уравнение, должна вернуть в вызвавшую ее программу два дробных числа – корни уравнения.
В общем виде объявление процедуры выглядит так:
procedure Имя (var параметр1: тип1; ... var параметр К: тип К);
var // здесь объявление локальных переменных
begin // здесь инструкции процедуры
end;
где: procedure – зарезервированное слово языка Delphi, обозначающее, что далее следуют инструкции, реализующие процедуру программиста; имя – имя процедуры, которое используется для вызова процедуры; параметр K – формальный параметр, переменная, которая используется в инструкциях процедуры. Слово var перед именем параметра не является обязательным.
В качестве примера приведена процедура решения квадратного уравнения. У процедуры шесть параметров: первые три предназначены для передачи в процедуру исходных данных – коэффициентов уравнения; параметры x1 и х2 используются для возврата результата – корней уравнения; параметр ok служит для возврата информации о том, что решение существует.
// решает квадратное уравнение
procedure TForm1.SqRoot(a,b,c : real; var x1,x2 : real; var ok : boolean);
var
d : real; // дискриминант
begin
d:= Sqr(b) - 4*a*c;
if d < 0 then ok := False // уравнение не имеет решения
else
begin
ok := True;
x1 := (-b + Sqrt(d)) / (2*a) ; x2 := (-b - Sqrt(d)) / (2*a);
end; end;
//обрабатывает событие нажатие на Button1, где вызывает процедуру SqRoot
procedure TForm1.Button1Click(Sender: TObject);
var
k1,k2: real; // корни уравнения
rez: boolean; // True –решение есть, False – решения нет
mes:string; // сообщение
begin
SqRoot(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text),
StrToFloat(Edit3.Text),k1,k2,rez);
if rez then mes := 'Корни:'+#13+'x1='+FloatToStr(k1)+#13+'x2='+ FloatToStr(k2)+#13 else mes := 'Уравнение не имеет решения'; label_result.Caption := mes; end;
Инструкция вызова процедуры в общем виде выглядит так:
Имя(СписокПараметров);
где: Имя – имя вызываемой процедуры; Список Параметров – разделенные запятыми фактические параметры.
Функции и процедуры для порядковых типов данных
Pred() - функция возвращает предыдущее значение для выражения, указанного в качестве единственного аргумента.