Умный дом

Циклы

Циклы выполняют выражения или блоки выражений до тех пор, пока выражение условия не становится истинным. Наша программа требует двух циклов (один вложен в дру­гой). Пока пользователь желает угадывать последовательно­сти:

{ выводить на дисплей последовательности

Пока догадка неверна, а пользователь желает угадать еще

Раз}

Цикл while в С++ вполне подходит для нашей цели:

Bool next_seq = true; // показать следующую последовательность?

Bool go_for_it = true; // пользователь хочет продолжить угадывание?

Bool got_it = false; // пользователь угадал?

Int num_tries = 0; // количество попыток

Int num_right = 0; // количество правильных ответов

While (next_seq == true){

11 вывести на дисплей последовательность для пользователя while ((got_.it == false) && (go_for_.it == true)) { int usr_guess; сіп » usr_guess; num_tries++;

If (usr_guess == next_elem) { got_it = true;

Num_cor++; }

Else {

// пользователь не угадал // сказать, что ответ неверен // спросить, еще угадываем?

If (usr_rsp == "N" И usr_rsp == V) go_for_it =

False;

}

} // конец вложенного цикла while cout « "Want to try another sequence? (Y/N) " char try_again; cin » try-again;

If (try_again == "N" II try_again == "n")next_seq = false;

) // конец while(next_seq == true)

Цикл while начинается с вычисления выражения условия в круглых скобках. Если оно истинно, выражение или блок выражений, следующий за циклом while, выполняется. Пос­ле выполнения выражения (блока) выражение условия об­новляется. Этот цикл обновления/выполнения продолжает­ся, пока условие не станет ложным. Обычно некоторое условие внутри исполняемого блока устанавливает условное выражение в состояние false. Если выражение условия ни­когда не становится ложным, мы говорим, что ошибочно попали в бесконечный цикл.

Наш внешний цикл while выполняется, пока пользова­тель не скажет, что хочет остановиться:

Bool next_seq = true;

While (next_seq == true) { // ...

If (try_again == "N" II try_again == "n")next_seq = false;

Где при инициализации next__seq в false блок выражений не будет выполняться. Вложенный цикл while позволяет пользователю выполнять множество аналогичных попыток.

Цикл может быть прерван внутри выполняемого блока выполнением выражения break. В следующем фрагменте кода цикл while выполняется, пока tries__cnt не станет рав­но max_tries. Однако если пользователь дает правильный ответ, цикл прерывается выражением break:

Int max_tries = 3; int tries_cnt = 0;

While (tries_cnt < max_tries){ // прочитываем попытку пользователя if (usr_guess == next_elem) break; // прерываем цикл tries_cnt++;// more stuff

}

Программа может иметь быстрое завершение текущего выполнения цикла, выполнив выражение continue. Напри­мер, рассмотрим следующий фрагмент программы, в котором все слова, в которых больше четырех букв, отбрасываются:

String word; const int min_size = 4; while (cin » word) { if (word. size() < min_size) // прерываем этот цикл continue;

// попадаем сюда, только если слово // больше или равно min-size... process_text(word);}

Если слово меньше min_size, выполняется выражение continue. Результатом выполнения выражения continue яв­ляется прерывание текущего прохождения цикла. Остаток тела цикла while (в данном случае - process_text ()) не вы­полняется. Вернее, цикл начинается заново, с новым вычис­лением условия, которое прочитывает другое значение стро­ки в word. Если word больше или равно min__size, полное тело цикла выполняется. В этом случае все слова, имеющие боль­ше четырех букв, отбрасываются.

Умный дом

Вторая версия основной программы на языке С++

/****************^ * TOC o "1-3" h z Copyright (С) 2006 by Vladimir Gololobov * * vgololobov@yandex. ru * * * * This program is free software; you can redistribute it …

Две полезные схемы

Первая схема относится к настенному выключателю, работа­ющему по протоколу XI0. Что полезного можно почерпнуть из этой схемы? Например, организацию сканирования сети и управления триаком. Схему я привожу, как она сохранилась …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия
+38 050 512 11 94 — гл. инженер-менеджер (продажи всего оборудования)

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Оперативная связь

Укажите свой телефон или адрес эл. почты — наш менеджер перезвонит Вам в удобное для Вас время.