РефератыИнформатикаРеРешение прикладной задачи

Решение прикладной задачи

ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ


Кафедра ИнОУП


Курсовая работа


Решение прикладной задачи


Выполнила: ст-ка группы 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:



Листинг функции 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:



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:



Листинг процедуры 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;


Графическое представление алгоритма основной программы:




Листинг основной программы:


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 – результат выполнения программы

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Решение прикладной задачи

Слов:1366
Символов:15032
Размер:29.36 Кб.