
- •Язык программирования Pascal Алфавит языка Pascal
- •Числа. Представления чисел
- •Имена и идентификаторы.
- •Структура программы на Pascal
- •Типы данных
- •Простые типы данных. Данные целого типа.
- •Данные вещественного типа
- •Данные логического типа
- •Данные символьного типа
- •Стандартные процедуры и функции
- •Арифметические выражения
- •Логическое выражение
- •Оператор присваивания
- •Составной оператор
- •Пустой оператор
- •Операторы ввода
- •Вводи числовых данных
- •Ввод символьных данных
- •Ввод логических данных
- •Вывод данных на экран
- •Оператор выбора или оператор варианта
- •Перечислимый тип данных
- •Ограниченный тип данных или тип диапазон
- •Оператор цикла
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Итерационный цикл
- •Оператор присоединения
- •Подпрограммы
- •Подпрограммы-процедуры
- •Подпрограммы-функции
- •Параметры массивы и параметры строки.
- •Рекурсия
- •Типизированные константы
- •Алгоритм создания последовательного файла.
- •Алгоритм доступа к элементам файла.
- •Алгоритм добавления элементов в последовательный файл.
- •Строковый тип данных. Строковые выражения.
- •Операция отношения.
- •Процедуры.
- •Текстовый файл.
- •Заголовок модуля. Связь модуля с программой.
- •Стандартные модули
- •Объектно-ориентированное программирование (ооп)
- •Работа с массивами
- •Множества
- •Операции над множествами
- •Понятие файла
- •Работа с файлами
- •Структура модуля
- •Стандартные модули языка Delphi
Объектно-ориентированное программирование (ооп)
ООП – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса. Класс – это структурированный тип, включающий в себя в качестве элементов типизированные данные и функции, применяемые по отношению к этим данным. Тип класса устанавливается для объектов. Однотипные объекты принадлежат одному классу, то есть объект характеризуется, как совокупность всех своих свойств и их текущих значений, так и совокупностью допустимых для данного объекта действий. Объект ООП – это совокупность переменных состояния и связанных с ними методов. Методы определяют как объект взаимодействует в окружающим миром. Под методами объекта понимают процедуры и функции, объявление которых включено в описание объекта (класса) и которое выполняют действия.
ООП имеет 3 основных свойства:
инкапсуляция;
наследование;
полиморфизм.
Инкапсуляция – это механизм, который объединяет данные и методы, манипулирующие этими данными, в одно целое и защищает данные и методы от внешнего вмешательства или неправильного использования. Инкапсуляция защищает данные, принадлежащие объекту от возможных ошибок, которые могут возникнуть при прямом доступе к этим данным. Инкапсуляция обеспечивает сокрытие данных, так как через свойства объекта.
Наследование – это процесс, по средствам которого один объект может наследовать свойства другого объекта и добавлять к ним черты (характеристики) свойственные только для этого объекта. Смысл наследования заключается в том, что не нужно каждый раз «с нуля» описывать новый объект, а можно указать «родителя» (базовый класс) и описать только отличительные особенности нового класса. В результате новый объект будет обладать всеми свойствами родительского класса плюс собственными отличительными особенностями. В итоге можно создать иерархию (древовидную структуру) объектных типов, где поля данных и методы «предков» автоматически являются полями данных и методами «потомков».
Полиморфизм – это свойство позволяет одно и тоже имя использовать для решения нескольких технически разных задач. Полиморфизм подразумевает такое определение методов, при котором метод (процедура) с одним и тем же именем может применятся к различным родственным объектам. Полиморфизм – это «одно имя – множество методов». Выбор конкретной процедуры (метода) в зависимости от ситуации возлагается на компилятор. Механизм полиморфизма заключается в следующем: при вызове метода класса сначала этот метод ищется в самом классе, если метод найден то он выполняется и поиск завершается, если метод не найден, то происходит обращение к родительскому классу и ищется вызванный метод в нем. Если метод снова не найден, то продолжается поиск вверх по иерархическому дереву вплоть до корня.
Работа с массивами
Массивы в целом участвуют только в операциях присваивания. При этом все элементы одного массива копируются в другой. Например, если объявлены два массива A и B,
var A, B: array[1..10] of Integer; |
то допустим следующий оператор:
A := B; |
Оба массива-операнда в левой и правой части оператора присваивания должны быть не просто идентичны по структуре, а описаны с одним и тем же типом, иначе компилятор сообщит об ошибке. Именно поэтому все массивы рекомендуется описывать в секции type.
С элементами массива можно работать, как с обычными переменными. В следующей программе элементы численного массива последовательно вводятся с клавиатуры, а затем суммируются. Результат выводится на экран.
program Console;
{$APPTYPE CONSOLE}
uses SysUtils;
var A: array[1..5] of Double; Sum: Double; I: Integer;
begin for I := 1 to 5 do Readln(A[I]); Sum := 0; for I := 1 to 5 do Sum := Sum + A[I]; Writeln(Sum); Writeln('Press Enter to exit...'); Readln; end. |
Для массивов определены две встроенные функции — Low и High. Они получают в качестве своего аргумента имя массива. Функция Low возвращает нижнюю, а High — верхнюю границу этого массива. Например, Low(A) вернет значение 1, а High(A) — 5. Функции Low и High чаще всего используются для указания начального и конечного значений в операторе цикла for. Поэтому вычисление суммы элементов массива A лучше переписать так:
for I := Low(A) to High(A) do Sum := Sum + A[I]; |
В операциях с многомерными массивами циклы for вкладываются друг в друга. Например, для инициализации элементов таблицы, объявленной как
var Table: array[1..5, 1..20] of Double; |
требуются два вложенных цикла for и две целые переменные Col и Row для параметров этих циклов:
for Col := 1 to 5 do for Row := 1 to 20 do Table[Col, Row] := 0; |