- •Алгоритмы
- •Свойства алгоритма
- •Способы описания алгоритмов
- •Язык программирования
- •Способы описания синтаксиса языка программирования
- •1. Бнф (Бэкуса-Наура форма)
- •Компиляторы и интерпретаторы
- •Обзор языков программирования высокого уровня (таблица)
- •Язык программирования Паскаль Первая программа на языке программирования Паскаль
- •Типы, переменные и константы
- •Основные типы данных языка Pascal
- •Операторы ввода/вывода
- •Форматы вывода
- •Выражения и операции Выражения
- •Операции
- •Операции div и mod для целых
- •Операции shl и shr для целых
- •Логические операции
- •Часто используемые правила математической логики
- •Стандартные процедуры и функции Стандартные функции
- •Стандартные функции в Dephi
- •Стандартные процедуры для целых
- •Явление переполнения
- •Погрешность округления и вычислительная погрешность
- •Примеры на суммирование рядов
- •Процедуры break и continue
- •Оператор безусловного перехода goto
- •Подпрограммы. Процедуры и функции
- •Процедуры
- •Синтаксис описания процедуры
- •Оператор вызова процедуры
- •Функции
- •Переменная Result
- •Способы передачи параметров Передача по значению. Параметры-значения
- •Передача по ссылке. Параметры-переменные (с ключевым словом var)
- •Семантика вызова подпрограммы
- •Алгоритм вызова подпрограммы
- •Статическая и автоматическая память
- •Локальные и глобальные переменные
- •Обращение к глобальным переменным и побочный эффект
- •Область видимости и время жизни объекта
- •Статическая локальная переменная
- •Перегрузка имен подпрограмм
- •Структура модуля
- •Перечислимый и диапазонный типы Перечислимый тип
- •Записи с вариантами
- •Как записи с вариантами хранятся в памяти
- •Сортировка массивов записей
- •Индексная сортировка
- •Множества
- •Стандартные подпрограммы для работы с символами
- •Виды строк в Delphi
- •Cтроки shortstring
- •Основные подпрограммы для работы со строками
- •Основные подпрограммы для работы со строками (Delphi)
- •Алгоритмы на строках
- •Использование Split
Типы, переменные и константы
Данные в программе делятся на переменные и константы. Константы бывают двух типов: именованные (Pi) и неименованные (3.14). Каждая переменная и константа имеют определенный тип. Тип определяет, как данные хранятся в памяти, диапазон значений типа и операции, которые можно выполнять над данными этого типа .
Основные типы данных языка Pascal
Тип |
Размер |
Диапазон |
Дополнительная информация |
integer (целое) |
4 байта (2 байта в Turbo Pascal) |
-2*109...2*109 |
максимальному значению переменной данного типа соответствует типизированная константа MaxInt=231. Операции: + - / * (бинарные), + - (унарные), > < >= <= = <> (отношения), and or xor not (побитовые), div mod (целочисленное деление), shl shr (сдвига) |
byte (целое без знака) |
1 байт |
0...255 |
Операции: те же, что и для integer |
real (вещественный) |
8 байт |
5.0*10-324...1.7*10308 |
Операции: + - / * (бинарные), + - (унарные), > < >= <= = <> (отношения) |
char (символьный) |
1 байт |
|
'c' ' ' операция + (слияние); char+char=string |
string (строковый) |
|
|
'hello' операция + (слияние); string+char=string |
boolean (логический) |
1 байт |
|
переменные этого типа могут принимать всего два значения: True и False. Операции: and or not xor |
Основные типы образуют естественную иерархию "меньше"-"больше": byte < integer < real; char < string. Эта иерархия используется в правилах неявного преобразования типов. В Delphi имеется также ряд дополнительных целых и вещественных типов, различающихся объемом занимаемой памяти, наличием знака (для целых), диапазоном возможных значений и количеством значащих цифр (для вещественных): это целые типы word, longword, smallint, shortint, int64 и вещественные типы single, extended, comp, currency (они также "встраиваются" в указанную выше иерархию).
Раздел описаний
Любой объект в программе (переменная, константа, именованный тип, подпрограмма, метка) перед использованием должен быть описан в разделе описаний. Он состоит из разделов описания переменных, констант, типов, меток, подпрограмм, чередующихся в произвольном порядке.
Раздел описания переменных
var i,j: integer; s: string; b: boolean; r1,r2: real; c: char;
Раздел описания именованных констант
const Pi = 3.141592; Space = ' '; ProcName = 'Athlon'; r: real = 2; // типизированная константа
Тип нетипизированной константы определяется типом присваиваемого ей значения.
Раздел описания типов
type int = integer; IArr = array [1..100] of real;
Операторы, обеспечивающие линейную структуру программы
Оператор присваивания
Оператор присваивания имеет вид:
имя переменной := выражение
Пример 1. Вычислить x16.
x:=x*x; // x^2 x:=x*x; // x^4 x:=x*x; // x^8 x:=x*x; // x^16
Пример 2. Вычислить x15=(x5)3.
y:=x*x; // x^2 z:=y*x; // x^3 a:=y*z; // x^5 a:=a*a*a; // x^15
Присваивание переменной некоторого начального значения называется инициализацией этой переменной.
Если переменной можно присвоить выражение, то говорят, что они совместимы по присваиванию. Переменная и выражение совместимы по присваиванию:
если они имеют один тип;
если переменная и выражение имеют целый тип (например, выражение имеет тип byte, а переменная - тип integer или наоборот);
если выражение имеет целый, а переменная - вещественный тип;
если выражение имеет символьный, а переменная - строковый тип.
Во всех случаях, кроме первого, происходит неявное преобразование типов, в процессе которого может меняться внутреннее представление данных. Заметим также, что при присваивании типа integer типу byte может произойти выход за границы диапазона меньшего типа byte.
Пример.
var i: integer; ... i:=2.0; // неверно!
Для преобразования вещественного в целое следует использовать функции round и trunc.
i:=round(2.0); i:=trunc(2.0);