Похожие презентации:
Основы программирования. Основы языка программирования С/С++
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
Программирование