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

Типы данных и функции

Тип, присвоенный константе или переменной, определяет то, каким образом функции могут их использовать. Большинство функций может использовать в качестве параметров только данные определенного типа. Например, функция puts() может работать только со строками, так что при компиляции программы

#define PI 3.14

main()

{

puts(PI);

}

будет возникать ошибка. Функция puts() не может работать с вещественными числами.

Распространенной ошибкой начинающих программистов является использование двойных кавычек при попытке определить символьную константу:

#define INITIAL "A"

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

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

Литералы

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

count = 5;

число 5 является литералом. Это означает, что вы хотите, чтобы именно это число было присвоено переменной в качестве ее значения. В примере:

#define INIT 'C'

rate = 0.55;

client = "Кейт";

puts("555-1234");

буква C, число 0.55, слово Кейт и телефонный номер 555-1234 являются литералами.

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

Данные имеют огромное значение для программы на языке Си. Если перед тем как писать программу вы не решите как именно будете использовать данные, вероятность ошибок компиляции и выполнения вырастет во много раз.

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

____________________

* В литературе чаще используется термин «константное выражение». (Прим.перев.)

Фактически, многие программисты начинают писать план программы именно с вывода. Определив, какую именно информацию вы хотите получить от программы, легче определить, какую информацию необходимо ввести и как ее следует обрабатывать.

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

  1. Решить, какая информация необходима программе:

  • Вывод — объем всех продаж плюс налог на продажи.

  • Для того чтобы получить эту информацию, необходимо ввести: стоимость каждого наименования товара и ставку налога. Стоимость товара считается в долларах, следовательно, необходимо определить переменную типа float. Ее можно назвать sale. Ставка налога является для каждого штата фиксированной величиной, так что ее можно определить как константу. Назовем ее TAX_RATE.

  • Программа должна умножить стоимость товара на ставку налога. Например, если цена равна 25.00 доллара, а ставка налога равна 0.05, величина налога на продажи составит 1.25 доллара. Для хранения этого значения нужна переменная типа float. Назовем ее sales_tax.

  • Программа должна прибавить сумму налога к цене товара для того, чтобы получить стоимость с учетом налога. В нашем примере эта стоимость равна 26.25 доллара. Для хранения этого значения необходима переменная типа float. Назовем ее total.

  • Написать директивы #define для определения необходимых констант: #define TAX_RATE 0.05

  • Написать определения переменных: float sale, sales_tax, total;

    Теперь, когда вы спланировали все необходимые данные, можно приступать к написанию программы.

    <>

    Вопросы

    1. Что такое тип данных char?

    2. Чем символ '3' отличается от числа 3?

    3. Какой тип данных вы используете для записи стоимости товара в долларах?

    4. Почему может быть необходимо использование в программе типа данных long int?

    5. Для чего используется тип double float?

    6. В чем заключается различие между константой и переменной?

    7. Как определить константу?

    8. Поддерживает ли Си строковый тип данных?

    9. Сохраняет ли переменная свое значение в ходе выполнения всей программы?

    10. Как изменить значение константы?

    <>

    Упражнения

    1. Решите, какие типы данных вам необходимы, и напишите их определения для программы, которая рассчитывает недельную заработную плату сотрудника, получающего двойную оплату за сверхурочные часы (рабочая неделя — 40 часов).

    2. Решите, какие типы данных вам необходимы и напишите их определения для программы, которая рассчитывает сумму и среднее арифметическое значение четырех чисел.

    3. Объясните, какие ошибки имеются в следующих инструкциях:

    char client[3]="Ajax";

    main()

    float tax_due;

    char name(10);

    int count(5);

    tax_due = "$1635.00";

    ГЛАВА 4. ВЫВОД В СИ/СИ++

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

    Вывод данных не означает, что они удаляются из памяти компьютера или что изменяется способ их хранения, компьютер просто копирует данные и посылает их куда-то еще.

    В этой главе вы научитесь выводить данные на экран монитора.

    Все функции вывода языка Си поддерживаются компиляторами Си++.

    Функции, используемые для вывода данных, зависят от типа данных и способа их представления. Наиболее прост вывод строк и символьных данных.