1. Математическая логика и теория алгоритмов 1. Исчисление высказываний: алфавит, формулы, аксиомы. Высказывание – грамматически правильное повествовательное предложение, про которое можно сказать, что оно либо истинно, либо ложно. Из простых высказываний можно строить сложные, используя связки Связка операция Обозначение Неверно, что.. Отрицание ¬A …., и … Конъюнкция A&B …., или … Дизъюнкция AvB Если …, то … Импликация(следование) A→B …., тогда и только тогда, когда эквивалентность A~B Логические связки – это логические операции, то есть операции, выполняемые над высказываниями и порождающие новые высказывания. Заменив высказывания переменными, связки – знаками логических операций, получим формулу сложного высказывания. Формула логики высказываний выражает структуру высказывания. ПРОПОЗИЦИОНАЛЬНЫЕ ФОРМУЛЫ Определение 1) символы констант 0, 1 являются пропозициональными формулами (ПФ). 2) каждая переменная есть ПФ. 3) если А и В являются пропозициональными формулами, то -A, A& B, A B, A B, A ~ B также пропозициональные формулы. • ПФ, которая принимает значение истины для любого набора значений переменных, называется тождественно истинной пропозициональной формулой или тавтологией. • ПФ, которая принимает значение лжи для любого набора значений переменных, называется тождественно ложной пропозициональной формулой или противоречием. • ПФ называется выполнимой, если существует набор значений переменных, на котором функция принимает значение истины. • ПФ называется оспоримой, если существует набор значений переменных, на котором функция принимает значение лжи. Факт, что «А – тавтология» будем обозначать ⊢А Формулы A и B равносильны, если формула А истинна и ложна при тех же наборах значений переменных, что и формула В: АВ Принцип эквивалентности С помощью равносильных формул можно получить тавтологии, так как АВ истинно тогда и только тогда, когда А и В одновременно истинны или ложны, то есть АВ . Таким образом, если АВ, то ⊢ А~B и наоборот, если ⊢А~B , то АВ . 2. Исчисление предикатов: сигнатура, алфавит, термы, формулы. Логика предикатов – обобщение логики высказываний. Для представления объектов предметной области в логике предикатов используют: константы, переменные, термы, предикаты, кванторы. Константа – это символ, обозначающий индивидуальный объект или понятие. Предикат – логическая функция одной или нескольких предметных переменных, принимающая значения из двухэлементного множества - {истина, ложь}. Областью определения предиката является некоторая предметная область (множество чисел, слов и.т.д.) Область значений X переменной x называют областью определения предиката Р. Предикат Р разбивает область определения на две части: в одной предикат принимает значение лжи, в другой – истины. Область истинности предиката – это множество значений переменной x из области определения, где она принимает значение истины. Предикаты, как и высказывания, могут принимать значения истины и лжи, поэтому к ним применимы операции логики высказываний. Пусть P(x), Q(x) – предикаты на множестве А, тогда можно определить предикаты: P(x)Q(x), P(x), P(x) Q(x), P(x)Q(x), P(x) ~ Q(x) Понятие формулы определяем следующим образом: 1) любая высказывательная переменная – формула; 2) любой предикатный символ, все места которого заняты переменными, или постоянными, есть формула; P(x,y,3) 3) если (x1,…, xi ,…xn) – формула, то (хi) (x1,…, xi ,…xn) и (хi) (x1,…, xi ,…xn) – формулы; 4) если и – формулы, то , , , , ~ – формулы. Формулы 1 и 2 равносильны, если принимают одинаковые значения при любых одинаковых наборах значений переменных. Равносильные формулы: ̅̅̅̅̅̅𝑃(𝑥) ≡ (∃𝑥)𝑃̅(𝑥) 1. (∀𝑥) (∃𝑥)𝑃(𝑥) ≡ (∀𝑥)𝑃̅(𝑥) 2. ̅̅̅̅̅̅ 3. (∀𝑥)𝑃(𝑥) ∙ (∀𝑥)𝑄(𝑥) ≡ (∀𝑥)(𝑃(𝑥) ∙ 𝑄(𝑥)) 4. (∃𝑥)𝑃(𝑥)v(∃𝑥)𝑄(𝑥) ≡ (∃𝑥)(𝑃(𝑥)v𝑄(𝑥)) Формула логики предикатов, принимающая значение истины при любых значениях предикатных переменных в области определения этих предикатов (и при любых значениях свободных предметных переменных), называется общезначимой формулой. « - общезначимая формула» будем обозначать «┣ ». 1.┣ -> (x)P(x) ~ (x)P(x) 2. ┣ (x)P(x) ~ (x)P(x) 3. ┣ (x)P(x) ~ (x)P(x) 4. ┣ (x)P(x) ~ (x)P(x) 5. ┣ (x)P(x)(x)Q(x) ~ (x)P(x)Q(x) 6. ┣ (x)P(x) (x)Q(x) ~ (x)P(x) Q(x) 3. Исчисление высказываний: правила вывода ПРАВИЛА ВЫВОДА Метод истинностных таблиц позволяет решать следующие задачи: – определить, является ли ПФ тавтологией (противоречием); – определить, являются ли две ПФ равносильными; – определить, является ли ПФ логическим следствием заданных ПФ. Более сложные вопросы логики решаются с помощью аксиоматического метода, для этого вводятся: - аксиомы - правила вывода. Утверждение типа: «Из высказываний со структурой, выражаемой формулами n , ,..., 1 2 (посылками), следует высказывание со структурой, выражаемой формулой (заключение)» называется правилом вывода. 1. Правило заключения – «Если из высказывания x следует высказывание y и справедливо (истинно) высказывание x, то справедливо y». Обозначается: x y, x ┣ y любое рассуждение, построенное по правилу заключения, правильное. 2. Правило отрицания–«Если из x следует y,но высказывание y неверно, то неверно x»: x y,y ┣ x . 3. «Если справедливо высказывание x, или высказывание y (в неразделительном смысле) и ложно одно из них, то другое истинно» (удаление дизъюнкции): a) x y, x ┣ y; b) x y, y ┣ x. 4. Правило введения дизъюнкции: x, y ┣ x y . 5. Правило удаления конъюнкции: a) x & y ┣ x. b) x & y ┣ y. 6. Правило введения конъюнкции: x, y ┣ x& y . 7. Правило транзитивности : «Если из x следует y, а из y следует z, то из x следует z»: x y, y z ┣ x z 8. Закон противоречия: «Если из x следует y и из x следует неверное y, то x неверно»: x y, x y ┣ x 9. Правило контрапозиции: «Если из x следует y, то из того, что неверно y, следует, что неверно x»: x y ┣ y x . 10. Правило сложной контрапозиции: «Если из x и y следует z, то из x и z следует y »: xy z ┣ xz y 11. Правило импортации : x y z ┣ xy z 12. Правило экспортации : xy c ┣ x y z 4. Исчисление высказываний: вывод формулы Пусть А1 , А2 , … А𝑚 ┣ В, формулы А1 , А2 , … А𝑚 – посылки, формула В – заключение. Если существует конечная последовательность формул 𝜑1 , 𝜑2 , … 𝜑𝑘 , таких, что: 1) любая формула 𝜑𝑖 – либо посылка, либо получена из предшествующих формул по правилу вывода; 2) формула 𝜑𝑘 – есть В, то говорят, что формула В выводима (или доказуема). Конечную последовательность формул 𝜑1 , 𝜑2 , … 𝜑𝑘 называют выводом (или доказательством формулы В из посылок А1 , А2 , … А𝑚 ) 5. Исчисление предикатов :метод резолюций. Ðàññìîòðèì åùå îäèí ìåòîä äîêàçàòåëüñòâà òîãî, ÷òî ôîðìóëà G ÿâëÿåòñÿ ëîãè÷åñêèì ñëåäñòâèåì ôîðìóë { } 1, F F K k , êîòîðûé íàçûâàþò ìåòîäîì ðåçîëþöèé. Îñîáåííîñòü ìåòîäà ñîñòîèò â òîì, ÷òî îí îïåðèðóåò íå ñ ïðîèçâîëüíûìè ôîðìóëàìè, à ñ äèçúþíêòàìè. 2. Языки программирования 5. Алфавит, синтаксис, семантика языка программирования. Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы. Синтаксис – совокупность правил образования языковых конструкций, или предложений языка программирования – блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения конструкций. Это значит, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его частей содержит сам себя. Например, в определении оператора цикла телом цикла является оператор, частным случаем которого является все тот же оператор цикла. Строгий синтаксис в языке программирования необходим прежде всего для транслятора. Транслятор – это программа, которая исполняется формально. Если, допустим, разделителем в списке переменных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Семантика – смысловое содержание конструкций, предложений языка, семантический анализ – это проверка смысловой правильности конструкции. Например, если мы в выражении используем переменную, то она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорить о допустимости операции с данной переменной. Семантические ошибки возникают при недопустимом использовании операций, массивов, функций, операторов и пр. 6. Java-модель исполнения программ. ш 7. Модель компилятора языка программирования. 8. Структура программы и операторы языка программирования C. Любая достаточно большая программа на Си состоит из файлов. Файлы транслируются Си-компилятором независимо друг от друга и затем объединяются программой-построителем задач, в результате чего создается файл с программой, готовой к выполнению. Файлы, содержащие тексты Сипрограммы, называются исходными. В языке Си исходные файлы бывают двух типов: § заголовочные, или h-файлы § файлы реализации, или Cи-файлы Имена заголовочных файлов имеют расширение ".h". Имена файлов реализации имеют расширения ".c". Заголовочные файлы содержат только описания. Прежде всего, это прототипы функций. Также в h-файлах описываются имена и типы внешних переменных, константы, новые типы, структуры и т.п. При трансляции заголовочных файлов, как правило, никакие объекты не создаются. Файлы реализации содержат тексты функций и определения глобальных переменных. Заголовочный файл подключается с помощью директивы препроцессора #include. Например, описания стандартных функций ввода-вывода включаются с помощью строки: #include <stdio.h> Имя h-файла записывается в угловых скобках, если этот h-файл является частью стандартной Си-библиотеки и расположен в одном из системных каталогов. Имена h-файлов, созданных самим программистом в рамках разрабатываемого проекта и расположенных в текущем каталоге, указываются в двойных кавычках, например: #include "mylib.h" Препроцессор - это программа предварительной обработки текста непосредственно перед трансляцией. Команды препроцессора называются директивами. Директивы препроцессора содержат символ # в начале строки. Выражения в Си составляются из переменных или констант, к которым применяются различные операции. Для указания порядка операций можно использовать круглые скобки. Оператор присваивания x = (y = sin(z)) + 1.0; Арифметические операции z = x +(-,*,/,%) y (%-Остаток от деления x на y) Операции увеличения ++ и уменьшения -- на единицу имеют префиксную и суффиксную формы. ++ x; // Префиксная форма x --; // Суффиксная форма Разница между префиксной и суффиксной формами проявляется только при вычислении сложных выражений. Если используется префиксная форма операции ++, то сначала переменная увеличивается, и только после этого ее новое значение используется в выражении. При использовании суффиксной формы значение переменной сначала используется в выражении и только затем увеличивается. Логические операции a = b || c; // логическое "или" a = b && c; // логическое "и" a = !b; // логическое "не" Самый высокий приоритет у операции логического отрицания, затем следует логическое умножение, самый низкий приоритет у логического сложения. Операции сравнения в Си обозначаются следующим образом: == равно, != не равно, > больше, >= больше или равно, < меньше, <= меньше или равно. Кроме обычных логических операций, в Си имеются побитовые логические операции, которые выполняются независимо для каждого отдельного бита операндов. Побитовые операции имеют следующие обозначения: & побитовое логическое умножение ("и") | побитовое логическое сложение ("или") ~ побитовое логическое отрицание ("не") ^ побитовое сложение по модулю 2 (исключающее "или") Операции сдвига применяются к целочисленным переменным: двоичный код числа сдвигается вправо или влево на указанное количество позиций. Сдвиг вправо обозначается двумя символами "больше" >>, сдвиг влево - двумя символами "меньше" <<. Пример: int x, y; //... x = (y >> 3); // Сдвиг на 3 позиции вправо y = (y << 2); // Сдвиг на 2 позиции влево 3. Технологии баз данных 9. Основные понятия: база данных и управление ими, архитектура системы баз данных. База данных может быть определена как совокупность предназначенных для машинной обработки и хранения данных, которые могут использоваться одним или несколькими пользователями. Современные СУБД – многопользовательские системы управления базой данных, которые специализируется на управлении массивом информации одним или множеством одновременно работающих пользователей. Все запросы пользователей на получение доступа к базе данных обрабатываются СУБД. Прикладные программы, или приложения, служат для обработки данных, содержащихся в БД. Пользователь осуществляет управление БД и работу с её данными именно с помощью приложений, которые называются приложениями БД. Для выполнения операций с локальными БД разрабатываются и используются так называемые локальные приложения, а для операций с удалёнными БД – клиент-серверные приложения. Удалённая БД размещается на компьютере-сервере сети, а приложение, работающее с этой БД, находится на компьютере пользователя. В этом случае мы имеем дело с архитектурой клиент-сервер, когда информационная система делится на неоднородные части – сервер и клиент БД. 10.Реляционная модель данных: понятия отношения, кортежа, домена, первичного ключа, внешнего ключа. Реляционная алгебра: операции проекция, выбор, естественное соединение, декартово произведение. любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение (relation). Реляционная база данных – это конечный (ограниченный) набор отношений. Отношение – это двумерная таблица, имеющая уникальное имя и состоящая из строк и столбцов, где строки соответствуют записям, а столбцы – атрибутам. Внешний ключ – это набор атрибутов одного отношения, являющийся потенциальным ключом другого отношения. 11.Нормальные формы: 1НФ, 2НФ, 3НФ. существуют некоторые правила, помогающие улучшить проектируемую БД. Такие правила носят рекомендательный характер, и называются нормализацией базы данных. Процесс нормализации данных заключается в устранении избыточности данных в таблицах. Существует несколько нормальных форм, но для практических целей интерес представляют только первые три нормальные формы. Первая нормальная форма (1НФ) требует, чтобы каждое поле таблицы БД было неделимым (атомарным) и не содержало повторяющихся групп. Неделимость означает, что в таблице не должно быть полей, которые можно разбить на более мелкие поля. Например, если в одном поле мы объединим фамилию студента и группу, в которой он учится, требование неделимости соблюдаться не будет. Первая нормальная форма требует, чтобы мы разбили эти данные по двум полям. Вторая нормальная форма (2НФ) требует, чтобы таблица удовлетворяла всем требованиям первой нормальной формы, и чтобы любое неключевое поле однозначно идентифицировалось полным набором ключевых полей. Третья нормальная форма (3НФ) требует, чтобы в таблице не имелось транзитивных зависимостей между неключевыми полями, то есть, чтобы значение любого поля, не входящего в первичный ключ, не зависело от другого поля, также не входящего в первичный ключ. 12.Манипулирования данными с помощью запросов на языке SQL Оператор SELECT является фактически основным и самым сложным оператором SQL. Он предназначен для выборки данных из таблиц, именно он и реализует одно их основных В списке операнда FROM перечисляются имена таблиц, для которых отбираются записи. Список должен содержать как минимум одну таблицу. Операнд WHERE задаёт условия отбора, которым должны удовлетворять записи в результирующем наборе данных. Выражение, описывающее условия отбора, является логическим. Его элементами могут быть имена полей, операции сравнения, арифметические и логические операции, скобки, специальные функции LIKE, NULL, IN и др Операнд GROUP BY позволяет выделять группы записей в результирующем наборе данных Операнд HAVING действует совместно с операндом GROUP BY и используется для отбора записей внутри группы. Операнд ORDER BY содержит список полей, определяющих порядок сортировки записей результирующего набора данных 4. Операционные системы 13.Назначение и функции ОС. Поколения ОС. Классификация ОС. 14.Понятие ядра ОС. Виды ядер ОС. 15.Схемы организации виртуальной памяти: страничная, сегментная, сегментностраничная. 16.Управление процессами. Состояние, контекст и алгоритмы планирования процессов. 5. Алгоритмы и анализ сложности 17.Понятие сложности алгоритма. 18.Стратегии разработки алгоритмов. 19.Примеры алгоритмов различной сложности. 20.Классы сложности задач. 6. Объектно-ориентированное программирование 21.Основные принципы ООП: инкапсуляция, наследование, полиморфизм. 22.Синтаксис языка С++:ссылки и указатели, работа с памятью с помощью операторов new и delete, модификаторы static, const. 23.Конструкторы и деструкторы классов в языке С++. 24.Реализация наследования в языке С++. Абстрактные классы. 7. Программная инженерия 25.Основные понятия программной инженерии, цели и задачи. 26.Жизненный цикл программного обеспечения: этапы и их содержание. 27.Требования к программному обеспечению. 28.UML:диаграммы вариантов использования, классов, последовательностей, деятельности. 8. Компьютерные сети 29.Сетевые архитектуры. Компьютерная (вычислительная) сеть (Computer NetWork2 ) – это совокупность компьютеров и различных устройств, соединенных с помощью каналов связи в единую систему, которая обеспечивает разделение ресурсов и обмен информацией между компьютерами. Архитектура сети определяет основные элементы сети, характеризует ее общую логическую организацию, техническое обеспечение, программное обеспечение, описывает методы кодирования. Архитектура также определяет принципы функционирования и интерфейс пользователя. Архитектура терминал – главный компьютер (terminal – host computer architecture) – это концепция информационной сети, в которой вся обработка данных осуществляется одним или группой главных компьютеров. Рассматриваемая архитектура предполагает два типа оборудования: 1. Главный компьютер, где осуществляется управление сетью, хранение и обработка данных; 2. Терминалы, предназначенные для передачи главному компьютеру команд на организацию сеансов и выполнения заданий, ввода данных для выполнения заданий и получения результатов. Главный компьютер через мультиплексоры передачи данных (МПД) взаимодействуют с терминалами. Классический пример архитектуры сети с главными компьютерами – системная сетевая архитектура (System Network Architecture – SNA). Одноранговая архитектура Одноранговая архитектура (peer-to-peer architecture) – это концепция информационной сети, в которой ее ресурсы рассредоточены по всем системам. Данная архитектура характеризуется тем, что в ней все системы равноправны. К одноранговым сетям относятся малые сети, где любая рабочая станция может выполнять одновременно функции файлового сервера и рабочей станции. В одноранговых ЛВС дисковое пространство и файлы на любом компьютере могут быть общими. Чтобы ресурс стал общим, его необходимо отдать в общее пользование, используя службы удаленного доступа сетевых одноранговых операционных систем. В зависимости от того, как будет установлена защита данных, другие пользователи смогут пользоваться файлами сразу же после их создания. Одноранговые ЛВС достаточно хороши только для небольших рабочих групп. Архитектура клиент – сервер Архитектура клиент – сервер (client-server architecture) – это концепция информационной сети, в которой основная часть ее ресурсов сосредоточена в серверах, обслуживающих своих клиентов. Рассматриваемая архитектура определяет два типа компонентов: серверы и клиенты. Сервер - это объект, предоставляющий сервис другим объектам сети по их запросам. Сервис- это процесс обслуживания клиентов. Сервер работает по заданиям клиентов и управляет выполнением их заданий. После выполнения каждого задания сервер посылает полученные результаты клиенту, пославшему это задание. Сервисная функция в архитектуре клиент – сервер описывается комплексом прикладных программ, в соответствии с которым выполняются разнообразные прикладные процессы. Процесс, который вызывает сервисную функцию с помощью определенных операций, называется клиентом. Им может быть программа или пользователь. Клиенты – это рабочие станции, которые используют ресурсы сервера и предоставляют удобные интерфейсы пользователя. Интерфейсы пользователя это процедуры взаимодействия пользователя с системой или сетью. Клиент является инициатором и использует электронную почту или другие сервисы сервера. В этом процессе клиент запрашивает вид обслуживания, устанавливает сеанс, получает нужные ему результаты и сообщает об окончании работы. 30.Сетевые стандарты: семиуровневая эталонная модель OSI. Сложность сетевых структур и разнообразие телекоммуникационных устройств, выпускаемых различными фирмами, привели к необходимости стандартизации как устройств, так и процедур обмена данными между пользователями. Международная организация стандартов (International Standards Organization – ISO ) создала эталонную модель взаимодействия открытых систем (Open System Interconnection reference model – OSI ), которая определяет концепцию и методологию создания сетей передачи данных. Модель описывает стандартные правила функционирования устройств и программных средств при обмене данными между узлами (компьютерами) в открытой системе. Открытая система состоит из программно-аппаратных средств, способных взаимодействовать между собой при использовании стандартных правил и устройств сопряжения (интерфейсов). Модель ISO/OSI включает семь уровней. На рис показана модель взаимодействия двух устройств: узла источника (source) и узла назначения (destination). Совокупность правил, по которым происходит обмен данными между программно-аппаратными средствами, находящимися на одном уровне, называется протоколом. Набор протоколов называется стеком протоколов и задается определенным стандартом. Взаимодействие между уровнями определяется стандартными интерфейсами. Взаимодействие соответствующих уровней является виртуальным, за исключением физического уровня, на котором происходит обмен данными по кабелям, соединяющим компьютеры. На 1 приведены также примеры протоколов, управляющих взаимодействием узлов на различных уровнях модели OSI. Взаимодействие уровней между собой внутри узла происходит через межуровневый интерфейс, и каждый нижележащий уровень предоставляет услуги вышележащему. Самый верхний, Прикладной уровень (Application Layer) 7 оперирует наиболее общей единицей данных – сообщением. На этом уровне реализуется управление общим доступом к сети, потоком данных, сетевыми службами, такими, как FTP, TFTP, HTTP, SMTP, SNMP и др. Представительский уровень (Presentation Layer) 6 изменяет форму представления данных. Например, передаваемые с уровня 7 данные преобразуются в общепринятый формат ASCII. При приеме данных происходит обратный процесс. На уровне 6 также происходит шифрация и сжатие данных. Сеансовый уровень (Session Layer) 5 устанавливает сеанс связи двух конечных узлов (компьютеров), определяет, какой компьютер является передатчиком, а какой приемником, задает для передающей стороны время передачи. Транспортный уровень (Transport Layer) 4 делит большое сообщение узла источника информации на части, при этом добавляет заголовок и формирует сегменты определенного объема, а короткие сообщения может объединять в один сегмент. В узле назначения происходит обратный процесс. В заголовке сегмента задаются номера порта источника и назначения, которые адресуют службы верхнего прикладного уровня для обработки данного сегмента. Сетевой уровень (Network Layer) 3 адресует сообщение, задавая единице передаваемых данных (пакету) логические сетевые адреса узла назначения и узла источника ( IP-адреса ), определяет маршрут, по которому будет отправлен пакет данных, транслирует логические сетевые адреса в физические, а на приемной стороне – физические адреса в логические. Сетевые логические адреса принадлежат пользователям. Канальный уровень (Data Link) 2 формирует из пакетов кадры данных (frames). На этом уровне задаются физические адреса устройства-отправителя и устройства-получателя данных. Физический уровень (Physical) 1 осуществляет передачу потока битов по соответствующей физической среде (электрический или оптический кабель, радиоканал) через соответствующий интерфейс. На этом уровне производится кодирование данных, синхронизация передаваемых битов информации. 31.Средства сетевой безопасности и основы криптографии 32.Функциональность общей серверно-ориентированной архитектуры; функции клиентских систем.