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

2.2.Операции над целыми числами

Рассмотрим задачу. В банкомате имеются купюры достоинством 1000, 500, 100 и 50 рублей. Пользователь попросил выдать некоторую сумму денег наиболее крупными купюрами. Будем считать, что в банкомате купюр каждого номинала больше, чем может потребоваться, и что пользователь ввел корректную сумму, которую можно выдать с помощью имеющихся денег. Нужно написать программу, которая бы рассчитала количество банкнот каждого номинала.

Решение задачи приведено на рис. 5.

Рис. 5 Пример программы

Во 2 и 3 строках программы на русском языке написано описание того, что она делает. Подобное описание называется комментарий к программе. Он очень помогает при создании программ, поскольку всегда можно быстро вспомнить, зачем используются тот или иной код.

Компилятор языка С не понимает русского языка и будет считать этот комментарий синтаксической ошибкой. Для того, чтобы компилятор не обращал внимание на текст, написанный для программиста, его нужно отметить с помощью специальных символов. В первой строке программа написаны символы («/*»), которые обозначает начало комментария, а в 4 строке, – символы обозначающие конец комментария («*\»).

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

Функции в 8 и 9 строках предлагают пользователю ввести сумму и записывают ее в переменную «a».

В 10 строке печатается сообщение пользователю. В конце сообщения написаны символы «\n». Обратная наклонная черта («\») означает, что следующий за ней символ не следуют печатать, а следует воспринимать как специальную команду. В частности «\n» означает, что нужно последующий вывод на экран производить со следующей строки. Символы «\n» полезно запомнить, поскольку они позволяют упорядочить вывод на экран в учебных программах. С остальными аналогичными символами мы ознакомимся позднее.

Первым шагом нам нужно определить, какое количество банкнот по 1000 рублей потребуется для выплаты этой суммы. Очевидно, что для этого нужно разделить сумму на 1000. В языке С оператор деления записывается с помощью прямой наклонной черты «/». В 11 строке в переменную «b» записывается результат деления «a» на 1000.

Результат деления может быть как целым числом, так и иметь дробную часть или остаток. Переменная «b» может хранить только целое (без дроби и остатка), поэтому в языке С операция деления, выполненная над целыми числами, возвращает только результат деления, а остаток просто отбрасывается.

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

В 12 строке программа печатает количество 1000-ых банкнот. В ней не показано никаких новых особенностей языка С, однако не лишним будет вспомнить значение цепочек символов «%i» и «/n».

В 13 строке мы находим сумму, которую осталось выплатить после того, как мы отдали 1000-ые банкноты. Нетрудно догадаться, что операторы «–» и «*» означают вычитание и умножение соответственно. Интерес в этой строке представляет порядок действий. Как и в математике, выполняющие арифметические действия операторы имеют приоритеты. Операторы с более высоким приоритетом будут выполняться первыми. Так, у оператора умножения приоритет выше, чем у оператора сложения, потому сначала будет выполнено умножение, а потом сложение. Если при составлении выражения нет уверенности в приоритетах операторов, то порядок действий, как и в математических выражениях, можно указать с помощью круглых скобок.

В строках 14 и 15 повторяются ранее рассмотренные действия, но уже для банкнот достоинством 500 рублей. В 16 строке мы видим новый оператор «%», который находит остаток от деления.

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

Мы рассмотрели все арифметические операторы над целыми числами типа «int». Есть и другие операторы, например, логические, которые будут рассмотрены в следующих лабораторных работах.

В заключении отметим, что этот тип может иметь квалификаторы, которые уточняю сведения о типе. Квалификатор «short» указывает на то, что переменная будет принимать небольшие значения, и для нее можно отвести меньше места, а квалификатор «long», наоборот, говорит о том, что значением переменной может быть очень большим. Квалификатор «unsigned» применяется в том случае, если переменная будет принимать только положительные значения. Квалификатор указывается перед именем типа, например, можно сделать такое объявление: «long int a;».

Объем памяти, занимаемый переменной того или иного типа памяти, зависит от используемого компилятора. Определить объем занимаемой памяти в байтах можно с помощью директивы sizeof. Например, выражение «sizeof(int)» эквивалентно константе, равной размеру переменной целого типа.