Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOS / Дисциплины программистского цикла.doc
Скачиваний:
50
Добавлен:
09.05.2015
Размер:
1.51 Mб
Скачать

Дисциплины программистского цикла

  1. Структура модулей и преимущества их использования.

  2. Описание объектных типов в языке программирования Pascal. Статические и виртуальные методы.

  3. Файлы прямого доступа в языке программирования Pascal.

  4. Моделирование линейных динамических информационных структур средствами языка высокого уровня.

  5. Рекурсивные процедуры обхода двоичных деревьев.

  6. Представление разреженных матриц линейными массивами.

  7. Номенклатура сегментных регистров и способы адресации в младших моделях процессоров Intel.

  8. Макросредства языка Assembler.

  9. Основные типы ядра операционной системы.

  10. Лямбда-нотация. Лямбда-выражения. Лямбда-вызов. Этапы Лямбда-преобразования. Примеры объединения Лямбда-вызовов.

  11. Семиуровневая модель взаимодействия открытых систем ISO.

  12. Технология «клиент-сервер». Назначение прокси-сервера, сервера приложений, web-сервера и т.п.

  13. Барьерная синхронизация. Флаги и управляющие процессы: крупномодульное решение.

  14. Системы защиты информации с закрытым и открытым ключом.

  15. Алгоритмы сортировки

  16. Нормализация. 1НФ, Н1НФ, 2НФ, 3НФ, НФБК.

  17. Транзакции. Тупики. Уровни изолированности пользователей.

  18. Язык SQL. Таблицы. Запросы. Вставка, удаление и обновление.

  19. Реляционная алгебра.

  20. Классические и стандартные технологические процессы.

  21. Основные технологические подходы.

  22. Работа с динамическими элементами управления.

  23. Создание MDI приложений в Delphi.

  24. Методы описания языков программирования. БНФ. Классы грамматик языков. Общая схема трансляции. Функции отдельных блоков транслятора.

  25. Методы синтаксического анализа при трансляции. Использование грамматик. Нисходящий и восходящий анализ. Перевод программы в промежуточную форму (обратная польская запись).

1. Структура модулей и преимущества их использования

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

Модуль является независимо компилируемой программной единицей (в отличие от подпрограмм). Рассмотрим структуру модуля:

unit <имя_модуля> -- заголовок модуля

interface

uses <список_модулей_1> \

const … |

type … | интерфейсная

var … | часть

procedure|

function /

implementation

uses <список_модулей_2> \

const … |

type … | раздел

var … | реализации

procedure … |

function /

begin \

| блок инициализации

end. /

Заголовок модуля обязателен. В Pascal имя файла, содержащего модуль и имя модуля должно совпадать.

В разделе интерфейса описываются константы, типы, переменные и подпрограммы, т.е. ресурсы, которые поставляются модулем другим программным единицам. Эта часть называется списком видимых ресурсов модуля. В качестве подпрограмм указываются только их заголовки (с полным списком параметров). В разделе uses указывается список модулей, ресурсы которых будут использоваться в данном модуле. Говорят, что эти ресурсы подключены к данному модулю.

В разделе реализации указывается полное описание подпрограмм, здесь могут понадобиться вспомогательные константы, типы и переменные. Они описываются здесь же в разделе реализации. В разделе реализации так же могут понадобиться ресурсы других модулей (<список_модулей_2>). При описании подпрограмм в разделе реализации списки параметров можно не указывать.

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

Ex.

unit A;

interface

type ind = 1..100;

implementation

begin

end.

unit B;

interface

uses A;

type ar = array[ind] of char;

procedure p( f: ar );

implementation

procedure p;

var

begin

end;

begin

end.

program Main

uses D;

var x: ar;

begin

p( x );

end.

Основные преимущества использования модулей.

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

Особенности использования модулей:

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

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

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

В Oracle есть понятие пакета – модуля, так же назначение пакета в

1. уменьшение перекомпиляции программных единиц при изменении кода

2. сокрытие реализации

3. перегруз подпрограмм

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

5. контроль доступа к переменным