Резюме: переходы в программах
I. Ключевые слова: break, continue, goto
II. Общие замечания
Выполнение каждого из этих трех операторов языка вызывает скачкообразное изменение процесса выполнения программы, т. е. переход от одной команды программы к другой (не следующий за ней непосредственно).
III. break
Оператор breakможно использовать внутри любой из трех форм цикла и конструкции switch. Его выполнение приводит к тому, что управление программой, минуя оставшуюся часть тела цикла или конструкцию switch, содержащую данный оператор, передается на следующую (за этим циклом или за конструкцией switch) команду.
Пример:
switch(number)
{
case 4: printf(" Этохорошийвыбор.\n");
break;
case 5: printf(" Это неплохой выбор.\n");
break;
default: рrintf(" Это плохой выбор.\n");
}
IV. Continue
Оператор continueможет использоваться в любой из трех форм циклов, но нe в операторе switch. Его выполнение приводит к такому изменению логики программы, что остальные операторы тела цикла пропускаются. Для циклов whileили forвслед за этим начинается новый шаг, а для цикла do whileпроверяется условие на выходе, и затем, если оно оказывается истинным, выполняется следующая итерация.
Пример
while((ch = gctchar( ))!= EOF)
{
if(ch == ' ') continue;
putchar(ch);
chcount++;
}
В этом фрагменте осуществляется эхо-печать читаемых символов и подсчитывается число символов, отличных от пробела.
V. goto
Выполнение оператора gotoвызывает передачу управления в программе оператору, помеченному указанной меткой. Для отделения оператора от соответствующей ему метки используется двоеточие. Имена меток образуются но тем же правилам, что и имена переменных. Помеченный оператор может появиться в программе текстуально до или после goto.
Форма:
goto метка;
...метка: оператор
Пример
toр : ch = getchar( );
...
if (ch != 'y')
goto top;

Массивы являются важнейшим средством языка, применяемым во многих программах. Их использование позволяет удобным способом размещать в памяти большое количество необходимой информации. Позже мы посвятим массивам целую главу, но, поскольку они очень тесно связаны с циклами, мы хотим начать их использовать уже сейчас.
Массив - это набор переменных, имеющих одно и то же базовое имя и отличающихся одна от другой числовым признаком. Например, с помощью описания
float debts [20];
объявляется, что debts- массив, состоящий из двадцати членов, или "элементов". Первый элемент массива называется debts[0], второй - debts[l], и т. д. вплоть до debts[19]. Заметим, что перечисление элементов массива начинается с 0, а не с 1. Поскольку мы объявили, что массив имеет тип float, каждому его элементу можно присвоить величину типа float. К примеру, можно писать так:
debts[5] = 32.54;
debts[6] = 1.2е+21;
Массивы могут быть образованы из данных любого типа:
int nannies[22]; /* масснв, содержащий 22 целых чнсла */
char alpha[26]; /* масснв, содержащий 26 символов */
long big[500]; /*массив, содержащий 500 целых чисел типа long */
Раньше, например, мы говорили о строках, являющихся частным случаем массива типа char. (В общем массив типа char- это массив, элементами которого являются величины типа char. Строка - массив типа char, в котором нуль-символ '\0'используется для того, чтобы отмечать конец строки.)

РИС. 8.6. Массивы символов и строки
Числа, используемые для идентификации элементов массива, называются "подстрочными индексами" или просто "индексами" . Индексами должны быть целые числа, и, как уже упоминалось, индексирование начинается с 0. Элементы массива размешаются в памяти последовательно, друг за другом, как показано на рис. 8.6.

РИС. 8.7. Размещение в памяти массивов с элементами типа charи int
Существует огромное количество возможностей применения массивов. Ниже приводится сравнительно простой пример. Предположим, вы хотите написать программу, осуществляющую ввод 10 различных результатов спортивной игры, которые будут обрабатываться позже. Используя понятие массива, вы сможете избежать придумывания 10 различных имен переменных - по одной для каждого счета. Кроме того, для чтения данных вы можете воспользоваться циклом for:
Читать дальше