Разработка алгоритмов различной структуры и их реализация с помощью компьютерных программных средств
Понятия алгоритма и его свойства, способы и виды описания. Линейный, условный, цикл. Программная среда Basic-256: история, используемые программные компоненты. Задача на нахождение минимального элемента массива и количество элементов, равных минимальному.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.05.2020 |
Размер файла | 389,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Муромский институт (филиал)
федерального государственного бюджетного образовательного учреждения высшего образования
«Владимирский государственный университет
Имени Александра Григорьевича и Николая Григорьевича Столетовых»
(МИ ВлГУ)
Курсовая работа
по Теорема алгоритмов
Тема: Разработка алгоритмов различной структуры и их реализация с помощью компьютерных программных средств.
Руководитель
Кулигин М.Н.
Студент ПКС-118
Андрианов А.Е.
Муром 2019
Содержание
Введение
1. Основные теоретические сведения
1.1 Понятия алгоритма и его свойства
1.2 Способы описания алгоритмов
1.3 Виды алгоритмов
1.3.1 Линейные
1.3.2 Условные
1.3.3 Цикл
2. Описание программной среды Basic-256
2.1 История
2.2 Используемые программные компоненты
3. Выполнение задач на курсовую работу
3.1 Задание №1
3.1.1 Постановка задачи
3.1.2 Код программы на языке Basic-256 с комментариями
3.1.3 Переменные и их значения
3.1.4 Словесное описание кода
3.1.5 Блок-схема программы
3.1.6 Руководство пользователя
3.2 Задача №2
3.2.1 Постановка задачи
3.2.2 Код программы на языке Basic-256 с комментариями
3.2.3 Переменные и их значения
3.2.4 Словесное описание кода
3.2.5 Блок-схема программы
3.2.6 Руководство пользователя
Заключение
Список используемой литературы
Введение
Актуальность темы
На данный момент благодаря бурному развитию информационных и машинных технологий такая тема как “Алгоритм” начинает набирать популярность, ведь недостаточно лишь иметь машину, состоящую из кусков железа, нужно сделать так, чтобы она могла быть автоматизированной и почти независимой от людей, которая способна была бы выполнять определённую задачу без вмешательства человека. Сейчас идёт активная автоматизация практических всех частей жизнедеятельности человека и появляется актуальность темы создания алгоритмов, так как машины не могут понимать наш язык и для этого существуют определённые языка для написания этого самого алгоритма.
Цель курсовой работы
Цель курсовой работы состоит в том, чтобы закрепить пройденный материал по дисциплине “Теория алгоритмов”. Разобрать теоретическую часть данной работы, структуру и виды алгоритмов, описанных на разных языках.
Задача на курсовую работу
В соответствии с заданием на КР в данной работе требуется выполнить две задачи.
1. Задан двумерный массив целых чисел(N*M). Заполнить его случайными целыми числами и вывести на экран в виде таблицы. Найти минимальный элемент массива и количество элементов, равных минимальному. Размер массива N=5 и M=4 результаты работы программы в текстовом окне среды Basic-256: исходным массив, минимальный элемент массива и количество элементов, равных минимальному.
2. Для нелинейного уравнения: 2^x=4*x+3 произвести графическим способом отделение его корней и уточнить их с помощью разработанных алгоритмов и программ (с заданной абсолютной погрешностью Eps). Отделение корней уравнения это выделение таких отрезков [a,б], в каждом из которых находится только один корень уравнения. Программу протестировать с различными значениями Eps.
Согласно заданию, требуется провести анализ поставленных задач и на основании проведённого анализа разработать для каждой задачи математическую модель её решения и блок-схему алгоритма её решения.
Далее необходимо написать и отладить текст программы на языке среды программирования Basic-256. Разработанную программу протестировать для различных значений исходных данных и проанализировать полученные результаты тестирования.
В соответствии с заданием требуется также для каждой разработанной программы написать руководство пользователя.
Последний раздел пояснительной записки должен содержать выводы по курсовой работе.
Задача на эту работу состоит в том, чтобы понять и разработать самому учащемуся свою программу, провести детальный и подборный разбор написанного кода. Продемонстрировать описание программы написанной в среде программирования Basic-256 на различных языках, а также провести показ работы этой же программы для разных исходных данных и указать плюсы и минусы данного алгоритма с подробным разбором каждой переменной.
1. Основные теоретические сведения
1.1 Понятие алгоритма и его свойства
Алгоритм характеризуется следующими свойствами [1]: дискретностью, массовостью, определённостью, результативностью, формальностью.
Дискретность (разрывность -- противоположно непрерывности) -- это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий («Делится на шаги»). Массовость -- применимость алгоритма ко всем задачам рассматриваемого типа, при любых исходных данных. Определённость (детерминированность, точность) - свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определён и не допускать различных толкований; также строго должен быть определён порядок выполнения отдельных шагов.
Результативность -- свойство, состоящее в том, что любой алгоритм должен завершаться за конечное (может быть очень большое) число шагов. Вопрос о рассмотрении бесконечных алгоритмов остаётся за рамками теории алгоритмов. Формальность -- это свойство указывает на то, что любой исполнитель, способный воспринимать и выполнять инструкции алгоритма, действует формально, т.е. отвлекается от содержания поставленной задачи и лишь строго выполняет инструкции.
Блок-схема алгоритма решения задачи, программный способ записи алгоритмов
Исключительно важно использовать язык блок-схем при разработке алгоритма решения задачи. Решение одной и той же задачи может быть реализовано с помощью различных алгоритмов, отличающихся друг от друга как по времени счета и объёму вычислений, так и по своей сложности. Запись этих алгоритмов с помощью блок-схем позволяет сравнивать их, выбирать наилучший алгоритм, упрощать, находить и устранять ошибки.
Отказ от языка блок-схем при разработке алгоритма и разработка алгоритма сразу на языке программирования приводит к значительным потерям времени, к выбору неоптимального алгоритма. Поэтому необходимо изначально разработать алгоритм решения задачи на языке блок-схем, после чего алгоритм перевести на язык программирования.
При разработке алгоритма сложной задачи используется метод пошаговой детализации. На первом шаге продумывается общая структура алгоритма без детальной проработки отдельных его частей. Блоки, требующие детализации, обводятся пунктирной линией и на последующих шагах разработки алгоритма продумываются и детализируются.
В процессе разработки алгоритма решения задачи можно выделить следующие этапы:
* Этап 1. Математическое описание решения задачи.
* Этап 2. Определение входных и выходных данных.
* Этап 3. Разработка алгоритма решения задачи.
Способ записи алгоритмов с помощью блок-схем нагляден и точен для понимания сути алгоритма, тем не менее, алгоритм предназначен для исполнения на компьютере, а язык блок-схем компьютер не воспринимает. Поэтому алгоритм должен быть записан на языке, понятном компьютеру с абсолютно точной и однозначной записью команд.
Программный способ записи алгоритма - это запись алгоритма на языке программирования, позволяющем на основе строго определенных правил формировать последовательность предписаний, однозначно отражающих смысл и содержание алгоритма, с целью его последующего исполнения на компьютере.
1.2 Способы описания алгоритмов
Существуют следующие способы описания алгоритма: словесное описание, псевдокод, блок-схема, программа.
Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии которому данный прибор должен использоваться.
Плюсы данного метода:
1. Прост в написании самим автором
Не требует особых знаний самим читателем алгоритма
Не ограничен какими-либо правилами написания
Минусы данного метода:
1. Возможные ограниченные способности языка у самого читателя
2. Неоднозначность самого написанного кода
3. Данный способ не имеет широкого распространения
Пример:
Сделать два шага в лево
Повернуть направо
Пройти прямо
Код -- это описание структуры алгоритма на строго заданном и понятном для машины коде, в таком виде, алгоритм записывается с помощью определённой среды на определённом языке и выводит результат работы алгоритма на экран пользователя в этой же среде.
Плюсы данного метода:
Есть строгое определение переменных и команд
Точное определение конечного результата
Минусы данного метода:
Нужна инструкция к данному алгоритму
Возможность появления “Зацикливания”
Требует от пользователя некоторых знаний в области этой среды языка
Пример:
Возьмём пример из среды программирования Basic-256
Input N
F=0
For I=1 to 10 step 1
F=F+N
Next I
Print “Ответ=”+F
End
Блок-схема -- описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определённая геометрическая фигура или связанная линиями совокупность фигур.
Пример для данного вида можно рассмотреть на рисунке №1
1.3 Виды алгоритмов
Существуют несколько видов алгоритмов независимо от их описания и той среды в которой они были разработаны, сейчас мы рассмотрим парочку из них:
1.3.1 Линейные
Первый тип алгоритмов называют “Линейными”
Линейным принято называть вычислительный процесс, в котором операции выполняются последовательно, в порядке их записи. Каждая операция является самостоятельной, независимой от каких-либо условий.
Данный алгоритм является наиболее простым и понимаемый, как и для написания, так и для прочтения. Такие алгоритмы хоть и являются простыми, но и пользуются малым спросом, так как им мало где можно найти должное применение и работают они только с помощью самого человека, который запустит этот алгоритм. Пример линейного алгоритма показан на Рис. 1.
Начало алгоритма. Ввод значений длин катетов a и b. Вычисление длины гипотенузы с по формуле: Вывод значения длины гипотенузы. Конец алгоритма |
На данной схеме цифрами указаны номера элементов алгоритма, которые соответствуют номерам пунктов словесного описания алгоритма. |
Рис. 1. - Линейный алгоритм вычисления гипотенузы прямоугольного треугольника по известным значениям длин его катетов a и b
1.3.2 Условные
Второй тип алгоритма называют “Ветвящейся”
Разветвляющейся (или ветвящейся) называется алгоритмическая конструкция, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных. При каждом конкретном наборе входных данных разветвляющийся алгоритм сводится к линейному. Различают неполное (если -- то) и полное (если -- то -- иначе) ветвления. Полное ветвление позволяет организовать две ветви в алгоритме (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран. Пример данного типа алгоритма показан на рис. 2. В блок-схеме алгоритма решения задачи (рис.2) цифрами указаны номера элементов алгоритма, которые соответствуют номерам шагов словесного описания алгоритма. В этом алгоритме имеются три ветви решения задачи:
-первая: это элементы 1, 2, 3, 4, 8.
-вторая: это элементы 1, 2, 3, 5, 6, 8
-третья: это элементы 1, 2, 3, 5, 7, 8.
Выбор ветви определяется значениями x и y в элементах 3 и 5, которые являются условиями, определяющими порядок выполнения элементов алгоритма. Если условие (равенство), записанное внутри символа «решение», выполняется при введенных значениях x и y, то следующими выполняется элементы 4 и 8.
Это следует из того, что они соединены линией с надписью «да» и направление (последовательность) вычислений обозначена стрелочкой. Если условие в элементе 3 не выполняется, то следующим выполняется элемент 5.
Он соединен с элементом 3 линией с надписью «нет».
Если условие, записанное в элементе 5, выполняется, то выполняется элементы 6 и 8, в противном случае выполняются элементы 7 и 8.
Рис. 2 - Блок-схема алгоритма вычисления наибольшего числа из двух чисел x и y
1.3.3 Цикл
Третий тип алгоритмов называют “Циклическими”
Циклическим называется процесс многократного повторения некоторого участка вычислений при изменении хотя бы одной из входящих в него величин. Повторяющийся участок вычисления называется циклом. Цикл организуют по определенным правилам. Циклический алгоритм состоит из подготовки цикла, тела цикла, условия продолжения цикла. В подготовку цикла входят действия, связанные с заданием исходных значений для параметра цикла (начальное и конечное значения, шаг параметра цикла). Иногда при подготовке цикла задаются начальные значения и другим величинам, использующимся в цикле. Операции, осуществляемые в цикле, составляют тело цикла. В тело цикла входят многократно повторяющиеся действия для вычисления искомых величин; подготовка следующего значения параметра цикла; подготовка других значений, необходимых для повторного выполнения действий в теле цикла. В условии продолжения цикла определяется необходимость дальнейшего выполнения повторяющихся действий (тела цикла). Если параметр цикла превысил конечное значение, то выполнение цикла должно быть прекращено.
При разработке алгоритма циклической структуры выделяют следующие понятия: параметр цикла - величина, с изменением которой связано многократное выполнение цикла; начальное и конечное значения параметров цикла; шаг цикла - значение, на которое изменяется параметр цикла при каждом повторении. Зависимость, связывающая текущее и предыдущее значения параметра цикла, определяет закон изменения параметра цикла.
Зависимость, предписывающая повторение цикла, либо выход из него, называется условием повторения цикла. Все циклические процессы по признаку определения количества повторений разделяются на два класса.
Арифметическим называется циклический процесс, число повторений в котором может быть определено заранее, т.е. не зависит от результатов счёта в теле цикла.
Итерационным является циклический процесс, число повторений в котором зависит от результатов вычислений в теле цикла и не может быть определено заранее. Существуют так же циклы, составленные с помощью “условного” оператора, таких циклов всего 2, это цикл с постусловием и цикл с предусловием.
2. Описание программной среды Basic-256
BASIC-256 -- открытая реализация языка программирования Бейсик и одновременно -- интегрированная среда разработки для него. Ориентирована на обучение программированию школьников. Имеет встроенный графический режим и русскоязычную документацию.
BASIC-256 является кроссплатформенной программой, имеются версии для Linux, FreeBSD[4] и Windows, готовится версия для MacOSX.
2.1 История
Разработка BASIC-256 начата в 2006 году под названием kidbasic, начиная с версии 0.8 (9 ноября 2006 года) проект получил своё текущее название.
2.2 Используемые программные компоненты
Qt -- для отображения графического интерфейса.
Flex -- генератор лексических анализаторов.
Bison -- генератор синтаксических анализаторов.
SQLite -- реляционная база данных.
eSpeak (зависимости: PortAudio (англ.), JACK) -- синтезатор речи.
libSDL_mixer -- библиотеки работы со звуком для SimpleDirectMediaLayer[5].
3. Выполнение задач на курсовую работу
3.1 Задание №1
алгоритм программный среда массив
Задан двумерный массив целых чисел(N*M). Заполнить его случайными целыми числами и вывести на экран в виде таблицы. Найти минимальный элемент массива и количество элементов, равных минимальному. Размер массива N=5 и M=4 результаты работы программы в текстовом окне среды Basic-256: исходным массив, минимальный элемент массива и количество элементов, равных минимальному.
Формулировка задачи №1
Требуется разработать программу, для реализации следующих задач:
-Создать массив с определённым заданным размером 5 на 4
-Создать два цикла для столбцов и строк массива
-Сделать случайную генерацию чисел для данного массива в циклах
-Создать 1 условия по нахождению минимального элемента массива с буферной переменной для замены значения минимального элемента массива
-Создать 2 условие по нахождению равных чисел в массиве
-Создать счётчик для подсчёта количества элементов массива равных минимальному
-Вывести на экран пользователя следующие результаты: минимальный элемент в массиве и числа равных этому минимальному значению
Математический вид записи задания
Разработка блок-схемы алгоритма программы
Блок-схема для данной задачи
Рис. 3 - Блок-схема алгоритма для задачи №1
Описание действий для блок-схемы №1
Вводим исходные данные
2 - Создаём цикл для столбцов
3 - Создаём цикл для строк
4 - Заполняем массив случайными числами от 0 до 20
5 - Выводим элементы массива на экран пользователя
6 - Находим минимальный элемент массива
7 - В случае успеха присваиваем значение мин элемента буферной переменной L
8 - В случае неуспеха 1 условия проверяем равен ли наш элемент предыдущему
9 - В случае успеха 2 условия делаем счётчик +1
10 - Вывод двух переменных L и c для выполнения постановки условия задачи
Переменные и их назначение
L - Изменяемая переменная по нахождению минимального числа массива
C - счётчик одинаковых элементов массива
N - количество столбцов в массиве
M - количество строк в массиве
Код программы на языке Basic-256 с комментариями
Cls #Очищаем текстовую консоль
L=20 #максимальное значение числа для матрицы
c=0 #счётчик минимальных чисел
N=4 #столбцы матрицы
M=5 #строки матрицы
Dim A[N,M] #задаём сам двумерный цифровой массив
For i=0 To N-1 #задаём цикл для столбцов матрицы
For j=0 to M-1 #задаём цикл для строк матрицы
A [i, j] =int(rand*20) #задаём случайные элементы матрицы от 0 до 20
#вывод элементов массива на экран пользователя
print "A(";: PRINT i;: print ",";: print j;: print ")=";Print A[i,j]
#нахождение минимального числа
if A [i, j] <L then #находим минимальный элемент массива
L=A [i, j] #Обновляем минимальный элемент массива
Else #Оператор неудовлетворения условию задачи
#нахождение одинаковых минимальных чисел
If A [i, j]=L then #Делаем проверку условия для нахождения минимальных одинаковых чисел
c=c+1 #Делаем подсчёт минимальных чисел
endif #Конец условия по нахождению одинаковых минимальных чисел
endif #Конец условия по нахождению минимального числа
Next j #Шаг для строк матрицы
Next i #Шаг для столбцов матрицы
Print “Минимальное число массива равно” +L #минимальное число
Print “Количество чисел равных минимальному числу массива равно” +c #счётчик минимальных чисел
End #конец работы алгоритма
Словесное описание текстового кода
Очищаем текстовую консоль программы
Присваиваем переменной L значение 20
Присваиваем переменной c значение 0
Задаём переменной N количество столбцов матрицы 5
Задаём переменной M количество строк матрицы 4
Создаём двухмерный цифровой массив размером 5x4 с помощью команды DIM
Создаём цикл для подсчёта столбцов в массиве от 0 до N-1 и с шагом 1 с помощью команды FOR
Создаём цикл для подсчёта строк в массиве от 0 до M-1 и с шагом 1 с помощью команды FOR
Задаём случайные числа от 0 до 20 с помощью команды RAND
Выводим элементы массива на экран пользователя с помощью команды PRINT
С помощью условного оператора IF по условию задачи находим минимальное значение массива
В случае успеха присваиваем новое значение минимального элемента массива
В случае неуспеха переходим к следующему шагу
Создаём проверку условия с помощью условного оператора IF на одинаковые значения элемента массива
В случае успеха обновляем счётчик на +1
Конец условного оператора по нахождению одинаковых минимальных элементов массива
Конец условного оператора по нахождению минимального элемента массива
Обновляем шаг строки массива с помощью команды NEXT
Обновляем шаг столбца массива с помощью команды NEXT
Выводим на экран пользователя значение минимального элемента массива c помощью команды PRINT
Выводим на экран пользователя одинаковых минимальных элементов массива на экран пользователя с помощью команды PRINT
Конец алгоритма END
Руководство пользователя
В данной программе, описан массив, имеющий размер в виде 4 столбцов и 5 строк, он двухмерный и задаётся двумя целыми числами, которые нельзя изменить. Массив задаётся с помощью случайных генерируемых чисел, ограниченных в диапазоне от 0 до 20, числа являются целыми и не могут быть положительными, числа так же могут повторятся. В данной программе по условию задачи реализованы несколько условий для проверки:
a) Минимального числа в массиве;
б) Условие по нахождение чисел равных минимальному элементу массива.
Примечание: если в программе всего лишь 1 минимальное число и ему нет похожих, то программой предусматривается вывод результата “Количество чисел равных минимальному” как 0, если есть хотя бы одно схожее число, то данное значение будет равно 1 и более.
Конец алгоритма представляет собой вывод на экран пользователя следующих результатов: сам массив заполненный случайными числами в диапазоне от 0 до 20, минимальное число в массиве и числа равных минимальному элементу массива. Дляданной программе от пользователя требуется следующее: открыть программу в среде Basic-256, на панели инструментов нажать зелёную кнопку с надписью “Пуск”. Данная программа вручную осуществляет подсчёты и дальнейших действий от пользователя не требует.
3.2 Задача №2
Постановка задачи
Для нелинейного уравнения: 2^x=4*x+3 произвести графическим способом отделение его корней и уточнить их с помощью разработанных алгоритмов и программ (с заданной абсолютной погрешностью Eps). Отделение корней уравнения -- это выделение таких отрезков [a,б], в каждом из которых находится только один корень уравнения. Программу протестировать с различными значениями Eps.
Формулировка задачи №2
Требуется разработать программу, для реализации следующих задач:
-Использовать графическую среду Basic-256 для создания двух графиков
-Создать плоскую координату с осями x и y
-Отметить точку пересечения графиков
-Требуется задать погрешность и диапазон для старта работы программы
-Нахождение среднего значения в диапазоне
-Выразить x и провести табуляцию функции с подсчётом количества итераций
-Сделать постусловие с проверкой погрешности
-Вывести на экран пользователя следующие значения: сам полученный корень и количество итераций
Математический вид записи задания
Блок-схема программы
Рис. 4 - Блок-схема алгоритма для задачи №2
Описание действий для блок-схемы №1
1 - Ввод исходных данных
2 - Рассчитываем среднее значение диапазона для старта постусловия программы
3 - Выполняем табуляцию функции с подсчётом количества итераций
4 - Делаем проверку а погрешность с помощью постусловия
5 - Выводим две переменные x1 и n для выполнения условий задачи
Переменные и их назначение
B -максимальный диапазон графика
Eps -погрешность
n - счётчик итераций
x1 - изменяемая переменная с нахождением среднего диапазона
x0 - буферная переменная для сохранение предыдущего числа
Код программы на языке Basic-256 с комментариями
CLG #очистка графической консоли
graphsize 300,300 #задал размер окна вывода графики
Line 0,150,640,150 #задаём линию для координатной прямой
Line 150,0,150,400 #задаём линию для координатной прямой
#отметил точки на координатной прямой с шагом 1
#y+
Circle 150,140,1 #1
Circle 150,130,1 #2
Circle 150,120,1 #3
Circle 150,110,1 #4
Circle 150,100,1 #5
Circle 150,90,1 #6
Circle 150,80,1 #7
Circle 150,70,1 #8
Circle 150,60,1 #9
Circle 150,50,1 #10
Circle 150,40,1 #11
Circle 150,30,1 #12
Circle 150,20,1 #13
Circle 150,10,1 #14
Circle 150,0,1 #15
#y-
Circle 150,160,1 #-1
Circle 150,170,1 #-2
Circle 150,180,1 #-3
Circle 150,190,1 #-4
Circle 150,200,1 #-5
Circle 150,210,1 #-6
Circle 150,220,1 #-7
Circle 150,230,1 #-8
Circle 150,240,1 #-9
Circle 150,250,1 #-10
Circle 150,260,1 #-11
Circle 150,270,1 #-12
Circle 150,280,1 #-13
Circle 150,290,1 #-14
Circle 150,300,1 #-15
#x+
Circle 160,150,1 #1
Circle 170,150,1 #2
Circle 180,150,1 #3
Circle 190,150,1 #4
Circle 200,150,1 #5
Circle 210,150,1 #6
Circle 220,150,1 #7
Circle 230,150,1 #8
Circle 240,150,1 #9
Circle 250,150,1 #10
Circle 260,150,1 #11
Circle 270,150,1 #12
Circle 280,150,1 #13
Circle 290,150,1 #14
Circle 300,150,1 #15
#x-
Circle 140,150,1 #-1
Circle 130,150,1 #-2
Circle 120,150,1 #-3
Circle 110,150,1 #-4
Circle 100,150,1 #-5
Circle 90,150,1 #-6
Circle 80,150,1 #-7
Circle 70,150,1 #-8
Circle 60,150,1 #-9
Circle 50,150,1 #-10
Circle 40,150,1 #-12
Circle 30,150,1 #-13
Circle 20,150,1 #-14
Circle 10,150,1 #-15
Circle 0,150,1 #-16
fastgraphics #вывод статического изображения на экран пользователя
Colorred #задаём цвет линии наших графиков
forx = -2 to 6 step 0.001 #цикл для построения графика
y=2^x #задаём значения для первого графика
Plot 145+8*x,150-6*y #построение графика y=2^x
y=4*x+3 #задаём значения для второго графика
Plot 140-11*x,130+25*y #построение графика y=4*x+3
nextx #шаг цикла
Circle 146,143,3 #поставил точку, для показа где пересекается график
refresh #обновление рисунка в графической консоли
Cls #очистка текстовой консоли
A=-2 #минимальное диапазон графика
B=6 # максимальный диапазон графика
Eps=.0001 #погрешность
n=1 # начальное значение счётчика итераций
x1=(A+B)/2 #находим средний диапазон
Do #цикл с постусловием
x0=x1 #буферная переменная
x1=-((3-2^x0)/4) #с помощью преобразованной функции выражаем x и табулируем значении функции
n=n+1 #счётчик итераций
untilabs (x1-x0) <Eps #делаем проверку на погрешность
PRINT "Корень уравнения x1="+x1 #вывод результата на экран пользователя
PRINT "Количество итераций = "+n #вывод результата на экран пользователя
Словесное описание текстового кода
Используем команду CLS для очистки текстовой консоли
Задаём минимальное значение для нахождения среднего значения числа и присваиваем её значение переменной А
Задаём максимальное значение для нахождения среднего значение числа и присваиваем её значение переменной B
Задаём погрешность присваивая ей переменную Eps
Задаём счётчик итераций начиная с 1 и присваиваем её значение переменной
Задаём переменной x1 средний диапазон чисел от A до B
Задаём цикл с постусловием и пишем команду DO
Присваиваем значение x1 буферной переменной x0 для того чтобы предотвратить потерю предыдущего значения
Выражаем из неравенства x и решаем полученное выражение по нахождению корня
Делаем подсчёт количество итераций
Делаем проверку постусловия c с абсолютным значением выражения (x1-x0) с помощью команду UNTILABS и делаем проверку на погрешность
Выводим наш корень x1 через команду PRINT на экран пользователя
Выводим количество итераций n на экран пользователя с помощью команды PRINT
Руководство пользователя
Данная программа рассчитана для нахождения корня в определённом промежутке от -2 до 6, с заданной определённой погрешностью Eps следующего выражения: 2^x=4*x+3.
Для данной программы от пользователя ничего не требуется кроме запуска самого алгоритма при открытии программы в среде Basic-256 и в панели инструментов нажать на зелёную кнопку с именем “Пуск”.
У пользователя будет выведен на экран подсчёт алгоритма с выводом двух значений, это количество итераций и корень данного неравенства.
Так же, помимо текстового подсчёта в данной программе с позволения среды программирования Basic-256 было реализовано построение двух графиков с точкой их пересечения на координатной плоскости.
Заключение
Подведём итоги работы. Для данной курсовой работы были разработка и отлажены две программы с заранее установленными условиями исходных данных и требования по разработке и отладке программы на языке Basic-256.
Для каждого задания были разработаны индивидуальные условия разработки этих заданий, а именно, состоящих из:
-Постановка условия задачи
-Формулировка и требования для разработки программы
-Математический вид записи программы
-Блок-схема к программе
-Код написанный на языке Basic-256 с комментариями
-Словесный вид записи программы
-Руководство пользователя
Для задачи №1 были получены следующие данные:
Для данной задачи, в среде Basic-256 был создан двумерный цифровой массив с исходными данными в виде ширины и длины такого массива. Для данной задачи в массиве автоматически генерируются случайные числа от 0 до 20. В виде выходных данных для пользователя присутствуют: непосредственно сам массив со случайными сгенерированными числами, минимальное число в массиве, количество чисел равных минимальному числу в массиве.
Результат тестирования программы
Рис. 5 - Блок-схема алгоритма для задачи №1
Для задачи №2 были получены следующие данные:
Для данной задачи, в среде Basic-256 были задействованы графические функции Basic-256, в окне для вывода графика были построены две функции на плоской координатной с осями x и y. В данном окошке изображены две функции которые имеют точку пересечения, то есть наш корень для выполнения условия задачи.
Для текстовой части данной задачи, был разработан цикл с предусловием и выводов двух полученных данных на экран пользователя, таких как: сам корень и количество итераций. Для данной программы была задана погрешность, с помощью которой и производилась проверка постусловия. Так же для данного условия был задан диапазон чисел для запуская работы самой программы.
Результат тестирования программы
Рис. 6 - Блок-схема алгоритма для задачи №2
Список используемой литературы
1. Теория алгоритмов: учеб. пособие для студ. сред. проф. учеб. заведений / В.И. Игошин. - М., 2013. - 320 с.
2. Джеймс М. Рено, М.С. Хотите научиться программировать? - Copyright ©2010.
3. Никитенко С. Г. Свободное программное обеспечение. BASIC-256 для школы. -- СПб.: БХВ-Петербург, 2011. -- 224 с.
4. Методические указания к лабораторным и самостоятельным работам по курсам «Информатика» и «Вычислительная математика». Численные методы. Часть 1. / Казанский государственный архитектурно-строительный университет. Сост.: Ф.Г. Ахмадиев, Ф.Г. Габбасов, Р.Ф. Гиззятов, И.В. Маланичев. Казань, 2011. - 32 с.
5. https://ru.wikipedia.org/wiki/Алгоритм
6. https://ru.wikipedia.org/wiki/BASIC-256
7. http://bolotin.lib.ru/inf/osnov/mat9/basic-256.pdf
8. http://yargymn.ru/filestore.pdf
9. https://books.ifmo.ru/file/pdf/901.pdf
10. https://ru.wikiversity.org/wiki/Теория.алгоритмов
11. https://fb.ru/article/283912/vidyi-algoritmov-v-informatike-primeryi
Размещено на Allbest.ru
Подобные документы
Минимальное остовное дерево связного взвешенного графа и его нахождение с помощью алгоритмов. Описание алгоритма Краскала, возможность строить дерево одновременно для нескольких компонент связности. Пример работы алгоритма Краскала, код программы.
курсовая работа [192,5 K], добавлен 27.03.2011Нахождение минимального пути от фиксированной до произвольной вершины графа с помощью алгоритма Дейкстры, рассмотрение основных принципов его работы. Описание блок-схемы алгоритма решения задачи. Проверка правильности работы разработанной программы.
курсовая работа [495,4 K], добавлен 19.09.2011Понятие равных матриц, их суммы и произведения. Нахождение элемента матрицы, свойства ее произведения. Расположение вне главной диагонали элементов квадратной матрицы. Понятие обратной матрицы, матричные уравнения. Теорема о базисном миноре, ранг матрицы.
реферат [105,3 K], добавлен 21.08.2009Составление четкого алгоритма, следуя которому, можно решить большое количество задач на нахождение угла между прямыми, заданными точками на ребрах многогранника. Условия задач по теме и примеры их решения. Упражнения для решения подобного рода задач.
практическая работа [1,5 M], добавлен 15.12.2013Двойственные задачи в линейном программировании. Симметричные и несимметричные двойственные задачи. Связь исходной и двойственной задач. Анализ моделируемой ситуации (моделируемого объекта). Реализация двойственности на Visual Basic for Application.
курсовая работа [703,5 K], добавлен 14.10.2011Решение двойственной задачи с помощью первой основной теоремы теории двойственности, графическим и симплексным методом. Математическая модель транспортной задачи, расчет опорного плана перевозок методами северо-западного угла и минимального элемента.
контрольная работа [333,3 K], добавлен 27.11.2011Основные свойства многочленов Чебышева - двух последовательностей ортогональных многочленов, их роль в теории приближений. Способы определения, явные формулы. Многочлен Чебышева на отрезке. Случай произвольного отрезка. Разработка программной реализации.
курсовая работа [391,8 K], добавлен 19.12.2012Задачи и методы линейной алгебры. Свойства определителей и порядок их вычисления. Нахождение обратной матрицы методом Гаусса. Разработка вычислительного алгоритма в программе Pascal ABC для вычисления определителей и нахождения обратной матрицы.
курсовая работа [1,1 M], добавлен 01.02.2013История зарождения и создания линейного программирования. Транспортная задача. Общая постановка, цели, задачи. Основные типы, виды моделей. Методы составления начального опорного плана. Понятие потенциала и цикла. Задача, двойственная к транспортной.
курсовая работа [166,7 K], добавлен 17.07.2002Решение системы линейных уравнений по правилу Крамера и с помощью обратной матрицы. Нахождение ранга матрицы. Вычисление определителя с помощью теоремы Лапласа. Исследование на совместимость системы уравнений, нахождение общего решения методом Гауса.
контрольная работа [97,3 K], добавлен 24.05.2009