Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Множественное наследование




Вариант №1

1. Линейная алгебра. Система координат. Векторная алгебра. Скалярное, векторное и смешанное произведение векторов.

2. История языков программирования.

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

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

Парадигма в первую очередь определяется базовой программной единицей(-ами) и самим принципом достижения модульности программы. Цель: достижение модульности Средства: механизмы абстракции

Абстракция (абстрагирование) – процесс определения существенных характеристик некоторой сущности, отличающих ее от других сущностей и значимых в рамках поставленной задачи. Также абстракция (как процесс) включает представление выделенных характеристик моделируемой сущности и представление их в терминах языка моделирования/программирования. Принцип абстракции – каждая существенная область функциональности в программе должна быть реализована всего в одном месте программного кода (Б.Пирс). Модульность – разбиение программы (или любой другой сложной технической системы) на составные блоки с относительно замкнутой функциональностью Единица модульности => абстракция

Императивное программирование(процедурная) - изменение состояния программы посредством исполнения инструкций

Основные механизмы управления/абстракции:

· Последовательное исполнение команд

· Ветвление

·  Безусловный переход

· Вызов подпрограммы (процедурное программирование) Элементарные единицы модульности: отсутствуют Структурное

Объектно-ориентированное программирование Представление программы в форме взаимодействующих объектов

 Основные механизмы управления/абстракции:

· Объект

·  Класс

· Иерархии классов/объектов

· Полиморфизм

Элементарные единицы модульности:

· Класс (примечание: в наиболее распространенной интерпретации)

Объект характеризуется:

· поведением;

·  состоянием;

· уникальностью (identity);

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

Основные механизмы управления/абстракции:

· Чистая функция, как объект первого класса

· Вызов функции (в т.ч. рекурсивный)

· Лексический контекст, замыкание

 Элементарные единицы модульности:

· Функция (в т.ч. высшего порядка, обобщенная, мультиметод и т.д.)

 

Роль трансляции в процессе программирования.

Место транслятора в программном обеспечении.

Структура языка программирования.

Структура и способы описания языков программирования высокого уровня

Во всяком языке программирования определены способы организации данных и способы организации действий над данными. Кроме того, существует понятие «элементы языка», включающее в себя множество символов (алфавит), лексемы и другие изобразительные средства языка программирования. Несмотря на разнообразие указанных языков, их изучение происходит приблизительно по одной схеме. Это связано с общностью структуры различных языков программирования высокого уровня, которая схематически отражена на рис. 5.

Всякий язык программирования имеет три основные составляющие: алфавит, синтаксис и семантику.

 

Вариант №2

  1. Линейная алгебра. Алгебра матриц. Определители. (тетрадь)

Ранг матрицы.

Рангом системы строк (столбцов) матрицы {\displaystyle A} с {\displaystyle m} строк и {\displaystyle n} столбцов называется максимальное число линейно независимых строк (столбцов). Несколько строк (столбцов) называются линейно независимыми, если ни одна из них не выражается линейно через другие. Ранг системы строк всегда равен рангу системы столбцов, и это число называется рангом матрицы.

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

Наибольший из порядков миноров данной матрицы, отличных от нуля, называется рангом матрицы. Обозначается r, r(A) или rangA. Очевидно, что О <= r <= rnin(m; n), где min(m; n) - меньшее из чисел. Минор, порядок которого определяет ранг матрицы, называется базисным. У матрицы может быть несколько базисных миноров.

 

  1. Языки программирования.

Язык программи́рования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.

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

Как правило, язык программирования определяется не только через спецификации стандарта языка, формально определяющие его синтаксис и семантику но и через воплощения (реализации) стандарта — программные средства, обеспечивающих трансляцию или интерпретацию программ на этом языке []; такие программные средства различаются по производителю, марке и варианту (версии), времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.

 

Синтаксис языка.

Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой(документом) или её фрагментом. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.

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

Синтаксис проверяется на ранних стадиях трансляции. В интерпретируемых языках программирования проверка синтаксиса производится или в процессе интерпретации (выполнения), или в процессе предварительной компиляции в промежуточный код. Кроме того, синтаксис может проверяться непосредственно при редактировании исходных текстов программ при использовании IDE.

 

Семантика языка.

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

Все многообразие возможных подходов к семантике можно в основном представить всего двумя типами семантик:

· семантиками, ориентированными на компиляцию,

· семантиками, ориентированными на интерпретацию.

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

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

Лексемы.

Существуют следующие виды лексем:

· имена (идентификаторы);

· ключевые слова;

· знаки операций;

· разделители;

· литералы (константы).

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia, ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.

· Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b.

· Оператор задает законченное описание некоторого действия.

Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a; - это оператор описания целочисленной переменной a.

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

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

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

 

Понятия.

Атрибуты.

Области действия.

 

Вариант №3

1. Линейная алгебра.

 Эллипс, гипербола, парабола, их изображение и их каноническое уравнение.

 

Гипербола

Парабола

 

2. Способы описания языков программирования.

Наиболее часто используются следующие способы описания языков программирования:

· Нотация Бэкуса-Наура (язык БНФ)

· Синтаксические диаграммы

В БНФ всякое синтаксическое понятие описывается в виде формулы, состоящей из правой и левой части, соединенных знаком::=, смысл которого эквивалентен словам «по определению есть». Слева от знака::= записывается имя определяемого понятия (метапеременная), которое заключается в угловые скобки < >, а в правой части записывается формула или диаграмма, определяющая все множество значений, которые может принимать метапеременная.

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

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

В записях метаформул приняты определенные соглашения. Например, формула БНФ, определяющая понятие «двоичная цифра», выглядит следующим образом:

<двоичная цифра>::=0|1

 

 

Грамматики.

Способ задания языка называет грамматикой этого языка. Таким образом, грамматикой мы называем любой способ задания языка. Например, грамматика L = {a^nb^n} (здесь n — натуральное число) задает язык L, состоящий из цепочек вида ab, aabb, aaabbb и т.д. Язык L представляет собой бесконечное множество цепочек, но тем не менее, его грамматика (описание) состоит всего из 10 символов, т.е. конечна.

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

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

С алгоритмической точки зрения грамматики можно подразделить по способу задания языка. Имеются три основных таких способа (вида грамматик):

· Распознающие грамматики. Такие грамматики представляют собой устройства (алгоритмы), которым на вход подается цепочка языка, а на выходе устройство печатает «Да», если цепочка принадлежит языку, и «Нет» — в противном случае.

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

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

 

Классификация грамматик по Хомскому.

Четыре типа грамматик: тип 0, тип 1, тип 2, тип 3

 

 Контекстно-свободные языки.

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

Язык, который может быть задан КС-грамматикой, называется контекстно-свободным языком или КС-языком.

 

 

Вариант №4

1. Аналитическая геометрия. Прямые и плоскости в пространстве. Канонические уравнения

2. Общее представление о процессе трансляции. Принципиальная схема трансляции. Этап генерации. Лексический анализ. Функции лексического анализа. Реализация лексического анализатора в трансляторе.

 

Вариант №5

1. Комбинаторика. Выборки. Перестановки. Сочетания.

2. Общее представление о процессе трансляции. Синтаксический анализ. Стратегии разбора. Методы синтаксического анализа. Нисходящий анализ.

 

Вариант №6

1. Булевы функции. Основные способы задания булевых функций. Существенные и фиктивные переменные. Формулы и эквивалентность формул. Элементарные функции. Совершенная дизьюнктивная нормальная форма. Совершенная коньюктивная нормальная форма.(дискретка тетрадь)

2. Основные принципы и конструкции ООП.

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Описание объектов реального мира при помощи программных объектов называют абстрагированием.

Инкапсуляция – объединение трех сущностей (полей, методов и свойств) в единое целое (т.е. в класс), что позволяет во многом изолировать класс от остальных частей программы, сделать его самодостаточным для решения конкретной задачи. Например, класс Tform содержит (инкапсулирует в себе) все необходимое для создания Windows-окна.

Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public.

Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.

Наследование – возможность создания новых классов на основе имеющегося класса с наследованием всех его полей, методов и свойств и добавлением новых. Класс, не имеющий предшественника, называется базовым.

Простое наследование:

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

Множественное наследование

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++.

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

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

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

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

Например, объект класса Водитель взаимодействует с объектом класса Автомобиль через открытый интерфейс. Если другой объект, например Грузовик или Гоночный_автомобиль, поддерживает такой открытый интерфейс, то объект класса Водитель сможет взаимодействовать и с ними (управлять ими), невзирая на различия в реализации интерфейса

  Классы, объекты, методы, конструкторы, свойства, поля, переменные.

Класс – специальный тип данных, который содержит поля, методы и свойства.

Класс, от которого произошло наследование, называется базовым или родительским. Классы, которые произошли от базового, называются потомками, наследниками илипроизводными классами. Производные классы наследуют свойства и методы от базового класса.

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

Абстрактный класс в объектно-ориентированном программировании – класс, экземпляры которого не создаются. Абстрактный класс не может иметь объектов, так как в нем не определены операции над объектами; объекты должны принадлежать конкретным подклассам абстрактного класса. Абстрактные классы используются для спецификации интерфейсов операций.

Объекты – это программные конструкции, включающие набор логически связанных свойств (данных) и методов. Объекты создаются на основе шаблонов, которые называются классами и являются экземплярами этих классов.

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

Методы – определяют действия, которые объект способен выполнять. Методы позволяют реализовать поведение объекта. События представляют собой уведомления о важных происшествиях, например о том, что количество бензина стало ниже заданной величины, или объект класса Двигатель может уведомлять объект класса Автомобиль о событии Перегрев_двигателя.

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

В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:

· открытый (public) интерфейс — общий интерфейс для всех пользователей данного класса;

· защищённый (protected) интерфейс — внутренний интерфейс для всех наследников данного класса;

· закрытый (private) интерфейс — интерфейс, доступный только изнутри данного класса.

Конструктор класса— специальный блок инструкций, вызываемый при создании объекта.

Виды конструктора:

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

конструктор с параметрами – имеет параметры;

именованный конструктор — функция, предполагающая явный вызов по имени, работающая как конструктор

конструктор копирования — конструктор, принимающий в качестве аргумента объект того же класса (или ссылку из него);

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

Свойства – предоставляют управляемый способ доступа к данным объекта Пример: Свойства объектов класса Автомобиль: Цвет, Модель, Расход_топлива. Методы объектов класса Автомобиль: Нажать_акселератор, Переключить_передачу, Повернуть_руль.

Поля содержат данные объекта

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

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

 

Вариант №7

1. Элементы теории графов. Графы. Основные понятия. Изоморфизм графов. Связность.

2. Компьютерные сети. Эталонная семиуровневая модель ISO/OSI. Сетевые протоколы. Интерфейсы между уровнями модели OSI. Краткая характеристика уровней. Физический уровень модели OSI. Задачи. Средства реализации. Стандарты Ethernet и Fast Ethernet. Общие принципы, физический и канальный уровни. Адреса Ethernet. Беспроводные сети: среда передачи данных; типы; технические характеристики; сравнительная характеристика беспроводных и кабельных сетей.

 

Вариант №8

1. Определенный интеграл и его свойства.

 Теорема о существовании определенного интеграла.

Компьютерные сети.

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

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

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

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

Данные, хранящиеся на удаленных компьютерах, образуют информационный ресурс, например, Интернет.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...