Лекции по C++ для начинающих Сергей Талипов

ТЕМА 1 – ТИПЫ ДАННЫХ. ВЫРАЖЕНИЯ. ОПЕРАТОРЫ

1) ДЕТАЛИ ЯЗЫКА


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


Необходимо помнить, что язык C++ различает прописные и строчные буквы. Язык C++, как говорят, является чувствительным к регистру. Имена «Summa», «SUMMA» и «summa» определяют три различных имени переменных. В именах переменных, как уже говорилось, можно использовать символ подчеркивания. Однако обычно с символа подчеркивания начинаются имена системных зарезервированных переменных и констант. Поэтому старайтесь не использовать имен, начинающихся с символа подчеркивания, и вам удастся избежать возможных конфликтов и взаимопересечений с множеством библиотечных имен.


Комментарий – часть программы, которая игнорируется компилятором и служит для удобочитаемости исходного текста программы. В процессе компиляции комментарий заменяется пробелом: следовательно комментарий может располагаться в любом месте программы, где допускается использование пробела. Комментарием в языке C++ является любая последовательность символов, заключенная между парами символов /* и */. Для однострочного комментария можно использовать символы //



2) СТРУКТУРА ФАЙЛА, С КОТОРОГО НАЧИНАЕТСЯ ПРОГРАММА


В языке СИ любая программа состоит из одной или более функции, которые нужно выполнить. Выполнение любой программы начинается с функции main. Далее в main мы пишем текст программы и вызываем другие функции. Таким образом, структура программы имеет вид:


int main() {

}


В самом простом случае функция main не имеет аргументов, поэтому в скобках ничего не содержится. Для работы программы, обеспечивающей ввод и вывод информации, перед функцией main необходимо поместить строку: #include


#include

int main() {

printf("Теперь можно идти устраиваться в Facebook!");

}


3) ТИПЫ ДАННЫХ В С++





ОБЩИЕ ТИПЫ ДАННЫХ В С++ И JAVA



ОСНОВНЫЕ ТИПЫ ДАННЫХ В С++ (С АНАЛОГАМИ В JAVA)



Все переменные должны быть объявлены до их использования. Общая форма объявления имеет вид: type name;

float A; int В = 6; char С;



4) ВЫРАЖЕНИЯ


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


АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

+ сложение

– вычитание

* умножение

/ деление

% деление по модулю

++ увеличение на единицу

–– уменьшение на единицу


Результатом деления по модулю является остаток от деления. Например, если b=5, с=2, то при выполнении операции а = b % с, переменная а получит значение 1.

Унарные операции ++ и – могут следовать перед или после операнда.

Три оператора х= х + 1; ++х; х++; имеют один результат, но имеют различие при использовании.


/* Пример старого способа ввода/вывода через "" для С */

#include

int main() {

printf("Я очень люблю C++!\n");

int a;

printf("Введите Ваше любимое число: ");

scanf("%d", &a);

printf("Ваше число * 2 = %d\n", a * 2);

}


/* Пример нового способа ввода/вывода через "" для С++ */

#include

using namespace std;

int main() {

cout << "Я очень люблю C++!\n";

int a;

cout << "Введите Ваше любимое число: ";

cin >> a;

cout << "Ваше число * 2 = " << a * 2 << endl;

}


/* Пример нового способа ввода/вывода через "" без namespace для С++ */

#include

int main() {

std::cout << "Я очень люблю C++!\n";

int a;

std::cout << "Введите Ваше любимое число: ";

std::cin >> a;

std::cout << "Ваше число * 2 = " << a * 2 << std::endl;

}


Например (EX1):


#include

int main() {

int x, y;

x = 5;

y = 60;

x++;

++y;

printf("x = %d y = %d \n", x, y);

printf("x = %d y = %d \n", x++, ++y);

}

Результат:

"x = 6 y = 61"

"x = 6 y = 62"


При x++ значение переменной х сначала используется в выражении, и лишь затем переменная увеличивается на единицу;

При ++х значение переменной х сначала увеличивается на единицу, а затем используется в выражении.


ЛОГИЧЕСКИЕ ОПЕРАЦИИ

< меньше

<= меньше либо равно

== равно

>= больше либо равно

> больше

!= не равно


МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ


Перед аргументом и функцией указан допустимый тип (при программировании эта запись типа опускается). Для работы с математическими функциями необходимо перед функцией main поместить строку: #include


#include

#include


using namespace std;


int main() {

double x;

cout << "Введите число: ";

cin >> x;

cout << "sin(x)=" << sin(x) << endl;

cout << "sqrt(x)=" << sqrt(x) << endl;

}




ШПАРГАЛКА ПО ВВОДУ-ВЫВОДУ



#include

#include


using namespace std;


int main(int argc, char** argv) {

int number1;

float number2;


/* Стиль С из */

printf("Введите целое и вещественное число через пробел: ");

scanf("\n%d %f", &number1, &number2);

printf("number1 = %d, number2 = %f \n", number1, number2);

puts("Спасибо!");

/* Стиль С++ из */

cout << "Введите еще число: ";

cin >> number1;

cout << "Вы ввели число " << number1 << endl;


/* Создание задержки на экране. Стиль С++ из */

cout << "\nНажмите Enter для завершения программы…\n";

// Очистим ввод с клавиатуры и будем ожидать нажатие клавиши "Enter"

cin.ignore(); cin.get();


return 0;

}

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


5) ОПЕРАТОР ПРИСВАИВАНИЯ


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


Например (EX1):

#include


int main() {

int C;


if ((C = 5 + 3) > 0) {

printf("Число C больше нуля!");

}

}



Сначала вычисляется величина 5 + 3, которая присваивается переменной С, затем сравнивается ее значение с нулем.


Существует также возможность многократного присваивания.

Например: int x = y = z = 5 * 3


Такое присваивание выполняется справа налево. Сначала вычисляется 5 * 3, затем это значение присваивается z, потом у, и лишь затем х.


Есть дополнительные операторы присваивания: +=, -=, *= и %=.


Вместо n = n + 2 можно использовать n += 2. += это аддитивная операция, в результате выполнения которой величина, стоящая справа, прибавляется к значению переменной, стоящей слева.


Аналогично:

n -= 2 это n = n – 2;

n *= 2 это n = n * 2;

n /= 2 это n = n / 2;

n %= 2 это n = n % 2.


Эти операции имеют тот же приоритет, что и операция присваивания =, то есть ниже, чем приоритет арифметических операций.


6) ОПЕРАТОР ВЫВОДА


Вначале рассмотрим функцию, определяющую форматный вывод:

printf("управляющая строка", аргумент1, аргумент2, …);


Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата, определяющие, как выводить аргументы. Команда формата начинается с символа %, за которым следует код формата.


ОСНОВНЫЕ КОДЫ КОМАНДЫ ФОРМАТА:

1. d – значением аргумента является десятичное целое число;

2. с – значением аргумента является символ;

3. s – значением аргумента является строка символов:

4. f – значением аргумента является вещественное число с плавающей точкой;

5. р – значением аргумента является указатель (адрес).


Функция printf использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Например, в результате работы программы получена переменная i, имеющая значение 100, и переменная j, имеющая значение 25. Обе переменные целого типа. Для вывода этих переменных на экран в виде

int i = 100;

int j = 25;

необходимо применить функцию

printf("i = %d j = %d", i , j);


Как было описано выше, в кавычках задается формат вывода, перед знаком % записываются символы, которые будут непосредственно выданы на экран. После знака % применена спецификация d, т.к. переменные i и j имеют целый тип. Сами i и j приведены через запятую в списке аргументов.


Если после знака % стоит цифра, то она задает поле, в котором будет выполнен вывод числа. Приведем несколько функций printf, которые будут обеспечивать вывод одной и той же переменной S целого типа, имеющей значение 336.


Вызов функции printf("%2d", S);

Вывод: 336


В этом примере ширина поля (она равна двум) меньше, чем число цифр в числе 336, поэтому поле автоматически расширяется до необходимого размера.


Вызов функции printf("%6d", S)

Вывод: _ _ _336 (6 позиций)



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


Вызов функции printf("%-6d", S);

Вывод: 336_ _ _ (6 позиций)


Знак «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.


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


%6f – печать числа с плавающей точкой в поле из шести позиции;

%.2f – печать числа с плавающей точкой с двумя цифрами после десятичной точки;