Модульное программирование на примере сортировки последовательностей

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

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

Модульное программирование. Здесь основная идея заключалась в том, чтобы "спрятать" данные и процедуры внутри независимых программных единиц - модулей. Эту идею впервые реализовал Н. Вирт в алгоритмическом языке Modula (1975-1979 годы), а затем "подхватили" и остальные, распространенные в то время языки программирования. Например, известные системы программирования Turbo Pascal и Turbo С.

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

модульное программирование.doc

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

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.

4. Инструкция для пользователя

    Моя программа  позволяет:

  • Заполнять файл с клавиатуры
  • Заполнять файл случайными числами
  • Заполнять файл из другого файла
  • Сортировать файл двумя разными способами
  • Считать количество сравнений и перестановок, выполненных при сортировке
  • Сохранять файл

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

    Введем имя  файла:

    После того как  имя файла введено, пользователь выбирает как он хочет заполнить файл.

    Если выбрано  заполнение с клавиатуры, то программа  выводит строку «введите число», куда пользователь вводит последовательность чисел через Enter.

    Введем для  числа: 4 7 1 9 34. Далее программа запрашивает  каким видом сортировки пользователь хочет воспользоваться:

    После выбора одной из сортировки, программа выводит  исходный массив:

    Затем, после  нажатия на Enter, отсортированный  массив, количество сравнений и количество перестановок.

Информация о работе Модульное программирование на примере сортировки последовательностей