Листинг 1. Программа расчета и отображения накладной.

Лабораторная работа №4

ОПЕРАТОРЫ

В процессе обработки программа превращает данные, которые мы вводили в компьютер, в информацию, которую компьютер представляет нам. Различие между данными и информацией трудноуловимо, но очень существенно. «Данные» — это, так сказать, исходный материал, символы и числа, которые не могут быть использованы как конечный продукт. «Информация» — это конечный продукт, ради получения которого и была написана программа.

Превращение данных в информацию может осуществляться различными способами. Для чисел, например, обработка зачастую включает некоторые математические операции. Скажем, вам надо умножить стоимость заказанных товаров на ставку налога, а затем добавить полученную сумму налога к сумме заказа. Эти две операции показаны на рис.1, они могут быть описаны как:

налог на продажи = стоимость заказа Ф ставка налогаобщая сумма заказа = стоимость заказа + сумма налога


Рис.1. Процесс вычисления общей суммы заказа

 

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

Арифметические операторы

При математических вычислениях используются следующие арифметические операторы:

Оператор Функция оператора
+ сложение
вычитание
* умножение
/ деление
% получение остатка от деления нацело

Обратите внимание, что процедура умножения обозначается символом «звездочка» (а не символом «x»), а процедура деления — символом «прямая косая черта» (а не обратная «\»).

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

sales_tax = 4500;

напротив, величину накладных расходов требуется вычислить. При записи математических операций имя переменной всегда помещают слева от знака «равно», а арифметические операторы — справа:

sales_tax = amount * tax_rate;price = cost + shipping + insurance;per_unit = total / count;

Эти инструкции говорят компилятору, что следует выполнить три операции:

  • присвоить переменной sales_tax значение, полученное в результате умножения значения переменной amount на значение переменной tax_rate;
  • присвоить переменной price значение, полученное из суммы значений трех переменных: cost, shipping и insurance;
  • присвоить переменной per_unit значение, полученное в результате деления total на count.

Компьютер выполнит математические операции, указанные в правой части, а потом присвоит полученное значение переменной в левой части. Что касается правой части выражения, то она может содержать любые комбинации переменных, констант и литералов, например:

sales_tax = amount * 0.06;price = 56.90 + shipping + 7.87;per_unit = 156.65 / 12.50;

Листинг 1 демонстрирует использование операторов в программе. В приведенном фрагменте необходимо ввести имя и адрес покупателя, а также стоимость его заказа. Затем программа рассчитывает стоимость транспортировки (10процентов от суммы заказа) и налог на продажи (6 процентов от суммы заказа). Наконец, весь список накладных расходов отображается на экране с помощью функций puts() и printf().

 

 

Листинг 1. Программа расчета и отображения накладной.

/*invoice.c*/#define TAX_RATE 0.06#define SHIPPING 0.10main(){char name[15], address[20], city[15],state[3], zip[6];float order, total, tax, ship;printf("Имяпокупателя: ");gets(name);printf("Адрес: ");gets(address);printf("Город: ");gets(city);printf("Штат: ");gets(state);printf("Индекс:");gets(zip);printf("Суммазаказа: ");scanf("%f", &order);tax = order * TAX_RATE;ship = order * SHIPPING;total = order + tax + ship;puts("\n\n\n\n");puts(" НАКЛАДНАЯ\n");printf("%s\n%s\n%s, %s %s\n", name, adress, city, state, zip);printf("\t\t\t\t%-10s\t%10.2f\n", "Заказ:", order);printf("\t\t\t\t%-10s\t%10.2f\n", "Налог:", tax);printf("\t\t\t\t%-10s\t%10.2f\n", "Транспортировка:", ship);printf("\t\t\t\t\t\t______________\n);printf("\t\t\t\t%-10s\t%10.2f","Всего: ",total);}

Деление нацело

Оператор % используется для расчета остатка от деления нацело. Если вы используете оператор деления (/) для целочисленных данных, то результат деления тоже всегда будет целым числом. Например, при делении 12 на 5 (12/5) вы получите 2, а не 2.4. Дробная часть, равная в данном случае 0.4, при делении целых чисел отбрасывается.

Разумеется, нередко возникает необходимость узнать значение остатка от деления. Пока мы имеем дело с целыми числами, мы не можем использовать значение 0.4, так как это число относится к типу float. Мы же определили результат деления как целое. В этом случае получается, что число 12 состоит из двух чисел 5, а лишняя двойка просто игнорируется. Число 2 в данном случае является остатком от деления нацело, для получения которого и используется оператор %. Остаток от деления нацело также всегда является целым числом.

В качестве примера приведен Листинг 2. В этой программе подсчитывается количество банкнот достоинством в двадцать, десять, пять и один доллар, необходимых для уплаты определенной суммы. Наиболее существенным, на что следует обратить внимание в этом примере, является алгоритм, то есть способ использования операции деления нацело при выполнении задачи, решение которой в другом случае потребовало бы произведения более сложных расчетов. Как и все прочие алгоритмы, данный алгоритм выглядит очень простым, стоит только понять его основную идею.