Мисленето като програмист: алгоритми в живота
Какво са алгоритми, условия, цикли и бъгове и как да мислиш стъпка по стъпка като истински програмист.
Бзз-клик! Робко на линия. Загадка: как ще обясниш на робот да си измие зъбите, ако той прави САМО точно това, което му кажеш? Добре дошъл в света на програмистите!
История от живота
Преди около 1200 години в Багдад живял учен на име ал-Хорезми. Той описвал как се решават задачи стъпка по стъпка, а от неговото име идва думата "алгоритъм". През 1843 г. англичанката Ада Лъвлейс написала инструкции за машина за смятане, която още дори не била построена. Затова мнозина я наричат първия програмист в света. А през 1947 г. учени намерили истински молец, заседнал в един компютър, и го залепили в дневника си с бележка, че са открили първия истински "бъг". Думата се ползвала за повреди и преди, но тази случка я направила прочута и до днес грешките в програмите се казват бъгове!
Разбери го стъпка по стъпка
- Алгоритъмът е рецепта
Алгоритъм е списък от стъпки, които водят до резултат. Рецептата за палачинки, пътят до училище и правилата на игра са алгоритми. Стъпките трябва да са ясни и в правилен ред.
- Ако... тогава...
Програмистите казват на компютъра да избира: "АКО вали, ВЗЕМИ чадър, ИНАЧЕ вземи шапка." Това е условие. Ти правиш такива избори всеки ден, без да се замисляш.
- Повтори!
Вместо да пишеш "направи крачка" 10 пъти, пишеш "ПОВТОРИ 10 пъти: направи крачка". Това е цикъл. Той спестява много писане и грешки.
- Раздели голямата задача
Подреждането на стаята изглежда огромно. Но ако го разделиш на "играчки", "дрехи", "книги", става лесно. Програмистите правят същото с големите проблеми.
- Търсене на бъгове
Когато нещо не работи, програмистът проверява стъпките една по една и намира грешката. Това не е провал, а част от работата. Дори най-добрите програмисти поправят бъгове всеки ден.
Представи си така: Компютърът е като много послушно, но много буквално малко братче. Ако му кажеш "сложи си обувките", може да ги сложи на ръцете! Затова инструкциите трябва да са съвсем точни.
- Алгоритъм
- Ясни стъпки в правилен ред, които водят до резултат
- Условие
- АКО нещо е вярно, ТОГАВА направи това, ИНАЧЕ друго
- Цикъл
- Повтаряне на стъпки няколко пъти
- Бъг
- Грешка в програмата
- Дебъгване
- Търсене и поправяне на грешки
- Разделяне
- Голяма задача, нарязана на малки и лесни
Решени примери
Роботът е на старта. Програма: ПОВТОРИ 4 пъти: [напред 1 крачка, завий надясно]. Къде ще стигне?
Ще обиколи квадрат и ще се върне точно на старта, обърнат както в началото. 4 завоя надясно правят пълен кръг.
Алгоритъм за сандвич: 1) Сложи сиренето. 2) Вземи филия. 3) Намажи масло. Какъв е бъгът?
Редът е грешен: не можеш да сложиш сирене, преди да имаш филия. Правилно: вземи филия, намажи масло, сложи сиренето.
Мисля си число от 1 до 100. Ти питаш, а аз казвам "по-голямо" или "по-малко". Каква е най-хитрата стратегия?
Всеки път питай за средата: 50, после 25 или 75 и така нататък. Всеки отговор изхвърля половината числа и винаги познаваш с най-много 7 опита.
Внимавай с тези грешки
- Компютрите са умни и сами се досещат какво искаш.Компютърът прави точно това, което му е казано, стъпка по стъпка. Умни са програмите, които хората са написали.
- Добрият програмист никога не греши.Всички програмисти правят грешки. Добрият е този, който бързо ги намира и поправя.
- Алгоритмите са само за компютри.Всяка рецепта, упътване или правило на игра е алгоритъм. Ти ги ползваш всеки ден.
Задачи
Лесни
Напиши алгоритъм от 5 стъпки за миене на ръцете.
Подсказка
Започни от това, което правиш първо на мивката.
Отговор
Например: 1) Пусни водата. 2) Намокри ръцете. 3) Насапуниса ги и търкай. 4) Изплакни. 5) Спри водата и подсуши ръцете.
Довърши условието: АКО светофарът е червен, ТОГАВА... ИНАЧЕ АКО е зелен, ТОГАВА...
Подсказка
Помисли какво правиш на пешеходната пътека.
Отговор
АКО е червен, ТОГАВА чакам. АКО е зелен, ТОГАВА се оглеждам и пресичам.
Средни
Роботът прави: ПОВТОРИ 3 пъти: [напред 2 крачки]. После: ПОВТОРИ 2 пъти: [назад 1 крачка]. На колко крачки от старта е?
Подсказка
Пресметни отделно напред и назад.
Отговор
На 4 крачки напред, защото 3 по 2 е 6, а 6 минус 2 е 4.
Играйте по двойки: единият е "робот", другият дава команди (напред, наляво, надясно), за да стигне роботът до една книга в стаята. Колко команди ви трябваха?
Подсказка
Роботът изпълнява само точните команди, без да се досеща.
Отговор
Отговорът е различен. Опитайте втори път с по-малко команди и с цикли, например "напред 3 пъти".
Трудни
Мисля си число от 1 до 15. Ти казваш число, а аз отговарям "познал си", "по-голямо" или "по-малко". Ако винаги казваш средата, най-много колко опита ти трябват?
Подсказка
Всеки път средното число отпада и остава по-малко от половината.
Отговор
4 опита. Първо 8. Остават 7 числа, казваш средата им (4 или 12). Остават 3, казваш средното. Остава 1 число и го познаваш.
Напиши "програма" с цикъл, която кара робот да нарисува триъгълник с равни страни.
Подсказка
За квадрата бяха 4 завоя по 90 градуса. Колко са за 3 завоя?
Отговор
ПОВТОРИ 3 пъти: [напред 1, завий наляво с 120 градуса]. Трите завоя по 120 градуса правят пълен кръг от 360.
Лабиринт за робот
Цел: Да създадеш лабиринт и програма, с която приятел да го мине.
- Начертай на лист мрежа 5 на 5 квадратчета.
- Отбележи старт, финал и няколко стени.
- Напиши програмата със стрелки: нагоре, надолу, наляво, надясно (и цикли като "3 надясно").
- Дай програмата на приятел и го остави да я изпълни с пръст или с играчка.
- Ако не стигне до финала, намерете бъга заедно и го поправете.
Накрая: Лабиринт с работеща програма и поне един намерен и поправен бъг.
Тест с точки
10 въпроса, 18 точки, оценка накрая и разбор какво да преговориш.