Модуль 0.1 Вступ

ЩО ТАКЕ ПРОГРАМУВАННЯ ВЗАГАЛІ

Курс: Python для аналітиків з нуля

1. ЩО НАВЧИМОСЯ РОБИТИ

Зрозуміємо базову ідею програмування: що таке програма, як вона виконує інструкції крок за кроком, і чим написання коду відрізняється від роботи в Excel або готових програмах. Після цього модуля ви зможете пояснити колезі, коли варто писати код, а коли достатньо готового програмного забезпечення.

2. ТЕРМІНОЛОГІЯ

3. ТЕОРІЯ

3.1 Програма як послідовність інструкцій

Програма — це набір інструкцій, які комп'ютер виконує по черзі, зверху вниз. Кожна інструкція робить щось конкретне: зберегти число, обчислити суму, вивести текст на екран.

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

Програма працює так само. Якщо написано:

1. Завантажити файл з координатами
2. Для кожної координати обчислити відстань до бази
3. Знайти найближчу точку

Комп'ютер виконає саме в такому порядку. Спочатку завантажить файл. Потім пройдеться по кожній координаті. Потім знайде мінімум. Не навпаки.

3.2 Чим код відрізняється від Excel

Excel — це готовий інструмент з кнопками та формулами. Ви працюєте в межах того, що розробники Excel передбачили. Код — це можливість створити власний інструмент під конкретну задачу.

Ключова різниця: Excel підходить для роботи з даними вручну. Код — для автоматизації. Якщо ви робите щось один раз і бачите всі дані на екрані — Excel. Якщо треба обробити тисячі файлів однаково — код.

3.3 Коли писати код, коли використовувати готове ПЗ

Готове програмне забезпечення (Maltego, Palantir, i2 Analyst's Notebook) — це як укомплектований БТР. Сідаєш і їдеш. Код — як набір деталей і зварювальний апарат. Можеш зібрати що завгодно, але треба вміти.

Практичне правило: якщо задача повторюється більше 3 разів на тиждень і займає більше 15 хвилин — варто подумати про автоматизацію кодом.

3.4 Приклад: 10 файлів vs 10 000 файлів

Ситуація: є журнали радіоперехоплень у форматі CSV. Треба знайти всі записи з певної частоти за останню добу.

10 файлів (за тиждень):

  • Відкриваєте кожен файл в Excel
  • Ставите фільтр по колонці "частота"
  • Копіюєте потрібні рядки в зведену таблицю
  • Час: 20-30 хвилин, цілком прийнятно

10 000 файлів (за рік архіву):

  • Вручну — кілька тижнів роботи
Помилки неминучі (втома, неуважність)
  • Якщо зміняться критерії — починати спочатку
  • Код: 5 хвилин роботи скрипта, нуль помилок, легко змінити критерії

Той самий скрипт на Python, який обробляє 10 000 файлів:

import pandas as pd
from pathlib import Path
# Параметри пошуку
цільова_частота = 145.500
# Знайти всі CSV у папці
файли = Path('архів_перехоплень').glob('*.csv')
# Обробити кожен файл
результати = []
for файл in файли:
дані = pd.read_csv(файл)
відфільтровано = дані[дані['frequency'] == цільова_частота]
результати.append(відфільтровано)
# Об'єднати та зберегти
pd.concat(результати).to_csv('знайдено.csv')

Не треба розуміти кожен рядок зараз. Головне — побачити принцип: 17 рядків коду замість тижнів ручної роботи.

3.5 Аналогія: рецепт (алгоритм) vs готова страва (програма)

Рецепт — це алгоритм. Послідовність кроків: взяти інгредієнти, порізати, змішати, варити 20 хвилин. Рецепт сам по собі не їстівний — це інструкція.

Готова страва — це результат виконання рецепта. Те, що можна їсти.

У програмуванні:

Алгоритм — послідовність кроків для розв'язання задачі (як рецепт)
Код — алгоритм, записаний мовою програмування (рецепт, записаний у кулінарній книзі)
Програма — код, який виконується комп'ютером (приготування страви)
Результат — те, що програма видає (готова страва)

Важливий момент: один рецепт можна використовувати багато разів з різними інгредієнтами. Так само один скрипт можна запускати з різними вхідними даними. Написали один раз — використовуєте щодня.

4. КОД З КОМЕНТАРЯМИ

Розглянемо просту програму, яка обчислює відстань між двома точками. Це типова задача для аналітика: є координати двох об'єктів, треба знати відстань.

# Програма для обчислення відстані між двома точками
# Автор: курсант курсу Python для аналітиків
# === ВХІДНІ ДАНІ ===
# Координати першої точки (пост спостереження)
пост_широта = 48.4647    # широта в градусах
пост_довгота = 35.0462   # довгота в градусах
# Координати другої точки (об'єкт спостереження)
об_єкт_широта = 48.5012
об_єкт_довгота = 35.1234
# === ОБЧИСЛЕННЯ ===
# Знаходимо різницю координат
різниця_широти = об_єкт_широта - пост_широта
різниця_довготи = об_єкт_довгота - пост_довгота
# Обчислюємо відстань за теоремою Піфагора
# (спрощена формула для малих відстаней)
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.5
# Переводимо градуси в кілометри
# 1 градус широти ≈ 111 км
відстань_км = відстань_градуси * 111
# === ВИВІД РЕЗУЛЬТАТУ ===
print(f'Відстань до об\'єкта: {відстань_км:.2f} км')

Результат виконання:

Відстань до об'єкта: 9.23 км

5. РОЗБІР ПО РЯДКАХ

Коментарі (рядки 1-2)
# Програма для обчислення відстані між двома точками

Символ # означає початок коментаря. Все після нього до кінця рядка Python ігнорує. Коментарі потрібні для людей, які читатимуть код (включаючи вас через місяць).

Створення змінних (рядки 5-6)
пост_широта = 48.4647
пост_широта — ім'я змінної (коробка з наклейкою)
= — оператор присвоєння ("покласти в коробку")
48.4647 — значення (число з десятковою частиною, тип float)

Важливо: = у програмуванні — це не "дорівнює" з математики. Це команда "взяти значення справа і покласти в змінну зліва".

Обчислення (рядок 14)
різниця_широти = об_єкт_широта - пост_широта

Python бере значення з двох змінних, віднімає одне від іншого, результат кладе в нову змінну. Послідовність: спочатку обчислює праву частину, потім результат присвоює змінній зліва.

Піднесення до степеня (рядок 19)
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.5
**2 — піднести до квадрата (у Python це не ^, а **)
**0.5 — квадратний корінь (корінь = степінь 0.5)
  • Дужки визначають порядок: спочатку обчислюється те, що в дужках
Вивід результату (рядок 27)
print(f'Відстань до об\'єкта: {відстань_км:.2f} км')
print() — функція виводу на екран
  • f'...' — f-string (форматований рядок), дозволяє вставляти значення змінних
{відстань_км} — вставити значення змінної
  • :.2f — форматування: 2 знаки після коми
\' — екранований апостроф (щоб Python не плутав з кінцем рядка)

6. ЗАВДАННЯ 1: ЗНАЙТИ ПОМИЛКУ

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

# Обчислення відстані між постом і об'єктом
пост_широта = 48.4647
пост_довгота = 35.0462
об_єкт_широта = 48.5012
об_єкт_довгота = 35.1234
# Обчислення
різниця = об_єкт_широта - пост_широта
відстань_градуси = різниця**2
відстань_км = відстань_градуси * 111
print(f'Відстань: {відстань_км:.2f} км')

Питання:

  • Що не враховано в обчисленні?
  • Який результат видасть програма?
  • Як виправити помилку?

Помилка: не враховано різницю довготи. Відстань обчислюється тільки по широті, ігноруючи горизонтальне зміщення.

Результат: програма видасть 0.15 км замість реальних ~9.23 км. Це відстань тільки "на північ", без врахування "на схід".

Виправлення: додати обчислення різниці довготи і використати теорему Піфагора для обох координат:

різниця_широти = об_єкт_широта - пост_широта
різниця_довготи = об_єкт_довгота - пост_довгота
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.5

7. ЗАВДАННЯ 2: ПРОМПТ ДЛЯ AI

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

Напишіть промпт для AI (Claude або ChatGPT), щоб отримати робочий код для цієї задачі.

Вимоги до промпту:

Чітко описати вхідні дані (координати трьох точок)
  • Пояснити що треба обчислити
  • Вказати бажаний формат виводу
  • Попросити коментарі до коду

Напиши код на Python для такої задачі:

8. ЗАВДАННЯ 3 (ОПЦІОНАЛЬНО): НАПИСАТИ САМОМУ

Для тих, хто хоче спробувати написати код самостійно.

Задача: є координати чотирьох кутів прямокутної зони відповідальності. Обчислити периметр цієї зони в кілометрах.

Підказки:

Периметр прямокутника = 2 × (довжина + ширина)
Довжина — відстань по широті (північ-південь)
Ширина — відстань по довготі (захід-схід)
  • 1 градус ≈ 111 км

Тестові дані:

# Північно-західний кут
пн_зах_широта = 48.50
пн_зах_довгота = 35.00
# Південно-східний кут
пд_сх_широта = 48.40
пд_сх_довгота = 35.15
Очікуваний результат: приблизно 55 км (довжина ~11 км, ширина ~17 км, периметр ≈ 56 км)

9. РЕФЛЕКСІЯ

Чеклист: що я маю розуміти після цього модуля

Якщо більшість пунктів "Так" — ви готові до наступного модуля. Якщо є "Ні" — поверніться до відповідного розділу.

10. ЩО ДАЛІ

У наступних модулях ми:

Модуль 0.2: Розберемо, чому саме Python підходить для аналітики та OSINT (порівняємо з Excel, Maltego, Palantir)
Модуль 0.3: Навчимося правильно ставити задачі AI для генерації коду (ключовий навик для офіцера-аналітика)
  • Модуль 0.4: Визначимо межу між "писати самому" та "делегувати AI"
Модуль 0.5: Розберемо основні поняття програмування без синтаксису (змінні, функції, цикли — на аналогіях)

Те, що ви дізнались сьогодні — фундамент. Програма як послідовність інструкцій, код як інструмент автоматизації, вибір між готовим ПЗ і написанням коду. Ці концепції залишаються незмінними незалежно від мови програмування чи конкретної задачі.

Головна думка модуля: програмування — це не магія і не талант. Це навичка, яка набувається практикою. Ваша задача як офіцера-аналітика — не стати програмістом, а навчитися керувати інструментами (включаючи AI) для автоматизації рутини.

Рефлексія

Прогрес модуля 0%