Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 21:16, курсовая работа
Модульное программирование. Здесь основная идея заключалась в том, чтобы "спрятать" данные и процедуры внутри независимых программных единиц - модулей. Эту идею впервые реализовал Н. Вирт в алгоритмическом языке Modula (1975-1979 годы), а затем "подхватили" и остальные, распространенные в то время языки программирования. Например, известные системы программирования Turbo Pascal и Turbo С.
function vubor_metoda_sort:integer;
function vubor_zapoln:integer;
procedure Frame(l:integer; t:integer; w:integer; h:integer);
procedure zap_c_klav(name:string);
procedure finish;
implementation
procedure Frame(l:integer; t:integer; w:integer; h:integer);
var x,y:integer;
oldTextAttr:byte;
i,j:integer;
c1,c2,c3,c4,c5,c6:char;
begin
TextBackGround(black);
oldTextAttr:=TextAttr;
TextBackGround(green);
c1:=chr(218);
c2:=chr(196);
c3:=chr(191);
c4:=chr(179);
c5:=chr(192);
c6:=chr(217);
GoToXY(l,t);
write(c1);
For i:=1 to w-2 do
write(c2);
write(c3);
y:=t+1;
x:=l+w-1;
For i:=1 to h-2 do
Begin
GoToXY(l,y);
write(c4);
GoToXY(x,y);
write(c4);
y:=y+1;
end;
GoToXY(l,y);
write(c5);
For i:=1 to w-2 do
write(c2);
write(c6);
For i:=l+1 to w+l-2 do
For j:=t+1 to t+h-2 do
begin
GoToXY(i,j);
write(' ');
end;
TextAttr:=oldTextAttr;
end;
Procedure MenuToScr;
var i:integer;
begin
TextAttr := def;
ClrScr;
Frame(20,5,40,15);
TextColor(0);
TextBackGround(2);
for i:=1 to m do begin
GoToXY(x,y+i-1);
write(menu[i]);
end;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr := def;
end;
function vubor_metoda_sort:integer;
var oldTextAttr:byte;
rep: boolean;
begin
m:=2;
menu[1]:='сорт. Методом простого слияния;
menu[2]:='сортировка методом естественного слияния';
punkt:=1;
x:=25;
y:=10;
MenuToScr;
TextAttr := NORM;
rep := true;
repeat
ch:=ReadKey;
if ch=char(0) then begin
ch:=ReadKey;
case ch of
chr(80):
if punkt<m then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt+1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
chr(72):
if punkt>1 then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt-1;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
end;
end
else
if ch=chr(13) then begin
vubor_metoda_sort := punkt;
rep := false;
end;
until rep = false;
end;
procedure vuvod_mass (name:string);
var i,c:integer;
f:file of integer;
begin
Assign(f,name);
reset(f);
TextAttr := def;
ClrScr;
Frame(20,5,40,15);
TextAttr:= NORM;
GoToXY(22,7);
For i:=1 to n do
begin
{while not eof(f) do begin }
read(f,c);
write ( c,' ');
end;
readln;
close(f);
end;
procedure finish;
begin
TextAttr := def;
ClrScr;
Frame(20,5,40,15);
TextAttr:= NORM;
GoToXY(22,7);
write('Конец');
readln;
end;
procedure vuvod_kol;
begin
GoToXY(22,8);
writeln('Кол-во сравнений',kol_sr );
GoToXY(22,9);
writeln('Кол-во перестановок',kol_per );
readln;
end;
function vubor_faila: string;
var
i:integer;
s: string;
begin
TextAttr:= def;
ClrScr;
Frame(20,5,40,15);
TextBackGround(green);
TextColor(Yellow);
GoToXY(22,12);
write('д ©« ');
TextBackGround(black);
For i:= 15 to 40 do
begin
write(' ');
end;
GoToXY(27,12);
readln(s);
vubor_faila := s;
end;
function vubor_zapoln:integer;
var
rep: boolean;
begin
m:=3;
menu[1]:='заполнение с клавиатуры';
menu[2]:='заполнение случайными числами';
menu[3]:='заполнение из файла';
punkt:=1;
x:= 25;
y:=10;
{NORM := TextAttr; }
MenuToScr;
TextAttr := NORM;
rep := true;
repeat
ch:=ReadKey;
if ch=char(0) then begin
ch:=ReadKey;
case ch of
chr(80):
if punkt<m then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt+1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
chr(72):
if punkt>1 then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt-1;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
end;
end
else
if ch=chr(13) then begin
vubor_zapoln := punkt;
rep := false;
end;
until rep = false;
{ TextAttr:=oldTextAttr;}
end;
procedure zap_c_klav(name:string);
var c,i:integer;
f:file of integer;
begin
Assign(f,name);
{$I-}
rewrite(f);
{$I+}
For i:=1 to n do
begin
TextAttr:=def;
ClrScr;
Frame(20,5,40,15);
TextAttr:= NORM;
GoToXY(22,7);
write('такого файла не существует');
readln (c);
write(f,c);
end;
writeln;
close(f);
end;
end.
Моя программа позволяет:
При запуске программы в начале запрашивается имя файла, в который будет сохранен результат:
Введем имя файла:
После того как имя файла введено, пользователь выбирает как он хочет заполнить файл.
Если выбрано заполнение с клавиатуры, то программа выводит строку «введите число», куда пользователь вводит последовательность чисел через Enter.
Введем для числа: 4 7 1 9 34. Далее программа запрашивает каким видом сортировки пользователь хочет воспользоваться:
После выбора одной из сортировки, программа выводит исходный массив:
Затем, после нажатия на Enter, отсортированный массив, количество сравнений и количество перестановок.
Информация о работе Модульное программирование на примере сортировки последовательностей