- •Билет 1.
- •1. Инкапсуляция, наследование, полиморфизм. Классы, объекты и отношения между ними. Диаграммы логического уровня.
- •2. Симметричные блочные криптоалгоритмы. Сеть Фейстеля.
- •Билет 2
- •1. Объявление и реализация классов на языке Паскаль.
- •2. Интерфейс. Пользовательский интерфейс. Классификация пользовательских интерфейсов.
- •Билет 3.
- •1. Графы. Основные определения. Машинное представление графов в последовательной памяти и связанной памяти.
- •2. Общая схема симметричной криптосистемы. Алгоритм построения цепочек.
- •3. Написать процедуру, которая выполняет вставку компоненты по заданному ключу.
- •Билет 4.
- •1. Нормальный алгоритм Маркова.
- •2. Парадигмы интерфейсов.
- •Билет 5.
- •1. Понятие процесса. Состояние процессов. Алгоритмы планирования процессов.
- •2. Общие сведения об ассиметричных криптоалгоритмах. Понятие электронной цифровой подписи.
- •3. Вычислить факториал числа 8.
- •Билет 6.
- •1. Файловая системаFat.
- •2. Основные компоненты графических пользовательских интерфейсов.
- •3. Если элементы массивыD[1…5] равны соответственно 4, 1, 5, 3, 2, то значение выражениеD[d[3]]-d[d[5]] равно?
- •Билет 7
- •1. Структуры распределенных вычислительных систем(топология, физические и логические элементы сетей эвм)
- •2. Встроенные средства контроля доступа в современных ос.
- •3. Указать к какому классу относится каждый из перечисленныхIPадресов:
- •Билет 8
- •1.Трансляторы, компиляторы и интерпретаторы: определение, общая схема работы. Варианты взаимодействия блоков транслятора.
- •2. Эргономические требования, предъявляемые к дизайну пользовательских интерфейсов.
- •3. Указать к какому классу относится каждый из перечисленныхIPадресов:
- •Билет 9
- •1. Сети Петри. Моделирование процессов на основе сетей Петри.
- •2. Нормализация таблиц при проектировании баз данных. Нормальные формы (1нф, 2нф, 3нф, нфбк).
- •3. Составить программу, которая формирует очередь, добавляя в неё произвольное количество компонент.
- •Билет 10.
- •1. Понятие алгоритма. Интуитивное понятие алгоритма.
- •2. Функции субд.
- •Билет 11.
- •1. Структура данных типа стек. Логическая структура стека. Машинное представление стека и реализация операций.
- •2. Принципы и виды отладки программного средства. Автономная отладка программного средства. Комплексная отладка программного средства.
- •3. Дан массив типаwordразмерностьюn. Найти сумму всех элементов, не превышающих заданногоm, далее вывести на экран.
- •Билет 12.
- •1. Сети Петри. Моделирование процессов на основе сетей Петри.
- •2. Модели объектов проектирования .
- •Билет 13.
- •1. Концепции информационного моделирования. Создание моделей на языкеUml.
- •2. Модели систем управления данными: сетевая, иерархическая, реляционная модель.
- •Билет 14.
- •1. Принципы создания компонент в визуальных средах разработки.
- •2. Жизненный цикл программного обеспечения. Модели жизненного цикла по: каскадная, спиральная. Стадии, фазы работы жизненного цикла.
- •Билет 15.
- •1. Деревья. Основные определения. Логическое представление и изображение деревьев. Бинарные деревья. Машинное представление деревьев в памяти эвм. Алгоритмы прохождения деревьев.
- •2. Реляционная модель данных. Базовые понятия. Отношения и свойства отношений. Составляющие реляционной модели данных.
- •Билет 16.
- •1. Предваренная, скулемовская и клазуальная формы. Логическое следование. Унификация. Алгоритм унификации. Исчисление метода резолюций.
- •2. Структура внешнего описания пс. Качество по. Критерии и примитивы качества.
- •Билет 17.
- •1. Понятия прерывания. Виды прерываний. Механизмы прерываний.
- •2. Стадии и этапы разработки базы данных.
- •3. Дан массив типаwordразмерностьюn. Найти сумму всех элементов не прерывающих заданногоm, далее вывести на экран.
- •Билет 18.
- •1. Понятие о способах коммутации в распределенных вычислительных системах(коммутации каналов, коммутация пакетов).
- •2. Процессы управления разработкой пс. Структура управления разработки пс. Планирование составление расписания по разработке пс. Аттестация пс.
- •3. НаписатьHtmLкод для отображения в браузере таблицы:
- •Билет 19.
- •1. Характеристики транспортного и прикладного уровней стека протоколовTcp/ip.
- •2. Трехуровневая архитектура схем баз данных в субд.
- •3. НаписатьHtmLкод для отображения в браузере таблицы:
- •Билет 20.
- •1. Формальные языки и грамматики. Классификация грамматик по Хомскому.
- •2. Методы разработки структуры пс. Восходящая разработка пс. Нисходящая разработка. Конструктивный подход. Архитектурный подход разработки пс.
- •Билет 21.
- •1. Конечные автоматы, автомат со стековой памятью (магазин).
- •2. Организация шин.
- •Билет 22.
- •1. Сети Петри. Моделирование процессов на основе сетей Петри.
- •2. Организация памяти эвм.
- •Билет 23.
- •1. Понятия прерывания. Виды прерываний. Механизмы прерываний.
- •2. Инструментальные среды разработки и сопровождения программных средств и принципы их классификации. Основные классы инструментальных сред разработки и сопровождения программных средств.
- •Билет 24.
- •1. Динамическое поведение объектов. Состояния, события, сигналы и сообщения. Модели взаимодействия объектов.
- •2. Типы структур вычислительных машин и систем, перспективы и развития.
- •Билет 25
- •1. Структура данных типа стек. Логическая структура стека. Машинное представление стека и реализация операций.
- •2. Основные понятия, определения и назначение сапр
- •3. Составить программу, которая формирует очередь, добавляя в неё произвольное количество компонент.
- •Билет 26.
- •1. Сравнительный анализ алгоритмов поиска: линейный, двоичный.
- •2. Факторы, определяющие развитие архитектуры вычислительных систем.
- •3. Составить программу, которая формирует очередь, добавляя в неё произвольное количество компонент.
- •Билет 27.
- •1. Рекурсивные функции. Лямбда- исчисление Черча.
- •2. Обеспечивающие системы сапр.
- •Билет 28.
- •1. Память. Типы адресов. Виды распределения памяти.
- •2. Архитектура системы команд.
- •3. Найти в массиве максимальный элемент и его индекс. Вывести на печать.
- •Билет 29.
- •1. Аппаратура передачи данных (модемы).
- •2. Проектные процедуры в сапр.
- •Билет 30.
- •1. Характеристика канального и сетевого уровней стека протоколовTcp/ip.
- •2. Стековая архитектура вычислительных машин.
- •Билет 31
- •1. Синтаксический разбор. Классификация методов синтаксического разбора.
- •2. Интеграция систем автоматизации проектирования и управления(cad–cam–capp– системы).
- •Билет 32
- •1. Понятие алгоритма. Интуитивное понятие алгоритма.
- •2. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств. Особенности объектного подхода к разработке внешнего описания программного средства.
- •3. Указать к какому классу относится каждый из перечисленныхIPадресов:
- •Билет 33.
- •1. Объявление и реализация классов на языке Паскаль.
- •2. Архитектура клиент-сервер. Распределенные базы данных.
- •Билет 34.
- •1. Характеристики транспортного и прикладного уровней стека протоколовTcp/ip.
- •2. Вычислительные методы решения задач на эвм. Приближения функций. Интерполяция и Метод наименьших квадратов.
- •Билет 35.
- •1. Компоненты и интерфейсы. Диаграммы физического уровня.
- •2. Правовые вопросы организации Интернет-сайта.
- •Билет 36.
- •1. Структуры данных типа очередь. Логическая структура очереди. Машинное представление очередиFifOи реализация операций. Очереди с приоритетами.
- •2. Моделирование как процесс познания. Математическая модель, понятие вычислительного эксперимента и его структура.
- •3. Составить программу, которая формирует стек, добавляя в него произвольное количество компонент.
- •Билет 37
- •1. Улучшенные методы сортировки. Сортировка Шелла, Хоара, улучшенная сортировка выбором. Сортировка с помощью дерева.
- •2. Правовые вопросы, возникающие при использовании электронной почты.
- •3. Составить программу, которая формирует стек, добавляя в него произвольное количество компонент.
- •Билет 38.
- •1. Классификация ос. Требования, предъявляемые к ос.
- •2. Понятие системы. Математическое определение системы. Классификация систем.
- •Билет 39.
- •1. Понятия файла. Структура файла. Реализация файлов
- •2. Виды объектов авторского права. Виды авторских прав. Программы для эвм и базы данных, как объектов авторского права.
- •3. Подсчитать сколько раз в массиве встречается заданный элементN. Вывести количество данных вхождений.
- •Билет 40.
- •1. Характеристики локальных вычислительных сетей типаEthernet.
- •2. Нормальный алгоритм Маркова.
- •3. Написать кодcssфайла в котором при помощи псевдоклассов описывается поведение ссылок отличное от стандартного.
- •Билет 41.
- •1. Взаимодействие узлов с использованием стека протоколовTcp/ip.
- •2. Объекты патентного права.
- •3. Указать к какому классу относится каждый из перечисленныхIPадресов:
- •Билет 42.
- •1. Машина Тьюринга.
- •2. Уровни моделирования. Общая характеристика и особенности. Моделирование на микроуровне. Обобщенная модель и моделирование тепловых систем (краевая задача для уравнения теплопроводности)
- •2) Уравнение теплопроводности
- •Билет 43.
- •1. Архитектура системы команд.
- •2. Уровни моделирования. Моделирование на макроуровне. Типичная общая модель и моделирование электрических систем.
- •Билет 44.
- •1. Структуры данных типа очередь. Логическая структура очереди. Машинное представление очередиFifOи реализация операций. Очереди с приоритетами.
- •2. Принципы построения современных эвм.
- •3. Найти в массиве максимальный элемент и его индекс. Вывести на печать.
- •Билет 45.
- •1. Характеристика канального и сетевого уровней стека протоколовTcp/ip.
- •2. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. Метод Эйлера. Одношаговые и многошаговые методы.
- •3. Указать к какому классу относится каждый из перечисленныхIPадресов:
2. Методы разработки структуры пс. Восходящая разработка пс. Нисходящая разработка. Конструктивный подход. Архитектурный подход разработки пс.
В качестве модульной структуры программы принято использовать древовидную структуру, включая деревья со сросшимися ветвями. В узлах такого дерева размещаются программные модули, а направленные дуги (стрелки) показывают статическую подчиненность модулей, т.е. каждая дуга показывает, что в тексте модуля, из которого она исходит, имеется ссылка на модуль, в который она входит.
В процессе разработки программы ее модульная структура может по-разному формироваться и использоваться для определения порядка программирования и отладки модулей, указанных в этой структуре. Поэтому можно говорить о разных методах разработки структуры программы. Обычно в литературе обсуждаются два метода: метод восходящей разработки и метод нисходящей разработки.
Метод восходящей разработки заключается в следующем. Сначала строится модульная структура программы в виде дерева. Затем поочередно программируются модули программы, начиная с модулей самого нижнего уровня (листья дерева модульной структуры программы), в таком порядке, чтобы для каждого программируемого модуля были уже запрограммированы все модули, к которым он может обращаться. После того, как все модули программы запрограммированы, производится их поочередное тестирование и отладка в принципе в таком же (восходящем) порядке, в каком велось их программирование. На первый взгляд такой порядок разработки программы кажется вполне естественным: каждый модуль при программировании выражается через уже запрограммированные непосредственно подчиненные модули, а при тестировании использует уже отлаженные модули. Однако, современная технология не рекомендует такой порядок разработки программы. Во-первых, для программирования какого-либо модуля совсем не требуется текстов используемых им модулей - для этого достаточно, чтобы каждый используемый модуль был лишь специфицирован (в объеме, позволяющем построить правильное обращение к нему), а для тестирования его возможно используемые модули заменять их имитаторами (заглушками). Во-вторых, каждая программа в какой-то степени подчиняется некоторым внутренним для нее, но глобальным для ее модулей соображениям (принципам реализации, предположениям, структурам данных и т.п.), что определяет ее концептуальную целостность и формируется в процессе ее разработки. При восходящей разработке эта глобальная информация для модулей нижних уровней еще не ясна в полном объеме, поэтому очень часто приходится их перепрограммировать, когда при программировании других модулей производится существенное уточнение этой глобальной информации (например, изменяется глобальная структура данных). В-третьих, при восходящем тестировании для каждого модуля (кроме головного) приходится создавать ведущую программу (модуль), которая должна подготовить для тестируемого модуля необходимое состояние информационной среды и произвести требуемое обращение к нему. Это приводит к большому объему "отладочного" программирования и в то же время не дает никакой гарантии, что тестирование модулей производилось именно в тех условиях, в которых они будут выполняться в рабочей программе.
Метод нисходящей разработки заключается в следующем. Как и в предыдущем методе сначала строится модульная структура программы в виде дерева. Затем поочередно программируются модули программы, начиная с модуля самого верхнего уровня (головного), переходя к программированию какого-либо другого модуля только в том случае, если уже запрограммирован модуль, который к нему обращается. После того, как все модули программы запрограммированы, производится их поочередное тестирование и отладка в таком же (нисходящем) порядке. При таком порядке разработки программы вся необходимая глобальная информация формируется своевременно, т.е. ликвидируется весьма неприятный источник просчетов при программировании модулей. Существенно облегчается и тестирование модулей, производимое при нисходящем тестировании программы. Первым тестируется головной модуль программы, который представляет всю тестируемую программу и поэтому тестируется при "естественном" состоянии информационной среды, при котором начинает выполняться эта программа. При этом все модули, к которым может обращаться головной, заменяются на их имитаторы (заглушки). Каждый имитатор модуля представляется весьма простым программным фрагментом, сигнализирующим, в основном, о самом факте обращения к имитируемому модулю с необходимой для правильной работы программы обработкой значений его входных параметров (иногда с их распечаткой) и с выдачей, если это необходимо, заранее запасенного подходящего результата. После завершения тестирования и отладки головного и любого последующего модуля производится переход к тестированию одного из модулей, которые в данный момент представлены имитаторами, если таковые имеются. Для этого имитатор выбранного для тестирования модуля заменяется на сам этот модуль и добавляются имитаторы тех модулей, к которым может обращаться выбранный для тестирования модуль. При этом каждый такой модуль будет тестироваться при "естественных" состояниях информационной среды, возникающих к моменту обращения к этому модулю при выполнении тестируемой программы. Таким образом, большой объем "отладочного" программирования заменяется программированием достаточно простых имитаторов используемых в программе модулей.
Некоторым недостатком нисходящей разработки, приводящим к определенным затруднениям при ее применении, является необходимость абстрагироваться от базовых возможностей используемого языка программирования, выдумывая абстрактные операции, которые позже нужно будет реализовать с помощью выделенных в программе модулей. Однако способность к таким абстракциям представляется необходимым условием разработки больших программных средств, поэтому ее нужно развивать.
В рассмотренных методах восходящей и нисходящей разработок модульная древовидная структура программы должна разрабатываться до начала программирования модулей. Однако такой подход вызывает ряд возражений: представляется сомнительным, чтобы до программирования модулей можно было разработать структуру программы достаточно точно и содержательно. На самом деле это делать не обязательно: так при конструктивном и архитектурном подходах к разработке программ модульная структура формируется в процессе программирования модулей.
Конструктивный подход к разработке программы представляет собой модификацию нисходящей разработки, при которой модульная древовидная структура программы формируется в процессе программирования модуля. Сначала программируется головной модуль, исходя из спецификации программы в целом, причем спецификация программы является одновременно и спецификацией ее головного модуля, так как последний полностью берет на себя ответственность за выполнение функций программы. В процессе программирования головного модуля, в случае, если эта программа достаточно большая, выделяются подзадачи (внутренние функции), в терминах которых программируется головной модуль. Это означает, что для каждой выделяемой подзадачи (функции) создается спецификация реализующего ее фрагмента программы, который в дальнейшем может быть представлен некоторым поддеревом модулей. Важно заметить, что здесь также ответственность за выполнение выделенной функции берет головной (может быть, и единственный) модуль этого поддерева, так что спецификация выделенной функции является одновременно и спецификацией головного модуля этого поддерева. В головном модуле программы для обращения к выделенной функции строится обращение к головному модулю указанного поддерева в соответствии с созданной его спецификацией. Таким образом, на первом шаге разработки программы (при программировании ее головного модуля) формируется верхняя начальная часть дерева.
Аналогичные действия производятся при программировании любого другого модуля, который выбирается из текущего состояния дерева программы из числа специфицированных, но пока еще не запрограммированных модулей.
Архитектурный подход к разработке программы представляет собой модификацию восходящей разработки, при которой модульная структура программы формируется в процессе программирования модуля. Но при этом ставится существенно другая цель разработки: повышение уровня используемого языка программирования, а не разработка конкретной программы. Это означает, что для заданной предметной области выделяются типичные функции, каждая из которых может использоваться при решении разных задач в этой области, и специфицируются, а затем и программируются отдельные программные модули, выполняющие эти функции. Так как процесс выделения таких функций связан с накоплением и обобщением опыта решения задач в заданной предметной области, то обычно сначала выделяются и реализуются отдельными модулями более простые функции, а затем постепенно появляются модули, использующие ранее выделенные функции. Такой набор модулей создается в расчете на то, что при разработке той или иной программы заданной предметной области в рамках конструктивного подхода могут оказаться приемлемыми некоторые из этих модулей. Это позволяет существенно сократить трудозатраты на разработку конкретной программы путем подключения к ней заранее заготовленных и проверенных на практике модульных структур нижнего уровня. Так как такие структуры могут многократно использоваться в разных конкретных программах, то архитектурный подход может рассматриваться как путь борьбы с дублированием в программировании. В связи с этим программные модули, создаваемые в рамках архитектурного подхода, обычно параметризуются для того, чтобы усилить применимость таких модулей путем настройки их на параметры.
Все эти методы имеют еще различные разновидности в зависимости от того, в какой последовательности обходятся узлы (модули) древовидной структуры программы в процессе ее разработки. Это можно делать, например, по слоям (разрабатывая все модули одного уровня, прежде чем переходить к следующему уровню). При нисходящей разработке дерево можно обходить также в лексикографическом порядке (сверху-вниз, слева-направо). Возможны и другие варианты обхода дерева. Так, при конструктивной реализации для обхода дерева программы целесообразно следовать идеям Фуксмана, которые он использовал в предложенном им методе вертикального слоения. Сущность такого обхода заключается в следующем. В рамках конструктивного подхода сначала реализуются только те модули, которые необходимы для самого простейшего варианта программы, которая может нормально выполняться только для весьма ограниченного множества наборов входных данных, но для таких данных эта задача будет решаться до конца.
Вместо других модулей, на которые в такой программе имеются ссылки, в эту программу вставляются лишь их имитаторы, обеспечивающие, в основном, контроль за выходом за пределы этого частного случая. Затем к этой программе добавляются реализации некоторых других модулей (в частности, вместо некоторых из имеющихся имитаторов), обеспечивающих нормальное выполнение для некоторых других наборов входных данных. И этот процесс продолжается поэтапно до полной реализации требуемой программы. Таким образом, обход дерева программы производится с целью кратчайшим путем реализовать тот или иной вариант (сначала самый простейший) нормально действующей программы. В связи с этим такая разновидность конструктивной реализации получила название метода целенаправленной конструктивной реализации. Достоинством этого метода является то, что уже на достаточно ранней стадии создается работающий вариант разрабатываемой программы.
3. Написать программу на языке С++ для удаления из списка целых всех элементов, равных 0. Например: [1,0,2,0,3,0] [1,2,3].
|
#pragma hdrstop #include <iostream.h> void main() { int X[10],Y[10],N,j=0,i; cout<<"\n Vvedite N (<10) =="; cin>>N; for(i=1;i<=N;i++) { cout<<"\n X["<<i<<"] =="; cin>>X[i]; }
|
for(i=1;i<=N;i++) { if (X[i]!=0) { j++; Y[j]=X[i]; } }
|
for(i=1;i<=j;i++) { cout<<"\n X["<<i<<"] == "<<Y[i]; } }
|
