C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Циклы / mini-FAQ / Visual C++

Циклы


Сразу оговоримся, что в случае консольных приложений к проекту необходимо прикрепить заголовочный файл iostream.h (а в некоторых случаях и stdio.h – экспериментируйте).


for (начальные условия; условия выполнения; закон изменения)

{

оператор;

}


Например,


for (int i = 0; i < 6; i++)

{

printf("%d\n", i);

}


Также можно сделать "пустой" цикл – предыдущий (к проекту следует подключить файл stdio.h).


for (int i = 0; i < 6; printf("%d\n", i++)) // выводим значения от 0 до 5

{

;

}


Тот же самый цикл может быть записан так (к проекту следует подключить файл iostream.h).


for (int i = 0; i < 6; cout << i++ << endl)

{

;

}


Теперь рассмотрим пример с выводом значения типа float.


for (float i = 0; i < 6; i=i+0.5)

{

printf("%.2f ", i); // 2f означает, что точность – два знака.

}


или


for(unsigned char cKey='A'; cKey<='Z'; cKey++)

{

printf("%c ", cKey);

}


Также можно ввести несколько переменных


for (int i=0, j=0; i<3; i++, j++)

cout << "i: " << i << " j: " << j << endl;


Любой из трех параметров цикла for может быть опущен.

Если опустить первый и третий операторы, то цикл for будет подобен циклу while, рассматриваемого далее.


int cycle = 0; // объявляем переменную cycle типа int

for( ; cycle < 5; ) // опускаем 1-й и 3-й параметр

{

cycle++; // увеличиваем значение переменной на 1

cout << "Yes!"; // выводим на экран слово Yes!

}

cout << "\nCycle: << cycle << ".\n";// после цикла выводим значение переменной


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


Yes!Yes!Yes!Yes!Yes!

Cycle:5.


Если опустить все три параметра, организуем бесконечный цикл.


for(;;)

{

printf("A"); // печатаем букву A

}


Или же можно организовать такой цикл (хотя это уже громоздко)


int cycle = 0;

int max;

cout << " Press any digital key...";// нажмите любую цифровую клавишу

cin >> max; // присвоить введенное значение


for (;;) // объявляем бесконеный цикл

{

if (cycle < max) // пока значение cycle меньше введенной нами

{

cout << "Hello!!!\n"; // выводить строку Hello!!!

cycle++; // увеличим переменную cycle на 1

}

else // инече

break; // выход

}

И последнее. Переменные, определенные в блоке цикла for могут быть восприняты многими компиляторами за пределами цикла, хотя новый стандарт указывает обратное.

Оператор while. Цикл выполняется до тех пор, пока условие принимает значение "истинно". Если цикл for "вобрал" в себя три значения, то в цикле while (как и do-while) следует установить значение переменных цикла, далее – на каждой итерации проконтролировать их изменение и во время цикла изменять значение переменной, иначе цикл будет бесконечный. Чтобы понять, как это сделать смотрите пример.


while(условие) оператор;


//Цикл выполняется до тех пор, пока условие принимает значение "истинно".

unsigned char ch;

int flag;


flag=1; // флагу присвоено значение 1

while(flag) // пока у флага значение 1, цикл будет повторяться

{

ch=getch(); //Читает символ с клавиатуры и возвращает его код

if(ch==27) //Если код равен 27

{

flag=0;//Flag усстанавливаем в 0. Выход из цикла

}

else

{

printf("%c",ch);

}

}


Еще один пример.


unsigned short min;

unsigned long max;

const unsigned short MAXMAL=65535;

cout << "Please insert min: ";

cin >> min;

cout << "Please insert max: ";

cin >> max;

cout << "min: " << min << "\n";

// выполнение трех условий

while (min < max && max > 0 && min < MAXMAL)

{

if (min % 5000 == 0) //после 5000 строк (остаток деления равен 0)

cout << "."; // вывести точку

min++; // увеличить значение на 1

max-=2; // уменьшить значение на 2

cout << "\nEnd" << endl;// вывести сообщение об успешности цикла

}

cout << "\nMin: " << min << " Max: " << max << endl;

// то есть, если min > max, max положительно, а min меньше 65535, цикл начнется.


Следует заметить, что условие проверяется до выполнения цикла. То есть, если будут введены числа, неудовлетворяющие условию, сообщения End не будет.

Оператор do-while.

Основное отличие оператора цикла do-while от операторов for и while заключается в том, что условие проверяется в конце оператора цикла. А отсюда следует, что тело (блок операторов) оператора do-while всегда выполняется хотя бы один раз. При использовании данного примера следует подключить файлы stdio.h и conio.h.


unsigned char cKey; //объявляем переменную

do // начало цикла

{

cKey=getch(); // присваиваем номер нажатой клавишы переменной

printf("%c",cKey);// выводим на экран консоли нажатую клавишу

}

while(ch!=27); // делаем это пока номер клавиши не равен 27 (Esc)


Оператор goto. С помощью данного оператора можно осуществить переход в любую точку программы, где определена соответствующая метка.

Объявляем метку,


loop:


а затем, где предполагается повтор цикла, написать


goto loop;


Например, так.


int cycle = 0;

loop: cycle ++; // начинаем цикл

cout << cycle << "\n"; // вывод значения на экран консоли

if (cycle < 4) // если значение меньше 4

goto loop; // вернуться к метке loop – повтор цикла

cout << "Complete..." << cycle << "\n";

return 0;


Еще один пример


int cycle = 0;

char counter[10];

loop: cycle ++; // начинаем цикл

itoa(cycle, counter, 10); // перевести тип int в char

MessageBox(counter); // показать сообщение

if (cycle < 4) // если значение меньше 4

goto loop; // вернуться к метке loop – повтор цикла

MessageBox("Complete"); // это сообщение не входит в цикл