5. Костенурката поумнява

Блокове с параметри. Рекурсия. Условен оператор.

Костанурката строи кула

В следващите задачи ще проследим как костенурката изрисува следната кула, която се състои от 4 квадрата. Всеки следващ квадрат е със страна двойно по-малка от страната на предишния.

Задача 1

Създайте четири блока за чертане на квадрати с размер съответно 80, 40, 20 и 10 стъпки.

Упътване:

  1.  Дублирайте дефиницията на  по следния начин и редактирайте новия блок

Досадна работа! Да дублираш и променяш толкова пъти само за да кажеш на костенурката да нарисува по-малък квадрат! Представете си ако искате кулата да е по-висока какво би станало … Колко по-добре би било блокът да изглежда така  и на празното място да въведем големината на страната на квадрата.

За радост това е възможно. Към дефиницията на блока трябва да добавите параметър за размера , който е число (Number). В следващото видео е показано как може да стане това. 

Задача 2

Дефинирайте блок с параметър указващ размер на страната на квадрата.

Упътване:

    1. Използвайте проекта от предната задача.
  1. Редактирайте блока  като изберете edit от нейното контектно меню: .
  2. Добавете параметър като натиснете иконата + точно след името на блока: .
  3. Изполвайте параметъра като вход за блока , който кара костенурката да изрисува страна на квадрата.

Задача 3

Изпробвайте блока с различни входове (стойности на променливата ).

За да стане кула, костенурката трябва да построи следващия квадратен блок върху предния. Скокът може да се опише също с блок с параметър.

Задача 4

Създайте блок с един параметър , с помощта на който костенурката да скача върху квадрат с даден размер.

Упътване:

  1. Едно възможно решение е следното:

Задача 5

Изпробвайте блока като го добавите след всяко извикване на блока :

Резултатът прилича на кулата, която скицирахме, но не съвсем. За да стане същата трябва да я направим симетрична.

Задача 6

Променете блока така, че костенурката да чертае всеки следващ квадрат върху горната страна на предишния, но центриран.

Упътване:

  1. След като костенурката скочи на горната страна на квадрата я преместете вляво с 1/4 от страната му.
  2. Използвайте оператор за деление , който можете да намерите в секцията Operators:

Задача 7

Дефинирайте блок , който кара костенурката да изрисува кула с определен размер на първия квадрат и всеки следващ квадрат е със страна два пъти по-къса от страната на предния.

Задача 8

Изпробвайте блока със стойности за параметъра съответно 80, 40 и 20.

Ако се вгледаме внимателно ще забележим, че една кула се състои от квадрат и кула с по-малък размер върху него, която се състои от квадрат и кула с по-малък размер и т.н. Нека опитаме да използваме това наблюдение.

Задача 9

Променете блока така, че да рисува квадрат и върху него кула с размер на основата два пъти по-малък от страната на квадрата.

Ако изпълним блока ще забележим, че тя чертае кулата, но вместо да спре, костенурката се върти на едно място на върха на кулата.

Нека помислим какво всъщност се случва когато изпълним горния блок.

извиква и . Последнния блок извиква и . Последния блок извиква  и т.н. до безкрай костенурката ще изрисува все по-малки квадрати с все по-малки кули върху тях. За да спрем това безкрайно въртене нужно да прекратим изпълнението при някакво условие. Например можем да определим минимален размер на страната на квадрата.

Задача 10

Редактирайте блока така, че да спре изпълнението си ако страната на квадрата, който костенурката трябва да изрисува, е по-малък от 10 стъпки.

Упътване:

  1. Използвайте условния оператор . Можете да го намерите в секцията с блокове Control:
  2. Използвайте оператора за сравнение от сексицата Operators за да опредите условието, при което блока ще спре да се изпълнява.
  3. Използвайте блока за да спрете изпълнението на блока.

Захванете се за работа

Задача 11

Начертайте следйния вариант на кулата по подобие на кулата в Пиза.

Упътване:

1. Преди изрисуването на всеки квадрат, завъртете костенурката с 1 градус надясно.

Задача 12

Редактирайте блока така, че да спира изпълнението си при изрисуване на определен брой квадрати.

Упътване:

  1. Добавете още един параметър , който задава броя на квадрати на кулата
  2. Спрете изпълнението на блока ако
  3. Изпробвайте новия блок с параметри 80 за размер на основата и 6 за височина в брой квадрати:

Развихрете се

Задача 13

Редактирайте блока от Задача 12 така, че страната да следващия квадрат да е с 10 стъпки по-малка (вместо 2 пъти по-малка). Изпробвайте блока за. данарисувате кула с основа 20 стъпки и височина 6 квадрата:  .

Упътване:

  1. Заменете оператора с .

Защо костенурката изрисува 3 квадрата вместо 6, както е зададено?

Задача 14

Начертайте следната фигура:

Упътване:

Ако се загледаме внимателно ще забележим, че фигурата прилича на прозорец, в чиито горен десен квадрат е нарисуван същия прозорец, но с по-малък размер.

  1. Използвайте за пример блока като я преименувате подходящо (например ).
  2. Вместо един квадрат накарайте костенурката да изрисува три.
  3. На мястото на четвътия квадрат изрисувайте прозорец с два пъти по-къса страна.

Задача 15

Редактирайте блока  така, че една част от фигурата да е с по-дебели очертания, както е показано на следната фигура:

Упътване:

  1. Одебелете молива при изчертаването на един от трите квадрата, след което върнете дебелината на молива обратно. Това става с блока

Задача 16

Ако изпълнението продължава до безкрай, каква част от площта на цялата фигура заемат квадратите с одебелени страни?

Упътване:

  1. Сравнете площта на жълтата, синята и оранжевата част:
  1. Помислете каква част от квадратите костенурката изрисува с одебелени страни.

Задача 17

Накарайте костенурката да изрисува следната фигура:

Упътване:

  1. Редактирайте блока  

  2. Вместо квадрат с на половина по-къса страна, накарайте костенурката да рисува квадрат с дължина на страната равна на сумата от дължините на страните на предходните два квадрата.

  3. Първият квадрат приемаме, че има страна 0, вторият 1. Тогава третият ще има страна 1, четвъртият – 2, 3, 5, 8 и т.н.

  4.  Накарайте костенурката да изрисува всеки следващ квадрат на дясната страна на предишния започвайки от горния десен ъгъл.

Задача 18

Създайте блок , който изрисува правилен многоъгълник с входове за размер на страната и  брой на ъглите.

Упътване:

  1. Редактирайте блока .
  2. Ъгълът на завъртане след изрисуването на всяка страна е

Задача 19

Създайте блок, който да рисува следната фигура:

Упътване:

  1. Използвайте за пример блока като вместо квадрат рисувате многоъгълник с помощта на блока от предната задача.
  2. Можете да използвате блока след всяко изчертаване на многоъгълник за да смените цвета му. 

Задача 18

С помощта на блока нарисувайте кръг. 

Теми за размисъл

Рекурсия

Когато в дефиницията на един блок използваме същия блок казваме, блокът използва рекурсия. В задача 9 видяхме как блокът извиква себе си в края на дефинициата.

Рекурсията е проста и мощна техника. Майстор на използването на рекурсия е природата. Наблюдавайки папрат виждаме, че неговите клони, се състоят от по-малки клонки, които са тяхно умалено копие. Малките клонки се състоят от листа, които също са умален размер на клоните. Същото важи и за карфиола.

Рекурсията намира място и в литературата. Следващото стихотворение използва себе си за свое продължение:

Имало едно време едно мече.
То си имало джобче.
В джобчето му имало писъмце.
В писъмцето пишело:
 „Имало едно време едно мече.
  То си имало джобче.
  В джобчето му имало писъмце.
  В писъмцето пишело:
  „Имало едно време.  ………
   и т.н.“

Фибоначи

В задача 17 костенурката изчерта редица от квадрати, чиито страни са 1, 1, 2, 3, 5, 8 и т.н. Тази редица е известна под името ‘числата на Фибоначи’, кръстена на математика Леонардо Фибоначи. Редицата е пример за рекурсия – всяко следващо число се образува от предишните две. Редицата има много интересни свойства, за които можете да разберете повече в следващото видео

От участниците

Ако искате да споделите някоя своя програма, рисунка, отговор или идея, можете да изпратите съобщение като отворите синия бутон долу в ляво. Така може вашата творба или идея да се появи на тази страница за пример.

Бележки

Задачите са взети от учебниците ‘Информатика за начинаещи – част 1 – или с костенурката напред’, Евгения Сендова, Румен Николов, Издателство “Народна просвета”, 1989 г. и ‘Напред в компютърния свят’, Евгения Сендова, Румен Николов, Ивайло Иванов, Издателство “Виртех”, 2002 г.