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

Спецификация операции (функции)

Integer Division (целочисленное деление)

Вход: два целых значения U и V (данные от клиента)

Предусловие: знаменатель V не может быть равен 0 (необходимое состояние системы перед выполнение операции)

Процесс: разделить U на V (операция Integer Division) (действие, выполняемое с данными)

Выход: значение частного (данные, возвращаемые клиенту)

Постусловие: возникает условие ошибки, если V=0 (состояние системы после выполнения операции)

Переменная в программе имеет:

  1. Имя (k)

  2. Тип (int)

  3. Размер (2 байта)

  4. Значении (13)

  5. Адрес в памяти ПК

Int k=13

-215 <= k <= 215-1

Float x=3.3333;

Int k;

K=x; // k=3 – целое число, дробная часть урезается

K=1/3; //k=0 – т.к. целочисленное деление

Данные хранятся в основной памяти ПК

Адрес Память Имя

2000 00000000 K (имя связано с определенным

2001 00001101 участком Памяти)

2000 – адрес 1-го байта k (&k)

Символьный тип char (‘f’)

Char c1, c2=65, c3=’A’; // 65 – ASCII-код символа ‘A’, символы с2 и с3 равны

С1=с2+1 // с1 – получит значение ‘B’, символы кодируются целыми числами 0…255

Для типа char можно использовать операции типа int, на практике используются операции отношений.

Модификаторы типа

Язык СИ позволяет изменять в программе диапазон значений переменных типов int и char с использованием модификаторов:

Unsigned int k; // или unsigned k; 0…65535

Unsigned char ch; //0<=ch<256

Long int L; // или long L; память 4 байта

Unsigned long L; //0…4292967265

Для 32-разрядных ПК тип int и long одинаковы.

Вещественные типы float и double

Вещественные числа хранятся в памяти ПК в экспоненциальном формате:

-2.123Е+5

-2.123 – мантисса

+5 – порядок

Порядок Знак (переносится) Мантисса

8 бит (float 4 байта) 23 бита 6-7 знаков

11 бит (double 8 байт) 52 бита 14-15 знаков

Машинные числа – дискретные точки на числовой оси.

Операции с вещественными числами:

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

  2. Бинарные

  3. Унарные

  4. Операции отношения

== - может выполняться неправильно

1.0000 – результат одного выражения

0.9999 – результат другого

Пример некорректного оператора

Float x, y;

X=sqrt(1.3); //1.69

Y=pow(1.69, 0.25);

If (x==y) z=fun (x)

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

Выражение в Си – допустимая комбинация переменных, констант и операций

Допустимо смешение типов, происходит автоматическое (неявное) приведение типов: в бинарной операции «младший» тип приводится к «старшему»

Пример

Int I;

Float x;

Double z,w;

<ввод I, x, z>

W= 2 * x + (I - z);

Int float int double

Float double

double

// явное преобразование типа W=float(2)*x;

Рост старшинства – от целого типа к вещественному и с увеличением размера памяти

Char - int - long - float - double

Порядок выполнения операций:

A= x + y * sin (x + 1 / (x + y));

8 7 6 5 4 2 3 1

Правила использования операций

  1. Для операции определено количество операндов (1, 2, 3)

  2. Каждая операция может иметь только определенные типы операндов

  3. Каждая операция имеет ассоциативность – направления выполнения при последовательности операций выполнения

  4. Каждая операция имеет приоритет (* выполняется раньше +, если нет скобок)

  5. Унарные операции имеют более высокий приоритет, чем бинарные

Таблица приоритетов

Операция Ассоциативность

() []

++ -- ун+ ун- * & sizeof ~(тип)

* / %

+ -

<< >>

< <= > >= сдвиг влево,вправо

== !=

& логические AND, подразрядные

^ XOR

| OR, отрицание (инверсия)

&& логическое AND

|| OR

?: операция условие

= += -= *= /= %= != ^= <<= >>=

,

X+=1; // или Х=Х+1, но так медленнее!!!

Приоритет операций

  1. Вызов функции и скобки

  2. Унарные операции

  3. Арифметические (бинарные) операции

  4. Операции отношения (сравнения)

  5. Логические операции