Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Оператор цикла for

Читайте также:
  1. Безопасная организация работ нулевого цикла
  2. Декомпозиция жизненного цикла ТО и ТС
  3. Декомпозиция жизненного цикла ТО и ТС на стадии проектирования
  4. Декомпозиция жизненного цикла ТО и ТС на стадиях освоения и производства
  5. Декомпозиция жизненного цикла ТО и ТС на стадиях эксплуатации и утилизации
  6. Детализация стадий жизненного цикла
  7. ДИФФЕРЕНЦИАЛЬНОГО ОПЕРАТОРА.
  8. Дополнительные аспекты в отношении цикла Кребса
  9. ИНФОРМАЦИОННАЯ СЕТЬ ОПЕРАТОРА СВЯЗИ
  10. Концепция жизненного цикла товара (ЖЦТ), виды ЖЦТ

Оператор цикла while

С помощью данного оператора реализуется цикл, который выполняется до тех пор, пока истинно условие цикла. Синтаксис данного оператора следующий:

while(<условие>)
{
<тело цикла>
}

Приведем пример реализации данного цикла, в котором выполняется суммирование элементов ряда S = 0+1+2+3... пока S

int N=20, i = 0;
long S = 0L;
while(S < N)
{
S=S+i;
i++;
}

В данном примере реализуется цикл while с условием i < N. Так как начальное значение переменной i=0, а N=20, то условие истинно и выполняется тело цикла, в котором осуществляется суммирование переменной i и увеличение ее на 1. Очевидно, что на 20 итерации значение i=20, условие станет ложным и цикл будет завершен. Продемонстрируем гибкость языка С, изменив данный пример следующим образом:

int N=20, i = 0;
long S = 0L;
while((S=S+i++) < N);

В данном случае при проверке условия сначала выполняются операторы, стоящие в скобках, где и осуществляется суммирование элементов ряда и только, затем, проверяется условие. Результат выполнения обоих вариантов программ одинаковый и S=21. Однако последняя конструкция бывает удобной при реализации опроса клавиатуры, например, с помощью функции scanf():

int num;
while(scanf(“%d”,&num) == 1)
{
printf(“Вы ввели значение %d\n”,num);
}

Данный цикл будет работать, пока пользователь вводит целочисленные значения и останавливается, если введена буква или вещественное число. Следует отметить, что цикл while можно принудительно завершить даже при истинном условии цикла. Это достигается путем использования оператора break. Перепишем предыдущий пример так, чтобы цикл завершался, если пользователь введет число 0.

int num;
while(scanf(“%d”,&mun) == 1)
{
if(num == 0) break;
printf(“Вы ввели значение %d\n”,num);
}

Цикл завершается сразу после использования оператора break, т.е. в приведенном примере, при вводе с клавиатуры нуля функция printf() выполняться не будет и программа перейдет на следующий оператор после while. Того же результата можно добиться, если использовать составное условие в цикле:

int num;
while(scanf(“%d”,&mun) == 1 && num != 0)
{
printf(“Вы ввели значение %d\n”,num);
}

Таким образом, в качестве условия возможны такие же конструкции, что и в операторе if.

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

for(<инициализация счетчика>;<условие>;<изменение значения счетчика>)
{
<тело цикла>
}

Рассмотрим особенность реализации данного оператора на примере вывода таблицы кодов ASCII символов.

char ch;
for(ch = ‘a’; ch <= ‘z’; ch++)
printf(“Значение ASCII для %c - %d.\n”,ch,ch);

В данном примере в качестве счетчика цикла выступает переменная ch, которая инициализируется символом ‘a’. Это означает, что в переменную ch заносится число 97 – код символа ‘a’. Именно так символы представляются в памяти компьютера. Код символа ‘z’ – 122, и все малые буквы латинского алфавита имеют коды в диапазоне [97; 122]. Поэтому, увеличивая значение ch на единицу, получаем код следующей буквы, которая выводится с помощью функции printf(). Учитывая все вышесказанное, этот же пример можно записать следующим образом:

for(char ch = 97; ch <= 122; ch++)
printf(“Значение ASCII для %c - %d.\n”,ch,ch);

Здесь следует отметить, что переменная ch объявлена внутри оператора for. Это особенность языка С - возможность объявлять переменные в любом месте программы.

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

int line_cnt = 1;
double debet;
for(debet = 100.0; debet < 150.0; debet = debet*1.1, line_cnt++)
printf(“%d. Ваш долг теперь равен %.2f.\n”,line_cnt, debet);

Следующий фрагмент программы демонстрирует возможность программирования сложного условия внутри цикла.

int exit = 1;
for(int num = 0;num < 100 && !exit; num += 1)
{
scanf(“%d”,&mov);
if(mov == 0) exit = 0;
printf(“Произведение num*mov = %d.\n”,num*mov);
}

Оператор for с одним условием:

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

и без условия

int i=0;
for(;;;) {i++; if(i > 100) break;}

В последнем примере оператор break служит для выхода из цикла for, т.к. он будет работать «вечно» не имея никаких условий.


<== предыдущая страница | следующая страница ==>
Операторы цикла языка С | Функции

Дата добавления: 2014-02-28; просмотров: 372; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.