Суббота, 27.07.2024, 11:46
Главная | Регистрация | Вход Приветствую Вас Гость | RSS


Меню сайта


Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Тестування онлайн
тестування онлайн 


Социальные закладк

Учимся  программировать вместе с Processing

Вложенные циклы

Если вложить один цикл for в другой, количество повторений перемножается.

Для начала рассмотрим небольшой пример, а затем реализуем его по частям в примере 1

Пример 1.

 

size(480, 120);

background(0);

smooth();

noStroke();

for (int y = 0; y <= height; y += 40) { //добавить комментарий

println(“ y= “,y);

for (int x = 0; x <= width; x += 40) {//добавить комментарий

println(“                    x=  “,x);

fill(255, 140);

ellipse(x, y, 40, 40);  //добавить комментарий

}

}

 

Пример 2: Ряды и колонки

В этом примере циклы for расположены рядом, а не вложены один в другой.

Результат выполнения программы показывает, что один цикл for рисует колонку из 4 кругов, другой ряд из 13 кругов

 

size(480, 120); // height=120, width=480

background(0);

smooth();

noStroke();

for (int y = 0; y < height+45; y += 40)  {

fill(255, 140);

ellipse(0, y, 40, 40);

 println(“ y=   “,y,”   height +45=    “,height +45); 

}

for (int x = 0; x < width+45; x += 40) {

 println(“ x=   “,x,”   width+45=    “,width+45 ); 

fill(255, 140);

ellipse(x, 0, 40, 40);

}

 

Пример 3. Коррекция кода примера 2.

Если вложить один цикл for в другой, как в примере 1,тогда:

  • 4 итерации первого цикла будут содержать 13 итераций второго,

и

  • в результате блок кода внутри циклов будет запущен 52 раза (4x13 = 52).

 

Задание 1. Найти ошибку в коде проекта

size(480, 120); // height=120, width=480

background(0);

smooth();

noStroke();

for (int y = 0; y < height+45; y += 40) {

fill(255,140);

ellipse(0, y, 40, 40);

println(" y=   ",y);

for (int x = 0; x < width+45; x += 40){

fill(255,140);

ellipse(x, 0, 40, 40);

 println(" x=   ",x);             

}

}

Требуется: 

Имеем: 

 

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

 

Пример 5. Точки и линии

Код в примере рисует линию от каждой точки до центра экрана.

 

size(480, 120);

background(0);

smooth();

fill(255);

stroke(102);

for (int y = 20; y <= height-20; y += 20) // height-20 = 100

 {

for (int x = 20; x <= width-20; x += 10) // width-20 = 460

{

println(" y=   ", y, "   x=   ",x);

ellipse(x, y, 4, 4);

line(x, y, 240, 60); // Рисуем линии к центру экрана

}

}

for (int y = 20; y <= height-20; y += 20) // height-20 = 100

 {

for (int x = 20; x <= width-20; x += 40) // width-20 = 460

{

println(" y=   ", y, "   x=   ",x);

ellipse(x, y, 4, 4);

line(x, y, 240, 60); // Рисуем линии к центру экрана

}

}

 

Задание 2. Найти изменение в коде проекта, которые позволили получить следующий результат:

Варианты выполнения примера.

Сокирко Виталий. 2019год

void setup()
{
size(480, 120);

 frameRate(5);
}
void draw()
{

background(0,0,(random(255)));

smooth();
fill(255);
stroke(102);

for (int y = 20; y <= height-20; y += 20) // height-20 = 100
 {

for (int x = 20; x <= width-20; x += 10) // width-20 = 460

{
stroke(random(228),random(228),random(228));
println(" y=   ", y, "   x=   ",x);

ellipse(x, y, 4, 4); 

line(x, y, 240, 60); // Рисуем линии к центру экрана
}
}
}

 

 Зайченко Юля 2019 год

void setup()
{

background(random(25));
size(480, 120);
frameRate(10);
smooth();
fill(255);
stroke(102);
}
void draw()
{

background(random(5,255));
fill(random(25),random(25),random(25));

for (int y = 20; y <= height-20; y += 20) // height-20 = 100
 {

for (int x = 20; x <= width-20; x += 50) // width-20 = 460

{
stroke(random(255),random(255), random(255));
println(" y=   ", y, "   x=   ",x);

ellipse(x, y, 8, 8); 

line(x, y, 240, 60); // Рисуем линии к центру экрана
}
}
}

Пример 5. Точки и полутона

В примере 5 с каждой строкой происходит уменьшение размеров эллипсов и сдвиг их вправо с помощью сложения y- координаты и x-координаты.

int  z;

size(480, 120);

background(0);

smooth();

for (int y = 32; y <= 120; y += 8) {

z= 16 - round(y/10);

//println(" y =   ", y, "   z =   ",z);

for (int x = 12; x <= 480; x += 15) {

ellipse(x + y, y, z, z);

//println( "   x =   ",x);

//ellipse(x + y, y, 16 – y/10, 16 – y/10);

}

}

int  z;

size(480, 120);

background(0);

smooth();

for ( int  y = 32; y <= 120; y += 16) {

z= 16 - round(y/10);

println(" y =   ", y, "   z =   ",z);

for (int x = 12; x <= 480; x += 30) {

ellipse(x + y, y, z, z);

  println( "   x =   ",x);

//ellipse(x + y, y, 16 – y%10, 16 – y%10);

}

}

Форма входа
Поиск
Календарь
«  Июль 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Рейтинг@Mail.ru
    Copyright MyCorp © 2024
    Конструктор сайтов - uCoz