Чтение онлайн

на главную - закладки

Жанры

Язык Си - руководство для начинающих

Д. МАРТИН

Шрифт:

{

 большое количество операторов;

scanf("%d", &score);

}

дополнительная чепуха;

4. Пропуск операторов до конца тела цикла: используйте оператор continue.

5. Выход из цикла: используйте оператор break. Фактически break и continue являются специальными формами оператора goto. Преимущество их использования заключается в том, что, во-первых, названия этих операторов говорят об осуществляемых ими функциях, а во-вторых, поскольку они нe используют меток, отсутствует опасность

пометить не тот оператор программы.

6. Выполнение переходов к различным частям программы непредсказуемым образом: так программировать нельзя!

Существует один случай, когда использование оператора goto допускается опытными программистами, работающими на языке Си,- это выход из вложенного набора циклов при обнаружении каких-то ошибок. (Применение оператора break даст возможность осуществить выход только из самого внутреннего цикла.)

while(funct > 0)

{

 for(i = 1; i < 100; i++)

{ for(j = 1; j<= 50; j++)

{ большое число операторов;

if(большая ошибка)

goto help;

операторы;

}

еще некоторое количество операторов; }

и еще некоторое количество операторов; }

и еще операторы;

help: устранение ошибки;

Как вы можете заметить из наших примеров, альтернативные формы представления программ более понятны, чем формы, использующие оператор goto. Эти различия станут еще большими, если вы объедините некоторые из рассмотренных случаев. Какие операторы goto используются при реализации операторов if, какие моделируют конструкции if-else, какие управляют работой циклов, а какие появляются лишь потому, что пользователь написал программу так, что не может без них обойтись? Чрезмерное увеличение оператором goto приводит к созданию лабиринта в логике программы. Дадим вам совет: если вы совсем не знакомы с оператором goto, то не применяйте его вовсе; если вы привыкли пользоваться им, попытайтесь отучить себя от этого. Ирония заключается в том, что в языке Си, который вовсе не нуждается в операторе goto, его структура оказывается лучшей, чем в большинстве других языков программирования поскольку в качестве меток можно использовать смысловые имена, а не числа.

Резюме: переходы в программах

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' используется для того, чтобы отмечать конец строки.)

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

Товарищ "Чума" 5

lanpirot
5. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 5

Страж Кодекса. Книга IX

Романов Илья Николаевич
9. КО: Страж Кодекса
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Страж Кодекса. Книга IX

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Избранный. Книга 3

Маханенко Василий Михайлович
3. Избранный
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Избранный. Книга 3

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

На границе империй. Том 2

INDIGO
2. Фортуна дама переменчивая
Фантастика:
космическая фантастика
7.35
рейтинг книги
На границе империй. Том 2

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Повелитель механического легиона. Том III

Лисицин Евгений
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том III

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10