Перегрузка операторов


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

Перегрузка операторов new и delete


Для перегрузки new следует использовать прототип функции вида: void * operator new(size_t size); В дальнейшем обращение к оператору new для выделения памяти объектам класса будут перенаправлены замещающей функции. Функция должна возвращать адрес памяти, выделенной объекту. Вместо кучи можно выделять память из статического буфера, на диске или другом запоминающем устройстве.

Лабораторная работа 4


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

Файловые потоки ввода-вывода


5.1. Использование потоков ввода-вывода. С помощью перегрузки операторов ввода и вывода можно заставить компилятор распознавать в операторах ввода-вы-вода один или несколько необходимых классов. Рассмотрим как создаются потоковые классы.

Элементы теории игр. Принятие решений в условиях конфликтных ситуаций и противодействия. Основные понятия теории игр.


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

Метод декомпозиции Данцига- Вульфа


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

Представление числовых значений


Теперь, когда вы знаете о типах данных языка ассемблера, возникает вопрос, как можно представлять значения? Легче всего пользоваться десятичными значениями (то есть с основанием 10), поскольку мы привыкли к ним в повседневной жизни. Определенно, проще всего ввести: mov cx,100 ; установить счетчик в значение 100

Файловые потоки


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

Потоки текстовых файлов.


Использование потоков текстовых файлов состоит из трех основных моментов: — создание текстового файла; — запись в текстовые файлы; — чтение из текстовых файлов.

Лабораторная работа 5


Цель работы: Ознакомиться с методом записи информации в файл на диске и считывания данных с диска, используя библиотечные классы потокового ввода/вывода в/из файла. 1. Порядок выполнения работы.

Шаблоны. Списки.


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

Шаблонные функции


Шаблоны функций описывают общие свойства функций и обычно объявляются в заголовочном файле, например: template<classT> void f(T param) { // Тело функции }

Шаблонные классы


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

Связные списки


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

Лабораторная работа 6


Цель работы: Ознакомиться с созданием шаблонов функций и классов. Освоить написание контейнерных классов и их приме-нение для построения различных связных списков. 1. Порядок выполнения работы. 1. Ознакомьтесь с теоретическими сведениями.

ПРИЛОЖЕНИЕ


// Set.h Объявление класса TSet #ifndef SET_H #define SET_H //Предотвращает несколько include class TElem;

Лабораторная работа № 1. Visual Prolog/


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

Унификация


Одним из наиболее важных аспектов программирования на Прологе являются понятия унификации (отождествления) и конкретизации переменных. Пролог пытается отождествить термы при доказательстве, или согласовании, целевого утверждения. Например, в программе имеется факт собака(рекс). Для согласования запроса ?- собака(Х) целевое утверждение собака(X) будет отождествлено с фактом собака (рекс), в результате чего переменная Х станет конкретизированной: Х= рекc.

Использование предикатов fail, not, cut (неуспех, отрицание и отсечение).


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

Задания по Прологу


Используя отсечение, неуспех и отрицание, написать программу: 1.Написать программу-классификатор, которая бы спортсменов некоторого клуба делила бы на группы: а) победители – те, кто ни разу не проиграл ни одного боя; б) бойцы – те, кто и выигрывал, но и был побежденным; в) спортсмены – те, кто пока не выиграл ни одного боя,

Базы знаний


Построить базу знаний «Рабочая смена»: Мария работает в дневную смену. Сергей работает в вечернюю смену. Борис работает в вечернюю смену. Валентина работает в вечернюю смену.

Логические задачи


1) Коля и Саша носят фамилии Шилов и Гвоздев. Какую фамилию носит каждый из них, если Саша с Шиловым живут в разных домах? 2) В соревновании по бегу Юра, Гриша и Толя заняли три первых места. Какое место занял каждый ребенок, если Гриша занял не второе и не третье место, а Толя — не третье?

Рекурсивные правила


Рекурсия – алгоритмический метод, часто используемый в Прологе. В рекурсивном правиле более сложные входные аргументы выражаются через менее сложные. Классическим примером рекурсивного определения в Прологе может служить программа «Предок», состоящая из двух правил:

Рекурсивные процедуры


Рекурсивная процедура — это процедура, которая вызывает сама себя. Рассмотрим пример вычисления факториала числа N: Если N равно 1, то факториал равен 1. Иначе найти факториал N-1 и умножить его на N.

Использование команды «cut»


Довольно просто сделать рекурсивный вызов в последней подцели последнего предложения. Но как гарантировать, что в любых других вызываемых процедурах нет альтернатив? Команда cut (!) позволяет отвергать все существующие альтернативы. Чтобы установить ее, необходимо использовать директиву компилятора check_determ. 

СПИСКИ


Списки — это объекты, которые имеют конечное число элементов. Объявляют их добавляя «*» (звездочку) в конце предварительно определяемого типа.

Упражнения по ПРОЛОГУ


1. Определите отношение последний(Элемент, Список) так, чтобы Элемент являлся последним элементом списка Список. Напишите два варианта определения: с использованием отношения append и без него.

Лабораторная работа № 5. ДЕРЕВЬЯ


Деревья относятся к рекурсивным структурам данных (Рис.1). Важно, чтобы каждая ветвь дерева сама являлась деревом, поэтому структура рекурсивна.

Обход дерева


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

Принципы построения экспертных систем


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