Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

2. При написании функции starbar мы следовали тем же правилам, что и при написании main: вначале указывается имя, затем идет открывающая фигурная скобка, приводится описание используемых переменных, даются операторы, определяющие работу функции, и, наконец, закрывающая фигурная скобка. Мы даже поместили перед описанием функции starbar директивы #define и #include, требующиеся для нее, а не для функции main.

РИС. 9.2. Структура простой функции.

3. Мы включили функции starbar и main в один файл. Вообще говоря, можно было создать два отдельных файла. Один файл несколько упрощает компиляцию, а два отдельных файла облегчают использование одной функции в разных программах. Случай двух и более файлов мы обсудим позже, а пока будем держать все наши функции в одном месте. Закрывающая фигурная скобка функции main указывает компилятору на се конец. Круглые скобки в имени starbar говорят о том, что starbar– это функция. Обратите внимание, что здесь за именем starbar не следует символ "точка с запятой"; его отсутствие служит указанием компилятору, что мы определяем функцию starbar, а не используем ее.

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

АРГУМЕНТЫ ФУНКЦИИ

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

Рассмотрим это более конкретно. В строке, состоящей из звездочек, 65 символов, а в строке MEGATHINK, INC.
– 15. Поэтому в нашем первом варианте программы вслед за этим сообщением шло 50 пробелов. Чтобы сместить текст к центру, нужно сначала напечатать 25 пробелов, а потом текст, в результате чего слева и справа от данной фразы окажется по 25 пробелов. Следовательно, необходимо иметь возможность передать величину "25" функции, печатающей пробелы. Мы применяем тот же способ, что и при передаче символа '*' функции putchar: используем аргумент. Тогда запись space(25) будет означать, что необходимо напечатать 25 пробелов. 25 - это аргумент. Мы будем вызывать функцию space три раза: один раз для каждой строки адреса. Вот как выглядит эта программа:

/* титул фирменного бланка2 */

#define NAME "MEGATHINK, INC."

#define ADDRESS "10 Megabuck Plaza"

#define PLACE "Mcgapolis, CA 94904"

main

{

int spaces; 

starbar;

space(25); /* space использует в качестве аргумента константу*/

printf("%s\n", NAME);

spaces = (65 - strlen(ADDRESS))/2;

/* мы заставляем программу вычислять, сколько пропустить пробелов */

space(spaces); /* аргументом является переменная */

printf("%s\n", ADDRESS);

space((65 - strlen(PLACE))/2); /* аргументом является выражение */

printf(" %s \n", PLACE);

starbar;

}

/* определение функции starbar */

#include

#define LIMIT 65

starbar

{

int count;

for (count = 1;count <= LIMIT;count++) putchar('*');

putchar('\n');

}

/* определение функции space */

space(number)

int number; /* аргумент описывается перед фигурной скобкой */

{

int count /* дополнительная переменная описывается

после фигурной скобки */

for (count = 1;count <= number;count++)

putchar(' ');

}

РИС. 9.3. Программа, печатающая титул фирменного бланка.

  • Читать дальше
  • 1
  • ...
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: