
- •Содержание
- •Тема 1. Основные понятия
- •1.2. Задача, алгоритм, программа
- •1.2.Структура модуля исходного кода
- •Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
- •2.1 Линейный блок
- •2.2. Переменные и константы
- •Синтаксис объявления переменной в ObjectPascal
- •Синтаксис объявления именной константы в ObjectPascal
- •Синтаксис объявления переменных в VisualBasic
- •2.3Типыпеременныхиконстант
- •Var1: type definitions;
- •Var2, var3: type definition4;
- •Var4 : typel;
- •2.4. Простые типы данных
- •2.4.1. Порядковые типы
- •Поддиапазонные типы
- •Перечислимые типы
- •Операции над порядковыми типами
- •2.4.2. Целые переменные
- •Integer Shortint Smallint Longint Byte Word Cardinal
- •Физические целые типы
- •Логические целые типы
- •2.4.3. Вещественные переменные
- •Вещественные типы.
- •2.4.4. Строковые переменные
- •2.4.5. Булевы типы
- •Размеры переменных булевых типов
- •2.5. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Передача параметров
- •2.6 Область видимости переменных, констант, процедур и функций
- •2.7 Стандартные функции
- •Функции преобразования типов
- •Математические функции
- •Функции вещественных типов
- •Функции обработки строк
- •Строковые функции
- •2.8 Операции над данными
- •2.9 Приоритеты операций
- •2.10. Структурные типы
- •2.10.1. Записи
- •1: Variantnamel: varianttype3;
- •2, 3: Variantname2: varianttype4;
- •1: (KinfWorker: String[15];
- •2: (PosAdmin: String[20]);
- •2.10.2. Массивы
- •Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
- •Var MyArray: Array [1..10] of Integer;
- •2.10.3. Множества
- •Var MyAlphaSet: CharSet;
- •2.10.4. Файловый тип
- •2.11. Указательные типы
- •Средства работы с указателями
- •2.12. Процедурные типы
- •2.13. Тип variant
- •Тема 3. Блок принятия решений: операторы ветвления
- •3.1 Оператор if
- •If условие1 then
- •3.3Операторcase
- •Тема 4. Цикличекий блок: операторы повторяющихся действий
- •4.1.Цикл for
- •4.2. Циклы while и repeat
- •4.3. Операторы break и cont inue
- •Тема 5. Работа с текстовыми файлами
- •5.1. Типы доступа к текстовым файлам
- •5.2. Текстовые файлы
- •5.2.2 Бинарные файлы
- •Id : String[12];
- •Тема 6. Работа с классами
- •6.1. Понятие класса
- •6.2. Классы в object pascal
- •6.3. Свойства класса
- •Способ глобальных и локальных переменных
- •Способ процедуры свойств
- •Создание и удалениеобъектов
- •Inherited Create;
- •Inherited Destroy;
- •6.4. Методы класса
- •6.5. Объявление и удаление объектов
- •Литература
Размеры переменных булевых типов
Тип |
Размер |
Boolean |
1 байт |
ByteBool |
1 байт |
WordBool |
2 байт (объем Word) |
LongBool |
4 байт (объем Longint) |
По аналогии с целыми и символьными типами, подразделяющимися на физические и логические, естественно предположить, что ByteBool, WordBool и LongBool — физические типы, Boolean — логический. Но в данном случае это не совсем так. Все четыре типа различны. Для Object Pascal предпочтителен тип Boolean, остальные определены для совместимости с другими языками программирования и операционными системами. Переменным типа Boolean можно присваивать только значения True (истина) и False (ложь). Переменные ByteBool, WordBool и LongBool могут принимать и другие порядковые значения, интерпретируемые обычно как False в случае нуля и True — при любом ненулевом значении.
Булевы типы в Delphi можно сравнить с типом LOGICAL языка FORTRAN. В Basic, С и C++ булевы типы как таковые отсутствуют. Булевы выражения в этих языках применяются точно так же, как во всех остальных, однако результаты этих выражений интерпретируются не как значения отдельного типа, а как целые числа. Как в Basic, так и в C/C++ булевы выражения дают численные результаты, интерпретируемые как False в случае 0 и True — в случае любого ненулевого значения. Это совместимо с порядковыми значениями булевых выражений в Delphi. В C/C++ простые сравнения дают результат 1 (True) или 0 (False). Это эквивалентно булевым значениям Delphi. Только результат сравнения в Delphi выводится как булевый, а не целый. В большинстве случаев типу Boolean из Delphi соответствует тип char в C/C++. В Basic зарезервированы слова TRUE (эквивалентно константе -1) и FALSE (эквивалентно константе 0). В Basic TRUE меньше FALSE, в Delphi, наоборот, False меньше True.
2.5. Процедуры и функции
Как и в большинстве языков высокого уровня, в Object Pascalподдерживаются два вида подпрограмм — процедуры и функции. Подпрограммы, не встроенные в системуDelphi, а создаваемые программистом (пользователемDelphi), называются пользовательскими.
Процедурапредставляет собой самостоятельную часть программного кода, обладающая уникальным именем, благодаря которому она может быть вызвана и выполнена. Процедура не возвращает никакого значения в ту точку, откуда она была вызвана, но ей можно передать некоторый набор параметров (аргументов).
Функцииво всем подобна процедуре, а её единственное отличие от процедуры состоит в том, что функция возвращает значение в то место, откуда она была вызвана.
Процедура принимает некоторые некоторый набор переменных (аргументов), выполняют программный код и изменяют значения передаваемых переменных (аргументов).
Функцияполучает набор параметров (аргументов) и выполняет с ними некоторые действия. Результат этих действий возвращается функцией в то место, откуда она была вызвана.
Аргументаминазываются переменные, которые передаются процедуре или функции.
Описание и вызов процедуры
Синтаксис определения процедуры в Object Pascal имеет следующий вид:
procedure Имя_процедуры(формальный_параметр1: тип1;
формальный_параметр2: тип2; . . .) ;
[локальные_обьявления; ]
begin
[операторы; ]
end;
Для вызова процедуры в коде должно быть записано ее имя со списком фактических параметров в скобках. Синтаксис вызова процедуры имеет следующий вид:
Имя_процедуры (фактический_параметр1,
фактический_параметр2, . . .) ;
В качестве примера рассмотрим процедуру Adder (), вычисляющую сумму двух чисел.
//Процедура Adder() вычисляет сумму чисел numl и пшп2 и сохраняет результат в переменной sum
procedure Adder(numl: Real; num2: Real; Var sum: Real);
begin
sum := numl + num2;
end;
В этом коде переменные numl,num2иsumявляются формальными параметрами процедурыAdde(). При вызове процедуры в эти переменные будет записана информация, передаваемая из вызывающей подпрограммы в вызываемую. Список формальных параметров содержит три элемента, это информирует компиляторDelphiо том, что при вызове процедурыAdder() ей нужно передать три формальных параметра. Назначение ключевого слова var, расположенного перед формальным параметромsumбудет рассмотрено позже.
Ниже приведена простая программа тестирования процедуры Adder(). Щелчок пользователя на кнопкеbtnAddактивизирует обработчикAddNumber(), который записывает в переменныеnumlиnum2содержимое полей вводаedtNumlиedtNum2, вызывает процедуруAdder() и записывает результат ее работы в поле вводаedtResult.
//Сложение двух введенных пользователем чисел
Var
rFirstNum: Real;
rSecjndNum: Real;
rSumma : Real;
begin
rFirstNum =2;
rSecondNum =7;
Adder(rFirstNum, rSecondNum, rSumma);
end;
Переменные rFirstNum,rSecondNumиrSummatявляются фактическими параметрами процедурыAdder(), они содержат значения, передаваемые в эту процедуру при вызове. Обратите внимание: фактический параметр может быть любым выражением, тип которого совпадает с типом соответствующего формального параметра.