Основы программирования
Полезные сайты для изучения С/С++
Структура программы на С/С++
Арифметические типы
Примеры описаний переменных
Внутренний формат
Внутренний формат
Операции и их приоритеты
Приведение типов
Приведение типов
Арифметическое выражение (формула)
Логические переменные и операции
Результаты логических операций
Логические выражения
Список основных операторов
Оператор присваивания
Оператор присваивания
Сокращенная запись
Ввод/вывод чисел
Ввод/вывод чисел
Ввод/вывод чисел
Ввод числовых значений
Примеры ввода значений
Вывод числовых значений
Примеры вывода значений
Составной оператор
Условный оператор
Примеры условных операторов
Целочисленные значения в условиях
Цикл for
Порядок работы цикла for
Порядок работы цикла for
Примеры циклов for
Примеры циклов for
Цикл while
Цикл while
Примеры циклов while
226.60K
Category: programmingprogramming

Основы программирования. Основы языка программирования С/С++

1. Основы программирования

Основы языка программирования
С/С++
1

2. Полезные сайты для изучения С/С++

cppstudio.com – для начинающих
cplusplus.com – руководства по С++
ru.stackoverflow.com – вопросы и ответы
2

3.

Язык С/С++ мощный и гибкий.
Исходный модуль может быть сформирован в виде
одного или нескольких файлов.
В программе можно использовать переменные
различных типов (арифметические, символьные,
логические, строковые), а также формировать более
сложные пользовательские типы.
Для всех типов определены необходимые операции, а
богатый набор операторов и библиотек стандартных
функций позволяет решать самые разнообразные
задачи.
3

4. Структура программы на С/С++

• Директивы препроцессора
(#define, #include,…)
• Описания глобальных типов данных (typedef,
struct, class,…)
• Описания глобальных данных (переменных,
констант)
• Объявления функций (описание заголовков)
• Главная функция main или _tmain
• Определения функций
4

5.

#include <iostream>
using namespace std;
double min(double, double);
int main(int argc, char *argv[])
{
double x, y;
for (int i = 0; i < 10; i++)
{
cin >> x >> y;
cout << min(x, y) << endl;
}
return 0;
}
double min(double a, double b)
{
if (a <= b) return a; else return b;
}
5

6.

Начнем с задач вычисления по формуле.
Если формула содержит переменные, то они должны
быть предварительно описаны.
Описание включает тип и имена переменных.
С/С++ является строго типизированным языком,
однажды объявленный тип переменной изменить
нельзя.
6

7. Арифметические типы

Типы переменных:
• int – целые со знаком
• float – короткие вещественные (с плавающей
точкой)
• double – вещественные с двойной точностью
Модификаторы для целых: unsigned, short, long
Имя переменной (идентификатор) –
последовательность букв и/или цифр, начинается
всегда с буквы
7

8. Примеры описаний переменных

int i, count;
unsigned k; (unsigned int k;)
short mask;
float leng2;
double x1, x2, y1, y2;
Константы описываются значением:
77 -256 -1 10000 – целые (int)
-100.0 3.1415 1e-3 (= 0.001) –
вещественные (double)
8

9. Внутренний формат

Значения переменных и констант хранятся во
внутреннем (двоичном) формате, соответствующем
типу значения. Например, формат вещественных чисел
(float и double) включает знак числа (1 бит), смещенный
порядок и мантиссу (значащие цифры числа).
Из-за ограниченности мантиссы вещественные числа
почти всегда приближенные. Диапазон значений
вещественных чисел включает все целые числа, но float
представляет точно только те, которые содержат не
более 6-7 десятичных цифр.
9

10. Внутренний формат

int – 4 байта (32 бита),
диапазон: -2147483648…2147483647,
числа >=0 – прямой двоичный код,
числа <0 – дополнительный код
float – 4 байта (8 бит – порядок, 23 бита – мантисса,
6-7 точных десятичных цифр числа)
double – 8 байт (11 бит – порядок, 52 бита – мантисса,
15 точных десятичных цифр числа)
10

11. Операции и их приоритеты

Приоритет
Операции
1
2
() [] -> .
!
~
+
++
-&
*
(<тип>)
sizeof
*
/
%
+
<<
>>
<
<=
>=
>
== !=
&
^
|
&&
||
? :
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
,
3
4
5
6
7
8
9
10
11
12
13
14
15
Порядок
исполнения















11

12. Приведение типов

Если в выражении присутствуют переменные и
константы разных арифметических типов, то они
неявно приводятся к самому общему типу (типу с
самым большим диапазоном).
Вещественные значения почти всегда приближенные,
поэтому при их сравнении не следует использовать
операции == и !=. Вместо этого нужно проверять, не
будет ли абсолютная величина разности этих значений
меньше, чем погрешность вычислений.
12

13. Приведение типов

double x, y; int k, m;
x = 1.7; y = 8; k = 10; m = 3;
Результаты операций:
x + 10,
k - 3.0,
k + 10,
k / 3,
x > 0,
x <= k – true
k == k / 3 * m,
m == k / 3,
k * y – double
k * 5 – int
k != 10 – false
m == 3 – true
y/3*3 == y – false (неправильно!)
abs(y/3*3 - y) < 1e-6 – true (правильно!)
13

14. Арифметическое выражение (формула)

Формула записывается линейно, в строку
Операции: +, –, * (умножение), / (деление, при делении
целых чисел частное будет целым), % (остаток от
деления для целых).
Стандартные функции: sqrt (квадратный корень), abs
(абсолютное значение ), sin (синус), cos (косинус),
exp (экспонента) и др.
Порядок вычислений: слева-направо, но вначале
операции *, /, %, а затем + и – .
Круглые скобки изменяют порядок вычислений.
14

15. Логические переменные и операции

В С/С++ определены 2 логические константы: true и false.
bool A, B; - описание логических переменных (они могут
принимать значения либо true, либо false).
Логические операции: ! (not), && (and), || (or).
Результат любого сравнения (< <= > >= == !=) –также
либо true, либо false.
Примеры:
int k = 10, n = 7;
k >= n+2
k > 10
n != 5
n == k
n < k - true
n <= 0 - false
15

16. Результаты логических операций

Пусть A и B – логические переменные или выражения.
Для всех комбинаций значений A and B в таблице
приводятся
результаты
выполнения
логических
операций:
A
B
!A
A && B
A || B
true
true
false
true
true
false
true
true
false
true
true
false
false
false
true
false
false
true
false
false
16

17. Логические выражения

double x = 3.14;
int k = 30;
bool a = true, b = false;
a && b || !a && !b - false
(a || b) && (!a || !b) - true
x >= 0 && x <= 5
- true
k / 3 == k % 3
- false
a && x * 3 < k
- true
k % 2 == 0 && k % 3 == 0 && k % 5 == 0 - true
эквивалентное выражение:
(k % 2 == 0) && (k % 3 == 0) && (k % 5 == 0)
17

18. Список основных операторов


присваивание
ввод/вывод
составной
условный
цикл for
цикл while
return
Все операторы, кроме составного, завершаются
символом ‘;’
18

19. Оператор присваивания

Формат: переменная = формула
Вычисляется формула в правой части присваивания, а
затем полученное значение присваивается переменной
в левой части.
При выполнении оператора присваивания возможно
неявное или явное приведение типов, если тип
переменной в левой части не соответствует типу
значения в правой.
19

20. Оператор присваивания

Примеры:
double x, y, a, b, c; int k;
y = sin(a*x) – b/2;
с = sqrt(x*x + y*y);
k = k + 2;
c = a; a = b; b = c;
a = k * 10 + 2;
k = (int)(a / 5 - k); - целая часть
20

21. Сокращенная запись

double x, y; int k, m;
k++ - значение k сначала используется, а затем
увеличивается на 1
++k - значение k сначала увеличивается на 1, а затем
используется
+= -= … - расчет нового значения на основе старого
Эквивалентные выражения
k = m++;
k = m; m = m + 1;
k = ++m;
m = m + 1; k = m;
y *= x – 2;
y = y * (x - 2);
k += 2;
k = k + 2;
m -= 1; или m--;
m = m – 1;
21

22. Ввод/вывод чисел

Программа всегда имеет фиксированный набор входных
переменных, но должна работать при разных значениях
этих
переменных.
Присвоение
таких
значений
производится операторами ввода. В С++ существуют
различные возможности ввода и вывода.
Если
программа
является
простым
консольным
приложением (ввод данных с клавиатуры, вывод на
экран), а данные – это числа, то простейшим способом
ввода/вывода будет использование стандартных потоков.
22

23. Ввод/вывод чисел

сin – стандартный поток ввода – это некий источник,
который:
• передает в программу последовательность байт,
соответствующую введенным с клавиатуры символам
• преобразует эту последовательность
входных переменных
в
значения
cout – стандартный поток вывода:
• формирует
последовательность
соответствующую выводимым значениям
символов,
• передает эту последовательность для отображения на
экране
23

24. Ввод/вывод чисел

Операторы, необходимые для подключения потоков:
#include <iostream>
using namespace std;
Для потоков определены операции:
>> – извлечение значения из потока cin
<< – вставка значения в поток cout
24

25. Ввод числовых значений

При вводе с клавиатуры значения должны разделяться
любым количеством символов-разделителей «пробел»,
«табуляция», «конец строки» (получается при нажатии
клавиши Enter).
В операторах ввода используются только имена
переменных, т.к. присваивать значения можно только
переменным.
25

26. Примеры ввода значений

int k, m; double x, y;
Эквивалентные последовательности операторов:
1. cin >> x; cin >> y; cin >> k; cin >> m;
2. cin >> x >> y; cin >> k >> m;
3. cin >> x >> y >> k >> m;
Возможные варианты ввода для любого из 3 случаев
(Enter после каждой строчки запускает ввод):
• 3.14 2.71 13 256
• 3.14 2.71
13 256
• 3.14
2.71 13 256
26

27. Вывод числовых значений

В операторе вывода полностью формируется выходная
строка (строки) символов, которые будут выведены на
экран. При выводе можно использовать не только имена
переменных, но и константы разных типов, а также
выражения.
Значения
выражений
вычисляются
и
выводятся так же, как значения переменных.
Строки внутри двойных кавычек выводятся «как есть», без
каких-либо изменений.
С++
предоставляет
различные
возможности
форматирования выводимых строк. Пока мы будем
использовать только манипулятор endl – перевод на
следующую строку экрана.
27

28. Примеры вывода значений

int k, m; k = 25; m = 100;
1. cout << k << m << k + m;
cout << k - m; cout << endl;
выходная строка: 25100125-75
2. cout << k << ” ” << m << ” ”;
cout << k + m << ” ” << k – m << endl;
выходная строка: 25 100 125 -75
3. cout << ”k=” << k << ”, m=” << m <<endl;
cout << ”k+m=” << k + m;
cout << ”, k-m=” << k – m << endl;
2 выходные строки:
k=25, m=100
k+m=125, k-m=-75
28

29. Составной оператор

Составной оператор представляет последовательность
любых операторов С++ как единый оператор. Он
используется там, где по синтаксису С++ должен стоять
один оператор, но нужно выполнить несколько.
Формат:
{
оператор_1;
оператор_2;

оператор_n;
}
29

30. Условный оператор

2 варианта – полный и сокращенный:
if (условие) оператор_1; else оператор_2
if (условие) оператор_1
условие – любое выражение (например, сравнение),
значением которого может быть либо true (истина), либо
false (ложь)
оператор_1 и оператор_2 – любые операторы С++ (в том
числе, составные)
Порядок работы: вычисляется значение условия; если оно
истинно, то выполняется оператор_1; если условие
ложно и оператор включает else, то выполняется
оператор_2
30

31. Примеры условных операторов

int k, m, i;
1. if (k < 0) k = -k;
2. if (k >= m) cout << k; else cout << m;
3. if (k < m) { i = k; k = m; m = i; }
4. if (k == 1) k *= 2;
else if (k == 2) k -= 2;
else if (k == 3) k++;
else cout << ”error”;
31

32. Целочисленные значения в условиях

В С/С++ действует следующее соглашение: в любом
месте, где производится проверка условия, можно
использовать
целочисленное
выражение;
если
значение этого выражения не равно нулю, то условие
считается истинным, в противном случае – ложным.
if (k - m) k += (m + 1) * 2;
эквивалентно
if (k – m != 0) k += (m + 1) * 2;
if (!k) k++;
эквивалентно
if (k == 0) k++;
32

33. Цикл for

Формат:
for (действия_1; условие; действия_2) оператор
действия_1 и действия_2 – последовательности
операторов, разделенных символом ‘,’ (обычно это 1
или несколько операторов присваивания, но может
быть и пустой оператор ;)
условие – любое выражение, значением которого
может быть истина, ложь или целое число (как в
условном операторе)
оператор – любой оператор С++ (в том числе,
составной или пустой) – это тело цикла
33

34. Порядок работы цикла for

for (действия_1; условие; действия_2) оператор
1. Выполняются начальные действия_1 (если они
заданы)
2. Проверяется условие. Если оно истинно, то сначала
выполняется оператор, а потом действия_2. Если
условие ложно, то работа всего оператора цикла
завершается
3. Производится возврат к пункту 2.
34

35. Порядок работы цикла for

Начальные действия цикла выполняются всегда.
При проверке условия всегда используются текущие
значения входящих в него переменных.
Бесконечные циклы for можно использовать, если в
теле цикла дополнительно проверяется условие выхода
и используется оператор принудительного выхода из
цикла break.
35

36. Примеры циклов for

int k, n;
3 эквивалентных цикла (сумма чисел от 1 до 10):
1. for (n = 0, k = 1; k <= 10; k++) n += k;
2. for (n = 0, k = 1; k <= 10; n += k, k++);
3. n = 0;
for (k = 1; k <= 10;) { n += k; k++; }
Другие варианты решения той же задачи:
4. n = 0; k = 10;
for (; k != 0; k--) n += k;
5. n = 0; k = 10;
for (; k;) { n += k; k -= 1; }
36

37. Примеры циклов for

int k, n;
Циклы, в которых выполнятся только начальные
действия:
for (n = 0, k = 1; k < n; k++) n += k;
for (n = 0, k = 1; n; n += k, k++);
Заголовки бесконечных циклов:
for (n = 0, k = 1; k; k++)
for (k = 1; 1; k++)
for (; true;)
Цикл, который выполнится 5 раз:
for (n = 10, k = 1; k < n; k++, n--);
37

38. Цикл while

Цикл while удобно применять в случаях, когда заранее
не известно число повторений (шагов) цикла.
Формат:
while (условие) оператор
условие – любое выражение, значением которого
может быть истина, ложь или целое число (как в
условном операторе)
оператор – любой оператор С++ (в том числе,
составной или пустой) – это тело цикла
38

39. Цикл while

while (условие) оператор
Порядок работы:
Проверяется условие. Если оно ложно, то работа всего
оператора цикла завершается. Если условие истинно,
то выполняется оператор, затем вновь проверяется
условие и т.д.
Оператор должен включать действия, которые когдалибо приведут к нарушению истинности условия.
39

40. Примеры циклов while

int k, n;
Подсчет суммы чисел от 1 до 10:
n = 0; k = 1;
while (k <= 10) { n += k; k++; } // n += k++;
n = 0; k = 10;
while (k) n += k--;
Бесконечные циклы:
while (1) { … }
while (true) { … }
Любой цикл for можно заменить на эквивалентный цикл
while и наоборот.
40
English     Русский Rules