- •Последовательность решения задач на эвм:
- •Состав языка
- •Комментарии
- •Переменные, операции, выражения
- •Базовые алгоритмические конструкции
- •Оператор множественного выбора switch
- •Тернарная условная операция
- •Циклические алгоритмы
- •Операции
- •Операция инкремента и декремента
- •Операции отрицания
- •Операции умножения и деления
- •Операции сдвига
- •Логические операции (&&, ||)
- •Операция присваивания
- •Выражения
- •Работа с памятью Память и указатели
- •Операции адресации и разадресации (&, *)
- •Адресная арифметика
Переменные, операции, выражения
Переменная – адрес ячейки памяти.
Переменная имеет имя, тип и значение.
Формат описания переменной:
[класс памяти][const] тип имя переменной [инициализатор]
Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют константой.
При описании переменной ей можно присвоить значение. Это действие называется инициализацией и имеет два формата:
тип имя = значение (int x = 1;);
тип имя(значение) (int x(1)).
Константа ОБЯЗАТЕЛЬНО должна быть проинициализирована при описании. В одном операторе через запятую может присутствовать описание нескольких переменных:
int x = 1, y = 2, z = 3;
Область действия идентификатора – та часть программы, в которой его можно использовать для доступа к связанной с ним переменной.
По области действия переменные бывают:
локальные (переменные, описанные внутри некоторого блока);
глобальные (определяются вне всех блоков).
Область действия локальных переменных – от точки описания до конца блока; глобальных – от точки описания до конца файла, в котором они записаны.
Время жизни переменной может быть:
постоянным (т.е. время действия всей программы);
временным (т.е. на время выполнения какого – то блока).
Базовые алгоритмические конструкции
В С++ все операторы могут быть поделены на:
операторы для работы с данными (состоят из арифметических, ввода – вывода, пересылка данных и т.д.);
операторы, управляющие последовательностью выполнения программы.
По набору команд управления, которые используются в программе, их можно условно разделить на три класса:
линейные (не используют команды управления);
ветвящиеся (if, switch, тернарная);
циклические.
(доделать!!!)
Если некоторая переменная используется только внутри условного оператора, то её можно описать прямо внутри скобок. Тогда областью её видения будут обе ветви оператора if.
if (int i = f(5))
a = i * i;
else
a = i * i * i;
Оператор множественного выбора switch
В случае наличия более двух альтернатив часто бывает удобно использовать оператор switch.
Формат:
switch (выражение) {
case const_1: [оператор 1];
case const_2: [оператор 2];
…
case const_n: [оператор n];
[default: оператор;]
}
→ выражение → case 1 → on 1 //зайдя в case k выполняем от k и до конца оператора
↓ ↓
case 2 → on 2
↓ ↓
…
case n → on n
↓ ↓
default → оператор
int a = 2;
switch (a) {
case 1: out << “case 1\n’ ”;
case 2: out << “case 2\n’ ”;
case 3: out << “case 3\n’ ”;
}
Для вывода именно case k в конце оператора ставится break:
case 1: out << “case 1\n’ ”; break;
Для обеспечения реакции на неперечисленные значения существует вариант default, который выполняется в случае несовпадения значения выражения ни с одним из case k.
Тернарная условная операция
Задание: вычислить y = |x|.
y = (x >= 0) & x : (-x) – полный аналог if.
24.09.2012
Циклические алгоритмы
Циклические алгоритмы – те, в которых работа программы идёт не только вперёд, но и назад. Бывают трёх типов:
цикл с предусловием;
цикл с постусловием;
цикл с параметром.
(доделать!!!)
s = 0;
for (int i = 1; i <= 10; i++)
s += i; // s = s + i;
Для "нештатного" выхода из цикла используется оператор break. Он передаёт управление на первую строчку за циклом.
while (1)
{
….. break;
}
Операция continue передаёт управление на начало цикла.
Итерация – виток цикла.
Операция goto label передаёт управление на строчку, помеченную label.
d = b * b – 4 * a * c;
if (d >= 0) goto L1;
if (d < 0) goto L2;
L1: x1=…
x2=…
goto L3
L2: out << “No sol”;
goto L4;
L3: out << x1 << “ “ << x2;
L4: }
Операция return – операция завершения функции.