ОПЕРАТОРЫ ЯЗЫКА С++

1 Лекция №3

6. ОПЕРАТОРЫ ЯЗЫКА С++

ОПЕРАТОР #include

Каждая программа начинается со следующего оператора #include:

#include <iostream.h>

При создании программ на C++ вы получаете преимущества от использования операторов и определений, которые обеспечивает вам компилятор. При компиляции программы оператор #include заставляет компилятор включить содержимое заданного файла в начало вашей программы. В данном случае компилятор включит содержимое файла iostream.h.

Файлы с расширением h, которые вы включаете в начало (или заголовок) вашей программы, называются заголовочными файлами. Если вы посмотрите на каталог, содержащий файлы вашего компилятора, то найдете подкаталог с именем INCLUDE, в котором находятся разные заголовочные файлы. Каждый заголовочный файл содержит определения, предоставляемые компилятором для различных операций. Например, существует заголовочный файл, который содержит определения для математических операций, другой заголовочный файл описывает файловые операции и т. д.

Заголовочные файлы представляют собой файлы в формате ASCII, следовательно, вы можете вывести их содержимое на экран или принтер. В данный момент не беспокойтесь о содержимом заголовочных файлов. Просто поймите, что оператор #include позволяет вам использовать эти файлы. Все программы на C++, созданные вами в процессе изучения этой книги, содержат операторы #include, которые вы должны применять в ваших программах.

Заголовочные файлы C++

Каждая создаваемая вами программа на C++ начинается с одного или нескольких операторов #include. Эти операторы указывают компилятору включить содержимое заданного файла (заголовочного файла) в вашу программу, как если бы программа содержала операторы, которые находятся во включаемом файле. Заголовочные файлы содержат определения, используемые компилятором для операций различных типов. Существуют заголовочные файлы, которые определяют операции В/В (ввода/вывода) C++, системные функции (например, функции, возвращающие текущие дату и время) и многое другое.

Заголовочные файлы, подобно программам на C++, представляют собой файлы в формате ASCII, содержимое которых вы можете просмотреть или напечатать. Чтобы лучше понять содержимое заголовочных файлов, найдите время для того, чтобы напечатать заголовочный файл IOSTREAM.H, содержимое которого вы будете использовать в каждой создаваемой вами программе на C++. Обычно заголовочный файл IOSTREAM.H расположен в подкаталоге с именем INCLUDE, который находится в каталоге, содержащем файлы компилятора C++. Используйте текстовый редактор, чтобы просмотреть и напечатать содержимое заголовочных файлов.

Замечание: Никогда не изменяйте содержимое заголовочных файлов. Это может привести к ошибкам компиляции в каждой создаваемой вами программе.

void main(void)

При создании программы на C++ ваш исходный файл будет содержать множество операторов. Как вы поймете в процессе изучения, порядок, в котором операторы появляются в программе, не обязательно должен совпадать с порядком, в котором операторы будут выполняться при запуске программы. Каждая программа на C++ имеет один вход, с которого начинается выполнение программы, — главную программу. В программах на C++ оператор void main(void) указывает стартовую точку вашей программы.

По мере того как ваши программы становятся больше и сложнее, вы будете делить их на несколько небольших легко управляемых частей. При этом оператор void main(void) указывает начальные (или главные) операторы программы — часть программы, которая выполняется первой.

Представление о главной программе

Исходные файлы C++ могут содержать очень много операторов. При запуске программы оператор void main(void) определяет главную программу, содержащую первый выполняемый оператор. Ваши программы на C++ должны всегда включать один и только один оператор с именем main.

При рассмотрении больших программ на C++ ищите main, чтобы определить операторы, с которых начинается выполнение программы.

Использование void

Как только ваша программа становится более сложной, вы должны разделить ее на небольшие более легко управляемые части, называемые функциями. Функция представляет собой простой набор операторов внутри программы, выполняющих определенную задачу. Например, при создании программы платежных документов, вы могли бы создать функцию с именем salary, вычисляющую оклад служащих. Аналогичным образом, если вы пишете математическую программу, вы могли бы создать функции с именами square_root или cube, которые возвращают результат определенных математических операций. Если ваша программа использует функцию, функция выполняет свою задачу и затем возвращает свой результат программе.

Каждая функция в вашей программе имеет уникальное имя. А каждая программа имеет по крайней мере одну функцию. Каждая программа из урока 1 имела только одну функцию с именем main. Урок 9 предоставляет более подробный обзор функций. В данный момент просто имейте в виду, что функция состоит из нескольких связанных по смыслу операторов, выполняющих определенную задачу.

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

ГРУППИРУЮЩИЕ ОПЕРАТОРЫ { }

По мере усложнения в ваших программах будет один набор операторов, которые компьютер должен выполнить определенное число раз, и другой набор операторов, которые компьютер должен выполнить, если выполняется определенное условие. В первом случае компьютер может выполнить один и тот же набор операторов 100 раз, чтобы добавить для 100 студентов тестовые очки. Во втором случае компьютер может вывести на экран одно сообщение, если все студенты прошли тест, и другое сообщение, если один или несколько студентов потерпели неудачу. Внутри своих программ на C++ вы будете использовать правую и левую фигурные скобки {}, чтобы сгруппировать связанные операторы. В простых программах, представленных в нескольких первых уроках книги, эти символы группируют операторы, которые соответствуют операторам вашей главной программы.

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

1) простые:

- операторы перехода (break, continue, return, goto);

- другие операторы (оператор "выражение", составной оператор и пустой оператор);

2) сложные:

- условные операторы, к которым относятся оператор условия if и оператор выбора switch;

- операторы цикла (for,while,do while);

 Все операторы языка С++, кроме составных операторов, заканчиваются точкой с запятой ";".

6.1. ПРОСТЫЕ ОПЕРАТОРЫ

6.1.1. Оператор «выражение»

Любое выражение, которое заканчивается точкой с запятой, является оператором.

Форма записи:

Выражение;

Выполнение оператора «выражение» заключается в вычислении выражения. Полученное значение выражения никак не используется, поэтому, как правило, такие выражения вызывают побочные эффекты. Заметим, что вызвать функцию, не возвращающую значения можно только при помощи оператора выражения. Правила вычисления выражений были сформулированы выше.

Примеры:

++ i;    Этот оператор представляет выражение, которое увеличивает значение переменной i на единицу.

a=cos(b * 5);    Этот оператор представляет выражение, включающее в себя операции присваивания и вызова функции.

a(x,y);     Этот оператор представляет выражение состоящее из вызова функции.

6.1.2. Пустой оператор

Пустой оператор состоит только из точки с запятой.

Форма записи:

             ;

При выполнении этого оператора ничего не происходит. Он обычно используется в следующих случаях:

- в операторах do, for, while, if в строках, когда место оператора не требуется, но по синтаксису требуется хотя бы один оператор;

- при необходимости пометить фигурную скобку.

Синтаксис языка С++ требует, чтобы после метки обязательно следовал оператор. Фигурная же скобка оператором не является. Поэтому, если надо передать управление на фигурную скобку, необходимо использовать пустой оператор.

Пример:

    int main ( )

    {          :

          { if (...) goto a;    /* переход на скобку */

              { ...

              }

     a:;  }

          return 0;

      }

6.1.3. Составной оператор

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

 Форма записи:

      {  [oбъявление]

          :

          оператор; [оператор];

          :

      }

Заметим, что в конце составного оператора точка с запятой не ставится.

Выполнение составного оператора заключается в последовательном выполнении составляющих его операторов.

6.1.4. Оператор прерывания ( break)

Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов switch, do, for, while. После выполнения оператора break управление передается оператору, следующему за прерванным.

Пример: Вычислить сумму элементов до первого нуля.

#include <stdio.h>

void main()

{ const n=5;

 int a,s,i;

 s=0;

 for (i=1;i<=n;i++)

   {scanf("%d",&a);

    if (a!=0) s+=a; else break;

    }

 printf("s= %d",s);

}

Пример:

#include <stdio>

void main()

{for(int i=1;i<5;i++)

   { for (int j=1;j<5;j++)

         {if (j==3) break;

          printf("%d",j);

         }

     printf("\n");

  }

}

6.1.5. Оператор continue

Оператор continue, как и оператор break, используется только внутри операторов цикла, но в отличие от него выполнение программы продолжается не с оператора, следующего за прерванным оператором, а с начала прерванного оператора.

Форма записи:

continue;

Пример:

      int main()

      {   int a,s=0,i;

          for (i=1,i<=a;i++)

           {  s+=a;

              if (s%2==0) continue;

      . . .

Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.

Пример:Найти сумму положительных чисел последовательности.

#include <stdio.h>void main(){int a;int i,n,s;n=5; s=0;for(i=1; i<=n; i++)   { scanf(“%d”,&a);     if(a<=0) continue; /*пропуск 0*/     s+=a;   }printf("сумма = %d \n",s);}

Программа использует оператор continue для пропуска отрицательных элементов массива, суммируя только положительные.

Оператор continue, как и оператор break, прерывает самый внутренний из объемлющих его циклов.

6.1.6. Оператор return

Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Функция main передает управление операционной системе.

Форма записи:

return [(выражение)] ;

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

Если в какой-либо функции отсутствует оператор return, то передача управления в вызывающую функцию происходит после выполнения последнего оператора вызываемой функции. При этом возвращаемое значение не определено. Если функция не должна иметь возвращаемого значения, то ее нужно объявлять с типом void.

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

Пример:

       int sum (int a, int b)

       {   return (a+b);    }

Функция sum имеет два формальных параметра a и b типа int, и возвращает значение типа int, о чем говорит описатель, стоящий перед именем функции. Возвращаемое оператором return значение равно сумме фактических параметров.

Пример:

    void prov (int a, double b)

    {  double c;

       if (a10) return;

            else { c=a+b;

                   if ((2*c-b)==11) return;

                  }

     }

В этом примере оператор return используется для выхода из функции в случае выполнения одного из проверяемых условий.

6.1.7. Оператор безусловного перехода ( goto)

Использование оператора безусловного перехода goto в практике программирования на языке С++ настоятельно не рекомендуется, так как он затрудняет понимание программ и возможность их модификаций.

Форма записи:

      goto ИмяМетки;

                 ...

      ИмяМетки: оператор;

Оператор goto передает управление на оператор, помеченный меткой ИмяМетки. Помеченный оператор должен находиться в той же функции, что и оператор goto, а используемая метка должна быть уникальной, т.е. одно ИмяМетки не может быть использовано для разных операторов программы.       Имя-метки - это идентификатор.  Метка представляет собой любое целое число без знака в  диапазоне от  1 - 9999 или любое имя, состоящее из допустимых в нем символов.  Если  метка  обозначается цифрой, то предшествующие нули не являются значащими, т.е.  1  и 001 эквивалентны.

Пример:

#include <stdio>

void main()

{ for(int i=1;i<5;i++)

    {if (i==3) goto a1;

      printf("%d",i);

    }

a1:

}

Любой оператор в составном операторе может иметь свою метку.

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

6.2. СЛОЖНЫЕ ОПЕРАТОРЫ

6.2.1. Оператор условия ( if)

Форма записи:

if (выражение) Оператор-1; [else Оператор-2;]

Выполнение оператора if начинается с вычисления выражения.

Далее выполнение осуществляется по следующей схеме:

- если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.

- если выражение ложно (т.е. равно 0),то выполняется оператор-2.

- если выражение ложно и отсутствует оператор-2 (в квадратные скобки заключена необязательная конструкция), то выполняется следующий за if оператор.

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

  Пример:     Найти наибольшее из трех чисел X, Y, Z.

#include <stdio.h> void main()                                     /* главная функция*/{ int x, y, z, max ;                    /* описание переменных*/printf(" Введите три числа :\n ");  scanf(" %d %d %d ", &x, &y, &z);  /*ввод трех чисел*/  if( x > y)                                 /*операции сравнивания*/                max=x;         else   max=y;         if ( z>max)  max=z;         printf(" Максимальное из (%d, %d, %d)= %d \n",x, y, z, max); }

На месте оператор-1, так же как и на месте оператор-2 могут находиться сложные конструкции.

Допускается использование вложенных операторов if. Оператор if может быть включен в конструкцию if или в конструкцию else другого оператора if.

Пример: Решить уравнение вида AX=B.

#include <stdio.h> void main(){   

   float A,B,X;   printf("ВВЕДИ А, В\n");   scanf("%f %f",&A, &B);   if(A!=0)       printf("РЕШЕНИЕ:%f\n", B/A);   else    if(B==0)     printf("X-ЛЮБОЕ ЧИСЛО\n");   else     printf("РЕШЕНИЙ НЕТ\n");}

Пример: Упорядочить числа А,В,С по возрастанию таким образом, чтобы переменной А соответствовало самое маленькое число, В - среднее, С - наибольшее.

#include <stdio.h>

void main()

{

 float a,b,c,h;

     printf("Введите a,b,c:\n");

     scanf("%f %f %f",&a,&b,&c);

      if (a>b) {      h=a;

                      a=b;

                      b=h;

                }

      if (a>c)  {     h=a;

                      a=c;

                      c=h;

                 }

      if (b>c)   {    h=b;

                      b=c;

                      c=h;

                  }

      printf("a= %.3f b= %.3f c= %.3f\n",a,b,c);

}

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

  Пример:

       int main ( )

        {

          int t=2, b=7, r=3;

            if (t>b)

             {

                 if (b < r)  r=b;

             }

            else r=t;

          return (0);

        }

В результате выполнения этой программы r станет равным 2.

  Если же в программе опустить фигурные скобки, стоящие после оператора if, то программа будет иметь следующий вид:

       int main  ( )

        {

          int t=2,b=7,r=3;

          if ( a>b )

              if ( b < c ) t=b;

              else       r=t;

          return (0);

         }

  В этом случае r получит значение равное 3, так как ключевое слово else относится ко второму оператору if, который не выполняется, поскольку не выполняется условие, проверяемое в первом операторе if.

 Следующая программа иллюстрирует вложенные операторы if:

#include <stdio.h>

void main()

{

    char ZNAC;

    float x,y,z;

     printf("Введите знак операции(+ - * /)\n");

     scanf("%c",&ZNAC);

     printf("Введите y,z\n");

     scanf("%f %f",&y,&z);

     if (ZNAC == '-') x = y - z;

       else  if (ZNAC == '+') x = y + z;

          else if (ZNAC == '*') x = y * z;

                 else if (ZNAC == '/') x = y / z;

     printf("y%cz=%.3f",ZNAC,x);

}

 Из рассмотрения этого примера можно сделать вывод, что конструкции, использующие вложенные операторы if, являются довольно громоздкими и не всегда достаточно надежными. Другим способом организации выбора из множества различных вариантов является использование специального оператора выбора switch.

6.2.2. Оператор выбора ( switch)

Оператор switch предназначен для организации выбора из множества различных вариантов.  

Форма записи:

    switch ( выражение )

    {   [объявление]

             :

          [ case  КонстантноеВыражение1]: [ список-операторов1]

          [ case  КонстантноеВыражение2]: [ список-операторов2]

             :

             :

          [ default: [ список операторов ]]

    }

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

   Значение этого выражения является ключевым для выбора из нескольких вариантов. Тело оператора smitch состоит из нескольких операторов, помеченных ключевым словом Сase с последующим КонстантнымВыражением. Следует отметить, что использование целого константного выражения является существенным недостатком, присущим рассмотренному оператору.

    Так как константное выражение вычисляется во время трансляции, оно не может содержать переменные или вызовы функций. Обычно в качестве константного выражения используются целые или символьные константы.

    Все константные выражения в операторе switch должны быть уникальны. Кроме операторов, помеченных ключевым словом case, может быть, но обязательно один, фрагмент,  помеченный ключевым словом default.

     Список операторов может быть пустым, либо содержать один или более операторов.    Причем в операторе switch не требуется заключать последовательность операторов в фигурные скобки.

   Отметим также, что в операторе switch можно использовать свои локальные переменные, объявления которых находятся перед первым ключевым словом case, однако в объявлениях не должна использоваться инициализация.

Схема выполнения оператора switch следующая:

- вычисляется выражение в круглых скобках;

- вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;

- если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case;

- если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор.

  Отметим интересную особенность использования оператора switch: конструкция со словом default может быть не последней в теле оператора switch. Ключевые слова case и default в теле оператора switch существенны только при начальной проверке, когда определяется начальная точка выполнения тела оператора switch. Все операторы, между начальным оператором и концом тела, выполняются вне зависимости от ключевых слов, если только какой-то из операторов не передаст управления из тела оператора switch.    

  Таким образом, программист должен сам позаботится о выходе из case, если это необходимо. Чаще всего для этого используется оператор break.

  Для того, чтобы выполнить одни и те же действия для различных значений выражения, можно пометить один и тот же оператор несколькими ключевыми словами case.

Пример:

     int i=2;

     switch (i)

       {

        case 1: i += 2;

        case 2: i *= 3;

        case 0: i /= 2;

        case 4: i -= 5;

        default:      ;

    }

  Выполнение оператора switch начинается с оператора, помеченного case 2. Таким образом, переменная i получает значение, равное 6, далее выполняется оператор, помеченный ключевым словом case 0, а затем case 4, переменная i примет значение 3, а затем значение -2. Оператор, помеченный ключевым словом default, не изменяет значения переменной.

   Рассмотрим ранее приведенный пример, в котором иллюстрировалось использование вложенных операторов if, переписанной теперь с использованием оператора switch.

#include <stdio.h>

void main()

{

    char ZNAC;

    float x,y,z;

     printf("Введите знак операции(+ - * /)\n");

     scanf("%c",&ZNAC);

     printf("Введите y,z\n");

     scanf("%f %f",&y,&z);

     switch (ZNAC)

      {

       case '-': x = y - z; break;

       case '+': x = y + z; break;

       case '*': x = y * z; break;

       case '/': x = y / z; break;

       default : printf("Такой знак операции "

       "не предусмотрен");return 0;

       }

     printf("y%cz=%.3f",ZNAC,x);

}

  Использование оператора break позволяет в необходимый момент прервать последовательность выполняемых операторов в теле оператора switch, путем передачи управления оператору, следующему за switch.

  Отметим, что в теле оператора switch можно использовать вложенные операторы switch, при этом в ключевых словах case можно использовать одинаковые константные выражения.

Пример:

      :

    switch (a)

     {

       case 1: b=c; break;

       case 2:

           switch (d)

           {   case 0:  f=s;  break;

               case 1:  f=9;  break;

               case 2:  f-=9; break;

           }

        case 3: b-=c; break;

        :

     }

6.2.3. Оператор цикла с параметрами ( for)

Оператор for - это наиболее общий способ организации цикла.

Форма записи:

for ( выражение 1 ; выражение 2 ; выражение 3 ) ТелоЦикла;

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

Схема выполнения оператора for:

1. Вычисляется выражение 1.

2. Вычисляется выражение 2.

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

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

Пример:

      int main()

      { int i,b;

         for (i=1; i<=9; i++) b=i*i;

В этом примере вычисляются квадраты чисел от 1 до 9.

   Некоторые варианты использования оператора for повышают его гибкость за счет возможности использования нескольких переменных, управляющих циклом.

Пример:

      int main()

      {  int top,  bot;

         char string[100],  temp;

         for ( top=0, bot=100 ; top < bot ; top++, bot--)

         {  temp=string[top];

            string[bot]=temp;

         }

         return 0;

       }

  В этом примере, реализующем запись строки символов в обратном порядке, для управления циклом используются две переменные top и bot. Отметим, что на месте выражение 1 и выражение 3 здесь используются несколько выражений, записанных через запятую, и выполняемых последовательно.

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

Пример:

      for (;;)

      { ...

        ...  break;

        ...

      }

Так как согласно синтаксису языка С++ оператор может быть пустым, тело оператора for также может быть пустым. Такая форма оператора может быть использована для организации поиска.

Пример:

for (i=0; t[i]

В данном примере переменная цикла i принимает значение номера первого элемента массива t, значение которого больше 10.

Пример:   Найти сумму положительных чисел последовательности.

#include <stdio.h>void main(){ int a;  int i,n,s;  n=5; s=0;  for(i=1; i<=n; i++)     { scanf(“%d”,&a);       if(a>0)  s+=a;     }  printf("сумма = %d \n",s);}

Пример: Дано  натуральное  n,  символы  S1,..,Sn.  Подсчитать  наибольшее число букв А, идущих подряд в  данной  последовательности

символов.

#include<stdio.h>

#include<conio.h>

void main()

 {    int I,K,K1,N;

      char  S;

        printf("ВВЕДИТЕ КОЛИЧЕСТВО СИМВОЛОВ\n");

        scanf("%d",&N);

        K=0; K1=0;

        printf("ВВЕДИТЕ СТРОКУ СИМВОЛОВ\n");

        for (I=1;I<=N;I++)

        {

          S=getchar();

          if (S=='A')  K=K+1; else K=0;

          if ((K>1)&&(K>K1)) K1=K;

         }

         printf("КОЛИЧЕСТВО СТОЯЩИХ ПОДРЯД А = %d",K1);

                   getch();

 }

6.2.4. Оператор цикла с предусловием ( while)

Оператор цикла while называется циклом с предусловием.

Форма записи:

while (выражение) ТелоЦикла ;

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

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

Если повторяемая часть оператора содержит более одного оператора, то повторяемая группа операторов должна быть заключена в фигурные скобки скобки, например:

while(условие){   оператор_1;   оператор_2;   ....   оператор  }       

Оператор цикла вида

     for (выражение-1; выражение-2; выражение-3) тело ;

может быть заменен оператором while следующим образом:

          выражение-1;

          while (выражение-2)

          {  тело

             выражение-3;

          }

Так же как и при выполнении оператора for, в операторе while вначале происходит проверка условия. Поэтому оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.

Внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов.

Примеры:

    1) Вычислить значение функции у=2*х+3 для х={0;3} с шагом h=0.5.

#include <stdio.h>

void main()

{

float x,y,h;

x=0;

h=0.5;

while ((x>=0)&&(x<=3))

 { y=2*x+3;

   printf("x=%.3f  y=%.3f\n",x,y);

   x+=h;

 }

}

2) Найти максимальное из N чисел.

#include<stdio.h>

#include<conio.h>

void main()

{

 const N=10;

 int I;

 float A, MAX;

 printf("Введите 1-ое из %d чисел\n",N);

 scanf("%f",&A);

 MAX=A;

 I=2;

 printf("Введите остальные числа\n",N);

 while (I<=N)

   {

     scanf("%f",&A);

     if (MAX<A) MAX=A;

     I++;

   }

 printf("MAX= %f",MAX);

 getch();

}

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

 Следующая программа простая, хотя и содержит вложенные циклы. Она выводит на экран заполненный символом * треугольник, высота которого равна N.    Во внешнем цикле устанавливается очередная строка вывода (параметр i ), а во внутреннем (параметр j ) в очередную строку вводится ровно i символов " * "   Вызов функции printf("\n")   обеспечивает в нужный момент переход на новую строку.

#include <stdio.h>void main(){int i,j,N;printf("ВВЕДИ N \n");scanf("%d",&N);i=1;while(i <=N){j=1; while(j <=i)  {printf("%c",'*');   j=j+1;  } i=i+1; printf("\n");}}      

6.2.5. Оператор цикла с постусловием ( do while)

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

Форма записи:

do ТелоЦикла while (выражение);

Схема выполнения оператора do while :

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.

Операторы do while могут быть вложенными.

Пример: Найти максимальное из N чисел.

#include<stdio.h>

#include<conio.h>

void main()

{ const N=10;

 int I=1;

 float A, MAX;

 printf("Введите %d чисел",N);

    do

    { scanf("%f",&A);

     if (I==1) MAX=A;

     if (MAX<A) MAX=A;

     I++;}

    while(I<=N);

 printf("MAX= %f",MAX);

 getch();

}

15

← Предыдущая
Страница 1
Следующая →

Файл

Л3.doc

Л3.doc
Размер: 133 Кб

.

Пожаловаться на материал

ГРУППИРУЮЩИЕ ОПЕРАТОРЫ void main(void), #include ПРОСТЫЕ ОПЕРАТОРЫ Оператор «выражение» Пустой оператор Составной, прерывания ( break), continue, return, безусловного перехода ( goto), условия ( if)

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

Искать ещё по теме...

Похожие материалы:

Виникнення та розгортання холодної війни

Тема програми: Країни Азії, Африки та Латинської Америки Тема уроку: Виникнення та розгортання холодної війни

Лабораторна робота. Дослідження параметричного стабілізатра постійної напруги

Мета роботи — дослідити основні якісні параметри схеми параметричного стабілізатора. Стабілізатори напруги характеризуються вхідною Uвх і вихідною Uвих напругами, їх приростами ∆Uвх і ∆Uвих, струмом навантаження Ін і його приростом ∆Ін, коефіцієнтом стабілізації Kст і вихідним опором Rвих.

План-конспект пробного урока По учебному предмету «Окружающий мир»

Гражданское право

Гражданское право, ГК РФ. Заключение договора. Расторжение договора строительного подряда. Срок в договоре. Имущественная ответственность по договору. Денежное требование к должнику. Срок определяется соглашением сторон. Права и обязанности лизингодателя. Права и обязанности арендатора. Обязанности правообладателя. Особенности договора коммерческой концессии. Компенсация морального вреда. Цена договора (размер процентов). Оспоримые и ничтожные сделки. Срок договора аренды. Форма договора купли-продажи. Содержание и характеристика ограниченных вещных прав.

Педиатрия. Тесты с отмеченными ответами

Сохранить?

Пропустить...

Введите код

Ok