Введение в C++. Основы языка. Основные типы данных. Условия и циклы. Основные операторы.
Изначальная суть программирования - вычисление/решение заадчи пользователя. Взаимодействие с пользователем требует наличие некоторых базовых конструкций и принципов.
Для работы с вводом-выводом информации в консоль в C++ есть стандартные библиотеки. iostream
- является самой популярной и простой в освоении.
Здесь iostream не что иное, как сокращение - input output stream, где input/output - ввод/вывод, а stream - трансляция или поток. Другими словами мы транслируем информацию из одного места в другое.
Пример использования:
// подключаем библиотеку для работы с консолью
#include <iostream>
// подключаем пространство имен std.
// std - скоращение от standart.
using namespace std;
// главная функция, которая вызывается при запуске программы
int main(){
cout << "Hello, world" << endl;
return 0;
}
Здесь мы можем видеть несколько непонятных методов:
using namespace std
- подключение пространства имен std. Это означает, что мы можем использовать методы и переменные из этого пространства имен без указания типа пространства. Эта запись довольна удобна, как минимум потому что при работе с большим количеством библиотек, рано или поздно мы столкнемся с проблемой того, что некоторые методы и функции из разных библиотек могут повторяться. Для разделения понимания того, к какому пакету принадлежит данный метод.
Используя using namespace
программа самостоятельно подставит std
перед требующими этого методами.
std от standart (стандартный)
cout
- соращение от console output
. Используется для вывода информации в консоль.
endl
- соращение от end line
. Используется для переноса текста на новую строчку. Экивалетная запись переносу строки \n
. (endl = “\n”)
Помимо тех используемых есть функция ввода данных:
cin
- сокращение от console input
. Используется для ввода инфомрации в консоль. Пример:
#include <iostream>
using namespace std;
int main(){
// будем записывать сюда
int a;
// производим считывание
cin >> a;
// выводим только что введеную переменную
cout << a;
return 0;
}
Для непосредственной обработки каких-либо значений прользователя их необходимо где-то хранить, как раз для таких целей сущетсвуют переменные.
Переменные в C++ необходимо объявлять (т.е создавать) непосредственно до использования. При чем C++ является строго типизированным языком программирования, т.е не получиться объявить переменную целочисленного типа данных, а записать в нее строку. Основные типы данных в C++:
int
- целое число (от -2 147 483 648 до 2 147 483 647). 0, 120, -3 и т.дlong int
- большее целове число (от -2 147 483 648 до 2 147 483 647), но использует больше памятиlong long
- очень большое число (от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807)short
- маленькое число (от -32 767 до 32767).float
- число с плавающей точкой (вещественное). 3.14, -0.5, 6.0 и т.дdouble
- тоже число с плавающей точкой, но большей точностиstring
- строка. “Hello”, “C++” и т.д. Для использования необходимо подключить библиотеку <string>char
- один символ. ‘a’, ‘G’ и т.дbool
- логический тип данных (true или false)Беззнаковые целые типы
unsigned int
от 0 до 4,294,967,295unsigned short
от 0 до 65,535unsigned long
от 0 до 4,294,967,295unsigned long long
от 0 до 18,446,744,073,709,551,615Условие - это простейшая конструкция, при которой действия выполняются только в том случае,
если выражение внутри скобок вернуло true
. Вот пример:
#include <iostream>
using namespace std;
int main(){
int num;
cin >> num;
if (num > 0){
cout << "Число положительное.";
} else if (num == 0){
cout << "Число оказалось равно 0!" << endl
}
else{
cout << "Число отрицательное.";
}
return 0;
}
В этом примере мы вводим число num с клавиатуры, а далее проверяем, положительное оно, отрицательное или вообще 0!
После того, как мы ввели наше num, воспроизводиться условие:
Касательно операций в C++, то тут все максимально просто:
Определение | Описание |
---|---|
< | Меньше |
> | Больше |
== | Сравнение |
!= | Логическое неравенство (не равно) |
&& | Логическое И |
|| | Логическое ИЛИ |
Циклы в программировании используются для выполнения повторяющихся операций или обработки коллекций данных.
Обычно существует 2-3 вида циклов в языке программирования (но может быть и больше). Вот несколько из них:
Как правило цикл for используется в программах тогда, когда нам известно кол-во иттераций. К примеру нужно пройтись по всем эллементам массива и найти из них самый большой. Или же нужно вычислить сумму всех чисел в массиве/строке и т.д. Даже банально вывести все числа от 0 до 10.
Пример использования цикла for:
#include <iostream>
using namespace std;
int main(){
// строим тело цикла
// Пусть i - переменная типа int, которая изначально приравнена к 0
// Каждую иттерацию к ней будет прибавляться 1 (операция инкремента i++)
// Продолжаться это будет до тех пор пока i<=10
for (int i=0; i<=10; i++){
cout << i << endl;
}
return 0;
}
В этом примере мы проходимся выводим все числа от 0 до 10 включительно. Здесь достаточно понимать, что после окончания тела цикла к i прибавиться 1 каждый раз автоматически.
Пример работы цикла for при работе с массивами:
#include <iostream>
using namespace std;
int main(){
// этого пока не было, но будем считать, что так задается массив целых чисел в C++
int ls[5] = {0, 3, 16, 1, 7};
// считаем размер массива
int size = size_of(ls)/size_of(int);
// проходимся по индексам всего массива
for (int i=0; i<size; i++){
// выводим каждый i-й эллмента массива
cout << ls[i] << endl;
}
return 0;
}
Есть еще один способ пройтись по эллементам маасива в C++. Дело в том, что счиатеся (условно), что существует некий цикл for-each
:
#include <iostream>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
// считаем размер массива
int size = sizeof(arr) / sizeof(arr[0]);
// Проходим по каждому элементу массива
for (int element : arr) {
// Выводим элемент
cout << element << endl;
}
return 0;
}
Некоторые говорят, что это отдельный вид цикла for и что его нельзя приравнивать по значимости к обычному for, но судя по построению это лишь условные обозначения. Важно помнить, что цикл for-each появился в c++ только с версии с++11, т.е на более старых версиях эта конструкция не сработает.
С цилом while все совсем не так просто, как с циклом for, но тут тоже нет ничего особо сложного.
Цикл while мы используем, когда мы не знаем или не уверены в кол-ве иттераций цикла. Зачастую while используется во всяких алгоритмах или вечных циклах.
Пример использования while:
#include <iostream>
using namespace std;
int main() {
// задаем точку отсчета
int i=0;
// строим тело цикла
while (i < 100){
// выводим переменную i
cout << i << endl;
// обязательно изменяеем переменную i
// автоматически, как с циклом i она не измениться
i++;
}
return 0;
}
В этом примере мы выводим переменную i 100 раз, каждый раз в конце прибавляя 1 к переменной. Если этого не делать, то получиться так, что условие в цикле никогда не прекратится и while будет выполняться бесконечно
Цикл do-while в C++ используется для выполнения блока кода как минимум один раз, а затем продолжает выполнение цикла, пока заданное условие истинно. Это полезно, когда необходимо выполнить действие перед проверкой условия.
#include <iostream>
using namespace std;
int main() {
int number;
do {
cout << "Введите число (0 для выхода): ";
cin >> number; // Ввод числа
cout << "Вы ввели: " << number << endl; // Вывод введенного числа
} while (number != 0); // Условие продолжения цикла
cout << "Выход из программы." << endl;
return 0;
}
Вывести все простые числа до N (вводится с клавиатуры). Простое число - это число, которое делиться без остатка на себя и на 1 (само по себе число 1 не является простым).
Вывести N-е число из последовательности Фибоначи. N вводится с клавиатуры. Последоватность Фибоначи - это такая последоватность, в которой каждый элемент равен сумме двух предыдущих в этой последовательности (пример: [0, 1, 1, 2, 3, 5, 8, 13, …])
А дальше что там еще было - я не помню 😅.