Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

Операция и выражения в языке Си.

Выражение – это последовательность операций операндов и разделительных символов.

Операнды – переменные, константы и более сложные выражения.

Два вида:

  • Унарные (1 операнд).

  • Бинарные (2 операнда).

По виду действий:

  • Арифметические;

  • Поразрядно логические;

  • Сдвига;

  • Логические;

  • Отношения.

Арифметические операции: +, -, /, *, %, ++, --

% - определение остатка от деления.

Int a=5, b=2, c;

C=a%b; //c=1 – остаток от деления

C=b%a; //c=2

++ - инкремент (+1)

-- - декремент (-1)

формы операций:

  • Префиксная – операнд располагается справа от знака операции: ++i.

  • Постфиксная - операнд располагается слева от знака операции: i++.

Для инкремента: в префиксной форме сначала операнд увеличивается на 1, а затем вычисляется выражение. В постфиксной форме выражения операнд подставляется в выражение, производится вычисление и только потом значение увеличивается на 1.

Int a=0, b=1, c, d;

C=a++; // c=0, a=1;

D=++b; // b=2, d=2;

Поразрядные логические операции.

& - логическое И (AND)

 - логическое ИЛИ (OR)

^ - логическое исключающее ИЛИ (XOR)

~ - логическое НЕ (NOT)

все эти операции поразрядные.

Операции сдвига:

<< - сдвиг влево на число разрядов справа от операнда (выдвигаемые разряды теряются).

>> - сдвиг вправо (выдвигаемые разряды теряются).

Используются:

  • Для быстрого умножения и деления.

  • Для преобразования форматов.

Логические операции и операции отношения, используются для формирования логических выражений.

TRUE -1 и FALSE – 0.

= = - равно.

!= - не равно.

< – меньше.

> - больше.

<= - меньше или равно.

>= - больше или равно.

&& - логическое И.

 - логическое ИЛИ.

! – логическое НЕ.

…

var1=15, var2=0;

!var1; //’=0

!var2; //=1

var1var2; //=1

var1&&var2; //=0

Преобразование типов в выражении.

Операнды могут быть различных типов, компилятор преобразует данные к одному типу перед вычислением.

Порядок преобразований: операции приводятся к старшему (более длинному) типу:

Long double

double

F loat

Unsigned long

Long

Unsigned int

Int

Char

Можно самим указать тип переменной: (type).

Int a=8, b=5;

Float var1, var2;

Var1 = a/b; // var1=10

Var2 = (float)a/(float)b; // var2=1,6

Приоритет операции и порядок их выполнения: необходимо ставить круглые скобки.

В компиляторе используется ускоренное вычисление логических выражений: вычисление прекращается тогда, когда результат уже ясен.

Выражение_1&&(выражение_2  выражение_3); если Выражение_1=0, то результат = 0.

Операции управления вычислительным процессом.

  • Ветвление;

  • Циклическое повторение;

  • Передача управления в определенное место программ.

Оператор if.

If (выражение)

Оператор_1;

Else

Оператор_2;

Если (выражение) истинно выполняется оператор_1, если ложно оператор_2.

If (выражение)

оператор_1;

оператор_12;

else

оператор_13;

/*ifelse.cpp */

#include <stdio.h>

#include <conio.h>

main ( )

char ch;

puts (“Будите продолжать? Введите y/n”);

if ((ch=getch ( ) = = ‘n’)

puts (“Конец работы”);

else

puts (“Работа продолжается”);

return 0;

Оператор switch.

Switch (целое_выражение)

case константа_1: оператор_1;

break;

case константа_2: оператор_2;

break;

…

break;

default: оператор_(n+1)

/*switch.cpp*/

#include <stdio.h>

main ( )

int k;

printf (“Введите целое число в пределах от1 до 4 для выбора”);

scanf (“%d”,&k);

switch (k)

case 1: printf (“Выбор 1\n”);

break;

case 2: printf (“Выбор 2\n”);

break;

case 3: printf (“Выбор 3\n”);

break;

case 4: printf (“Выбор 4\n”);

break;

default: printf (“Вводи значение правильно \a\n”);

return 0;

Оператор цикла.

While ...

Do ... while

While позволяет организовать цикл с предусловием:

While (условие) оператор;

Проверяется условие, и если оно истинно, то выполняется оператор, если неистинно, то оператор игнорируется.

While (условие)

оператор_1;

оператор_n;

/*while.cpp*/

#include <stdio.h>

main ( )

int dlina=0;

puts (“Введите произвольную строку, затем нажмите Enter”);

while (getchar ( )!=’\n’)

dlina ++;

printf (“Длина строки равна %d\n”, dlina);

return 0;

do ... while – оператор цикла с постусловием:

do

оператор;

while (условие);

Сначала выполняется оператор, затем проверяется условие, если оно истинно, то оператор выполняется ещё раз (до тех пор, пока условие не будет ложным).

Do

оператор_1;

оператор_n;

while (условие);

#include <stdio.h>

#include <conio.h> // Описание функции getch ( )

#define ESC 27 // Код символа ESC

main ( )

float a, b, res;

do

puts (“Введите два числа”);

scanf (“%f%f”, &a, &b);

res=a*b;

printf (“Произведение a*b равно %f \n”, res);

puts (“Нажатие клавиши ESC завершить работу”);

while (getch ( )!=ESC);

return 0;

пример программы, которая зацикливается:

int i=0;

while (i<60);

printf (“i=%d \n”);

i++;

Оператор цикла FOR.

Позволяет организовать определённое число повторений циклов.

For (выражение_1; выражение_2; выражение_3)

Оператор;

Выражение_1 определяет начальное значение параметра цикла.

Выражение_2 это условие окончания цикла.

Выражение_3 заданное изменение параметра цикла.

оператор_1;

оператор_n;

#include <stdio.h>

main ( )

int repeat;

for (repeat=1; repeat<=10; repeat++)

printf (“%d \n”, repeat);

return 0;