Garry's Mod

Garry's Mod

50 ratings
Программируем на C++ | C++ для Начинающих
By Dr. L
Руководство по программированию на языке С++ в среде Linux для начинающих.
   
Award
Favorite
Favorited
Unfavorite
Введение
Добро пожаловать в мир программирования на C++! Это руководство предназначено для новичков, которые хотят освоить язык C++ на операционной системе Linux. Мы рассмотрим все основные аспекты языка, включая функции, переменные, классы, ссылки, указатели и многое другое. Каждая тема будет подробно объяснена с примерами, чтобы вы могли легко следовать и практиковаться.
Введение в C++
C++ — это мощный язык программирования общего назначения, созданный Бьёрном Страуструпом в 1980-х годах как расширение языка C. C++ поддерживает как процедурное, так и объектно-ориентированное программирование, что делает его гибким инструментом для разработки широкого спектра приложений, от системного программного обеспечения до игр и научных вычислений.




Почему стоит изучать C++:
  • Производительность: C++ предоставляет высокий уровень контроля над ресурсами системы и памятью.
  • Широкое применение: Используется в разработке операционных систем, драйверов, игр, графических приложений и многих других областях.
  • Сообщество и ресурсы: Обширное сообщество разработчиков и множество доступных библиотек и инструментов.
Установка и Настройка Окружения на Linux
Перед началом программирования на C++ необходимо настроить рабочую среду. В Linux это обычно включает установку компилятора и текстового редактора или интегрированной среды разработки (IDE).

Шаг 1: Установка Компилятора (G++)
G++ — это компилятор C++ из набора компиляторов GNU (GCC).

Установка G++:
Откройте терминал и выполните следующую команду:
sudo apt update sudo apt install build-essential

Пакет build-essential включает G++ и другие необходимые инструменты для компиляции.

Проверка установки:
g++ --version
Вы должны увидеть информацию о версии G++.


Шаг 2: Выбор Текстового Редактора или IDE

Популярные текстовые редакторы:
  • VS Code: Легкий и настраиваемый редактор с множеством расширений.
  • Sublime Text: Быстрый и мощный редактор с поддержкой множества языков.
  • Vim/Neovim: Текстовые редакторы для опытных пользователей.

Популярные IDE:
  • CLion: Платная IDE от JetBrains с мощными инструментами для C++.
  • Eclipse CDT: Бесплатная и открытая среда разработки.
  • Code::Blocks: Простая и бесплатная IDE для C++.

Шаг 3: Установка Выбранного Редактора или IDE
Для нашей работы мы будем использвоать VS Code, так как он имеет интуитивно понятный и легкий интерфейс, и поддерживает расширения.
Пример установки VS Code через Snap:
sudo snap install --classic code

Установка с официального сайта:
Вы можете скачать VS Code с официального сайта: https://code.visualstudio.com/

После установки откройте VS Code и установите расширение C++ от Microsoft для поддержки подсветки синтаксиса, автодополнения и отладки.

Если у Вас все получилось, вы молодец!












Ну, а если же у вас возникли проблемы, вы можете оставить комментарий или посмотреть чужие гайды по установке IDE или текстового редактора.
Основы Синтаксиса C++
На этом этапе мы уже начинаем изучать С++, так что приготовьтесь и налейте себе чаю.








Давайте начнем с простого примера программы на C++ и разберем ее структуру.

Пример Программы "Hello, World!"
Для начала напишим простейшую программу, которая выводит "Hello World!" в консоль.
Когда вы откыли выш тектовый редактор или IDE, создайте файл hello.cpp, это и будет наш код.
После создания файла, можете переписать, или просто скопирывать код ниже:

#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; }
Разбор Программы

#include <iostream>
  • Директива препроцессора, которая подключает заголовочный файл iostream, необходимый для ввода-вывода.
int main()
  • Функция main — точка входа в программу, является отправной точкой программы, без этой функции код просто не сможет нормально запуститься. Возвращает целое число (int).
std::cout << "Hello, World!" << std::endl;
  • std::cout — стандартный объект вывода, служит для вывода текста.
  • << — оператор вывода.
  • "Hello, World!" — строка, выводимая на экран.
  • std::endl — завершение строки и сброс буфера вывода.

return 0;
  • Возвращает значение 0, сигнализируя об успешном завершении программы.
Компиляция и Запуск Программы
Компиляция программы - сборка программы. Компилятор берет наш код, проводит препроцессинг, вставляя код, к примеру когда мы используем #include, и переводит весь код на С++ в машинный.
Без компиляции кода мы просто не сможем использвоать нашу программу, так что компиляция - один из главных этапов разработки.
Компилировать мы будем код, написанный в прошлой главе, а именно - файл с кодом hello.cpp.

Компиляция:
Откройте терминал, и перейдите в директиву(папку) с вашим файлом hello.cpp.
После этого вставьте следующий код, чтобы скомпилировать программу:
g++ hello.cpp -o hello
  • g++ — компилятор C++.
  • hello.cpp — исходный файл.
  • -o hello — имя выходного файла.

Запуск:
./hello

Если программа скомпилировалась и открылась без ошибок, вы должны увидеть вывод:
Hello World!


Если все сделанно правильно, и вы увидели нормальный вывод, то поздрваляю - вы написали свою первую программу на С++!
Переменные и Типы Данных
Переменные — это именованные области памяти, которые хранят данные определенного типа. В C++ существует несколько основных типов данных.

Основные Типы Данных
Целочисленные Типы:
  • int — целое число.
  • short — короткое целое число.
  • long — длинное целое число.
  • unsigned версии для неотрицательных чисел.

Типы с Плавающей Точкой:
  • float — числа с одинарной точностью (к примеру - просто 3.141).
  • double — числа с двойной точностью (к примеру - 1e3 - 1000).
  • long double — числа с расширенной точностью.

Символьные Типы:
  • char — символ.
  • wchar_t — широкие символы.

Логический Тип:
  • booltrue или false.

Тип void:
  • Используется для указания отсутствия типа.


Объявление и Инициализация Переменных
Инициализация перменной - просто создание переменной, к примеру:
int num;
- мы создали переменную num, но у неё нет значения.

Объявление переменной - инициализация и присваивание значения переменной:
int num = 10;
- мы создали переменную num, и присвоили ей значение 10.

Вот пример кода с переменными:
#include <iostream> int main() { int age = 25; double height = 175.5; char grade = 'A'; bool isStudent = true; std::cout << "Age: " << age << std::endl; std::cout << "Height: " << height << " cm" << std::endl; std::cout << "Grade: " << grade << std::endl; std::cout << "Is Student: " << isStudent << std::endl; return 0; }
Вывод:
Age: 25 Height: 175.5 cm Grade: A Is Student: 1
Примечание: тип bool выводит 1 если его значение true, и 0, если его значение false.

Константы
Константы — это переменные, значения которых не могут изменяться после инициализации.
#include <iostream> int main() { const double PI = 3.14159; // если мы попытаемся изменить значение: PI = 3.14;, то он выдаст ошибку Ошибка: попытка изменить константу std::cout << "PI: " << PI << std::endl; return 0; }

Модификаторы Типов

  • signed и unsigned: Определяют знак числа, если signed, то числа могут быть положительные, и отрицательные, а если unsigned - то только положительные.
  • short и long: Определяют размер типа.

Операторы и Выражения
Операторы — это символы или ключевые слова, которые выполняют операции над переменными и значениями. В C++ существует множество операторов, которые можно классифицировать следующим образом:
Управляющие Конструкции
Управляющие конструкции позволяют изменять поток выполнения программы на основе условий или повторений.

В основном они основываются на логике if-else, так что нужно будет думать логически.








Условные Операторы
if и else
Используются для выполнения блока кода, если условие истинно, и другого блока, если ложно.
Синтаксис:
if (условие) { // Код выполняется, если условие истинно } else { // Код выполняется, если условие ложно }
Пример:
#include <iostream> int main() { int number; std::cout << "Введите число: "; std::cin >> number; if (number > 0) { std::cout << "Число положительное." << std::endl; } else if (number < 0) { std::cout << "Число отрицательное." << std::endl; } else { std::cout << "Число равно нулю." << std::endl; } return 0; }

Switch
Используется для выбора одного из множества вариантов на основе значения переменной.

Синтаксис:
switch (выражение) { case значение1: // Код для значения1 break; case значение2: // Код для значения2 break; default: // Код по умолчанию }
Пример:
#include <iostream> int main() { char grade; std::cout << "Введите оценку (A-F): "; std::cin >> grade; switch (grade) { case 'A': std::cout << "Отлично!" << std::endl; break; case 'B': std::cout << "Хорошо." << std::endl; break; case 'C': std::cout << "Удовлетворительно." << std::endl; break; case 'D': std::cout << "Плохо." << std::endl; break; case 'F': std::cout << "Неудовлетворительно." << std::endl; break; default: std::cout << "Неверная оценка." << std::endl; } return 0; }

Циклы
Подробнее про циклы в моём отдельном руководстве:
https://steamoss.com/sharedfiles/filedetails/?id=3397150709

for

Используется для повторения блока кода фиксированное количество раз.
Синтаксис:
for (инициализация; условие; итерация) { // Код для выполнения в цикле }
Пример:
#include <iostream> int main() { for (int i = 1; i <= 5; i++) { std::cout << "i = " << i << std::endl; } return 0; }
Вывод:
i = 1 i = 2 i = 3 i = 4 i = 5

while
Используется для повторения блока кода, пока условие истинно.

Синтаксис:
while (условие) { // Код для выполнения в цикле }

Пример:
#include <iostream> int main() { int i = 1; while (i <= 5) { std::cout << "i = " << i << std::endl; i++; } return 0; }

От этих циклов уже голова кружится...
Функции
Функции — это блоки кода, которые выполняют определенную задачу и могут быть вызваны из других частей программы. Использование функций способствует структурированию кода и повторному использованию.

Объявление и Определение Функции
Синтаксис:
тип_возвращаемого_значения имя_функции(список_параметров) { // Тело функции }

Пример:
#include <iostream> // Объявление функции int add(int a, int b); int main() { int sum = add(5, 3); std::cout << "Сумма: " << sum << std::endl; return 0; } // Определение функции int add(int a, int b) { return a + b; }
Вывод:
Сумма: 8

Функции с Различными Типами Параметров
#include <iostream> #include <string> // Функция без параметров void greet() { std::cout << "Привет!" << std::endl; } // Функция с параметрами void greetPerson(std::string name) { std::cout << "Привет, " << name << "!" << std::endl; } // Функция с возвращаемым значением int multiply(int a, int b) { return a * b; } int main() { greet(); greetPerson("Steam"); int product = multiply(4, 5); std::cout << "Произведение: " << product << std::endl; return 0; }
Вывод:
Привет! Привет, Steam! Произведение: 20
Классы и Объекты
Классы — основа объектно-ориентированного программирования (ООП) в C++. Класс — это шаблон для создания объектов, которые содержат данные и функции для работы с этими данными.

Объявление Класса
Синтаксис:
class ИмяКласса { public: // Публичные члены (доступны из вне) тип_данных переменная; возвращаемый_тип имя_функции(параметры); private: // Приватные члены (доступны только внутри класса) тип_данных переменная; };
Пример:
#include <iostream> #include <string> class Person { public: // Публичные переменные std::string name; int age; // Публичная функция void introduce() { std::cout << "Привет, меня зовут " << name << " и мне " << age << " лет." << std::endl; } private: // Приватная переменная double salary; }; int main() { Person person1; person1.name = "kewwL"; person1.age = 25; person1.introduce(); // person1.salary = 50000; // Ошибка: salary приватная return 0; }
Вывод:
Привет, меня зовут kewwL и мне 25 лет.

Думаю на этом можно закончить с классами.
Классы - довольно большая тема, и под неё я выделю отдельное руководство.
Конец
Надеюсь вам помогло мое руководство и вы извлекли из него достаточно полезной информации.
Руководство вышло довольно большим, и многие аспекты программирования на С++ небыли затронуты, к прмиеру массивы, динамическая памть и тп.
Но вы не расстраивайтесь!
Под эти темы я выделю отдельные руководства (наверное), и добавлю ссылки на них в этом руководстве!

Вот другие мои руководства:
https://steamoss.com/sharedfiles/filedetails/?id=3401446439
https://steamoss.com/sharedfiles/filedetails/?id=3400164684
https://steamoss.com/sharedfiles/filedetails/?id=3395692013
https://steamoss.com/sharedfiles/filedetails/?id=3389441554
https://steamoss.com/sharedfiles/filedetails/?id=3397931731
https://steamoss.com/sharedfiles/filedetails/?id=3397150709
https://steamoss.com/sharedfiles/filedetails/?id=3387288971



17 Comments
Tofca 3 Jan @ 5:18am 
Нахуя мне это, я же пекарь:goobert:
Automatizm 2 Jan @ 10:29am 
Я пролистал, увидел дохуя аниме девочек, понял что лучше программистом мне не быть
Коловратище 2 Jan @ 3:07am 
хуита где ссылки с указателями это же база да и чо про ооп мала????
MasterHell 2 Jan @ 3:07am 
Фигня гайд где указатели
DEATH CSGOSKINS 1 Jan @ 7:50am 
+rep хороший гайд!
Ɗㄖ丂卄! 30 Dec, 2024 @ 5:58am 
аниме заебало но гайд норм
WolfRλM74 29 Dec, 2024 @ 8:32am 
+rep прекрасный и не душный гайд! :steamthis:
luke 29 Dec, 2024 @ 8:22am 
Программист у которого есть свободное время:
Dr. L  [author] 29 Dec, 2024 @ 6:57am 
Вопрос к читателям, и всем, кому интересна эта тема.
Надо ли мне делать примеры программ на С++ с открытым кодом на гитхабе (ссылка на репозиторий будет в руководстве)?
Mr.Engineer2083 29 Dec, 2024 @ 2:06am 
ну и нахуя оно мне я же юрист :stallwarts:
НЕ ну ты реально на харизме вывез гайд