Четверг, 25.04.2024, 23:30
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1301
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Циклы в СИ

 В языке СИ оператор цикла состоит из двух основных частей: непосредственно сам оператор цикла (for,while, do ... while); тело цикла – простой или составной оператор.
Оператор цикла со счетчиком в СИ
 Оператор цикла со счетчиком предполагает, что количество итераций (выполнений) тела цикла жестко задано в виде некоторой константы или значения переменной. На самом деле данный тип циклов в языках программирования, как правило, значительно более гибок. В языке СИ оператор цикла со счетчиком имеет следующий синтаксис:
for(инициализация; условие; приращение) тело цикла. Например, пользователь вводит последовательность из десяти положительных чисел. Определить максимум этой последовательности.
  unsigned max = 0;
  printf("Введите последовательность: ");
  for(int i=0;i<10;i++)
  {
   unsigned value;
   scanf("%u”,&value);
   if(max < value) max = value;
  }
  printf("Максимальное значение: %u\n",max);

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

 Рассмотрим задачу вычисления факториала числа. Любой из ниже приведенных фрагментов программы (циклов) будет правильным:
  for(int i=1, fact=1.0; i<=n; i++) fact *= i;
  for(int i=1, fact=1.0; i<=n; fact *= i++);
  for(int i=1, fact=1.0; i<=n;) fact *= i++;
  for(fact=1.0;n>0;) fact *= n--;

 Возможность пропуска блоков в операторе for является довольно удобной, хотя в некоторых случаях вообще лишена смысла. Например, допустима следующая конструкция: for(;;); Это вечный цикл, который не выполняет никаких действий.
Правила форматирования
 При написании программ с использованием цикла for рекомендуется придерживаться следующих правил форматирования текста программы:
 Общий формат цикла for при составном операторе в теле цикла:
  for(...)
  {
   оператор № 1;
   ...
   оператор № 2;
  }

 Общий формат цикла for при простом операторе в теле цикла:
  for(...)
   оператор;

 Если тело цикла состоит из простого или составного операторов имеющих достаточно краткую запись, то тело цикла допускается указывать на той же строке, что и сам цикл:
  for(...) оператор;
  for(...) {оператор №1; ... оператор №N;}

Оператор цикла с предусловием в СИ
 Оператор цикла с предусловием (сначала проверяется условие, а затем выполняется тело цикла) имеет следующий синтаксис:
  while(условие) тело цикла

 Например, в следующем фрагменте программы осуществляется вывод на экран таблицы значений функции синус, если аргумент изменяется от a до b с шагом h. Переменные a, b и h вещественные (тип double), и их значения уже введены.
  while(a <= b)   {
   printf("sin(%.4lf) = %.4lf\n",a,sin(a));
   a += h;
  }
 ПРИМЕЧАНИЕ: В языке СИ данную программу можно также реализовать и с использованием цикла for:
  for(;a<=b;a+=h)
   printf("sin(%.4lf) = %.4lf\n",a,sin(a));

 Правила форматирования. При написании программ с использованием цикла while рекомендуется придерживаться следующих правил форматирования текста программы:
 Общий формат цикла while при составном операторе в теле цикла:
  while(условие)   {
   оператор № 1;
   ...
   оператор № 2;
  }

 Общий формат цикла while при простом операторе в теле цикла:
  while(условие)
   оператор;
 Если тело цикла состоит из простого или составного операторов имеющих достаточно краткую запись, то тело цикла допускается указывать на той же строке, что и сам цикл:
  while(условие) оператор;
  while(условие) {оператор № 1; ... оператор № N;}

Оператор цикла с постусловием в СИ
 Оператор цикла с постусловием (сначала выполняется тело цикла, а затем проверяется условие) имеет следующий синтаксис:
  do тело цикла while(условие);
 Например, в следующем фрагменте программы осуществляется вычисление суммы ряда с точностью eps (вещественная переменная типа double, содержит значение погрешности вычисления).
  double s = 0.0;
  unsigned i = 1;
  do{
   s = 1.0/i;
   sum += s;
   i++;
  }while(eps < s);

 Правила форматирования. При написании программ с использованием цикла do...while рекомендуется придерживаться следующих правил форматирования текста программы:
 Общий формат цикла do...while при составном операторе в теле цикла:
  do{
   оператор № 1;
   ...
   оператор № 2;
  }while(условие);

 Общий формат цикла do...while при простом операторе в теле цикла:
  do оператор while(условие);
 Если тело цикла состоит из составного оператора имеющего достаточно краткую запись, то тело цикла допускается указывать на той же строке, что и сам цикл:
  do {оператор №1; ... оператор №N;} while(условие);

  Можно перейти к одномерным массивам.
Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---