Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_Cpp.doc
Скачиваний:
6
Добавлен:
20.11.2019
Размер:
603.14 Кб
Скачать

Void main()

{

int n;

cout<<”Enter number in the range 1-10”;

do

{

cin>>n;

}

while(n!=7);

cout<<” 7 is my favorite number.\n”;

}

2.3. Операторы break и continue

Операторы break и continue позволяют программе пропустить фрагмент кода. В разделе 2.1.4 приводился пример использования break в операторе switch. Использование его в операторах цикла приводит к такому же эффекту – переходу к оператору, следующему за оператором цикла. Оператор continue используется в циклах и вызывает новую итерацию цикла. В приведенных ниже листингах показан вариант использования обоих операторов.

// в этом примере программа суммирует только четные числа.

// ноль – признак окончания ввода

#include <iostream.h>

Void main()

{

int n, sum=0;

cout<<" Enter integer number. To stop enter 0\n";

do

{

cin>>n;

if (n%2!=0)

continue; // пропуск суммирования, переход на while

sum=sum+n;

}

while(n!=0); // ноль - признак окончания ввода, конец цикла

cout<<" Sum="<<sum<<"\n";

}

Следует обратить внимание на то, что continue заставляет программу перейти непосредственно к проверочному выражению, следовательно, в цикле while будет пропущено выражение обновления цикла, если оно следует после continue. В ряде случаев это может создавать проблемы. Заметим, что использование оператора continue в данном примере было необязательным, достаточно было записать следующий программный код:

if (n%2==0)

sum=sum+n;

// пример использования break

// ноль – признак окончания ввода

#include <iostream.h>

Void main()

{

int x, y;

cout<<" Enter integer number. To stop enter 0\n";

do

{

cin>>n;

if (n==0)

break;

sum=sum+n;

}

while(n!=0);

cout<<" Sum="<<sum<<"\n";

}

Для всех видов циклов есть команды для прерывания цикла и для перехода к следующей итерации – это операторы break и continue, соответственно:

2.4. Типичные ошибки при использовании операторов цикла

Несмотря на простой синтаксис операторов цикла, их применение часто сопровождается ошибками. Рассмотрим следующий пример:

i = 0;

while (i <= 10)

cout<<i<<”\n”;

i++;

cout<<” end program”;

Наличие отступа подсказывает, что автор полагал отнести оператор i++ к телу цикла, однако не использовал для этого фигурных скобок. Теперь оператор цикла будет выполнять бесконечную распечатку нулевого значения i.

Еще одна ловушка связана с использованием точки с запятой:

int k;

for (k=0; k<10; k++);

cout<<k;

В результате выполнения этого кода на экран будет выведено не десять различных значений k, а одно, равное 9.

Контрольные вопросы. А.

Глава 3. Производные типы данных.

3.1. Ссылки и указатели.

В разделе 1.4 простые переменные определялись, как именованная область памяти, в которой хранятся данные. В процессе работы программа находит нужную переменную в памяти компьютера благодаря ее адресу. Узнать адрес переменной в С++ можно при помощи операции &. Например, если test – переменная, то &test определяет ее адрес. Следующий пример поясняет работу этой операции.

int cup = 4;

double nut = 6.5;

cout << “nut= ”<<nut;

cout << “and nut address= ”<<&nut<<’\n’;

cout << “cup= ”<< cup;

cout << “and cup address= ”<<&cup<<’\n’;

В результате выполнения программы на экране отобразится приблизительно следующее1:

nut = 6.5 and nut address = 0x0012FF7C

cup = 4 and cup address = 0x0012FF74

Как видим, при отображении адресов используется шестнадцатеричная система представления чисел. Разность между двумя адресами равно 8 и это имеет смысл, т.к. nut объявлена как тип double под который отводится 8 байт.

При помощи знака & можно определить ссылку, которая по сути является синонимом имени переменной или вторым именем уже определенной переменной:

int first = 31; // объявили целочисленную переменную

int & second = first; // ссылка second – альтернативное имя first

cout<<second<<endl;

second=0; // изменили значение не только second

cout<<first; // что теперь будет выведено на экран?

Можно создать ссылку на константу:

const double & pi = 3.1415; // const указывает, что pi изменять нельзя

При работе со ссылками следует помнить следующие правила:

  • при объявлении ссылка должна быть инициализирована (кроме случаев, когда она является параметром функции);

  • после инициализации ссылке не может быть присвоена другая переменная;

  • нельзя создавать массив ссылок, ссылки на ссылки, указатели на ссылки;

  • тип ссылки должен совпадать с типом величины, на которую она ссылается.

Следующие примеры иллюстрируют ошибки, которые могут возникать при работе со ссылками:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]