Реферат: Создание текстового редактора в Turbo Pascal

Министерство энергетикиРФ

Уфимский Энергетический Колледж

Специальность 2202Курсовая работа

по Основамалгоритмизации и программирования

на тему“Создание текстового редактора”

Выполнил:    студент группы  2 – АС – 3  ____________ Тимофеев Т.П.

Проверил:                                                      ____________ Ганиев А.Э.

Уфа –2001г.

Содержание

1.<span Times New Roman"">      

Задание ……………………………………………………… стр. 3

2.<span Times New Roman"">      

Описание программы ………………………………………. стр. 4

3.<span Times New Roman"">      

Листинг ……………………………………………………… стр. 5

3.1.<span Times New Roman"">   

Исходный текст программы .…………………………. стр. 5

3.2.<span Times New Roman"">   

Текст модуля ……………….…………………………… стр.10

4.<span Times New Roman"">      

Заключение …………………………………………………… стр.18

5.<span Times New Roman"">      

Список использованной литературы ……………………… стр.19<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Задание.

Создать программу, обеспечивающую:

1.<span Times New Roman"">      

2.<span Times New Roman"">      

3.<span Times New Roman"">      

4.<span Times New Roman"">      

5.<span Times New Roman"">      

Программадолжна быть написана на Turbo Pascal в текстовом режиме с использованием любыхмодулей, которые необходимы для её реализации (допускаются также модулипользователя).

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Описание программы.

Timofeev Word v.1.0– этопрограмма для работы с текстом. С её помощью можно создавать, удалять,переименовывать, открывать, копировать файлы друг в друга. Конечно, всё этоможно проделать и в MS-DOS, но преимущество этой программы в том, что все этикоманды тщательно спрятаны под красивыми дружественным интерфейсом моейпрограммы.

Таккак в программе Timofeev Word v.1.0много процедур, я создал собственный модуль Tim.tpu, куда их (процедуры) и отправил.

Процедуры:

1.<span Times New Roman"">      

Table– рисует оболочкупрограммы.

2.<span Times New Roman"">      

Enter_Sandman–происходит проигрывание музыки на песню группы Metallica — “Enter Sandman”. Я не стал делать так, чтобы при нажатиикакой-либо клавиши она прекращала играть, потому что для меня (не знаю как длядругих) это свято.

3.<span Times New Roman"">      

Menu– эта процедура вызывает меню, где содержитсяинформация о программе и помощь (если её так можно назвать).

4.<span Times New Roman"">      

Keys– процедура, считывающая код нажатой клавиши.

В этой программе, конечно много недоработок, но янадеюсь, что вскоре появятся дополненные версии 1.2, 1.3, 2.0,2.1,……, n.m.

Эта программа может использоваться в о-о-о-о-о-оченьмаленьких офисах, которые не имеют возможности приобрести качественныйлицензионный продукт, к примеру Microsoft Office’9x, ’2000 (если кто-то имеетна примете такой офис, я с удовольствием продам, за символическую цену, свойпрограммный  продукт). Также программаможет использоваться для обучения детей в детских садах работе на персональныхкомпьютерах. И, наконец, ей могут воспользоваться студенты I курса для сдачи еёкак Курсовой работы на следующем курсе. 

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Листинг.

Исходный текст программы.

Program Redaktor;

 Uses Crt,Tim; {использовать модули Crt и Tim}

 Label b; {метка}

 Var  {тело}

   Programname,Cmdline:string; 

   nn,i,x,y:integer;

   f1,f1_new:text;

   Name,New_name:string[12];

   txt,text:string; 

   ch:char;

begin

 i:=1;

 textbackground(red);

 clrscr;

textcolor(yellow);

gotoxy(22,10);

writeln('Текстовыйпроцессор Timofeev Word');

gotoxy(22,11);

writeln('      Версия 1.0 (2001 год)');

gotoxy(40,15);

writeln('СоставилТимофеев Тимур (2-АС-3)');

textcolor(green);

gotoxy(40,16);

writeln('Всеправа защищены.');

gotoxy(40,17);

writeln('Незаконноекопирование');

gotoxy(40,18);

writeln('илиподделка без согласия автора');

gotoxy(40,19);

writeln('преследуетсяпо понятиям !!!');

delay(5000);

textcolor(yellow);

table;

gotoxy(2,21);

write('Введитеимя:');

readln(name);

assign(f1,name);

rewrite(f1);

gotoxy(2,21);

write('Вводитетекст !!!          ');

gotoxy(1,2);

      repeat

      write(chr(179),':>');

      readln(txt);

      writeln(f1,txt);

   until txt='';

 close(f1);

 gotoxy(2,21);

 writeln('Ввод окончен, нажмите чего-нибудь ...');

   repeat

      readkey;

      keys(nn);

      case nn of {определяет нажатиефункциональных клавиш}

        59:menu; {F1}

       60:begin {F2}

table;

gotoxy(2,21);

write('                                      ');

gotoxy(2,21);

write('Введитеимя:');

readln(name);

assign(f1,name);

rewrite(f1);

gotoxy(2,21);

write('Вводитетекст !!!          ');

gotoxy(1,2);

          repeat

write(chr(179),':>');

readln(txt);

writeln(f1,txt);

untiltxt='';

        close(f1);

        gotoxy(2,21);

        writeln('Ввод окончен, нажмитечего-нибудь ...');

        end;

61:begin  {F3}

gotoxy(2,21);

write('Введитеимя файла, в который копир-я файл ',name,'->');

readln(new_name);

reset(f1);

assign(f1_new,new_name);

append(f1_new);

  while not eof(f1) do

    begin

      readln(f1,txt);

      writeln(f1_new,txt);

    end;

close(f1);

close(f1_new);

gotoxy(2,21);

writeln('Файл',name,' скопирован в ',new_name,' нажмите

чего-нибудь...');

end;

62:begin{F4}

gotoxy(2,21);

write('                                       ');

gotoxy(2,21);

write('Введитеновое имя файла:');

readln(new_name);

assign(f1,name);

rename(f1,new_name);

gotoxy(2,21);

writeln('Файл',name,' перименован в ',new_name,' нажмите

чего-нибудь… ');

end;

63:begin  {F5}

erase(f1);

gotoxy(2,21);

writeln('Файл',name,' удалён с диска, нажмите чего-нибудь ...');

end;

64:begin     {F6}

{$I-}

          repeat

gotoxy(2,21);

write('Введитеимя файла для считывания текста ->');

readln(name);

assign(f1,name);

reset(f1);

              if ioresult<>0 then

begin

gotoxy(2,21);

writeln('Файлне найден ...                       ');

close(f1);

end;

          until ioresult=0;

{$I+}

table;

gotoxy(1,2);

while noteof(f1) do

begin

readln(f1,txt);

writeln(chr(179),txt);

end;

close(f1);

gotoxy(2,21);

write('Файлсчитан, нажмите чего-нибудь ...            ');

end;

68:gotob;   {F10} {Происходит выход на метку}

end;

untili<0;   {считывай функциональныеклавиши пока i<0,

                    а т.к. i=1 и не изменяется,то этот процесс бесконечен}

b:end.

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Текст модуля.

Unit Tim;

Interface

UsesCrt,Dos;

Procedurekeys(var n:integer);

Proceduretable;

ProcedureEnter_sandman;

Proceduremenu;

Implementation

Procedurekeys(var n:integer);{процедура нажатия клавиши}

var c:char;

begin

  if keypressed then

    begin

    c:=readkey;

       if c=#0 then c:=readkey;

    n:=ord(c);

    end;

end;

ProcedureEnter_sandman; {музыка}

Const

  m:array [1..6] of integer=(165,330,392,233,220,330);

  t:array [1..6] ofinteger=(1100,600,600,600,1100,600);

  e:array [1..7] ofinteger=(165,165,165,165,165,165,170);

  r:array [1..7] ofinteger=(600,600,600,600,600,600,1100);

  w:array [1..5] ofinteger=(167,167,167,294,233);

  q:array [1..5] ofinteger=(1100,600,600,600,1100);

  o:array [1..9] ofinteger=(165,182,165,182,165,196,165,182,165);

  b:array [1..9] ofinteger=(600,1100,600,600,600,600,600,600,3000);

  var a,u,z,x:integer; i:byte;

begin

  for a:=1 to 4 do

    begin

       for i:=1 to 6 do

          begin

  sound(m[i]);

  delay(t[i]);

  nosound;

end;

 end;

     for u:=1 to 3 do

        begin

           for i:=1 to 7 do

              begin

  sound(e[i]);

  delay(r[i]);

  nosound;

  end;

        end;

     for z:=1 to 3 do

        begin

           for i:=1 to 5 do

              begin

  sound(w[i]);

  delay(q[i]);

  nosound;

  end;

       end;

     for i:=1 to 9 do

        begin

  sound(o[i]);

  delay(b[i]);

  nosound;

  end;

end;

Procedure table;{рисует таблицу}

  var

  w,h:integer;

  c1,c2,c3,c4,c7,c5,c6,c8,c9,c10:char;

begin

  textbackground(blue);

  clrscr;

  textcolor(yellow);

w:=1;

h:=1;

c1:=chr(218);

c2:=chr(196);

c3:=chr(191);

c4:=chr(179);

c5:=chr(192);

c6:=chr(217);

c7:=chr(195);

c8:=chr(180);

c9:=chr(193);

c10:=chr(194);

      for h:=2 to 25 do

         begin

gotoxy(w,h);

write(c4);

end;

gotoxy(w,h);

write(c5);

forw:=2 to 79 do

begin

gotoxy(w,h);

write(c2);

end;

gotoxy(w,h);

write(c6);

forh:=24 downto 1 do

begin

gotoxy(w,h);

write(c4);

end;

gotoxy(w,h);

write(c3);

forw:=78 downto 1 do

begin

gotoxy(w,h);

write(c2);

end;

gotoxy(w,h);

write(c1);

gotoxy(1,20);

write(c7);

forw:=2 to 59 do

begin

gotoxy(w,20);

write(c2);

end;

gotoxy(w,1);

write(c10);

forh:=2 to 24 do

begin

gotoxy(w,h);

write(chr(179));

end;

gotoxy(w,20);

write(c8);

gotoxy(59,25);

write(c9);

gotoxy(62,4);

writeln('F1-Помошь');

gotoxy(62,5);

writeln('F2-Новый');

gotoxy(62,6);

writeln('F3-Копировать');

gotoxy(62,7);

writeln('F4-Переименовать');

gotoxy(62,8);

writeln('F5-Удалить');

gotoxy(62,9);

writeln('F6-Просмотреть');

gotoxy(62,10);

writeln('F10-Выход');

end;

Proceduremenu;

Const

     NORM=$17;{ цвет невыделеного пункта }

     SEL=$70;{ цвет выделенного пункта }

     N=3;

var

     menu:array[1..N] of string[12];{ названияпунктов меню }

     punkt:integer;{ номер выделенного пункта }

     ch:char;{ введенный символ }

     x,y,i:integer;{ координаты первой строкименю }

Procedurepunkt1;

begin

     ClrScr;

     writeln('Выполнил студент гр. 2-АС-3Тимофеев Т.П. (2001 г.)');

     writeln('Курсовая работа-а-а-а-а-а-а-а!!!!!!!!!!!!!!!!!');

     readln;

end;

Procedurepunkt2;

begin

     ClrScr;

     writeln('Тута всё понятно даже ребёнку.');

     readln;

end;

ProcedureMenuToScr;{ вывод меню на экран }

vari:integer;

begin

     ClrScr;

     for i:=1 to N do begin

          GoToXY(x,y+i-1);

          write(menu[i]);

     end;

     TextAttr:=SEL;

     GoToXY(x,y+punkt-1);

     write(menu[punkt]);{ выделим строку меню }

     TextAttr:=NORM;

end;

begin

     menu[1]:=' О программе ';

     menu[2]:=' Помощь      ';

     menu[3]:=' Выход       ';

     punkt:=1;

     x:=5;

     y:=5; TextAttr:=NORM;

     MenuToScr;

     repeat

          ch:=ReadKey;

          if ch=char(0) then begin

               ch:=ReadKey;

               case ch of

                    chr(80):{ стрелка вниз }

                         if punkt<N thenbegin

                             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 thenbegin

                             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 {нажата клавиша }

                    case punkt of

                         1:punkt1;

                         2:punkt2;

                         3:i:=2;{ выход }

                    end;

                    MenuToScr;

               end;

     until i=2;

end;

end.

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Заключение.

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

Программаоснована на стандартных процедурах и функциях модуля Crt: Rename, Erase, Append, Rewrite, Reset, Assign и др.

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">
Список использованной литературы.

1.<span Times New Roman"">      

Попов В.Б.“TurboPascal для школьников”:

Учеб.пособие.– 3-е доп. изд. – М.: Финансы и статистика, 2001г.

2.<span Times New Roman"">      

Вирт Н.“Алгоритмыи структуры данных”:

Пер.с англ. – М.: Мир, 1989г.

3.<span Times New Roman"">      

Прайс Д.“Программирование на языке Паскаль: Практическое руководство”.

Пер.с англ. – М.: Мир, 1987г.

еще рефераты
Еще работы по программированию, базе данных