Слайд 1Основы программирования
Основы языка программирования С/С++
Слайд 2Полезные сайты для изучения С/С++
cppstudio.com – для начинающих
cplusplus.com – руководства
по С++
ru.stackoverflow.com – вопросы и ответы
cpp.com.ru – книги по С++
на русском
Книги Герберта Шилдта
Слайд 3Структура программы на С/С++
Директивы препроцессора
(#define, #include,…)
Описания глобальных типов данных
(typedef, struct, class,…)
Описания глобальных данных (переменных, констант)
Описания заголовков функций
Главная функция
main или _tmain
Описания функций
Слайд 4#include
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Арифметические типы
Типы переменных:
int – целые со знаком
float – короткие
вещественные (с плавающей точкой)
double – вещественные с двойной точностью
Модификаторы unsigned,
short, long
Имя переменной (идентификатор) – последовательность букв и/или цифр, начинается всегда с буквы
Слайд 6Примеры описаний переменных
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)
Слайд 7Внутренний формат
int – 4 байта (32 бита),
диапазон: -2147483648…2147483647,
числа >=0 –
прямой двоичный код,
числа
(8 бит – порядок, 23 бита – мантисса, 6-7 точных десятичных цифр числа)
double – 8 байт (11 бит – порядок, 52 бита – мантисса, 15 точных десятичных цифр числа)
Слайд 9Приведение типов
double x, y; int k, m;
x = 1.7; y
= 8; k = 10; m = 3;
Результаты операций:
x +
10, k - 3.0, k * y – double
k + 10, k / 3, k * 5 – int
x > 0, x <= k – true
k == k/3*m, k != 10 – false
m == k/3, m == 3 – true
y/3*3 == y – false (неправильно!)
abs(y/3*3 - y)<1e-6 – true (правильно!)
Слайд 10Арифметическое выражение (формула)
Формула записывается линейно, в строку
Операции: +, –, *
(умножение), / (деление, при делении целых чисел частное будет целым),
% (остаток от деления для целых).
Стандартные функции: sqrt (квадратный корень), abs (абсолютное значение ), sin (синус), cos (косинус), exp (экспонента) и др.
Порядок вычислений: слева-направо, но вначале операции *, /, %, а затем + и – .
Круглые скобки изменяют порядок вычислений
Слайд 11Список основных операторов
присваивание
ввод/вывод
составной
условный
цикл for
цикл while
return
Все операторы, кроме составного, завершаются символом
‘;’
Слайд 12Оператор присваивания
Формат: переменная = формула
Примеры:
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); - целая часть
Слайд 13Сокращенная запись
double x, y; int k, m;
k++ - значение k
сначала используется, а затем увеличивается на 1
++k - значение k
сначала увеличивается на 1, а затем используется
+= -= … - расчет нового значения на основе старого
Слайд 14Ввод/вывод чисел
сin – стандартный поток ввода – это некий источник,
который:
передает в программу последовательность байт, соответствующую введенным с клавиатуры символам
преобразует
эту последовательность в значения входных переменных
cout – стандартный поток вывода:
формирует последовательность символов, соответствующую выводимым значениям
передает эту последовательность для отображения на экране
Слайд 15Ввод/вывод чисел
Операторы, необходимые для подключения потоков:
#include
using namespace std;
Для потоков
определены операции:
>> – извлечение значения из потока cin
значения в поток cout
Слайд 16Примеры ввода значений
int k, m; double x, y;
Эквивалентные последовательности операторов:
cin
>> x; cin >> y; cin >> k; cin>>m;
cin >>
x >> y; cin >> k >> m;
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
Слайд 17Примеры вывода значений
int k, m; k = 25; m =
100;
cout
<< k - m; cout << endl;
выходная строка: 25100125-75
cout << k << ” ” << m << ” ”;
cout << k + m << ” ” << k – m << endl;
выходная строка: 25 100 125 -75
cout << ”k=” << k << ”, m=” << m <cout << ”k+m=” << k + m;
cout << ”, k-m=” << k – m << endl;
2 выходные строки:
k=25, m=100
k+m=125, k-m=-75
Слайд 18Составной оператор
Формат:
{
оператор_1;
оператор_2;
…
оператор_n;
}
Слайд 19Условный оператор
2 варианта – полный и сокращенный:
if (условие) оператор_1; else
оператор_2
if (условие) оператор_1
условие – любое выражение (например, сравнение), значением которого
может быть либо true (истина), либо false (ложь)
оператор_1 и оператор_2 – любые операторы С++ (в том числе, составные)
Порядок работы: вычисляется значение условия; если оно истинно, то выполняется оператор_1; если условие ложно и оператор включает else, то выполняется оператор_2
Слайд 20Примеры условных операторов
int k, m, i;
if (k < 0) k
= -k;
if (k >= m) cout
<if (k < m) { i = k; k = m; m = i; }
if (k == 1) k *= 2;
else if (k == 2) k -= 2;
else if (k == 3) k++;
else cout << ”error”;
Слайд 21Целочисленные значения в условиях
if (k - m) k += (m
+ 1) * 2;
эквивалентно
if (k – m != 0) k
+= (m + 1) * 2;
if (!k) k++;
эквивалентно
if (k == 0) k++;
Слайд 22Цикл for
Формат:
for (действия_1; условие; действия_2) оператор
действия_1 и действия_2 – последовательности
операторов, разделенных символом ‘,’ (обычно это 1 или несколько операторов
присваивания, но может быть и пустой оператор ;)
условие – любое выражение, значением которого может быть истина, ложь или целое число (как в условном операторе)
оператор – любой оператор С++ (в том числе, составной или пустой) – это тело цикла
Слайд 23Порядок работы цикла for
for (действия_1; условие; действия_2) оператор
Выполняются начальные действия_1
(если они заданы)
Проверяется условие. Если оно истинно, то сначала выполняется
оператор, а потом действия_2. Если условие ложно, то работа всего оператора цикла завершается
Производится возврат к пункту 2.
Слайд 24Примеры циклов for
int k, n;
3 эквивалентных цикла (сумма чисел от
1 до 10):
for (n = 0, k = 1; k
<= 10; k++) n += k;
for (n = 0, k = 1; k <= 10; n += k, k++);
n = 0;
for (k = 1; k <= 10;) { n += k; k++; }
Другие варианты решения той же задачи:
n = 0; k = 10;
for (; k != 0; k--) n += k;
n = 0; k = 10;
for (; k;) { n += k; k -= 1; }
Слайд 25Примеры циклов 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++) n += k;
for (k = 1; 1; k++)
for (; true;)
Цикл, который выполнится 5 раз:
for (n = 10, k = 1; k < n; k++, n--);
Слайд 26Цикл while
Формат:
while (условие) оператор
условие – любое выражение, значением которого может
быть истина, ложь или целое число (как в условном операторе)
оператор
– любой оператор С++ (в том числе, составной или пустой) – это тело цикла
Порядок работы:
Проверяется условие. Если оно ложно, то работа всего оператора цикла завершается. Если условие истинно, то выполняется оператор, затем вновь проверяется условие и т.д.
Оператор должен включать действия, которые когда-либо приведут к нарушению истинности условия.
Слайд 27Примеры циклов while
int k, n;
Подсчет суммы чисел от 1 до
10:
n = 0; k = 1;
while (k
n += k; k++; }
n = 0; k = 10;
while (k) { n += k; k -= 1; }
Бесконечные циклы:
while (1) { … }
while (true) { … }