|
Программирование >> Инициализация объектов класса, структура
string rsp; int vail, va12; cout << Введите два числа: ; c-in >> vail >> va12; cout << Сумма << vail << и << va12 << = << vail + va12 << \n\n << Продолжить? [да][нет] ; cin >> rsp; while ( rsp[0] != n ); do { ... } while ( int iva1 = get response() ); do { int ival = get response(); if ( iva1 == some value () ) break; } while ( iva1 ); if ( !iva1 ) Упражнение 5.15 Напишите небольшую программу, которая запрашивает у пользователя две строки и печатает результат лексикографического сравнения этих строк (строка считается меньшей, если идет раньше при сортировке по алфавиту). Пусть она повторяет эти действия, пока пользователь не даст команду закончить. Используйте тип string, сравнение строк и цикл do while. 5.8. Инструкция break Инструкция break останавливает циклы for, while, do while и блока switch. Выполнение программы продолжается с инструкции, следующей за закрывающей фигурной скобкой цикла или блока. Например, данная функция ищет в массиве целых чисел определенное значение. Если это значение найдено, функция сообщает его индекс, в противном случае она возвращает -1. Вот как выглядит реализация функции: потому что до условной части инструкции do while мы дойдем только после первого выполнения тела цикла. Упражнение 5.14 Какие ошибки допущены в следующих циклах do while: / / возвращается индекс элемента -1 int search( int *ia, int size, int value ) { проверка что ia != 0 и size > 0 ... int loc = -1; for ( int ix = 0; ix < size; ++ix ) { if ( value == ia[ ix ] ) { нашли! запомним индекс и выйдем из цикла 1oc = ix; break; } конец цикла сюда попадаем по break ... return 1oc; В этом примере break прекращает выполнение цикла for и передает управление инструкции, следующей за этим циклом, - в нашем случае return. Заметим, что break выводит из блока, относящегося к инструкции for, а не if, хотя является частью составной инструкции, соответствующей if. Использование break внутри блока if, не ошибка: неверное использование break if ( ptr ) { if ( *ptr == quit ) break; ... входящего в цикл или в switch, является синтаксической ошибкой: Если эта инструкция используется внутри вложенных циклов или инструкций switch, она завершает выполнение того внутреннего блока, в котором находится. Цикл или switch, включающий тот цикл или switch, из которого мы вышли с помощью break, white ( cin >> inBuf ) { switch( inBuf[ 0 ] ) { case -: for ( int ix = 1; ix < inBuf.size(); ++ix ) { if ( inBuf[ ix ] == ) break; #1 ... ... break; #2 case +: ... продолжает в1нолняться. Например: while ( cin >> inBuf ) { if ( inBuf[0] = ) continue; завершение итерации обработка слова слову. Инструкция continue может быть использована только внутри цикла. 5.10. Инструкция goto Инструкция goto обеспечивает безусловный переход к другой инструкции внутри той же функции, поэтому современная практика программирования выступает против ее применения. Синтаксис goto следующий: goto метка; где метка - определенный пользователем идентификатор. Метка ставится перед инструкцией, на которую можно перейти с помощью goto, и должна заканчиваться двоеточием. Нельзя ставить метку непосредственно перед закрывающей фигурной end: ; пустая инструкция скобкой. Если же это необходимо, их следует разделить пустой инструкцией: Переход через инструкцию объявления в том же блоке с помощью goto невозможен. Например, данная функция вызывает ошибку компиляции: Инструкция break, помеченная #1, завершает выполнение цикла for внутри ветви case - блока switch, но не сам switch. Аналогично break #2 завершает выполнение блока switch, но не цикла while, в который тот входит. 5.9. Инструкция continue Инструкция continue завершает текущую итерацию цикла и передает управление на вычисление условия, после чего цикл может продолжиться. В отличие от инструкции break, завершающей выполнение всего цикла, инструкция continue завершает выполнение только текущей итерации. Например, следующий фрагмент программы читает из входного потока по одному слову. Если слово начинается с символа подчеркивания, оно обрабатывается, в противном случае программа переходит к новому
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |