Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Ищите образцы

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

В качестве примера возьмем знакомую программу, в которой мы использовали деление нацело, чтобы на- брать определенную сумму денег (см. Листинг6.2). Следующую последовательность инструкций можете рассматривать как образец:

twenties = amount / 20; r20 = amount % 20; tens = r20 / 10;

r10 = r20 % 10;

fives = r10 / 5; ones = r10 % 5;

Обратите внимание на то, что переменные справа от знака равенства используются дважды: один раз с оператором деления (/), второй раз с

Рис. 6.12. Образец в программе из Листинга 6.2

оператором получения остатка от деления нацело (%). Заметьте также, что результат вычисления остатка от деления нацело используется в следующей за ним строке. На рис.6.12 проиллюстрирован приведенный образец.

Эту программу можно легко расширить распространением приведенного образца на другие уровни. На- пример, если вы хотите использовать банкноты достоинством 50 долларов, то можете модифицировать программу, добавив следующие строки:

fifties = amount / 50; r50 = amount % 50; twinties = r50 / 20; r20 = r50 % 20;

В тот же образец мы добавили две новые инструкции и слегка видоизменили строку, в которой рассчиты- вается количество двадцатидолларовых банкнот.

Диагностические проблемы

Если вы не до конца уверены, что с результатами работы программы все обстоит благополучно, попробуй- те ввести дополнительные функции printf(). Разделите весь процесс на такое количество дискретных опе- раций, какое только возможно. После каждой операции, изменяющей значение переменной, помещайте функцию printf(), отображающую текущее значение переменной, даже если оно не интересует вас в каче- стве конечного результата.

При выполнении программы следите за тем, что выводят на экран эти дополнительные функции printf() и сравнивайте с тем, что вы ожидали увидеть. Появление первого неправильного значения укажет путь к исправлению ошибки. Например, если при работе программы расчета заработной платы появятся сле- дующие сообщения:

Значение regular равно 400 значение extra равно -2 значение d_time равно 40

отрицательное значение переменной extra, содержащей значение оплаты сверхурочных, должно немед- ленно насторожить вас. Можно предположить, что проблема кроется в неправильных инструкциях где-то перед функцией printf(), отображающей значение этой переменной. После исправления ошибки дополни- тельные инструкции вывода можно убрать из текста программы.

Вопросы

  1. В чем заключается различие между операторами / и %?

  2. Можно ли использовать разные типы данных в одной операции? Ес- ли да, то как это отразится на результатах операции?

  3. Что такое выражение?

  4. Где можно использовать выражение?

  5. Опишите порядок приоритета арифметических операторов.

  6. Зачем при записи операций используют круглые скобки?

  7. Объясните разницу между инструкциями count=count+1 и count++.

  8. Что такое аккумулятор?

  9. Дайте описание оператора присваивания.

  10. В чем разница между --count и count--?

Упражнения

  1. Напишите программу, которая сообщает пользователю, сколько лет ему будет в 2000 году.

  2. Напишите программу расчета квадрата и куба числа, введенного с клавиатуры.

  3. Напишите программу перевода температуры из шкалы Фаренгейта

(F) в шкалу Цельсия (C). Формула пересчета C=(5.0/9.0)Ф(F–32).

  1. Модифицируйте программу из упражнения 3 так, чтобы она сооб- щала, на сколько градусов отстоит введенное значение температу- ры от точки замерзания по шкале Фаренгейта и по шкале Цельсия.

  2. Объясните, почему следующая программа написана неверно:

  1. #define TAX_RATE 0.06

  2. main()

8. {

  1. float cost, total;

  2. printf("Введите стоимость единицы товара: ");

  3. scanf("%f", &cost);

  4. printf("Введите величину транспортных расходов: ");

  5. scanf("%f", &shipping);

  1. total = cost + cost * tax_rate + shipping;

  2. printf("Общая стоимость составляет %f", total);

}