Четвертый принцип, которому мы следуем, заключается в том, чтобы помещать каждый оператор на отдельной строке. Опять же это только соглашение, которое никак не регламентируется правилами языка, так как Си имеет "свободный формат". Вы можете поместить несколько операторов на одной строке или распространить один оператор на несколько строк. Нижеследующий пример является абсолютно правильной программой:
main()
{
int four; four = 4;
printf(" %d \n", four);
}
Совершенно очевидно, что символ "точка с запятой" указывает компилятору, где кончается один оператор и начинается следующий, но логика программы окажется проще, если вы последуете соглашениям, приведенным выше. Поскольку в нашем примере запутанной логики нет, вид программы в данном случае не влияет на понимание ее смысла, но, по нашему мнению, лучше прививать хорошие привычки с самого начала.
РИС. 2.5. Способы улучшения читаемости программы.
СЛЕДУЮЩИЙ ШАГ
main()/* Переводит 2 морские сажени в футы*/
{
int feet, fathoms;
fathoms = 2;
feet = 6 *fathoms;
printf (" В %d морских саженях содержится %d футов!", feet, fathoms);
}
Что здесь нового?
Во-первых, мы описали две переменные вместо одной. Для этого потребовалось только разделить в операторе описания имена двух переменных запятой.
Во-вторых, мы выполнили вычисления использовали громадную вычислительную мощность нашего компьютера для умножения 2 на 6. В Си, так же как и во многих других языках, символ * обозначает умножение. Поэтому смысл оператора
feet = 6 *fathoms;
заключается в следующем: взять величину переменной fathoms, умножить ее на 6 и присвоить результат переменной feet. (Судя по этой парафразе, обычный английский язык менее лаконичен, чем простой язык Си; это одна из причин, лежащих в основе разработки языков программирования.)
И наконец, мы использовали функцию printf() более сложным образом. Если вы выполните эту программу на компьютере, то результат должен выглядеть так:
Можно заметить, что было произведено две подстановки: первое вхождение символов %d в строку, заключенную в кавычки, было заменено значением
первой переменной (fathoms) из списка, следующего за указанной строкой, а второе значением второй переменной (feet) из этого же списка. Обратите внимание, что список печатаемых переменных расположен в конце оператора.
Область применения данной программы несколько ограниченна, но она может послужить прообразом программы перевода морских саженей в футы. Все, что нам потребуется специальный способ присваивания произвольных значений переменной feet; о том, как это делается, вы узнаете несколько позже.
ДОПОЛНИТЕЛЬНЫЙ ПРИМЕР
{
printf("Я вызываю функцию butler.\n");
butler();
printf ("Да. Принесите мне чашку чая и гибкие диски.\n");
}
butler()
{
printf("Bы вызывали, сэр?\n");
}
Результаты работы программы выглядят следующим образом:
Я вызываю функцию butler. Bы вызывали, сэр? Да. Принесите мне чашку чая и гибкие диски.
Функция butler() определяется точно так же, как и функция main(); ее тело заключено в фигурные скобки. Вызов функции осуществляется путем простого указания ее имени, включая круглые скобки. Мы вернемся к этому важному вопросу только в гл. 9, а здесь хотели продемонстрировать ту легкость, с которой вы можете включать в программу свои собственные функции.
ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ
Как назвать файл, содержащий вашу программу: eye.с, или black.с, или infan.c и т. п.
Какое имя можно использовать в качестве названия программы, состоящей из одной функции: main().
Структура простой программы: заголовок, тело, фигурные скобки, операторы. Как описать целую переменную: int varname;
Как присвоить значение переменной: varname = 1024;
Как напечатать фразу printf ("Хотите купить утку?");
Как напечатать значение переменной: printf ("%d", varname);
Символ новая строка: \n
Как включать комментарии в программу: /*анализ движения наличных денег*/
ВОПРОСЫ И ОТВЕТЫ
Вопросы
1. Икабод Боуди Марфут (ИБМ)подготовил программу, приведенную ниже, и принес ее вам для проверки. Пожалуйста, помогите ему найти в ней ошибки.
include studio, h main{} /*эта программа печатает число недель в году/*
(
int s
s: = 56;
print (В году s недель.);
2. Что будет напечатано в каждом из примеров, приведенных ниже, в предположении, что они являются частями некоторых полных программ?
a. printf(" Б-э-э Б-э-э, Черная Овца.");
а. printf("У тебя есть шерсть?\n");
б. рrintf("Убирайся!\n Мешок сала!");
в. printf("Что?\n Нет/n Кларнет?\n");
г. int num;
num = 2;
printf(" %d + %d = %d", num, num, num + num);
Ответы
1.
Строка 1:
данная строка должна начинаться с символа # правильное написание имени файла stdio.h; имя файла должно быть заключено в угловые скобки.
Строка 2:
вместо фигурных скобок {} необходимо использовать круглые ();
комментарий должен оканчиваться символами */, а не /*
Строка 3:
вместо круглой скобки ( должна стоять фигурная {.
Строка 4:
оператор должен оканчиваться символом "точка с запятой".
Строка 5:
эту строку (пустую) м-р ИБМ написал Совершенно правильно!
Строка 6:
в операторе присваивания необходимо использовать символ =, а не :=. (К сожалению, м-р ИБМ имеет представление о языке Паскаль.)