Решение прикладной задачи
Решение прикладной задачи
9 ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Кафедра ИнОУП Курсовая работа Решение прикладной задачи Выполнила: ст-ка группы 06 ВД-1 Е.А. Одинокова Принял: доцент А. И. Черноскутов 2007 Содержание 1 Цель работы 4 2 Постановка задачи 5 3 Расчет контрольной точки 6 4 Разработка схем алгоритмов и текстов подпрограмм, их описание 10 4.1 Function Proizvedenie 10 4.2 Function Symma 12 4.3 Procedure Massive_Z 14 5 Разработка схемы алгоритма и текста основной программы и их описание 16 Заключение 21 Список использованных источников литературы 22 Приложение А. Листинг программы 23 Приложение Б. Результат работы программы 26 Введение Язык программирования Паскаль (назван в честь выдающегося французского математика и философа Блез Паскаля (1623-1662)), разработан в 1968-1971 гг. Никлаусом Виртом, профессором, директором института информатики Швейцарской высшей политехнической школы. Язык Паскаль, созданный первоначально для обучения программированию как систематической дисциплине, скоро стал широко использоваться для разработки программных средств в профессиональном программировании. Разработка программ на Паскале включает в себя следующие действия (этапы разработки программы): ввод и редактирование текста программы на языке программирования Паскаль, ее трансляцию, отладку. Для выполнения каждого этапа применяются специальные средства: для ввода и редактирования текста используется редактор текстов, для трансляции программы - компилятор, для построения исполняемого компьютером программного модуля с объединением разрозненных откомпилированных модулей и библиотекой стандартных процедур Паскаля - компоновщик, для отладки программы с анализом ее поведения, поиском ошибок, просмотром и изменением содержимого ячеек памяти компьютера - отладчик. Для повышения качества и скорости разработки программ в середине 80-х гг. была создана система программирования Турбо Паскаль. Слово «турбо» в названии системы программирования - это отражение торговой марки фирмы - разработчика Borland International, Inc. (США). 1. Цель работы Целью данной курсовой работы является закрепление теоретических и практических навыков в решении прикладных задач с применением функций и процедур. Освоение структурного (модульного) программирования. 2. Постановка задачи Разработать схему алгоритма и программу для вычисления массива z по формуле: . Исходными данными являются: Вычисление произвольной суммы и произведения оформить функциями, вычисление массива - процедурой. 3. Расчет контрольной точки Для расчета контрольной точки используем исходный данные. В качестве исходных данных принимаются: Рассчитаем шаг для определения элементов массива по формуле: ; В соответствии с исходными данными Xmax равно 100, а Xmin - -10. В результате шаг равен: Рассчитаем шаг для определения элементов массива по формуле: ; В соответствии с исходными данными Ymax равно 100, а Ymin - 0.1. В результате шаг равен: Определим значения элементов массива . За первый элемент массива примем значение Xmin. Затем посредством последовательного прибавления шага определим остальные элементы массива. В результате: . Определим элементы массива . За первый элемент массива примем значение Ymin. Затем посредством последовательного прибавления шага определим остальные элементы массива. В результате: . Определим значения элементов массива согласно формуле: . Т.к. y[1] = 0.1 и y[1] < a, то расчет первого элемента массива произведем по формуле: В результате: Т.к. y[2] = 25,075 и y[2] > a, то расчет первого элемента массива произведем по формуле: В результате: Т.к. y[3] = 50,05 и y[3] > a, то расчет первого элемента массива произведем по формуле, приведенной в пункте б. В результате: Т.к. y[4] = 75,025 и y[4] > a, то расчет первого элемента массива произведем по формуле, приведенной в пункте б. В результате: Т.к. y[5] = 100 и y[5] > a, то расчет первого элемента массива произведем по формуле, приведенной в пункте б. В результате: Результаты вычисления контрольной точки сравним с результатом выполнения программы. Результат выполнения программы изображен на рисунке 1, а также представлен в приложении А. Сделаем вывод, что программа производит вычисления верно. 4. Разработка схем алгоритмов и текстов подпрограмм, их описание 4.1 Function Proizvedenie Назначение: вычисление произведения элементов по формуле . Обращение: Proizvedenie (x,y[j],n); Описание параметров: x - переменная типа massiv. Отображает массив размерностью 52. Y - переменная типа double. Элемент массива . n - количество элементов в массиве x. n=12. Требуемые функции и процедуры: нет. Графическое представление алгоритма функции Proizvedenie: 9 Листинг функции Proizvedenie: Function Proizvedenie (x1:Massiv;y1:double;n1:integer):double; var p1:double; i:integer; begin p1:=1; for i:=1 to n1 do p1:=p1*(x1[i]-y1); Proizvedenie:=p1; end; 4.2 Function Symma Назначение: вычисление суммы элементов по формуле . Обращение: Symma (x,y[j],n); Описание параметров: x - переменная типа massiv. Отображает массив размерностью 52. Y - переменная типа double. Элемент массива . n - количество элементов в массиве x. n=12. Требуемые функции и процедуры: нет. Листинг функции Symma: Function Symma (x1:Massiv;y1:double;n1:integer):real; var s1:real; begin s1:=0; for i:=1 to n1 do s1:=s1+(x1[i]-y1); Symma:=s1; end; Графическое представление алгоритма функции Symma: 9 4.3 Procedure Massive_Z Назначение: определение значения элементов массива . Обращение: Massive_Z (y,m); Описание параметров: y - переменная типа massiv. Отображает массив размерностью 15. m - количество элементов в массиве y. m=5. Требуемые функции и процедуры: Sqrt - арифметическая функция, возвращающая квадратный корень аргумента. Sqr - арифметическая функция, возвращающая аргумент в квадрате. Exp - возвращает экспоненту аргумента. Cos - возвращает косинус аргумента. Proizvedenie (x,y[j],n) - вычисляет произведение элементов по формуле . Symma (x,y[j],n) -вычисляет сумму элементов по формуле . Графическое представление алгоритма процедуры Massive_Z: 9 Листинг процедуры Massive_Z: Procedure Massive_Z (y1:Massiv;m1:integer); begin for j:=1 to m1 do if a>=y1[j] then z[j]:=a*Sqr(cos(al))+(1/(b*Sqrt(exp(-t))))+Proizvedenie (x,y[j],n) else if a<y1[j] then z[j]:=a*((exp(-(Sqr(t-tay))))/(Sqrt(a-b)))*Symma (x,y[j],n); end; 5. Разработка схемы алгоритма и текста основной программы и их описание Разработанная программа написана на языке Turbo Pascal 7.0. программа предназначена для осуществления расчета по формулам, представленным выше. В программе используется одна из директив компилятора {$N+), которая позволяет использовать числовой сопроцессор, т.е. реализовывать операции с плавающей точкой программно. В программе используются константы: в программе используется тип Massiv=array [1..d] of real. В программе используются следующие переменные: x:Massiv - озномерный массив вещественных чисел размерностью n. y:Massiv - одномерный массив вещественных чисел размерностью m; z - одномерный массив чисел типа double размерностью d; i,j - типа integer; h,k - типа double; Графическое представление алгоритма основной программы: 9 Листинг основной программы: Begin clrscr; writeln ('Курсовая работа "Решение прикладной задачи"'); writeln; k:=(Xmax-Xmin)/(n-1); writeln ('Шаг для вычисления массива x равен ',k:10:4); h:=(Ymax-Ymin)/(m-1); writeln ('Шаг для вычисления массива y равен ',h:10:4); x[1]:=Xmin; for i:=2 to n do x[i]:=x[i-1]+k; y[1]:=Ymin; for j:=2 to m do y[j]:=y[j-1]+h; writeln ('Исходный массив x'); for i:=1 to n do begin write (x[i]:10:4, '':2); if ((i mod 5)=0) then writeln; end; writeln ('Исходный массив y'); for j:=1 to m do write (y[j]:10:4, '':2); writeln; Massive_Z (y,m); writeln ('Вычисленный массив z равен'); for j:=1 to m do writeln (z[j]); writeln; write ('Нажмите любую клавишу...'); readln; End. Заключение В процессе выполнения данной курсовой работы были закреплены теоретические и практические навыки в решении прикладных задач с применением функций и процедур, было освоен принцип структурного (модульного) программирования. Также в процессе выполнения данной курсовой работы была создана программы, осуществляющая формирование массива z в соответствии с приведенными формулами. Список использованных источников литературы 1. Фаронов В.В. Turbo Pascal 7.0 - М.: «Нолидж», 2001 г. - 576 с. Приложение А Листинг программы Program Kyrsov_rabota; {$N+} uses crt; const n=10; m=5; a=23.56; b=7.86; al=0.364; t=10; tay=0.05; d=100; Ymin=0.1; Ymax=100; Xmin=-10; Xmax=100; type Massiv=array [1..d] of real; var x,y:Massiv; z:array [1..d] of double; i,j:integer; h,k:double; Function Proizvedenie (x1:Massiv;y1:double;n1:integer):double; var p1:double; i:integer; begin p1:=1; for i:=1 to n1 do p1:=p1*(x1[i]-y1); Proizvedenie:=p1; end; Function Symma (x1:Massiv;y1:double;n1:integer):real; var s1:real; begin s1:=0; for i:=1 to n1 do s1:=s1+(x1[i]-y1); Symma:=s1; end; Procedure Massive_Z (y1:Massiv;m1:integer); begin for j:=1 to m1 do if a>=y1[j] then z[j]:=a*Sqr(cos(al))+(1/(b*Sqrt(exp(-t))))+Proizvedenie (x,y[j],n) else if a<y1[j] then z[j]:=a*((exp(-(Sqr(t-tay))))/(Sqrt(a-b)))*Symma (x,y[j],n); end; Begin clrscr; writeln ('Курсовая работа "Решение прикладной задачи"'); writeln; k:=(Xmax-Xmin)/(n-1); writeln ('Шаг для вычисления массива x равен ',k:10:4); h:=(Ymax-Ymin)/(m-1); writeln ('Шаг для вычисления массива y равен ',h:10:4); x[1]:=Xmin; for i:=2 to n do x[i]:=x[i-1]+k; y[1]:=Ymin; for j:=2 to m do y[j]:=y[j-1]+h; writeln ('Исходный массив x'); for i:=1 to n do begin write (x[i]:10:4, '':2); if ((i mod 5)=0) then writeln; end; writeln ('Исходный массив y'); for j:=1 to m do write (y[j]:10:4, '':2); writeln; Massive_Z (y,m); writeln ('Вычисленный массив z равен'); for j:=1 to m do writeln (z[j]); writeln; write ('Нажмите любую клавишу...'); readln; End. Приложение Б Результат работы программы Рисунок Б1 - результат выполнения программы
|