SEC-S20W2 - How to Prepare Yourself for Programming?
Та я все таки хочу повернутися до одного питання.
Основним питанням минулого домашнього завдання було
"What should you have done before to become a programmer in the future?"
А головне слово у цьому запитанні було "before".
Перед чим? Перед всім!! Перед тим як вирішили спробувати себе в програмуванні. Тобто задовго до навчання на програміста.
Наприклад прожили ви певний етап свого життя, і ніколи не думали про комп'ютери та програмування. І ось несподівано вирішили стати програмістом. Запитання було в тому, що треба було робити на отому етапі життя, щоб далі гарно здобувати професію програміста. Питання було свого роду головоломкою. І вірна відповідь - розв'язувати головоломки.
В школі найкраще для цього підходить математика(геометрія).
Геометрію можна представити як ящик з теоремами та аксіомами. Розв'язуючи задачі ви просто вибудовуєте пов'язуючи у ланцюг відомі аксіоми та теореми і породжуєте щось нове - нову теорему(чи розв'язуєте задачу).
Програміст робить те саме: він відомі йому команди пов'язує у ланцюжок і створює нову програму. А програма схожа на велику команду. Складність тут в тому, що треба відібрати одні теореми(команди), відкинути інші і побудувати ланцюжок доведення(послідовність команд) і вийде нова теорема(програма).
Саме тому математика як така треба не всім програмістам, вона треба була раніше, щоб у Вас розвинулося алгоритмічне мислення, логіка. Це більш потрібно всім програмістам. Математика ж певній частині програмістів. Інший приклад штанга та гантелі. Для чого вони Вам? Ви ж не будете носити їх у подальшому житті - вони потрібні були раніше, як інструмент, завдяки якому Ваше тіло отримало силу на витривалість.
А що робити коли математика важко дається, чи не подобається? Раз вона не всім програмістам потрібна.
Замість математики тут може виступити розв'язування різних головоломок.
Як же почати програмування?
І тут виходить парадокс.
Програмувати Ви не можете бо не знаєте команд((
А як вивчите команди - але це ще не значить що Ви знаєте мову програмування і можете програмувати.
А як вивчите мову - Ви все рівно не зможете програмувати.
Бо слід ще й знати як розв'язувати задачі.
Програмування — це, перш за все, вміння мислити логічно та системно, а мови — лише інструмент для реалізації цих думок.
Саме тому не так важливо з якої мови починати навчання, звісно це має бути одна з популярних сучасних мов, яка скоріш за все знадобиться, а не такі старі мови як Basic, Pascal, Fortran.
Логічне послідовне мислення зараз математикою Вам не розвинути, бо її треба вчити. А до математики або ще далеко, або вже далеко.
То як же бути.
Мислення, яке так важливе для програмування, можна розвивати не лише через математику. Якщо вона здається складною або не актуальною на даний момент, існують інші способи його тренування. Одним з найпростіших та найефективніших є головоломки.
Тобто це самі елементарні головоломки. Вони були ще до комп'ютерів, вони були на початку комп'ютеризації, бо була слабка графіка. А коли стала крута графіки всі стали грати в 3D, і логічні ігри відійшли на другий план. Вони були пережили друге народження на мобільних телефонах. Але зараз 3D прийшло і в мобільні телефони. Хто зараз грає в логічні ігри?
Сама мабуть класична головоломка це шахи. І звичайна гра сама по собі, і на сайтах де можна пограти в шахи є шахові головоломки. Знайдіть мат через три ходи. Знайдіть найкращий хід. І т.п.
Це скріншот з гри SmartSokoban, класичний перший рівень з 1980х років. Дана реалізація 2001 року вже дуже стара, не знаю чи вдасться її знайти в інтернеті.
Сокобан
Можна скласти алгоритм(послідовність дій) для перетягування всих ящиків на місце.
Прослідкуйте:
вгору, вліво, вліво, вниз, вліво, вліво,
вліво, вліво, вгору, вгору, вліво, вліво, вгору, вліво, вліво, вниз,
вправо-16 раз.
Після цих кроків контейнер буде на місці - це і була перша програма.
Послідовність дій що приводить до певної мета(загнати ящик на його місце)
Але якщо прослідкувати далі, задача стала не розв'язною, чому?
Спочатку такі ігри несвідомо готували до програмування, навчали послідовно ти логічно мислити.
А потім вже цілеспрямовано почали створювати такі "ігри". Тобто системи де не програмісти можуть програмувати.
Прикладом такого є blockly.games
Ще прикладом такого роду навчання програмуванню є сайт code.org.
На цьому сайті дуже багато навчального матеріалу, з різними героями.
Мені сподобалося навчання з героями гри Майнкрафт,
Зареєструйтеся на цьому сайті,
Там є й більш серйозні навчальні матеріали, наприклад такі
Я навів пару прикладів сайтів де можна в ігровій формі, на інтуїтивному рівні ознайомитися з програмуванням.
Вже в наступному уроці все буде по справжньому, нам буде не до ігор - хіба що будемо самі їх робити.
Домашнє завдання
Задаю повторно запитання з минулого уроку, адже воно досить важливе - хто минулого разу відповів - +1auto
Поясніть на її прикладі як вона може допомогти майбутньому програмісту.
Гадаю що багато хто знаю класичну задачу про вовка, козу та капусту. Де чоловіку треба їх всіх перевезти в човні на інший берег, при умові що в човен він може взяти щось одне. А без чоловіка залишати їх самих не можна, бо з'їсть капусту, а вовк з'їсть козу.
До берега підійшли пара чоловіків, які хотіли перейти на інший бік річки. Вони побачили неподалік двох хлопчаків, які весело плавали у човні. Чоловіки вирішили попросити хлопчиків допомогти переправитися, але з’ясувалося, що човен дуже маленький. Він міг витримати або двох хлопчиків одночасно, або лише одного дорослого.
Дорослі задумалися, як їм потрапити на інший берег, якщо човен такий маленький. Хлопці погодилися допомогти і стали міркувати разом із ними. Завдання було непростим, але поміркувавши вони допомогли людям переправитися на інший берег.
Два чоловіки підійшли до річки. Біля пустинного берега стояв одинокий човен, в який міг поміститись тільки один чоловік. Поруч людей і хлопчиків як у попередній задачі не було. Все ж таки обидва мандрівники без будь-якої допомоги переправились на цьому човні через річку і продовжили свій шлях. Як вони це зробили? Гарно подумайте!
На сайті https://blockly.games/ в розділі Maze розв'язати перші сім завдань для себе, щоб навчитися. Останні три розв'язуєте і ділитеся у свій допис. Якщо не виходить 8,9,10 - то розв'язуйте 7,8,9. Але оцінка буде менша на (0,1) з кожним рівнем.
Завдання також треба розв'язати якнайкраще, як найефективніше - подумайте над цим.
У правому кутку, праворуч від вибору мови, є кнопка поділитися розв'язком.
Після розв'язування задачі поділіться в тексті свого допису цим посиланням. А у вікні буде видно програмний код Вашого розв'язку. Можете поділитися і ним.
moveForward();
moveForward();
turnLeft();
але щоб цей код з'явився задачу слід розв'язати, посилання ж генерується завжди при натисканні (не зловживайте цим)
На сайті code.org все майже так само, лише я не знайшов кнопку посилання(((
і програмний-код там можна побачити навіть не повністю розв'язавши задачу.
Завдання - пройти чотири останні рівні. І прозвітувати вказаним кодом.
a) https://studio.code.org/s/aquatic/lessons/1/levels/12
b) https://studio.code.org/s/mc/lessons/1/levels/14
можна обрати варіант a) або варіант b)
але так як тут нема посилання на завдання - то вставте і посилання на задачу. Щоб я знав яку Ви задачу розв'язували і зміг перевірити.
Навчилися кодувати?
Уявіть що у калькуляторі є лиш операція '+1'.
зараз на табло 0.
опишіть як отримати на табло 100.
Тепер додали ще одну операцію 'х2'
як можна з нуля одержати на табло 100 якнайшвидше, за меншу кількість кроків.
Знайдіть щось подібне до code.org та blockly.games
Напишіть про це, розв'яжіть звідти три задачі (аналогічно п.3 та п.4
- Далі будемо вчити мову програмування С/С++.
Оберіть собі як будете її вивчати, з книги, з блогу, з сайту.
А так як навчання не за горами - то почніть читати/дивитися.
За гарно виконані всі завдання 10 балів.
Правила проведення конкурсу
Щоб я швидко знайшов, перевірив та оцінив ваші роботи залиште посилання в коментарі під цим текстом а в роботі поставите тег #sec20w2sergeyk
Порекомендуйте прийняти участь своїм двом-трьом друзям.
Роботи слід опублікувати з Monday 16 Sep 24 to Sunday 22 Sep 24
Ваші роботи будуть мною оцінені та відібрані п'ять кращих робіт
Check your title...
my entry : https://steemit.com/hive-120823/@mrsokal/sec-s20w2-how-to-prepare-yourself-for-programming
My entry:
https://steemit.com/sec20w2sergeyk/@kouba01/4etr75-sec-s20w2-how-to-prepare-yourself-for-programming
Hello @sergeyk, please this is my entry;
https://steemit.com/sec20w2sergeyk/@iddy/sec-s20w2-how-to-prepare-yourself-for-programming
https://steemit.com/hive-170554/@manuelhooks/sec-s20w2-how-to-prepare-yourself-for-programming#@sergeyk/sk3xg3
З цим виходить 10.3 бала, якщо правильно розумію умовні позначення))
Here is my entry: https://steemit.com/sec20w2sergeyk/@mohammadfaisal/sec-s20w2-how-to-prepare-yourself-for-programming
HERE IS MY PARTICIPATION
https://steemit.com/sec20w2sergeyk/@arinaz08/sec-s20w2-how-to-prepare-yourself-for-programming
Here is my entry:
https://steemit.com/sec20w2sergeyk/@ahsansharif/sec-s20w2-how-to-prepare-yourself-for-programming
Here's my entry link:
https://steemit.com/sec20w2sergeyk/@hudamalik20/sec-s20w2-how-to-prepare-yourself-for-programming