Цикличен алгоритъм
с език за блоково програмиране и скриптов текстов език

Предизвикателство: По телевизията рекламират играчка, която познава кое животно сте си намислили. Вие вече знаете достатъчно Python, за да опитате да направите мини програмна версия на тази играчка. Ако играчът винаги си намисля едно единствено животно (например: жаба) ще е достатъчно да се използва една единствена променлива:

animal = 'жаба'

Списъци


Задача 1: Направете програма, съдържаща няколко животни, като създадете списък animals. Въведете в него пет животни – жаба, жираф, кон, кокошка и котка. Уверете се, че сте въвели точно пет различни животни, като проверите дължината на списъка в полето length = 5.

Ако играчът винаги си намисля едно единствено животно (например: жаба) ще е достатъчно да се използва една единствена променлива.


Къде в ежедневието се използват списъци?
На какви носители на информация се визуализират тези списъци?

Тъй като не е ефективно да се създава отделна променлива за всяко име на животно, ще бъде създаден един списък. Списъкът от думи представлява поредица от текстови данни (елементи). Списъкът от думи е с определена дължина и има собствено име. В режим Blocks той се създава подобно на променлива, но в него може да се добавят много елементи.

Броят на елементите в списъка определя неговата дължина. В режим Blocks  тази информация се изписва на последния ред и се актуализира автоматично при добавяне или изтриване на елемент. 

Програмата mBlocks  не може да генерира автоматично код на Python  за работа със списъци. Затова ще трябва да го направите вие.

 

  Изписване на текст с визуално-блоков език за програмиране, Python  и  JavaScript в платформата makecode.microbit.org

●  Създайте игра, която да реализирате с блоково програмиране и скриптов текстов език, аналогична на играта Animals. Списъкът, който ще създадете, трябва да съдържа имена, интересни факти и имена, започващи с „най-дългият/ та/то"… Например:
– Най-дългият мост се намира
– Най-дългото име на град
– Най-дългият пешеходен маршрут


Задача 2: Добавете в списъка animals поне едно, но не повече от три нови животни. Нека програмата изпише на екрана колко животни са ѝ известни в момента.

В режим на текстов програмен код (Python) създаването, именуването и изброяването на първоначалните елементи на списък става на един ред:
animals = ['жаба', 'жираф', 'кон', 'кокошка', 'котка']

Ако списъкът е от думи, всяка дума трябва да се запише в кавички (единични или двойни: 'жаба' или "жаба")

Когато работим с програмен текстов код, ние решаваме на коя стъпка от алгоритъма е необходимо да се получи актуална информация за броя на елементите в списъка. Дължината може да се установи с извикване на командата len(<име на списъка>), като в скобите се записва името на списъка. Получената информация може да се запамети в подходяща променлива (например: length) с помощта на оператор за присвояване: length = len(animals)

animals = ['жаба', 'жираф', 'кон', 'кокошка', 'котка', 'куче']
length = len(animals)
print('В момента знам ' + str(length) + ' животни')


Задача 3: Напишете код на Python, с който програмата да пита дали играчът си е намислил 'жаба'. Ако отговорът е 'да', да се отпечата 'Браво на мен! Познах!'.

answer = input('Ти си си намислил ' + 'жаба' + '? ')
if answer == 'да':
              print('Браво на мен! Познах!')

Цикличен алгоритъм


Задача 4: Напишете текстов програмен код на Python, който да задава въпроса “Ти си си намислил …?” за всички животни от списъка и да проверява отговора на играча. 


Възможно ли е използването на цикличен алгоритъм при програмирането на устройства?   Може ли да посочете примери?

Задачата може да се реши, като се копира отговорът на задача 3 още пет пъти и се замести 'жаба' последователно с 'жираф', 'кон', 'кокошка', 'котка' и 'куче'. Това крие опасност – ако в основния код има грешка, тя ще се разпространи на още пет места. Допълнително, при всяко добавяне на ново животно в списъка, ще трябва да се добавя и нов въпрос за него, като още един път се копира и модифицира основният код. Вместо това може да се напише код, който се изпълнява за всички елементи от списъка.

 

●  Създателите на Python полагат специални усилия той да наподобява естествения английски език.

Код, който описва точна последователност от действия, която се повтаря, се нарича цикъл.

С помощта на оператор за цикъл for може да се премине през всички елементи на списък.

За всяко (for) конкретно животно (specific_animal) от (in) списъка с животни (animals) трябва:
● програмата да пита дали играчът си е намислил това животно;
● ако отговорът е ‘да’ то:
– да се отпечата 'Браво на мен! Познах!'
– да се прекъсне цикъла (break)

animals
= ['жаба', 'жираф', 'кон', 'кокошка', 'котка', 'куче']
for specific_animal in animals:
      answer = input('Ти си си намислил' + specific_animal + '? ')
      if answer == 'да':
         print('Браво на мен! Познах!')
         break

1. Добавете в списъка animals два вида риби, три вида влечуги и четири вида птици. Проверете дали програмата работи коректно, ако сте си намислили едно от новодобавените животни?
2. Ако програмата не познае животното, тя приключва работа и дори не си „признава”, че е победена. Добавете в края на програмата проверка дали играта завършва с отговор, различен от 'да' и отпечатайте подходящо съобщение. Внимавайте с отстъпа – този код трябва да е подравнен съвсем в началото на реда (без празно място преди него), точно както са animals и for:
animals = ['жаба', 'жираф', 'кон', 'кокошка', 'котка', 'куче']
for<код на оператора за цикъл остава без промяна>
if answer != 'да':
    print('Не зная повече животни... ')
    print('Ти печелиш. Браво на теб! ')
3. Kопирайте кода, написан от вас на Python, в COLAB. Има ли нужда от корекции, за да може да се изпълни?