Создание программы
Выбор языка программирования и его обоснование. Определение системных требований. Схема алгоритма и программа на языке Qbasic. Разработка руководства пользователя. Способы конструирования программ. Особенности и принципы динамического программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.01.2014 |
Размер файла | 398,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
С развитием и совершенствованием ЭВМ тесно связано появление средств программирования. Для машин первого поколения они составлялись в машинных кодах. Это был трудоемкий процесс, поскольку программисту самому приходилось распределять память под программу, исходные данные и результаты. Разобраться в такой программе, модифицировать ее было практически невозможно. Еще в период перехода к машинам второго поколения (50-е годы) возникла необходимость в создании больших и сложных программ. Процесс их составления в машинных кодах резко снижал эффективность использования ЭВМ. Этот период характеризовался появлением первых алгоритмических языков программирования. Они отличались наглядной формой реализации алгоритма, использованием привычной математической символики, ограниченным набором ключевых слов. Основное их достоинство - универсальность.
Работа с программой, выполненной на алгоритмическом языке, очень упрощалась за счет относительной простоты написания, возможности модифицирования. Совершенствование вычислительной техники, а именно увеличение объема памяти и быстродействия машин, делало программирование на алгоритмических языках все более распространенным и перспективным. В настоящее время существует большое количество алгоритмических языков, которым присущи как общие, так и отличительные черты. Это Фортран, Бейсик, Паскаль и др. На их примере можно наглядно увидеть те характерные особенности, которые присущи программированию на алгоритмических языках вообще.
Бейсик (BASIC) - это сокращение английских слов BeginnersAll-purpouseSymbolicInstractionCode, что в переводе означает «многоцелевой язык символических инструкций для начинающих». Он был разработан профессорами Дартмутского колледжа (США) Т. Куртцем и Дж. Кемени в 1965 году для обучения студентов, незнакомых с вычислительной техникой. Этот язык, напоминающий Фортран, но более простой, быстро стал очень популярным. Особенно его популярность повысилась с появлением персональных компьютеров, где он стал одним из основных языков программирования. Существует множество версий языка Бейсик и все они имеют особенности. В каждой из них можно выделить общее подмножество, в котором отражены характерные (стандартные) грамматика, синтаксис и семантика языка. Наиболее популярной версией является Qbasic, благодаря удобному интерфейсу и представлению пользователю ряда сервисных возможностей, присущих современным системам программирования.
Целью данной курсовой работы является разработка программы и оформление программной документации согласно ЕСПД решения уравнения
=0.
Разработанная программа может применяться в учебных заведениях для решения уравнений типа =0 и при инженерных расчетах.
1. Разработка программы
1.1 Постановка задачи
Цель работы - разработать программу решения уравнения. Для этого необходимо:
- графически или аналитически отделить корень уравнения (х) = 0;
- преобразовать уравнение F(х) = 0 к виду х = (х) так, чтобы в некоторой окрестности [а, b] корня производная вида'(х) удовлетворяла условию (1):
|'(х)| <= q <= 1; (1)
- выбрать начальное приближение корня, расположенное на отрезке [а, b];
- составить схему алгоритма и программу на алгоритмическом языке Qbasic;
- провести вычисления по программе;
- оформить программную документацию согласно ЕСПД.
1.2 Выбор языка программирования
Для реализации данной задачи в качестве языка программирования был выбран язык Qbasic.
QBasic - диалект языка программирования Бейсик(BASIC), разработанный компанией Microsoft, а также среда разработки, позволяющая писать, запускать и отлаживать программы на этом языке.
QBasic удобен для выполнения несложных вычислений и для прямой работы с портами. Наряду с Pascal, язык популярен для обучения программированию, и используется во многих учебных заведениях.
1.3 Системные требования
Так как язык QBasic разрабатывался для операционной системы DOS, то особые требования к минимальным возможностям системы не предъявляются. Для запуска программы нужен USB - порт либо привод CD/DVD.
1.4 Решение
Графическое решение уравнения
Данный метод позволяет найти приближенные значения корней уравнения, их количество и промежутки, которым они принадлежат.
Для определения количества корней уравнения =0 и промежутки, которым они принадлежат, преобразуем, исходное уравнениек виду. Строим графики функций на промежутке [0,1; 2] с шагом 0,1. Абсцисса точки пересечения этих функций и будет корнем уравнения =0.
Для построения графика построим таблицу значений y(x) (табл. 1).
Графики функций представлены на рисунке 1.
Таблица 1. Значения у и х для построения графиков функций
x |
У=Ln(x) |
У=1/(1+x2) |
|
0,1 |
-2,30259 |
0,990099 |
|
0,2 |
-1,60944 |
0,961538 |
|
0,3 |
-1,20397 |
0,917431 |
|
0,4 |
-0,91629 |
0,862069 |
|
0,5 |
-0,69315 |
0,8 |
|
0,6 |
-0,51083 |
0,735294 |
|
0,7 |
-0,35667 |
0,671141 |
|
0,8 |
-0,22314 |
0,609756 |
|
0,9 |
-0,10536 |
0,552486 |
|
1 |
0 |
0,5 |
|
1,1 |
0,09531 |
0,452489 |
|
1,2 |
0,182322 |
0,409836 |
|
1,3 |
0,262364 |
0,371747 |
|
1,4 |
0,336472 |
0,337838 |
|
1,5 |
0,405465 |
0,307692 |
|
1,6 |
0,470004 |
0,280899 |
|
1,7 |
0,530628 |
0,257069 |
|
1,8 |
0,587787 |
0,235849 |
Рисунок 1. Графики функций
На рисунке 1 видно, что графики функций пересекаются в одной единственной точке, значит корень у искомого уравнения =0 один. Абсцисса точки пересечения графиков принадлежит промежутку [1,2; 1,6], следовательно, корень уравнения =0 тоже будет принадлежать этому же промежутку.
Метод итераций
Найдем корень уравнения методом итераций на промежутке [1,2; 1,6] с абсолютной погрешностью =1*10-4
Преобразуем исходное уравнение к виду x=(x) следующим образом:
, по определению логарифма .
Найдем значения функции на промежутке [1,2; 1,6] (табл. 2)
Таблица 2. Значения функции на промежутке [1,2; 1,6]
х |
||
1,2 |
0,607325 |
|
1,3 |
0,521095 |
|
1,4 |
0,448018 |
|
1,5 |
0,386352 |
|
1,6 |
0,334382 |
Из полученных данных видно, что для всех значений х на промежутке . Поэтому q=0,61, значит . Следовательно, процесс итераций сходится.
Схема алгоритма и программа на языке Qbasic
Для составления схемы алгоритма приведем соответствие аналитических переменных машинным:
х - х - текущее значение корня уравнения F(х) = 0;
х - х0 - начальное значение корня;
у - у - последующее значение корня;
- е - предельная абсолютная погрешность;
n - n - количество итераций;
д - d - абсолютная разность между предыдущим и последующим значениями корня уравнения.
Блок-схема алгоритма решения задачи представлена на рисунке 2.
Рисунок 2. Блок-схема решения задачи
Текст программы:
REM vich_fun
2:CLS
PRINT «y=lnx-1/(1+x^2)»
PRINT «zadaite x0 i e»
INPUT «x0=», x0
INPUT «e=», e
n = 0: x = x0
DO
y = EXP (1 / (1 + x ^ 2))
d = ABS (y - x)
x = y
n = n + 1
LOOP WHILE d > e
PRINT «rezultat»
PRINT «x=», x
PRINT «n=», n
Input «povtoritprogrammy? y/n», U$
If U$= «y» then goto 2
END
Результат работы программы представлен на рисунке 3.
Рисунок 3. Результат работы программы
2. Руководство пользователя
Данный программный продукт выполнен на языке программирования Qbasic и представлен в виде выполняемого файла с именем 1.exe.
Данный программный продукт находит корни уравнения вида
=0, методом итераций.
В качестве входных данных необходимо ввести начальное приближение корня принадлежащего отрезку [a, b] - x0 (вещественный тип) и предельную абсолютную погрешность - е (вещественный тип). Причем a>0, так как функция на промежутке]-?; 0 [не определена, следовательно на данном промежутке решений нет.
В качестве выходных данных пользователь получает результат: корень - х (вещественный тип), лежащий на отрезке [a, b] с предельной абсолютной погрешностью е, и количество итераций - n (целый тип).
Для запуска программы нужно запустить файл 1.exe и ввести исходные данные (рис. 4).
Рисунок 4 Окно ввода исходных данных
Результат работы программы представлен на рисунке 5.
Рисунок 5 Результат работы программы
Для повторного запуска программы с другими данными достаточно на вопрос «Повторить программу? y/n» ввести у. Для выхода из программы ввести n.
3. Ответы на контрольные вопросы
3.1 Стандартные данные
Под типом данных понимается множество допустимых значений переменных, а также совокупность операций над ними.
В Qbasic можно выделить следующие группы типов:
- целые;
- вещественные;
- логические данные;
- массив;
- символьные данные;
- файлы.
Целые типы
В Qbasic введено два стандартных целых типа (табл. 3), которые отличаются форматами и диапазонами допустимых значений.
Таблица 3. Целые типы данных
Тип |
Значение |
Формат |
|
INTEGER |
-32768. 32767 |
Знаковый |
|
LONGINT |
-2147483648..2147483647 |
Знаковый |
Для работы с целыми типами данных используются следующие арифметические функции (табл. 4), результат которых тоже целое число:
Таблица 4. Арифметические функции для работы с целыми типами данных
Функция |
Действие |
|
ABS(N) |
Абсолютная величина N |
|
А\В |
Целая часть от деления |
|
A MOD В |
Остаток от деления |
|
+, *, - |
Сложение, умножение, вычитание |
|
^ |
Возведение в степень |
|
FIX (X) |
Получение целой части вещественного числа X |
|
CINT(X) |
Округление до целого вещественного числа X |
|
CLNG(X) |
Округление до длинного целого вещественного числа X |
|
INT(X) |
Получение наибольшего целого числа, которое меньше или равно X |
Вещественные типы
В Qbasic определено два стандартных вещественных типа, которые отличаются форматами и диапазонами допустимых значений (табл. 5)
Таблица 5. Стандартные вещественные типы
Тип |
Значение |
Число цифр |
|
REAL |
-2.9*10-38.1.7*1038 |
32 |
|
DOUBLE |
-2.9*10-38..1.7*Ю38 |
64 |
Результат работы функций сложения, умножения, деления, вычитания и возведения в степень вещественных чисел дает вещественное число.
Кроме этого, используются следующие функции (табл. 6), результат которых - вещественное число:
Таблица 6. Арифметические функции для работы с вещественным типом данных
Функция |
Назначение |
|
ABS(X) |
Абсолютное значение X |
|
ATN(X) |
Арктангенс X |
|
COS(X) |
Косинус X |
|
SIN(X) |
Синус X |
|
TAN(X) |
Тангенс X |
|
EXP(X) |
ex |
|
LOG(X) |
Натуральный логарифм |
|
SQR(X) |
Квадратный корень X |
|
RND(X) |
Получение случайного числа |
|
CDBL(X) |
Представление числа с двойной точностью |
|
CSNG(X) |
Представление числа с одинарной точностью |
Логические данные
Логические данные, которые имеют значение либо «истина» - 1, либо «ложь» - 0, обрабатываются с помощью логических операций и операций сравнения. К ним относятся:
- NOT - отрицание;
- OR - объединение, или логическое сложение;
- AND - пересечение, или логическое умножение;
- XOR - исключающее ИЛИ или сложение по модулю два;
- EQV - эквивалентность;
- IMP - импликация, или следование.
Результат работы операций задается следующей таблицей истинности (таблицы значений):
Таблица 7. Таблица значений
Количество аргументов |
1 аргумент |
2 аргумент |
результат |
|
Операция NOT |
||||
1 |
Истина |
- |
Ложь |
|
Ложь |
- |
Истина |
||
Операция OR |
||||
2 и более |
Истина |
Истина |
Истина |
|
Истина |
Ложь |
Истина |
||
Ложь |
Истина |
Истина |
||
Ложь |
Ложь |
Ложь |
||
Операция AND |
||||
2 и более |
Истина |
Истина |
Истина |
|
Истина |
Ложь |
Ложь |
||
Ложь |
Истина |
Ложь |
||
Ложь |
Ложь |
Ложь |
||
Операция XOR |
||||
2 и более |
Истина |
Истина |
Ложь |
|
Истина |
Ложь |
Истина |
||
Ложь |
Истина |
Истина |
||
Ложь |
Ложь |
Ложь |
||
Операция EQV |
||||
2 и более |
Истина |
Истина |
Истина |
|
Истина |
Ложь |
Ложь |
||
Ложь |
Истина |
Ложь |
||
Ложь |
Ложь |
Истина |
||
Операция IMP |
||||
2 и более |
Истина |
Истина |
Истина |
|
Истина |
Ложь |
Ложь |
||
Ложь |
Истина |
Истина |
||
Ложь |
Ложь |
Истина |
Запомнить таблицу можно, помня следующее:
- операция отрицания меняет значение операнда на противоположное;
- для того чтобы результат операции логического умножения был истинен, все операнды должны быть истинны;
- для того чтобы логическое сложение дало истину, нужно, чтобы хотя бы один операнд был истинен;
- сложение по модулю два дает истину, только если операнды имеют разные значения;
- для определения результата операции эквивалентности нужно помнить, что он истинен, если операнды равны между собой, и ложен в противном случае.
- для операции импликации из ложного операнда следует все что угодно - результат будет истинен, а из истины следует только истина.
При обработке логических данных используются также операции сравнения, которые называются логическими отношениями:
=, <>, X, >, <, <=,>=.
Результат операции логического отношения равен минус единице, если задаваемое отношение выполняется, и нулю, если условие ложно.
Массив
Массив представляет собой заранее известное количество однотипных элементов, снабженных индексами. Массив может быть одномерным или многомерным.
Чтобы задать массив в Qbasic, необходимо использовать зарезервированное слово DIM, значения индексов массива и тип элементов массива.
Например, объявление одномерного массива 11 целых чисел может быть задано так: DIM N%(10)
Интерпретатор автоматически устанавливает минимальное значение индекса, равное нулю. Например, запись DIM BB (5,7), х(5)
объявляет двумерный массив BB из 48 чисел обычной точности и одномерный массив из шести таких чисел.
Оператор OPTION BASE устанавливает минимальное значение индексов массива. Он должен быть указан до объявления массивов:
OPTION BASE n,
где n равно единице или нулю.
Оператор ERASE отменяет объявление массивов, сделанных оператором DIM:
ERASE список имен массивов.
Символьные данные
В Qbasic имеется тип данных, который называется символьным. Для указания при использовании переменную такого типа, необходимо в имени этой переменной справа необходимо записать знак $.
Например, А$, DF$, STR$.
Этот тип является порядковым, и значения символьных переменных можно сравнивать между собой используя знаки сравнения (>, <, >=, <=).
Например, «pit» < «pita»<» pitaon».
Возможна между ними иконкатенация(+): «само» + «лет» = «самолет».
К символьным переменным относятся все прописные латинские буквы: «А», «В», «С»,…, «Z», строчные: «а», «b», «с»,…, «z», цифры: «0», «1», «2»,…, «9», знаки препинания, всевозможные скобки, русские буквы и т.д.
В программах их значения всегда заключаются в апострофы.
Внутри каждого такого ряда коды символов упорядочены:
- «А» < «В»< «С» <…< «Z»;
- «а» < «b» < «с» <…< «z»;
- «0» < «1» < «2» <…< «9»;
- «А» < «Б» < «В» <…< «Я»;
- коды всех строчных букв меньше всех прописных.
Для работы с таким типом данных часто используются функции, аргументы которых могут быть символьными переменными (табл. 8).
Таблица 8 Функции для работы с символьными переменными
Функция |
Назначение |
|
CHR$ (N) |
Преобразование кода N в символьное представление |
|
ASC (Х$) |
Преобразование символа Х$ в десятичный код |
|
LEFT$(X$, N) |
Выделение N символов, начиная с самого левого символа в символьном выражении Х$ |
|
MID$ (X$, N, M) |
Выделение М символов, начиная с N-ro символа в символьном выражении Х$ (М может быть опущено) |
|
RIGHT$(X$, N) |
Выделение N символов, начиная с самого правого символа в символьном выражении Х$ |
|
SWAP X$, Y$ |
Обмен символьными выражениями Х$ и Y$ |
|
STRINGS (N, X$) |
Формирование строки из N одинаковых символов |
|
SPACE$(N) |
Формирование строки из N пробелов |
|
OCT$ (N) |
Перевод десятичных чисел в восьмеричное счисление |
|
HEX$(N) |
Перевод десятичных чисел в шестнадцатеричное счисление |
|
LEN (X$) |
Определение длины символьного выражения |
|
STR$(N) |
Переводит число в символьную форму, резервируя перед символьным выражением один пробел для знака |
|
INSTR (N, X$, Y$) |
Поиск подстроки YS в строке Х$ начиная с N-ro символа N можно опустить |
Файл
Одним из типов данных в Qbasic является файловый тип, который является последовательностью связанных между собой однотипных компонентов - записей, расположенных на внешнем носителе. Запись рассматривается как единое целое.
В Qbasic имеется 2 категории файлов, работа с которыми отличается
- последовательные;
- с произвольным доступом.
3.2 Способы конструирования программ
Основные понятия
Программирование - это реализация некоторой идеи, которая лежит в основе конструирования программ.
Фундаментальным понятием при обработке задач на ЭВМ является алгоритм.
Алгоритм-это конечная последовательность точных указаний, приводящая к решению поставленной задачи. Как следует из определения, класс задачи определяет класс указаний (действий).
Псевдокод - это искусственный и неформальный язык, который помогает программисту разрабатывать алгоритмы. Псевдокод используется для разработки алгоритмов, которые потом должны быть преобразованы в структурированную программу на любом языке программирования. Псевдокод подобен разговорному языку; он удобный и дружелюбный, но это не язык программирования. Программы на псевдокоде не могут выполняться на компьютере.
Их назначение - помочь программисту продумать разработку программы прежде, чем попытаться написать ее на языке программирования. Тщательно подготовленная программа на псевдокоде может быть легко преобразована в соответствующую программу на выбранном языке программирования. Во многих случаях для этого достаточно просто заменить предложения псевдокода их эквивалентами из выбранного языка программирования. Псевдокод включает только исполняемые операторы - те, которые выполняются, когда программа переведена из псевдокода на язык программирования и запущена на обработку. Объявления не являются исполняемыми операторами.
Блок-схема - это графическое представление алгоритма или фрагмента алгоритма. Блок-схема рисуется с использованием специальных символов, таких, как прямоугольники, ромбы, овалы и малые окружности; эти символы соединяются стрелками, называемыми линиями связи.
Подобно псевдокоду блок-схемы часто используются при разработке и описании алгоритмов, хотя большинство программистов предпочитает псевдокод. Блок-схемы наглядно показывают, как действуют управляющие структуры.
Нисходящее проектирование
Нисходящее проектирование - подход к проектированию программ, при котором первоначально создается главный модуль, для которого затем проводится декомпозиция (разбиение на модули, решающие подзадачи главной задачи).
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху - вниз»). В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций.
Создание программы с использованием технологии нисходящей (сверху - вниз) разработки с пошаговой детализацией. Эта технология является неотъемлемой частью создания хорошо структурированных программ. Она начинаем с записи псевдокода вершины.
Вершина - это единственное предложение (оператор), выражающее общее назначение программы. Таким образом, вершина отображает всю программу в целом.
Вершина редко отображает достаточное количество деталей, на основании которых можно написать программу на языке программирования.
Поэтому нужен процесс детализации.
Для этого вершину делят на ряд более мелких задач и записывают их в том порядке, в котором они должны выполняться.
Многие программы могут быть логически разделены на три этапа:
- этап задания начальных значений, в котором задаются начальные значения переменных программы;
- этап обработки данных, в котором вводятся данные и устанавливаются значения соответствующих переменных программы;
- заключительный этап, в котором вычисляются и печатаются окончательные результаты.
Программист завершает процесс нисходящей разработки с пошаговой детализацией, когда алгоритм на псевдокоде настолько детализирован, чтобы его псевдокод можно было бы преобразовать в программу на языке программирования.
Реализованная программа окажется в этом случае простой и наглядной.
Нисходящее проектирование может осуществляться следующими способами:
- По алгоритму программы создается текст главного модуля, содержащего в виде комментариев основны6е этапы решения задачи. Желательно, чтобы каждая строка комментария представляла собой вызов подпрограммы, решающей подзадачу главной задачи.
- Основные этапы заменяются строчкой кода, представляющего собой вызов функции, соответствующей этапу решения задачи. Выбирается имя функции, тип возвращаемого значения и определяется список параметров.
- По каждой вновь созданной функции записывается определение. Тело функции содержит комментарии. Процедура повторяется до тех пор, пока комментарии не будут заменены кодом на языке выбранном языке программирования.
Динамическое программирование
Динамическое программирование в теории управления и теории вычислительных систем - способ решения сложных задач путём разбиения их на более простые подзадачи. Он применим к задачам с оптимальной подструктурой, выглядящим как набор перекрывающихся подзадач, сложность которых чуть меньше исходной. В этом случае время вычислений, по сравнению с «наивными» методами, можно значительно сократить.
Ключевая идея в динамическом программировании достаточно проста. Как правило, чтобы решить поставленную задачу, требуется решить отдельные части задачи (подзадачи), после чего объединить решения подзадач в одно общее решение. Часто многие из этих подзадач одинаковы. Подход динамического программирования состоит в том, чтобы решить каждую подзадачу только один раз, сократив тем самым количество вычислений. Это особенно полезно в случаях, когда число повторяющихся подзадач экспоненциально велико.
Метод динамического программирования сверху - это простое запоминание результатов решения тех подзадач, которые могут повторно встретиться в дальнейшем. Динамическое программирование снизу включает в себя переформулирование сложной задачи в виде рекурсивной последовательности более простых подзадач.
Оптимальная подструктура в динамическом программировании означает, что оптимальное решение подзадач меньшего размера может быть использовано для решения исходной задачи. К примеру, кратчайший путь в графе из одной вершины (обозначим s) в другую (обозначим t) может быть найден так: сначала считаем кратчайший путь из всех вершин, смежных с s, до t, а затем, учитывая веса ребер, которыми s соединена со смежными вершинами, выбираем лучший путь до t (через какую вершину лучше всего пойти). В общем случае мы можем решить задачу, в которой присутствует оптимальная подструктура, проделывая следующие три шага.
- Разбиение задачи на подзадачи меньшего размера.
- Нахождение оптимального решения подзадач рекурсивно, проделывая такой же трехшаговый алгоритм.
- Использование полученного решения подзадач для конструирования решения исходной задачи.
Подзадачи решаются делением их на подзадачи ещё меньшего размера и т.д., пока не приходят к тривиальному случаю задачи, решаемой за константное время (ответ можно сказать сразу). К примеру, если нам нужно найти n!, то тривиальной задачей будет 1! = 1 (или 0! = 1).
Перекрывающиеся подзадачи в динамическом программировании означают подзадачи, которые используются для решения некоторого количества задач (не одной) большего размера.
Динамическое программирование пользуется следующими свойствами задачи:
- перекрывающиеся подзадачи;
- оптимальная подструктура;
- возможность запоминания решения часто встречающихся подзадач.
Динамическое программирование обычно придерживается двух подходов к решению задач:
- нисходящее динамическое программирование: задача разбивается на подзадачи меньшего размера, они решаются и затем комбинируются для решения исходной задачи. Используется запоминание для решений часто встречающихся подзадач.
- восходящее динамическое программирование: все подзадачи, которые впоследствии понадобятся для решения исходной задачи просчитываются заранее и затем используются для построения решения исходной задачи. Этот способ лучше нисходящего программирования в смысле размера необходимого стека и количества вызова функций, но иногда бывает нелегко заранее выяснить, решение каких подзадач нам потребуется в дальнейшем.
Языки программирования могут запоминать результат вызова функции с определенным набором аргументов (мемоизация), чтобы ускорить «вычисление по имени». В некоторых языках такая возможность встроена, а в некоторых требует дополнительных расширений.
Известны сериальное динамическое программирование, включённое во все учебники по исследованию операций, и не сериальное динамическое программирование (НСДП), которое в настоящее время слабо известно, хотя было открыто в 1960-х годах.
Обычное динамическое программирование является частным случаем не сериального динамического программирования, когда граф взаимосвязей переменных - просто путь. НСДП, являясь естественным и общим методом для учета структуры задачи оптимизации, рассматривает множество ограничений и / или целевую функцию как рекурсивно вычислимую функцию. Это позволяет находить решение поэтапно, на каждом из этапов используя информацию, полученную на предыдущих этапах, причём эффективность этого алгоритма прямо зависит от структуры графа взаимосвязей переменных. Если этот граф достаточно разрежен, то объём вычислений на каждом этапе может сохраняться в разумных пределах.
Одним из основных свойств задач, решаемых с помощью динамического программирования, является аддитивность. Неаддитивные задачи решаются другими методами.
Заключение
Решение какой-либо задачи с помощью ЭВМ распадается на три основных этапа:
- постановка задачи;
- составление алгоритма решения;
- программная реализация алгоритма на ЭВМ.
В данной работе реализованы все указанные выше этапы в среде программирования Qbasic.
Была оформлена пояснительная записка в соответствии с требованиями, предъявляемых к программной документации.
В ведении отражена область применения разработанной программы, актуальность и общий обзор.
В первой части курсовой работы сформулированы цель и задачи для решения уравнения методом итераций, обоснован выбор языка программирования, описаны системные требования к программе и изложены методы решения данной задачи.
Во второй части курсовой работы приведено руководство пользователя.
В третьей - ответы на контрольные вопросы.
В работе представлено задание, направленные на овладение основами программирования в указанной среде:
- выполнение арифметических операций,
- решения задач из курса высшей математики.
В результате ее выполнения разработана программа, охватывающая основные возможности версии, позволяющие выполнять все необходимые действия по составлению, отладке и выполнению программ.
В среде Qbasic существует несколько экранных режимов. Основной исходный экран представляет поле редактирования текста программы. Встроенный текстовый редактор выполняет две функции - редактирования текста и синхронной интерпретации строки. В этой связи строки в некоторых программах не нумеровались. Результаты работы программы, комментарии и сообщения интерпретатора представлялись в текстовом экране (по умолчанию режим SCREEN 0).
Особый интерес представляла система помощи help (подсказок), имеющая контекстную структуру с возможностью копирования примеров из текста подсказок, что позволило освоить работу с языком программирования Qbasic практически самостоятельно.
Таким образом, основная цель курсовой работы по овладению основами программирования в среде Qbasic выполнена.
Список литературы
программа пользователь алгоритм
1. Могилев А.В. Информатика. - М., 1999. - 816 с.
2. Сафронов И.К. Бейсик в задачах и примерах. - СПб.: BHV, 2001. - 215 с.
3. Семашко Г.Л. Программирование для всех. - М.: Наука, 1986. - 325 с.
4. Ставнистый Н.Н. Qbasic в математике. Решение задач с помощью компьютера. Ч1. - М.: СОЛОН-Р, 2001. - 143 с.
5. Федоренко Ю. Алгоритмы и программы на QBASIC. - СПб.: Питер, 2002. - 287 с.
6. Хомоненко А.Д. Основы современных компьютерных технологий. - СПб.: КОРОНА принт, 1998. - 448 с.
7. Чернов Б.И. Программирование на алгоритмических языках Бейсик, Фортран, Паскаль. - М.: Просвещение, 1991. - 192 с.
Размещено на Allbest.ru
Подобные документы
Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.
дипломная работа [1,0 M], добавлен 15.06.2014Стандартизированный процедурный язык программирования. Создание системного программного обеспечения и прикладных программ. Особенности языка Си, его основные недостатки. Передача параметров в функцию по значению. Стандартная библиотека языка Си.
презентация [396,3 K], добавлен 12.11.2012Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.
курсовая работа [1,2 M], добавлен 07.07.2012Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Разработка экспертной системы по выбору языка программирования для данного программного обеспечения. Выбор и обоснование механизма вывода решения. Дерево базы знаний экспертной системы. Программа формирования основного меню, руководство пользователя.
курсовая работа [1,9 M], добавлен 15.08.2012Программа по созданию стрелочных часов. Минимальные требования к составу и параметрам технических средств программы. Выбор и обоснование системы программирования Microsoft Visual Studio. Общее описание алгоритма. Руководство пользователя и программиста.
контрольная работа [1017,1 K], добавлен 11.12.2012Особенности задач линейного программирования. Симплексный метод решения задач линейного программирования. Обоснование выбора языка, инструментария программирования, перечень идентификаторов и блок-схема алгоритма. Логическая схема работы программы.
дипломная работа [2,4 M], добавлен 13.08.2011Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.
курсовая работа [823,0 K], добавлен 18.12.2011