- •1. Информация о дисциплине
- •3. Пререквизиты дисциплины
- •4. Постреквизиты дисциплины
- •5. Календарно-тематический план.
- •7. Критерии оценки
- •8. Требования преподавателя.
- •Приоритеты операций и порядок вычислений
- •Лекция 4 Операторы if
- •Простое присваивание
- •Составное присваивание
- •Побочные эффекты
- •Лекция 5 Простые (одна операция) и составные операторы. Логические операторы И и ИЛИ, НЕ.
- •Сравнение двух значений
- •ЗНАКОМСТВО С ОПЕРАТОРОМ if
- •Лекция 6 Повторение одного или нескольких операторов. Операторы цикла.
- •Лекция 7 Входной поток с именем cin и выходной поток cout. Оператор извлечения (>>) и оператор вставки (<<).
- •Лекция 8 Функции. Выполнение функции.
- •Лекция 13 Объявление переменной массива. Использование индексной переменной.
- •Лекция 14 Указатели. Использование указателя на символьную строку.
- •ПЕРЕЧЕНЬ ЗАДАНИЙ НА СРСП
- •Задание № 1.1. Типы данных в С++.
- •Задание №1.3. События в программном коде.
- •Задание № 1.4. Управляющие элементы выбора
- •Задание № 2.1. Работа со списками
- •Задание № 2.2. Документирование программы.
- •Задание № 2.3.
- •Задание № 3.1. Программные алгоритмы
- •Задание № 3.2 Поиск в массивах
- •Задание № 3.3. Процедуры и функции, их организация
- •Задание № 3.4. Структуры данных
- •ГЛОССАРИЙ
Самый обычный вид оператора - оператор выражение. Он состоит из выражения, за которым следует точка с запятой. Например: * англ. dereference - получить значение объекта, на который указывает данный указатель. (прим. перев.)
a = b*3+c;
cout << "go go go"; lseek(fd,0,2);
Простейшей формой оператора является пустой оператор:; Он не делает ничего. Однако он может быть полезен в тех
случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен.
Блоки Блок - это возможно пустой список операторов, заключенный в
фигурные скобки:
{ a=b+2; b++; }
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.
Лекция 4 Операторы if
Программа в следующем примере осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы; предполагается, что вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:
#include
main()
{
const float fac = 2.54; float x, in, cm;
char ch = 0;
cout << "введите длину:"; cin >> x >> ch;
if (ch == 'i') {// inch - дюймы in = x;
cm = x*fac;
}
else if (ch == 'c') // cm - сантиметры in = x/fac;
cm = x;
}
Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.
16
else
in = cm = 0;
cout << in << " in = " << cm << " cm\n";
}
Заметьте, что условие в операторе if должно быть заключено в круглые скобки.
Операторы switch
Оператор switch производит сопоставление значения с множеством констант. Проверки в предыдущем примере можно записать так:
switch (ch) { case 'i':
in = x;
cm = x*fac; break;
case 'c': in = x/fac; cm = x; break; default:
in = cm = 0; break;
}
Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.
Операции увеличения (++) и уменьшения (--) являются унарными операциями присваивания. Они соответственно увеличивают или уменьшают значения операнда на единицу. Операнд может быть целого или плавающего типа или типа указатель и должен быть модифицируемым. Операнд целого или плавающего типа увеличиваются (уменьшаются) на единицу. Тип результата соответствует типу операнда. Операнд адресного типа увеличивается или уменьшается на размер объекта, который он адресует. В языке допускается префиксная или постфиксная формы операций увеличения (уменьшения), поэтому значения выражения, использующего операции увеличения (уменьшения) зависит от того, какая из форм указанных операций используется.
Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.
17
Если знак операции стоит перед операндом (префиксная форма записи), то изменение операнда происходит до его использования в выражении и результатом операции является увеличенное или уменьшенное значение операнда.
В том случае если знак операции стоит после операнда (постфиксная форма записи), то операнд вначале используется для вычисления выражения, а затем происходит изменение операнда.
Примеры: int t=1, s=2, z, f; z=(t++)*5;
Вначале происходит умножение t*5, а затем увеличение t. В результате получится z=5, t=2.
f=(++s)/3;
Вначале значение s увеличивается, а затем используется в операции деления. В результате получим s=3, f=1.
В случае, если операции увеличения и уменьшения используются как самостоятельные операторы, префиксная и постфиксная формы записи становятся эквивалентными.
z++; /* эквивалентно */ ++z;
Простое присваивание
Операция простого присваивания используется для замены значения левого операнда, значением правого операнда. При присваивании производится преобразование типа правого операнда к типу левого операнда по правилам, упомянутым раньше. Левый операнд должен быть модифицируемым.
Пример: int t; char f; long z; t=f+z;
Значение переменной f преобразуется к типу long, вычисляется f+z, результат преобразуется к типу int и затем присваивается переменной t.
Составное присваивание
Кроме простого присваивания, имеется целая группа операций присваивания, которые объединяют простое присваивание с одной из бинарных операций. Такие операции называются составными операциями присваивания и имеют вид:
(операнд-1) (бинарная операция) = (операнд-2) .
Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.
18
Составное присваивание по результату эквивалентно следующему простому присваиванию:
(операнд-1) = (операнд-1) (бинарная операция) (операнд-2) . Отметим, что выражение составного присваивания с точки
зрения реализации не эквивалентно простому присваиванию, так как последним операнд-1 вычисляется дважды.
Каждая операция составного присваивания выполняет преобразования, которые осуществляются соответствующей бинарной операцией. Левым операндом операций (+=) (-=) может быть указатель, в то время как правый операнд должен быть целым числом.
Примеры:
double arr[4]={ 2.0, 3.3, 5.2, 7.5 }; double b=3.0;
b+=arr[2]; /*эквивалентно b=b+arr[2]*/ arr[3]/=b+1;/*эквивалентно arr[3]=arr[3]/(b+1)*/
Заметим, что при втором присваивании использование составного присваивания дает более заметный выигрыш во времени выполнения, так как левый операнд является индексным выражением.
Приоритеты операций и порядок вычислений
В языке СИ операции с высшими приоритетами вычисляются первыми. Наивысшим приоритетом является приоритет равный 1. Приоритеты и порядок операций приведены в табл. 4.1.
Таблица 4.1
|
|
|
|
|
|
|
|
|
Приоритет |
Знак |
|
Типы операции |
|
Порядок |
|
|
операции |
|
|
выполнения |
|||
|
|
|
|
|
|
|
Слева направо |
|
2 |
|
() [] . -> |
|
Выражение |
|
|
|
|
|
|
|
|
|
|
|
|
|
- ~ ! * & ++ -- |
|
|
|
|
|
1 |
|
sizeof |
|
Унарные |
|
Справа налево |
|
|
приведение |
|
|
|||
|
|
|
типов |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
* / % |
|
Мультипликативные |
|
|
|
|
|
|
|
|
|
|
|
4 |
|
+ - |
|
Аддитивные |
|
|
|
|
|
|
|
|
|
|
|
5 |
|
<< >> |
|
Сдвиг |
|
Слева направо |
|
|
|
|
|
|
|
|
|
6 |
|
< > <= >= |
|
Отношение |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
7 |
|
== != |
|
Отношение |
|
|
|
|
|
(равенство) |
|
|
||
|
|
|
|
|
|
|
|
Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.
19
