Ход отладки программы и контрольный пример

Автор: Пользователь скрыл имя, 13 Мая 2012 в 15:31, курсовая работа

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

Персональные компьютеры – это универсальные устройства для обработки информации, они могут выполнять любые действия в этом направлении. Но для этого надо составить для компьютера на понятном ему языке точную и подробную программу.

Оглавление

Введение 5
1. Теоретическая часть 6
1.1. Постановка задачи 6
1.2. Описание языка программирования 6
2. Экспериментальная часть 16
2.1. Описание структурной схемы алгоритма 16
2.2. Описание программного кода 20
2.3. Ход отладки программы и контрольный пример 21
Заключение 23
Список литературы 24
Приложение(листинги программ) 25

Файлы: 1 файл

kursovaya.doc

— 251.50 Кб (Скачать)

Процедура Zadan – вывод задания на экран.

Процедура Zapolnran – заполнение массива случайным образом.

Процедура Zapolnru заполнение массива –с клавиатуры.

Процедура Zapolnizfile - заполнение массива из файла.

Процедура Vivod – вывод массива на экран.

Процедура Preobraz – преобразование массива.

Процедура Obrvek – образование вектора из строки массива.

Процедура Summa – вычисление суммы элементов между первым и вторым нулевыми элементами.

Процедура Proizvedenie - вычисление произведения элементов между первым и вторым нулевыми элементами.

Процедура Sohranvfile – сохранение массива в файл.

 

2.3. Ход отладки программы и контрольный пример

 

После набора текста программы приступаем к ее отладке или компиляции. Для компиляции программы выбираем из главного меню раздел Compile и из появившегося окна также раздел Compile (или можно нажать комбинацию клавиш Alt+F9). После этого производится компиляция программы. Если в процессе компиляции отладчик интегрированной среды обнаружит в программе ошибки, то отладка останавливается и на экран в верхнюю строку окна редактирования выводится сообщение об ошибке с указанием ее номера и кратким описанием. После этого необходимо устранить ошибку и вновь повторить процесс компиляции. В процессе написания данной программы возникли следующие трудности:

              - неверно вычислялись сумма и произведемие в случаях когда в векторе ноль один или  нули соседние элементы.

              - при выводе векторов на экран ныводилась лишняя запятая.

              - после завершения программы нужно было организовать выход в главное меню.

В качестве тестового примера при отладке программы использовалась матрица 410 со следующими значениями элементов:

 

2              4              0               4               -1              3               0               3               -3              4

6               -1               0               5               2               5               -7               8               2              8

0              -4               0               2              -4               0               5              -2              3              6

0              3              -6              1              9              7              3              -7              -8              4

 

              Умножил каждый элемент столбца на минимум этого столбца:

 

2*0              4*(-4)    0*-6    4*1 -1*(-4)    3*0    0*(-7)     3*(-7)     -3*(-8)   4*4

6 *0              -1*(-4) 0*-6    5*1    2 *(-4)    5*0    -7*(-7)    8*(-7)    2*(-8)     8*4

0*0              -4*(-4)  0*-6    2*1    -4*(-4)   0*0    5*(-7)    -2*(-7)    3*(-8)    6*4

0*0              3*(-4)   -6*-6   1*1   9*(-4)    7*0  3*(-7)     -7*(-7)  -8*(-8)   4*4

             

              В результате умножения каждого элемента столбца на минимум этого столбца была получена новая матрица:

 

   0              -16                 0                 4                 4                 0                 0              -21                24                16

   0                 4                 0                 5                -8                 0                49              -56              -16                32

   0                16                 0                 2                16                 0              -35                14              -24                24

   0              -12                36                 1              -36                 0              -21                49                64                16

 

Из первых четырех строк полученной матрицы формировал одномерные массивы. Нашел в них сумму и произведение элементов между первым и вторым нулевыми элементами.

 

А={0              -16                 0                 4                 4                 0                 0              -21                24                16}  

сумма = -16                            произведение= -16

B={0                 4                 0                 5                -8                 0                49              -56              -16                32}  

сумма = 4                            произведение= 4 

C={0                16                 0                 2                16                 0              -35                14              -24                24}   

сумма = 16                            произведение= 16

D={0              -12                36                 1              -36                 0              -21                49                64                16}  

сумма = -11                            произведение= 15552

 

 

 

 

 

 

 

 

 

После ручного расчета была запущена программа, с клавиатуры введена тестовая матрица и в результате расчета получен следующий результат:

 

Рис. 4.        Результат выполнения программы

Заключение.

В ходе выполнения курсовой работы я углубил свои знания в программировании и хорошо ознакомился с алгоритмическим языком программирования Pascal. Изучил среду программирования Turbo Pascal 7. Познакомился с основными методами и принципами программирования в этой среде. Понял, что язык Turbo Pascal – это строго типизированный язык, в основе которого лежит хорошо знакомый программистам Pascal. Turbo Pascal позволяет создавать самые различные программы: от простейший до программ управления распределенными базами.

В программе используются оригинальные процедуры которые обеспечивают выполнение операций над массивами.

Удобный пользовательский интерфейс делает программу доступной пользователю любой квалификации.

Я считаю, что данная программа хоть и не самая лучшая в своем, можно сказать жанре, но она может служить отличной основой для как новичков в области программирования, так и довольно опытных пользователей, так как существуют перспективы для расширения ее возможностей, благодаря Turbo Pascal7.

 

 

Список литературы.

 

1.      ГОСТ    19.003-80.    Единая   система   программной документации.  Схемы алгоритмов  и  программ.   Обозначения условные и графические. -М.: Государственный комитет СССР по стандартам. 1988, -144 с.

2.      Алиев В. К. Информатика в задачах, примерах, алгоритмах. –М.: СОЛОН – Р, 2003. –185 с.

3.      Фаронов В.В. Турбо Паскаль 7.0 М.: Нолидж,2002

4.      Файсман А. Профессиональное программирование на Турбо – Паскале. –Ташкент, Info & F, 1992, –270 с.

5.      Епанешников А.М.,  Епанешников В.А. Программирование в среде Turbo Pascal 7.0. -М.: Диалог-МИФИ, 1995, -288 с.

6.      Методические указания по выполнению курсовых работ по дисциплине "Алгоритмические языки и программирование" для студентов специальности 23.03 всех форм обучения./Воронеж. Политехн. ин-т; Сост. В.М. Шишкин, Н.Э. Самойленко. Воронеж. 1990.- 34 с.

 

 

 

 

 

 

 

 

 

 

Приложение. Листинг программы.

 

Program Kursovaya_21;

Uses crt, Graph;

Const k=10;

type vektor=array[1..k] of integer;

     matric=array[1..k,1..k] of integer;

VAR

   A,B: matric;

   G: vektor;

   Ch:Char;

   GD,GM,TecDeystvie,i,j,M,N,min,sum,proizv:integer;

 

Procedure SlowText(x,y,c:integer; s:string);

     var i, d:integer;

     begin

     D:=Length(s);

     FOR i:=0 to d-1 do

     Begin

     outtextxy(x+i*c,y,S[i+1]);

     delay(100);

     End;

     end;

Procedure menu;

     begin

     InitGraph(GD,GM,'');

     TecDeystvie:=1;

     SetTextStyle(5, 0 ,0);

     SetColor(9);

     OutTextXY(100,0,'Курсовая работа Полева А. В.');

     OutTextXY(230,40,'Вариант  21.');

     SetTextStyle(10, 0 ,6);

     SetColor(4);

     OutTextXY(230,70,'Menu');

     SetTextStyle(2, 0 ,0);

     OutTextXY(350,460, 'Корпорация анДре (anDre Corporation), 2009-2010');

     SetColor(5);

     rectangle(20,200,620,445);

     rectangle(15,195,625,450);

     SetTextStyle(7,0,0);

     OutTextXY(40,260,'Заполнить');

     OutTextXY(120,330,'массив');

     rectangle(30,250,610,395);

     rectangle(25,245,615,400);

     line(280, 250, 280, 395);

     line(285, 250, 285, 395);

     SetTextStyle(3, 0 ,0);

     SetColor(4);

     OutTextXY(300,200,'Постановка задачи');

     SetColor(2);

     OutTextXY(300,250,'С клавиатуры');

     OutTextXY(300,300, 'Случайным образом');

     OutTextXY(300,350, 'Из файла');

     OutTextXY(300,400, 'Выход');

     End;

Procedure zadan;

    begin

    cleardevice;

    SetTextStyle(7, 0 ,7);

    setColor(2);

    slowText(200,0,40,'Задача');

    setColor(5);

    rectangle(10,130,630,400);

    SetTextStyle(2, 0 ,0);

    setcolor(9);

    slowText(35,140,6,'Дан двумерный массив размером M x N. Преобразовать его по правилу  - все элементы каждого столбца');

    slowText(20,160,6,'матрицы умножить на минимальный элемент этого столбца. Из первых четырех строк массива сформировать');

    slowText(20,180,6,'четыре новых вектора (одномерные массивы). для каждого вектора найти сумму и произведение элементов');

    slowText(20,200,6,'массива расположенных между между первым и вторым нулевыми элементами.');

    SetTextStyle(2, 0 ,9);

    repeat

    delay(2000);

    setcolor(2);

    OutTextXY(30,410,'Для возврата в меню нажмите Enter');

    delay(7000);

    setcolor(0);

    OutTextXY(30,410,'Для возврата в меню нажмите Enter');

    until keypressed;

    readln;

    CloseGraph;

    end;

Procedure Zapolnran (H: matric; var M,N:integer);

    var i,j: integer;

    begin

    Delay(3000);

    Randomize;

    TextColor(2);

    Writeln('Vvedite kolichestvo strok ot 1 do 10');

    TextColor(4);

    readln(M);

    TextColor(2);

    Writeln('Vvedite kolichestvo stolbcov ot 1 do 10');

    TextColor(4);

    readln(N);

    TextColor(4);

    For i:=1 to M do

    begin

    For j:=1 to N do

    begin

    A[i,j]:=round(random(10))-2;

    end;

    end;

    end;

Procedure Zapolnru (H: matric; var M,N:integer);

    var i,j: integer;

    begin

    TextColor(2);

    Writeln('Vvedite kolichestvo strok ot 1 do 10');

    TextColor(4);

    readln(M);

    TextColor(2);

    Writeln('Vvedite kolichestvo stolbcov ot 1 do 10');

    TextColor(4);

    readln(N);

    for i:=1 to M do

    for j:=1 to N do

    begin

    TextColor(2);

    write('Vvedite element A[',i,',',j,']=');

    TextColor(4);

    readln(A[i,j]);

    end;

    end;

Procedure Zapolnizfile (H: matric; var M,N:integer);

    var i,j: integer;

    f: text;

    S: string;

    begin

    TextColor(2);

    writeln('vvedite imya faila');

    TextColor(4);

    readln(S);

    assign(f,s);

    reset(f);

    read(f,M);

    read(f,N);

    for i:=1 to M do

    begin

    for j:=1 to N do

    begin

    read(f,A[i,j]);

    end;

    end;

    close(f);

    end;

Procedure Vivod (H: matric; M,N:integer);

    var i,j: integer;

    begin

    TextColor(4);

    For i:=1 to M do

    begin

    For j:=1 to N do

    begin

    Write(' ',H[i,j]:4);

    delay(200);

    end;

    writeln('  ');

    end;

    TextColor(2);

    Writeln('Dla prodoljenia najmite Enter');

    readln;

    end;

Procedure preobraz (H: matric; M,N:integer; var B: matric);

    begin

    for j:=1 to N do

    begin

    min:=A[1,j];

    for i:=1 to M do

    begin

    if A[i,j]<min then

    min:=A[i,j];

    end;

Информация о работе Ход отладки программы и контрольный пример