C++ в 10-100 раз быстрее, чем Python, при выполнении любой серьезной обработки чисел.

Большинство современных языков программирования имеют аналогичные строительные блоки, например

  1. Получение ввода от пользователя и отображение вывода пользователю
  2. Возможность хранить значения в переменных (обычно различных типов, таких как целые числа, числа с плавающей запятой или символы)
  3. Строка символов, в которой вы можете хранить имена, адреса или любой другой текст.
  4. Некоторые расширенные типы данных, такие как массивы, которые могут хранить ряд обычных переменных (например, ряд целых чисел)
  5. Возможность зацикливания вашего кода в том смысле, что вы хотите получить 10 имен от пользователя, вы напишете код для этого 10 раз, но только один раз и скажете компьютеру перебрать его 10 раз.
  6. Возможность выполнять операторы кода условно, например, если оценки больше 40, учащийся проходит, иначе не проходит.
  7. Поместите свой код в функции
  8. Расширенные типы данных, которые формируются путем комбинации одного или нескольких типов базовых типов данных, таких как структуры или классы.
  9. Прочитать файл с диска и сохранить файл на диск
  10. Возможность комментировать свой код, чтобы вы могли понять его, когда вернетесь к нему через некоторое время.

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

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

#include <iostream>
using namespace std;
int main() {
    cout << "Hello World!";
    return 0;
}

Как вы заметили, в отличие от таких языков, как Python, R или Ruby, для отображения простого текста пользователю в C++ требуется больше, чем несколько операторов. В следующем разделе мы попытаемся разобрать этот код и разобраться в различных компонентах. Однако давайте рассмотрим несколько важных моментов:

  • В C++ нам нужно заканчивать каждую строку кода точкой с запятой;
  • Область действия операторов определяется с помощью фигурных скобок {}, в отличие от Python, где область действия определяется с помощью отступа.
  • Все операторы должны быть внутри функции. Здесь мы включили операторы в функцию main(), которая является первой функцией, выполняемой во время вызова компилятора. Все остальные функции будут вызываться из этой функции.

1. Получение ввода от пользователя и отображение вывода пользователю

Следующая программа показывает вывод пользователю. Оператор include используется для вызова файла заголовка iostream, который аналогичен библиотеке Python. Этот заголовочный файл содержит информацию об основных процедурах программирования, включая конструкции ввода и вывода. Следующим является int main(), который говорит, что основная функция вернет целое число после выполнения. В основной функции мы используем cout«, чтобы показать текст пользователю. Текст заключен в двойные кавычки «текст». endl после текста указывает компилятору вставить новую строку в окно вывода. Наконец, мы возвращаем 0, так как основная функция должна возвращать целое число. 0 означает, что во время выполнения функции все было в порядке.

#include <iostream>
using namespace std;
int main() {
    cout << "This is some text." << endl;
    return 0;
}

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

#include <iostream>
using namespace std;
int main() {
    int age_ = 0;
    cout << "What is your age?";
    cin>>age_;
    cout << "So your age is: " << age_;
    return 0;
}

2. Возможность хранить значения в переменных (обычно различных типов, таких как целые числа, числа с плавающей запятой или символы)

C++ не имеет динамического типа — вам нужно ввести имя переменной и тип данных перед ее использованием.

Основные типы данных: в C++ есть несколько типов переменных, давайте рассмотрим наиболее важные из них:

// Integer
int numberCats=5; 
long int numberCats=5; //long int can be used for storing large values
// Floating point numbers. These are numbers with significant digits after the decimal
float pi=3.1415926535; //pi=22/7
// Double
double dValue=3.1415926535; //for more significant digits we need to use other variable type than float
long double ldValue=3.1415926535;
// Boolean
bool bval=true; //boolean type is true or false; c++ uses 1 for true and 0 for false when outputting
// Character
char cval=55, cval2='7'; //takes exactly 1 byte of computer memory, char represents single characters from the ascii character set, 55 is the ascii code for 7, this is not the number 7 but the character 7
// String
string myname;

3. Строка символов, в которой вы можете хранить имена, адреса или любой другой текст.

Строка в C++ может быть определена с помощью ключевого слова string. Его можно назначить, используя ввод от пользователя, или его можно назначить, указав текст в двойных кавычках «текст».

string yourName;
cout << "\n\nwhat is your name? ";
cin >> yourName;
cout <<"\nnice to meet you "<<yourName<<endl<<endl;

4. Некоторые продвинутые типы данных, такие как массивы, в которых можно хранить последовательность обычных переменных (например, последовательность целых чисел).

Массивы представляют собой ряд переменных, хранящихся вместе в одной переменной. Массивы могут быть одномерными или многомерными. Одномерные массивы:

// Defining
int ar[3];
// Initializing the array
ar[0]=10;
ar[1]=20;
ar[2]=30;
// Supports indexing
cout<<ar[0]; // this will output the value stored at index 0, which is 10

Многомерные массивы:

// Defining
int mar[3][2] //multi-dim array
// Initializing the array
mar[3][2]={
    {34,188},
    {29,165},
    {29,160}
};
// Supports indexing
cout<<ar[0][0]; // this will output the value stored at row index 0 x column index 0, which is 34

Циклы можно использовать для перебора одномерных или многомерных массивов. Мы подробнее рассмотрим это в следующем разделе.

5. Возможность зацикливания вашего кода в том смысле, что вы хотите получить 10 имен от пользователя, вы напишете код для этого 10 раз, но только один раз и скажете компьютеру перебрать его 10 раз.

C++ имеет несколько вариантов циклов, таких как for, while и do while. Также есть варианты вложения (одинарная, двойная, тройная,..) петель. а. Цикл for

// Syntax
for (i=0;i<10;i++){
    statements to do stuff
}
// iterate over elements of one-dimentional array
// practice - create an array with a table of 12
int t12[10];
for (int i=0;i<10;i++){
    t12[i]=12*(i+1);
}
// iterate over elements of two-dimentional array (concept of nesting - we will enclose a for loop within another for loop)
int mar[3][2]={
    {34,188},
    {29,165},
    {29,160}
}; //multi-dim array
cout<<"\nthis is a multi dimentional array: ";
for (int i=0;i<3;i++){ //3 rows in the array
    cout<<"\nrow "<<i+1<<":  ";
    for (int j=0;j<2;j++){ //2 columns in the array
        cout<<"col "<<j+1<<": "<<mar[i][j]<<", ";
    }
}

б. Цикл While выполняет один и тот же код снова и снова, пока не будет выполнено условие остановки:

// Syntax
int i=0;
while (i<10){
    code statements;
    i+=1;
}
// Example
int i=1;
cout<<"\n\nwhile loop - first 10 natural numbers"<<endl;
while (i<=10){
    cout<<i<<", ";
    i+=1; //same as i=i+1 or i+=1
}

в. Цикл Do-While выполняет один и тот же код снова и снова, пока не будет выполнено условие остановки. Отличие от цикла while заключается в том, что в цикле do-while по крайней мере содержимое цикла выполняется один раз перед проверкой условия.

// Syntax
int i=0;
do{
    code statements;
    i+=1;
}while (i<10)
// Example
//for example if you want the user to enter the password again and again until they enter the correct password
cout<<"\n\ndo-while loop\n";
i=1;
string pass="pass", pass2;
do{
    if(i!=1){
        cout<<"\naccess denied, try again";
    }
    cout<<"\nenter your password?";
    cin>>pass2;
    i=0;
}while(pass2 != pass);
cout<<"\npassword accepted\n\n";

C++ также предоставляет операторы break и continue, которые позволяют нам изменять циклы дальше. Ниже приводится их использование: break сразу выходит из цикла. в основном используется в циклах while, но также может использоваться в циклах for

// break statement example
cout<<"\nbreak statement\n";
for(int f=1;f<11;f++){
    if(f==5){
        break; //we break out of the loop when f==5, and dont execute the loop for f>=5
    }
    cout<<f<<", ";
}

continue похож на break, но просто прерывает текущую итерацию, но продолжает выполнять следующие итерации.

// continue statement example
cout<<"\nbreak statement\n";
for(int f=1;f<11;f++){
    if(f==5){
        continue;
    }
    cout<<f<<", "; //this statement not executed for f==5
}

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

C++ предоставляет операторы if.., if..else.. и switch для применения условной логики. Давайте посмотрим на них: а. Основной синтаксис для создания оператора if:

/////////// IF STATEMENT ////////////
string pass="password",pass2;
cout<<"\n\n--if statement capability--\n";
cout<<"\nenter password:";
cin>>pass2;
if (pass==pass2){
    cout<<"\npassword matches! you can enter!!";
} else{
    cout<<"\npassword doesnt match! begone!!";
}

б. Основной синтаксис для создания инструкции if…else:

/////////// IF-ELSE STATEMENT ////////////
int menuChoice=5;
cout<<"\n\n--if-else statement capability--\n";
cout<<"\n1.\tadd record";
cout<<"\n2.\tdelete record";
cout<<"\n3.\texit";
cout<<"\nwhat do you want to do?";
cin>>menuChoice;
if (menuChoice==1){
    cout<<"\nlets add some records!!";
} else if (menuChoice==2){
    cout<<"\nlets delete some records!!";
} else{
    cout<<"\nexiting! good-bye!!";
}

в. Основной синтаксис для создания оператора switch:

/////////// SWITCH STATEMENT ////////////
int menuChoice2=5;
cout<<"\n\n--switch statement capability--\n";
cout<<"\n1.\tadd record";
cout<<"\n2.\tdelete record";
cout<<"\n3.\texit";
cout<<"\nwhat do you want to do?";
cin>>menuChoice2;
switch(menuChoice2){
case 1:
    cout<<"\nlets add some records!!";
    break;
case 2:
    cout<<"\nlets delete some records!!";
    break;
case 3:
    cout<<"\nexiting! good-bye!!";
    break;
default:
    cout<<"\n!!!!error!!!!";
}

7. Поместите свой код в функции

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

// Following is an example case where we define a function that shows a menu to the user
int sub_menu(int choice) {
    switch(choice){
        case 1:
            cout<<"\nLets add a new record";
            break;
        case 2:
            cout<<"\nLets view an existing record";
            break;
        case 3:
            cout<<"\nLets delete an existing record";
            break;
        default:
            cout<<"\nExiting! Goodbye!!";
    }
    return 0;
}

Мы можем вызвать функцию по ее имени:

// lets say we are writing the main() and we want to call the funciton
// lines-of-code
sub_menu()
// lines-of-code

8. Расширенные типы данных, которые формируются посредством комбинации одного или нескольких типов базовых типов данных, таких как структуры или классы.

C++ позволяет пользователю создавать классы. Это может быть комбинация переменных и функций, которые работают с этими переменными. Давайте посмотрим, как мы можем определить и использовать их.

// Create a Car class with some attributes
class Car {
  public:
    string brand;   
    string model;
    int year;
};
// Create an object of Car
Car carObj1;
carObj1.brand = "Mahindra";
carObj1.model = "Scorpio";
carObj1.year = 2020;
// Using the object
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";

9. Прочитайте файл с диска и сохраните файл на диск

Давайте посмотрим, как организованно читать и писать текстовый файл. Мы используем заголовочный файл fstream для импорта функций, необходимых для чтения/записи файлов.

#include <fstream>
// read a text file
string line;
ifstream myfile ("file.txt");
if (myfile.is_open())
{
  while ( getline (myfile,line) )
  {
    cout << line << '\n';
  }
  myfile.close();
}
else cout << "Unable to open file"; 
// write a text file
ofstream myfile ("file.txt");
if (myfile.is_open())
{
  myfile << "This is a line.\n";
  myfile << "This is another line.\n";
  myfile.close();
}
else cout << "Unable to open file";

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

Мы можем сказать C++, что строка кода является комментарием, следующим образом.

// this is a comment

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

/*
this
is
a
comment
block
*/

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

Комментарии приветствуются!