Похожие презентации:
Тест 1 семестр
1. Тест 1 семестр
2. Идентификаторы переменных
int num; - оператор объявления: num – переменная,• int – ключевое слово и обозначает целочисленный тип
данных.
• «num» – идентификатор, т.е. имя переменной (функции или
другого объекта).
• Типы данных: целые, символы, действительные.
• Имя переменной (идентификатор):
– Количество символов в имени: до 31 для С90 и до 63 для С99 .
– Буквы Верхнего и Нижнего регистра, цифры и «_».
– Первый символ буква или «_».
• Все переменные обязательно должны быть объявлены до их
использования: либо в начале блока {…}, либо в любом месте
(С99).
2
3. Ключевые слова
charvoid
if
goto
int
signed
else
sizeof
short
static
for
typedef
long
register
do
return
unsigned
extern
while
_Bool
float
auto
switch
_Complex
double
const
case
_Imaginary
struct
volatile
default
union
restrict
continue
enum
inline
brake
3
4. Использование символов: тип char
• char - применяется для хранения символов, таких какбуквы и знаки препинания, однако в техническом аспекте
он является также целочисленным и хранит код символа в
таблице стандарта ASCII (American Standard Code for Information Interchange).
• Объявление переменных:
char response;
char itable, latan;
• Символьные константы и инициализация:
char grade = 'А';
char grade = 65; // можно и так, но нежелательно
4
5.
56. Непечатаемые символы
• В таблице кодов ASCII есть непечатаемые символы: «новаястрока», «возврат каретки» и т.д.
• Такие символы можно представить:
– Явно указав код символа: char bеер = 7;
– Управляющие последовательности: char nerf = '\n';
– Использовать шестнадцатеричную форму для
представления символьных констант: char Ctrl_P = '\x10’;
– до ‘\xFF’
6
7. Управляющие последовательности
ПоследовательностьОписание
\a
Предупреждение (стандарт ANSI С)
\b
Возврат на одну позицию влево
\f
Перевод страницы
\n
Новая строка
\r
Возврат каретки
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
\\
Обратная косая черта (\)
\'
Одиночная кавычка ( ')
\"
Двойная кавычка (")
\?
Знак вопроса (?)
\0oo
Восьмеричное значение
\xhh
Шестнадцатеричное значение
7
8. Операции в Си
• Язык С использует операции для представления арифметическихлогических или других действий.
• Знак операции - это символ или группа символов, которые
сообщают компилятору о необходимости выполнения
определенных действий.
• Выражение – результат операции приведенный к одному типу.
• Арифметические: +, -, *, /, %, ++, --;
• Логические: && (“И”), || (“ИЛИ”), ! (НЕ);
• Поразрядные и сдвиги: & (и), | (или), ^ (искл. или), ~ (отрицание),
<<, >>;
• Отношения: <, <=, >, >=, ==, !=;
• Присваивания: =;
• Составные: +=, - =, *=, /=, %=, <<=, >>=, &=, |=, ^=.
8
9. Арифметические операции
• Сложение и вычитание: 5+7; 5-7.0; a-b;• Умножение: 5*7; 5*7.0; // определите тип выражения
• Деление: 7/5; 7%5;
• / (деление) – на целочисленных типах отличаются от
действий на типах с плавающей запятой: деление целых
чисел не выполняет округления до ближайшего целого.
– 9/5 == 1
9.0/5 == 1.8
• % (деление по модулю) – возвращает остаток от деления
целых чисел: используется, чтобы помочь управлять ходом
выполнения программы.
– 9%5 == 4
9.0%5 - ошибка
9
10. Унарные операции
• Операции выполняемые над одной переменной, константойили выражением в скобках имеют приоритет перед бинарными
операциями.
• “-” и “+” используются для указания или изменения
алгебраического знака конкретного значения;
• “++” инкремент и “--” декремент:
– (i++;) == (i=i+1;) (i--;) == (i=i-1;)
– префиксная форма: ++a, --b; значение меняется до того, как
оно будет использовано.
– постфиксная форма: a++, b--; значение меняется после того,
как оно было использовано.
– Не применяйте операции инкремента и декремента к
переменной, которая является частью более одного
аргумента функции.
– Самый высокий приоритет после круглых скобок.
• size_t sizeof() возвращает размер операнда в байтах;
10
11. Логические операции
Результат логической операции: ложь/истина. В языке Силожь это 0, истина 1 (или другое значение);
Операции отношения: (<, <=, >, >=, ==, !=)
><
>= <=
==
!=
результат
5<6;
2*2>=4;
2*2==4;
2*2!=5;
1
5>6;
2*2<=3;
2*2==5;
2*2!=4;
0
Логические операции: && (“И”), || (“ИЛИ”), ! (НЕ)
X
Y
X&&Y
X||Y
!X
0
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
11
12. Поразрядные и сдвиги
• Поразрядные операции выполняются сотдельными битами целочисленных типов:
• ~ побитное отрицание;
• & побитное умножение;
• | побитное сложение;
• ^ исключающее или;
• << сдвиг разряда влево;
• >> сдвиг разряда вправо.
Операция
Значение
(биты)
Десятичн.
X
0000 1111
15
Y
1000 1000
136
~X
1111 0000
240
X&Y
0000 1000
8
X|Y
1000 1111
143
X^Y
1000 0111
135
X<<1
0001 1110
30
X>>1
0000 0111
7
12
13. Приоритеты операций
№Группа операций
Знаки операций (субприоритет)
1
Скобки
()
2
Выделение элемента
[ ] . ->
3
Унарные операции
! ~ - ++ -- & * (int) sizeof()
4
Арифметические
(* / %) (+ -)
5
Сдвиги
>> <<
6
Отношения
( < <= > >=) (== != )
7
Логические
(& | ^) (&& II)
8
Условная операция
?:
9
Присваивание
=
10
Составные присваивания
+= -= *= /= %= <<= >>= &= |= ^=
11
Операция запятая
,
13
14. Циклы
• Оператор while (с предусловием):while (выражение) тело_цикла
Выражение в скобках может принимать ненулевое (истинное) или
нулевое (ложное) значение. Если оно истинно, то выполняется
тело цикла и выражение вычисляется снова. Если выражение
ложно, то цикл while заканчивается.
• Оператор do - while (с постусловием):
– do {тело_цикла} while (выражение);
– тело в цикле do - while выполняется по крайней мере один раз
– Тело цикла будет выполняться до тех пор, пока выражение в
скобках не примет ложное значение.
• Оператор for:
– for (выражение_1; выражение_2; выражение_3) тело_цикла
– Выражения: 1 инициализация, 2 условие, 3 обновление.
14
15. Множественный выбор: switch
• switch позволяет выбрать одну из нескольких альтернатив,записывается в следующем формальном виде:
switch (выражение)
{
case константа_1: операторы_1; break;
case константа_2: операторы_2; break;
........ ........
default: операторы_default;
}
– Вычисляется значение целого выражения в скобках и сравнивается
со всеми константами.
– При совпадении выполнится соответствующий вариант операторов.
Вариант с ключевым словом default реализуется, если ни один
другой не подошел.
15
16. Условная тернарная операция? :
• <Условие> ? <Выражение_1>:< Выражение_2>– Если условие истинно то выполняется выражение_1, если
ложно, то выражение_2
– Примеры: max = a > b ? a : b;
– printf(“%d - %s число”, x, (x%2==0)?“четное”:“нечетное”);
• Скобки не нужны т.к. у операции ? : более низкий приоритет
(кроме присваивания =).
• Упрощенный вариант if_else, но в отличии от if_else
возвращает значение и не может выполнять блок операторов.
• Тернарные операции могут быть вложенными:
– max_abc = a > b ? (a > c ? a : c) : (b > c ? b : c) ;
16
17. Операция запятая “,”
• Операция запятая позволяет выполнитьпоследовательно несколько выражений в одном
операторе и возвращает результат последнего
выражения:
– b = (a = 5, a+=2); // b==7
• Позволяет создавать сложные условия и циклы:
– while (a+=2, a>b) {…}
– for (a=0, b=0; a<10; a++, b+=10) {…}
• Не путать с запятыми при объявлении или
разделителями в printf()
• Минимальный приоритет, меньше чем у
присваивания =.
17
Программирование