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

Возврат значений типа float

В тех случаях, когда значения, возвращаемые функцией, относятся к типу целочисленных или символь- ных, определение типа перед именем функции не является строго обязательным. Си изначально построен таким образом, чтобы воспринимать только данные типа int или char, так что, если тип не указан, Си по- считает, что возвращаемое значение относится к типу int или char.

Рис. 7.8. Определение функции типа float

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

  1. Указать тип float перед именем функции.

  2. Определить саму функцию.

Функция определяется перед main() так же, как внешняя переменная. На рис.7.8 показано, как это сде- лать. Инструкция

float square();

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

Большинство компиляторов позволяет определять тип функции и внутри main():

main()

{

float number, value, square();

Если ваш компилятор не позволяет этого делать, определяйте функцию всегда перед main().

Использование return() в функции main()

Возможно, вы задумались над тем, что означает запись return(0) в функции main(). Обычно мы использу- ем эту инструкцию, чтобы возвратить значение функции, но куда же мы передаем 0, когда программа за- канчивается? Ответ прост: мы возвращаем его операционной системе.

При запуске программы на языке Си можно считать, что операционная система вызывает функцию main().

Когда программа заканчивает выполнение, инструкция return() возвращает управление в систему. Пара-

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

Использование макроопределений

Вы уже знаете, что, используя директиву #define, можно задавать константы. Например, если написать инструкцию #define PI 3.14, компилятор подставит значение3.14 на место всех встречающихся в програм- ме констант PI.

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

#Define enter printf("Пожалуйста, введите число: ")

Теперь, при необходимости отобразить сообщение, записанное в аргументе функции printf(), достаточно в соответствующем месте программы использовать инструкцию ENTER:

#Define enter printf("Пожалуйста, введите число: ") main()

{

int age, size; ENTER;

scanf("%d", &age); ENTER;

scanf("%d", &size);

}

Рис. 7.9. Использование макроопределения

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

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

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