Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по срсп.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
180.74 Кб
Скачать

Операции языка Си

Разработка алгоритмов линейной и разветвляющейся структуры. Овладение приемами математической формализации и навыками алгоритмизации задач различного характера с использованием основных алгоритмических структур и типовых алгоритмов обработки информации.

Краткие теоретические сведения

Список операций языка Си приведен в табл.1. Приоритет операций языка Си дан в табл.2.

Таблица 1 - Операций языка Си

Знак операции

Описание операции

+

Сложение

-

Вычитание, а также унарный минус

*

Умножение (бинарная операция)

/

Деление; если оба аргумента -целые, то деление целочисленное

%

Целочисленный остаток от деления

++

Увеличение на единицу; имеет префиксную и постфиксную формы:

++x и x++

--

Уменьшение на единицу; также имеет две формы

=

Присваивание

+=

Прибавление величины из правой части к перемен ной в левой части

-=

Вычитание величины из правой части от перемен ной в левой части

*=

Умножение переменной из левой части на величину из правой части

/=

Деление переменной из левой части на величину из правой части

<, >

Меньше, больше

==

Равно

<=,>=

Меньше или равно, больше или равно

!=

Не равно

&&, &

Логическое и поразрядное И (бинарные операции)

*

Косвенная адресация (унарная операция)

.(точка)

Операция принадлежности поля структуре или объединению

->

Косвенная адресация; обращение к полю структуры или объединения через указатель

<<

Сдвиг влево, а также быстрое умножение на степени 2

>>

Сдвиг вправо, а также быстрое деление на степени 2

Sizeof

Размер в байтах операнда, стоящего справа

(type)

Приведение типа; преобразует тип переменной в соответствии с ключевым словом (или словами), заключенным в скобках

, (запятая)

Связывает два выражения в одно и гарантирует, что левое выражение будет вычислено раньше правого. Результат совпадает с результатом правого выражения

?: (условие)

Имеет три операнда, каждый из которых является выражением:(выражение1)? выражение2: выражение3. Если выражение1 истинно, результат всего выражения равен результату выражения2, иначе он равен результату выражения3

Таблица 2 -Приоритет операций языка Си

Операции (от высшего приоритета к низшему)

Порядок выполнения

() П -> .

Слева направо

! ~ ++ -- - (type) * & sizeof (унарные)

Справа налево

* / %

Слева направо

+ -

Слева направо

<< >>

Слева направо

< <= >= >

Слева направо

== != "

Слева направо

&

Слева направо

&&

Слева направо

?: (тернарная)

Слева направо

= += -= *= /= %=

Справа налево

Операторы if и if-else

Оператор условия с неполным предписанием задается в языке Си в форме if (выражение) оператор

Оператор (простой или составной) выполняется в случае, если выражение истинно.

Для условия с полным предписанием используется форма

if (выражение) оператор1 else оператор2

Оператор1 выполняется в случае, если выражение истинно, а оператор2 - если ложно.

Возможно построение более сложных конструкций:

if (выражение1) оператор1 else

if (выражение2) оператор2 else оператор3

Выражение означает любое числовое или совместимое с числовым типом выражение. В языке Си нет специального логического типа данных, поэтому выражение считается ложным, если его значение равно нулю.

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

Пример: absolutX = (x>0)? x: -x;

Оператор множественного выбора switch

Общий вид:

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

{

case метка1: оператор1

case метка2: оператор2

default: операторЗ

}

Можно записывать более двух помеченных операторов, а вариант default не обязателен.

Пример: switch (number)

{

case 4: printf("\n Хороший выбор!"); break;

case 5: printf("\n Неплохой выбор"); break;

default: printf ("\n Плохой выбор");

}

Наличие операторов break позволяет прекратить выполнение оператора switch и перейти к выполнению операторов, следующих за ним. Если убрать из примера все операторы break, то при значении number равном 4 на экран будут выданы все три сообщения.

Иногда, однако, это бывает полезным:

choice=getchar (); // Ввод одиночного символа switch (choice)

{

case 'A':

case 'B': printf("\n Заглавная буква!"); break;

case 'a':

case 'b': printf ("\n Строчная буква!"); break;

}

Директива препроцессора #define

Директива #define необходима для задания символических констант и макроопределений.

Пример: #include <stdio.h> #define TWO 2 //Константа #define MSG "\n Конец работы\ программы" // Обратная косая черта продолжает определение на следующую // строку

#define SQUARE(a) ((a)*(a)) //Макроопределение с аргументом #define PX printf("\n Значение переменной %d",x); main ()

{

int x=TWO; PX

x=SQUARE(x);

PX

printf (MSG);

}

Препроцессор заменит в тексте программы все вхождения TWO, MSG, SQUARE(x), PX на 2, "\n Конец работы\ программы", ((x)*(x)), printf("\n Значение переменной %d",x).