II .10. Вложенные циклы с параметром — КиберПедия 

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

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

II .10. Вложенные циклы с параметром

2021-06-23 29
II .10. Вложенные циклы с параметром 0.00 из 5.00 0 оценок
Заказать работу

 

Рассмотим фрагмент программы:

INPUT R

SCREEN 12

FOR X=R TO 639-R STEP 2*R

FOR Y=R TO 479-R STEP 2*R

Тело цикла по параметру Y
Тело цикла по параметру X
      CIRCLE(X,Y),R,14

      PAINT (X,Y),4,14

      SLEEP 1

NEXT Y

SLEEP 1

NEXT X

END

В этом фрагменте фигурируют два цикла с параметром. Фигурными скобками отмечены их тела. В тело цикла по параметру Х входит цикл по параметру Y.

Цикл, который входит в тело другого цикла, называется вложенным.

В тело цикла с параметром Y входят три оператора:

1. CIRCLE(X,Y),R,14                

2. PAINT (X,Y),4,14

3. SLEEP 1

А в тело цикла с параметром Х входят два оператора:   

1. FOR Y=R TO 479-R STEP 2*R

CIRCLE(X,Y),R,14

PAINT (X,Y),4,14

SLEEP 1

NEXT Y

2. SLEEP 1

При работе цикла с параметром Y, будет происходить рисование кружков (с перерывом в 1 секунду). Кружки будут выстраиваться в колонну сверху вниз, во всю высоту экрана. Так как, автоматически будет изменяться переменная Y с шагом 2*R.

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

В итоге, весь экран будет покрыт кружками, как узором.

Задание:

Получить на экране следующий узор:

 

 

 


Каждый ромб задается с помощью величины а.

 


Решение:

Здесь элементом узора является не круг, а ромб. Фрагмент программы для его рисования, таков:

LINE(X-a,Y)-(X,Y-a),1

LINE -(X+a,Y),1

LINE- (X,Y+a),1

LINE –(X-a,Y),1

PAINT(X,Y),1,1

Достаточно в предыдущей программе внести эту замену и узор готов. Оператор SLEEP писать не обязательно, т.к. в задании не требовалось выводить узор постепенно.

Программа:

CLS

PRINT “ввести размер ромба”

INPUT a

SCREEN 12

FOR X=a TO 639-a STEP 2*a

FOR Y=a TO 479-a STEP 2*a

LINE(X-a,Y)-(X,Y-a),1

LINE -(X+a,Y),1

LINE- (X,Y+a),1

LINE –(X-a,Y),1

PAINT(X,Y),1,1

NEXT Y

NEXT X

END

 

Задание:

Получить на экране следующий узор:

 

 


Решение:

Весь узор получен из чередования двух маленьких фрагментов: №1. зеленого квадрата и желтого кружка на нем; №2. желтого квадрата и зеленого кружка на нем. Если полагать, что центр окружности будет располагаться в точке (х,у), окружность будет иметь радиус R, а сторона квадрата, соответственно, 2*R, то эти фрагменты можно получить выполняя следующие серии операторов:

1. LINE(X-R,Y-R)-(X+R,Y+R),2,BF

CIRCLE(X,Y),R,14

PAINT(X,Y),14,14

2. LINE(X-R,Y-R)-(X+R,Y+R),14,BF

CIRCLE(X,Y),R,2

PAINT(X,Y),2,2

Будем строить узор вертикальными колонками. При построении одной колонки, координата Х изменяться не будет, а координата Y будет изменяться от R (центр первого фрагмента узора в колонке) до 479-R (центр последнего фрагмента узора в колонке) с шагом 2*R. Рассмотрим внимательно узор, и выясним от чего зависит рисование того или иного фрагмента.

Колонки, стоящие на первом, третьем, а, в общем, на нечетных местах – идентичны, и отличаются от колонок, стоящих на четных местах порядком следования фрагментов.

Рассмотрим нечетные колонки. В них на нечетных местах стоят фрагменты №1, а на четных – фрагменты №2.

В четных колонках – наоборот. На нечетных местах стоят фрагменты №2, а на четных – фрагменты №1.

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

 

1 2 3 4 ………
1

 

2
3
. . . .

Если номера строчки и столбика одинаковой четности, то рисуется фрагмент №1, а иначе - №2.

Количество клеточек в узоре зависит от величины радиуса. По горизонтали их 640\(2*R), а по вертикали 480\(2*R). 

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

FOR J=1 TO 480\(2*R)

IF ((I mod 2<>0) and (J mod 2<>0)) or ((I mod 2=0) and (J mod 2=0)) THEN

                                               LINE(X-R,Y-R)-(X+R,Y+R),2,BF

                                     CIRCLE(X,Y),R,14

                                     PAINT(X,Y),14,14

                                               ELSE

                                     LINE(X-R,Y-R)-(X+R,Y+R),14,BF

                                     CIRCLE(X,Y),R,2

                                     PAINT(X,Y),2,2

END IF

Y=Y+2*R

NEXT J

Так как таких колонок несколько, то этот фрагмент программы нужно повторить

640\(2*R) раз, одновременно изменяя координату по горизонтали, т.е. Х.

Программа:

СLS

PRINT “введите радиус”

INPUT R

SCREEN 12

X=R

Y=R

FOR I=1 TO 640\(2*R)

FOR J=1 TO 480\(2*R)

IF ((I mod 2<>0) and (J mod 2<>0)) or ((I mod 2=0) and (J mod 2=0)) THEN

                                               LINE(X-R,Y-R)-(X+R,Y+R),2,BF

                                     CIRCLE(X,Y),R,14

                                     PAINT(X,Y),14,14

                                               ELSE

                                     LINE(X-R,Y-R)-(X+R,Y+R),14,BF

                                     CIRCLE(X,Y),R,2

                                     PAINT(X,Y),2,2

END IF

Y=Y+2*R

NEXT J

X=X+2*R

NEXT I

END

 

Задания для самостоятельного решения:

1. Придумать и получить на экране узор.

2. Нарисовать в центре экрана квадрат со стороной 400 пикселей и заставить кружок радиуса R (R<50) двигаться по его траектории. Кружок должен обежать вдоль сторон квадрата 10 раз по часовой стрелке.

 

 



Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.