Краски, палитры, заполнения

. . .

Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры.

Этими базовыми структурами являютия:

1)– Следование или линейная;

2) Развилка или ветвление;

3) Цикл.

Рассмотрим каждую из них на примерах:

Структура Следование - одна из самых важных структур. Она означает, что два действия должны быть выполнены друг за другом. Например, блок схема алгоритма вычисления значения гипотенузы по теореме Пифагора выглядит так. Здесь можно видеть операции ввода исходных данных, вычисления и вывра

 

Структура Развилка обеспечивает выбор одной из двух альтернатив:

если < условие > то

< действие 1 >

иначе

< действие 2 >

все

Существует сокращенная форма структуры Развилка, которая позволяет выполнить действие или пропустить его:

если < условие > то

< действие >

все

Обобщением структуры Развилка является Множественный выбор:

если Var = Const1 то < действие 1 >

если Var = Const2 то < действие 2 >

если Var = Constn то < действие n >

все

В зависимости от значения переменной Var выполняется одно из указанных действий, например, если Var = Const3, то выполняется <действие3>.

Примером этой структуры может служить алгоритм вычисления корней квадратного уравнения:

 

Третьей базовой структурой является Цикл, который предусматривает повторное выполнение определенных действий, необходимое для большинства программ. Различают следующие типы структур Цикл :

- цикл "от до"

- цикл "пока"

- цикл "до"

Цикл "от до" управляет повторением выполнения действия с помощью переменной цикла:

циклот I := N1 до N2

< действие >

кц {конец цикла}

Здесь I - переменная цикла, N1, N2 - начальное и конечное значения переменной цикла, вычисляются один раз при входе в цикл. Переменная цикла пробегает все следующие друг за другом в порядке возрастания значения от начального до конечного. Изменение значения переменной цикла происходит автоматически после каждого выполнения действия, указанного внутри цикла. В зависимости от соотношения N1 и N2 цикл может не выполниться ни разу (N1 > N2) или выполниться ( N2 - N1 + 1 ) раз.

В цикле "пока" управление внутри цикла осуществляется с помощью логического условия:

циклпока < условие >

< действие >

кц {конец цикла}

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

Третий тип структуры цикл "до" имеет вид:

цикл < действие > до < условие >

Как только значение условия становиться истинным, цикл прекращается. Цикл "до" независимо от значения условия будет выполняться по меньшей мере один раз, т.к. проверка условия производится после выполнения действия. Для завершения цикла необходимо внутри цикла изменить условие с ложного на истинное. Выбор структуры цикла определяется особенностями алгоритма решения конкретной задачи.

Пример: вычисление суммы Nпервых натуральных чисел.

 

Существенная особенность перечисленных базовых структур состоит в том, что каждая из них имеет один вход и один выход. Их можно соединять друг с другом в любой последовательности. В качестве действия может использоваться любая из перечисленных структур, что обеспечивает возможность вложенности одних структур в другие. Возврат назад выполняется только в циклах. С помощью определенных базовых структур можно писать ясные, надежные программы без операторов Goto, что является основой технологии структурного программирования. Еще один результат использования только базовых структур состоит в том, что управление в программе будет осуществляться сверху вниз, т.е. все инструкции выполняются в том порядке, в котором они появляются в тексте программы, все ветвления будут направлены только вперед. Это облегчает чтение и модификацию программы.

 

Процедура SetCOlor. Устанавливает текущий цвет для вводимых линий и символов. Заголовок:

Procedure SetColor(Color: Word);

Здесь Color – текущий цвет.

Процедура SetBkColor. Устанавливает цвет фона. Заголовок:

Procedure SetBkColor (Color: Word);

Здесь Color - цвет фона.

В отличие от текстового режима, в котором цвет фона может быть только темного оттенка, в графическом режиме он может быть любым. Установка нового цвета фона, немедленно изменяет цвет графического экрана. Это означает, что нельзя создать изображение, два участка которого имели бы разный цвет фона. Для GGA-адаптера в режиме высокого разрешения установка цвета фона изменяет цвет активных пикселей. Замечу, что после замены цвета фона на любой, отличный от 0 (Black) цвет. Вы не сможете более использовать цвет 0 как черный, он будет заменяться на цвет фона, т.к. процедуры модуля Graph интерпретируют цвет с номером 0 как цвет фона. Это означает, в частности, что Вы уже не сможете вернуть фону черный цвет!

Если Ваш ПК оснащен цветным экраном, следующая программа продемонстрирует работу процедуры SetBkColor. Программа выводит десять вложенных друг в друга прямоугольников, после чего циклически меняет цвет фона. Для выхода из программы достаточно нажать на любую клавишу.

Процедура SetFillStyle. Устанавливает стиль (тип и цвет). Заголовок:

Procedure SetFillStile(Fill, Color: Word);

Здесь Fill – тип заполнения; Color – цвет заполнения.

С помощью заполнения можно покрывать какие-либо фрагменты изображения периодически повторяющимся узором.

Процедура FloodFill. Заполняет произвольную замкнутую фигуру, используя текущий стиль заполнения(узор и цвет). Заголовок:

Procedure FloodFill(X, Y: Integer; Border: Word);

Здесь X, Y – координаты любой точки внутри замкнутой фигуры; Border – цвет граничной линии. Если фигура не замкнута, заполнение «разольется по всему экрану.