Основы программирования на C++ и Python: от синтаксиса до архитектуры

Этот курс предлагает параллельное изучение двух мощных языков программирования, раскрывая их особенности и сферы применения. Вы изучите базовый синтаксис, принципы ООП и управление памятью, понимая различия между компилируемым и интерпретируемым подходами.

1. Введение в C++ и Python: установка среды, переменные и типы данных

Введение в C++ и Python: установка среды, переменные и типы данных

Добро пожаловать в мир разработки программного обеспечения. Вы выбрали уникальный путь: изучение двух языков одновременно. Почему именно C++ и Python? Это два полюса программирования. C++ дает вам полный контроль над «железом», высокую производительность и понимание того, как компьютер работает на низком уровне. Python предлагает скорость разработки, лаконичность и огромную экосистему библиотек для анализа данных и искусственного интеллекта.

Владение обоими инструментами делает вас универсальным инженером, способным решать задачи любой сложности: от написания драйверов до создания нейронных сетей.

Подготовка рабочего места

Прежде чем писать код, нам нужно подготовить инструменты. Программисту требуются две вещи: редактор кода (где мы пишем текст) и транслятор (который переводит этот текст в понятные компьютеру команды).

Установка Python

Python — это интерпретируемый язык. Это значит, что для его работы нужна программа-интерпретатор, которая читает ваш код строка за строкой и выполняет его.

  • Перейдите на официальный сайт python.org.
  • Скачайте последнюю версию для вашей операционной системы.
  • Важно: При установке на Windows обязательно поставьте галочку "Add Python to PATH". Это позволит запускать Python из командной строки.
  • Установка C++

    C++ — это компилируемый язык. Ваш код сначала полностью переводится (компилируется) в машинный код — отдельный файл (например, .exe на Windows), который затем запускается.

    * Windows: Самый простой способ — установить Visual Studio Community (выбрав компонент «Разработка классических приложений на C++») или установить компилятор MinGW. * macOS: Установите Xcode Command Line Tools с помощью команды xcode-select --install в терминале. * Linux: Обычно компилятор GCC уже установлен. Если нет, используйте sudo apt install g++.

    Среда разработки (IDE)

    Чтобы не переключаться между разными программами, мы будем использовать Visual Studio Code (VS Code). Это легкий и мощный редактор, поддерживающий оба языка.

  • Установите VS Code.
  • Внутри VS Code зайдите в раздел расширений (квадратик слева) и установите:
  • * Python (от Microsoft). * C/C++ (от Microsoft).

    Первая программа: Hello, World!

    Традиционно изучение любого языка начинается с вывода приветствия на экран. Давайте посмотрим на разницу в подходах.

    Python

    Создайте файл hello.py и напишите:

    Всё просто. Одна строка. Python берет на себя всю сложную работу по инициализации ввода-вывода.

    C++

    Создайте файл hello.cpp и напишите:

    Здесь кода значительно больше. Разберем его построчно:

  • #include <iostream>: Мы подключаем библиотеку ввода-вывода (Input/Output Stream). Без неё C++ не знает, как работать с консолью.
  • int main() { ... }: Это главная функция. Любая программа на C++ начинает выполнение именно отсюда.
  • std::cout: Это поток вывода (console out). Мы «направляем» в него текст с помощью оператора <<.
  • return 0;: Сообщаем операционной системе, что программа завершилась успешно (код 0).
  • !Различие между компиляцией в C++ и интерпретацией в Python

    Переменные и хранение данных

    Программа полезна тогда, когда она может запоминать и обрабатывать данные. Для этого используются переменные. Представьте переменную как коробку, на которой написано имя, и в которую можно положить какое-то значение.

    Статическая и динамическая типизация

    Это одно из фундаментальных различий между нашими языками.

    C++ (Статическая типизация): Вы обязаны заранее сказать, какого типа данные будут лежать в коробке. Если коробка предназначена для целых чисел, вы не сможете положить туда текст.

    Python (Динамическая типизация): Вы просто создаете метку. Сегодня она может указывать на число, а завтра — на строку. Тип определяется автоматически в момент присваивания.

    Основные типы данных

    Рассмотрим базовые типы, которые есть в обоих языках.

    | Тип данных | Описание | C++ | Python | | :--- | :--- | :--- | :--- | | Целые числа | Числа без дробной части (1, -5, 42) | int | int | | Вещественные числа | Числа с плавающей точкой (3.14, -0.01) | float, double | float | | Логический тип | Истина или Ложь | bool (true/false) | bool (True/False) | | Строки | Текст | std::string | str |

    Целые числа (Integers)

    В Python целые числа имеют неограниченную длину (ограничены только памятью компьютера). В C++ размер int обычно фиксирован (чаще всего 4 байта), что позволяет хранить числа от -2,147,483,648 до 2,147,483,647.

    Если в C++ вам нужно хранить число больше, чем вмещает int, происходит переполнение — число «обнуляется» или становится отрицательным, что приводит к критическим ошибкам. В Python это обрабатывается автоматически.

    Вещественные числа (Floating Point)

    Здесь важно понимать, как компьютер хранит дроби. Он использует научную нотацию. Например, число может быть представлено как .

    В общем виде формула представления числа с плавающей точкой выглядит так:

    где — итоговое значение числа, — знак (0 для положительного, 1 для отрицательного), — мантисса (значащие цифры числа), а — экспонента (степень двойки, определяющая порядок числа).

    В C++ для высокой точности используют тип double (двойная точность), а для экономии памяти — float. В Python тип float соответствует double из C++.

    Строки (Strings)

    В C++ строки требуют подключения библиотеки <string>.

    C++:

    Python:

    Обратите внимание: в C++ одинарные кавычки 'A' используются для одного символа (тип char), а двойные "Alice" — для строк. В Python одинарные и двойные кавычки равнозначны.

    Ввод и вывод данных

    Чтобы программа была интерактивной, она должна уметь общаться с пользователем.

    Ввод данных

    Python: Функция input() всегда возвращает строку. Если нужно число, мы должны явно его преобразовать.

    C++: Мы используем поток std::cin (console in). C++ умный: он смотрит на тип переменной и пытается считать именно его.

    Обратите внимание на направление «стрелочек». В cout << мы отправляем данные из программы в консоль. В cin >> мы направляем данные из консоли в переменную.

    Арифметические операции

    Большинство операций идентичны: + (сложение), - (вычитание), * (умножение).

    Однако есть критически важное различие в делении.

    Деление

    В Python оператор / всегда выполняет обычное деление, возвращая дробное число, даже если делятся целые числа.

    В C++ результат деления зависит от типа операндов. Если вы делите целое на целое, дробная часть просто отбрасывается.

    Чтобы получить дробный результат в C++, хотя бы одно из чисел должно быть вещественным:

    !Разница в операциях деления между языками

    Итоги

    Мы сделали первый шаг в освоении двух мощнейших языков программирования. Вот ключевые моменты, которые нужно запомнить:

  • Природа языков: C++ — компилируемый язык (требует сборки перед запуском), Python — интерпретируемый (выполняется сразу).
  • Синтаксис: Python лаконичен и использует отступы для структуры. C++ требует явного указания границ блоков {} и точек с запятой ; в конце команд.
  • Типизация: C++ использует статическую типизацию (тип переменной задается раз и навсегда). Python использует динамическую типизацию (тип определяется значением).
  • Деление: Будьте осторожны с делением целых чисел в C++ — дробная часть теряется. В Python деление всегда возвращает точный результат.
  • Строгость: Оба языка не прощают ошибок, но C++ строже относится к типам данных на этапе написания кода, что помогает избежать многих ошибок еще до запуска программы.
  • 2. Логика программы: условные операторы и циклы в обоих языках

    Логика программы: условные операторы и циклы в обоих языках

    В предыдущей статье мы научились создавать переменные и хранить в них данные. Но данные сами по себе бесполезны, если мы не можем принимать решения на их основе или обрабатывать их массово. Программа становится программой только тогда, когда в ней появляется логика.

    Сегодня мы рассмотрим два фундаментальных столпа алгоритмизации: условные операторы (ветвление) и циклы (повторение). Мы увидим, как по-разному C++ и Python подходят к синтаксису, сохраняя при этом единую логическую суть.

    Логические выражения

    Прежде чем строить ветвления, нужно научиться задавать вопросы, на которые компьютер может ответить «Да» (True) или «Нет» (False). В программировании это называется булевой логикой.

    Операторы сравнения

    Здесь оба языка удивительно похожи. Операторы практически идентичны:

    | Операция | C++ | Python | | :--- | :--- | :--- | | Равно | == | == | | Не равно | != | != | | Больше | > | > | | Меньше | < | < | | Больше или равно | >= | >= | | Меньше или равно | <= | <= |

    Важное замечание: Никогда не путайте оператор присваивания = (положить значение в коробку) с оператором сравнения == (сравнить содержимое двух коробок).

    Логические связки

    А вот здесь начинаются синтаксические различия. C++ использует символы, унаследованные от языка C, тогда как Python стремится к читаемости английского текста.

    C++: * Логическое И: && * Логическое ИЛИ: || * Логическое НЕ: !

    Python: * Логическое И: and * Логическое ИЛИ: or * Логическое НЕ: not

    Пример сложного условия: «Если возраст больше 18 И (студент ИЛИ есть билет)».

    C++:

    Python:

    Условные операторы (if-else)

    Условный оператор позволяет программе выбрать один из путей выполнения кода в зависимости от истинности условия.

    !Визуализация логики работы конструкции if-else

    Синтаксис и блоки кода

    Это, пожалуй, самое заметное визуальное различие между языками.

    C++ использует фигурные скобки {} для обозначения блока кода, который нужно выполнить. Условие обязательно берется в круглые скобки ().

    Python использует отступы (обычно 4 пробела) для обозначения блока кода. Скобки вокруг условия не нужны, но обязательно двоеточие : в конце строки с условием.

    В Python отступы — это не просто стиль, это часть синтаксиса. Если вы сдвинете строку print неверно, программа выдаст ошибку IndentationError или будет работать неправильно.

    Циклы: автоматизация повторений

    Циклы позволяют выполнять один и тот же блок кода многократно. Это основа любой автоматизации.

    Цикл while (Пока)

    Этот цикл работает до тех пор, пока условие истинно. Логика идентична в обоих языках.

    Задача: Вывести числа от 5 до 1.

    C++:

    Python:

    Цикл for (Для)

    Здесь подходы языков расходятся кардинально.

    #### C++: Классический for

    В C++ цикл for — это мощный инструмент управления счетчиком. Он состоит из трех частей, разделенных точкой с запятой:

  • Инициализация: выполняется один раз перед началом (int i = 0).
  • Условие: проверяется перед каждой итерацией (i < 5).
  • Шаг: выполняется после каждой итерации (i++).
  • #### Python: Цикл for-each

    В Python цикл for предназначен для перебора последовательностей (списков, строк, диапазонов). Он читается как «Для каждого элемента в наборе».

    Чтобы получить аналог счетчика из C++, в Python используется функция range().

    Функция range(start, stop, step) генерирует числа: * range(5) 0, 1, 2, 3, 4 (правая граница не включается!) * range(2, 6) 2, 3, 4, 5 * range(0, 10, 2) 0, 2, 4, 6, 8 (шаг 2)

    Математический взгляд на циклы

    Часто циклы используются для вычисления сумм рядов. Рассмотрим простую задачу: сумма чисел от 1 до .

    В математике это записывается через знак суммы (сигма):

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

    В коде это выглядит так:

    C++:

    Python:

    Управление потоком: break и continue

    Иногда нужно вмешаться в работу цикла до его естественного завершения.

    * break: Немедленно прерывает выполнение цикла и выходит из него. continue: Прерывает текущую* итерацию и переходит к следующей (в начало цикла).

    Пример: Ищем первое число, которое делится на 7, в диапазоне от 1 до 100.

    Python:

    Вложенные конструкции

    Вы можете вкладывать циклы в условия, условия в циклы и циклы в циклы. Это позволяет создавать сложные алгоритмы, например, обход двумерных массивов (таблиц).

    !Визуализация работы вложенного цикла: внешний цикл отвечает за строки, внутренний — за столбцы

    C++ (Таблица умножения 3x3):

    Итоги

    Мы разобрали механизмы управления логикой программы. Вот ключевые выводы:

  • Синтаксис блоков: C++ использует фигурные скобки {} для группировки команд, Python использует отступы. Это делает код на Python визуально чище, но требует строгой дисциплины форматирования.
  • Условия: Логические операторы в C++ символьные (&&, ||, !), в Python — словесные (and, or, not). Конструкция else if в Python сокращается до elif.
  • Цикл for: В C++ это универсальный инструмент с ручным управлением счетчиком. В Python for — это итератор, который перебирает элементы последовательности или диапазона range().
  • Границы диапазонов: В Python функция range(a, b) не включает верхнюю границу b. В C++ условие цикла (например, i <= b) мы пишем явно, поэтому можем сами решать, включать границу или нет.
  • Булева логика: В C++ любое число, не равное 0, считается true. В Python существуют явные константы True и False, но правила приведения типов похожи (пустые контейнеры и ноль — это False).