Вкладка 1
Базы данных 3 (24.09.2025) by Ivan_Va$il_228
Наряду с рассмотренными компиляторами и интерпретаторами на практике часто используются трансляторы смешанного типа(интерпретаторами-компиляторы). Они по сути объединяют в себе достоинства обоих механизмов трансляции:
На этапе разработки и отладки программы транслятор работает в режиме интерпретатора. А после завершения процесса отладки исходная программа повторно транслируется в объектный модуль в режиме компиляции.
Представление моделей базы данных называется схемой базы данных и бывает также логическим или физическим.
Существуют следующие базовые модели баз данных: ● Иерархическая или древовидная; ● Сетевая; ● Реляционная;
● Объектно-реляционная; ● Объектно-ориентированная; ● Нереляционная;
Виерархической модели данные представлены в виде иерархической структуры. Иерархическая модель заключается в формировании связей между записями в виде дерева с вводом соотношений типа родительский элемент - дочерний элемент.
Каждый элемент иерархической модели связан только с одним стоящим выше(родительским) элементом(более высокого уровня), но при этом на него могут ссылаться один или несколько элементов более низкого уровня. Такая схема не всегда удобна и часто избыточна. Например если в различных узлах автомобиля используется 300 болтов одного типа, вместо одной записи будет создано 300 дублирующих друг друга записей. Для устранения этого недостатка была введена сетевая модель представления данных.
Всетевых базах данных используется представление данных в виде произвольного графа. В сетевой модели:
● Отсутствуют понятия главного и подчиненного объектов.
● Один объект может выступать как главный так и подчинённый. То есть имеет любое количество взаимосвязей(одна запись может участвовать в нескольких отношениях родитель-потомок).
● Допустимы связи между объектами на одном уровне.
Любая база данных представляет собой хранилище данных в виде записей. Каждая запись представляет собой контейнер, в котором группируются СВОйства объекта или объектов, то есть его или их характеристики. Записи представляют собой экземпляры структур подобных структуре типа struct в языке C и C++.
Искать элемент в сетевой базе данных не просто из-за сложности определения маршрута.
В Реляционной модели все данные сгруппированы в таблице в которой стоки этой записи, а столбцы это поля записей. Для однозначного перехода конкретной записи реляционной базы данных в каждой строке есть первичный ключ. Который фактически является уникальным идентификационным номером записи.Этот ключ вводится или явным образом в отдельном столбце или неявным, то есть атоматически самой системой системой управления базы данных(СУБД). Пример Oracle - у любой таблицы есть row id с уникальным адресом каждой строки. Отношения типа родитель-потомок в реляционных базах данных реализуется с помощью внешних ключей. Внешний ключ это столбец таблицы, значение которого совпадает со значениями например первичного ключа другой таблицы.
Таблица реляционной базы данных в качестве признака отсутствующего
значения используется служебное значение null. В связи с возможным размещением служебной константы null в различных полях разных записей, ни одно значение null не равно другому значению null по внешнему признаку.
Основными понятиями реляционных баз данных являются следующие термины: атрибут, домен, схема отношения, кортеж и отношения.
Атрибут - это наименьший именованный элемент данных, характеризуемый именем и значением.
Домен - это допустимое множество значений заданного типа.
Схема отношения - это именованный набор заголовков, полей, записей. Количество заголовков в схеме отношения называется арностью или степенью схемы отношения
Структурная схема базы данных это фактически набор схем-отношений.
Будут спрашивать на экзамене:
! (Отличия класса и структуры)Класс это множество объектов, которые имеют
аналогичные атрибуты и аналогичные методы. В структуре описаны определённые характеристики.
!(Что такое графы)Графы состоят из вершин и рёбер. Ориентированный граф
-рёбра имеют определённое направление.
Вкладка 2
Разработка приложений искусственного интеллекта в киберфизических системах
3(24.09.2025)
Витоге так называется таблица лексем в которой ключевые слова, идентификаторы и константы заменяются на специальные соответствующие коды, кодировка создаётся при реализации компилятора. Кроме того для идентификаторов и констант создаётся таблица кодов-лексем, которая определяется связь между таблицей лексем и таблицей идентификаторов.
Эта таблица кодов имеет следующий формат: два столбца, первый столбец подтипы лексемы, второй столбец номер в таблице, идентификатор.
Второй этап синтаксический анализ(парсинг). На основании таблицы кодов-лексем компилятор выделяется конструкции в соответствии с грамматикой языка. То есть выделяет операторы, блоки операторов, описание процедур и функций.
Функции всегда возвращают какое то значение, процедуру явно возвращаемого значения не имеют.
Все выделенные конструкции проходят полную синтаксическую проверку на
корректность синтаксиса. В результате последовательность лексем, которую мы получили на первом этапе, преобразуется в синтаксическое дерево разбора.
Третий этап. Сематический анализ. Дерево разбора интерпретируется в соответствии с симантикой исходного языка. Например выполняются привязка идентификаторов к их декларациям. Выполняется проверка совместимости типов
операндов. Определяются типы выражений и так далее. В том числе из дерева
разбора строится дерево операций соответствующее объектному коду. В дереве операций по сравнению с деревом разбора исключены узлы не имеющие симантической(смысловой) нагрузке при генерации кода, например к таким узлам
относятся скобки, которые определяют порядок выполнения операций и теряют
смысловую нагрузку после построения дерева операций на этом этапе. Результатов анализа 1-3 является внутренняя представление программы
понятное компилятору. В одной из следующих форм: связные списки представляющие собой синтаксические деревья, многоадресный код с явно или неявно именуемым результатом: тетрадным, треядным?, обратная (постъиксная) пользовательская запись операций, ассемблерный код или машинные команды. Одна форма отличается от другой способом соединения операторов и операндов.
Пятый этап: Внутреннее представление программы преобразуется в машинный то есть в объектный код.
Объектно ориентированные языки не описывают подробную последовательность действий для выполнения поставленной задачи, программа записывается в процедурах обработки событий, события возникают применительно к
объектам обладающим указанными свойствами и определенным поведением.
При использовании декларативного языка программист указывает исходные информационные структуры, взаимосвязи между ними и то какими свойствами должен обладать результат. Процедура получения результат в явном виде не формируется. Декларативные языки делятся на логические и функциональные. Программа на функциональном языке описывает вычисления некоторой функции как композиции других более простых функций, которые в свою очередь возлагаются на ещё более простые и тд..
Основным элементом функционального языка является рекурсия, то есть вычисление значение функции, через значение этой же функции по другим параметрам.
Программы на логическом языки не описывает действие, а задаёт данные и соотношения между данными. После компиляции и запуска можно подавать запросы к базе знаний, и в результате перебора указанных в программе данных формируется ответ на запрос. Порядок перебора неявно задаётся самим языком программирования. В прологе реализован механизм полного перевода. Базу знаний составляют факты.
Декларативные языки программирования принципиально отличаются от процедурных тем, что процедурный код последовательно меняет значения набора переменных, который называется состоянием. Такая концепция программирования
называется процедурной или императивной.
В отличии от императивной концепции программа на функциональном языке представляет собой выражение. А выполнение программы представляет собой вычисление значения этого выражения. Конечное состояние, как и любое промежуточное, представляет собой функцию от начального состояния.
Функции в функциональных программах действительно являются функциями в математическом смысле. Вычисления любого выражения не имеет побочных эффектов и порядок вычисления его подвыражений не влияет на результат. В отличии от этого функции языка С например не являются функциями в математическом смысле так как: их значения могут зависеть не только от аргументов, их выполнение может привести к различным побочным результатам(например к изменению значению
глобальных переменных), из этого следует что два вызова одной и тойже функции с
одними и темеже аргументами, может привести к различным результатам.
Типы алгоритмов
Жадный - алгоритм в основе которого лежит принцип разделения задач на подзадачи и наличие основания рационального выбора одной из подзадач, проще
говоря жадный алгоритм на каждом этапе должен уметь выбирать из нескольких
вариантов единственно правильный.(Пример: Бинарный поиск)
Полный перебор Динамическое программирование - основная идея динамического
программирования заключается в запоминании результатов решения повторяющихся подзадач, возникающих например при поиске методом полного рекурсивного перебора с получением подзадач меньшей размерности. Вычисление идёт от малых подзадач к большим и ответы запоминаются в таблице.
Рекурсия - процедура, которая прямо или косвенно обращается к себе же,
называется рекурсивной. Рекурсивное программирование базируется на разбиение
задач на аналогичные подзадачи меньшей размерности. Рекурсивные вызовы образуют древовидную структуры, количество вершин в которой определяет эффективность алгоритма обычно выражаемая через сложность.(Сложность это порядок зависимости количеству элементарных операций к количеству задач) Когда рекурсия целесообразна:
● при необходимости обработки данных имеющих рекурсивную структуру(стек, очередь, кольцевая очередь).
● если алгоритм обработки данных можно построить разбивая эти данные на фрагменты и получая из этих фрагментарных решений общее решение для всего объёма данных.
если задача поставлена так, что её решением является выбор определённого варианта из некоторого множества возможных решений.
● если определённая функция указанная в техническом задании должна выполняться по рекурсивной схеме.
Объекты данных в прологе, константы, переменные и структуры
