Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
128
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

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

Если вы не до конца уверены, что с результатами работы программы все обстоит благополучно, попробуйте ввести дополнительные функции 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).

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

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

#define TAX_RATE 0.06

main()

{

float cost, total;

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

scanf("%f", &cost);

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

scanf("%f", &shipping);

total = cost + cost * tax_rate + shipping;

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

}

Глава 7. Для чего нужны функции

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

Ваша программа тоже может страдать от отсутствия порядка. Как только она начнет приобретать достаточно большие размеры, работать, оставаясь в пределах одной функции main(), будет все труднее. Программные коды, к сожалению, нельзя разложить по полкам, но их можно распределить по функциям.

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

Си или Си++. Вы вызываете функцию для выполнения определенной задачи, передавая ей аргументы и получая от нее результат.

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

Рис. 7.1. Многократный вызов функции

потребовалось временно приостановить вывод информации на дисплей, достаточно просто вызвать данную функцию (рис.7.1).

Вы можете использовать функции для структурирования сложной программы. Попытайтесь поделить программу на блоки, каждый из которых выполняет какую-то одну вполне законченную задачу. Эти блоки, в свою очередь, при необходимости также можно разделить на меньшие. Продолжайте деление на все более мелкие части до тех пор, пока остается возможность написать инструкции для выполнения самостоятельной задачи. Каждый такой набор инструкций помещается в свою собственную функцию. Как только вы напишите все необходимые функции и объедините их функцией main() — программа готова!