Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Цикл DO - WHILE





 

Как уже отмечалось в главе 1, циклы WHILE и FOR обладают

тем приятным свойством, что в них проверка окончания осущес-

твляется в начале, а не в конце цикла. Третий оператор цикла

языка "C", DO-WHILE, проверяет условие окончания в конце,

после каждого прохода через тело цикла; тело цикла всегда

выполняется по крайней мере один раз. Синтаксис этого опера-

тора имеет вид:

 

DO

оператор

WHILE (выражение)

 

Сначала выполняется оператор, затем вычисляется выражение.

Если оно истинно, то оператор выполняется снова и т.д. Если

выражение становится ложным, цикл заканчивается.

 

Как и можно было ожидать, цикл DO-WHILE используется

значительно реже, чем WHILE и FOR, составляя примерно пять

процентов от всех циклов. Тем не менее, иногда он оказывает-

ся полезным, как, например, в следующей функции ITOA, кото-

рая преобразует число в символьную строку (обратная функции

ATOI). Эта задача оказывается несколько более сложной, чем

может показаться сначала. Дело в том, что простые методы вы-

деления цифр генерируют их в неправильном порядке. Мы пред-

почли получить строку в обратном порядке, а затем обратить

ее.

ITOA(N,S) /*CONVERT N TO CHARACTERS IN S */

CHAR S[];

INT N;

{

INT I, SIGN;

 

IF ((SIGN = N) < 0) /* RECORD SIGN */

N = -N; /* MAKE N POSITIVE */

I = 0;

DO { /* GENERATE DIGITS IN REVERSE ORDER */

S[I++] = N % 10 + '0';/* GET NEXT DIGIT */

} WHILE ((N /=10) > 0); /* DELETE IT */

IF (SIGN < 0)

S[I++] = '-'

S[I] = '\0';

REVERSE(S);

}

 

Цикл DO-WHILE здесь необходим, или по крайней мере удобен,

поскольку, каково бы ни было значение N, массив S должен со-

держать хотя бы один символ. Мы заключили в фигурные скобки

один оператор, составляющий тело DO-WHILе, хотя это и не

обязательно, для того, чтобы торопливый читатель не принял

часть WHILE за начало оператора цикла WHILE.

 







Date: 2015-09-17; view: 316; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию