Создание алгоритмов дискретной математики с помощью программы
Характеристика программы, реализующей топологическую сортировку и вычисление цепных дробей. Анализ изучения алгоритмов решения задач. Сущность исследования основных компонентов Windows Form. Особенность достоинств и недостатков системы программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.02.2015 |
Размер файла | 80,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КУРСОВАЯ РАБОТА
По дисциплине «Программирование»
На тему: «Создание алгоритмов дискретной математики с помощью программы»
MICROSOFT VISUAL STUDIO 2010, ФОРМА, STRING, LABEL, BUTTON, UNICODE, TOOLSTRIP, MENUSTRIP, COMBOBOX, CHECKBOX
В данной курсовой работе рассмотрены вопросы решения по задачам и алгоритмам дискретной математики. Были рассмотрены такие темы как: «Топологическая сортировка» и «Цепные дроби».
Основными моментами проведённого исследования были:
– изучение алгоритмов решения задач;
– изучение основных компонентов С# Windows Form;
– создание приложения на основе полученных данных.
Проделанная работа даст представление о способах решения приведенных задач и их наглядной реализации.
Содержание
Введение
1. Нормативные ссылки
2. Постановка задачи
2.1 Цепные дроби
2.2 Топологическая сортировка
Заключение
Список используемых источников
Приложения
Введение
Топологическая сортировка -- упорядочивание вершин бесконтурного ориентированного графа согласно частичному порядку, заданному ребрами орграфа на множестве его вершин.
При помощи топологической сортировки строится корректная последовательность выполнения действий, всякое из которых может зависеть от другого: последовательность прохождения учебных курсов студентами, установки программ при помощи пакетного менеджера, сборки исходных текстов программ при помощи Makefile'ов.
Можно построить список отображения объектов в изометрической проекции зная парные порядковые отношения между объектами (какой из двух объектов должен быть прорисован раньше).
Цепная дробь (или непрерывная дробь) -- это математическое выражение, где a0 есть целое число и все остальные an натуральные числа (положительные целые). Любое вещественное число можно представить в виде цепной дроби (конечной или бесконечной). Число представляется конечной цепной дробью тогда и только тогда, когда оно рационально. Число представляется периодической цепной дробью тогда и только тогда, когда оно является квадратичной иррациональностью.
1. Нормативные ссылки
В данной пояснительной записке использованы ссылки на следующие стандарты.
ГОСТ Р 50739-95 Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования
ГОСТ 2.105-95 Общие требования к текстовым документам
ГОСТ 2.301-68 Единая система конструкторской документации. Форматы
ГОСТ 7.32-2001 СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления
ГОСТ 7.1-2003 СИБИД. Библиографическая запись. Библиографическое описание документа. Общие требования и правила составления
ГОСТ 7.80-2000 СИБИД. Библиографическая запись. Заголовок. Общие требования и правила составления
ГОСТ 19.701-90 СТД. (ИСО 5807-85) ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения
ГОСТ 34.601-90 Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания
ОК 015-94 (МК002-97) Общероссийский классификатор единиц измерения
МР КубГТУ 4.4.3-2004 СМК. УМД. Выпускные квалификационные работы
2. Постановка задачи
Необходимо написать программу реализующую топологической сортировки и вычисления цепных дробей, используя C#.
Используя язык высокого уровня С#, создать приложение, позволяющее обычному пользователю справиться с такой задачей, как вычисление цепной дроби. Для облегчения использования приложения, разработать доступный пользователю интерфейс, содержащий следующие средства:
- средства отображения информации, отображаемую информацию, форматы и коды;
- командные режимы, язык «пользователь - интерфейс»;
- устройства и технологии ввода данных;
- диалоги, взаимодействие и транзакции между пользователем и компьютером, обратную связь с пользователем;
- поддержку принятия решений в конкретной предметной области;
- порядок использования программы и документацию на неё.
Технология разработки приложения
Чтобы создать приложение, следует:
1) Открыть Microsoft Visual Studio 2010.
2) Выбрать пункт меню «Создать проект».
3) Выбрать в шаблоне С# «Приложение Windows Form» и нажать «ОК».
4) В открывшемся окне формы переносим компоненты из Панели элементов:
а) ComboBox - c помощью этого элемента управления пользователь может вводить и изменять текст.
б) TabControl - обрабатывает и отображает для пользователя соответствующую коллекцию вкладок, содержащих элементы управления и компоненты.
в) MenuStrip - предоставляет панели вкладок и другие элементы интерфейса пользователя.
г) Button - при нажатии возникает событие.
д) Label - предоставляет элементу управления текс описания либо информацию во время выполнения.
е) CheckBox - Представляет элемент управления - флажок, который пользователь может устанавливать и снимать.
5) Нажать клавишу F5 и начать компиляцию программы.
6) Программа готова к использованию.
Описание программы
2.1 Цепные дроби
Обработка значений происходит так:
static double Function(int x, int n, int max)
{
if (n == max) return n + x;
if (n == 1) return x * 1.0 / (n + x * 1.0 / Function(x, n + 1, max));
return n + (x * 1.0 / Function(x, n + 1, max));
}
Задается числитель и знаменатель:
int n=50, ch=0, zn=0;
int[] h = new int[n];
int[] z = new int[n];
int[] v = new int[n];
Console.WriteLine("Введите числитель: ");
ch= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель: ");
zn=Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.Write("Значение дроби: {0}/{1} = ( ", ch, zn);
Подсчет и запись в консоли цепной дроби происходит следующим образом:
for (int i=0; i<n; i++)
{
h[0] = ch;
z[0] = zn ;
if (z[i] == 0) break;
else
{
v[i] = h[i] / z[i];
Console.Write(v[i]+" ");
z[i + 1] = h[i] - z[i] * v[i];
h[i + 1] = z[i];
}
}
Console.Write(")");
Console.ReadKey();
}
}
}
2.2 Топологическая сортировка
Обход графа с целью топологической сортировки:
public static void DFS(int u, int[,] c, int[,] g, int n)
{
int t = 0;
for (int i = 0; i < n; i++)
{
if (g[u, i] == 1 && c[u, i] == 0)
{
Покраска вершины в серый цвет, это означает, что вершина посещена.
c[u, i] = 1; //grey
t = u;
u = i;
i = t;
DFS(u, c, g, n);
}
if (g[u, i] == 1 && c[u, i] == 1)
{
Покраска в черный цвет.
c[u, i] = 2; //black
Console.WriteLine("(" + (u+1) + ", " + (i+1) + ")");
t = u;
if(i<n-1)
u = i+1;
i = t;
DFS(u, c, g, n);
}
}
}
Массив вершин и цветов:
int n = 4, u = 0;
int[,] g = new int[n, n];
int[,] c = new int[n, n];
Матрица смежности графа.
g[0, 0] = 0; g[0, 1] = 0; g[0, 2] = 0; g[0, 3] = 1;
g[1, 0] = 0; g[1, 1] = 0; g[1, 2] = 0; g[1, 3] = 1;
g[2, 0] = 0; g[2, 1] = 0; g[2, 2] = 0; g[2, 3] = 1;
g[3, 0] = 1; g[3, 1] = 1; g[3, 2] = 1; g[3, 3] = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(g[i, j] + " ");
Console.WriteLine();
}
Console.WriteLine();
DFS(u, c, g, n);
Console.ReadKey();
}
}
}топологический сортировка дробь алгоритм
Руководство пользователя
Для работы с программой по решению задач и алгоритмов дискретной математики необходимо иметь минимальные требования, указанные ниже.
Компьютер:
- процессор Intel Pentium 4 (или выше) AMD Duron (или выше);
- оперативная память 512 Mb;
- операционная система Windows XP/Vista/7/8;
- клавиатура.
Программное обеспечение:
- Microsoft Visual Studio 2010 Ultimate.
Как пользоваться программой:
1) Откройте программу, выполняющую топологическую сортировку. Окно программы изображено на рисунке 1.
Рисунок 1 - Окно программы топологической сортировки
2) В открывшемся окне можно увидеть исходную матрицу и обход графа
3) Откройте программу вычисления цепных дробей. Окно программы изображено на рисунке 2.
Рисунок 2 - Окно программы вычисления цепных дробей
1) Пример работы программы вычисления цепных дробей изображен на рисунке 3.
Рисунок 3 - Пример вычисления цепной дроби
Заключение
В ходе выполнения курсовой работы были изучены следующие вопросы:
– изучение функционала C#;
– их особенности и свойства;
– изучение основных компонентов С# ConsoleApplication;
Достоинствами данной программы являются:
- минимальные системные требования;
- простота использования программы и удобство интерфейса пользователя.
Недостатками данной программы являются:
- отсутствие встроенных плагинов;
- открытый код программы;
- отсутствие дополнительных элементов управления;
- малое функционирование программы.
Была составлена программа для топологической сортировки графа, а также для вычисления церных дробей. После проведённых тестов, был сделан вывод, что программы работают корректно, следовательно, поставленная задача выполнена.
Список используемых источников
1) Т.А. Павловская. C#.Программирование на языке высокого уровня. - СПб: Питер, 2009 - 432 с.
2) Эндрю Троелсен. Язык программирования C# 2010 и платформа. NET 4.0. - М.: Вильямс, 2011. - 455 с.
3) Стиллмен Э. Изучаем C#. - Волгоград: Росмашпечать, 2010 - 456 с.
4) Культин Н.Б. Microsoft Visual C# в задачах и примерах. - СПб.:БВХ-Петербург, 2009 - 320 с.
5) Климов А. C# Советы программистам. - СПб.:БВХ-Петербург, 2011 -535 с.
Приложения
Приложение А
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace цеп
{
class Program
{
static double Function(int x, int n, int max)
{
if (n == max) return n + x;
if (n == 1) return x * 1.0 / (n + x * 1.0 / Function(x, n + 1, max));
return n + (x * 1.0 / Function(x, n + 1, max));
}
static void Main(string[] args)
{
int n = 50, ch = 0, zn = 0;
int[] h = new int[n];
int[] z = new int[n];
int[] v = new int[n];
Console.WriteLine("Введите числитель: ");
ch = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель: ");
zn = Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.Write("Значение дроби: {0}/{1} = ( ", ch, zn);
for (int i = 0; i < n; i++)
{
h[0] = ch;
z[0] = zn;
if (z[i] == 0) break;
else
{
v[i] = h[i] / z[i];
Console.Write(v[i] + " ");
z[i + 1] = h[i] - z[i] * v[i];
h[i + 1] = z[i];
}
}
Console.Write(")");
Console.ReadKey();
}
}
}
Приложение Б
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static void DFS(int u, int[,] c, int[,] g, int n)
{
int t = 0;
for (int i = 0; i < n; i++)
{
if (g[u, i] == 1 && c[u, i] == 0)
{
c[u, i] = 1; //grey
t = u;
u = i;
i = t;
DFS(u, c, g, n);
}
if (g[u, i] == 1 && c[u, i] == 1)
{
c[u, i] = 2; //black
Console.WriteLine("(" + (u+1) + ", " + (i+1) + ")");
t = u;
if(i<n-1)
u = i+1;
i = t;
DFS(u, c, g, n);
}
}
}
static void Main(string[] args)
{
int n = 4, u = 0;
int[,] g = new int[n, n];
int[,] c = new int[n, n];
g[0, 0] = 0; g[0, 1] = 0; g[0, 2] = 0; g[0, 3] = 1;
g[1, 0] = 0; g[1, 1] = 0; g[1, 2] = 0; g[1, 3] = 1;
g[2, 0] = 0; g[2, 1] = 0; g[2, 2] = 0; g[2, 3] = 1;
g[3, 0] = 1; g[3, 1] = 1; g[3, 2] = 1; g[3, 3] = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(g[i, j] + " ");
Console.WriteLine();
}
Console.WriteLine();
DFS(u, c, g, n);
Console.ReadKey();
}
}
}
Размещено на Allbest.ru
Подобные документы
Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.
контрольная работа [831,0 K], добавлен 24.11.2013Анализ структуры топологической сортировки в программной среде. Метод топологической сортировки с помощью обхода в глубину. Программа, реализующая топологическую сортировку методом Демукрона. Создание карты сайта и древовидная система разделов.
курсовая работа [1,3 M], добавлен 22.06.2011Изучение особенностей создания алгоритмов вычислительных задач. Визуальное программирование стандартных компонентов среды программирования Delphi. Технология создания компонента Delphi для решения производственной задачи. Выполнение блок-схемы алгоритма.
курсовая работа [638,0 K], добавлен 30.01.2015Особенности разработки и реализации обучающей программы и схемы алгоритмов на языке программирования С++. Понятие равномерной и неравномерной дискретизации. Представление информации (составление кода) в виде таблицы перекодировки или многочлена.
курсовая работа [704,6 K], добавлен 06.03.2013Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Способы организации вычислительного процесса в системах с несколькими процессорами. Разработка программы на основе алгоритмов мультипроцессорных систем при пакетной обработке задач. Вычисление основных показателей эффективности для каждого алгоритма.
курсовая работа [102,3 K], добавлен 21.06.2013Создание блок-схемы алгоритма и реализующей его программы, снабженных пояснениями, для решения задач. Реализация программы в среде Delphi как проекта консольного приложения. Основные алгоритмические структуры, соответствующие операторы для их реализации.
контрольная работа [447,4 K], добавлен 08.10.2012Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.
курсовая работа [1,7 M], добавлен 05.01.2015Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Реализация программы, созданной средствами языка C#. Предназначение Windows-приложения для решения комплекса задач. Определение состава форм с графиком функции. Вычисление коэффициентов полинома. Создание текстового поля для введения корней многочлена.
курсовая работа [234,8 K], добавлен 13.11.2016