// Комментарий /*Комментарий*/ #include <iostream> - библиотека ввода и вывода информации #include <string> - библиотека для вывода текста(вместо cout) #include <cmath>/<math.h> - математическая библиотека #include <time.h> - библиотека даты и времени (например: нужна для генерации рандомного числа при каждом запуске) using namespace std; - подключение стандарта int main() {} - главная функция языка С++ setlocale(LC_ALL, ("RU")); - подключение русского языка return 0; - завершение программы с кодом 0(всегда пишется в конце функции main) Типы данных: short - 1 символ занимает 2 байта, имеет символы от -32к до 32к unsigned short - 1 символ 2 байта, символы от 0 до 64к int - 1 символ занимает 4 байта, имеет символы от -2 млрд до 2 млрд unsigned int - 1 символ 4 байта, символы от 0 до 4 млрд long - 1 символ 8 байт, имеет максимальные значения unsigned long - 1 символ 8 байт, от 0 до макс.значения float - число с плавающей точкой double - число с плавающей точкой(имеет больше чисел после точки) char - хранит символы ('A') и значения от -127 до 127 bool - логический тип данных(false/true) cout - выводит информацию на экран Пример: cout << "Информация" << info; cin - вводит информацию с клавиатуры Пример: cin >> info; endl - переводит на новую строку Условная конструкция if-else: if - пишется в первом условии, после открываем круглые скобки и пишем в них условие. Затем открывается { и пишется код, который будет выполняться при таком условии, после закрываем } else if - выполняется, если не выполнилось предыдущее условие. else if может быть не ограниченное колличество else - выполняется, если не выполнилось не одно из предыдущих условий, пишется без (), только {код, выполняющийся при else} Пример: if (num > 3) { cout << "Число больше 3"; } else if (num == 2) { cout << "Число равно 2"; } else { cout << "Сработал else"; } Условная конструкция switch-case: switch - пишется в самом начале, после открываем круглые скобки и пишем какую переменную будем проверять. Затем открывается { пишем case и чему должна быть равна переменная, далее двоеточее и код который должен выполняться при таком условии. В конце кода пишем break - завершение кода. С новой строки следующее условие. case может быть не ограниченное колличество. default - пишем после всех case, выполняется если не выполнились предыдущие условия, так же двоеточее и код. В самом конце закрываем } Пример: switch (num) { case 5: cout << "Число равно 5"; break; case 20: cout << "Число равно 20"; break; default: cout << "Ошибка"; } Генерация случайного числа от 1 до 50: int resiltat = 1 + rand() % 20; Остаток при деление: z = a % b Сокращенные операции: a += 5; - тоже самое, что и a = a + 5 a++; - тоже самое, что и a = a + 1 != обозначает не равно и т.д. Цикл for: for - пишем в начале цикла, затем в круглых скобках задаём условие цикла: (создаём переменную; указываем до какого момента будет идти цикл; указываем что будет происходить с переменной каждый круг цикла), затем открываем { и пишим код, что происходит внутри цикла } Пример: for (int i = 100; i = 10; i-=5) { cout << "Элемент равен: " << i << endl; Цикл while: Для начала создаём переменную и указывание её значение. Потом пишем while, в круглых скобках указываем до какого момента будет идти цикл. Открываем { пишем код, что происходит внутри цикла с указанием, что будет происходить с переменной каждый круг цикла } Пример: int j = 100; while (j > 50) { cout << "Элемент равен: " << j << endl; j /= 2; } Цикл do while: Для начала создаём переменную и указывание её значение. Потом пишем do, открываем { пишем код, который происходит внутри цикла с указанием, что будет происходить с переменной каждый круг цикла } затем while и в круглых скобках указываем до какого момента будет идти цикл. Пример: int k = 100; while (j > 50) { cout << "Элемент равен: " << k << endl; k -= 10; } while (k < 10); Массив данных: [] - квадратные скобки после переменной обозначают массив данных. А внутри скобок указывается количество значений в массиве. Массивы записываются двумя способами: 1) int nums[3];- указали количество значений в массиве nums nums[0] = 10;- указали первое значение массива nums[1] = 15;- указали второе значение массива nums[2] = 30;- указали третеье значение массива Этот способ удобен, если каждое значение массива должен указывать пользователь клавиатурой. Примечание: id массивов идёт с 0 2) int nums[] = { 3, 4, 9 }; В данном способе мы в { указываем каждое значение массива } Примечание: в [] можно не указывать кол-во значений, компилятор сам поймёт сколько значений там должно быть из {} Многомерный массив данных: Тут всё просто, в каждом значение массива может быть несколько массивов. В таком случае мы пишем два раза квадратные скобки [][] Пример: int matrix[3][2] = { {3, 5} , {5, 8} , {-1, 0} }; Динамический массив данных: После отработки массива, мы его удаляем командой delete[]. Пример: int nums[] = { 3, 4, 9 }; cout << nums[] << endl; delete[] nums; Работа со строками: При подключение библиотеки string мы можем легко работать со строками. Для это нам нужно создать переменную с типом данных string, присвоев ей какое-то символьное значение. Каждый символ будет считаться значением массива. Так что мы можем обращаться к каждому символу по его id и делать с ним всё. Пример: string words = "Hello Words"; words[0] = 'M'; Создание функций вне главной функции main: Обычно функции пишутся после главной функции main, а их скелеты над главной функцией. Скелет функции - это функция, без кода внутри неё. Пример: void print(string word); void - функция, которая выводит изображение на экран, но ничего не возвращает в прошрамму. int - функция, возвращает при завершение результат в программу После void пишется название функции, затем открываются круглые скобки и в них указывается тип данных переменной и её название. После круглых скобок открываются квадратные и в них прописывается код фкнции. Пример: void print(string word) { cout << word; } После int всё тоже самое, только в конце кода нужно указать, что функция будет возвращать в программу через команду return. Для того, чтобы функция заработала, её нужно запросить в главной функции main. Для этого нужно указать название функции и в круглых скобках написать значения/символы, которые мы хотим присвоить переменной в этой функции. Пример: print("Привет"); Перегрузка функций: Они нужны для того, чтобы при одном и том же название функции можно было выполнить код с разными типами данных или разным количеством переменных. Для того, чтобы перегрузка сработала, надо при запросе функции в круглых скобках указать символ/число и количество переменных. Пример: print("a"); print('1'); print('1','1'); Ссылки и указатели: Они нужны для того, чтобы каждый раз не занимать место в оперативной пямяти, т.е улучшить оптимизацию. Чаще всего их используют в массивах. & - ссылка, пишется перед названием переменной * - указатель, пишется перед названием переменной Работа с файлами: Для работы с файлами в первую очередь нужно подключить библиотеку - fstream. Чтобы открыть и записать что-то в файл необходимо создать переменную ofstream, написать название переменной, открыть круглые скобки и вписать название файла(если такого файла нет в проекте, то он будет создан) и через запятую указать как мы открываем файл, для этого прописать команду ios_base затем :: и способ открытия, например out - открытие файла для записи, закрываем скобку и ставим точку с запятой. Для своей же безопасности, нужно проверить открылся ли файл перед записью. Для этого используем условную конструкцию в условие прописать file.is_open(). Эта команда выдаёт true или false. Если файл открыт, то записываем в него данные. Для этого указываем: название переменной << "Данные"; Затем нужно закрыть файл прописав название переменной.close(); Чтобы считать данные с файла создаём переменную ifstream указываем название переменной и в скобках имя файла. Так же нужно проверить открыт ли файл, а затем создать переменную с типом данных string и для вывода данных указать название переменной файла >> и название переменной string. В конце закрыть файл. Структура данных: Они записываются вне главной функции main. Структуры нужны для быстрого описания объекта. Для создания структуры прописываем struct и её название, в { создаём переменные(название, возраст, дата постройки и т.д. }. Далее нужно вызвать структуру в главной функции main, для этого указываем название структуры и создаём название нашего предмета. Затем для указания названия/возраста/даты постройки и т.д. используем название предмета затем точка и название переменной в структуре. Например: dub.name Вывод информации на экран: Для упрощения вывода информации можно использовать функцию get_info(). Которую нужно заранее создать вне главной функции main. А для вызова функции указать название предмета точка get_info(); Перечисления: Они записываются вне главной функции main. Перечисления нужны для указания выбора. К примеру состаяния файла. Чтобы их создать указываем команду enum и название перечисления в { перечисляем состояния через запятую } Для использования перечислений указываем название перечисления :: и будет вылазить список для выбора состояния. Обработчик ошибок: Для создания ошибки нужно прописать условие при её возникновение. Например: if (b == 0) затем написать команду throw и номер ошибки; В нашем случае, если переменная b равна 0, то выдаётся ошибка. Создаём саму ошибку: catch ( создаём переменную ошибки ) { if (переменная ошибки == 101), пишем, что дальше происходит. Функции работы со строками: append - добавляет к одной строке вторую ( str1.append(str2); ) pop_back - удаляет последний символ ( str1.pop_back(); ) push_back - добавляет новый символ в конце ( str1.push_back('!'); ) resize - меняет размер строки ( str1.resize(5); ) length - выводит длину всей строки ( cout << str1.length(); ) Математические функции: pow(1, 1) - возводит первое число в степень(второе число) abs(-1) - модуль числа sin(1), cos(1) - синус, косинус и т.д. sqrt(1) - квадратный корень ceil(1.08) - округляет число к большему floor(1.99) - округляет число к меньшему round(1.45) - округляет число к ближайшему Так же существует множество других функции, при необходимости можно посмотреть в интернете. ООП - ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ: Задача: описать робота за счёт ООП Класс: чертёж робота, его начинка Объект: сам робот со значениями и данными Наследование: добавление полезных опций к чертежу робота Полиморфизм: общий функционал, что можно переписать для определенной модели робота Инкапсуляция: броня или же защита внутренних данный самого класса Поле == переменная; В классах - поле; Вне классов - переменные; Классы в ООП: Класс - это описание объекта и его функций. Классы создаются вне главной функции main. В классе есть несколько доступов: public - открытый доступ, всё что в нём, доступно как в самом классе, так и в других функциях. private - закрытый доступ, всё что в нём, доступно только в этом классе. protected - уровень доступа, который доступен только самому классу и его наследникам. Чтобы создать класс прописываем class и его название, открываем { пишем уровень доступа двоеточее и создаём поля(переменные). Обычно переменные создаются в закрытом доступе private. А сами функции класса создаются в открытом доступе public. После создания переменных прописываем public двоеточее и создаём функции данного класса. Т.к. переменные класса нам не доступны в главной функции main нужно создать функции, в которых мы будем прописывать переменные и выводить их на экран. Например такие функции, как set_data и get_info. Чтобы класс заработал, нужно создать объект в главной функции main написав название класса и название нашего объекта. Затем для работы функций нужно прописывать название объекта точка название функции. Один и тот же класс можно использовать неограниченное количество раз, т.е на основе этого класса можно создать множество объектов. Констуркторы: В классах так же можно создавать конструкторы - вызываются при создание обекта. Они нужны, чтобы в main не прописывать лишний раз функции. А сразу при создание объекта вводить в круглых скобках значения объекта. Конструкторы создаются в открытом доступе public. Чтобы их создать нужно ввести название класса в круглых скобках переменные и затем в { код конструктора } Деструкторы: Деструкторы - вызываются при удаление объекта. Смысл один и тот же, что и у конструкторов только вызов их происходит при удаление объекта. Чтобы их создать нужно написать такой знак ~ и название класса, затем пустые круглые скобки и в { код деструктора } В классах часто используются указатели. Их используют если название переменной равна значению переменной. Чтобы их использовать, нужно ввести this->. Например: this->year = year; Дружественные функции: Они имеют доступ к закрытом типу данных(private). Если функции создана вне классов, но имеет переменные этих классов, то нужно эту функцию сделать другом класса. Для этого, в классе в укровне доступа public прописать: friend и функцию без кода. Дружественные классы: Так же как и функции имеют доступ к private. Чтобы сделать один класс другом другого класса нужно в public первого класс прописать: friend class и название класса. А чтобы это работало корректно, нужно перед этими классами прописать: class и название класса друга. Иначе может выдать ошибку. Наследование классов: Для того, чтобы во втором классе использовать функции первого класса, можно использовать наследование. При этом первый класс будет родителем, а второй наследником. Чтобы это сделать, нужно после названия второго класса прописать двоеточее public название первого класса. И в функции второго класса, чтобы использовать переменные функции первого класса нужно после круглых скобок, где мы указываем переменные и первого класса, прописать двоеточее название класса родителя и в ( переменные, которые мы берем из него ). Шаблоны функций: Нужны, чтобы одна и таже функция могла использоваться для разных типов переменных. Чтобы это сделать, нужно перед созданием функции создать шаблон, для этого прописываем template <typename T> (вместо T можно использовать любое другое обозначение). Затем в функции при создание переменной вместо типа данных указывать T. А при запросе функции в главной функции main, после её названия в <указывать тип данных(int, float и т.д.)> Шаблоны классов: То же самое , что и при шаблонах функций. Перед классом template <сlass T>. В классе вместо типа данных T. И при создание объекта в главной функции main после названия класса в <тип данных> P.s. тема полностью уникальна, все я писал сам. Если что то упустил/написал не так, просьба сообщить об этом
Прикольная гора текста, но в конце очень не хватает примеров и хотя бы одного цельного кода для демонстрации А так молодец, может кто-то начнёт c++ с этого xd
будет очень ахуенно если добавишь спойлеры и в них уже код if - else if - пишется в первом условии, после открываем круглые скобки и пишем в них условие. Затем открывается { и пишется код, который будет выполняться при таком условии, после закрываем } else if - выполняется, если не выполнилось предыдущее условие. else if может быть не ограниченное колличество else - выполняется, если не выполнилось не одно из предыдущих условий, пишется без (), только {код, выполняющийся при else} Пример: if (num > 3) { cout << "Число больше 3"; } else if (num == 2) { cout << "Число равно 2"; } else { cout << "Сработал else"; } C if (num > 3) { cout << "Число больше 3"; } else if (num == 2) { cout << "Число равно 2"; } else { cout << "Сработал else"; }
Как заметка для самого себя вполне пойдёт, лучше усвоишь информацию, но надеюсь никто не будет это читать на полном серьёзе, а то помимо глазных болей появится ощущение сильного жжения в области попы xD