Написанное в данной статье верно для копилятора gcc.
Структура программы:
Необходимый набор в шаблоне прогораммы;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <'...'> //заголовок Using namespace '...';//пространство имён int main() //обязательные функция main { '...' //тело программы return 0; }// конец тела программы |
Комментарии в С++:
/* — начало комментария
*/— конец комментария
//— однострочный комментарий
Пример:
|
1 2 3 |
/*данная надпись это комментарий*/ //данная надпись это комментарий |
Заголовок программы:
#include <‘имя заголовка’>
(в поздних версиях компилятора #include<‘имя заголовочного файла .h’> устаревший стиль)
Пример:
|
1 |
#include<iostream>//включает в программу заголовок iostream |
Пространство имени (|):
using namespace ‘название пространства имён’;
Пример:
|
1 |
using namespace std; //Эта инструкция помещает std в глобальное пространство имён |
Макросы:
#define ‘имя макроса’ ‘значение макроса’
Пример:
|
1 |
#define SIZE 100 //Связывает идентификатор SIZE со значением 100 |
Таблица типов:
| Тип <code>[attr width="100px"] | Размер байт |
Описание | Диапазон |
|---|---|---|---|
| Char signed char |
1 | Символьный тип. Содержит один символ или строку символов. Каждый символ представляется одним байтом. Компилятор различет как отдельные следующие типы: char, singned char и unsigned char | От 127 до 128 |
| unsigned char | 1 | Символьный тип. Каждый символ пердставляется одним байтом. | От 0 до 255 |
| short signed short |
2 | Целый тип. Сокращённое обозначение типа short int. Длина этого типа вне зависимости от используемого компилятора больше или равно длине типа char и меньше или равно типа int. | От -32768 до 32767 |
| unsigned short | 2 | Без знаковый целый тип. | От 0 до 65535 |
| int signed int |
4 | Целый тип. Длина этого типа вне зависимости от используемого компилятора всегда больше или равна длине значения типа short int. | От -2147483648 до 2147483647 |
| unsigned int | 4 | Без знаковый целый тип. | От 0 до 4294967259 |
| long signed long |
4 | Целый тип сокращенное обозначение типа long int. | От -2147483648 до 2147483647 |
| unsigned long | 4 | Без знаковый целый тип. | От 0 до 4294967259 |
| float | 4 | Тип данных с плавающей точкой. | От 3.4E-38 до 3.4+38 |
| double | 8 | Тип данных с плавающей точкой двойной точности. Длина типа double вне зависимости от используемого компилятора всегда больше или равна длине float и короче или равна длине типа long double. | От 1.7E-308 до 1.7+308 |
| long double | 8 | Тип данный с плавающей точкой двойной точности, длина которой равна длине значения типа double. Типы double и long double имеют одинаковое представление но компилятор трактует из как различные типы. | От 1.7E-308 до 1.7+308 |
| _intn | n/8 | Целый тип, размер в битах которого определяется значением n; и может быть равным 8, 16, 32 и 64 битам. |
Инициализация типов:
‘имя типа’ ‘имя переменной’;
Инициализировать переменную можно в любом месте.
Пример:
|
1 |
int a;//переменная a инициализирована как тип int; |
Таблица диапазонов:
| Диапазон шестнадцатиричных констант. | Диапазон восьмеричных констант | Тип. |
|---|---|---|
| 0x0-0x7FF | 0-077777 | int |
| 0x8000-0xFFFF | 0100000-0177777 | unsigned int |
| 0x10000-0x7FFFFFFF | 0200000-017777777777 | long |
| 0x80000000-0xFFFFFFFF | 020000000000-037777777777 | unsigneg long |
Консольный ввод и вывод:
#include <iostream>
<<-это оператор вывода.
>>-это оператор ввода.
count <<‘выводимая строка’;
cin >>‘имя переменной’;
Пример:
|
1 2 3 4 5 6 7 8 |
#include<iostream> using namespace std; int main (){ cin>>n>>k;//Вводится переменные n и k в консоли. Count<<'значение перерменной: '<<n;//Выводится строка 'значение переменной: ', а потом данные из переменной n } |
printf(‘строка вывода с кодами типов переменных ‘ ,’ссылки на переменные записанные в той же последовательности’)
scanf(‘коды переменных с разделителями’, ‘ссылки на переменные записанные в той же последовательности’)
Коды типов:
| Код | Значение |
|---|---|
| %d, %i | Десятичное знаковое числo. |
| %o | Восьмеричное без знаковое число. |
| %u | Десятичное без знаковое число. |
| %x, %X | Шестнадцатиричное число. x- нижний регистр букв(abcdef), X- верхний регистр букв(ABCDEF). |
| %f, %F | Числа с плавающей запятой. |
| %e, %E | Числа с плавающей запятой в экспоненциальной форме записи (0.1e+13). e- символ «e» в нижнем регистре, E — символ «E» в верхнем регистре. |
| %g, %G | Числа с плавающей запятой. |
| %a, %A | Число с плавающей запятой в шестнадцатеричном виде. |
| %c | Вывод символа с кодом. |
| %s | Вывод строки с нулевым заершающим байтом. |
| %S | Тоже, что и %s с модицикатором длины l. |
| %p | Вывод указателя. |
| %n | Запись по указателю. |
| %% | Символ для вывода знака процента. |
Спецификаторы для %d, %i, %o, %u, %x, %X
| Спецификатор | Тип |
|---|---|
| отсутсвует | int или unsigneg int |
| l | long int или unsigned long int |
| hh | Аргумент int или unsigned int. Приведение к типу signed char или unsigned char. |
| h | Аргумент int или unsigned int. Приведение к типу short int или unsigned short int. |
| ll | long long int или unsigned long long int |
| j | intmax_t или uintmax_t |
| z | size_t |
| t | ptrdiff_t |
| L | __int64 или unsigned __int64 |
Унарные опеарации:
| Операция | Описание |
|---|---|
| — | арифметическое отрицание. |
| ~ | побитовое логическое отрицание. |
| ! | логическое отрицание. |
| * | разадресация (косвенная адресация). |
| #171;amp;« | вычисление адреса. |
| + | унарный плюс. |
| ++ | увеличение. |
| — | уменьшение. |
| sizeof | размер |
Таблица операций:
| Знак операции | Операция | Группа операций |
|---|---|---|
| * | Умножение | Мультипликативные<code>[attr rowspan="3"] |
| / | Деление | |
| % | Остаток от деления | |
| + | Сложение | Аддитивные<code><code>[attr rowspan="2"] |
| — | Вычитание | |
| #171;lt;<« | Сдвиг в лево | Операция сдвига <code>[attr rowspan="2"] |
| #171;gt;>« | Сдвиг в право | |
| #171;lt;« | Меньше | Операция отношения <code>[attr rowspan="6"] |
| #171;gt;« | Больше | |
| #171;lt;=« | Меньше или равно | |
| #171;gt;=« | Больше или равно | |
| == | Равно | |
| != | Не равно | |
| #171;amp;« | Поразрядное И | Поразрядные операции <code>[attr rowspan="3"] |
| | | Поразрядное ИЛИ | |
| ^ | Поразрядное исключающее ИЛИ | |
| #171;amp;&« | Логическое И | Логические операции <code>[attr rowspan="2"] |
| || | Логическое ИЛИ | |
| , | Последовательное вычисление | Последовательные вычисления |
| = | Присваивание | Операции присваивания <code>[attr rowspan="11"] |
| *= | Умножение с присваиванием | |
| /= | Деление с присваиваниеме | |
| %= | Остаток от деления с присваиванием | |
| -= | Вычитание с присваиванием | |
| += | Сложение с присваиванием | |
| #171;lt;<=« | Сдвиг в лево с присваиванием | |
| #171;gt;>=« | Сдвиг в право с присваиванием | |
| #171;amp;=« | Поразрядное И с присваиванием | |
| |= | Поразрядное ИЛИ с присваиванием | |
| ^= | Поразрядное исключающее ИЛИ с присваиванием |
Таблица управляющих последовательностей:
| Управляющая последовательность | Наименования | Шеснадцатеричная замена |
|---|---|---|
| \a | Звонок | 007 |
| \b | Возврат на шаг | 008 |
| \t | Горизонтальная табуляция | 009 |
| \n | Переход на новую строку | 00A |
| \v | Вертикальная табуляция | 00B |
| \r | Возврат каретки | 00C |
| \f | Перевод формата | 00D |
| \» | Кавычки | 022 |
| \' | Апостроф | 027 |
| \0 | Ноль-символ | 000 |
| #171;\\#187; | Обратная дробная черта | 05C |
| \ddd | Символ набора кодов ПЭВМ в восьмеричном представлении. | |
| \xddd | Символ набота кодов ПЭВМ в шестнадцатеричном представлении. |
Функции:
Описание функции:
‘тип данных которые возвращает функция’ ‘имя функции’ (‘переменные которые использует функция’)
{
операторы;
}
Адресация к функциям:
‘имя функции’(‘переменные которые использует функция’);
Пример:
|
1 2 3 4 5 6 7 8 9 |
void init(); //функция init не возвращает переменную оно присваивает глобальной переменной i значение 0 { i=0; } init();//вызов функции. |
Операторы ветвления:
Оператор «if», «else»:
if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор,
если ложно, то программа выполняется дальше.*/
‘оператор’;
if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор1,
если ложно, то выполняется оператор2.*/
‘оператор1’;
else
‘оператор2’;
Пример:
|
1 2 3 4 5 6 7 |
if (n!=100) //проверяется условие 'n не равно 100' cout<<"n не равно 100 \n";//если условие верно, то выводится строка "n не равно 100" else cout<<"n равно 100 \n"; //если условие не верно, то выводится строка "n равно 100" |
Оператор «?»:
‘логическое выражение’ ? ‘выражение1’:‘выражение2’;
Если значение логического выражения истинно, то вычисляется выражение1, в противном случае вычисляется выражение2.
Пример:
|
1 |
count << n == 2 ? "да" : "нет"; //если n=2 то в консоль выводится "да" в противном случае "нет" |
Оператор «switch»:
switch(‘выражение целого типа’)
{
case ‘значение1’ :
‘последовательность операторов1’
break;
case ‘значение2’ :
‘последовательность операторов2’
break;
…
case ‘значение n’:
‘последовательность операторовn’
break;
default
/*ветку default можно не описывать. Она выполняется, если ни один из вышестоящего выражения не удовлетворено*/
‘последовательность операторовn+1’;
}
Пример:
|
1 2 3 4 5 6 7 8 9 10 11 |
switch(n) { case 1: cout<<"один";//если n=1 то выводится строка "один" case 2: cout<<"два";//если n=2 то выводится строка "два" default : cout<<"не один и не два";//если n равно другому числу, то выводится строка "не один и не два" } |
Операторы цикла:
Оператор «while»:
while (‘логическое выражение’) //цикл с проверкой условия на верху
‘оператор’;
Пример:
|
1 |
while (n<100) ++n; //Пока n меньше 100 прибавлять 1. |
Оператор «do..while»:
do
оператор;
while (‘логическое выражение’); //Цикл условия проверки внизу
Пример:
|
1 2 3 4 5 |
do n--; while('n>0'); //Пока n больше нуля повторять процедуру |
Оператор «for»:
for(‘инициализация’; ‘проверка’; ‘новое_значение’)
‘оператор’;
Пример:
|
1 |
for(i=0; g[i]=0; i++);//В начале i=0 и пока g[i]!=0, к i прибавляется 1 и выполняется пустой оператор ; |
Оператор «;»:
; /*Пустой оператор применяется когда синтаксис языка требует присутствие оператора, однако по логике программы оператор должен отсутствовать.*/
Пример:
|
1 |
for(i=0; g[i]=0; i++);//В начале i=0 и пока g[i]!=0, к i прибавляется 1 (оператор после оператора for() не нужен) |
Массивы:
Описание массивов:
‘тип данных’ ‘имя массива’ [‘размер массива’];
Адресация к массивам:
‘имя массива’ [‘значение индекса’];
Пример:
|
1 2 3 |
int mas[255];//Описывается массив целых чисел mas размер его 255 элементов (первый элемент 0) mas[5]=0; //6 элементу массива массива mas присваивается значение 0 |
Константы:
‘тип’ ‘имя константы’ = ‘значение константы’; //Описание константы
Пример:
|
1 2 3 |
int a=100, c=50; //Описываются две константы a,C. a равна 100, а c равна 50 |
Классы:
Объявление классов:
class ‘имя класса’{
‘закрытые функции и переменные класса’;
public:
‘имя класса’(‘список параметров’); //Конструктор
~‘имя класса’(); //Деструктор
‘открытые функции и переменные класса’;
} ‘список объектов’;
Определение функции-члена:
‘тип возращаемого значения’ ‘имя класса’::‘имя функции’ (‘список параметров’)
{
‘тело функции’;
}
Определение конструктора:
‘имя класса’::‘имя класса’ (‘список параметров’)
{
‘тело конструктора’;
}
Определение деструктора
‘имя класса’::~‘имя класса’ (‘список параметров’)
{
‘тело деструктора’;
}
Объявление класса:
‘имя класса’ ‘имя объекта’(‘список параметров’);
Обращение к членам класса:
‘имя класса’.‘член класса’;
‘имя класса’->‘член класса’;
Пример:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
class myclass{ //Класс с именем myclass int a; //Закрытый элемент класса public: myclass(int b); //Конструктор void set_a (int num);//Отрытые элементы класса }; void myclass::set_a(int num) //определение функции-члена set_a класса myclass { a = num; } void myclass::myclass(int b) //определение конструктора класса myclass { a = b; } myclass clas1(4),clas2(2); //Объявление классов clas1, clas2 типа класса myclass clas1.set_a(5); // Обращение к члену класса |
Структуры:
Объявление структур:
struct ‘имя структуры’{
‘имя структуры’(‘список параметров’);//Конструктор
~‘имя структуры’(); //Деструктор
‘открытые функции и переменные структуры’;
private:
‘закрытые функции и переменные структуры’;
} ‘список объектов’;
Определение функции-члена, конструктора, деструктора, объявление структуры, обращение к членам структуры такие же как у класса.
Встраиваемые функции:
inline ‘тип возращаемого значения’ ‘имя функции’(‘список параметров’)
{
‘тело функции’;
}
Пример:
|
1 2 3 4 5 6 7 |
inline int even(int x) { return !(x%2); } |
Встраиваемые функции в объявлении класса:
Объявление функции:
class …
…
public:
‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’){‘тело функции’;}
…
};
Пример:
|
1 2 3 4 5 6 7 8 9 |
class samp { int i,j; public: int devisible() {return !(i%j);} //Встраиваемая функция }; |
Дружеские функции:
class ‘имя класса’{
…
public:
friend ‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’);
};
‘тип возвращаемого значения’ ‘имя функции’ (‘список параметров’);
{
‘тело функции’
}
Пример:
|
1 2 3 4 5 6 7 |
class myclass{ public: friend int istfactor (myclass ob); }; |
1. Точка с запятой после using namespace std не нужна;
2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.
А так, неплохой краткий справочник по синтаксису=)
Здравствуйте.
Большое спасибо, что вы захотели сделать мой справочник лучше, это мне очень льстит.
>1. Точка с запятой после using namespace std не нужна;
К сожалению многие компиляторы с вами не согласяться. Возможно вы имели ввиду конструкцию:
namespace std
{
…
}
Тогда да, точка с зяпятой после неё дейтсвительно не нужна.
Или можете сказать название компилятора или IDE, где это работает?
>2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
Да, косяк поправил.
>3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
посмотрел на Courier, стало скучнее. 🙂 Лан, пусть дети привыкают.
4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
>> поменял на точку и стрелочку.
>> 5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.
Убрал слова «в поздних версиях компилятора». В данное время это вызывает смущение у людей.
То, что он прешёл из C оно не отменяет «устаревший стиль», это и было «в поздних версиях компилятора». Объясню, я хотел этим сказать себе, что данный стиль объявления библиотек использовать не стоит, так как он пришёл из «прошлого» и сейчас есть механизмы намного лучше.
>А так, неплохой краткий справочник по синтаксису=)
И ещё раз спасибо, что обратили внимания на данную статью.
Ещё одна проблема:
n=2 ? str=’да’ : str=’нет’;
некорректно.
Используй следующее:
str = (n == 2 ? «да» : «нет»);
Обрати внимание, что строки-константы заключаются в двойные кавычки.
Весь тернарный оператор возвращает либо часть между символами «?» и «:», либо часть после символа «:». Возвращать результат операции присваивания является избыточным, как в твоём примере.
Сорре, что так много написал, кратко просмотрел, просто хотелось, чтобы справочник был лучше, он же вылез одним из первых в google-поисковике, а значит меньше ошибок должно быть, особенно таких критических.
Я очень люблю фидбеки. Так что извинятся вообще не стоит. 🙂
здесь был вопрос в понятности этого написания для не подготовленного человека. 🙂
здесь str = (n == 2 ? «да» : «нет»); сильно много равно рядом, и глазу не за что зацепиться 🙂 решил разбавить написал:
count << n == 2 ? "да" : "нет";
Привет мне нужна помощь с программой C ++
круто продолжай в том же духе
здравствуйте а есть подобный справочник в екселе? я с радостью бы скачал
Оператор «count» вывода написан правильно?