Главная страница
Навигация по странице:

  • Билет 7

  • Помните, дополнительные вопросы, задаваемые на экзамене, могут быть направлены на те моменты, которые не описаны тут


    Скачать 49.64 Kb.
    НазваниеПомните, дополнительные вопросы, задаваемые на экзамене, могут быть направлены на те моменты, которые не описаны тут
    АнкорBilety_OP.docx
    Дата25.12.2017
    Размер49.64 Kb.
    Формат файлаdocx
    Имя файлаBilety_OP.docx
    ТипДокументы
    #12934

    Замечания:


    1. Данный документ содержит минимум информации по соответствующему билету.

    2. Информация, приведённая в данном документе взята из учебника и лекций.

    3. Для лучшего понимания желательно обратиться к учебнику нового издания по программированию.

    4. Помните, дополнительные вопросы, задаваемые на экзамене, могут быть направлены на те моменты, которые не описаны тут.

    5. Совет: Учите билеты не по порядку, самый оптимальный вариант с 1 по 20, затем с 20 по 1.

    6. На экзамене количество билетов превышает 20, но теоретическая часть будет отнесена к этим 20 билетам.


    Удачи в подготовке и на экзамене!
    Билет 1 Синтаксис и семантика языков программирования. Алфавит языка DelphiPascal. Описание синтаксиса языка: синтаксические диаграммы.
    Синтаксис языка - совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.

    Семантика языка - совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание.

    Описание синтаксиса языка включает определение алфавита и правил построения различных конструкций языка из символов алфавита и более простых конструкций. Для этого обычно используют форму Бэкуса-Наура (БНФ) или синтаксические диаграммы.
    Алфавит языка программирования Delphi Pascal включает:

    • Латинские буквы без различия строчных и прописных и знак "_";

    • Цифры (0..9);

    • Шестнадцатеричные цифры: 0..9, a..f (A..F);

    • Специальные символы: + - * / = := ; < > и т.д.;

    • Служебные слова: do, while, begin, end и т.д.


    Синтаксические диаграммы отображают правила построения конструкций в более наглядной форме. На такой диаграмме символы алфавита изображают блоками в овальных рамках или кружках, названия конструкций - в прямоугольных рамках, а правила построения конструкций - в виде линий со стрелками на концах.
    Семантику языка программирования закладывают в его компилятор. Таким образом, синтаксически корректная программа, написанная на языке программирования, после преобразования её в последовательность машинных команд обеспечит выполнение компьютером требуемых операций.
    Билет 2 Представление данных в DelphiPascal: константы и переменные. Классификация скалярных типов данных, операции над ними, совместимость типов данных и операции преобразования типов.
    Константы определяются один раз и не изменяются во время выполнения программы. Используют следующие типы констант:

    • Числовые константы (целые и вещественные десятичные и шестнадцатеричные числа);

    • Логические константы (true, false);

    • Символьные и строковые константы (целые числа - коды по расширенной таблице ANSI, включающей коды букв русского алфавита);

    • Конструкторы множеств;

    • "Нулевой" адрес - nil.

    Константы используются в двух формах: как литералы и как поименованные константы.

    Литерал - значение константы, записанное непосредственно в программе.

    Поименованные константы объявляют в инструкции раздела описаний const.
    Переменные - поименованные значения, которые могут изменяться в процессе выполнения программы. Они используются для хранения промежуточных и окончательных результатов, а также индексов и других вспомогательных значений.

    Объявление переменных выполняют в разделе описаний программы, причём при этом указываются не только идентификатор переменной, но и её тип.

    Тип переменной определяет:

    • Возможный набор значений переменной;

    • Размер её внутреннего представления;

    • Множество операций, которые могут выполняться над переменной.


    Скалярные типы описывают единственные значения из заданных наборов. Значение структурного типа образуется из некоторого количества значений скалярных типов.

    Скалярные типы делятся на порядковые и вещественные.

    Порядковые типы переменных включают:

    • Целые типы (integer, cardinal, smallint, word, shortint, byte);

    • Булевский тип (boolean, bytebool, wordbool, longbool);

    • Символьный тип (char, ansichar, widechar).

    Кроме указанных выше к порядковым типам относят специальный перечисляемый тип и тип, описывающий заданный диапазон значений.

    Переменные вещественного типа (real, single, double, extended, comp, carrency) используют для работы с числами имеющими дробную часть. Во внутреннем представлении мантисса и порядок вещественных чисел хранятся раздельно, причём количество разрядов, отводимых под мантиссу и порядок, регламентируется типом числа.
    Совместимыми считаются:

    • Все целые типы;

    • Все вещественные типы;

    • Диапазон некоторого базового типа и базовый тип;

    • Два диапазона одного базового типа;

    • Символ и строка.


    Операции над переменным:

    • Арифметические операции (@, not, *, /, div, mod, and shr, shl, +, -, or, xor, <, >...);

    • Основные стандартные математические функции (abs, sqr, sqrt, pi, sin, cos...);

    • Логические операции (and, or, xor, not);


    Операции преобразования типов: Trunc, round, ord, chr...

    Билет 3 Основные операторы DelphiPascal: присваивание, условный оператор, оператор выбора и операторы циклов. Синтаксис операторов, их особенности и примеры использования.
    С помощью оператора присваивания в программе кодируются действия, связанные с изменением значений переменных. При выполнении этого оператора вычисляется выражение, записанное в правой части, и его результат заносится в переменную, имя которой указано слева. Если оператор присваивания используется в последовательности операторов, то после него ставится точка с запятой.

    Для корректного выполнения операции присваивания результат выражения и переменная, записанная в правой части оператора присваивания, должны иметь одинаковые или совместимые типы.

    Совместимыми считаются:

    • Все целые типы;

    • Все вещественные типы;

    • Диапазон некоторого базового типа и базовый тип;

    • Два диапазона одного базового типа;

    • Символ и строка.

    При несовпадении типов правой и левой частей оператора присваивания для совместимых типов автоматически выполняется неявное преобразование.
    Условный оператор используют для программирования ветвлений. Условие записывают в виде логического выражения, в зависимости от результата которого осуществляется выбор одной из ветвей: если результат выражения true, то выполняется оператор, следующий за служебным словом then, иначе - за словом else.

    Если по алгоритму решения задачи необходимо в ветвях размещать более одного оператора, используют составные операторы, т.е. последовательность операторов, заключённую в операторные скобки begin...end. Операторы последовательности отделяют друг от друга точкой с запятой. Перед else точка с запятой в операторе if не ставится никогда. Альтернатива else всегда относится к ближайшему if.
    Оператор выбора используется для реализации нескольких альтернативных вариантов действий, каждый из которых соответствует своим значениям некоторого параметра.
    Операторы циклов используют для реализации циклических процессов. В теории программирования выделяют следующие циклы:

    • Счётные (цикл-для);

    • Итерационные (цикл-пока, цикл-до);

    • Поисковые

    Цикл-для выполняется, пока переменная-параметр принимает значения в заданном диапазоне с единичным шагом. Переменная цикла должна иметь порядковый тип. Начальное и конечное значения должны принадлежать к тому же типу, что и переменная цикла. Если используется служебное слово to, то при каждом выполнении цикла переменной цикла присваивается следующее значение порядкового типа переменной, если downto - предыдущее.

    Условие цикла-пока записывают в виде логического выражения. Оператор тела цикла повторяется, пока условие истинно. Проверка осуществляется на входе в цикл при каждом повторении.

    Операторы тела цикла-до повторяется до выполнения условия, условие повторяется на выходе каждый раз после выполнения тела цикла. В отличие от цикла-пока в цикле-до операторы цикла всегда выполняются хотя бы один раз. Кроме того, конструкция цикла-до позволяет записывать в теле цикла произвольное количество операторов, не используя операторные скобки.
    Билет 4 Структурные типы данных DelphiPascal: массивы, строки. Описание, операции над структурами и их элементами.
    Массив - это упорядоченная совокупность однотипных данных. Этот тип используют для представления табличных данных. Каждому элементу массива соответствует один или несколько индексов, определяющих положение элемента в массиве.

    Тип индекса определяет его допустимые значения. В качестве типа индекса может быть указан любой порядковый тип, кроме Longint и его производных.

    В зависимости от типов индексов различают: одномерные, двумерные, трёхмерные и n-мерные массивы. Двумерные массивы обычно называют матрицами. Тип элементов - любой допустимый в Delphi Pascal тип, кроме файла.
    Операция с массивом - присваивания. Остальные с элементами массивов.

    • Присваивание массивов заключается в копировании элементов одного массива в другой. Эту операцию можно выполнять только над массивами одного типа. Массивы считаются совпадающими по типу, если они объявлены через запятую с одним описанием типа массива или если вначале объявлен тип массива, а затем объявлены массивы этого типа;

    • Доступ к элементу массива через прямой (указанием индекса) или косвенный доступ (значения индексов находятся в переменных, что позволяет реализовать последовательную обработку элементов массивов);

    • Ввод/вывод массивов осуществляется поэлементно.


    Строка - последовательность символов. Максимальная длина строки не должна превышать 255 байт. Объявление переменных строкового типа, так же как и массивов, можно выполнить двумя способами: через var и через type.
    Операции над строками:

    • Присваивание строк;

    • Обращение к элементу (прямое, косвенное);

    • Конкатенация (сцепление) строк;

    • Операции отношения - результат определяется по кодам первых различных символов;

    • Ввод/вывод строк.


    Общие процедуры и функции: Length, Setlength, Copy.

    Процедуры и функции для работы со строками: Pos, delete, concat, lowercase, uppercase...
    Билет 5 Структурные типы данных DelphiPascal: множества, записи. Описание, операции над структурами и их элементами.
    Множество - неупорядоченная совокупность неповторяющихся объектов. Базовым типом может быть любой порядковый тип за исключением типов word, smallint, integer, longint. Количество элементов не должно превышать 256.
    Конструкторы и инициализация множеств:

    • [] - пустое множество;

    • [2, 3, 5, 7, 11] - множество чисел;

    • ['a', 'd', 'f', 'h'] - множество символов;

    • [1, k] - множество чисел, переменная k должна содержать число;

    • [2..100] - множество содержит все целые числа из указанного интервала:

    • [k..2k] - множество, значения которого можно задать выражениями;

    • [red, yellow, green] - множество перечисляемого типа.


    Операции:

    • Присваивание;

    • Объединение, пересечение и дополнение;

    • Отношение;

    • Проверка вхождения элемента во множество;


    Значения множественного типа нельзя вводить и выводить. Однако можно ввести значения элементов множества и добавить их к множеству, используя операцию объединения множеств. Для вывода элементов в цикле проверяют вхождение во множество всех элементов базового типа и выводят те, которые входят во множество.
    Запись - это структура данных, образованная фиксированным числом разнотипных компонентов, называемых полями записи.

    В Delphi Pascal определены записи двух типов:

    • с фиксированными полями;

    • вариантные записи.


    Операции:

    • Присваивание записей одного типа;

    • Доступ к полям записи;

    • Ввод и вывод записей осуществляется по полям.


    Билет 6 Процедуры и функции DelphiPascal. Способы передачи данных в подпрограмму. Локальные и глобальные переменные, законы «видимости» идентификаторов.

    Билет 7Процедуры и функции DelphiPascal. Формальные и фактические параметры. Параметры-строки, параметры-массивы.

    Билет 8Процедуры и функции DelphiPascal. Принципы разработки универсальных подпрограмм. «Открытые» массивы и строки.

    Билет 9Процедуры и функции DelphiPascal. Принципы разработки универсальных подпрограмм. Нетипизированные параметры, параметры процедурного типа.
    Процедуры и функции - самостоятельные фрагменты программы соответствующим образом оформленные и вызываемые по имени (программные блоки). В отличие от процедуры функция всегда возвращает в точку вызова скалярное значение, адрес или строку. Тип возвращаемого результата описывается в заголовке функций.
    Из основной программы данные могу быть получены:

    • Неявно - с использованием глобальных констант и переменных;

    • Явно - через параметры.

    Глобальные переменные - ресурсы основной программы, область видимости которой является вся программа. Локальные переменные - ресурсы, объявленные в разделе описаний подпрограммы, область видимости которой начинается и заканчивается в блоке подпрограммы.

    Если имена глобального и локального ресурсов совпадают, то глобальный ресурс в подпрограмме становится недоступным (перекрывается). Такой способ передачи данных приводит к большому количеству ошибок и жёстко связывает подпрограмму и данные.

    При передаче данных через параметры список параметров (формальные) описывается в заголовке подпрограммы. При обращении к подпрограмме для каждого параметра должно быть указано фактическое значение. Формальные и фактические типы должны соответствовать по количеству, типу и порядку.
    Передача может осуществляться:

    • По значению (через параметры-значения) - в подпрограмму передаются копии фактических параметров, и никакие изменения этих копий не возвращаются в вызывающую программу;

    • По ссылке (через параметры-переменные и параметры-констатны, которые помечаются служебным словом var и const) - в программу передаются адреса фактических параметров, соответственно все изменения этих параметров в подпрограмме происходят с переменными основной программы.


    Структурные типы параметров должны быть предварительно объявлены.
    Открытый массив- конструкция описания типа массива без указания типа индексов. Используется только при объявлении формальных параметров. Индексы открытого массива всегда начинаются с 0. Размер можно передать через дополнительный параметр, получить используя функции High и Low.

    Для строк, передаваемых в подпрограмму как параметр-переменная, Delphi Pascal осуществляет контроль длины строки. Чтобы избежать его необходимо использовать открытые строки (openstring).

    Нетипизированные параметры - параметры-переменные, тип которых при объявлении не указан. Для приведения нетипизированного параметра к определённому типу можно использовать:

    • Автоопределённое преобразование типов;

    • Наложенное описание переменной определённого типа.


    Параметры процедурного типа используются для передачи в подпрограмму имен процедур и функций. Значениями переменных процедурных типов являются идентификаторы процедур и функций с соответствующими заголовками.
    Билет 10 Модули DelphiPascal. Структура модуля. Законы видимости идентификаторов. Доступ к «перекрытым» идентификаторам.
    Модуль - автономно компилируемая коллекция программных ресурсов, предназначенных для использования другими модулями и программами.

    Ресурсы - переменные, константы, описания типов и подпрограммы.

    Все ресурсы, определённые в модуле делят на:

    • Внешние - предназначенные для использования другими программами и модулями;

    • Внутренние - предназначенные для использования внутри модуля.


    Структура модуля:

    Unit <Имя модуля>;

    Interface

    <Раздел интерфейса> (содержит объявление ресурсов, к которым возможны обращения извне)

    Implementation

    <Раздел реализации> (содержит описание подпрограмм, объявленных в разделе интерфейса, и описание внутренних ресурсов модуля)

    Initialization

    <Раздел инициализации> (содержит операторы, которые выполняются до начала основной программы. Может отсутствовать)

    Finalization

    <Раздел завершения> (содержит операторы, которые выполняются после окончания основной программы. Может отсутствовать)

    End.
    Имя модуля должно совпадать с именем файла, в котором он описан.
    Ресурсы модуля перекрываются ресурсами программы и ранее указанных модулей.

    Для доступа к перекрытым ресурсам модуля используют составные имена: <Имя модуля>.<Имя ресурса>
    Билет 11 Рекурсия. Особенности программирования. Достоинства и недостатки.
    Рекурсия – организация вычислений, при которой процедура или функция обращаются к самим себе. Различают два вида рекурсии подпрограмм:

    • Прямая или явная - характеризуется существованием в теле подпрограммы оператора обращения к самой себе;

    • Косвенная или неявная - образуется при наличии цепочки вызовов других подпрограмм, которые в коечном итоге приведут к вызову исходной (требует предопределения forward).


    Каждое обращение к рекурсивной подпрограмме вызывает независимую активацию этой подпрограммы. Совокупность данных, необходимых для одной активации рекурсивной подпрограммы, называется фреймом активации, который включает:

    • копии всех локальных переменных подпрограммы;

    • копии параметров-значений;

    • четырёхбайтовые адреса параметров-переменных и параметров-констант;

    • копию строки результата (для функций типа string);

    • служебную информацию - более 12 байт, точный размер этой области зависит от внутренней организации подпрограмм.


    Структура рекурсивной программы: "Операторы после вызова" выполняются после возврата управления из рекурсивно вызванной подпрограммы.
    При работе рекурсивных процедур среда незавершенного вызова сохраняется, т.е. запоминается адрес точки прерывания, сохраняются значения переменных, параметров и т.д. Сохранение среды для незавершенных вызовов производится по принципу стека. Таким образом, предложенный рекурсивный алгоритм вычисления факториала неэффективен как с точки зрения временной сложности, так и с точки зрения пространственной сложности.

    Использовать рекурсию удобно, например, в тех случаях, когда отказ от нее заставил бы программиста самого организовывать стек для хранения промежуточных результатов. Рекурсия весьма эффективна при работе с графами и древовидными списками. Ее применение часто позволяет давать более прозрачные и сжатые описания алгоритмов, чем это было бы возможно без рекурсии.
    Билет 12 Адресация динамической памяти: понятие адреса, операции получения адреса и разыменования. Процедуры получения памяти и освобождения ее.
    Указатель - тип данных, используемый для хранения смещений (расстояния от базового адреса до физического). В памяти занимает 4 байта. Различают два типа указателей:

    • Типизированные - адресующие данные конкретного типа;

    • Нетипизированные - не связанные с данными определённого типа (через pointer).


    Операции над указателями:

    • Присваивание;

    • Получение адреса (@);

    • Доступ к данным по указателю (разыменовывание) (^) (нетипизированные указатели разыменовывать нельзя);

    • Отношение;


    Процедура New - возвращает адрес выделенного участка памяти через параметр-переменную.

    Функция New - возвращает адрес выделенного участка памяти. Размер участка памяти определяется базовым типом.

    Процедура Dispose - освобождает память по адресу, хранящемуся в указателе
    Билет 13 Списковые структуры данных и основные приемы работы с ними: создание элемента, добавление элемента к списку, удаление элемента из списка. Область применения списковых структур данных.
    Списком называют динамическую структуру, в которой помимо данных хранятся также адреса элементов. Элемент списка состоит из двух частей: информационной, содержащей данные, и адресной, где хранятся указатели на следующие элементы. В зависимости от количества полей в адресной части и порядка связывания элементов различают:

    • Линейные односвязные - единственное адресное поле содержит адрес следующего элемента или nil;

    • Кольцевые односвязные списки - единственное адресное поле содержит адрес следующего элемента, а последний элемент ссылается на первый;

    • Линейные двусвязные списки - каждый элемент содержит адреса предыдущего и следующего элемента, соответственно первый и последний элементы в соответствующих адресных полях содержат nil;

    • Кольцевые двусвязные списки - каждый элемент содержит адреса предыдущего и следующего элемента, причём в соответствующих адресных полях первый ссылается на последний, а последний на первый;

    • n-связные списки - каждый элемент включает несколько адресных полей, в которых записаны адреса других элементов или nil.

    Для описания элементов списка используют записи.
    Добавление элемента осуществляется с помощью процедуры new. Формирование списка можно производить по типу стека или очереди. Удаление элемента осуществляется с помощью процедуры dispose.
    Использование списков позволяет:

    • работать с произвольным количеством элементов, добавляя и удаляя их по мере необходимости;

    • осуществлять вставку и удаление записей, не перемещая остальных элементов последовательности.

    Но:

    • не допускают прямого обращения к элементу по индексу;

    • требуют больше памяти для размещения.


    Билет 14 Основы файловой системы: файл, каталог, дисковод, полное имя файла, внутреннее представление информации в файле. Текстовый и нетипизированный файлы. Операции над файлами.
    Файл - поименованная последовательность элементов данных (компонентов файла), расположенных, как правило, во внешней памяти. Полное имя файла:

    <Имя диска>:<Список имен каталогов>\<Имя файла>.<Расширение>

    Так как во внешней памяти хранится большое количество файлов, то для удобства и ускорения работы применяется древовидная структура каталогов. Главным является корневой каталог, не имеющий имени и создаваемый в процессе форматирования диска, в котором могут фигурировать каталоги второго уровня (подкаталоги), каждый из которых может содержать подкаталоги следующего уровня.
    Различают два типа файлов: Дисковые и файлы "логические устройства". Дисковый файл представляет собой поименованную область внешней памяти на устройстве хранения информации. Физически операции ввода-вывода с файлами выполняются с использованием специального буфера, что позволяет существенно повысить скорость выполнения операций.

    В отличие от дисковых файлов с логическими устройствами операции ввода-вывода осуществляются только последовательно, так как при выполнении операций вывода-вывода данные передаются покомпонентно.

    Доступ к компонентам файла осуществляется через указатель файла.

    При выполнении операции чтения или записи указатель автоматически перемещается на следующий компонент.
    Файловые переменные делятся на:

    • Типизированные;

    • Текстовые (используют для работы с текстами, представленными в виде строк и переменной длины);

    • Нетипизированные (применяют для скоростного обмена между внешней и оперативной памятью физическими записями указанной длины без преобразования и обработки).


    Работа с файлом включает:

    • Инициализацию файловой переменной (assign, assignfile);

    • Открытие файла (reset, rewrite, append);

    • Обработку компонентов файла (создание, модификация, поиск записей);

    • Закрытие файла (close, closefile).

    Стандартные процедуры и функции: rename, erase, eof, ioresult, truncate, chdir, getdir, fileage...
    В текстовом файле компоненты заканчиваются маркером конца строки (#13, #10). Текстовые файлы используют для хранения и обработки символов, строк, символьных массивов. Логические и числовые данные при записи в текстовые файлы должны преобразовываться в символьные строки. Текстовый файл можно открыть для записи, чтения и добавления записей в конец. Файл, открытый для записи, не может использоваться для чтения и наоборот. Функции и процедуры: eoln, read, readln, write, writeln, seekeoln, seekeof.
    Операции чтения и записи с нетипизированными файлами осуществляются блоками, что позволяет организовать высокоскоростной обмен данными между диском и памятью. Отсутствие типа делает эти файлы совместимыми с любыми другими. Нетипизированные файлы, как и типизированные, допускают организацию прямого доступа. Открытие можно осуществить при помощь recsize. Процедуры и функции: blockread, blockwrite...


    Билет 15 Типизированные файлы: внутреннее представление информации в файле, особенности обработки. Файловая переменная. Операции над файлом.
    Файловые переменные делятся на:

    • Типизированные;

    • Текстовые (используют для работы с текстами, представленными в виде строк и переменной длины);

    • Нетипизированные (применяют для скоростного обмена между внешней и оперативной памятью физическими записями указанной длины без преобразования и обработки).


    Работа с файлом включает:

    • Инициализацию файловой переменной (assign, assignfile);

    • Открытие файла (reset, rewrite, append);

    • Обработку компонентов файла (создание, модификация, поиск записей);

    • Закрытие файла (close, closefile).

    Стандартные процедуры и функции: rename, erase, eof, ioresult, truncate, chdir, getdir, fileage...
    Типизированный файл - это файл, все компоненты которого одного типа , заданного при объявлении файлов переменной. Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0.
    Типизированный файл можно открыть для записи и чтения. Файл, открытый для записи, может использоваться для чтения. В файл, открытый для чтения, можно писать.

    Так как размер компонентов одинаков, принципиально возможен не только последовательный, но и прямой доступ.
    Процедуры и функции: read, write, seek, filesize, filepos...

    Билет 16 Классы консольного режима Delphi: описание классов, поля и методы, объявление объектов класса, доступ к полям и методам объекта, ограничение доступа.

    Билет 17 Классы консольного режима Delphi: Способы инициализация полей. Неявный параметр Self.
    Класс - это структурный тип данных, который включает описание полей данных, а также процедур и функций, работающих с этими полями данных. Применительно к классам такие процедуры и функции получили название методов, а переменные - полей. Переменные типа класса обычно называют объектами.

    Согласно общим правилам языка программирования объект-переменная должен быть: создан, инициализирован, уничтожен.
    Методы построения классов:

    • Наследование - механизм, позволяющий строить класс на базе более простого посредством добавления полей и определения новых методов. При этом исходный класс, на базе которого выполняется построение, называют родительским или базовым, а строящейся класс - потомком или производным классом. Если при наследовании какие-либо методы переопределяются, то такое наследование называется полиморфным.

    • Композиция – механизм, позволяющий включать несколько объектов других классов в конструируемый.

    • Наполнение – механизм, позволяющих включать указатели на объекты других классов в конструируемый


    Объявление объекта класса:

    Type <Имя класса> = object

    <Описание полей класса>

    <Прототипы методов>

    end;
    Доступ к полям и методам выполняется:

    • с использованием точечной нотации;

    • с использованием оператора with.


    В консольном режиме Delphi Pascal можно ограничить доступ к полям и методам класса в пределах модуля. Для этого описание класса делится на специальные секции:

    • Public - секция, содержащая описание общих или общедоступных полей и методов класса;

    • Private - секция, содержащая описание внутренних или скрытых полей и методов класса.


    Поля объекта должны инициализироваться. Инициализация полей осуществляется тремя способами:

    • Прямым занесением данных в поле (Возможен только для общедоступных полей через точечную нотацию);

    • С использованием типизированных констант (совпадает с синтаксисом описания типизированных констант типа "запись" через const);

    • Посредством специального метода.


    Любой метод неявно получает параметр Self – ссылку (адрес) на поля объекта, и обращение к полям происходит через это имя. При необходимости эту ссылку можно указывать явно: @Self – адрес области полей данных объекта.

    Билет 18 Процедурная и объектная декомпозиция. Диаграммы классов. Отношения между классами.
    Объектная декомпозиция - процесс представления предметной области задачи в виде совокупности функциональных элементов (объектов), обменивающихся в процессе выполнения программы входными воздействиями (сообщениями).

    Объект отвечает за выполнение некоторых действий, зависящих от полученных сообщений и параметров самого объекта.
    Процедурная декомпозиция - процесс разбиения программы на подпрограммы. Структурной называют декомпозицию, если:

    • Каждая подпрограмма имеет один вход и один выход;

    • Подпрограммы нижних уровней не вызывают подпрограмм верхних уровней;

    • Размер подпрограммы не превышает 40-50 операторов;

    • В алгоритме использованы только структурные конструкции.


    Диаграмма класса:

    Имя класса

    Поля

    Методы


    Обычно классы строят на базе уже существующих, используя механизмы, реализующие определённое отношение существующего и строящегося классов между собой:

    • Наследование;

    • Композиция;

    • Агрегация;

    • Полиморфное наследование.

    При наследовании один класс строится на базе второго посредством добавления полей и определения новых методов. Исходный класс называют родительским или базовым, а строящийся - потомком, или производным, или подтипом. При наследовании поля и методы родительского класса повторно не определяют, специальный механизм наследования позволяет использовать эти компоненты класса, особо этого не оговаривая.

    При композиции один класс является неотъемлемой частью другого. Физически композиция реализуется включением в классе фиксированного количества полей, являющихся объектами другого класса. Такие поля обычно называют объектными.

    При наполнении (агрегации) точное количество одного класса, включаемых в другой класс, не ограничено и может меняться от 0 до заранее неизвестных значений. Физически наполнение реализуется с использованием указателей на объекты.

    При полиморфной наследовании осуществляются переопределение методов класса-родителя потомком. Метод потомка в этом случае имеет то же имя, что и метод родителя, но выполняет другие действия.
    Три случая обязательного использования сложного полиморфизма:

    • Если наследуемый метод для объекта производного класса вызывает метод, переопределенный в производном классе.

    • Если объект производного класса через указатель базового класса обращается к методу, переопределенному производным классом.

    • Если процедура вызывает переопределенный метод для объекта производного класса, переданного в процедуру через параметр-переменную, описанный как объект базового класса («процедура с полиморфным объектом»).

    Билет 19 Динамические объекты и объекты с динамическими полями в консольном режиме Delphi.
    Динамические объекты создаются через функцию New(<Тип указателя>), которая возвращает адрес размещенного и, возможно, сконструированного объекта. Если объект не был сконструирован с помощью new, то необходимо вызвать конструктор. Для корректного освобождения памяти следует предварительно вызвать деструктор.
    Деструктор - метод класса, который используется для корректного уничтожения полиморфного объекта, содержащего невидимое поле. Деструктор можно переопределять.
    Чтобы уничтожить полиморфные объекты надо вызвать процедуру Dispose (перед вызовом процедуры необходим вызов деструктора, если он указан, и затем –выполняется освобождение памяти.)
    Для реализации полиморфных объектов можно использовать динамические плоя. Динамическое поле - это поле типа указателя, с помощью которого можно удобно реализовать композицию. В деструкторе необходимо освободить память, которая была выделена под динамические поля.

    Билет 20 Технология событийного программирования. События Windows, сообщения и события Delphi. Основные события Delphi.
    Событийным называется программирование, при котором программа представляет собой набор обработчиков некоторых событий. В качестве событий при этом могут интерпретироваться как нажатие какой-либо визуальной кнопки в окне программе, так и некоторые ситуации в самой программе. Таким образом основной цикл программы включает ожидание какого-либо события, вызов соответствующего обработчика, после чего цикл повторяется.

    Такая программа не имеет алгоритма в традиционном смысле, так как связь между отдельными частями не задана жестко, а зависит от последовательности наступления тех или иных событий.
    В операционной системе типа Windows взаимодействие между системой и приложениями реализуется посредством передачи сообщений. Каждый раз, когда в компьютере происходят какие-либо события, например, пользователь перемещает мышку, нажимает на ней клавишу, нажимает клавишу на клавиатуре, или происходит другое значимое событие для приложения, операционная система формирует специальное сообщение, которое называется сообщением Windows.

    Сообщения Windows поступают в очередь сообщений приложения, откуда выбираются приложением, расшифровываются и обрабатываются.
    Событие Delphi - условная ситуация, которая фиксируется Delphi, при получении информации о конкретном событии Windows с определёнными параметрами. При обнаружении каждой такой ситуации обработчик сообщения Windows осуществляет вызов соответствующего обработчика события Delphi.
    Последовательность обработки сообщений Windows в приложениях, созданных в среде Delphi:

    • В системе происходит событие и генерируется сообщение об этом событии - событие Windows;

    • Сообщение Windows передаётся конкретному приложению, активному компоненту активного окна этого приложения;

    • Стандартный метод обработки сообщения Windows компонента дешифрирует сообщение и генерирует заранее предусмотренные события Delphi;

    • Если в приложении предусмотрены соответствующие обработчики событий Delphi , то они выполняются, если нет - то приложение возвращается в состояние ожидания.


    Основные события Delphi: onClick, onCreate, onKeyPress, onKeyDown...


    написать администратору сайта