Лекции по программированию

Автор: Пользователь скрыл имя, 17 Января 2011 в 18:57, курс лекций

Описание работы

6 тем.

Работа содержит 1 файл

Лекции.doc

— 615.00 Кб (Скачать)

Условный оператор if используется для разветвления процесса обработки данных на два направления. Он может иметь одну из форм: сокращенную или полную.

Формат сокращенного оператора if:

    if ( B ) S ;

где В –логическое или арифметическое выражение, истинность которого проверяется; – один оператор: простой или составной.

При выполнении сокращенной  формы оператора if сначала вычисляется выражение , затем проводится анализ его результата: если истинно, то выполняется оператор ; если ложно, то оператор пропускается. Таким образом, с помощью сокращенной формы оператора if можно либо выполнить оператор S, либо пропустить его.

Формат полного оператора if:

    if ( B ) S1; else S 2;

где –логическое или арифметическое выражение, истинность которого проверяется; S1, S2 -один оператор: простой или составной.

При выполнении полной формы оператора if сначала вычисляется выражение , затем анализируется его результат: если истинно, то выполняется оператор S 1 ,а оператор S 2 пропускается; если ложно, то выполняется оператор S 2 , а S 1 –пропускается. Таким образом, с помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.

Рассмотрим несколько  примеров записи условного оператора if :

    // Сокращенная форма c простым оператором

    if ( a > 0) x = y ; 

    // Сокращенная форма c составным оператором

    if (++i) 

      x = y ;

      y =2* z ;

     

    // Полная форма с  простым оператором

    if ( a > 0 || b<0) 

      x = y ; 

    else x = z ;

// Полная форма с составными операторами 
if ( i + j -1)  

x = 0; 
y = 1;

}  
else  

x =1; 
y :=0;

}

Операторы S 1 и S 2 могут  также являться операторами if .Такие операторы называют вложенными. При этом ключевое слово else связывается с ближайшим предыдущим словом if ,которое еще не связано ни с однимelse. Рассмотрим несколько примеров алгоритмов с использованием вложенных условных операторов : 

Пример 1 Уровни вложенности 
операторов if:
if (A< B)

if (C < D)

    if (E < F) X= Q; else X = R;

else X= Z;

else X = Y;

 
 
 
Пример 2 Уровни вложенности  операторов if:
if (A < B)

if (C < D) X =Y; elseX = Z;

else

if (E < F) X= R; elseX = Q;

 

 

Оператор выбора switch предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:

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

    { case <константное_выражение_1>:[<оператор 1>]

    case <константное_выражение_2>: [<оператор 2>]

    ...

    case <константное_выражение_ n >: [<оператор n >]

    [default: <оператор> ] }

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

Выполнение оператора  начинается с вычисления выражения, расположенного за ключевым словом switch .Полученный результат сравнивается с меткой case. Если результат выражения соответствует метке case , то выполняется оператор, стоящий после этой метки. Затем последовательно выполняются все операторы до конца оператора switch , если только их выполнение не будет прервано с помощью оператора передачи управления break (см. пример) .При использование оператора break происходит выход из switch и управление переходит к первому после него оператору. Если же совпадения выражения ни с одной меткой case не произошло, то выполняется оператор, стоящий после слова default , а при его отсутствии управление передается следующему за switch оператору.

Пример. Известен порядковый номер дня недели. Вывести на экран его название.

    #include <iostream>

    using namespace std;

    int main()

    {

      int x;

      cin >>x;

      switch (x)

        case 1: cout<<" понедельник "; break;

        case 2: cout <<" вторник "; break;

        case 3: cout <<" среда ";break;

        case4: cout <<" четверг "; break;

        case 5: cout <<" пятница ";break;

        case 6: cout <<" суббота ";break;

        case 7: cout <<" воскресенье ";break;

        default: cout <<" вы ошиблись ";

        }

      return 0; 

    } 

Результат работы программы:

х Сообщение наэкране

2 вторник

4 четверг

10 вы ошиблись  

Если в нашем  примере исключить операторы break , то получим следующий результат:

    #include <iostream>

    using namespace std;

    int main()

    {

      int x; 

      cin>>x;

      switch (x)

        case 1: cout<<" понедельник ";

        case 2: cout<<" вторник ";

        case 3: cout <<" среда ";

        case 4: cout <<" четверг ";

        case 5: cout <<" пятница ";

        case 6: cout <<" суббота ";

        case 7: cout <<" воскресенье ";

        default:cout <<" вы ошиблись ";

      }

      return 0; 

    }

Результат работы программы:

х Сообщение на экране

4 четверг пятница  суббота воскресенье вы ошиблись

6 субботавоскресеньевы  ошиблись

10 вы ошиблись

Существует одна стандартная  ситуация, когда оператор break не нужен. Речь идет о случае, когда одна и та же последовательность действий должнавыполняться для нескольких меток case.В этом случае метки caseрасполагают последовательно одну за другой через двоеточие. После последней метки указывают действие, которое нужно выполнить. Например:

    #include <iostream>

    using namespace std;

    int main()

      int x; 

      cin >>x;

      switch (x)

      {

        case 1: case2: case 3: case 4:

        case 5: cout<<"рабочий день "; break;

        case 6:

        case 7: cout <<"выходной"; break;

        default:cout <<" вы ошиблись "; 

      }

      return 0;

    } 

Результат работы программы:

х Сообщение на экране

4 рабочий день

6 выходной

10 вы ошиблись

     
    В этом примере для меток со значениями из диапазона от 1 до 5 выполняется одно действие, а для меток со значениями 6-7 выполняется другое действие.  
     
    3.3. Примеры использования операторов ветвления при решении задач

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

Указанияпо  решению задачи. Вся числовая прямая О x разбивается на три непересекающихся интервала, (- ∞ ; 0),[0; 1), [1; + ∞ ).На каждом интервале функция задается своею ветвью. Заданная точка x может попасть только в одиниз указанных интервалов. Чтобы определить, в какой из интервалов попала точка,пользуемся следующим алгоритмом. Если x <0, то попадает в первый интервал, и функцию высчитываем по первой ветви, после чего проверка заканчивается. Если это условие ложно, то истинно условие x ≥0 , и для того чтобы точка попала во второй интервал достаточно, чтобы выполнялось условие x <1 . Если выполняется это условие, то точка x попадает во второй интервал и мы определяем функцию по второй ветви, после чего заканчиваем вычисления. В противном случае, точка может принадлежать только третьему интервалу, поэтому дополнительная проверка не проводится, а сразу вычисляем функцию по третьей ветви. Приведенный алгоритм можно реализовать с помощью вложенных операторов if .

    # include < iostream >

    #include < с math>

    using namespace std;

    int main()

    {

      float x,y;

      cout <<"х="; cin >> x ;

      if ( x <0) 

y = pow ( pow ( x ,3)+1,2); //проверяем условие первой ветви

      else 

if ( x <1)

y =0; //проверяем условие второй ветви

        else 

        y=fabs(x*x-5*x+1);

      cout << "f( " << x<< ")= " <<y;

      return 0; 

    } 

Результат работы программы: координата точки ответ

0 0

1 3

-2 49

2. Дан номер фигуры (1- квадрат, 2 – треугольник). По номеру  фигуры запросить необходимые  данные для вычисления площади,  произвести вычисление площади фигуры и вывести полученные данные на экран.

    #include <iostream>

    #include < с math>

    using namespace std;

    int main()

      int x ;

      cout << "Программа  подсчитывает площадь:\n1. квадрата;\n2. треугольника.\n3. выход из программы";

      cout <<"Укажите номер фигуры или завершите работу с программой.\n";

      cin >> x ;

      switch ( x )

      case 1 :{ cout << "введите  длину стороны квадрата\ n " ;

        float a; cin>>a;

        if (a>0) cout << “ Площадь квадрата со стороной  ” <<a <<” равна \t"<<a*a;

        else cout <<"Квадрат не существует\n";

        break;

        }

      case 2: { cout << "введите  длины сторон треугольника\n";

        float a,b,c,p,s; cin >> a >>b >>c;

        if (a+b>c && a+c>b && b+c>a)

        {p=(a+b+c)/2; s= sqrt(p*(p-a)*(p-b)*(p-c));

        cout <<"Площадь  треугольника со сторонами” << a << b << c <<”равна\ t " << s ;}

        else cout <<"Треугольник  не существует\n";

        break ;

        }

      case 3: break ;

      default: cout <<"Номер  фигуры указан неверно\n";}

      return 0;

    3.4. Операторы цикла

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

Информация о работе Лекции по программированию