Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

Часть 4. Уточнение решения

Теперь Вы знаете, что процедуру Forest следует описать в приведенной программе.

Задание 5

Загрузите файл proc4.pas. В этом файле находится текст уточненной программы. Запустите программу. Убедитесь в том, что программа не имеет ошибок и исполняется.

Часть 5. Уточнение решения

Давайте предположим, что у нас есть еще одна графическая процедура Fir (по-английски “ель”), которая позволяет нарисовать елочку. Пусть данная процедура имеет следующий заголовок:

procedure fir(x,y,h:integer; st,c1,c2:byte);

где x,y - координаты елочки, h - высота елочки, st - стиль закраски, c1 - цвет линий, с2 - цвет закраски. Под “координатами елочки” договоримся понимать, например, координаты ее вершины.

Тогда программа будет выглядеть следующим образом.

Uses Crt,Graph,Graph0;

procedure fir(x,y,h:integer; st,c1,c2:byte);

{ Процедура рисования елочки }

{Параметры: x,y- координаты вершины h - высота; st - стиль закраски c - цвет линий; c2 - цвет закраски }

begin

{Рисуем елочку}

end;

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

procedure Forest (N:byte); {N - количество елочек в лесу}

var i:byte;

stl,a,b,color1,color2,h:integer;

begin

Randomize;

For i:=1 to N do

begin

h:=random(30)+10; {высота треугольника}

a:=random(600)+20; {координата x вершины елочки}

b:=random(400)+5; {координата y вершины елочки}

color1:=random(15)+1; {цвет линий - от 1 до 15}

color2:=random(15)+1; {цвет закраски - от 1 до 15}

stl:=random(11)+1; {тип закраски - от 1 до 11}

fir(a,b,h,stl,color1,color2); {рисуем елочку}

end

end;

{ Процедура ожидания }

Procedure Wait; {У этой процедуры нет ПАРАМЕТРОВ}

begin

OutTextXY(200,10,’Нажмите клавишу [ПРОБЕЛ]’);

ReadLn

end;

begin { тело программы }

init(‘f:\tp70\bgi’);

Forest(25);

Wait; {обратите внимание на эту процедуру - ее удобно использовать в очень многих программах...}

CloseGraph

end.

Приведенная выше программа также не имеет ошибок, исполняется, но все же леса по-прежнему не рисует.

Часть 6. Уточнение решения

Теперь давайте попробуем понять, а как, собственно, рисует процедура Fir. Для простоты пусть елочка состоит из 3 равнобедренных треугольников и ножки (см. рисунок).

Под “высотой” елочки проще всего считать высоту верхнего треугольника. Цвет елочки - цвет треугольника. Высоту ножки елочки можно задать, например, равной высоте треугольника. Треугольники, расположенные ниже, могут иметь высоту немного побольше (например, h+5 и h+7 соответственно). Вариант размеров елочки Вы можете посмотреть на схеме слева. Понятно, что эти размеры условны и, если Вам хочется, Вы можете выбрать их другими.

Таким образом, процедура Fir рисует елочку из 3 закрашенных треугольников и ножки.

Задание 6

Учитывая, что процедура рисования треугольника у Вас уже написана, завершите реализацию программы рисования леса. Для ускорения работы воспользуйтесь уже готовой частью программы из файла proc4.pas.

Это вам пригодится

Обратите внимание на этапы деятельности при проектировании программы рисования леса - это ОЧЕНЬ ВАЖНО! Дело в том, что ПРАКТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ - это на 70% проектирование программы и только на 30% - запись программы на языке программирования.

Описанный в данной лабораторной работе вариант проектирования разработан и используется в наиболее известных программистских фирмах мира. По этой технологии (напоминаем, что называется она «технология программирования “сверху вниз”»), в частности, разработана и реализована сама среда Turbo Pascal. Такая технология позволяет достаточно быстро разрабатывать сколь угодно большие программы.

Быстрота разработки обеспечивается тем, что после создания проекта программы (на уровне простых процедур) реализация процедур может быть поручена нескольким программистам и, если в проекте нет серьезных ошибок, программа будет готова тогда, когда последний программист закончит писать свою процедуру. Далее, правда, следует этап отладки программы, но это предмет другой лабораторной работы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]