Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
6. Модифицируйте функцию get_first() из листинга 8.8 так, чтобы она возвращала первый встреченный непробельный символ. Протестируйте ее в какой-нибудь простой программе.
7. Модифицируйте упражнение по программированию 8 из главы 7 так, чтобы пункты меню помечались буквами, а не цифрами; для прекращения ввода используйте букву q вместо цифры 5.
8. Напишите программу, которая выводит на экран меню, предлагающее выбрать сложение, вычитание, умножение или деление. После выбора программа должна запросить два числа и затем выполнить затребованную операцию. Программа должна принимать только варианты, предлагаемые в меню. Для чисел должен использоваться тип float и программа должна предоставлять пользователю возможность повторно вводить числа, если он ввел нечисловые данные. В случае деления программа должна предложить пользователю ввести другое значение, если он ввел для второго операнда значение 0. Выполнение такой программы должно иметь примерно такой вид:
Выберите желаемую операцию: с. сложение в. вычитание
у. умножение д. деление
з. завершение с
Введите первое число: 22.4 Введите второе число: один один не является числом.
Введите число, такое как 2.5, -1.78Е8 или 3: 1
22.4 + 1 = 23.4
Выберите желаемую операцию: с. сложение в. вычитание
у. умножение д. деление
з. завершение д
Введите первое число: 18.4 Введите второе число: 0 Введите число, отличное от 0: 0.2
18.4 / 0.2 = 92
Выберите желаемую операцию: с. сложение в. вычитание
у. умножение д. деление
з. завершение s
Программа завершена.
9
Функции
В ЭТОЙ ГЛАВЕ...
• Ключевые слова: return
• Операции: * (унарная), &(унарная)
• Функции и их определение
• Использование аргументов и возвращаемых значений
• Использование переменных-указателей в качестве аргументов функций
• Типы функций
• Прототипы ANSI С
• Рекурсия
326 Глава 9
К
ак вы собираетесь организовать программу? Проектная философия С предусмат ривает использование функций в качестве строительных блоков. Мы уже полагались на стандартную библиотеку С, когда применяли такие функции, как printf(), scanf(), getchar(), putchar() и strlen(). Теперь мы готовы перейти к более активным действиям — созданию собственных функций. Некоторые аспекты этого процесса затрагивались в предшествующих главах, а в этой главе вся ранее полученная информация будет объединена и расширена.
Обзор функций
Прежде всего, что собой представляет функция? Функция — это самодостаточная единица кода программы, спроектированная для выполнения отдельной задачи. Структура функции и способы ее возможного использования определяются синтаксическими правилами. В языке С функция играет ту же самую роль, которую в других языках программирования играют функции, подпрограммы и процедуры, хотя детали могут отличаться. Некоторые функции приводят к выполнению действия. Например, функция printf() выводит данные на экран. Другие функции возвращают значение, которое будет применяться в программе. Например, функция strlen() сообщает программе длину указанной строки. В общем случае функция может одновременно выполнять действия и возвращать значения.
Почему вы должны использовать функции? Прежде всего, они избавляют от необходимости в многократном написании одного и того же кода. Если в программе нужно выполнять определенную задачу несколько раз, достаточно однажды написать подходящую функцию. Затем эту функцию можно применять внутри программы там, где она необходима, или же использовать ее в разных программах, подобно тому, как во многих программах была задействована функция putchar(). Кроме того, даже если задача решается всего лишь один раз в единственной программе, использование функции имеет смысл, т.к. это делает программу более модульной, таким образом улучшая ее читабельность и упрощая внесение изменений либо исправлений. Для примера предположим, что нужно написать программу, которая выполняет следующие действия:
• читает список чисел;
• сортирует эти числа;
• находит среднее значение этих чисел;
• выводит гистограмму.
Можно было бы написать такую программу:
Функции 327
Конечно, вам придется также написать четыре функции readlist(), sort(), average() и bargraph(), но это уже детали. Описательные имена функций проясняют назначение и организацию программы. Затем над каждой функцией можно работать по отдельности, пока она не начнет успешно справляться со своей задачей, а после того, как вы сделаете эти функции достаточно общими, их можно будет многократно применять в других программах.
Многие программисты предпочитают думать о функции как о “черном ящике”, определенном в терминах информации, которая в него поступает (его ввод), и значения или действия, которое он производит (его вывод). Вас не заботит то, что происходит внутри черного ящика, если только вы сами не занимаетесь разработкой этой функции. Например, когда вы используете функцию printf(), то знаете, что должны передать ей управляющую строку и возможно некоторые аргументы. Вам также известен вывод, который функция printf() должна сгенерировать. Однако вы вовсе не задумываетесь о коде, реализующем printf(). Такой подход в отношении функций позволяет сосредоточиться на общей структуре программы, не отвлекаясь на детали. До того, как приступать к написанию кода, тщательно обдумайте, что должна делать функция и какова ее роль в программе.
Что вы должны знать о функциях? Необходимо знать, как их правильно определять, вызывать и обеспечивать взаимодействие между ними. Чтобы освежить эти моменты в памяти, мы начнем с рассмотрения очень простого примера, а затем будем добавлять в него новые возможности, пока не будет получена полная картина.
Создание и использование простой функции
Нашей первой скромной целью является создание функции, которая выводит 40 звездочек в строке. Чтобы придать этой функции смысл, мы включим ее в программу, которая выводит простой заголовок письма. Полный код программы приведен в листинге 9.1. Она состоит из функций main() и starbar().
Листинг 9.1 .Программа lethead2. с
328 глава 9
Вывод программы выглядит следующим образом:
************★★★★**★★★★★★★★★★★★★★*★★★★★★★
GIGATHINK, INC.
101 Megabuck Plaza
Megapolis, CA 94904
****************************************
Анализ программы
Ниже отмечены некоторые важные аспекты этой программы.
• Идентификатор starbar применяется в трех отдельных контекстах: в прототипе функции, который сообщает компилятору разновидность функции starbar(), в вызове функции, который приводит к выполнению функции, и в определении функции, где в точности указано все, что делает функция.
Читать дальшеИнтервал:
Закладка: