Технолгия разработки програмных продуктов

Автор работы: Пользователь скрыл имя, 15 Декабря 2011 в 15:26, курсовая работа

Краткое описание

Целью данной курсовой работы является разработка программ на языках С, Pasсal и в среде Delphi для описания процессов развития динамики популяции. Данные процессы описываются моделью Ферхюльда, представляющей собой дифференциальное уравнение первого порядка. Решение данного уравнения будем искать с помощью метода Эйлера. В ходе курсового проектирования будет проведен обзор теоретических вопросов, разработан алгоритмы решения поставленной задачи.

Содержание работы

Введение 3
1 Аналитический обзор 4
1.1 Определение популяции 4
1.2 Модель Ферхюльста (рождаемость и смертность с учетом роста численности) 5
1.3. Решение дифференциальных уравнений 6
1.4 Метод Эйлера. 7
1.5 Улучшенный метод Эйлера 9
2Язык Pascal 11
3 Язык С 14
4Среда быстрой разработки Delphi 15
5 Алгоритм решения задачи 17
6 Тестирование программ 18
6.1. Тестирование на языке С 18
6.2 Тестирование на языке Pascal 19
6.3 Тестирование приложения в Delphi 19
7 Листинг программ на языке С 22
8 Листинг программ на языке Pascal 24
9 Листинг программы в Delphi 26
Выводы 30
Список использованной литературы 31

Содержимое работы - 1 файл

Записка.doc

— 660.50 Кб (Скачать файл)

  • 6.3  Тестирование приложения в Delphi
  •        Программа разделана на 3 вкладки – решение 3 задач. Каждая вкладка подразделяется еще на 2 вкладки – условие задачи и решение задачи. 
     
     

    Рисунок 9 – Просмотр условия задачи 

             На вкладке решения  задач задаются параметры начальной  численности популяции p, время и другие параметры модели. После нажатия кнопки «Расчет» полученные значения отображаются в таблице и строится график зависимости численности популяции от времени. 
     
     

    Рисунок 10 – Решение задачи №1 
     

    Рисунок 11 – Решение задачи №2 
     

    Рисунок 12 – Решение задачи №3 
     
     
     
     
     
     

  • 7 Листинг программ на языке С
  • Задача 1

    #include <stdio.h>;

    #include <math.h>;

    float fun(float p)

    {

      float p1;

      p1=1*p-0.0001*pow(p,2);

      return p1;

    }

    void euler(float p,int n)

    {

      int i;

      float f1,p1;

      p1=p;

      i=1;

      do

      {

        f1=fun(p);

        p=p+f1;

        p=p1+(f1+fun(p))/2;

        printf("p1=%2.2f\n",p);

        p1=p;

        i++;

      }

      while (n>=i);

    }

    main()

    {

      int n;

      float p;

      clrscr();

      printf("p=");

      scanf("%f",&p);

      printf("n=");

      scanf("%d",&n);

      euler(p,n);

      getch();

    }

    Задача 2

    #include <stdio.h>;

    #include <math.h>;

    float fun(float p)

    {

      float p1;

      p1=-1*p+0.001*pow(p,2);

      return p1;

    }

    void euler(float p,int n)

    {

      int i;

      float f1,p1;

      p1=p;

      i=1;

      do

      {

        f1=fun(p);

        p=p+f1;

        p=p1+(f1+fun(p))/2;

        printf("p1=%2.2f\n",p);

        p1=p;

        i++;

      }

      while (n>=i);

    }

    main()

    {

      int n;

      float p;

      clrscr();

      printf("p=");

      scanf("%f",&p);

      printf("n=");

      scanf("%d",&n);

      euler(p,n);

      getch();

    }

    Задача 3

    #include <stdio.h>;

    #include "math.h";

    float fun(float pp,float p)

    {

      float p1;

      p1= 0.00001*1*(pp-p)+0.001*pow((pp-p),0.9);

      return p1;

    }

    void euler(float pp,float p,int n)

    {

      int i;

      float f1,p1;

      p1=p;

      i=1;

      do

      {

        f1=fun(pp,p);

        p=p+f1;

        p=p1+(f1+fun(pp,p))/2;

        printf("p1=%2.2f\n",p);

        p1=p;

        i++;

      }

      while (n>=i);

    }

    main()

    {

      int n;

      float p,pp;

      clrscr();

      printf("p=");

      scanf("%f",&p);

      printf("P=");

      scanf("%f",&pp);

      printf("n=");

      scanf("%d",&n);

      euler(pp,p,n);

      getch();

    }

  • 8 Листинг программ на языке Pascal
  • Задача 1

    uses crt; 

    function fun(p:double):double;

    begin

      fun := 1*p-0.0001*sqr(p);

    end; 

    procedure euler(p:double;n:integer);

    var

      i:integer;

      f1,p1:double;

    begin

      p1:=p;

      i:=1;

      repeat

        f1:=fun(p);

        p:=p+f1;

        p:=p1+(f1+fun(p))/2;

        writeln('p1=',p:2:2);

        p1:=p;

        i:=i+1;

      until i>n

    end; 

    var p: Double;

        n: integer;

    begin

      clrscr;

      write('p=');

      read(p);

      write('n=');

      read(n);

      euler(p, n);

      read(n);

    end. 

    Задача 2

    uses crt; 

    function fun(p:double):double;

    begin

      fun := -1*p+0.001*sqr(p);

    end; 

    procedure euler(p:double;n:integer);

    var

      i:integer;

      f1,p1:double;

    begin

      p1:=p;

      i:=1;

      repeat

        f1:=fun(p);

        p:=p+f1;

        p:=p1+(f1+fun(p))/2;

        writeln('p1=',p:2:2);

        p1:=p;

        i:=i+1;

      until i>n

    end; 

    var p: Double;

        n: integer;

    begin

      clrscr;

      write('p=');

      read(p);

      write('n=');

      read(n);

      euler(p, n);

      read(n);

    end. 

    Задача 3

    uses crt; 

    function fun(pp:double;p:double):double;

    begin

      fun := 0.00001*1*(pp-p)+0.001*exp(0.9*ln(pp-p));

    end; 

    procedure euler(pp:double;p:double;n:integer);

    var

      i:integer;

      f1,p1:double;

    begin

      p1:=p;

      i:=1;

      repeat

        f1:=fun(pp,p);

        p:=p+f1;

        p:=p1+(f1+fun(pp,p))/2;

        writeln('p1=',p:2:2);

        p1:=p;

        i:=i+1;

      until i>n

    end; 

    var p,pp: Double;

        n: integer;

    begin

      clrscr;

      write('p=');

      read(p);

      write('P=');

      read(pp);

      write('n=');

      read(n);

      euler(pp,p,n);j

      read(n);

    end. 

  • 9 Листинг программы  в Delphi
  •  

    unit Unit2; 

    interface 

    uses

      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

      Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls, Buttons, TeEngine, Series,

      TeeProcs, Chart, Grids,Math; 

    type

      TForm2 = class(TForm)

        PageControl1: TPageControl;

        TabSheet1: TTabSheet;

        TabSheet2: TTabSheet;

        TabSheet3: TTabSheet;

        PageControl2: TPageControl;

        TabSheet4: TTabSheet;

        TabSheet5: TTabSheet;

        PageControl3: TPageControl;

        TabSheet6: TTabSheet;

        TabSheet7: TTabSheet;

        Image1: TImage;

        PageControl4: TPageControl;

        TabSheet8: TTabSheet;

        TabSheet9: TTabSheet;

        Image2: TImage;

        Image3: TImage;

        Image4: TImage;

        BitBtn1: TBitBtn;

        Label1: TLabel;

        Edit1: TEdit;

        Label2: TLabel;

        Edit2: TEdit;

        StringGrid1: TStringGrid;

        Chart1: TChart;

        Series1: TLineSeries;

        Label3: TLabel;

        Edit3: TEdit;

        Label4: TLabel;

        Edit4: TEdit;

        StringGrid2: TStringGrid;

        Chart2: TChart;

        BitBtn2: TBitBtn;

        Series2: TLineSeries;

        Label5: TLabel;

        Edit5: TEdit;

        Label6: TLabel;

        Edit6: TEdit;

        StringGrid3: TStringGrid;

        Chart3: TChart;

        Label7: TLabel;

        Edit7: TEdit;

        BitBtn3: TBitBtn;

        Series3: TLineSeries;

        Label8: TLabel;

        Edit8: TEdit;

        Label9: TLabel;

        Edit9: TEdit;

        Label10: TLabel;

        Edit10: TEdit;

        procedure BitBtn1Click(Sender: TObject);

        procedure BitBtn2Click(Sender: TObject);

        procedure BitBtn3Click(Sender: TObject);

      private

        { Private declarations }

      public

        { Public declarations }

      end; 

    var

      Form2: TForm2;

      a,b,c,pp,p,p1, f1: double;

      i,n: integer; 

    implementation 

    {$R *.dfm} 

    function fun(p:double):double;

    begin

      fun := 1*p-0.0001*sqr(p);

    end; 
     

    function fun2(p:double):double;

    begin

      fun2 := -1*p+0.001*sqr(p);

    end; 

    function fun3(pp:double;p:double;a:double;b:double;c:double):double;

    begin

      fun3 := a*p*(pp-p)+b*exp(c*ln(pp-p));

    end; 
     

    procedure TForm2.BitBtn1Click(Sender: TObject);

    begin

    p1:=StrToFloat(Edit1.Text);

    n:=StrToInt(Edit2.Text);

    Series1.Clear;

    StringGrid1.RowCount:=n+1;

    StringGrid1.Cells[0,0]:='t';

    StringGrid1.Cells[1,0]:='p';

      i:=1;

      repeat

        f1:=fun(p);

        p:=p+f1;

        p:=p1+(f1+fun(p))/2;

    Информация о работе Технолгия разработки програмных продуктов