Автор: Пользователь скрыл имя, 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
Процедура Zadan – вывод задания на экран.
Процедура Zapolnran – заполнение массива случайным образом.
Процедура Zapolnru заполнение массива –с клавиатуры.
Процедура Zapolnizfile - заполнение массива из файла.
Процедура Vivod – вывод массива на экран.
Процедура Preobraz – преобразование массива.
Процедура Obrvek – образование вектора из строки массива.
Процедура Summa – вычисление суммы элементов между первым и вторым нулевыми элементами.
Процедура Proizvedenie - вычисление произведения элементов между первым и вторым нулевыми элементами.
Процедура Sohranvfile – сохранение массива в файл.
2.3. Ход отладки программы и контрольный пример
После набора текста программы приступаем к ее отладке или компиляции. Для компиляции программы выбираем из главного меню раздел Compile и из появившегося окна также раздел Compile (или можно нажать комбинацию клавиш Alt+F9). После этого производится компиляция программы. Если в процессе компиляции отладчик интегрированной среды обнаружит в программе ошибки, то отладка останавливается и на экран в верхнюю строку окна редактирования выводится сообщение об ошибке с указанием ее номера и кратким описанием. После этого необходимо устранить ошибку и вновь повторить процесс компиляции. В процессе написания данной программы возникли следующие трудности:
- неверно вычислялись сумма и произведемие в случаях когда в векторе ноль один или нули соседние элементы.
- при выводе векторов на экран ныводилась лишняя запятая.
- после завершения программы нужно было организовать выход в главное меню.
В качестве тестового примера при отладке программы использовалась матрица 410 со следующими значениями элементов:
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,
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;
Информация о работе Ход отладки программы и контрольный пример