Академический Документы
Профессиональный Документы
Культура Документы
«ЛитРес: Самиздат»
2020
Талипов С. Н.
Лекции по C++ для начинающих / С. Н. Талипов — «ЛитРес:
Самиздат», 2020
Лекции по Си и C++ для начинающих. Рассмотрены основные темы и
простейшие примеры, работающие на современных компиляторах.
Содержание
ТЕМА 1 – ТИПЫ ДАННЫХ. ВЫРАЖЕНИЯ. ОПЕРАТОРЫ 5
1) ДЕТАЛИ ЯЗЫКА 5
2) СТРУКТУРА ФАЙЛА, С КОТОРОГО НАЧИНАЕТСЯ 6
ПРОГРАММА
3) ТИПЫ ДАННЫХ В С++ 7
4) ВЫРАЖЕНИЯ 9
5) ОПЕРАТОР ПРИСВАИВАНИЯ 13
6) ОПЕРАТОР ВЫВОДА 14
7) ОПЕРАТОРЫ ВВОДА 17
ТЕМА 2 – ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ И 19
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
1) ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ 19
АЛГОРИТМОВ
2) ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ 24
Конец ознакомительного фрагмента. 30
4
С. Н. Талипов. «Лекции по C++ для начинающих»
Сергей Талипов
Лекции по C++ для начинающих
ТЕМА 1 – ТИПЫ ДАННЫХ.
ВЫРАЖЕНИЯ. ОПЕРАТОРЫ
1) ДЕТАЛИ ЯЗЫКА
Необходимо помнить, что язык C++ различает прописные и строчные буквы. Язык C+
+, как говорят, является чувствительным к регистру. Имена «Summa», «SUMMA» и «summa»
определяют три различных имени переменных. В именах переменных, как уже говорилось,
можно использовать символ подчеркивания. Однако обычно с символа подчеркивания начи-
наются имена системных зарезервированных переменных и констант. Поэтому старайтесь не
использовать имен, начинающихся с символа подчеркивания, и вам удастся избежать возмож-
ных конфликтов и взаимопересечений с множеством библиотечных имен.
5
С. Н. Талипов. «Лекции по C++ для начинающих»
В языке СИ любая программа состоит из одной или более функции, которые нужно
выполнить. Выполнение любой программы начинается с функции main. Далее в main мы
пишем текст программы и вызываем другие функции. Таким образом, структура программы
имеет вид:
int main() {
…
}
В самом простом случае функция main не имеет аргументов, поэтому в скобках ничего
не содержится. Для работы программы, обеспечивающей ввод и вывод информации, перед
функцией main необходимо поместить строку: #include <stdio.h>
#include <stdio.h>
int main() {
printf("Теперь можно идти устраиваться в Facebook!");
}
6
С. Н. Талипов. «Лекции по C++ для начинающих»
7
С. Н. Талипов. «Лекции по C++ для начинающих»
8
С. Н. Талипов. «Лекции по C++ для начинающих»
4) ВЫРАЖЕНИЯ
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
+ сложение
– вычитание
* умножение
/ деление
% деление по модулю
++ увеличение на единицу
–– уменьшение на единицу
Результатом деления по модулю является остаток от деления. Например, если b=5, с=2,
то при выполнении операции а = b % с, переменная а получит значение 1.
Унарные операции ++ и – могут следовать перед или после операнда.
Три оператора х= х + 1; ++х; х++; имеют один результат, но имеют различие при исполь-
зовании.
/* Пример нового способа ввода/вывода через "<iostream>" без namespace для С++ */
#include <iostream>
int main() {
std::cout << "Я очень люблю C++!\n";
int a;
9
С. Н. Талипов. «Лекции по C++ для начинающих»
Например (EX1):
#include <stdio.h>
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++ значение переменной х сначала используется в выражении, и лишь затем пере-
менная увеличивается на единицу;
При ++х значение переменной х сначала увеличивается на единицу, а затем используется
в выражении.
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
< меньше
<= меньше либо равно
== равно
>= больше либо равно
> больше
!= не равно
МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ
10
С. Н. Талипов. «Лекции по C++ для начинающих»
#include <iostream>
#include <math.h>
int main() {
double x;
cout << "Введите число: ";
cin >> x;
cout << "sin(x)=" << sin(x) << endl;
cout << "sqrt(x)=" << sqrt(x) << endl;
}
ШПАРГАЛКА ПО ВВОДУ-ВЫВОДУ
#include <stdio.h>
#include <iostream>
/* Стиль С из <stdio.h> */
printf("Введите целое и вещественное число через пробел: ");
scanf("\n%d %f", &number1, &number2);
printf("number1 = %d, number2 = %f \n", number1, number2);
puts("Спасибо!");
/* Стиль С++ из <iostream> */
cout << "Введите еще число: ";
cin >> number1;
cout << "Вы ввели число " << number1 << endl;
return 0;
}
11
С. Н. Талипов. «Лекции по C++ для начинающих»
12
С. Н. Талипов. «Лекции по C++ для начинающих»
5) ОПЕРАТОР ПРИСВАИВАНИЯ
Например (EX1):
#include <stdio.h>
int main() {
int C;
if ((C = 5 + 3) > 0) {
printf("Число C больше нуля!");
}
}
Аналогично:
n -= 2 это n = n – 2;
n *= 2 это n = n * 2;
n /= 2 это n = n / 2;
n %= 2 это n = n % 2.
Эти операции имеют тот же приоритет, что и операция присваивания =, то есть ниже,
чем приоритет арифметических операций.
13
С. Н. Талипов. «Лекции по C++ для начинающих»
6) ОПЕРАТОР ВЫВОДА
Функция 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.
В этом примере ширина поля (она равна двум) меньше, чем число цифр в числе 336,
поэтому поле автоматически расширяется до необходимого размера.
То есть, в результате работы функции число сдвинуто к правому краю поля, а лишние
позиции перед числом заполнены пробелами.
14
С. Н. Талипов. «Лекции по C++ для начинающих»
Знак «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.
Примеры:
float а = 3,687;
float b = 10,17;
В первом числе третья цифра после десятичной точки отброшена с округлением, т.к.
указан формат числа с двумя цифрами после десятичной точки.
Как было отмечено выше, в управляющей строке могут содержаться управляющие сим-
вольные константы. Среди управляющих символьных констант наиболее часто используются
следующие:
15
С. Н. Талипов. «Лекции по C++ для начинающих»
Сначала выполнится горизонтальная табуляция (\t), т.е. курсор сместится от края экрана
на 8 позиций, затем на экран будет выведено слово «ЭВМ» после этого курсор переместится
в начало следующей строки (\n) затем будет выведено целое значение i по формату d, и окон-
чательно курсор перейдет в начало новой строки (\n). Таким образом, результат работы этой
функции на экране будет иметь вид:
_ _ _ _ _ _ _ _ ЭВМ
50
16
С. Н. Талипов. «Лекции по C++ для начинающих»
7) ОПЕРАТОРЫ ВВОДА
Для форматного ввода данных используется функция:
scanf("управляющая строка", аргумент1, аргумент2, …);
В управляющей строке спецификации трех типов могут быть отделены друг от друга
различными знаками, в том числе и пробелом. Следовательно, при занесении значений пере-
менных необходимо использовать указанный разделитель. Если функции не отделены одна от
другой никакими значениями, то значения переменных заносятся через пробел.
/*
* Пример решения квадратного уравнения
*/
#include <iostream>
#include <cmath>
int main() {
double a, b, c, x1, x2;
cout << "Введите значение a: "; cin >> a;
cout << "Введите значение b: "; cin >> b;
cout << "Введите значение c: "; cin >> c;
if ((b * b – 4 * a * c) >= 0) {
x1 = (-b + sqrt(b * b – 4 * a * c)) / (2 * a);
x2 = (-b – sqrt(b * b – 4 * a * c)) / (2 * a);
cout << "Первый корень = " << x1 << endl;
cout << "Второй корень = " << x2 << endl;
} else {
cout << "Нет решения: дискриминант меньше 0";
}
}
ПРИМЕР ЗАДАЧИ (EX2). Чему равна площадь трапеции, если основания равны, а =
6.5, b = 3.9, а высота h = 4.7?
#include <stdio.h>
int main() {
17
С. Н. Талипов. «Лекции по C++ для начинающих»
float a, b, h, s;
printf("Введите значения – a, b, h \n");
scanf("\n%f %f %f", &a, &b, &h);
s = (a + b) * h / 2;
printf("Площадь трапеции");
printf("\ns = %f", s);
}
#include <stdio.h>
#include <math.h>
int main() {
float a, b, x, y, z;
printf("введите исходные данные a, b, x\n");
scanf("%f%f %f", &a, &b, &x);
y = pow(x, 3) + log(pow(x, 2) + 1.2) + sqrt(abs(x – 3.6));
z = exp(a * y) – sin(b * y – 2.37);
printf("x = %7.3f y=%7.3f z=%7.3f", x, y, z);
}
18
С. Н. Талипов. «Лекции по C++ для начинающих»
ТЕМА 2 – ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ И
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
1) ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
ОПЕРАТОР ПЕРЕХОДА
Например:
goto a2;
Например:
а2: к=5;
УСЛОВНЫЙ ОПЕРАТОР
19
С. Н. Талипов. «Лекции по C++ для начинающих»
Например:
if (a > b) {
z=a;
} else {
z=b;
}
В операторе if слово else может отсутствовать. В этом случае, если условие в скобках
принимает истинное значение, выполняется инструкция 1, а если ложное, то инструкция 1
пропускается и управление передается следующему оператору по тексту программы.
Например:
if (num>10) num = 2 * num;
printf("%d\n", num);
Оператор вывода будет выполняться всегда, а оператор присваивания только в том слу-
чае, если условие будет истинным.
Пример (EX1):
#include <stdio.h>
int main() {
int a, b;
Если для выполнения программы ввести числа 5 и 3, то на экране появится строка: "а
больше b". При введении чисел 5 и 5, на экране появится две строки: "а меньше или равно
b" и "а равно b"
Иногда в условном операторе после ключевых слов if или else следует инструкция if,
ее называют вложенной. Слово else всегда относится к ближнему предшествующему ему if.
Также после ключевых слов if и else вместо одной инструкции может быть записано несколько
инструкций, которые должны заключаться в фигурные скобки. В сложных конструкциях,
содержащих много if и else, уместно вложенные if обрамлять фигурными скобками.
#include <stdio.h>
int main() {
20
С. Н. Талипов. «Лекции по C++ для начинающих»
int i;
char ch;
printf("Введите целое число:\n");
scanf("%d", &i);
#include <stdio.h>
#include <math.h>
int main() {
float x, y;
printf("Введите исходное значение х\n");
scanf("%f", &x);
if (x > 0) {
y = log(x);
} else {
y = pow(cos(x), 2);
}
#include <stdio.h>
#include <math.h>
int main() {
float x, y, b;
printf("Введите исходные данные х, b \n");
scanf("%f%f", &x, &b);
if (x < 10) {
y = 1 + b * pow(x, 2);
} else {
21
С. Н. Талипов. «Лекции по C++ для начинающих»
if (x <= 15) {
y = log(x) + b;
} else {
y = sin(b * x);
}
}
ОПЕРАТОР ВЫБОРА
switch (выражение) {
case константа 1:
вариант 1;
break;
…
case константа n:
вариант n;
break;
default:
вариант n+1;
break;
}
#include<stdio.h>
int main() {
char y;
scanf("%c", &y);
switch (y) {
case '1':
printf("Ветвь 1\n");
break;
case '2':
22
С. Н. Талипов. «Лекции по C++ для начинающих»
case '3':
printf("Ветвь 2 или 3\n");
break;
default:
printf("Bетви 1, 2, 3 не работают\n");
}
}
23
С. Н. Талипов. «Лекции по C++ для начинающих»
2) ПРОГРАММИРОВАНИЕ
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
ЦИКЛЫ С ПАРАМЕТРОМ
#include <stdio.h>
int main() {
int i, j = 1, k;
j = i;
printf("\n");
Вывод:
Астана Астана Астана
Укажите число повторений цикла
5
11111
6 12 36 144 720
ПРИМЕР ЗАДАЧИ (EX7). Вычислить n-e число Фибоначчи. Числа Фибоначчи строятся
следующим образом: F(0) = F(1) = 1; F(i + 1) = F(i) + F(i – 1) для i >= 1. Это пример вычислений
по рекуррентным формулам.
#include<stdio.h>
int main() {
int a, b, c, i, n;
#include<stdio.h>
#include<math.h>
int main() {
float x, y, a, h;
int i;
25
С. Н. Талипов. «Лекции по C++ для начинающих»
#include<stdio.h>
#include<math.h>
int main() {
float x, y, z, h;
int i, n;
x = 0;
z = 0;
#include<stdio.h>
#include<math.h>
int main() {
26
С. Н. Талипов. «Лекции по C++ для начинающих»
float x, s, p;
int k, n;
p = 1;
s = 0;
ЦИКЛЫ С УСЛОВИЕМ
Пример (EX11):
#include<stdio.h>
int main() {
int i, s;
i = 1;
while (scanf("%d", &s)) {
printf("Введенное число %d\n", s);
i++;
};
}
27
С. Н. Талипов. «Лекции по C++ для начинающих»
Например (EX12):
#include<stdio.h>
int main() {
int i, s;
i = 1;
do {
printf("Введенное число %d\n", s);
i++;
} while (scanf("%d", &s));
}
ОПЕРАТОР BREAK
ОПЕРАТОР CONTINUE
Действие. Этот оператор может использоваться во всех трех типах циклов. Как и в случае
оператора break, он приводит к изменению характера выполнения программы. Однако вместо
завершения работы цикла наличие оператора continue вызывает пропуск "оставшейся" части
итерации и переход к началу следующей.
Например:
Заменим в предыдущей программе оператор break на continue.
При истинном условии в операторе if оператор continue вызывает пропуск идущих за ним
операторов тела цикла и осуществляется переход к началу следующей итерации.
28
С. Н. Талипов. «Лекции по C++ для начинающих»
29
С. Н. Талипов. «Лекции по C++ для начинающих»
30