Введення в програмування, алгоритми

Програма, змінні

Програма - набір інструкцій, команд, дій для досягнення певних цілей.

Програми польоту космонавтів, програма телебачення, програма концерту чи корпоративу, програма навчання, програма для станка з ЧПУ.

Змінна - іменована комірка пам'яті, в якій зберігаються певні дані, що можуть змінюватися в процесі роботи програми.

Константа - іменована комірка пам'яті, в якій зберігаються певні дані, що не змінюються до кінця роботи програми.

Команда - одна дія, операція.

(тут Боба розповідає про виконання команд процесором і структуру ОЗУ, розподілення пам'яті між ОС та програмами, використання ОЗУ браузером на вкладки, використання пам'яті 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, не більше.

Давайте складемо алгоритм дій при замовленні товару в нашому інтернет-магазині. Ключові дії користувача:

- завантаження сайту
- пошук товарів
- вибір товарів
- процес оплати
- очікування товару

Коли готовий короткий основний план дій - конкретизуємо кожен пункт:

завантаження сайту
- або завантаження головної сторінки
- або завантаження сторінки товару (з пошукової системи)
- користувач анонімний чи залогінений?
- чи є товари в кошику користувача?
пошук товарів
- використання строки пошуку
- використання панелі навігації по каталогу
- використання панелі рекомендованих, подібних товарів
і т.д.

Таким чином прописується не один глобальний алгоритм, в якому вже через годину неможливо буде розібратися, а невеличкі шматочки, які згодом будуть складатися у єдиний продукт як пазл.

Функція

Функція - набір команд, частина алгоритму програми, що винесена в окремий блок. Функція може повертати значення (видавати результат оброблених даних).

У старих мовах, типу бейсіка, паскаля, існувало поняття процедури. Фактично, процедура - те саме, що й функція, але вона не повертала значення.

Домашнє завдання

  1. Складіть лінійний алгоритм свого типового буднього ранку
  2. Складіть алгоритм свого ранку враховуючи будні дні та вихідні
  3. Складіть алгоритм переходу через дорогу на світлофорі