Міністерство енергетики РФ p>
Уфімський Енергетичний Коледж p>
Курсова робота p>
з Основ алгоритмізації та програмування p>
на тему "Створення текстового редактора" b> p>
Виконав: студент групи 2 - АС - 3 ____________ Тимофєєв Т.П. p>
Перевірив: ____________
Ганієв А.Е. p>
Уфа - 2001р. p>
Зміст p>
Завдання ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 3
Опис програми ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... стор 4 p>
Лістинг ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 5 p>
Оригінальний текст програми. ... ... ... ... ... ... ... ... ... .... стор 5 p>
Текст модуля ... ... ... ... ... .... ... ... ... ... ... ... ... ... ... ... .. стор.10 p>
Висновок ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. стор.18 p>
Список використаної літератури ... ... ... ... ... ... ... ... ... стор.19 p>
Завдання. p>
Створити програму, що забезпечує: p>
Створення файлів. p>
Перейменування файлів. p>
Видалення файлів. p>
Копіювання файлу в іншій файл. p>
Відкриття файлу для перегляду. p>
Програма повинна бути написана на Turbo Pascal в текстовому режимі з використанням будь-яких модулів,
які необхідні для її реалізації (допускаються також модулі користувача). p>
Опис програми. p>
Timofeev Word v.1.0 b> - це програма для роботи з текстом. З її допомогою
можна створювати, видаляти, перейменовувати, відкривати, копіювати файли один в одного. Звичайно, все це можна зробити і в MS-DOS, але перевага цієї
програми в тому, що всі ці команди ретельно заховані під красивим і дружнім
інтерфейсом моєї програми. p>
Так як у програмі Timofeev Word v.1.0 b> багато процедур, я створив власний модуль Tim.tpu b>, куди
їх (процедури) і відправив. p>
Процедури: b> p>
Table b> - малює оболонку програми. p>
Enter_Sandman b> - відбувається програвання музики на пісню групи Metallica - "Enter Sandman". Я не став робити так, щоб при
натисканні будь-якої клавіші вона припиняла грати, тому що для мене (не знаю як для інших) це свято. p>
Menu b> - ця процедура викликає меню, де міститься інформація про програму і допомога (якщо
її так можна назвати). p>
Keys b> - процедура, що зчитують код натиснутою клавіші. p>
У цій програмі, звичайно багато недоробок, але я сподіваюся, що незабаром з'являться доповнені версії 1.2,
1.3, 2.0,2.1, ... ..., n.m. p>
Ця програма може використовуватися в о-о-о-о-о-дуже маленьких офісах, які не мають можливості
придбати якісний ліцензійний продукт, наприклад Microsoft Office'9x, '2000 (якщо хтось має на прикметі такий офіс, я з задоволенням продам, за
символічну ціну, свій програмний продукт). Також програма може використовуватися для навчання дітей у
дитячих садах роботі на персональних комп'ютерах. І, нарешті, їй можуть скористатися студенти I курсу для здачі її як Курсовий роботи на наступному
курсі. p>
Лістинг. p>
Оригінальний текст програми. p>
Program Redaktor; p>
Uses Crt, Tim; (використовувати модулі Crt і Tim) p>
Label b; (мітка) p>
Var (тіло) p>
Programname, Cmdline: string; p>
nn, i, x, y: integer; p>
f1, f1_new: text; p>
Name, New_name: string [12]; p>
txt, text: string; p>
ch: char; p>
begin p>
i: = 1; p>
textbackground (red); p>
clrscr; p>
textcolor (yellow); p>
gotoxy (22,10); p>
writeln ( 'Текстовий процесор Timofeev Word'); p>
gotoxy (22,11); p>
writeln ( 'Версія 1.0 (2001 рік )'); p>
gotoxy (40,15); p>
writeln ( 'Склав Тимофєєв Тимур (2-АС-3 )'); p>
textcolor (green); p>
gotoxy (40,16); p>
writeln ( 'Всі права захищені .'); p>
gotoxy (40,17); p>
writeln ( 'Незаконне копіювання'); p>
gotoxy (40,18); p>
writeln ( 'або підробка без згоди автора'); p>
gotoxy (40,19); p>
writeln ( 'переслідується за поняттями !!!'); p>
delay (5000); p>
textcolor (yellow); p>
table; p>
gotoxy (2,21); p>
write ( 'Введіть ім'я :'); p>
readln (name); p>
assign (f1, name); p>
rewrite (f1); p>
gotoxy (2,21); p>
write ( 'Вводите текст!!!'); p>
gotoxy (1,2); p>
repeat p>
write (chr (179 ),':>'); p>
readln (txt); p>
writeln (f1, txt); p>
until txt =''; p>
close (f1); p>
gotoxy (2,21); p>
writeln ( 'Введення закінчено, натисніть чого-небудь ...'); p>
repeat p>
readkey; p>
keys (nn); p>
case nn of (визначає натискання функціональних клавіш) p>
59: menu; (F1) p>
60: begin (F2) p>
table; p>
gotoxy (2,21); p>
write ( ''); p>
gotoxy (2,21); p>
write ( 'Введіть ім'я :'); p>
readln (name); p>
assign (f1, name); p>
rewrite (f1); p>
gotoxy (2,21); p>
write ( 'Вводите текст!!!'); p>
gotoxy (1,2); p>
repeat p>
write (chr (179 ),':>'); p>
readln (txt); p>
writeln (f1, txt); p>
until txt =''; p>
close (f1); p>
gotoxy (2,21); p>
writeln ( 'Введення закінчено, натисніть чого-небудь ...'); p>
end; p>
61: begin (F3) p>
gotoxy (2,21); p>
write ( 'Введіть ім'я файлу, в який копір-я файл', name ,'->'); p>
readln (new_name); p>
reset (f1); p>
assign (f1_new, new_name); p>
append (f1_new); p>
while not eof (f1) do p>
begin p>
readln (f1, txt); p>
writeln (f1_new, txt); p>
end; p>
close (f1); p>
close (f1_new); p>
gotoxy (2,21); p>
writeln ( 'Файл', name, 'скопійований в', new_name, 'натисніть p>
чого-небудь ...'); p>
end; p>
62: begin (F4) p>
gotoxy (2,21); p>
write ( ''); p>
gotoxy (2,21); p>
write ( 'Введіть нове ім'я файлу :'); p>
readln (new_name); p>
assign (f1, name); p>
rename (f1, new_name); p>
gotoxy (2,21); p>
writeln ( 'Файл', name, 'періменован в', new_name, 'натисніть p>
чого-небудь ... '); p>
end; p>
63: begin (F5) p>
erase (f1); p>
gotoxy (2,21); p>
writeln ( 'Файл', name, 'видалений з диска, натисніть чого-небудь ...'); p>
end; p>
64: begin (F6) p>
($ I-) p>
repeat p>
gotoxy (2,21); p>
write ( 'Введіть ім'я файлу для зчитування тексту ->'); p>
readln (name); p>
assign (f1, name); p>
reset (f1); p>
if ioresult <> 0 then p>
begin p>
gotoxy (2,21); p>
writeln ( 'Файл не знайдено ...'); p>
close (f1); p>
end; p>
until ioresult = 0; p>
($ I +) p>
table; p>
gotoxy (1,2); p>
while not eof (f1) do p>
begin p>
readln (f1, txt); p>
writeln (chr (179), txt); p>
end; p>
close (f1); p>
gotoxy (2,21); p>
write ( 'Файл лічений, натисніть чого-небудь ...'); p>
end; p>
68: goto b; (F10) (Відбувається вихід на мітку) p>
end; p>
until i <0; (зчитував функціональні клавіші поки i <0, p>
а тому що i = 1 і не змінюється, то цей процес нескінченний) p>
b: end. p>
Текст модуля. p>
Unit Tim; p>
Interface p>
Uses Crt, Dos; p>
Procedure keys (var n: integer); p>
Procedure table; p>
Procedure Enter_sandman; p>
Procedure menu; p>
Implementation p>
Procedure keys (var n: integer); (процедура натискання клавіші) p>
var c: char; p>
begin p>
if keypressed then p>
begin p>
c: = readkey; p>
if c = # 0 then c: = readkey; p>
n: = ord (c); p>
end; p>
end; p>
Procedure Enter_sandman; (музика) p>
Const p>
m: array [1 .. 6] of integer = (165,330,392,233,220,330); p>
t: array [1 .. 6] of integer = (1100,600,600,600,1100,600); p>
e: array [1 .. 7] of integer = (165,165,165,165,165,165,170); p>
r: array [1 .. 7] of integer = (600,600,600,600,600,600,1100); p>
w: array [1 .. 5] of integer = (167,167,167,294,233); p>
q: array [1 .. 5] of integer = (1100,600,600,600,1100); p>
o: array [1 .. 9] of integer = (165,182,165,182,165,196,165,182,165); p>
b: array [1 .. 9] of integer = (600,1100,600,600,600,600,600,600,3000); p>
var a, u, z, x: integer; i: byte; p>
begin p>
for a: = 1 to 4 do p>
begin p>
for i: = 1 to 6 do p>
begin p>
sound (m [i ]); p>
delay (t [i ]); p>
nosound; p>
end; p>
end; p>
for u: = 1 to 3 do p>
begin p>
for i: = 1 to 7 do p>
begin p>
sound (e [i ]); p>
delay (r [i ]); p>
nosound; p>
end; p>
end; p>
for z: = 1 to 3 do p>
begin p>
for i: = 1 to 5 do p>
begin p>
sound (w [i ]); p>
delay (q [i ]); p>
nosound; p>
end; p>
end; p>
for i: = 1 to 9 do p>
begin p>
sound (o [i ]); p>
delay (b [i ]); p>
nosound; p>
end; p>
end; p>
Procedure table; (малює таблицю) p>
var p>
w, h: integer; p>
c1, c2, c3, c4, c7, c5, c6, c8, c9, c10: char; p>
begin p>
textbackground (blue); p>
clrscr; p>
textcolor (yellow); p>
w: = 1; p>
h: = 1; p>
c1: = chr (218); p>
c2: = chr (196); p>
c3: = chr (191); p>
c4: = chr (179); p>
c5: = chr (192); p>
c6: = chr (217); p>
c7: = chr (195); p>
c8: = chr (180); p>
c9: = chr (193); p>
c10: = chr (194); p>
for h: = 2 to 25 do p>
begin p>
gotoxy (w, h); p>
write (c4); p>
end; p>
gotoxy (w, h); p>
write (c5); p>
for w: = 2 to 79 do p>
begin p>
gotoxy (w, h); p>
write (c2); p>
end; p>
gotoxy (w, h); p>
write (c6); p>
for h: = 24 downto 1 do p>
begin p>
gotoxy (w, h); p>
write (c4); p>
end; p>
gotoxy (w, h); p>
write (c3); p>
for w: = 78 downto 1 do p>
begin p>
gotoxy (w, h); p>
write (c2); p>
end; p>
gotoxy (w, h); p>
write (c1); p>
gotoxy (1,20); p>
write (c7); p>
for w: = 2 to 59 do p>
begin p>
gotoxy (w, 20); p>
write (c2); p>
end; p>
gotoxy (w, 1); p>
write (c10); p>
for h: = 2 to 24 do p>
begin p>
gotoxy (w, h); p>
write (chr (179 )); p>
end; p>
gotoxy (w, 20); p>
write (c8); p>
gotoxy (59,25); p>
write (c9); p>
gotoxy (62,4); p>
writeln ( 'F1-Допомога'); p>
gotoxy (62,5); p>
writeln ( 'F2-Новий'); p>
gotoxy (62,6); p>
writeln ( 'F3-Копіювати'); p>
gotoxy (62,7); p>
writeln ( 'F4-Перейменувати'); p>
gotoxy (62,8); p>
writeln ( 'F5-Видалити'); p>
gotoxy (62,9); p>
writeln ( 'F6-Подивитися'); p>
gotoxy (62,10); p>
writeln ( 'F10-Вихід'); p>
end; p>
Procedure menu; p>
Const p>
NORM = $ 17; (колір невиділення пункту) p>
SEL = $ 70; (колір виділеного пункту) p>
N = 3; p>
var p>
menu: array [1 .. N] of string [12]; (назви пунктів меню) p>
punkt: integer; (номер виділеного пункту) p>
ch: char; (введений символ) p>
x, y, i: integer; (координати першого рядка меню) p>
Procedure punkt1; p>
begin p>
ClrScr; p>
writeln ( 'Виконав студент гр. 2-АС-3 Тимофєєв Т.П. (2001 р. )'); p>
writeln ( 'Курсова робота-а-а-а-а-а-а-а !!!!!!!!!!!!!!!!!'); p>
readln; p>
end; p>
Procedure punkt2; p>
begin p>
ClrScr; p>
writeln ( 'Тута все зрозуміло навіть дитині .'); p>
readln; p>
end; p>
Procedure MenuToScr; (висновок меню на екран) p>
var i: integer; p>
begin p>
ClrScr; p>
for i: = 1 to N do begin p>
GoToXY (x, y + i-1); p>
write (menu [i ]); p>
end; p>
TextAttr: = SEL; p>
GoToXY (x, y + punkt-1); p>
write (menu [punkt]); (виділимо рядок меню) p>
TextAttr: = NORM; p>
end; p>
begin p>
menu [1]: = 'Про програму'; p>
menu [2]: = 'Допомога'; p>
menu [3]: = 'Вихід'; p>
punkt: = 1; p>
x: = 5; p>
y: = 5; TextAttr: = NORM; p>
MenuToScr; p>
repeat p>
ch: = ReadKey; p>
if ch = char (0) then begin p>
ch: = ReadKey; p>
case ch of p>
chr (80): (стрілка вниз) p>
if punkt
GoToXY (x, y + punkt-1); p>
write (menu [punkt ]); p>
punkt: = punkt 1; p>
TextAttr: = SEl; p>
GoToXY (x, y + punkt-1); p>
write (menu [punkt ]); p>
TextAttr: = NORM; p>
end; p>
chr (72): (стрілка вгору) p>
if punkt> 1 then begin p>
GoToXY (x, y + punkt-1); p>
write (menu [punkt ]); p>
punkt: = punkt-1; p>
TextAttr: = SEl; p>
GoToXY (x, y + punkt-1); p>
write (menu [punkt ]); p>
TextAttr: = NORM; p>
end; p>
end; p>
end p>
else p>
if ch = chr (13) then begin (натиснута клавіша ) p>
case punkt of p>
1: punkt1; p>
2: punkt2; p>
3: i: = 2; (вихід) p>
end; p>
MenuToScr; p>
end; p>
until i = 2; p>
end; p>
end. p>
Висновок. p>
У результаті проведеної роботи я написав прекрасну програму за 4 години вільного від навчання часу
практично без допомоги літератури та інших джерел. p>
Програма заснована на стандартних процедурах і функції модуля Crt: Rename, Erase, Append, Rewrite,
Reset, Assign та ін p>
Список використаної літератури. p>
Попов В.Б. b> "Turbo Pascal для школярів": p>
Учеб.пособіе. - 3-е доп. изд. - М.: Фінанси і статистика, 2001р. P>
Вірт Н. b> "Алгоритми та структури даних": p>
Пер. з англ. - М.: Світ, 1989. P>
Прайс Д. b> "Програмування на мові Паскаль: Практичне керівництво". p>
Пер. з англ. - М.: Світ, 1987. P>