Введення в програмування, алгоритми
Програма, змінні
Програма - набір інструкцій, команд, дій для досягнення певних цілей.
Програми польоту космонавтів, програма телебачення, програма концерту чи корпоративу, програма навчання, програма для станка з ЧПУ.
Змінна - іменована комірка пам'яті, в якій зберігаються певні дані, що можуть змінюватися в процесі роботи програми.
Константа - іменована комірка пам'яті, в якій зберігаються певні дані, що не змінюються до кінця роботи програми.
Команда - одна дія, операція.
(тут Боба розповідає про виконання команд процесором і структуру ОЗУ, розподілення пам'яті між ОС та програмами, використання ОЗУ браузером на вкладки, використання пам'яті JS, адресацію пам'яті та імена змінних).
Повернення результату - команда отримує константи чи змінні, проводить певні дії над ними і видає результат.
Типи даних
(тут Боба розказує про двійкову та шіснадцяткову системи числення, системи числення за основою 3, 8, 64, що таке біт і байт, ємність байта, в 8-бітний байт можна записати 1 із 256 комбінацій з 8 біт)...
Цілі та дробні числа.
(тут Боба розказує про 1-2-4-8-байтні цілі числа та 4-8-байтні дробні, мантіссу)
Строки та символи.
(тут Боба розказує про DOS-cp866-ASCII, Win-cp1251-ANSI, koi-8, unicode/utf-8/16)
Булевий тип даних (приймає лише два значення: true або false, правда чи брехня, 1 чи 0).
Спеціальні типи даних (nil/null, undefined, NaN, Infinity і т.п.).
Складні типи даних (їх особливості будуть розглянуті згодом): масиви, списки, класи, прототипи, об'єкти...
Команди (операції, оператори)
Математичні операції: = + - * / %
Логічні операції - відношення, порівняння: == != < > <= >= AND OR XOR NOT
У JavaScript є не-строге і строге (нове) порівняння операндів, замість не-строгого порівняння == та != рекомендується використовувати строге === та !==. Також у JS оператор XOR є лише для бітових операцій. Для логічних можна використати: якщо ((a та !b) або (!a та b))
Бітові операції - робота з даними на рівні бітів.
Оператори бувають унарні, бінарні та тернарні - в залежності від кількості операндів, що беруть участь в операції. Детальніше розглянемо на наступному занятті.
Алгоритм
Алгоритм - послідовний набір команд.
Типи блоків алгоритму:
Лінійний набір команд - команди виконуються строго послідовно одна за одною.
Умова - розгалуження алгоритму на 2 та більше гілок.
Цикл - повторне виконання певних команд до тих пір, поки вказана умова виконується.
Паралельні (асинхронні) обчислення - паралельна незалежна робота двох та більше гілок алгоритму.
Складання алгоритму програми
Навчитися створювати алгоритми - найважливіше у програмуванні, без цього неможливо буде писати програми.
Ніколи не намагайтеся одразу деталізувати план дій, почніть із загальних пунктів. Їх повинно бути лише декілька штук, 3-5-8, не більше.
Давайте складемо алгоритм дій при замовленні товару в нашому інтернет-магазині. Ключові дії користувача:
- завантаження сайту
- пошук товарів
- вибір товарів
- процес оплати
- очікування товару
Коли готовий короткий основний план дій - конкретизуємо кожен пункт:
завантаження сайту
- або завантаження головної сторінки
- або завантаження сторінки товару (з пошукової системи)
- користувач анонімний чи залогінений?
- чи є товари в кошику користувача?
пошук товарів
- використання строки пошуку
- використання панелі навігації по каталогу
- використання панелі рекомендованих, подібних товарів
і т.д.
Таким чином прописується не один глобальний алгоритм, в якому вже через годину неможливо буде розібратися, а невеличкі шматочки, які згодом будуть складатися у єдиний продукт як пазл.
Функція
Функція - набір команд, частина алгоритму програми, що винесена в окремий блок. Функція може повертати значення (видавати результат оброблених даних).
У старих мовах, типу бейсіка, паскаля, існувало поняття процедури. Фактично, процедура - те саме, що й функція, але вона не повертала значення.
Домашнє завдання
- Складіть лінійний алгоритм свого типового буднього ранку
- Складіть алгоритм свого ранку враховуючи будні дні та вихідні
- Складіть алгоритм переходу через дорогу на світлофорі