Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Конструкция do while.)

  • Конструкция do while.

    Общий синтаксис и принцип работы do while:

    do
    {
     действие;
    }
    while(условие);
    

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

    Применение do while на практике.

    Предположим, нам необходимо написать программу, в которой пользователю предоставляется право выбора какого-то действия несколько раз подряд. Реализуем данную задачу сначала с помощью while, а затем с помощью do while.

    #include <iostream>
    using namespace std;
    void main()
    {
     int answer,A,B,RES;
     
     // запрос на выбор операции
     cout<<"\nSelect operation:\n";
     cout<<"\n 1 - if you want to see SUM.\n";
     cout<<"\n 2 - if you want to see DIFFERENCE.\n";
     cout<<"\n 3 - if you want to exit.\n";
     cin>>answer;
    
     while(answer!=3){ // проверка условия
     switch(key){
     case 1: // если пользователь выбрал сложение
     cout<<"Enter first digit:\n";
     cin>>A;
     cout<<"Enter second digit:\n";
     cin>>B; 
     RES=A+B;
     cout<<"\nAnswer: "<<RES<<"\n";
     break; // остановка switch
     case 2: // если пользователь выбрал вычитание
     cout<<"Enter first digit:\n";
     cin>>A;
     cout<<"Enter second digit:\n";
     cin>>B;
     RES=A-B;
     cout<<"\nAnswer: "<<RES<<"\n";
     break; // остановка switch 
     case 3: // если пользователь выбрал выход
     cout<<"\nEXIT!!!\n";
     break;
     default: // если выбранное действие некорректено
     cout<<"\nError!!! This operator isn't correct\n"; 
     }
    
     // запрос на выбор операции
     cout<<"\nSelect operation:\n";
     cout<<"\n 1 - if you want to see SUM.\n";
     cout<<"\n 2 - if you want to see DIFFERENCE.\n";
     cout<<"\n 3 - if you want to exit.\n";
     cin>>answer; 
     } 
     cout<<"\nBye....\n";
    
    }
    

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

    Данный код является неоптимальным решением. Как видите фрагмент

    // запрос на выбор операции
     cout<<"\nSelect operation:\n";
     cout<<"\n 1 - if you want to see SUM.\n";
     cout<<"\n 2 - if you want to see DIFFERENCE.\n";
     cout<<"\n 3 - if you want to exit.\n";
     cin>>answer;
    
    

    повторяется несколько раз. В этом случае следует использовать do while. Данная конструкция приведет код к надлежащему виду.

    #include <iostream>
    using namespace std;
    void main()
    {
     int answer,A,B,RES;
     
     do{ // вход в цикл
    
     // запрос на выбор операции
     cout<<"\nSelect operation:\n";
     cout<<"\n 1 - if you want to see SUM.\n";
     cout<<"\n 2 - if you want to see DIFFERENCE.\n";
     cout<<"\n 3 - if you want to exit.\n";
     cin>>answer; 
     
     // анализ действия
     switch(key){
     case 1: // если пользователь выбрал сложение
     cout<<"Enter first digit:\n";
     cin>>A;
     cout<<"Enter second digit:\n";
     cin>>B; 
     RES=A+B;
     cout<<"\nAnswer: "<<RES<<"\n";
     break; // остановка switch
     case 2: // если пользователь выбрал вычитание
     cout<<"Enter first digit:\n";
     cin>>A;
     cout<<"Enter second digit:\n";
     cin>>B;
     RES=A-B;
     cout<<"\nAnswer: "<<RES<<"\n";
     break; // остановка switch 
     case 3: // если пользователь выбрал выход
     cout<<"\nEXIT!!!\n";
     break;
     default: // если выбранное действие некорректено
     cout<<"\nError!!! This operator isn't correct\n"; 
     }
     
     } while(answer!=3);
     cout<<"\nBye....\n";
    
    }
    

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

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


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 697 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]