Образовательный портал

Электронный журнал Экстернат.РФ, cоциальная сеть для учителей, путеводитель по образовательным учреждениям, новости образования

  • Increase font size
  • Default font size
  • Decrease font size

Рейтинг: 4 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна
 

 

Государственное бюджетное общеобразовательное учреждение
гимназия №66 Приморского района Санкт-Петербурга

 

 

 

 

Учебно-методическое пособие

 

 

 

 

Графические возможности
языков программирования
 

 

 

Разработчик: учитель информатики

ГБОУ гимназия №66

Калинина Мария Владимировна

 

 

 

 

 

 

Санкт-Петербург

2012г.

 

Представление данных на мониторе компьютера в  графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и военных исследованиях. С тех пор графический способ отображения данных стал неотъемлемой принадлежностью подавляющего числа компьютерных систем.

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

Тема «Программирование» является одной из самых трудных для изучения в курсе «Информатика и ИКТ» в школе.  Для начинающего программиста увидеть результат своего труда в виде напечатанного на консоли числа представляется не очень впечатляющим.

Использование графических возможностей языков программирования помогает при изучении данного материала, т.к. позволяет:

1)сделать изучение программирования эмоционально привлекательным;

2)наглядно продемонстрировать результат выполнения алгоритма;

3)изучить циклы, подпрограммы, рекурсию на примере рисования графических объектов;

4)расширить спектр решаемых задач.

Исследуемая тема связывает главы «Технология обработки графических изображений» и «Программирование» школьной программы, обеспечивая понимание целостности предмета информатики в глазах учащихся.

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

Необходимо познакомить учеников  с основными понятиями компьютерной графики. Следующим шагом будет введение графических операторов, которые поддерживает изучаемый язык программирования. При введении операторов, необходимо идти из практических соображений. Ввод оператора должен сопровождаться некой практической задачей, которая после введения оператора будет успешно решаться. Академический подход, при котором перечисляются все операторы и их описание, здесь не допустим.

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

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

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

Для учащихся начальной школы на дополнительных занятиях или для учащихся 5-8 классов (в зависимости от программы) при первом знакомстве с темой «Программирование» хорошо подойдет изучение языка программирования Лого, позволяющее писать несложные программы для графического учебного исполнителя с интересными результатами.  

Для более старших школьников при изучении языков программирования высокого уровня, например, Pascal, VisualBasicили других на уроках или факультативных занятиях, также будет уместно изучить графические возможности этих языков.

Изучение графических возможностей языков программирования, несомненно, разнообразит тему «Программирование», позволит рассмотреть класс интересных задач, будет способствовать развитию творческих способностей учащихся.

 


I.  ЛОГО

 

1. Для начинающих изучать программирование лучше всего подойдут программы, реализующие линейные алгоритмы для рисования фигур. Они под силу даже учащимся начальной школы и для них достаточно знать следующие команды:

 

pd– перо опусти

fd<число> - вперед на заданное число шагов

bk<число> - назад на заданное число шагов

lt<градус> - поворот по часовой стрелке на заданное число градусов

rt<градус> - поворот против часовой стрелки на заданное число градусов

pu – перо подними

 

Текст программы

Результат выполнения

to f1

pd

fd 80 

rt 90 

fd 30 

bk 60

pu

end

 

to f2

pd

fd 80 

bk 40

rt 90

fd 50

lt 90

fd 40

bk 80

pu

end

 

to f3

pd

fd 80

bk 40

rt 90

fd 40

bk 80

pu

end

 

to f4

pd

fd 80

rt 135

fd 40

bk 40

rt 90

fd 40

pu

end

f1:

  

 

f2:

  

 

 

f3:

 

f4:

  

 

Eще задание на линейные алгоритмы – написать программы для рисования цифр индекса:

 

Текст программы

Результат выполнения

 

to zero

pd fd 80 rt 90 fd 40 rt 90

   fd 80 rt 90 fd 40 rt 90

pu

end

 

to one

pd  fd 80 lt 135 fd 60

    bk 60 lt 45 fd 80

seth 0 pu

end

 

to two

pd lt 90 fd 40 rt 135 fd 60

   lt 45 fd 40 lt 90 fd 40

pu lt 90 fd 80 lt 90 fd 40 seth 0

end

 

to three

pd rt 45 fd 60 lt 135 fd 40 rt 135

   fd 60 lt 135 fd 40 lt 90

pu fd 80 seth 0

end

 

to four

pd fd 80 bk 40 lt 90 fd 40 rt 90fd 40

pu bk 80 rt 90 fd 40 seth 0

end

 

to five

pd rt 90 fd 40 lt 90 fd 40 lt 90 fd 40

   rt 90 fd 40 rt 90 fd 40 lt 90

pu bk 80 seth 0

end

 

to six

pd lt 90 fd 40 rt 90 fd 40 rt 45 fd 60

   bk 60 rt 45 fd 40 rt 90 fd 40

pu seth 0

end

 

to seven

pd fd 40 rt 45 fd 60 lt 135 fd 40

pu seth 0 bk 80

end

 

to eight

pd fd 80 lt 90 fd 40 lt 90  fd 40

   lt 90 fd 40 bk 40 rt 90 fd 40

   lt 90 fd 40 seth 0 pu

end

 

to nine

pd rt 45 fd 60 lt 45 fd 40 lt 90 fd 40

   lt 90 fd 40 lt 90 fd 40 lt 45 bk 60

pu  seth 0

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

3. Программы из предыдущего примера для рисования цифр индекса можно использовать как подпрограммы для изображения любых чисел: 26, 190, 345, 7586 и т.д. Этот пример наглядно показывает прием использования в программах процедур и дает возможность выполнения индивидуального задания для каждого учащегося.   

 

Текст программы

Результат выполнения

 

to ch_26

two

rt 90 fd 80 seth 0

six

end

 

 

to ch_190

one

rt 90 fd 40 seth 0

nine

rt 90 fd 70 seth 0

zero

end

 

to ch_345

three

rt 90 fd 110 seth 0

four

rt 90 fd 50 seth 0

five

end

 

 

to ch_7586

seven

rt 90 fd 50 seth 0

five

rt 90 fd 50 seth 0

eight

rt 90 fd 50 seth 0

six

end

 

 

4. Следующий шаг – объяснение циклических алгоритмов. Это можно сделать на примере программы для рисования квадрата. Используя только знания о линейных алгоритмах, квадрат можно написать такую программу:

 

tokv

pd

fd 40 rt 90 fd 40 rt 90 fd 40 rt 90 fd 40 rt 90

pu

end

 

   Очевидно, что нецелесообразно писать 4 раза одни и те же команды, а можно заменить эту длинную запись, используя оператор repeat:

         repeat4 [fd40 rt90]  


Для рисования приведенных ниже фигур также используется цикл repeat, в теле которого описываются команды для рисование повторяющегося элемента фигуры:

 

Текст программы

Результат выполнения

 

to figura1

seth 90

pd

repeat 4 [fd 50 rt 90 fd 50

          rt 90 fd 50 lt 90]

end

 

 

 

to figura2

seth 90

pd

repeat 4 [fd 40 lt 135 fd 20 rt 90

          fd 20 lt 135 fd 40 rt 90]

end

 

 

to figura3

seth 90

pd

repeat 4 [lt 30 fd 40 lt 120

          fd 40 rt 60]

end

 

 

 

5. Теперь можно познакомить учащихся с программами для рисования окружностей и дуг. Окружности получатся при рисовании 360‑угольника с маленькой стороной (например, равной 1):

 

                       repeat360 [fd1 rt1]

 

Для полуокружности параметр цикла не 360, а 180:

                    

                        repeat180 [fd1 rt1]

 

А для четверти окружности – 90:

 

                        repeat90 [fd1 rt1]

 

Для того, чтобы получить окружность, полуокружность, четверть окружности меньшего радиуса, нужно менять шаг, а для рисования их в противоположную сторону оператор rtна lt, например:

 

                        repeat 360 [fd 1 rt 0.5]

 

repeat 180 [fd 1 lt 0.3]

 

repeat 90 [fd 1 lt 0.5]

Данные знания можно применить для создания программ, рисующих фигуры:

 

Текст программы

Результат выполнения

to in_jan

pd

seth 0

repeat 360 [fd 1 rt 1]

repeat 180 [fd 0.5 rt 1]

repeat 180 [fd 0.5 lt 1]

end

 

to veer

pd

seth 0

repeat 180[fd 1 lt 1]

repeat 90 [fd 0.5 lt 1]

repeat 90 [fd 0.5 rt 1]rt 180

repeat 90 [fd 0.5 rt 1]

repeat 90 [fd 0.5 lt 1] rt 180

repeat 90 [fd 0.5 rt 1] rt 90

repeat 180 [fd 0.5 lt 1]

end

 

to sekira

pd

seth 0

repeat 180[fd 1 lt 1] seth 0

repeat 180 [fd 0.5rt 1] seth 0

repeat 180 [fd 0.5 rt 1]

end

 

to zont

pd

seth 0

repeat 180 [fd 1 lt 1] rt 180

repeat 3 [seth 0 repeat 180 [fd (1/3) rt 1]] seth 0 repeat 180 [fd (1/3) lt 1]

seth 0 repeat 90 [fd (1/3) lt 1]

seth 180 fd 80 repeat 180 [fd (1/3) lt 1]

end

 

to konek

pd

seth 0 repeat 180 [fd 0.5lt 1]

seth 0 repeat 180 [fd 1 lt 1]

repeat 180 [fd 0.5lt 1]

seth 180 repeat 180 [fd 1 lt 1]

end

 

 

to peshka

pd

seth 270 repeat 180 [fd 1 rt 1]

seth 270 repeat 90 [fd 1 rt 1]

seth 180 repeat 90 [fd 1 rt 1]

seth 90 repeat 180 [fd 1 rt 1]

seth 90 fd 120

end

 

        

        

 

 

 

 

 В эти программы можно добавить оператор заливки  Fillи получить раскрашенные картинки:

 

 

6. Как вариант рисования дуг, можно создавать различные лепестки:

 

Текст программы

Результат выполнения

to lepest_1

pd

setcolor 104

setpensize 3lt 30

repeat 30 [fd 5 rt 2]

rt (180 - 30 * 2)

repeat 30 [fd 5 rt 2]

rt (180-30)

pu

end

 

to lepest_2

pd

setcolor 135

setpensize 3

repeat 90 [fd 0.5 rt 1]

repeat 90 [fd 1 lt 1] rt 180

repeat 90 [fd 0.5 rt 1]

repeat 90 [fd 1 lt 1]

pu

end

 

to lepest_3

pd

setcolor 85

setpensize 3

repeat 90 [fd 1 rt 1]

repeat 90 [fd 1 lt 1]rt 180

repeat 90 [fd 2 rt 1]

pu

end

 

to lepest_4

pd

setcolor 65

setpensize 3

repeat 90 [fd 1 lt 1]

repeat 90 [fd 1 rt 1]rt 180

repeat 90 [fd 2 lt 1]

pu

end

 

to lepest_5

pd

rt 180

setcolor 25

setpensize 3

repeat 180 [fd 1 rt 1]

repeat 180 [fd 0.5 lt 1]rt 180

repeat 180 [fd 1 rt 1]

repeat 180 [fd 0.5 lt 1]

pu

end

 

to lepest_6

pd

setcolor 115

setpensize 3

repeat 180 [fd 1 rt 1]

repeat 180 [fd 0.5 rt 1]

repeat 180 [fd 0.5 lt 1]

pu

end

 

 

 

 

 

 

 

 

Используя предыдущие программы в цикле repeat, можно рисовать цветки:

 

Текст программы

Результат выполнения

 

 

 

 

 

to zvetok_1;

pd setpensize 3

repeat 14 [lt 30

repeat 30 [fd 5 rt 2 setcolor color + 3]

rt (180 - 30 * 2)

repeat 30 [fd 5 rt 2 setcolor color + 3]

rt (180-30)rt 360 / 14]

pu

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to zvetok_2;

pd

repeat 14 [lepest_2rt 360 / 7]

pu

end

 

 

 

 

 

 

 

 

 

to zvetok_3;

pd

repeat 20[lepest_3rt 360 / 10]

pu

end

 

 

 

 

 

 

 

 

 

 

 

to zvetok_4;

pd

repeat 20[lepest_4 rt 360 / 10]

pu

end

 

 

 

 

 

 

 

 

to zvetok_5;

pd

repeat 10[lepest_5 rt 360 / 10]

pu

end

 

 

 

 

 

 

 

 

 

 

to zvetok_6;

pd

repeat 10[lepest_6 rt 360 / 5]

pu

end

 

 

 

 

 

 

 

 

 

7. Процедуры с параметром.

 

Текст программы

Результат выполнения

1. Квадраты

tokv  :d

pd

repeat 4 [fd :d rt 90]

pu

end

to kv_16

setpensize 2setcolor 115

make "a 5

repeat 10 [kv :a make "a :a + 10

           setcolor color -10]

end

2. Окружности

to okr_pr :a

pd

repeat 360[fd :a  rt 1]

end

to okr_lt :a

pd

repeat 360[fd :a  lt 1]

end

to okr

setpensize 2 setcolor 115

make "c 0.2

repeat 8 [okr_pr :c okr_lt :c

make "c :c + 0.2 setcolor color -10]

end

3. Цветок

to lepest :d

pd lt 40

repeat 40 [fd :d rt 2]

rt (180 - 40 * 2)

repeat 40 [fd :d rt 2]

rt (180 - 40)pu

end

to zv :d

repeat 7[lepest :d  rt (360 / 5)]

end

to tsv :d

setpensize 2 setcolor 85

repeat 5[zv :d   make "d  :d + 0.5

          setcolorcolor+ 10]

end

 

4. Веер

to pero :d

pd repeat 90 [fd :d /2 rt 1]

repeat 90 [fd :d lt 1] lt 180

repeat 90 [fd :d / 2 rt 1]

repeat 90 [fd :d lt 1]

rt 180 pu

end

to veer :d

seth 240setpensize 2setcolor 85

repeat 5[pero :d make "d :d + 0.1 rt 20

setcolor color + 10]make "d :d - 0.2

repeat 4[pero :d make "d :d - 0.1 rt 20setcolor color + 10]

end

 

 

 

 

 

 

 

 

 

 

 

8. Рекурсия

 

Текст программы

Результат выполнения

1. Разворачивающаяся квадратная спираль

toa:x

pdsetpensize3 setcolor17

fd:xrt90

if:x<100 [a:x+ 5]

pu

end

 

2. Сворачивающаяся квадратная спираль

tob:x

pdsetpensize3 setcolor26

fd:xrt90

if:x>1 [b:x- 5]

pu

end

 

3. Разворачивающаяся прямоугольная спираль

to c :x :y

pd setpensize 3 setcolor 106

fd :x rt 90 fd :y rt 90

if :x<100 [c :x + 10 :y + 5]

pu

end

 

4. Раскручивающаяся круглая спираль

tou:r

pd setpensize 3 setcolor 127

repeat 180 [fd :r rt 1]

if :r<1 [u :r + 0.1]

pu

end

 

5. Скручивающаяся круглая спираль

tow:r

pd setpensize 3 setcolor 59

repeat 180 [fd :r rt 1]

if :r>0.1 [w :r - 0.1]

pu

end

 

 

 

 

 


II. TURBOPASCAL7.0

 

1. Графические возможности языка программирования Pascal.

Большинство языков программирования имеют свои стандартные графические библиотеки. Так, у Basicграфические команды являются встроенными; система программирования TurboPascalсодержит графическую библиотеку (модуль Graph.tpu), имеющую в своем составе процедуры и функции обработки простейших графических примитивов.

 В модуле  GRAPHсодержится 79 графических процедур, функций, десятки стандартных констант и типов данных. В состав модуля входит ряд программ драйверов для наиболее распространенных видеоадаптеров: CGA, MCGA, EGA, VGA, HERCULES, AT&T, 3270 PC. Эти драйверы хранятся в файлах с расширением BGI [4].

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

UsesGraph

ProcedureInitGraph;

Var grD,grM: Integer;

 Begin

  grD:=detect;

  InitGraph(grD,grM,’c:\TP7\BGI’); {вызовпроцедурыGRAPH}

 End;

BEGIN

InitGraph;

 … Графические операторы …

CloseGraph;

END.

 

INITGRAPH (драйвер, режим,  'путь' ) - подключает графический режим. Драйвер - это переменная целого типа, определяющая тип графического дисплея. Режим - это переменная целого типа, определяющая режим работы графического адаптера. Путь - указывает путь к файлу sgavga.bgi.

DETECT - режим автоматического определения типа.

CLOSEGRAPH - прекращает работу графического адаптера и восстанавливает текстовый режим работы экрана.

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

Для вывода графических примитивов на экран следует использовать следующие процедуры модуля Graph.

Вывод точки:

PUTPIXEL(x, y, цвет) - выводит точку с координатами (x, y);

Установка цвета:

SETCOLOR (цвет) - устанавливает текущий цвет для выводимых линий и символов;

SETBKCOLOR (цвет) - устанавливает цвет фона,

где цвет- это число от 0 до 15 (Табл. 1).

Цвет:

0

 черный

1

 синий

2

 зеленый

3

 голубой

4

 красный

5

 лиловый

6

 коричневый

7

 светло-серый

8

 темно-серый

9

 светло-синий

10

 светло-зеленый

11

 светло-голубой

12

 светло-красный

13

 светло-лиловый

14

 желтый

15

 белый

 

Управление курсором вывода:

MOVETO(x,y) - переводит курсор в позицию x,y, точка при этом не высвечивается.

Рисование графических примитивов, с цветом установленных операторами SETCOLOR и SETBKCOLOR:

LINE(x1, y1, x2, y2) – рисует линию от точки с координатами (x1, y1) до  точки с координатами (x2,y2).

LINETO(x, y) - рисует линию от текущей позиции курсора до x, y;

LINEREL(Dx, Dy) - рисует линию от текущей позиции на относительное расстояние Dx, Dy;

 

Табл. 1

CIRCLE(x, y, r) - выводит окружность, с центром x, y, радиуса r;

ARC(x, y, начальный угол, конечный угол, r)

- выводит дугу (углы измеряются в градусах против часовой стрелки);

RECTANGLE(x1,y1,x2,y2) - прямоугольник, где x1, y1 - координаты левого верхнего угла, x2, y2 - правого нижнего угла;

BAR(x1, y1, x2, y2) - закрашенный прямоугольник;

BAR3D(x1, y1, x2, y2, глубина, false или true) - параллелепипед;

где x1, y1 - координаты левого верхнего угла; x2, y2 - координаты правого нижнего угла, true - верхняя грань есть, false - верхняя грань отсутствует.

FILLELLIPSE(x, y, Rx, Ry) - закрашенный эллипс;

SECTOR(x, y, нач.угол, кон.угол, Rx, Ry) - сектор закрашенный;

SETFILLESTYLE(штриховка (Табл. 2), цвет) - каким цветом или какими штрихами будет закрашена замкнутая область;

Штриховка:

0

 фоном

1

сплошная

2

 _ _ _

3

 ////

4

 толстыми///

5

 \\\\

6

 толстыми \\\

7

 ++++

8

 x x x

9

 квадратами

10

 редкими точками

11

 частыми точками

12

 пользовательские

 

FLOODFILL(x, y, цвет,цвет границы) - штрихует произвольную замкнутую область;

 

Вывод текста.

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

OUTTEXT(ТЕКСТ) - вывод текста, начиная с текущей позиции

OUTTEXTXY(x, y, текст) - вывод текста, начиная с точки с координатами (x,y)

SETTEXTSTYLE(шрифт, направление, размер) - процедура устанавливает стиль текстового вывода на графический экран, где

шрифт: 0 - стандартный шрифт, 1 - штриховой шрифт, 2 - уменьшенный, 3 - прямой, 4 - готический;

направление: 0 - слева - направо, 1 - снизу - вверх;

размер: 1-32 для стандартного шрифта, 1-10 для штриховых

SETUSERCHARSIZ(x1, x2, y1, y2) - позволяет изменить ширину и высоту символа для штрихового шрифта

 

2. Задачи

 

1. Написать программу, которая рисует на экране Государственный флаг России.

 

Текст программы

Результат выполнения

uses Graph, Crt;

var grD, grM, x, y, l, h, w, res:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

 

  x:=100; y:=100; l:=200; h:=50;

  w:=round(h/3);

  setfillstyle(solidfill, white);

  bar(x,y,x+l,y+2*w);

  setfillstyle(solidfill, blue);

  bar(x,y+2*w,x+l,y+4*w);

  setfillstyle(solidfill, red);

  bar(x,y+4*w,x+l,y+6*w);

  readln;

  CloseGraph;

end.

 

 

 

 

 

 

 

2. Написать программу, которая рисует на экране смайл.

 

Текст программы

Результат выполнения

uses Graph, Crt;

var grD, grM:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

 

  setfillstyle(solidfill, yellow);

  setcolor(yellow);

  PieSlice(100, 100, 0, 360, 20);

  setcolor(black);

  arc(100, 102, 180, 360, 10);

  circle(93, 93, 2);

  circle(107, 93, 2);

  readln;

  CloseGraph;

еnd

 

 

 

 

3. Написать программу, которая вычерчивает на экране кораблик.

 

Текст программы

Результат выполнения

uses Graph;

const dx=5; dy=5;

var grD, grM, ErrCode, x, y:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

 

x:=10;

y:=200;

MoveTo(x,y); LineTo(x,y-2*dy);

LineTo(x+10*dx,y-2*dy);

LineTo(x+ll*dx,y-3*dy);

LineTo(x+17*dx,y-3*dy);

LineTo(x+14*dx,y);

LineTo(x,y);

MoveTo(x*3*dx,y-2*dy);

LineTo(x+4*dx,y-3*dy);

LneTo(x+4*dx,y-4*dy);

LineTo(x+13*dx,y-4*dy);

LineTo(x+13*dx,y-3*dy);

Line(x+5*dx,y-3*dy,x+9*dx,y-3*dy);

Rectangle(x+8*dx,y-4*dy,x+ll*dx,y-5*dy);

Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy);

Circle(x+12*dx,y-2*dy,Trunc{dx/2));

Circle(x+14*dx,y-2*dy,Trunc(dx/2));

Line(x+10*dx,y-5*dy,x+10*dx,y-10*dy);

MoveTo(x+17*dx,y-3*dy);

LineTo(x+10*dx,y-10*dy);

LineTo(x,y-2*dy);

  readln;

  CloseGraph;

end.

 

 

 

 

4. Написать программу, которая выводит на экран пятиконечную звезду.

 

Текст программы

Результат выполнения

uses Graph;

const pi=3.1415;

var grD, grM, a, i, r,x0, y0:integer; k:real; p: array [1..10] of PointType;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

 

хО:=100; уО:=100;

r:=20; k:=2*pi/360;

а:=18;

for i:=l to 10 do

begin

if (i mod 2) <> 0 then

begin

p[i].x:=xO+Round(r*cos(a*k));

p[i].y:=yO-Round(r*sin(a*k));

end else

     begin 

  p[i].x:=xO+Round(r/2*cos(a*k));

  p[i].y:=yO-Round(r/2*sin(a*k));

end;

a:=a+36;

if a > 360 then a:=18; end;

SetFillStyle(SolidFill,Red);

FillPoly(10,p);

readln

end.

 

5. Написать программу, которая рисует на экране 12 концентрических окружностей разного цвета.

 

Текст программы

Результат выполнения

uses Graph, Crt;

var grD, grM, ErrCode, x, y, r, dr, i:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

  x:=100; y:=100;

  r:=5; dr:=5;

  for i:=1 to 12 do

  begin

    setcolor(i);

    circle(x,y,r);

    r:=r+dr

  end;

  readln;

  CloseGraph;

end.

 

6. Написать программу, которая рисует на экране узор из окружностей.

 

Текст программы

Результат выполнения

 

uses Graph, Crt;

var grD, grM, x, y, r, l, i, j:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'с:\tp7\bgi');

    y:=100; r:=20; l:=30;

    for i:=1 to 4 do

    begin

      x:=100;

      for j:=1 to 5 do

      begin

        circle(x, y, r);

        x:=x+l;

      end;

    y:=y+l;

    end;

    readln;

  CloseGraph;

end.

 

 

7. Написать программу, которая рисует на экране узор из квадратов.

 

Текст программы

Результат выполнения

 

uses Graph;

var grD, grM, x, y, d, n, l, i, j:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,''с:\tp7\bgi');

 

  y:=100; d:=30; l:=10;

  for i:=1 to 5 do

  begin

    if ((i mod 2) = 1)

    then begin

           n:=5; x:=100;

         end

    else begin

           n:=4; x:=100+round(d/2+l/2);

         end;

    for j:=1 to n do

    begin

      rectangle(x,y,x+d,y+d);

      x:=x+d+l;

    end;

    y:=y+round(d/2+l/2);

  end;

  readln;

  CloseGraph;

end.

 

 

 

 

 

 

8.Рекурсия. Написать программу, которая выводит на экран приведенный ниже узор.

 

Текст программы

Результат выполнения

uses Graph;

procedure elem(x,y,r,p:integer);

begin

  if p>=0 then

  begin

    circle(x,y,r);

    elem(x+r,y,round(r/2),p-1);

    elem(x,y-r,round(r/2),p-1);

    elem(x-r,y,round(r/2),p-1);

    elem(x,y+r,round(r/2),p-1);

  end;

end;

var grD, grM:integer;

begin

  grD:=detect;

  InitGraph (grD,grM,'');

 

  elem(320,240,60,3);

  readln;

  CloseGraph;

end.

 

 


III. VISUALBASIC2010

 

1. Графические возможности языка программирования VisualBasic2010.

 

Для работы с графическими объектами необходимо инициализировать графический модуль:

Dimgraf As Graphics = CreateGraphics()

 

Прямая:

graf.DrawLine(pen As System.Drawing.Pen, x1 As Single, y1 As Single, x2 As Single, y2 As Single) – проводитлинию, соединяющуюдветочки, задаваемыепарамикоординат.

Пример:

Dimpen1 As New Pen(Color.Red, 5)

graf.DrawLine(pen1, 2, 5, 400, 500)

 

Прямоугольник:

graf.DrawRectangle(pen As System.Drawing.Pen, x As Integer, y As Integer, width As Integer, height As Integer) – рисуетпрямоугольник, которыйопределяетсяпаройкоординатлевойверхнейвершины, ширинойивысотой.

graf.FillRectangle (Brush As System.Drawing.Brush, x As Integer, y As Integer, width As Integer, height As Integer) – рисуетзакрашенныйвнутрипрямоугольник.

Пример:

graf.DrawRectangle(Pens.Crimson, 150, 150, 400, 200)

graf.FillRectangle(Brushes.Chartreuse, 150, 150, 400, 200)

 

Эллипс:

graf.DrawEllipse(pen As System.Drawing.Pen, x As Integer, y As Integer, width As Integer, height As Integer) – рисуетэллипс, ограниченныйпрямоугольником((x, y) – леваяверхняявершинапрямоугольника, width, height – ширинаивысотапрямоугольника)

graf.FillEllipse(Brush As System.Drawing.Brush, x As Integer, y As Integer, width As Integer, height As Integer) – рисуетзакрашенныйвнутриэллипс.

Пример:

graf.DrawEllipse(Pens.Crimson, 240, 120, 300, 350)

graf.FillEllipse(Brushes.BlanchedAlmond, 240, 120, 300, 350)

 

Заливкафона:

graf.Clear(ColorAsSystem.Drawing.Color)- очищает всю поверхность рисования и выполняет заливку указанным цветом фона.

Пример:

graf.Clear(Color.BurlyWood)


2. Проекты.

 

1. Российский флаг

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dimgraf As Graphics = CreateGraphics()

Dimpen1 As New Pen(Color.Brown, 5)

graf.Clear(Color.Black)

graf.DrawLine(pen1, 200, 40, 200, 350)

graf.FillRectangle(Brushes.White, 203, 40, 200, 50)

graf.FillRectangle(Brushes.Red, 203, 90, 200, 50)

graf.FillRectangle(Brushes.Blue, 203, 140, 200, 50)

EndSub

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

    EndSub

EndClass

 

 

 

2. Олимпийские кольца

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dimgraf As Graphics = CreateGraphics()

Dimpen1 As New Pen(Color.Blue, 5)

Dimpen2 As New Pen(Color.Black, 5)

Dimpen3 As New Pen(Color.Red, 5)

Dimpen4 As New Pen(Color.Yellow, 5)

Dimpen5 As New Pen(Color.Green, 5)

graf.Clear(Color.BurlyWood)

graf.DrawEllipse(pen1, 100, 50, 100, 100)

graf.DrawEllipse(pen2, 170, 50, 100, 100)

graf.DrawEllipse(pen3, 240, 50, 100, 100)

graf.DrawEllipse(pen4, 135, 100, 100, 100)

graf.DrawEllipse(pen5, 205, 100, 100, 100) End Sub

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

    EndSub

EndClass

 

 

 

3. Мишень

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim graf As Graphics = CreateGraphics()

        Dim x As Single

        Dim y As Single

        Dim w As Single

        Dim I As Integer

        x = 20

        y = 20

        w = 200

        For I = 1 To 10 Step 1

            If I Mod 2 = 1 Then

                graf.FillEllipse(Brushes.Black, x, y, w, w)

            Else : graf.FillEllipse(Brushes.White, x, y, w, w)

            End If

            x = x + 10

            y = y + 10

            w = w - 20

        Next

 

    End Sub

EndClass

 

 

 

 

4. Олимпиада

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim graf As Graphics = CreateGraphics()

        Dim x As Single

        Dim y As Single

        Dim w As Single

        Dim h As Single

        Dim I As Integer

        Dim pen1 As New Pen(Color.Red, 2)

        x = 100

        y = 300

        w = 400

        h = 20

        For I = 1 To 10 Step 1

        graf.DrawRectangle(pen1, x, y, w, h)

            x = x + 20

            y = y - 20

            w = w - 40

        Next

 

    End Sub

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

    EndSub

EndClass

 

 

 

 

 

5. Рупор

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim graf As Graphics = CreateGraphics()

      Dim pen1 As New Pen(Color.CadetBlue, 2)

        Dim x As Integer

        Dim y As Integer

        Dim w As Integer

        Dim I As Integer

        x = 0

        y = 200

        w = 2

        For I = 1 To 50 Step 1

        graf.DrawEllipse(pen1, x, y, w, w)

            x = x + 5

            y = y - 2

            w = w + 5

        Next

    End Sub

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

    EndSub

EndClass

 

 

 


 

6. Узор из квадратов

 

Текст процедуры

обработчика события

Результат выполнения

PublicClass Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim graf As Graphics = CreateGraphics()

        Dim pen1 As New Pen(Color.Red, 2)

        Dim x As Integer

        Dim y As Integer

        Dim I As Integer

        Dim J As Integer

        Dim w As Integer

        w = 70

        x = 50

        y = 50

        For J = 1 To 3 Step 1

            x = 50

            For I = 1 To 5 Step 1

      graf.DrawRectangle(pen1, x, y, w, w)

                x = x + w + w \ 2

            Next I

            y = y + w + w \ 2

        Next J

        x = 102

        y = 102

        For J = 1 To 2 Step 1

            For I = 1 To 4 Step 1

     graf.DrawRectangle(pen1, x, y, w, w)

                x = x + w + w \ 2

            Next I

            x = 102

            y = y + w + w \ 2

        Next J

    End Sub

EndClass

 

 

 

 

Экспресс-курс "ОСНОВЫ ХИМИИ"

chemistry8

Для обучающихся 8 классов, педагогов, репетиторов. Подробнее...

 

Авторизация

Перевод сайта


СВИДЕТЕЛЬСТВО
о регистрации СМИ

Федеральной службы
по надзору в сфере связи,
информационных технологий
и массовых коммуникаций
(Роскомнадзор)
Эл. № ФС 77-44758
от 25 апреля 2011 г.


 

Учредитель и издатель:
АНОО «Центр дополнительного
профессионального
образования «АНЭКС»

Адрес:
191119, Санкт-Петербург, ул. Звенигородская, д. 28 лит. А

Главный редактор:
Ольга Дмитриевна Владимирская, к.п.н.,
директор АНОО «Центр ДПО «АНЭКС»