Целью данной работы является закрепление, углубление и обобщение знаний, полученных во время обучения, и выработка умений самостоятельно применять эти знания для решения конкретных технических задач.
Основной задачей этой работы является овладение практической методикой самостоятельной подготовки и решения задач на персональном компьютере (ПК), расширение и углубление знаний в области алгоритмизации, применения языков программирования высокого уровня, развитие практических навыков владения ПК и пакетами прикладных программ (ППП).
В ходе выполнения курсовой работы был проведен анализ поставленных задач, выбран метод, разработан алгоритм и составлена программа решения задачи на языке программирования turbo Pascal, программа была протестирована для различных вариантов исходных данных.
Интегрированная инструментальная система Turbo Pascal предназначена для создания, редактирования и выполнения программ. Она представляет собой инструментальную программную оболочку, объединяющую основные компоненты системы программирования: текстовый редактор, компилятор, компоновщик, загрузчик, отладчик, файловую систему, системную библиотеку, справочную систему. Возможность управления всеми компонентами системы программирования из интегрированной среды значительно облегчает процесс создания программ и повышает эффективность работы.
1. Вычисление суммы ряда
1.1. Постановка задачи
Вычислить сумму бесконечно сходящегося ряда
(1)
при с точностью е=0,0001.
1.2. Описание метода решения задачи
Особенностью решения данной задачи является то, что число суммируемых членов ряда заранее является неизвестным. Условием окончания цикла по накоплению суммы является достижение заданной точности е. Значение текущего члена ряда зависит от параметра х и от порядкового номера n. Если член ряда по абсолютной величине становится меньше заданной точности е, то производится выход из цикла.
Для вычисления общего члена ряда целесообразно каждый член ряда представить в виде двух сомножителей:
(2)
Значение сомножителя B вычисляем, подставляя нужное значение n.
Сомножитель Н будем вычислять по рекуррентной формуле. Для получения рекуррентной формулы необходимо вычислить отношение текущего члена ряда к предыдущему:
Принципы разработки алгоритмов и программ для решения прикладных задач
... подлежащая решению задача разбивается на ряд подзадач, подчиненных по своему содержанию главной задаче. Такое ... работ. Моделирование, вычисления, программирование на С/С++ и МАТLAB, виртуализация, образцы лучших студенческих курсовых работ: ... достижением структурного подхода к разработке алгоритмов является нисходящее проектирование программ, ... было сохранение совместимости с C. Тем не менее, C++ не ...
(3)
Таким образом,
(4)
где H справа от знака «=» – предыдущее значение Н,
Н слева от знака «=» – текущее значение.
При накоплении произведения начальное значение .
1.3. Блок-схема алгоритма решения задачи
При составлении блок-схемы мы использовали основные блоки и базовые алгоритмические конструкции. Блок-схема вычисления суммы ряда представлена на рис. 1.
Рис. 1. Блок-схема вычисления суммы ряда
1.4. Характеристика данных и их условные обозначения
Характеристики данных и их условные обозначения, используемые для решения задачи, приведены в табл. 1.
Таблица 1
Используемые переменные
Имя переменной |
Физический смысл переменной |
Назначение переменной |
Ограничения на исходные данные |
x |
Значение параметра |
Исходное данное |
|
e |
Точность вычислений |
Исходное данное |
е=0,0001 |
n |
Порядковый номер |
Промежуточное значение |
Любое нат.число |
H |
Сомножитель члена ряда |
Промежуточное значение |
Любое вещ.число |
B |
Сомножитель члена ряда |
Промежуточное значение |
Любое вещ.число |
G |
Член ряда |
Промежуточное значение |
Любое вещ.число |
S |
Сумма ряда |
Результат |
Любое вещ.число |
1.5. Программа решения задачи на языке Паскаль
Текст программы вычисления суммы ряда на языке программирования Паскаль представлен на рис. 2.
Program My1;
- Var n: Integer;
- e, X, B, H, G, S: Real;
Begin
Write (‘Vvedite X (0.2<=x<=0.8) ‘);
- Readln (x);
- e:=0.0001;
- n:=1;
- H:=X/(1*2*3);
- B:=1;
- G:=B*H;
- S:=0;
- While Abs(G)>e Do
Begin
S:=S+G; n:=n+1;
- B:= n*n;
- H:=H*x/((2*n+1)*n);
- G:= B*H;
- End;
- Writeln (‘S=’,S:6:4);
- End.
Рис. 2. Программа вычисления суммы ряда
1.6. Описание работы программы в среде Турбо Паскаль
Программа разработана в интегрированной инструментальной системе Turbo Pascal. Исходный текст программы хранится в файле 1.pas. Для выполнения программы необходимо загрузить систему Turbo Pascal. Для этого в папке tp7_0 найдите файл Turbo.exe и запустите его на выполнение. Затем для загрузки файла 1.pas выполните команду меню File – Open. В диалоговом окне найдите файл 1.pas, выделите его и нажмите кнопку Open. Для перевода текста программы на машинный язык выполните компиляцию программы командой меню Compile-Compile или нажмите комбинацию клавиш Alt-F9. После чего запустите программу на выполнение командой меню Run-Run или нажмите комбинацию клавиш Ctrl-F9. При выполнение программы появится запрос: «Vvedite x (0.2<=x<=1)». С клавиатуры введите нужное значение х и нажмите Enter. Для просмотра результатов вычисления нажмите комбинацию клавиш Alt-F5.
1.7. Контрольное решение задачи
Контрольное решение задачи вычисления суммы ряда проведено для трех различных вариантов исходных данных. Результаты выполнения программы приведены на рис. 3.
Рис. 3. Результаты выполнения программы
2. Алгоритмы поиска
2.1. Постановка задачи
Матрица A состоит из 5 строк и 6 столбцов. Найти значение минимального по модулю элемента и разделить на него каждый элемент матрицы..
2.2. Описание метода решения задачи
Поиск минимального по модулю элемента в матрице будем проводить путем сравнения всех элементов матрицы с эталонной переменной, которой можно присвоить значение любого элемента последовательности, например, с индексом (1;1), для этого нам понадобится два вложенных цикла.
Обозначим A – исследуемый массив элементов; i – номер текущей строки массива, j – номер текущего стлобца; min – значение эталонной переменной, i1 – номер строки эталонной переменной, j1 – номер столбца эталонной переменной. Отметим, что все действия поиска выполняются одинаково для всех элементов матрицы. Следовательно, основой алгоритма будут два вложенных цикла: по строкам и по стлобцам.
Возьмем в качестве эталона модуль углового элемента матрицы А[1;1], в качестве номеров эталона i1=1, j1=1. Cравниваем значение модуля текущего элемента матрицы A[i,j] со значением модуля эталона min. Далее переопределяем значение эталона min и номера эталона i1 и j1, если выполняется условие |A[i,j]|< |min|. Затем осуществляем переход к следующему элементу матрицы. После просмотра всей матрицы делим все элементы матрицы на min, при этом также используем два вложенных цикла.
2.3 Блок-схема алгоритма решения задачи
При составлении блок-схемы использовались основные блоки и базовые алгоритмические
Блок-схема программы представлена на рис. 4.
2.4. Характеристика данных и их условные обозначения
Характеристики данных и их условные обозначения, используемые для решения задачи, приведены в табл. 2.
Таблица 2
Используемые переменные
Имя переменной |
Физический смысл переменной |
Назначение переменной |
Ограничения на исходные данные |
i |
Порядковый номер строки |
Промежуточное значение |
Любое натуральное число |
j |
Порядковый номер стлобца |
Промежуточное значение |
Любое натуральное число |
min |
Эталонный элемент |
Результат |
Любое вещ. число |
i1 |
Номер строки эталонного элемента |
Результат |
Любое натуральное число |
j1 |
Номер столбца эталонного элемента |
Результат |
Любое натуральное число |
A |
Исходный массив |
Исходное данное, результат |
Массив вещ. чисел |
2.5. Программа решения задачи на языке Паскаль
Текст программы на языке программирования Паскаль представлен на рис. 5.
Program matrix;
- Uses CRT;
- Var i, j, i1, j1: Integer;
- Min : Real;
- A: Array [1..5,1..6] of Real;
Begin
ClrScr;
- Writeln (‘Пожалуйста введите A:’);
For i:=1 to 5 Do
For j:=1 to 6 Do
Read (A[i,j]);
- min:= A[1,1];
- i1:=1;
- j1:=1;
For i:=1 to 5 Do
For j:=1 to 6 Do
Begin
If abs(A[i,j])<abs(min) Then Begin min:= A[i,j];
- i1:=i;
- j1:=j;
- End;
- End;
- Writeln (‘Min=’,min:6:2);
- Writeln (‘Номер строки=’, i1);
- Writeln (‘Номер стлобца=’, j1);
For i:=1 to 5 Do
For j:=1 to 6 Do
Begin
A[i,j]:=A[i,j]/min;
Write (‘A[‘,i,’,’,j,’]=’,A[i,j]:5:2,
- End;
- End.
Рис. 5. Программа поиска элемента в массиве
2.6. Описание работы программы в среде Турбо Паскаль
Программа разработана в интегрированной инструментал
2.7. Контрольное решение задачи
Контрольное решение задачи и результат выполнения программы приведены на рис. 6.
Рис. 6. Результат выполнения программы для одного из вариантов исходных данных
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работе были комплексно рассмотрены все этапы подготовки задач для решения на ЭВМ – от формулировки задачи до получения и обработки результатов расчета.
Для решения задач были выбраны стандартные методы и использованы типовые приемы алгоритмизации, применяемые при решении большинства инженерных задач, встречающихся на практике и в профессиональной деятельности. Основой при разработке алгоритмов служил структурный подход, базирующийся на методе последовательного уточнения действий и на использовании управляющих структур трех типов: следования, ветвления и повторения.
При создании программ использовалась интегрированная