Это вторая часть моего блога «Конкурентное программирование с помощью C ++». C ++ - это расширенный вариант C, в котором вы можете использовать все функции языка C, а также некоторые расширенные функции, такие как классы и пространства имен. Если вы уже знакомы с программированием на C, изучение C ++ для вас не составит труда. В этом блоге мы изучим основы C ++, чтобы начать соревновательное программирование.

Базовая структура программы на C ++

#include<iostream> /*include libraries*/
using namespace std;
int main()
{
    cout<<”Hello World”;
    return 0;
}

Базовая структура программы на C ++ в основном содержит -
1. Раздел библиотек
2. Раздел основных функций

  1. Раздел библиотек
#include<iostream>

Проще говоря, #include - это директива препроцессора, которая копирует содержимое данного файла или библиотеки в текущую программу перед компиляцией. iostream - файл или библиотека, определяющая функции, связанные с потоками ввода / вывода. Таким образом, к #include ‹iostream› все функции, определенные в iostream, будут импортированы в нашу программу.

using namespace std;

Эта строка добавляет префикс std :: ко всем функциям, используемым в нашей программе, определенным в стандартных библиотеках, таких как iostream. Например, когда мы вызываем функцию cout, определенную в iostream, непосредственно перед компиляцией, она становится std :: cout. Чтобы получить четкое представление о пространстве имен, вы можете обратиться к этой ссылке.

2. Раздел основных функций

int main(){
 //body of function 
}

Отправной точкой программы на C ++ является функция main. Тело каждой функции в программе на C ++ начинается с "{" и заканчивается на "}". "{" Означает начало блока кода, а "}" означает конец блока кода. В теле функции мы пишем группу операторов для выполнения заданной задачи.

Комментарии

Символы «//» и «/ * * /» используются для комментирования кода. Компилятор игнорирует код после // и код между / * и * / и не влияет на вывод программы. Комментарии используются, чтобы сделать код более понятным для других.

Типы данных в C ++

Переменная - это символ или метка, связанная с адресом некоторой информации в памяти компьютера. В C ++ перед объявлением переменной нам нужно указать, что мы хотим сохранить в нашей переменной (числовые значения или значения символов). Например, предположим, что мы сообщаем нашей программе, что переменная var хранит числовые значения. Как только мы это сделаем, мы не сможем хранить в этой переменной какие-либо другие типы данных, такие как строковые или символьные значения.

В C ++ есть много типов данных для числовых, логических и буквенно-цифровых значений. Некоторые из типов данных: i nt, float, long long, char, bool, string и т. Д. и т. Д. Когда мы видим другие языки программирования, такие как python, нам не нужно для указания типа данных и может хранить любой тип данных в переменной. Так почему же в C ++ много типов данных? Ответ на этот вопрос - это память, используемая для хранения значения. Как известно, для разных типов данных требуется разный объем памяти. Таким образом, используя соответствующие типы данных, мы можем сэкономить память, которую можно использовать для других данных в нашей программе. Например, когда мы хотим сохранить логическое значение, которое может быть сохранено с использованием 1 бита, использование переменной int, занимающей 4 байта памяти, бесполезно. В технических интервью одним из критериев оценки программы является память, используемая нашей программой. Таким образом, программисту необходимо понимать различные типы данных и способы их использования.

Объявление, инициализация переменных

Базовый синтаксис объявления переменной:

datatype variable_name;

Синтаксис для инициализации переменной:

variable_name = value;

Мы можем объявить и инициализировать переменную одновременно

datatype variable_name = value;

давайте посмотрим на некоторые типы данных с указанными диапазонами:

int используется для хранения числовых значений. Для хранения переменной требуется 4 байта системной памяти. Его диапазон составляет от -2147483648 до 2147483647. Если мы используем ключевое слово без знака перед int, оно сохранит значения в диапазоне от 0 до 4294967295.

int var;          //range: -2147483648 to 2147483647 size: 4 bytes
unsigned int var; //range: 0 to 4294967295 size: 4 bytes
signed int  var;  //range: -2147483648 to 2147483647 size: 4 bytes

long long также используется для хранения числовых значений. signed long long может хранить значения от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807. unsigned long long может хранить от 0 до 18,446,744,073,709,551,615. Требуется 8 байт системной памяти.

long long var;  //range: ​-9223372036854775808 to 9223372036854775807

Короткое int может хранить числовые значения в диапазоне от -32768 до 32767 и занимает всего 2 байта системной памяти.

short int var;  //range: -32768 to 32767

Вот список всех типов данных с их диапазоном и размером.

Вход и выход

В C ++, чтобы принять ввод, нам просто нужно читать символ за символом, пока не будет достигнут разделитель, независимо от того, вводится ли ввод из файла или пользователем в консоли. Разделитель - это символ или символ, обозначающий конец ввода, и это может быть пробел или символ новой строки (\ n). Библиотека, используемая для потоков ввода и вывода в C ++, называется «iostream». Iostream означает поток ввода-вывода. В C ++ входные данные хранятся в виде потоков, а поток - это не что иное, как интерфейс, в котором данные читаются / записываются последовательно.

cout

#include<iostream>
using namespace std;
int main()
{
   cout<<"Hello World!"<<endl;
   cout<<"C++ is a greate language \n";
}

‘Cout’ обозначает вывод символов. « cout» используется для отображения вывода на консоль. Текст или значения после ‘‹ ’’ будут показаны на консоли. В C ++ в конце строки используется ключевое слово «endl» или «\ n» (символ новой строки).

cin

#include<iostream>
using namespace std;
int main()
{
    int var; //declare a variable 
    cin>>var; //input a value for var
    cout<<var; // display the value of var in console
}

«Cin» означает ввод символов. «Cin» используется для ввода данных со стандартных устройств ввода (это может быть консоль или файл). Иногда мы путаем «‹

#include<iostream>
using namespace std;
int main()
{
    string name; //declare a variable to store name
    cin>>name; //input name
    cout<<"Hello "<< name <<"!"<<endl;
}

Getline

Разделителем по умолчанию в cin является пробел; это означает, что после пробела весь ввод будет проигнорирован. Функция getline позволяет нам определять любой символ-разделитель, а разделителем по умолчанию является символ новой строки. Вот пример-

#include<iostream>
using namespace std;
int main()
{
    string name; //declare a variable to store name
    cin>>name; //input name
    cout<<"Using cin "<< name <<endl;
    string name2;
    getline(cin,name2);
    cout<<"using getline"<<name2<<endl;
}

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

Поток управления

Блоки принятия решений

Иногда в нашей программе нам нужно принять решение, запускать или нет блок кода. В этом случае мы можем использовать операторы if-else, чтобы указать, какой блок запускать, а какой не запускать, в зависимости от заданного условия. Вот синтаксис операторов if-else:

if(condition1)
{
  //code which we want to run when condition 1 is true
}
else if(condition2)
{
  //code which we want to run when condition 2 is true
}
else if(condition3)
{
  //code which we want to run when condition 3 is true
}
else
{
  //default code to run when no conditions are setisfied
}

Как указать условия для оператора if-else? Давайте посмотрим на несколько примеров -

пример 1: возраст равен 18 годам или нет

if(age == 18)
{
    cout<<"Yes";
}
else 
{
   cout<<"No";
}

пример 2: возраст от 18 до 23 лет или нет

if(age > 18 and age<23) //we can also use '&&' inplace of 'and'
{
    cout<<"Yes";
}
else 
{
   cout<<"No";
}

пример 3: возраст меньше 12 или больше 50

if(age < 12 or age > 50) //we can also use '||' inplace of 'or'
{
    cout<<"Yes";
}
else 
{
   cout<<"No";
}

Для лучшего понимания блоков принятия решений C ++ вы можете обратиться к следующей ссылке и попробовать запустить следующую программу.

#include<iostream>
using namespace std;
int main()
{
      string zone;
      cin>>zone; //input the zone 
 
      if(zone == 'red')
      {
          cout<<"you can not go outside"<<endl;
      }
      else if(zone == 'yellow')
      {
          cout<<"If necessory then only go outside"<<endl;
      }
      else if(zone == 'green')
      {
          cout<<"You can go outside,but follow social distancing";
      }
      else 
      {
           cout<<"please provide correct input: one of (red,yellow,green)";
      }
      return 0;
}

Петли

Когда мы хотим запускать блок кода снова и снова, мы можем использовать циклы в C ++. Здесь мы будем обсуждать цикл for и while, широко используемые программистами.

for(initialization;condition;increment)
{
    //statements
}

Блок-схема цикла for:

Пример:

#include<iostream>
using namespace std;
int main()
{
    for(int i=0;i<5;i++)
    {
       cout<<i<<endl;
    }
    return 0;
}
/* output 
0
1
2
3
4 */

теперь давайте посмотрим, как работает цикл while -

//syntax of while loop
while(condition)
{
    //statements
}

В цикле while блок кода будет выполняться снова и снова, пока условие не станет ложным. Вот пример цикла while:

#include<iostream>
using namespace std;
int main()
{
    int i=0;
    while(i<5)
    {
       cout<<i<<endl;
       i = i+1;
    }
    return 0;
}
/* output 
0
1
2
3
4 */

Массивы

Теперь предположим, что мы хотим сохранить оценки 100 лучших учащихся на экзамене. Основываясь на наших текущих знаниях, один из способов сделать это - создать 100 переменных и вводить их одну за другой. Но другой способ сделать это - использовать массив. Массив - это набор однотипных данных в непрерывной памяти.

Объявить массив

datatype array_name[size];

Установите значение i-го элемента равным x

array_name[i]=x;

Вот полный пример того, что мы узнаем из всего этого блога.

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n; //input the number of students
    int marks[n]; // declare a int array of size n
   
    for(int i=0;i<n;i++) //input marks of all students
    {
       cin>>marks[i];
    }
     
    //print scores
    int j=0;
    while(j<n)
    {
       cout<<"Marks of student i = "<<i<<" is "<<marks[i]<<endl;
       j = j+1; 
    }
    return 0;
}

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