Модуль – это специально образованная оформленная библиотека определений типов, констант, процедур и функций. Автономно компилируется независимо от использующей его программы. Модуль имеет расширение .pas. Для подключения модуля к программе или к другому модуль используют директиву Uses.
Type Объекты видимые пользовательской
заголовок с перечислением параметров
реализация процедур и функций.
Интерфейсная часть содержит объявления всех глобальных объектов модуля, которые должны стать доступными основной программе и другим модулям. При объявлении подпрограммы в интерфейсной части указывается лишь их заголовок.
В исполняемой части создаются описания подпрограмм, описанных в интерфейсной части, а также и локальных для модуля объектов, типов, констант, переменных, подпрограмм. В подпрограммах, описанных в интерфейсной части можно опускать список формальных параметрах (лучше этого не делать). IV и V часть отсутствуют. В IV части располагаются операторы, которые используются для передачи управления основной программе и обычно для подготовки её работы. Пример: инициализация переменных, открытие файлов.
Delphi Pascal Programming
В V части указываются операторы, выполняющиеся после завершения основной программы. Пример: закрывающийся файл.
Если несколько модулей содержат IV части то эти части выполняются последовательно друг за другом в порядке перечисления модулей. В предложении Uses завершающей части вычисляется в обратном порядке, предложении Uses в вызов программы.
Язык Object Pascal. Классификация типов данных. Строковый тип. Процедуры и функции обработки строк. Пример задачи.
Shortstring – последовательность символов из набора символов длиной не более 265 символов.
Тип String похож на одномерный массив символов.
(Array[1..20] of char;)
В строке st[1] – первый символ
St[0] – размер строки
St:=’’ – пустая строка
Writeln(st) – ничего не распечатается
· Сцеплять знаком «+» (concat)
Если строки различные по длине, недостающие символы короткой строки заменяются символами с самым маленьким символом.
Функции обработки строк.
Concat (s1[, s2, s3, …, sn]):string;
S1, s2, sn – строки для сцепления.
Copy (st, index, count):string – копирует из строки st count элементов, начиная с символа index.
Length (st):integer – определяет длину строки st.
Pos (subst,st):integer – отыскивает в строке st первое вхождение строки subst и возвращает номер позиции с которой она начинается. Если подстрока не найдена, возвращается «0».
Процедуры обработки строк.
Delete (st, index, count) – удаляет count символов из строки st начиная с символа index.
Insert (subst, st, index) – вставляет подстроку subst в строку st начиная с символа index.
Str (x, st) – преобразует число x типа real или integer в строку символов st.
Val (st, x, code) – преобразует строку символов st во внутреннее представление целого или вещественного числа х, параметр code = 0, если преобразование прошло успешно, или принимает значение, равное позиции в строке ошибочного символа.
C++ vs Free Pascal ( simple speed comparison )
Язык Object Pascal. Классификация типов данных. Тип данных множество. Пример задачи.
Множество – набор неповторяющихся элементов одного типа. Размер множества не более 256 элементов (0-255).
Описание типа множество имеет вид:
Элементы множества вводятся оператором присваивания
B:=[] – пустое множество
Вводить и выводить множества нельзя.
Проверка эквивалентности или совпадение.
<> — проверка на неравенство
= — проверка на вхождение.
In – проверка вхождения элемента или одного множества в другое множество.
Язык Object Pascal. Классификация типов данных. Тип данных записи. Пример задачи.
Записи представляют собой фиксированную совокупность полей, относящихся к различным типам данных.
Структура типа запись
Var z:t; где t – имя типа запись;
S1–Sn – имена полей.
R1–Rn – типы полей стандартные или ранее определенные.
Z – переменная этого типа
Язык Object Pascal. Классификация типов данных. Тип данных вариантная запись. Пример задачи.
Запись может иметь вариантную часть – это означает, что можно записать в пределах одного типа несколько различных структур. Непосредственный выбор структуры будет определяться контекстом или символьным значением. Его структура:
f – переменная под переключателем
с – тип переменной
d12, dk1 – метки, каждой из которых соответствует набор полей v11;vk1, которые являются компонентами вариантов.
С11, с12 – типы полей
А, B – общие поля для значений
Язык Object Pascal. Классификация типов данных. Тип данных файл. Классификация файлов по типу и методу доступа. Пример задачи.
Файл – именованная совокупность данных ( обычно 1 тип ), расположенных на внешнем устройстве, компоненты файла могут быть любого типа кроме файл.
Байт | Байт | Байт | ……. | Байт | Eof(end of file) |
File of string[20]
Строка | Строка | Строка | . | строка | Eof |
File of T, где T = record;
Byte | Char | Integer | … | Byte | Char | integer | Eof(end of file) |
Структура файла похожа на строки массива, но имеет следующие отличия.
У файла не определено максимальное количество элементов, т.е. его длина.
Количество элементов файла в каждый момент времени неизвестно, зато известно, что в конце файла символ EOF, в качестве которого используется символ с кодом 26. Максимальная длина файла определяется емкостью устройств внешней памяти.
Определить длину файла и выполнить другие операции можно с помощью процедур, предназначенных для работы с файлами.
¨По типу (по логической структуре):
¨По методу доступа:
1.Последовательного (Типизированные, Текстовые, Нетипизированные)
2.Прямого (Типизированные, Нетипизированные)
Файловый тип или переменная файлового типа задаются следующим образом
Имя – это имя файлового типа, а тип это любой тип, кроме: файл и объект.
Процедуры общие для всех трех видов файлов:
1.Assignfile (f,) – связывает файловую переменную с именем файла на внешнем носителе
2.Reset(f) – открывает существующий файл, связанный с файловой переменной f. Если F текстовый файл то он будет доступен только для чтения, при последовательном доступе к элементам. Если f типизированный файл, то он будет открыт и для чтения и для записи, как при последовательном, так и при прямом доступе. В текстовый файл записываются строки, символы и числа (действительные, вещественные). В любом случае при открытии файла указатель текущей позиции файла устанавливается на его начало, то есть нулевую компоненту.
3.Rewrite(f) – открывает новый физический файл, связанный с файловой переменной F, если такой файл уже существует, то он удаляется, и на его месте создается пустой файл (файл очищается). При открытии указатель текущей позиции устанавливается на начало.
4.Eof(f) – функция возвращает значение true, если указатель текущей позиции находится за последним элементом файла или файл пустой.
5.Rename (f, name1) – процедура переименовывает файл с файловой переменной f в name1, перед использованием этой процедуры файл должен быть закрыт, если был открыт процедурами Reset, rewrite, append
6.Erase (f) – это процедура уничтожает файл, перед использованием этой процедуры файл должен быть закрыт, если был открыт процедурами Reset, rewrite, append
Closefile(f) – процедура закрывает файл, но связь файловой переменной с именем файла сохраняется, обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Повторно файл открывается без использования процедуры Assignfile.
Язык Object Pascal. Классификация типов данных. Тип данных файл.Типизированные файлы. Процедуры и функции для работы с типизированными файлами. Пример задачи.
Типизированный файл – это файл, компоненты которого имеют один тип, задаваемые при объявлении файловой переменной.
Тип – это тип-компонент файла.
Var f: file of byte;
F1: file of string;
Компонент типизированного файла может быть любого типа кроме файлов, поскольку длина каждого компонента постоянна, возможен прямой доступ к каждой компоненте – это осуществляется с помощью процедуры Seek (f, ), где н.к. – номер компоненты
Первая компонента имеет номер ноль, с каждым типизированным связан файловый указатель, текущим значением которого является номер компонента, подлежащий обработке, при вводе или выводе очередной компоненты, значение указателя увеличивается или уменьшается на 1, для определения текущего положения файлового указателя используется функция filepos(f), которая возвращает значение текущего номера компонента на который указывает файловый указатель. Число компонент в файле точно определяется с помощью функции filesize(f) – количество компонент в файле. Типизированный файл открывается одновременно на считывание и на запись процедурами rewrite(f) и reset(f).
Для чтения компоненты из файла используется процедура read(f, ), где список переменных – это переменные того же типа что и компоненты файла
Для записи компонент в файл Write(f, ), чтобы определить находится ли файловый указатель в конце файла или нет, можно использовать функцию Eof(f). True — в конце, False – нет.
Закрытие типизированного файла процедурой close(f), при каждом этапе работы с файлом нужно использовать close(f).
1) Типизированный файл практически нельзя прочесть в текстовом редакторе.
2) Типизированный файл занимает меньше места, чем текстовый файл.
3) Типизированный файл читается только нами специально записанной процедурой.
Язык Object Pascal. Классификация типов данных. Тип данных файл. Текстовые файлы. Процедуры и функции для работы с текстовыми файлами.
Пример задачи.
Поскольку номер строки может иметь индивидуальную длину то нельзя указать адрес начала очередной строки, в связи с чем становится невозможной прямая обработка данных.
При работе с текстовыми файлами возможен только последовательный доступ.
Текстовый файл содержит типы: char, string, Boolean, целый, вещественный.
Можно просмотреть с помощью текстового редактора.
Процедуры и функции только для работы с текстом.
Для добавления записей к уже существующему файлу используется процедура Append(F).
Указатель файла перемещается в конец файла, добавление строк в конец файла.
В текстовых файлах в конце каждой строки формируется признак ее конца, определить ее признак можно с помощью логической функции – eoln(f), она true – если достигнут признак конца строки.
Seekeof(f) – пропускает все пробелы, знаки tab, маркеры конца строки eoln до маркера конца файла и до первого значащего символа.
Write(f, список вывода) и Writeln(f, список вывода)– одно или несколько выражений типа char или Boolean, любого целого или вещественного типа, после выводимого параметра можно указать ширину поля, в котором будет выводиться write(s1[:n][:m]);
S – выводимое выражение; n – ширина поля; m – количество десятичных значений в дробной части вещественного числа.
Выражения в списке вывода обязательно должны быть отделены пробелами.
Язык Object Pascal. Классификация типов данных. Тип данных файл. Нетипизированные файлы. Процедуры и функции для работы с нетипизированными файлами.
Пример задачи.
Преимущество: отсутствие делает файлы совместимыми с другими нетипизированными файлами, высокоскоростной обмен данными между дисками и файлами.
Информация представляется не записями, а блоками (байт). В оперативной памяти должен быть предусмотрен буфер длиной не менее размера блока, через который информация передается в файл
Для нетипизированные файлов применяются те же процедуры, что и для типизированных файлов, кроме процедур Read и Write, которые заменены на Blockread(f, , , []), blockwrite(f, , , [])
N – количество записей которое должно быть прочитано или записано за одно обращение к диску.
NN – необязательный параметр, содержащий при выходе количество фактических обрабатываемых записей.
Нетипизированный файл совместим с типизированным и не совместим с текстовым.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Основные понятия. Поля, методы, свойства.
Классы – типы, определяемые пользователем. В них описываются свойства объекта, его методы и события, на которые он может реагировать. Разработчик может сам создавать классы.
В Object Pascale классами называются специальные типы, которые содержат поля, метки и свойства, и как любой другой тип класс служит образцом для конкретной экз. реализации, которые называются объектами.
Важным отличием классов от других типов является то, что они располагаются в куче.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Инкапсуляция.
Инкапсуляция – структура данных, объединяющая в себе поля методы свойства, где поля содержат данные определенного типа.
Методы – функции и процедуры, выполняющие определенные действия.
Свойства – это поля данных, которые влияют на поведение объекта. Они служат для описания объектов и отличаются от обычных полей тем, что присвоение им значений связано с вызовом методов. Объединение методов полей и свойств называется инкапсуляцией.
Инкапсуляция позволяет изолировать класс от остальных частей программы сделать его самодостаточным для решения задачи. Класс несет функциональность.
Класс TForm – инкапсулирует в себе необходимое для создания окна Windows.
Класс TMemo – полнофункциональный текстовый редактор.
Класс TTime – обеспечивает работу с таймером.
Инкапсуляция огромные средства обмена работы Delphi – набор кирпичиков для построения программ пользователя.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Наследование.
Наследование – любой класс может быть порожден от другого класса, для этого указывается type TMyclass = class(tobject); tmyclass является наследником класса tobject.
Порожденный класс наследует поля методы свойства своего родителя и может дополняться новыми полями методами и свойствами. Таким образом, принципы наследования обеспечивают поэтапное разветвление классов и собственных библиотек классов. Все классы Object Pascal порождены от Tobject. Этот класс не имеет полей и свойств, но включает методы общего назначения, обеспечивающие весь цикл.
Программист не может создать не дочерний класс от Tobject.
Следующие 2 объявления идентичны.
Принцип последования приводит к созданию ветвящегося дерева классов постветвлящегося от Tobject до потомков. Каждый потомок выполняет возможности своего родителя и передает их своим потомкам.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Полиморфизм.
Полиморфизм – свойство классов решать схожие по свойству программы разными методами в рамках Object Pascal. Поведенческие свойства классов определяются набором входящих в него методов, изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителей специальные свойства. Для изменения метода необходимо перекрыть его в потомке, то есть объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте родителе и в объекте потомке будут действовать два одноименных метода, имеющих различную алгоритмическую основу и следовательно придающие объектам разные свойства. Это называют полиморфизмом объектов.
В Object Pascal полиморфизм достигается не только описанным выше механизмом перекрытия методом родителей, но и их виртуализацией, позволяющей родительским методам обращаться к методам своих потомков.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Поля.
Поля – инкапсулированные в класс данные. Поля могут быть любого типа, в том числе данными.
Type Tmyclass = class;
Каждый объект получает уникальный набор полей, но общие для всех объектов данного класса набор методов и свойств. Фундаментальный принцип инкапсуляции позволяет обращаться к полям только методов и свойств класса, но О. Паскаль позволяет обращаться к полям и напрямую.
Type Tmyclass = class;
begin aobject – имя переменной класса
aObject.FintField:=0; FintField – имя поля.
Класс потомок получает поля всех своих предков и может дополнить их своими полями, но он не может переопределять поля или удалять их.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Методы
Инкапсулированные (объединенные) в классе процедуры и функции называются методами. Они объявляются также как и обычные подпрограммы:
Type Tmyclass = class;
Function MyFunc (aPar:integer):integer;
Доступ к методам класса, как и к его полям возможен с помощью составных имен.
Методы класса могут перекрываться в потомках.
Потомки обоих классов могут выполнять сходные по названию процессы DoWork, но в каждом случае делать по-разному.
В О.Паскале чаще используется динамичное замещение методов на этапе прогона (выполнения) программы. Для реализации этого – метод, замещаемый в родительском классе должен объявляться как динамический с директивой Dynamic, иди Virtual. Встретив такое объявление компилятор создает две таблицы DMT(DynamicMetodTable) и VMT(VirtualMT), и поместит в них адреса точек входа, соответственных динамических и виртуальных методов. При каждом обращении к замещенному методу компилятор вставляет ход, позволяющий адрес точки входа в подпрограмму или иную таблицу.
В классе потомки, замещающие метод, объявляется с директивой Override (перекрыть), получив это указание, компилятор создает вход, который на этапе прогона программы поместит в родительскую таблицу точку входа метода класса потомка, что позволяет родителю выполнять нужное действие с помощью нового метода. Пусть например класс с помощью методов SHOW and Hide показывает что-то на экране и стирает что-то с экрана. Для создания изображения он использует метод Draw с логическим параметром
Type TvisualObject = class(Twincontrol);
Методы Draw у родителей и потомков имеют разную реализацию и создают разные изображения, в результате родительские методы Show and Hide показывают или стирают те или иные изображения будут в зависимости от конкретной реализации метода Draw у любого из своих потомков.
Динамическое связывание в полной мере реализует полиморфизм класса.
Источник: mykonspekts.ru
Краткое введение в Object Pascal
Решил в краткой и одновременно в более понятной форме изложить основы Object Pascal. Тем не менее, здесь всего лишь минимум и для большего объема я советую Вам прочитать книгу «Библия для программистов в среде Delphi».
Структура проекта
program Project1; uses Forms, Unit1 in ‘Unit1.pas’ ; begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
В Object Pascal в качестве ограничителей комментария могут также использоваться пары символов (*, *) и //. Скобки (*. *) используются подобно фигурным скобкам, т. е. комментарием считается находящийся в них фрагмент текста, а символы // указывают компилятору, что комментарий располагается за ними и продолжается до конца текущей строки:
< Это комментарий >(* Это тоже комментарий *) // Все символы до конца этой строки составляют комментарий
Структура модуля
Модули — это программные единицы, предназначенные для размещений фрагментов программ. Следующий фрагмент программы является синтаксически правильным вариантом модуля:
unit Unit1; interface // Секция интерфейсных объявлений implementation // Секция реализации end.
В секции интерфейсных объявлений описываются программные элементы (типы, классы, процедуры и функции), которые будут «видны» другим программным модулям, а в секции реализации раскрывается механизм работы этих элементов.
Разделение модуля на две секции обеспечивает удобный механизм обмена алгоритмами между отдельными частями одной программы. Он также реализует средство обмена программными разработками между отдельными программистами. Получив откомпилированный «посторонний» модуль, программист получает доступ только к его интерфейсной части, в которой, как уже говорилось, содержатся объявления элементов. Детали реализации объявленных процедур, функций, классов скрыты в секции реализации и недоступны другим модулям.
Элементы программы
Элементы программы — это минимальные неделимые ее части, еще несущие в себе определенную значимость для компилятора. К элементам относятся:
- зарезервированные слова;
- идентификаторы;
- типы;
- константы;
- переменные;
- метки;
- подпрограммы;
- комментарии.
Зарезервированные слова это английские слова, указывающие компилятору на необходимость выполнения определенных действий. Зарезервированные слова не могут использоваться в программе ни для каких иных целей кроме тех, для которых они предназначены.
and except label resourcestring array exports library set as file mod shl asm finalization nil shr begin finally not string case for object then class function of threadvar const goto or to constructor if out try destructor implementation packed type dispinterface in procedure unit div inherited program until do initialization property uses downto inline raise var else interface record while end is repeat with xor
Стандартные директивы первоначально связаны с некоторыми стандартными объявлениями в программе. К ним относятся:
absolute export pascal requires abstract external private public assembler far protected safecall automated forward near read cdecl implements published readonly contains index override resident default message package stdcall dispid name register stored dynamic nodefault reintroduce virtual write writeonly
Типы — это специальные конструкции языка, которые рассматриваются компилятором как образцы для создания других элементов программы, таких как переменные, константы и функции.
Основные типы данных
К основным типам данных языка Delphi относятся:
- целые числа (integer);
- дробные числа (real);
- символы (char);
- строки (string);
- логический тип (boolean).
Целые числа и числа с плавающей точкой могут быть представлены в различных форматах.
Примечание
В версиях Delphi 4 и 5 тип Real эквивалентен типу Double. Если требуется (в целях совместимости) использовать 6-байтный Real, нужно указать директиву компилятора .
Массивы
Массивы в Object Pascal во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты по сути данные одного типа. Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера. Описание типа массива задается следующим образом:
= array [ ] of ;
В качестве индексных типов в Object Pascal можно использовать любые порядковые типы, имеющие объем не более 2 Гбайт (т. е. кроме LongWord И Int64).
Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:
var a,b : array [1..10] of Real;
Динамические массивы
С версии Delphi 4 впервые введены так называемые динамические массивы. При объявлении таких массивов в программе не следует указывать границы индексов:
var A: array of Integer; В: array of array of Char; C: array of array of array of Real;
В этом примере динамический массив А имеет одно измерение, массив В — два и массив С — три измерения. Распределение памяти и указание границ индексов по каждому измерению динамических массивов осуществляется в ходе выполнения программы путем инициации массива с помощью функции SetLength. В ходе выполнения такого оператора:
SetLength(А,3);
одномерный динамический массив A будет инициирован, т. е. получит память, достаточную для размещения трех целочисленных значений. Нижняя граница индексов по любому измерению динамического массива всегда равна 0, поэтому верхней границей индексов для A станет 2.
Объявление одномерного массива:
ИмяМассива: array [НижнийИндекс. ВерхнийИндекс] of ТипЭлементов;
Объявление двумерного массива:
ИмяМассива: array [НижнийИндекс1..ВерхнийИндекс1, НижнийИндекс2..ВерхнийИкдекс2] of ТипЭлементов;
Записи
Запись — это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова:
= record end;
Вариант 1. Объявление записи в разделе переменных:
Запись: record Поле1:Тип1; Поле2: Тип2; ПолеJ: TиnJ; end;
Вариант 2. Сначала объявляется тип-запись, затем — переменная-запись:
type ТипЗапись = record Поле1: Тип1; Поле 2:Тип2; ПолеК: ТипК; end; var Запись: ТипЗапись;
Множества
Множества — это наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Object Pascal.
Количество элементов, входящих в множество, может меняться в пределах от 0 до 255 (множество, не содержащее элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей.
Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят также и в другое, говорят о включении первого множества во второе. Пустое множество включается в любое другое.
Описание типа множества имеет вид:
= set of ;
Указатели
Оперативная память ПК представляет собой совокупность ячеек для хранения информации — байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, они позволяют обращаться, к любому байту памяти. Object Pascal предоставляет в распоряжение программиста гибкое средство управления динамической памятью — так называемые указатели.
Указатель — это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, ShortInt, Boolean) занимают во внутреннем представлении один байт, остальные — несколько смежных. Поэтому на самом деле указатель адресует лишь первый байт данных.
Как правило, указатель связывается с некоторым типом данных. Такие указатели будем называть типизированными.
Строки
Объявление переменной-строки длиной 255 символов: Имя: string;
Объявление переменной-строки указанной длины: Имя: string [ ДлинаСтроки ].
Операции
В Object Pascal определены следующие логические операции:
- not — логическое НЕ;
- and — логическое И;
- or — логическое ИЛИ;
- xor — исключительное ИЛИ.
К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами:
i shl j — сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
i shr j — сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
Правила использования операций с операндами различного типа.
Составной оператор
Составной оператор — это последовательность произвольных операторов программы, заключенная в операторные скобки — зарезервированные слова begin . end . Составные операторы — важный инструмент Object Pascal, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода goto).
Инструкции выбора
Инструкция if
Вариант 1: if-then-else.
if Условие then begin < Инструкции, которые выполняются, если условие истинно. >end else begin < Инструкции, которые выполняются, > < если условие ложно >end ;
Вариант 2: if-then.
if Условие then begin < Инструкции, которые выполняются, если условие истинно. >end;
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Инструкция case
case Выражение of Список1_Констант: begin < инструкции >end; Список2_Констант: begin < инструкции >end; СписокJ_Констант: begin < инструкции >end; end;
case Выражение of Список1_Констант: begin < инструкции >end; Список2_Констант: begin < инструкции >end; СписокJ_Констант: begin < инструкции J>end; else begin < инструкции >end; end;
Инструкции между begin и end выполняются, если значение выражения, записанного после case, совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, находящиеся после else, между begin и end.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Циклы
Инструкция for
Вариант 1 (с увеличением счетчика):
for Счетчик:=НачальноеЗначение to КонечноеЗначение do begin < здесь инструкции >end;
Если НачальноеЗначение > КонечноеЗначение, то инструкции между begin и end не выполняются.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Вариант 2 (с уменьшением счетчика):
for Счетчик:=НачальноеЗначение downto КонечноеЗначение do begin < здесь инструкции >end;
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Инструкция repeat
repeat < инструкции >until Условие;
Сначала выполняются инструкции цикла, которые расположены между repeat и until. Затем вычисляется значение выражения Условие, и если оно равно False, то инструкции цикла выполняются еще раз. И так до тех пор, пока значение выражения Условие не станет равным True.
Инструкция while
while Условие do begin < инструкции ) end;
Сначала проверяется Условие, если оно истинно, то выполняются инструкции между begin и end. Затем снова проверяется Условие. Если оно выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока Условие не станет ложным.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Объявление функции
function ИмяФункции(var Параметр1: Тип 1; var Параметр2: Тип2; var ПараметрJ: TиnJ ) : Тип; const < описание констант >var < описание переменных >begin < инструкции функции >Result:=Значение; end;
Примечание: слово var ставится перед именем параметра в том случае, если параметр используется для возврата значения из функции в вызвавшую ее программу.
Объявление процедуры
procedure ИмяПроцедуры(var Параметр1: Тип1; var Параметр2: Тип2; var ПараметрJ: TипJ > ; const < описание констант >var < описание переменных >begin < инструкции процедуры >end;
Примечание: слово var ставится перед именем параметра в том случае, если параметр используется для возврата значения из процедуры в вызвавшую ее программу.
Ссылки
- Справочник по процедурам и функциям Object Pascal
- Borland Delphi 4.0 для начинающих — учебник.
- Справочник по функциям WinAPI
Источник: codenet.ru
Лекция 2. Описательная часть программы
Любая программа на языке Object Pascal состоит из двух частей: часть описаний и часть исполнительная. Исполнительная часть начинается с ключевого слова begin и заканчивается ключевым словом end с точкой (смотри ниже).
На этом рисунке и далее в угловых скобках будем приводить понятия (эти угловые скобки в программе не пишутся!).
Говоря о структуре программы отметим следующее. Некоторые описательные разделы могут отсутствовать в реальной программе, а также включаться повторно в текст программы. Их порядок и повторное включение зависят только от внутренней логики программы. Например, если в описании типа используется константа, то описание этой константы должно предшествовать описанию типа и т. д.
Самая простая программа может не содержать оператора program, описательных разделов и иметь пустое тело. Однако, она может быть откомпилирована и запущена, например:
Следующая программа будет посложней. На рис.2.1 приведено окно Object Pascal с программой, которая получает два числа и выводит их сумму на экран. Программа содержит один описательный раздел — раздел описания переменных a и b целого типа.
Рис. 2.1. Окно Object Pascal с простой программой p3
После выбора в меню Run строки Run или нажатия клавиш Ctrl+F9 эта программа начнёт выполняться. На экране дисплея мы увидим окно пользователя с чёрным фоном и мигающим курсором в конце фразы «Введи два числа: ». Далее необходимо набрать на клавиатуре два произвольных целых числа через пробел и нажать клавишу Enter.
После этого экран пользователя исчезнет и вы увидите опять экран с текстом программы. Чтобы увидеть экран пользователя с результатами вычислений требуется нажать клавиши Alt+ F5 (смотри рис. 2.2). Вернуться опять в экран с текстом программы можно нажав любую клавишу.
Рис. 2.2. Окно с результатами выполнения программы p3
Ясно, что программы могут быть очень сложными, содержать все разделы описания, процедуры и функции. По мере знакомства с языком мы их также будем использовать.
2.2 Описание констант
В программах часто встречаются неизменные по ходу исполнения программы величины, которые называются константами. Раздел описания констант начинается с ключевого слова Const.
Одни константы могут быть использованы при описании других констант, переменных и типов. Структура описания констант:
А = 75; Т = 3. 56; S = ‘ABCD’;
В этом примере приведена константа А целого типа, константа Т вещественного типа и константа S – строка из 4-х символов.
2.3 Описание и использование меток
Использование меток при программировании считается дурным тоном. Но бывают случаи, когда для использования меток существуют веские причины, например, начальный этап создания программы, когда автор еще не видит другого решения задачи. Идентификатор метки может начинаться с цифры. Раздел описания меток начинается с ключевого слова Label. Описание меток выглядит так:
Метки ставятся в том блоке программы, в котором они описываются. Метку можно поставить перед любым оператором. Отделяется метка от оператора двоеточием. Метка позволяет выполнить прямой переход на этот оператор.
Переход к метке осуществляется с помощью оператора перехода к метке:
label M1, M2, M3, M4;
M3: Writeln(‘метка 3’); goto M4;
M2: Writeln(‘метка 2’); goto M3;
M1: Writeln(‘метка 1’); goto M2;
Программа выводит на экран сообщения по порядку: «метка 1» , «метка 2» , «метка 3», но операторы вывода в программе расположены в обратном порядке. Такой эффект достигается использованием меток и операторов перехода на метку goto.
Источник: studfile.net