Разработка программного обеспечения, реализующего математический аппарат теории игр

Теория игр: основные понятия, модели, принципы; элементарные приемы решения игр в "чистых" и "смешанных" стратегиях. Разработка алгоритма программного обеспечения, реализующего математический аппарат теории игр. Выбор инструмента программирования Delphi.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык немецкий
Дата добавления 27.03.2011
Размер файла 255,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Комбинация (2,3) дает у1*4*=0. Следовательно,у3 = 1-у2. Ожидаемые проигрыши игрока В, соответствующие чистым стратегиям А, представлены в таблице:

Таблица 1.3.3

Ожидаемые проигрыши игрока В, соответствующие чистым стратегиям А

Чистые стратегии игрока А

Ожидаемые проигрыши игрока В

1

2+3

2

у2+2

Значение у2*=(соответствующее минимаксной точке) определяется из равенства

2*+3=у2*+2.

Отметим, что подстановкой у2*= в выражение для ожидаемого проигрыша игрока В можно найти минимаксное значение, равное , совпадающее, как и должно быть, со значением игры v*.

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

Эта игра не имеет седловой точки. Пусть у1 и у2=(1-у1)-смешанные стратегии игрока В.

Таблица 1.3.4

Ожидаемые проигрыши игрока В, соответствующие чистым стратегиям игрока А

Чистые стратегии игрока А

Ожидаемые проигрыши игрока В

1

-2у1+4

2

1+3

3

у1+2

4

-8у1+6

Эти четыре прямые изображены на рис.11.3. В данном случае минимаксная точка определяется как самая нижняя точка на огибающей сверху. Значение у1* получается как точка пересечения прямых 1 и 3. Это дает у1*= и v*=.

Прямые, пересекающие в минимаксной точке, соответствуют чистым стратегиям 1и 3 игрока А. это показывает, что х2*4*=0. Следовательно, х1=1-х3.Ожидаемые выигрыши игрока А, соответствующие чистым стратегиям игрока В, приведены в таблице:

Таблица 1.3.5

Ожидаемые выигрыши игрока А, соответствующие чистым стратегиям игрока В

Чистые стратегии игрока В

Ожидаемые выигрыши игрока а

1

1+3

2

1+2

Значение х1*= определяется из уравнения -х1*+3=2х1*+2

Таким образом, оптимальной стратегией игрока А будет х1*=, х2*=0, х3*=, х4*=0. Это дает, как и прежде, v*=.

2. Разработать алгоритм программного обеспечения реализующего математический аппарат теории игр

2.1 Основные понятия алгоритмизации

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

Требования, предъявляемые к алгоритму:

- однозначность - предлагаемые действия должны быть «понятны» компьютеру, а порядок исполнения этих действий должен быть единственно возможным, любая неопределенность или двусмысленность недопустимы;

- массовость - пригодность алгоритма для решения не только данной задачи, а множества родственных задач, относящихся к общему классу;

- детерминированность - повтор результата при повторе исходных данных;

- корректность - способность алгоритма давать правильные результаты решения задачи при различных исходных данных;

- конечность - решение задачи должно быть получено за конечное число шагов алгоритма, «зацикливание» недопустимо;

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

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

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

Блок-схема называют графическое представление алгоритма, в котором он изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Внутри блока записывается действие, которое нужно выполнить, или условие, которое необходимо проверить. Блок-схема - стандартный способ записи алгоритма, существует ГОСТ, содержащий перечень правил построения блок-схем. Основные блоки, которые используются при составлении графического алгоритма, изображены на рис. 1.1, где а - начало (конец) алгоритма; б - блок ввода/вывода; в - операционный блок; г- логический(условный) блок; д - цикл с параметром(для параметра цикла i указывается его начальное и конечное значение, шаг равен единице). Конструкция «цикл с параметром» отдельно ГОСТом не регламентируется, однако приведенное обозначение (шестиугольник) разрешено использовать для различных целей. В ГОСТ 19.701-90 (ИСО 5807-85), дата введения 01.01.1992 г., приводится еще один возможный вариант обозначения для циклов.[7]

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рис.1.1 Условные обозначения на схемах алгоритмов

Пример блок-схемы алгоритма:

Рассмотрим пример блок-схемы алгоритма игры «Угадай число».

Условие игры: игрок должен угадать число, «задуманное» компьютером» - случайное число в диапазоне от 0 до 1000. Алгоритм игры представлен на рис.1.2. Игра начинается с того, что компьютер задумывает случайное число А. В свою очередь, игрок вводит число В, пытаясь угадать значение А. Выполняется проверка: число В строго больше числа А? Если это так, т.е. «да», то компьютер выводит сообщение «много» и просит игрока ввести следующее число, еще раз испытав удачу. Если же - «нет», то компьютер выполняет следующую проверку: В строго меньше А? Если ее результат- «да», то выводится сообщение «мало», и компьютер ожидает ввода игроком следующего числа. Если же результат второй проверки- «нет», это означает, что игрок угадал число, задуманное компьютером. В таком случае выводится сообщение «вы угадали», и игра завершается.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рис.1.2 Блок-схема алгоритма игры «Угадай число».

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

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

Пример. Вычисление по формуле. Вычислить значение переменной у, заданной формулой

У =

по данному значению х. Сама эта формула еще не определяет однозначно алгоритм вычисления значения у по заданному значению х. Вычисление можно начать с числителя или со знаменателя.

Один из возможных алгоритмов вычисления по заданной формуле можно представить в виде следующего предписания:

1.а:=3х

2.а:=а+5

3.b:=хх

4.b:=b+1

5.у:=а/b

6.Конец

В этом случае совершенно очевиден перевод предписания в блок-схему (рис.6), состоящую из одних прямоугольных блоков(за исключением блоков начала и конца), или в запись на АЯ:

алг ВЫЧИСЛЕНИЕ у (вещ х,у)

арг х

рез у

нач вещ а,b

a:=3х

а:=а+5

b:=хх

b:=b+1

у:=а/b

кон

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

2.2 Разработка алгоритма

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

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

- словесная (записи на естественном языке);

- графическая (изображения из графических символов);

- псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

- программная (тексты на языках программирования).

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

Пример. Записать алгоритм нахождения наибольшего общего делителя двух натуральных чисел.

Алгоритм может быть следующим:

1. задать два числа;

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

3. определить большее из чисел;

4. заменить большее из чисел разностью большего и меньшего из чисел;

5. повторить алгоритм с шага 2.

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

Словесный способ не имеет широкого распространения по следующим причинам:

- такие описания строго не формализуемы;

- страдают многословностью записей;

- допускают неоднозначность толкования отдельных предписаний.

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

Таблица 2.2.1

Приведем наиболее часто употребляемые символы:

Название символа

Обозначение и пример

заполнения

Пояснение

Процесс

Вычислительное действие или последовательность действий

Решение

да нет

Проверка условий

Модификация

Начало цикла

Предопреденный

процесс

Вычисление по подпрограмме, стандартной подпрограмме

Ввод-вывод

Ввод-вывод в общем виде

Пуск-останов

Начало, конец алгоритма, вход и выход в подпрограмму

Документ

Вывод результатов на печать

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

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

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

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

Пример. Составить блок-схему алгоритма определения высот ha,hb,hc треугольника со сторонами a,b,c если

ha=()

hb=()

hc=()

где p=.

Решение. Введем обозначение

t=2,

тогда ha=, hb=, hc=.

Блок-схема должна содержать начало, ввод a,b,c, вычисление p,t,ha,hb,hc, вывод результатов и останов.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

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

игра алгоритм математический аппарат

3. Разработать программное обеспечение, реализующее математический аппарат теории игр

3.1 Выбор инструмента программирования Delphi

Внешний вид среды программирования Delphi отличается от многих других из тех, что можно увидеть в Windows. К примеру, Borland Pascal for Windows 7.0. Program Manager- это все MDI приложения и выглядят по-другому, чем Delphi. MDI(Multiple Document Interface)-определяет особый способ управления нескольких дочерних окон внутри одного большого окна. Среда Delphi же следует другой спецификации, называемой Single Document Interface (SDI), и состоит из нескольких отдельно расположенных окон. Это было сделано из-за того, что SDI близок к той модели приложений, что используется в Windows 95. Если использовать SDI приложение типа Delphi, то перед началом работы лучше минимизировать другие приложения, чтобы их окна не загромождали рабочее пространство. Если нужно переключиться на другое приложение, то просто щелкнуть мышкой на системную кнопку минимизации Delphi. Вместе с главным окном свернутся все остальные окна среды программирования (СП), освободив место для работы других программ.

Главные составные части СП:

1. Дизайнер Форм(Form Designer);

2. Окно Редактора Исходного Текста(Editor Window);

3. Палитра Компонент(Component Palette)

4. Инспектор Объектов(Object Inspector)

5. Справочник(ON-line help)

Есть, конечно, и другие важные составляющие Delphi, вроде линейки инструментов, системного меню и многие другие, нужные для точной настройки программы и среды программирования.

Программисты на Delphi проводят большинство времени переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста(которое для краткости называют Редактор). Прежде чем начать работать, можно распознать эти два важных элемента. Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Дизайнер Форм первоначально состоит из одного пустого окна, которое заполняется всевозможными объектами, выбранными на Палитре Компонент. Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время является Редактор. Логика является движущей силой программы и Редактор- то место, где ее «кодируем».

Палитра Компонент позволяет выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкнуть мышкой на один из объектов и потом второй раз- на Дизайнер Форм. Выбранный объект появится на проектируемом окне и им можно манипулировать с помощью мыши.

Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок- Standard, Additional, Dialogs и т.д. Если щелкнуть мышью на одну из закладок, то можно перейти на следущую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе. Слева от Дизайнера Форм можно видеть Инспектор Объектов. Информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Важно понять, что каждый компонент является настоящим объектом и можно менять его вид и поведение с помощью Инспектора Объектов.

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

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

Последняя важная часть среды Delphi- Справочник(on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится справочник. Справочник является контекстно-зависимым; при нажатии клавиши F1, получим подсказку, соответствующую текущей ситуации.

Дополнительные элементы:

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

- Меню(Menu System);

- Панель с кнопками для быстрого доступа(Speedbar);

- Редактор картинок(Image Editor).

Меню предоставляет быстрый и гибкий интерфейс к среде Delphi, потому что может управляться по набору «горячих клавиш». Это удобно еще и потому, что здесь используются слова или короткие фразы, более точные и понятные, нежели иконки или пиктограммы. Можно использовать меню для выполнения широкого круга задач; скорее всего, для наиболее общих задач вроде открытия и закрытия файлов, управления отладчиком или настройкой среды программирования.

Инструментальные средства.

К инструментальным средствам относятся:

- Встроенный отладчик;

- Внешний отладчик (поставляется отдельно);

- Компилятор командной строки;

- WinSight;

- Winspector.

Данные инструменты собраны в отдельную категорию не потому, что они менее важны, чем другие, но потому, что они играют достаточно абстрактную техническую роль в программировании. Встроенный отладчик, который наиболее важен из пяти вышеперечисленных инструментов, работает в том же окне, что и Редактор. Внешний отладчик делает все, что делает встроенный и кое-что еще. Он более быстр и мощен, чем встроенный. Однако он не так удобен в использовании, главным образом из-за необходимости покидать среду Delphi.

Внешний компилятор, называется DCC.EXE, полезен, в основном, если скомпилировать приложение перед отладкой его во внешнем отладчике. Большинство программистов, посчитают, то гораздо проще компилировать в среде Delphi, нежели пытаться создать программу из командной строки. Однако, всегда найдется несколько оригиналов, которые будут чувствовать себя счастливее, используя компилятор командной строки. Но это факт- возможно создать и откомпилировать программу на Delphi используя только DCC.EXE и еще одну программу CONVERT.EXE, которая поможет создать формы. Однако, данный подход неудобен для большинства программистов.

WinSight и WinSpector интересны преимущественно для опытных программистов в Windows. Эти инструменты вторичны и используются для узких технических целей. Из этих двух инструментов WinSight определенно более полезен. Основная его функция- позволить нам наблюдать за системой сообщений Windows. Хотя Delphi делает много для того, чтобы спрятать сложные детали данной системы сообщений от неопытных пользователей, тем не менее Windows является операционной системой, управляемой событиями. Почти все главные и второстепенные события в среде Windows принимают форму сообщений, которые рассылаются с большой интенсивностью среди различными окнами на экране. Deiphi дает нам полный доступ к сообщениям Windows и позволяет отвечать на них, как только будет нужно. В результате, опытным пользователям WinSight становится просто необходим.

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

Стандартные компоненты

На первой странице Палитры Компонент размещены 14 объектов определенно важных для использования. Набор и порядок компонент на каждой странице являются конфигурируемыми.

TMainMenu позволяет поместить главное меню в программу. Припомещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют «невидимыми компонентом», поскольку они невидимы во время выполнения программы. Создание меню включает три шага

1. Помещение TMainMenu на форму;

2. Вызов Дизайнера Меню через свойство Items в Инспекторе Объектов;

3. Определение пунктов меню в Дизайнере Меню.

TPopupMenu позволяет создаватьвсплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.

TLabel служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов.

TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет использовать и вводить текст во время выполнения программы.

TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32 кб, это составляет 10-20 страниц.

TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, по двойному щелчку можно создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом.

TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox~ов.

TRadioButton позволяет выбрать только одну опцию из нескольких. Если опять открыть диалог Options Project и выбрать страницу Linker Options, то можно увидеть, что секции Map File и Link buffer file состоят из наборов RadioButton.

TListBox нужен для показа прокручиваемого списка. Классический пример List Box~а в среде Windows- выбор файла из списка в пункте меню File Open многих приложений. Названия файлов или директорий и находятся в ListBox~е.

TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз(drop-down combo box), который можно видеть внизу окна диалога выбора файла.

TScrollbar- полоса прокрутки, появляется автоматически в объектах редактирования, ListBox~ах при необходимости прокрутки текста для просмотра.

TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).

TPanel- управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положить другие компоненты на него. Теперь приперемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.

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

Тьюторы (интерактивные обучающие программы).

Delphi предоставляет тьютор, содержащий несколько тем и который можно запустить из пункта меню Help Interactive Tutors. Тьютор запускается только если среда Delphi имеет все установки по умолчанию. Если конфигурация была изменена, то проще всего сохранить файл Delphi.INI под другим именем и скопировать файл Delphi. CBT в Delphi.INI.

3.2 Разработка программного обеспечения

Разработка программного обеспечения (англ. Software engineering, software development) - это род деятельности и процесс, направленный на создание и поддержание работоспособности, качества и надежности программного обеспечения, используя технологии, методологию и практики из информатики управления проектами математики, инженерии и других областей знания. Как и другие, традиционные инженерные дисциплины, разработка программного обеспечения имеет дело с проблемами качества, стоимости и надежности. Некоторые программы содержат миллионы строк исходного кода, которые, как ожидается, должны правильно исполняться в изменяющихся условиях. Сложность программного обеспечения сравнима со сложностью наиболее сложных из современных машин, таких как самолеты.

Разработка программного обеспечения может быть разделена на несколько разделов:

1. Требования для программного обеспечения: извлечение, анализ, спецификация, и ратификация требований для программного обеспечения.

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

3. Инженерия программного обеспечения: постройка программного обеспечения с помощью языков программирования.

4. Тестирование ПО: поиск и исправление ошибок в программе.

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

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

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

8. Процесс разработки программного обеспечения: процесс построения программного обеспечения горячо обсуждается среди практиков, основными парадигмами считаются agile или waterfall.

9. Инструменты разработки программного обеспечения, см. CASE: методика оценки сложности системы, выбора средств разработки и применения программной системы.

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

Участники процесса разработки программного обеспечения:

- пользователь;

- заказчик;

- исполнитель.

Проблемы разработки программного обеспечения:

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

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

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

- Недостаток трассировки.

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

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

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

- Отсутствие гарантий качества и надежности программ из-за отсутствия гарантий отсутствия ошибок в программах вплоть до формальной сдачи программ заказчикам.

Данная программа, которая указана на экране называется «Программное обеспечение, реализующее математический аппарат теории игр». Эта программа помогает нам решить конфликтную ситуацию, в которой сталкиваются интересы двух или более сторон преследующие различные цели. Программа состоит из «игровой матрицы» и «результатов расчетов». В «игровую матрицу» входят стратегии игроков. Три максимальным количеством стратегий, которые может рассчитать программа. Игрок - одна из сторон в игровой ситуации. Стратегия игрока - его правила действия в каждой из возможных ситуаций игры. Каждый игрок имеет свою стратегию, она может привести к выигрышу или проигрышу в зависимости от поведения игроков. Выигрыш или проигрыш сторон оценивается численно, другие случаи в теории игр не рассматриваются, хотя не всякий выигрыш в действительности можно оценить количественно. В «результате расчетов» можно рассчитать стратегии игроков и цену игры. Чистая цена игры н - цена данной игры, если нижняя и верхняя ее цены совпадают. В этом случае игра называется игрой с седловой точкой. Если получена седловая точка, то это означает, что имеются невыгодные стратегии, от которых следует отказываться. При отсутствии седловой точки можно получить две оптимальные смешанные стратегии.

В верхнем левом углу есть «справка» программы и «о программе».

Вывод

В выводе хочется отметить, что теория игр является результатом математизации целого ряда отраслей науки. В процессе становления конкретного понятия игры происходит формализация конфликта, благодаря которой изменяется понятийное содержание теории игр. Это изменение происходит как процесс конкретизации, «обогащения» основного понятия игры и требует анализа и модификации всей понятийной системы теории игр. Приоритет содержательного над формальным не сводится только к тому, что содержательные идеи и представления об игре предшествуют формальному исследованию конфликта. Формальное предполагает содержательное также в качестве средства построения и исследования своих собственных дедуктивных возможностей. Тут уже содержательное выступает своеобразным эталоном, от степени соответствия которому зависят в значительной мере достоинства формализованной теории игр. Теория игр на сегодняшний день представляет собой сеть различных классов теоретико-игровых моделей и принципов

Список использованных источников

1. Х. Таха Т24 «Введение в исследование операций»: В 2-х книгах, Кн.2. Пер. с англ.-М.: Мир,1985.-496 с.,ил.

2. Э.Г. Давыдов Д13 «Исследование операций»: Учеб.пособие для студентов вузов.-М.: Высш.шк., 1990.-383 с.: ил.

3. И.Л. Калихман К17 «Сборник задач по математическому программированию». Изд. 2-е, доп. и перераб. М., «Высш. школа»,1975.-270с. с ил.

4. Г.Г. Рапаков, С.Ю. Ржеуцкая Р23 «Turbo Pascal для студентов и школьников».- Спб.: БХВ-Петербург, 2003.-352с.: ил.

5. Е.С. Вентцель «Элементы теории игр». Изд.2 - М.,Физматгиз,1961.68 стр. с черт.

6. Ю.В. Чуев «Исследование операций в военном деле» - М.: Воениздат., 1970.-256с.

7. Теория игр - Википедия ru.wikipedia.org

8. Теория игр - Е.С.Вентцель-pasadvice.narod.ru

Приложение А

Листинг обучающей программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, Spin, Buttons, Menus;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

SG1: TStringGrid;

Label1: TLabel;

Label2: TLabel;

SE1: TSpinEdit;

Label3: TLabel;

BitBtn1: TBitBtn;

GroupBox2: TGroupBox;

Label4: TLabel;

Label5: TLabel;

SG2: TStringGrid;

Label6: TLabel;

MainMenu1: TMainMenu;

NNN1: TMenuItem;

NNN2: TMenuItem;

procedure SE1Change(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure NNN1Click(Sender: TObject);

procedure NNN2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i,j,Nmax,Nmin : integer;

m,mat : array[1..20,1..20] of real;

maxmin, minmax,x : array[1..20] of real;

max,min : real;

n,k,n1,k1 : integer;

r,s : real;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.SE1Change(Sender: TObject);

begin

SG1.ColCount:=SE1.Value+1;

SG1.RowCount:=SE1.Value+1;

// SG1.Repaint;

for i:=1 to SE1.value do begin

SG1.Cells[0,i]:='A('+IntToStr(i)+')';

SG1.Cells[i,0]:='B('+IntToStr(i)+')';

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

SG1.Cells[1,1]:='10';

SG1.Cells[1,2]:='12';

SG1.Cells[1,3]:='21';

SG1.Cells[2,1]:='18';

SG1.Cells[2,2]:='9';

SG1.Cells[2,3]:='13';

SG1.Cells[3,1]:='5';

SG1.Cells[3,2]:='20';

SG1.Cells[3,3]:='14';

for i:=1 to SE1.value do begin

SG1.Cells[0,i]:='A('+IntToStr(i)+')';

SG1.Cells[i,0]:='B('+IntToStr(i)+')';

end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Label6.Visible:=False;

Label5.Caption:='Оптимальные стратегии: А(';

Label4.Visible:=False;

Label5.Visible:=False;

for i:=1 to SE1.Value do for j:=1 to (SE1.Value) do m[j,i]:= StrToFloat(SG1.Cells[i,j]);

for i:=1 to SE1.Value do begin

maxmin[i]:=m[i,1];

minmax[i]:=m[i,1];

for j:=1 to SE1.Value do begin

if m[i,j]<maxmin[i] then maxmin[i]:=m[i,j];

if m[j,i]>minmax[i] then minmax[i]:=m[j,i];

end;

end;

max:=maxmin[1];

min:=minmax[1];

for i:=1 to SE1.Value do begin

if maxmin[i]>=max then begin

max:=maxmin[i];

Nmax:=i;

end;

if minmax[i]<=min then begin

min:=minmax[i];

Nmin:=i;

end;

end;

if max=min then begin

Label4.Visible:=True;

Label5.Caption:=Label5.Caption+IntToStr(Nmax)+'), B('+ IntToStr(Nmin)+')';

Label5.Visible:=True;

for i:=1 to (SE1.Value+1) do SG2.Cells[1,i-1]:='';

Exit;

end;

for i:=1 to SE1.Value do for j:=1 to SE1.Value do mat[i,j]:=m[j,i];

for i:=1 to (SE1.Value) do mat[i,(SE1.Value+1)]:=-1;

for i:=1 to (SE1.Value) do mat[i,(SE1.Value+2)]:=0;

for i:=1 to (SE1.Value) do mat[(SE1.Value+1),i]:=1;

mat[(SE1.Value+1),(SE1.Value+2)]:=1;

mat[(SE1.Value+1),(SE1.Value+1)]:=0;

n:=SE1.Value+1; n1:=n+1;

for k:=1 to n do begin

k1:=k+1;

s:=mat[k,k];

j:=k;

for i:=k1 to n do begin

r:=mat[i,k];

if abs(r)>abs(s) then begin

s:=r;

j:=i

end;

end;

if s=0 then exit;

if j<>k then for i:=k to n1 do begin

r:=mat[k,i];

mat[k,i]:=mat[j,i];

mat[j,i]:=r

end;

for j:=k1 to n1 do mat[k,j]:=mat[k,j]/s;

for i:=k1 to n do begin

r:=mat[i,k];

for j:=k1 to n1 do mat[i,j]:=mat[i,j]-mat[k,j]*r;

end;

end;

if s<>0.0 then for i:=n downto 1 do begin

s:=mat[i,n1];

for j:=i+1 to n do s:=s-mat[i,j]*x[j];

x[i]:=s;

end;

for i:=1 to (SE1.Value+1) do begin

if x[i]<0 then begin

Label6.Visible:=True;

Exit;

end;

end;

for i:=1 to (SE1.Value) do SG2.Cells[0,i-1]:='Cтратегия '

+IntToStr(i);

SG2.Cells[0,SE1.Value]:='Цена игры';

for i:=1 to (SE1.Value+1) do SG2.Cells[1,i-1]:=FloatToStr(Round(x[i]*100)/100);

end;

procedure TForm1.NNN1Click(Sender: TObject);

begin

Form2.show;

end;

procedure TForm1.NNN2Click(Sender: TObject);

begin

Form3.Show;

end;

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.