http://natalia.appmat.ru/c&c++/lezione2.php | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Приоритеты операторов
|
Операторы сравнения
Логические операторы
Составное присваивание
for (i = 1; i < 10; i++) { ... }
Операторы условных и безусловных переходовДля организации условных и безусловных переходов в программе на языке СИ (C)используются операторы: if - else, switch и goto. Первый из них записывается следующим образом: if (проверка_условия) оператор_1; else оператор_2; Если условие в скобках принимает истинное значение, выполняется оператор_1, если ложное - оператор_2. Если вместо одного необходимо выполнить несколько операторов, то они заключаются в фигурные скобки. В операторе if слово else может отсутствовать. В операторе if - else непосредственно после ключевых слов if и else должны следовать другие операторы. Если хотя бы один из них является оператором if, его называют вложенным. Согласно принятому в языке СИ (C)соглашению слово else всегда относится к ближайшему предшествующему ему if. Оператор switch позволяет выбрать одну из нескольких альтернатив. Он записывается в следующем формальном виде: switch (выражение) { case константа_1: операторы_1; break;
case константа_2: операторы_2; break; ........ ........ default: операторы_default; } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10010 | 1001111 // "ИЛИ" - только 0 и 0 дают 0 1011111 // это результат
10010 & 1001111 // "И" - только 1 и 1 дают 1 10 // это результат // только биты_2 в обоих числах были единицы
10010 ^ 1001111 1011101 // это результат /* изменились биты во втором числе напротивустановленных битов 4 и 1 первого числа. */
~ 1001111 /* инвертировать биты 110000 // это результат |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PORTA++; /* Эта строчка на Си означает говорят: Инкрементировать регистр PORTA */ PORTC--; /* Эта строчка на Си означает Декрементировать - вычесть 1 из значения регистра PORTC */ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Логические операции : || // "ИЛИ" - только "ложь" и "ложь"
! // "НЕ" - логическое отрицание /* Правило - в Си считается: "Ложь" (False) только ноль. "Истина"(True)- не ноль. или так: (!0) */ !(истина) // дает "ложь" !(ложь) // дает "истина"
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Операторы сравнения (или отношения): используются для сравнения переменных, чисел (констант) и выражений. x < y // X меньше Y "истина" это "1" (точнее "не ноль") "ложно" это "0" Значения хранимые в переменных (в регистрах) х и у НЕ изменяются. Берутся (считываются) значения хранящиеся (или содержащиеся) в переменных и сравниваются */ ! /* "НЕ" - логическое отрицание */
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if(){}else{}; идеальная конструкция если вам нужно выполнить какую то часть программы при наличии каких либо условий : if (выражение) { /* делать этот код если выражение "истина" - т.е. результат его вычисления не ноль */
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { это не обязательный элемент конструкции : if (выражение) { /* делать этот код если выражение "истина" - т.е. результат его вычисления не ноль */ while(){}; условный цикл - используйте если вам while (выражение) { /* делать этот код если выражение "истина" - т.е. результат его вычисления не ноль. Пока выполняется этот код выражение не проверяется на истинность ! После выполнения кода происходит переход к строке while снова проверять истинность выражения */ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for(;;){}; - этот цикл позволяет выполнить часть программы нужное число раз: char i; /* объявление переменной для for это обычная переменная и значит может иметь любое допустимое имя по вашему желанию */ for (i=5;i<20;i+=4) { /* код цикла for i=5 - это начальное выражение Число 5 просто для примера, может быть таким, как позволяет объявление переменной i, в нашем случае от 0 до 255 i<20 - контрольное выражение Может быть с разными операторами отношения, важно лишь чтобы по ходу цикла оно становилось когда-то "ложью" - иначе цикл "зациклится" т.е. ни когда не кончится. i+=4 - счетчик Обычно это i++ т.е.к переменной добавляется 1 каждый "прогон" цикла. Но опять же может быть таким какое вам требуется, важно лишь достижение когда либо условия абзацем выше ! Иначе цикл станет бесконечным. Код цикла for будет первый раз выполнен для i=5, затем по выражению i+=4, i станет 9 теперь будет проверено контрольное выражение i<20 и так как 9<20 код цикла for будет выполнен еще раз. Так будет происходить до тех пор пока контрольное выражение "истино"
while(1); for (;;); /* Так написанные эти циклы означают : МК выполнять эту строчку пока есть питание, нет сброса и нет прерывания. Когда возникает прерывание, программа переходит на обработчик прерывания и (если в обработчике нет перехода в другое место программы)по завершении кода обработчика опять возвращается в такой цикл. */ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
switch(){}; - оператор множественного выбора, switch (выражение) { на этом работа оператора switch закончится */ case -32: на этом работа оператора switch закончится */ case 'G': на этом работа оператора switch закончится */ на этом работа оператора switch закончится */ /* switch закончен - выполняется дальнейший код программы */
наиболе часто используемые типы данных :
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#asm("sei") // Разрешить ГЛОБАЛЬНО все прерывания #asm("cli") // Запретить ГЛОБАЛЬНО все прерывания #asm("nop") // Пауза в 1 такт процессора #asm("wdr") // Сбросить сторожевой таймер
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||