Хто ще не дивився Гарвардський лекції з основ програмування заходьте сюди: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
Вступ. Структура курсу CS50
Друзі! У вступі ми нагадаємо (або розповімо, кому як) про структуру CS50. Курс триває 12 тижнів. Щотижня проходять дві лекції, а також усі семінарські заняття та пояснення. Такі ось статті, як ця, ми випускатимемо в міру готовності лекцій. У ній буде короткий опис лекцій, конспект «шортів» та додаткової інформації, а також переклад практичних завдань. Лекції нульового тижня висвітлабо такі питання:- Двійкова система числення.
- ASCII
- Алгоритми та алгоритмічність мислення
- Компілятори
- Мова Scratch
- Булеві вирази
- Умови
- Цикли
- Змінні
- Функції
- Масиви
- Потоки
- Події
- Зрозуміти, як інформація може бути представлена в цифровому вигляді.
- Вивчити основні програмні конструкції та поняття.
- Створити власну анімацію, гру чи інтерактивну дію на Scratch.
- Зробити враження на друзів =).
CS50 Week 0 (Лекція 1-2): конспект
Алгоритми
Сподіваємося, ви вже встигли подивитися лекції, і зрозуміли, що алгоритм розбиває розв'язання задач (різних задач, математичних чи «як доїхати до станції метро N») на кроки. При цьому кожен крок повинен виконуватися за кінцеву кількість часу, та й самих кроків має бути певна кількість. А ще наступний крок залежить від попереднього. Докладніше про алгоритми можна почитати, наприклад, тут . Якщо знаєте англійську, ось прекрасна анімація на TED авторства Девіда Малана: https://youtu.be/6hfOvs8pY1k Хоча загалом інформація в ролику повторює таку в лекції=).Двійкова система числення
У нас 10 пальців, і система десяткова. Тобто будь-яке, скільки завгодно велике число ми можемо представити за допомогою цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Залежно від того, де в числі стоїть цифра, вона може означати різне : якщо ця цифра остання, вона розташована в розряді одиниць, передостання — розряд десятків, ще лівіше — розряд сотень тощо. По суті, будь-яке число можна розписати у вигляді суми цифр, кожна з яких помножена на десять певною мірою. У разі одиниць – нульовий. Наприклад, 1573 = 3 * 10 0 + 7 * 10 1 +5 * 10 2 +1 * 10 3. Число, на ступінь якого множаться цифри, називається базою системи числення. Для десяткової системи базою, логічно, є десяток. У комп'ютера пальців немає, але є два стани: умовно «струм йде» і «струм не йде», нулик і одиниця. Відповідно всі числа (та й взагалі інформація) у пам'яті комп'ютера складаються лише з двох цифр - 0 і 1. Їхнє розташування, як і у разі десяткової системи числення, вказує на розряд. Тільки тепер число можна розкласти на суму цифр, помножених не на ступінь десятки, а ступінь двійки. 0 у двійковій системі = 0 1 у двійковій системі = 1 2 у двійковій системі = 10 7 10 =111 2 Навчіться переводити з двійкової системи до десяткової. Ви, напевно, вже зрозуміли, як це робиться - просто беремо цифру числа починаючи з правої і множимо її на базу в ступені, що відповідає її розряду, так з кожним розрядом і складаємо все. Приклад: Давайте знайдемо десятковий аналог двійкового числа 101101 2 Найправіша одиниця = 1*2 0 Наступний нулік = 0*2 1 Третя справа одиниця = 1*2 2 Четверта = 1*2 3 … і так далі 0 = 1*2 101101 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 Подайте вісім лампочок, виставлених у ряд. Кожна з них має свій власний вимикач. Кожна лампочка — це розряд. Та що уявляти, згадайте найпершу лекцію (там є такий агрегат) або ось вам віджет : двійкову систему. Переведення з десяткової системи до двійкової. Тут також все дуже просто, якщо розуміти суть. ось є у нас число 57 10 . Щоб перевести його в двійкову систему, потрібно визначити, який максимальний рівень двійки не перевищує це число. 2 6 = 64. Це явно забагато. А ось 25 = 32. Ось ми визначабо старший розряд. 32 10 = 100 000 2. Тепер шукаємо наступного розряду. 57-32 = 25. Тепер для 25 шукаємо ступінь двійки, яка не перевищує 25. 2 4 = 16. Отже, наступний розряд у нас також дорівнює 1. 32+16 = 48 10 = 110000 2 . 57 - 48 = 9. 2 3 = 8, це менше, ніж 9. Значить наступний розряд теж буде одиницею. 32 + 16 + 8 = 56 10 = 111 000 2 . 57-56 = 1, тобто залишився лише один ступінь 2 0 . Таким чином, 57 10 = 111001 2 . Якщо раптом що лишилося незрозумілим, можна докладніше почитати у вікіпідручнику, а якщо сильні в англійській — ось маленький додаток до лекції.ASCII
Комп'ютер розуміє тільки нуліки і одиночки, а його пам'ять можна представити у вигляді дуже довгого рядка з лампочок з вимикачами, як ви бачабо вище. Як уявити цифри у комп'ютері ми вже зрозуміли. А що з рештою інформації? Літерами, картинками? Скажімо, в англійському алфавіті 26 літер. Тобто теоретично ми можемо уявити букви цифрами від 0 до 25, лише у двійковій системі. Виникає наступне запитання: а як зрозуміти, перед нами мала літера чи велика? А розділові знаки? Знаки-«невидимки» на кшталт пробілу? Словом, потрібна система кодування, Кеп! У 1960 роках існувало безліч різних схем, що кодують символи. Відсутність одноманітності виявилася проблемою, і в 1963 році Американський інститут стандартизації ANSI розробив і узвичаїв схему кодування ASCII (American Standard Code for Information Interchange). Кожен символ ASCII складається з семи розрядів або семи біт, кожен з яких може набувати значення 0 або 1. У 7 біт можна помістити числа від 0 до 127 у двійковій системі, тобто у нас є 128 чисел для кодування символів. Здавалося б, чи достатньо для кодування письмового англійського мовлення? Давайте порахуємо: az - 26 варіантів AZ - ще 26 0-9 - 10,;: ~ & та інші знаки пунктуації - 32 І ще один пробіл. Разом - 95 символів. 33 вакантних варіанти, що залишабося, використовують для так званих керуючих символів, на кшталт перекладу рядка або повернення каретки: достатньо для кодування письмового англійського мовлення? Давайте порахуємо: az - 26 варіантів AZ - ще 26 0-9 - 10,;: ~ & та інші знаки пунктуації - 32 І ще один пробіл. Разом - 95 символів. 33 вакантних варіанти, що залишабося, використовують для так званих керуючих символів, на кшталт перекладу рядка або повернення каретки: достатньо для кодування письмового англійського мовлення? Давайте порахуємо: az - 26 варіантів AZ - ще 26 0-9 - 10,;: ~ & та інші знаки пунктуації - 32 І ще один пробіл. Разом - 95 символів. 33 вакантних варіанти, що залишабося, використовують для так званих керуючих символів, на кшталт перекладу рядка або повернення каретки:https://ua.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg Важливо розрізняти символи 0-9 та числові значення 0-9. Символи 0-9 представлені значеннями ASCII 48-57. Цікаво відзначити, що крайні праві чотири біти цих значень ASCII є двійковими уявленнями числових значень 0-9. Це дещо спрощує спосіб перетворення між значеннями ASCII та їх фактичними числовими значеннями. Починаємо програмувати?Scratch
Отже, Scratch. Про цю візуальну мову програмування та її основні команди вам розповіли в лекції. Щоб випробувати Scratch самостійно, переходимо на посилання і натискаємо «Приєднатися». Після реєстрації ви можете розпочинати програмування онлайн. Так, до речі, на сьогоднішній день Scratch частково русифіковано. Довідка, щоправда, поки що англійською. За бажання можна пограти, а також переглянути код студентських проектів, які демонструвалися у лекції. Ось Pikachu Pastry Catch . Або проект із сортуванням сміття за різними ємностями: https://scratch.mit.edu/projects/71161586/ Девід і компанія просять вас не хвилюватися, якщо вам здається, що ви не можете зробити такі складні проекти: такий рівень вже вимагає певної вправності .Завдання
-
Щоб краще зрозуміти процеси, що відбуваються у Scratch, можна завантажити вихідний код кількох проектів звідси . Пограйтеся, подивіться. Вивчати чужий код – це дуже корисно. Це один з найкращих способів дізнатися, що всередині тих програм, до яких ви самі ще не доросли. Коли ви почнете розуміти, як працюють ці програми, можна сміливо йти далі.
-
Тепер настав час зробити щось самостійно. Завдання полягає в тому, щоби весело провести час, але при цьому реалізувати невеликий проект з нуля. Це може бути анімація, гра, інтерактивне дійство.
- Програма повинна містити принаймні два спрайти (персонажу, зображення), і один з них точно не повинен бути кішкою =).
- Має бути принаймні три скрипти (дейтсвія).
- Потрібно виконати принаймні одну умову, один цикл та одну змінну.
- У програму потрібно запровадити принаймні один звук.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ