Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
84
Добавлен:
17.04.2015
Размер:
30.72 Кб
Скачать

Лекция. Управляющие операторы.

Содержание лекции.

  1. Оператор перехода.

  2. Неполный оператор if.

  3. Полный оператор if else.

  4. Сложный оператор if else if.

  5. Тетрадный оператор выбора.

  6. Оператор swith.

  7. Вопросы для самопроверки.

1. Оператор перехода.

Программа исполняется автоматически выполняя операторы друг за другом. Такие прог-

рамы называются линейными. Для изменения хода выполнения программы в языке введе-

ны операторы перехода. Таким оператором является оператор GOTO метка;.Этот опера-

тор называется оператором безусловного перехода. Помеченным оператором называется

оператор имеющий перед собой метку. Метка – это идентификатор с : в конце.

goto metka;

операторы

metka:

Эти операторы никогда не будут выполнятся.

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

metka:

операторы

goto metka;

Поэтому оператором безусловного перехода нужно пользоваться очень осторожно.

Для исключения зацикливания и перехода в другую часть программы при выполне-

нии какого-либо условия в языке введены операторы условного перехода.

      1. Неполный оператор if.

Этот оператор называется если.

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

Если ( условие ) оператор;

if ( a!=0) c=b/a;

оператор c=b/a выполнятся будет в том случае когда а не равно 0 то истинно и не будет

выполняться когда а=0 т.е. ложно. Этот оператор называется пропуском оператора или

неполным оператором если.

Пример.

// Нахождение модуля числа с помощью пропуска оператора

#include <stdio.h>

#include <stdlib.h>

int main()

{

int a;

printf("Ввести числа a\n");

scanf("%i",&a);

if (a<0) a=-a;

printf(" \n abs(a)=%i \n",a);

system("pause");

return 0;

}

Вводим -7

Ответ 7

3. Полный оператор if.

Оператор если имеет полную форму и называется оператором выбора.

Если (условие ) оператор 1; иначе оператор 2;

if (a>b) c=a; else c=b; нахождение большего числа из a и b.

Этот оператор будет выполнять 1оператор если условие верно и 2 оператор если условие

не верно.

Пример. Найти корень линейного уравнения y=ax+b при y=0 получим ax+b=0.

Откуда x=-b/a /

//Оператор if () else

#include <stdio.h>

#include <stdlib.h>

int main()

{

float a,b;

printf("Ввести коэффициенты уравнения А и B \n");

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

if (a==0.0) printf("Корня нет\n");

else printf("Корень уравнения равен X= %f \n",-b/a);

system("pause");

return 0;

}

//Вводим -7 3

//Ответ 2.33

4. Оператор If else; if

Часто нам приходиться осуществлять выбор более чем из двух вариантов. В том случае можно расширить условный оператор если дополнив его оператором если

Если (условие1) оператор 1; иначе если (условие 2 ) оператор2; иначе оператор3;

На языке С if ( d<0) оператор 1; else if (d>0) оператор 2; else оператор 3;

//Пример. Найти корни квадратного уравнения y=Ax^2+Bx+C. При y=0 получим

A*x2 + B*x +c =0.

// РЕШЕНИЕ

По теореме Виета корни квадратного уравнения определяются сл. образом

// D = B*B - 4*A*C

//если D<0 корней действительных нет

// D=0 корни равные и равны - B/2A

// D>0 корни действительные X1= (-B+ D)/2A

// X2= (-B- D)/2A

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

float a,b,c,d,x1,x2;

printf("Ввести числа a,b,c\n");

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

printf("A= %f B= %f C= %f\n", a,b,c);

d=b*b-4*a*c;

printf("D=%f \n",d);

if (d<0) printf(" Действительных корней нет\n");

else

if(d==0) printf(" Корни равные Х= %f \n", -b/2/a);

else printf(" корни действительные X1= %f\n X2= %f \n",

(-b+sqrt(d))/2/a,(-b-sqrt(d))/2/a);

system("pause");

return 0;

}

//Ввод: 1 1 1

//Ответ: действительных корней нет

5. Тернарный оператор выбора.

Оператор условия является тернарным оператором и включает в себя три операнда.

(условие) ? выражение 1 : выражение2;

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

Например определить функцию sign (a) равна 1 при а >0 и -1 при a<0.

sig = (a>0) ? 1 : -1;

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

//Оператор условия

#include <stdio.h>

#include <stdlib.h>

int main()

{

int a;

printf("Enter A\n");

scanf("%i",&a);

a= (a<0) ? a=-a:a=a;

printf("|A|= %i\n",a);

system("pause");

return 0;

}

6. Оператор переключения switch.

В том случае когда вариантов выбора больше 2 рекомендуется использовать оператор выбора switch

оператор ( переключатель) {

case метка 1: оператор1 ; выход;

case метка 2: оператор2 ; выход;

case метка n: оператор n ; выход;

default : оператор n+1; выход; }

На языку С этот оператор реализуется следующим образом:

switch ( k) {

case ‘+’ : c=a+b; break;

case ‘-’ : c=a-b; break;

case ‘*’ : c=a*b; break;

case ‘/’ : c=a/b; break;

default : printf(“такой операции нет\n”);break;

}

Пример.

//Написать программу выдающую номер

//квартала по номеру месяца

#include <stdio.h>

#include <stdlib.h>

int main()

{

int k;

printf("Enter N mes\n");

scanf("%i",&k);

switch (k)

{

case 1,2,3: printf(" 1 kvartal\n"); break;

case 4,5,6: printf(" 2 kvartal\n"); break;

case 7,8,9: printf(" 3 kvartal\n"); break;

case 10,11,12: printf(" 4 kvartal\n"); break;

default:printf("ETO TRUDNAJ ZADATHA\n");

}

system("pause");

return 0;

}

// 5

// это трудная задача

Вопросы для самопроверки.

  1. Оператор перехода.

  2. Неполный оператор если.

  3. Оператор выбора. Если то иначе

  4. Оператор множественного выбора. Если то иначе если то иначе.

  5. Оператор условия () ? :

  6. Оператор выбора swith.