Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
[ Советы ]
Приведённый цикл for имеет две небольшие проблемы. Во-первых, он деструктивен — не в том смысле, что может сжечь ваш монитор или откусить шнур мыши — а в том плане, что он изменяет значение loopCount , которое, таким образом, "уничтожается". Во-вторых, цикл получился "нисходящий", т.е. значения переменной цикла идут от больших к меньшим. Всего этого легко избежать, если добавить специальную переменную — счётчик цикла.
/* ForDemo2 — Вводится счётчик цикла. На экран выводится количество выполненных циклов for */
#include
#include
#include
using namespace std ;
int main( int nNumberofArgs , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
/* Ввод количества циклов */
int loopCount ;
cout << "Введите loopCount: " ;
cin >> loopCount ;
/* Цикл до достижения значения loopCount */
for ( int i = 1 ; i <= loopCount ; i++ )
{
cout << "Выполнено " << i << " циклов( a )\n" ;
}
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
_________________
72 стр. Часть 1. Первое знакомство с С++
Программа ForDemo2 выполняет те же действия, что и ранее рассмотренная WhileDemo . Однако вместо изменения переменной loopCount в этом варианте программы введена специальная переменная цикла.
Выполнение цикла начинается с объявления переменной i и инициализации её значением переменной loopCount . Затем проверяется, является ли переменная i положительной. Если переменная положительна, то программа выводит уменьшенное на 3 значение i и возвращается к началу цикла.
«Согласно последнему стандарту языка индексная переменная, объявленная в части инициализации циклаfor , известна только в пределах этого цикла. Программисты на С++ в этом случае говорят, что область видимости переменной ограничена цикломfor . Например, в инструкции return рассмотренного выше примера, т.е. за пределами цикла, переменнаяi недоступна и не может использоваться. Однако этого новейшего правила придерживаются далеко не все компиляторы, и вам нужно протестировать свой компилятор, чтобы узнать, как он действует в этом случае. Dev-C++ при использованииi вне цикла выводит предупреждение, но позволяет программисту поступить по своему усмотрению.»
[ Атас! ]
Избегайте бесконечных циклов...73
Бесконечным называют такой цикл, который выполняется вечно. Бесконечный цикл создаётся каждый раз, когда условие выполнения цикла выполняется всегда, обычно вследствие какой-то ошибки в коде.
В следующей разновидности рассмотренного ранее цикла
while ( loopCount > 0 )
{
cout << "Осталось выполнить" << loopCount << " циклов\n"
}
программист забыл уменьшить переменную loopCount , как это делалось в предыдущих версиях. В результате получен счётчик цикла, значение которого никогда не изменяется. При этом условие выполнения цикла будет либо всегда истинно, либо всегда ложно. Выполнение такой программы никогда не закончится естественным путём, т.е., как говорят, программа зацикливается.
«Но... ничто не вечно под Луной! В конечном счёте электричество отключится, компьютер поломается, Microsoft обанкротится... Или цикл прервётся, и вам не о чём будет тревожиться. Существует гораздо больше способов создания бесконечных циклов, чем показано здесь; но обычно они слишком сложны для того, чтобы приводить их в такой простой книжке.»
[ Технические подробности ]
Специальные операторы управления циклом...73
В С++ определены две специальные управляющие программой команды — break и continue . Может случиться, что условие работы цикла нарушится не в начале или в конце, а где-то посередине цикла. Рассмотрим программу, которая суммирует введённые пользователем значения. Цикл прерывается, когда пользователь вводит отрицательное число.
Проблема в том, что программа не сможет выйти из цикла, пока пользователь не введёт число, но должна сделать это перед тем, как значение будет добавлено к сумме.
_________________
73 стр. Глава 5. Операторы управления программой
В таких случаях используют определёную в С++ команду break . Она немедленно передаёт управление в конец текущего цикла. После инструкции break программа будет выполнять инструкцию, следующую сразу же после закрывающей скобки цикла. Схематически работу команды break можно проиллюстрировать так:
while ( условие )
{
if ( какое-то другое условие )
{
break ; /* выход из цикла */
}
} /* когда программа встретит break, управление будет передано этой строке */
Вооружась новой командой break , я решил в программе BreakDemo проблему последовательного накопления суммы чисел.
/* BreakDemo — вводим множество чисел. */
/* Суммируем эти числа, пока пользователь не введёт отрицательное число */
#include
#include
#include
using namespace std ;
int main( int argc , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
/* Введите счётчик цикла */
int accumulator = 0 ;
cout << "Эта программа суммирует числа, "
<< "введённые пользователем\n" ;
cout << "Выполнение цикла "
<< "заканчивается после "
<< "ввода отрицательного числа\n" ;
/* Бесконечный цикл */
for ( ; ; )
{
/* Ввод следующего числа */
int value = 0 ;
cout << "Введите следующее число: " ;
cin >> value ;
/* если оно отрицательно... */
if ( value < 0 )
{
/* ...тогда выходим из цикла */
break ;
}
/* ...иначе добавляем число к общей сумме */
accumulator = accumulator + value ;
}
/* После выхода из цикла выводим результат суммирования */
cout << "\nОбщая сумма равна"
<< accumulator
<< "\n" ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ;
return 0 ;
}
Читать дальшеИнтервал:
Закладка: