Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Bilety_OP

.docx
Скачиваний:
102
Добавлен:
09.02.2015
Размер:
50.83 Кб
Скачать

Замечания:

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

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

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

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

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

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

Удачи в подготовке и на экзамене!

Билет 1 Синтаксис и семантика языков программирования. Алфавит языка Delphi Pascal. Описание синтаксиса языка: синтаксические диаграммы.

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

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

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

Алфавит языка программирования Delphi Pascal включает:

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

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

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

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

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

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

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

Билет 2 Представление данных в Delphi Pascal: константы и переменные. Классификация скалярных типов данных, операции над ними, совместимость типов данных и операции преобразования типов.

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

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

  • Логические константы (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 Основные операторы Delphi Pascal: присваивание, условный оператор, оператор выбора и операторы циклов. Синтаксис операторов, их особенности и примеры использования.

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

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

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

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

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

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

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

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

При несовпадении типов правой и левой частей оператора присваивания для совместимых типов автоматически выполняется неявное преобразование.

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

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

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

Операторы циклов используют для реализации циклических процессов. В теории программирования выделяют следующие циклы:

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

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

  • Поисковые

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

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

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

Билет 4 Структурные типы данных Delphi Pascal: массивы, строки. Описание, операции над структурами и их элементами.

Массив - это упорядоченная совокупность однотипных данных. Этот тип используют для представления табличных данных. Каждому элементу массива соответствует один или несколько индексов, определяющих положение элемента в массиве.

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

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

Операция с массивом - присваивания. Остальные с элементами массивов.

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

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

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

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

Операции над строками:

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

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

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

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

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

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

Процедуры и функции для работы со строками: Pos, delete, concat, lowercase, uppercase...

Билет 5 Структурные типы данных Delphi Pascal: множества, записи. Описание, операции над структурами и их элементами.

Множество - неупорядоченная совокупность неповторяющихся объектов. Базовым типом может быть любой порядковый тип за исключением типов 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 Процедуры и функции Delphi Pascal. Способы передачи данных в подпрограмму. Локальные и глобальные переменные, законы «видимости» идентификаторов.

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

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

Билет 9 Процедуры и функции Delphi Pascal. Принципы разработки универсальных подпрограмм. Нетипизированные параметры, параметры процедурного типа.

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

Из основной программы данные могу быть получены:

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

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

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

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

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

Передача может осуществляться:

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

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

Структурные типы параметров должны быть предварительно объявлены.

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

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

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

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

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

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

Билет 10 Модули Delphi Pascal. Структура модуля. Законы видимости идентификаторов. Доступ к «перекрытым» идентификаторам.

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

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

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

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

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

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

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.

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

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

Методы построения классов:

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]