Прочитайте улучшенную версию этого урока «Циклы с условием while и do-while».

В новой версии:

  • Ещё более доступное объяснение
  • Дополнительные материалы
  • Задачи с автоматической проверкой решения

Добрый день дорогие друзья.
После долгого перерыва,я снова с вами.

Сегодняшнее занятие будет продолжением занятия номер 7.Циклические конструкции 
Сегодня поговорим о еще двух циклических конструкциях. 
Как уже говорилось ранее,цикл for используется,когда известно сколько раз надо выполнить тело цикла. А что же делать если количество повторений заранее не известно, а есть только условие которое после которого нужно прекратить выполнять цикл. Для этих целей используют циклические конструкции while и do-while. Остановимся на каждом из них поподробнее. 

Цикл while.

Цикл  while называют еще циклом с предусловием. Чаще всего он используется когда неизвестно конкретно сколько раз нужно выполнить тело цикла.
Вот его синтаксис:

Листинг 9.1
while (условие)
    оператор;
Работает эта конструкция следующим образом.

1.Сначала проверяется условие в скобках.
1.1 Если оно истинно, то выполняется тело цикла. (Оператор). И программа снова переходит к проверке условия.  
Напомню,что тело цикла всегда состоит из одного оператора. И если нам нужно использовать несколько операторов, то как и в случае с конструкцией if-else или циклом for, применяется составной оператор {…}.
1.2 Если условие ложно, то выполнение циклической конструкции заканчивается  и программа выполняется дальше.

Заметим, что цикл может не выполниться ни одного раза,если изначально условие будет ложным.
Например:
Листинг 9.2
while (0)
{   …   }

Цикл do-while.

Цикл do-while называют еще циклом с постусловием. И в этом состоит его основное отличие от цикла while. Сейчас мы разберем его синтаксис, поймем как он работает и увидим как раз в чем разница.

Синтаксис:

Листинг 9.3
do //заголовок цикла
оператор;} // тело цикла 
while (условие); //условие


как видите цикл do-while состоит из 3 частей. Заголовка цикла, тела цикла и условия. 
Работает эта конструкция следующим образом.
1)После того как программа встречает ключевое слово do,она понимает, что имеет дело с циклом do-while. 
2)выполняется тело цикла.
3) Проверяется условие.
3.1) Если условие истинно,то снова выполняется тело цикла.
3.2) Если условие ложно, то работа циклической конструкции заканчивается и программа выполняется дальше.

Обратите внимание, что при использовании цикла do-while, тело цикла выполнится всегда хотя бы один раз! Это очень важная особенность и иногда её очень удобно использовать.

Прочитайте улучшенную версию этого урока «Операторы управления циклом. Зацикливание.».

В новой версии:

  • Ещё более доступное объяснение
  • Дополнительные материалы
  • Задачи с автоматической проверкой решения
Зацикливание.

Теперь поговорим немного о такой пренеприятнейшей вещи как зацикливание. Зацикливание — это когда программа постоянно выполняет тело цикла и не может из него выйти. Причиной зацикливания всегда является программист. Надо всегда внимательно следить за тем, чтобы работа операторов как-то влияла на условие. 

Напоследок напишем одну маленькую программку.С использованием циклов do-while и while.
Пусть требуется написать программу которая принимает на входе положительное натуральное число, а на выходе выдает сумму цифр этого числа. При этом, надо запретить пользователю вводить отрицательные числа. (защита от дурака). 
Сначала напишем основную часть программы.
Считаем число и  посчитаем сумму его цифр.
Листинг 9.4

#include <stdio.h>
int main()
{
      int A, sum=0;
      printf(«Vvedite chislo:»);
      scanf(«%d»,&A); //считываем число

//начинаем последовательно получать каждую последнюю цифру числа. 
      while (A>0)
      {
            sum=sum+A%10;
            A= A/10;
      }
      printf(«summa chifr etogo chisla: %d\n», sum);
return(0);
}


Эта программа работает. Теперь добавим в неё так называемую «защиту от дурка». Чтобы пока не введешь правильные данные,программа не будет работать. Для этого используем цикл do-while.И будем повторить ввести ввод до тех пор, пока не будет введено положительное число.
Получим следующий код.
Листинг9.5

#include <stdio.h>
int main()
{
int A, sum=0;
do {
    printf(«Vvedite chislo:»);
    scanf(«%d»,&A); //считываем число
} while(A<=0);
while (A>0){
    sum=sum+A%10;
    A= A/10;
}    
printf(«summa chifr etogo chisla: %d\n», sum);
return(0);
}


На этом сегодня всё. Домашнего задания к этому уроку не будет. Так как мне надо разобраться с той кучей вопросов, которые накопились за это время в комментариях. 

Задание для практической работы.



  1. Дано целое число N (вводится с клавиатуры), причем N<30000. По заданному N вывести через пробел все (натуральные, т.е. 0, 1, 2, 3, … ) степени числа 2, которые меньше N.
  2. Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон.с шагом dх.  Функция F должна принимать действительное значение, если выражение (Ац^Вц)|(Ац^Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц и Сц обозначены целые части значений a,b,c. Значения a,b,c, Хнач., Хкон., dx ввести с клавиатуры. Пока что не обязательно к выполнению.!
  3. Дано натуральное число N. Напишите программу которая считает сумму цифр этого числа.
  4. Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке.

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

От KaDeaT