Смекни!
smekni.com

Тест программных программ (стр. 4 из 5)

Window(10,10,53,15); {открытие окна ввода}

TextBackGround(cyan);

clrscr;

Readln(a); {ввод пути к файлу}

Assign(b1,a); {связь переменной с файлом}

Reset(b1); {открытие файла для чтения}

Writeln('убедитесь что ваш принтер настроен для работы в MS-DOS'); {предупреждение}

repeat {цикл работы с файлом}

Window(60,24,70,24); {закрытие окна}

TextBackGround(black);

clrscr;

h:=g3;

GoToXY(50,22);

GetTime(g1,g2,g3,g4); {вывод времени}

TextColor(yellow);

Write(g1,':',g2,' ',g3);

clrscr;

Readln(b1,f); {считывание символа}

Writeln(Lst,f); {распечатывание символа}

until EOF(b1);

Window(10,10,53,15); {закрытие окон}

TextBackGround(black);

clrscr;

End;

Проблемы: отсутствие команды для окончания работы принтера, малая скорость печати. Решение- в языке ассемблер.

Новые объектные концепции.

Современные технологии разработки программного обеспечения опираются в основном на идеи структурного программирования. К ним, в первую очередь, относятся: функциональная модульность, структурированность программ и данных, насыщенность текстов программ комментариями, открытость, надежность и т. д. Широко используемым примером такой технологии является технология «сверху-вниз». Ее суть заключается в постепенной пошаговой детализации функций, выполняемых программной системой. Серьезными недостатками технологии «сверху-вниз» являются недостаточное внимание к проектированию структур данных и слабая их связь с процедурами обработки.

Гармоничное включение в структуру языка средств объектно-ориентированного программирования делает переход от традиционных технологий программирования к объектно-ориентированному для тех, кто программирует на Турбо Паскале, достсаточно безболезненным. А то, что такой переход назрел, сомнений не вызывает. Мощные пакеты инструментальных средств, такие как Turbo Vision и Object Toolkit, способствует внедрению объектно-ориентированных методов в процессе разработки программ. Кроме того, опрос американских программистов, проведенный осенью 1991 года, показал, что в 1992 году более половины из них планирует включить средства объектно-ориентированного программироваиня в свой арсенал, поскольку считают, что это будет способствовать ускорению разработки.[4]

Понять основы объектного программирования вам поможет учебник по Delphi 5. Важнейшими понятиями объекта являются принцип наследования, полиморфизм, поля, методы, свойства и события объекта. В языке Turbo Pascal не полностью реализован данный подход к программированию.

Наиболее важным понятием объектно-ориентированного программирования является понятие объекта. Объект представляет собой совокупность данных и подпрограмм, предназначенных для работы с этими данными. Главным достоинством объекта является то, что он позволяет моделировать абстрактные ситуации. Это делает объектный подход к программированию довольно удобным для большинства программистов, хотя очень трудно понять объектный подход тем, кто ранее программировал на структурных языках. Тем более, что найти какой-либо справочный материал по объектам очень сложно. Поэтому я приведу основы понятия объекта.

Объект в Turbo Pascal состоит из имени, полей данных и методов. Поля данных это ете же переменные в программе, на которые опирается объект. Заголовки методов- названия процедур объекта, позволяющих работать с полями, поскольку прямой доступ к полям нежелателен. Объект объявляется следующим образом:

Объект.

Type <имя объекта>=object

<поля данных>

<заголовки методов>

End;

После объявления объекта к нему пишутся процедуры (методы). Название процедуры состоит из двух частей: имени объекта и имени процедуры:

<Имя объекта>.<Имя процедуры>

Объектная программа.

Объектная программа- это последняя важная стадия разработки программы: в нее внедряется панель управления, что значительно облегчает диалог с системой и делает функции программы более доступными. Как видно из предыдущей главы, функции программы в структурном виде находятся в операторе варианта case, а выбор функции происходит нажатием клавиши.

Создавая объектную программу, я лишь перенес функции из оператора варианта в процедуры объекта и связал их между собой.

Новый объект- панель управления под именем panel имеет одно поле- координату синего прямоугольника, который перемещается по панели управления. На самом деле это окно синего цвета, а изменение цвета букв при перемещении создается засчет точного соответствия текста в окне и текста на панели управления. Панель имеет процедуры перемещения прямоугольника выбора, которые уменьшают и увеличивают его координату в соответствии с нажатыми клавишами. А также есть процедура выбора, при нажатии клавиши Enter управление передается ей. Она в свою очередь определяет по координате окна какую функцию необходимо запустить в данный момент.

Этапы разработки объекта Панель Управления:

1. Определение ключевого поля перемещения окна

2. Определение процедур работы с окном

3. Определение пропорций окна панели управления

4. Рисование панели управления

5. Написание процедур работы с окном выбора

6. Установка связей между функциями и объектом

7. Отладка объекта

Программный код.

Program redactor;

uses crt,printer,dos;

type panel=object {объявление объекта}

x:integer; {поле объекта}

Procedure left(b:char); {описание процедуры сдвига влево окна выбора}

Procedure right(b:char); { описание процедуры сдвига вправо окна выбора }

Procedure choose; { описание процедуры выбора функции }

End;

Var a,f,f1,a2:string; {описание всех программных переменных}

b,k:char;

c,u,y,a1,b1:text;

d,e,i,j,p,z,z1,z2:integer;

c1:boolean;

g:panel;

g1,g2,g3,g4,h:word;

Procedure panel.left; {процедура сдвига влево окна выбора}

Begin

Window(x,22,x+9,22); {закрашивание следующего окна}

TextBackGround(green);

clrscr;

Закрашивание следующего окна- важная функция. Она закрашивает то синее окно, которое было выбрано перед обращением к процедуре.

Window(10,22,69,22); {основное окно панели управления}

TextBackGround(green);

clrscr;

TextColor(brown); {установка цвета текста}

Write('Новый Открыть Править Результат Печать Выход'); {нанесение надписи на панель

управления}

If x>=20 Then x:=x-10; {проверка соответствия окна выбора границам панели управления}

Этот оператор производит сравнение координат окна выбора с координатами начала панели управления. Если окно выбора “выехало” за границы панели управления, то изменений координат не производится, окно выбора остается на своем месте.

Window(x,22,x+9,22); {рисование окна выбора}

TextBackGround(blue);

clrscr;

case x of {выбор надписи на окне выбора}

Данное ветвление распознает по координате окна выбора какое слово следует в него вписать.

10:Begin

TextColor(green);

Write('Новый');

End;

20:Begin

TextColor(green);

Write('Открыть');

End;

30:Begin

TextColor(green);

Write('Править');

End;

40:Begin

TextColor(green);

Write('Результат');

End;

50:Begin

TextColor(green);

Write('Печать');

End;

60:Begin

TextColor(green);

Write('Выход');

End;

End;

End;

Procedure panel.right; {процедура сдвига окна выбора вправо}

Begin

Window(x,22,x+9,22); {закрашивание предыдущего окна}

TextBackGround(green);

clrscr;

Window(10,22,69,22); {рисование окна панели управления}

TextBackGround(green);

clrscr;

TextColor(brown); {изменение цвета текста}

Write('Новый Открыть Править Результат Печать Выход'); {нанесение текста на панель управления}

Вы, конечно, заметили, что операторы предыдущей и этой процедуры повторяются, поэтому их можно вынести в отдельную процедуру и запускать ее для обновления окна панели управления.

If x<=50 Then x:=x+10; {сравнение координат окна выбора с координатами конца окна панели

управления}

Window(x,22,x+9,22); {рисование окна выбора}

TextBackGround(blue);

clrscr;

case x of {нанесение соответствующего текста на окно выбора}

10:Begin

TextColor(green);

Write('Новый');

End;

20:Begin

TextColor(green);

Write('Открыть');

End;

30:Begin

TextColor(green);

Write('Править');

End;

40:Begin

TextColor(green);

Write('Результат');

End;

50:Begin

TextColor(green);

Write('Печать');

End;

60:Begin

TextColor(green);

Write('Выход');

End;

End;

End;

Procedure pannel; {процедура рисования панели управления}

Begin

Window(10,22,69,22);

TextBackGround(green);

clrscr;

TextColor(brown);

Write('Новый Открыть Править Результат Печать Выход');

End;

<Procedure NewF;> {функции тестового редактора}

<Procedure OpenF;>

<Procedure RedactF;>

<Procedure SearchF;>

<Procedure PrintF;>

Procedure panel.choose; {процедура выбора функции}

Begin

case x of {по координате окна выбора определяет нужную функцию}

10:NewF;

20:OpenF;

30:RedactF;

40:SearchF;

50:PrintF;

60:b:='e';

End;

End;

Вывод: Как видно, основную функцию управления взял на себя объект. Благодаря этому действие программы значительно упростилось, программа стала быстрее работать. Схему действия объекта можно изобразить следующим образом

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

В завершении работы с программой я приступил к оформлению работы. Создание титульной страницы не составило большого труда. Если вы ознакомитесь с программным кодом, то убедитесь, что все команды- из модуля crt. Они используют элементы работы с цветом фона и текста.

Procedure oform;

Begin

TextBackGround(green); {установка цвета фона}

clrscr;

TextColor(red); {цвет текста}

GoToXY(20,10); {перевод курсора в нужную позицию}

Write('Редактор Тестов'); {вывод текста}

TextColor(darkgray); {цвет текста}

GoToXY(20,12);

Writeln('автор: Цыбин Антон'); {вывод текста}

GoToXY(20,14);

Writeln('составлено 09.05.2000'); {вывод текста}