Учебники

1) C ++ Tutorial

Что такое С ++?

C ++ — это объектно-ориентированный язык программирования общего назначения. Он был создан Бьярном Страуструпом в Bell Labs приблизительно в 1980 году. C ++ очень похож на C (изобретенный Деннисом Ритчи в начале 1970-х). C ++ настолько совместим с C, что, вероятно, скомпилирует более 99% программ на C без изменения строки исходного кода. Тем не менее, C ++ является намного более структурированным и более безопасным языком, чем C, поскольку он основан на ООП.

Некоторые компьютерные языки написаны для определенной цели. Мол, Java изначально была разработана для управления тостерами и некоторой другой электроникой. C был разработан для программирования ОС. Паскаль был концептуализирован, чтобы преподавать правильные методы программирования. Но C ++ — это язык общего назначения. Это вполне заслуживает широко известного прозвища «Швейцарский карманный нож языков».

В этом уроке вы узнаете

Популярные языки программирования в использовании?

Популярными языками, которые в основном используются, являются Java, C ++, Python и C.

Языки нижнего уровня, такие как

  • Язык ассемблера
  • С
  • C ++

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

Как вы можете видеть, несмотря на то, что C ++ является старым, он все еще относительно популярен, что само по себе является подвигом. График взят из stackoverflow.com

C ++ лучший язык программирования?

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

Другие языки, такие как Visual Basic, Python, имеют встроенные элементы дизайна GUI. Поэтому они лучше подходят для задач типа GUI.

Некоторые из языков сценариев, которые обеспечивают дополнительную программируемость приложений. Такие, как MS Word и даже Photoshop, как правило, являются вариантами Basic, а не C ++.

C ++ по-прежнему широко используется, и самые известные программы имеют свою основу в C ++.

Кто использует C ++?

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

Примерами являются Amadeus (продажа авиабилетов)

  • Bloomberg (финансовое образование),
  • Amazon (веб-коммерция), Google (веб-поиск)
  • Facebook (социальные сети)

Многие языки программирования зависят от производительности и надежности C ++ при их реализации. Примеры включают в себя:

  • Виртуальные машины Java
  • Интерпретаторы JavaScript (например, Google V8)
  • Браузеры (например, Internet Explorer, Mozilla Firefox, Apple Safari и Google Chrome)
  • Прикладные и веб-платформы (например, платформа Microsoft .NET Web-сервисов).

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

5 основных концепций C ++

Переменные C ++

  • Переменные являются основой любого языка программирования.
  • Переменная — это просто способ хранения некоторой информации для последующего использования. Мы можем получить это значение или данные, ссылаясь на «слово», которое будет описывать эту информацию.
  • После того, как они объявлены и определены, они могут использоваться много раз в пределах области, в которой они были объявлены.

C ++ управляющие структуры

  • Когда программа запускается, код читается компилятором построчно (сверху вниз и по большей части слева направо). Это известно как « поток кода ».
  • Когда код читается сверху вниз, он может столкнуться с точкой, в которой ему необходимо принять решение . Исходя из решения, программа может перейти к другой части кода. Это может даже заставить компилятор перезапустить определенный фрагмент снова или просто пропустить кучу кода.
  • Вы можете думать об этом процессе, как если бы вы выбирали разные курсы от Guru99. Вы решаете, нажмите на ссылку и пропустите несколько страниц. Точно так же компьютерная программа имеет набор строгих правил, определяющих ход выполнения программы.

Структуры данных C ++

Давайте использовать список курсов по «guru99» в качестве примера! У вас, вероятно, есть список курсов перед вами. Но как вы думаете, они хранили это. Курсов может быть много, и разные пользователи могут зарегистрироваться на разные курсы. Они генерируют разные переменные для каждого пользователя? Например, скажем, нам нужно отслеживать 10 курсов.

Во-первых, НЕПРАВИЛЬНЫЙ ПУТЬ:

Если нам нужно сохранить 10 курсов, мы бы, вероятно, определили 10 переменных, верно?

Неправильно.

В мире программирования это просто ужасный способ хранения 10 разных переменных. Это из-за двух основных причин:

  • Огромное количество текста, которое вам нужно будет написать в вашей программе. Конечно, сейчас у нас всего 10 курсов, так что это неплохо, но что если бы у нас было 1000 курсов! Представьте, что вы печатаете это тысячу раз! Забудь об этом!
  • Гибкость Добавление другого курса потребует ручного редактирования кода. Мы бы создали переменную course11. Это просто безумие!

Итак, что такое ПРАВИЛЬНЫЙ ПУТЬ ?

Хранение их в структурах данных.

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

Синтаксис C ++

Синтаксис представляет собой макет слов, выражений и символов.

Ну, это потому, что адрес электронной почты имеет свой четко определенный синтаксис. Вам нужна комбинация букв, цифр, возможно, с подчеркиваниями (_) или точками (.) Между ними, после которых ставится символ скорости ( @ ), за которым следует домен домена (company.com).

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

Но если вы не будете соблюдать правила языка программирования или синтаксиса, вы получите ошибки.

Инструменты C ++

В реальном мире инструмент — это нечто (обычно физический объект), которое помогает вам быстро выполнить определенную работу.

Что ж, это относится и к миру программирования. Инструмент программирования — это часть программного обеспечения, которая при использовании с кодом позволяет программировать быстрее.

Вероятно, существуют десятки тысяч, если не миллионы различных инструментов на всех языках программирования.

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

Как скачать и установить C ++ на Windows

Шаг 1) Сначала вы должны загрузить Dev C ++ на свой компьютер с Windows. http://www.bloodshed.net/dev/devcpp.html

Шаг 2) Есть пакеты для разных операционных систем.

Шаг 3) В пакете Dev-C ++ 5.0 beta 9.2 (4.9.9.2) (9.0 МБ) с Mingw / GCC 3.4.2 Нажмите на ссылку «Скачать с SourceForge».

Шаг 4) Этот пакет загрузит файл .exe для Windows, который можно использовать для установки на Windows 7/8 / XP / Vista / 10.

Шаг 5) Вы перейдете на сайт SourceForge, и загрузка начнется автоматически.

  • Нажмите на кнопку Сохранить, чтобы сохранить. По умолчанию он сохраняется в папке «Загрузки».
  • После завершения загрузки перейдите к сохраненному файлу .exe и щелкните по нему для запуска.
  • Установщик попросит вас выбрать язык. Выберите «Английский» и нажмите «ОК».

  • Затем появится экран для лицензионного соглашения. Нажмите «Я согласен», чтобы продолжить.

Шаг 6) На этом этапе

  1. Вы можете увидеть различные компоненты Dev C ++, которые будут установлены с этим пакетом.
  2. Просто нажмите на кнопку «Далее».

Шаг 7) На этом этапе

  1. По умолчанию папка назначения находится на диске C. Вы можете изменить эту папку назначения, но убедитесь, что у вас достаточно памяти.
  2. Нажмите на кнопку «Установить».

На следующем экране начинается установка

Теперь Dev C ++ успешно установлен на вашей Windows. Выберите «Run Dev C ++», чтобы запустить его, и нажмите кнопку «Готово».

Это оно! Теперь вы готовы к компиляции ваших программ на C или C ++ с помощью компилятора Dev C ++.

Программа C ++ Hello World

Если вы впервые запускаете C ++, вы увидите следующий экран.

Шаг 1) Выберите опцию Создать кеш сейчас.

Вы должны увидеть экран примерно так

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

Шаг 2) После того, как программа откроется, вам нужно создать новый исходный файл, чтобы вы могли начать писать свою первую программу. Для этого выберите « Файл»> «Создать»> «Исходный файл» . Путь показан на рисунке ниже.

Это откроет область, где вы сможете набрать свой код.

Шаг 3) После этого вы можете написать код, как показано на рисунке ниже:

Код:

#include<iostream>    
using namespace std;    

int main()    
{    
    cout<<"Hello World"<<endl;    
    return 0;    
}    

Шаг 4) На этом этапе

Нажмите Выполнить-> Скомпилировать и запустить

Шаг 5) Сохраните файл

После сохранения у вас должен появиться черный экран с выводом «Hello World».

Первое объяснение программы

C ++ — это скомпилированный язык. Исходный код компилируется в объектные файлы. Объектные файлы затем объединяются компоновщиком, создавая исполняемую программу.

Рабочий C ++ состоит из множества файлов исходного кода (обычно называемых исходными файлами).

  • Фигурные скобки, {}, экспресс-группировка в C ++. Здесь они указывают начало и конец тела функции.
  • Каждая программа на C ++ имеет ровно одну глобальную функцию с именем main (). Программа начинается с выполнения этой функции. Значение int возвращается функцией main (), которую оно передает системе. ‘ Если значение не возвращается, система получит значение 0, что указывает на успешное завершение. Ненулевое значение из функции main () указывает на сбой.

Объяснение кода

Строка кода 1: первая строка #include <iostream>. Он указывает компилятору включить стандартную библиотеку потокового ввода-вывода. Без включения этого заголовка выражение не скомпилируется

std::cout << "Hello, World"<<endl

Строка кода 4: int main (). Это основная функция программы. Функции обозначаются скобками (). Перед основной функцией стоит «int». Это означает, что основная функция будет возвращать целое число функции или процессу, который ее вызвал.

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

Строка кода 6: оператор << записывает свой второй аргумент в свой первый. В этом

case, строковый литерал «Hello, World!» записывается в стандартный поток вывода std :: cout.

( Примечание : строковый литерал — это последовательность символов, заключенная в двойные кавычки. Endl вставляет символ новой строки в той же строке)

Кодовая строка 7: возврат 0; Это последняя команда в основной функции, оператор return. Его цель — только вернуть значение функции или процессу, вызвавшему основную функцию. Не беспокойтесь об этом, кроме того факта, что это требуется через «int» перед определением основной функции. Он должен вернуть ноль из основной функции, означающей, что программа успешно запустилась и завершилась.

cout<<"Hello World"<<endl;

Примечание. Cout — это поток, который выводится в указанный поток. По умолчанию это стандартный поток вывода. Cout очень распространен в программах, так как основной целью каждой программы является получение некоторого результата. ENDL; представляет конец операторов в C ++. Точка с запятой в C ++ разделяет различные операторы и должна быть помещена в конце операторов в C ++.

Типы переменных

C ++ определяет целый набор примитивных типов

Тип void не имеет связанных с ним значений и может использоваться только в нескольких случаях. Чаще всего это тип возвращаемых функций, которые не возвращают значение.

В арифметические типы включают в себя символы, целые числа, логические значения и числа с плавающей точкой. Арифметический тип, если далее разделить на 2 категории

  1. Типы с плавающей точкой . Число с плавающей точкой (или плавающий тип) представляет десятичные числа. Стандарт IEEE определяет минимальное количество значащих цифр. Большинство компиляторов обычно обеспечивают большую точность, чем указанный минимум. Как правило, числа с плавающей запятой представлены 32 битами, удваиваются в 64 битах и ​​длинные удваиваются в 96 или 128 битах.
  2. Интегральные типы (которые включают символьные, целые и логические типы). Тип Boolean имеет только два типа значений: True или False. Существует несколько типов символов , большинство из которых существуют для поддержки интернационализации. Основным типом символов является char. Символ имеет тот же размер, что и один машинный байт, то есть один байт.

В Целые типы могут быть подписаны или без знака.

Тип со знаком : они представляют отрицательные или положительные числа (включая ноль). В типе со знаком диапазон должен быть равномерно разделен между значениями + ve и -ve. Таким образом, 8-битный символ со знаком будет содержать значения от –127 до 127.

Тип без знака: В типе без знака все значения>> 0. 8-битный символ без знака может содержать от 0 до 255 (оба включительно).

Переменная C ++

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

Имя переменной или идентификаторы

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

Идентификаторы должны

  • начать с буквы или подчеркивания (‘_’).
  • И чувствительны к регистру; прописные и строчные буквы различны:

// определяет четыре разные переменные типа int

int guru99, gurU99, GuRu99, GURU99;

Язык C ++ зарезервировал некоторые имена для своего использования.

Существует много общепринятых соглашений для именования переменных в разных языках программирования. Следование этим соглашениям может улучшить читаемость программы.

  • Идентификатор должен дать хоть какое-то указание на его значение.
  • Имена переменных обычно строчные — guru99, а не Guru99 или GURU99.
  • Классы, которые мы определяем, обычно начинаются с заглавной буквы.
  • Идентификаторы, содержащие несколько слов, должны визуально отличать каждое слово. Например, guru99_website не guru99website.

Объявление и определение переменной

Объявление переменной делает имя известным программе в той области, в которой оно определено. Пример:

int a=5;
int b;
char c='A'; 
int a,b;
a=b=1000;
List initialization
int a(5);
int b{5};

Константный классификатор

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

В таком случае используйте ключевое слово const

const int bufSize = 512;    // input buffer size

Это определяет bufSize как константу. Любая попытка назначить или изменить bufSize выдает ошибку.

Здесь мы не можем изменить значение объекта const после того, как мы его создадим, он должен быть обязательно объявлен и инициализирован. В противном случае компилятор выдает ошибку.

const int i = get_size();  // ok: initialized at run time
const int j = 42;          // ok: initialized at compile time
const int k;               // error: k is uninitialized const
int i = 42;
const int ci = i;    	   // ok: the value in i is copied into ci 

Область действия переменной

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

#include <iostream>	
int main()	
{	
    int sum = 0;	
    // sum values from 1 through 10 inclusive	
    for (int val = 1; val <= 10; ++val)	
        sum += val;  // equivalent to sum = sum + val	
    cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
    return 0;	
}	 

Эта программа определяет 3 имени, а именно, main, sum и val. Он использует имя пространства имен std вместе с двумя другими именами из этого пространства имен — cout и endl.

  • Имя функции «main» определено вне фигурных скобок. Имя функции main — как и большинство других имен, определенных вне функции — имеет глобальную область видимости. Это означает, что после объявления имена, которые находятся в глобальной области видимости , доступны по всей программе.
  • Переменная sum определяется в области видимости блока, который является телом основной функции. Доступ к нему можно получить с точки его объявления и по всему основному телу основной функции. Однако не за его пределами. Это означает, что переменная сумма имеет область видимости блока .
  • Переменная val определяется в области действия «for Statement». Его можно легко использовать в этом утверждении, но не в другом месте основной функции. Он имеет локальный охват .

Вложенная область

Область действия может содержать другие области. Содержащаяся (или вложенная) область действия называется внутренней областью действия. Содержащая область является внешней областью.

#include <iostream>	
using namespace std;	
// Program for illustration purposes only: It is bad style for a function	
// to use a global variable and also define a local variable with the same name	
int reused = 42;  // reused has global scope	
int main()	
{	
    int unique = 0; // unique has block scope	
    // output #1: uses global reused; prints 42 0	
    cout << reused << " " << unique << endl;	
    int reused = 0; // new, local object named reused hides global reused	
    // output #2: uses local reused; prints 0 0	
    cout << reused << " " << unique << endl;	
    // output #3: explicitly requests the global reused; prints 42 0	
    cout << ::reused << " " << unique << endl;	
    return 0;	
}	 

Выход № 1 появляется перед локальным определением повторно. Таким образом, этот вывод

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

42 0

Выход № 2 происходит после локального определения повторного использования. Это сейчас в сфере. Следовательно, этот второй оператор вывода просто использует локальный объект с именем reused, а не глобальный, и выводит

0 0

Выход № 3 переопределяет правила области видимости по умолчанию, используя оператор области действия. Глобальная область не имеет имени. Таким образом, когда оператор области видимости (: ? имеет пустую левую часть. Он интерпретирует его как запрос на выбор имени в правой части глобальной области видимости. Таким образом, выражение использует глобальное повторное использование и выводит

42 0

Преобразование типов переменных

Переменная одного типа может быть преобразована в другой. Он известен как «Преобразование типов». Давайте посмотрим правила для преобразования различных типов переменных:

Присвоение non-bool переменной bool дает false, если значение равно 0, и true в противном случае.

bool b = 42;            // b is true

Присвоение bool одному из других арифметических типов дает 1, если bool равен true, и 0, если bool равен false.

bool b = true;
int i = b;              // i has value 1

Присвоение значения с плавающей запятой переменной типа int приводит к усечению значения. Сохраненное значение — это часть перед десятичной точкой.

int i = 3.14;               // i has value 3

Присвоение значения int переменной типа float приводит к тому, что дробная часть становится равной нулю. Точность обычно теряется, если целое число имеет больше битов, чем может вместить плавающая переменная.

Int i=3;
double pi = i;          // pi has value 3.0

Если мы попытаемся присвоить значение вне диапазона переменной беззнакового типа, результатом будет остаток значения% (по модулю)

Например, 8-битный тип без знака может содержать значения от 0 до 255 включительно. Присвоение значения за пределами этого диапазона приведет к тому, что компилятор назначит остаток от этого значения по модулю 256. Следовательно, по логике выше, присваивание –1 8-битному знаку без знака дает этому объекту значение 255.

unsigned char c = -1;   // assuming 8-bit chars, c has value 255

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

signed char c2 = 256;   // assuming 8-bit chars, the value of c2 is undefined

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

int i = 42;
if (i) // condition will evaluate as true
i = 0; 

Если это значение = 0, то условие ложно; все другие (ненулевые) значения дают истину. По той же концепции, когда мы используем bool в арифметическом выражении, его значение всегда преобразуется в 0 или 1. В результате, использование bool в арифметическом выражении обычно почти наверняка неверно.

Внимание: не смешивайте подписанные и неподписанные типы

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

Например, в арифметическом выражении типа

x* y

Если x равен -1, а y равен 1, и если оба x и y являются целыми числами, то значение, как и ожидалось, равно -1.

Если x — это int, а y — без знака, то значение этого выражения зависит от того, сколько битов у целого на компиляторе. На нашей машине это выражение выдает 4294967295.

Зарегистрировать переменные

Переменные регистров доступны быстрее по сравнению с переменными памяти. Таким образом, переменные, которые часто используются в программе на C ++, могут быть помещены в регистры с помощью ключевого слова register . Ключевое слово register указывает компилятору хранить данную переменную в регистре. Выбор компилятора — поместить его в реестр или нет. Как правило, сами компиляторы выполняют различные оптимизации, которые включают внесение некоторых переменных в регистр. Нет ограничений на количество переменных регистра в программе на C ++. Но компилятор может не хранить переменную в регистре. Это связано с тем, что регистровая память очень ограничена и чаще всего используется ОС.

Определять:

register int i;

Комментарии

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

  • Однострочные комментарии — это те, которые начинаются с // и продолжаются до конца строки. Если последний символ в строке комментария — \, тогда комментарий будет продолжен на следующей строке.
  • Многострочные комментарии начинаются с / * и заканчиваются * /.
/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

Побег последовательности

Некоторые символы, такие как символы возврата и управляющие символы, не имеют видимого изображения. Такие символы известны как непечатные символы. Другие символы (одинарные и двойные кавычки, знак вопроса и обратная косая черта) имеют особое значение во многих языках программирования.

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

Язык программирования C ++ определяет несколько escape-последовательностей:

Что оно делает?

символ

Новая линия

\ п

Вертикальная вкладка

\ v

бэкслэш

\\

Возврат каретки

Горизонтальная вкладка

\ т

возврат на одну позицию

\ б

Вопросительный знак

\?

Под.стр

\ е

Оповещение

\ а

Двойная цитата

Одинарные цитаты

Мы используем escape-последовательность, как если бы это был один символ:

cout << '\n';        // prints a newline
cout << "\tguru99!\n";   // prints a tab followed by "guru99!" and a newline 

Мы также можем написать обобщенные escape-последовательности \ x, за которыми следуют одна или несколько шестнадцатеричных цифр. Или мы используем \, за которым следуют одна, или две, или три восьмеричные цифры. Обобщенная escape-последовательность представляет собой числовое значение символа. Некоторые примеры (предполагая набор символов Latin-1):

\7 (bell)    \12 (newline)      \40 (blank)
\0 (null)    \115 ('M')         \x4d ('M') 

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

cout << "Hi \x4dO\115!\n";  // prints Hi MOM! followed by a newline
cout << '\115' << '\n';     // prints M followed by a newline 

Учиться C ++ и делать игры