
Лекции / Л№7.Управляющие операторы.Аппаратноеобеспечение ЭВМ / Оператор IF
.docЛекция. Управляющие операторы.
Содержание лекции.
-
Оператор перехода.
-
Неполный оператор if.
-
Полный оператор if else.
-
Сложный оператор if else if.
-
Тетрадный оператор выбора.
-
Оператор swith.
-
Вопросы для самопроверки.
1. Оператор перехода.
Программа исполняется автоматически выполняя операторы друг за другом. Такие прог-
рамы называются линейными. Для изменения хода выполнения программы в языке введе-
ны операторы перехода. Таким оператором является оператор GOTO метка;.Этот опера-
тор называется оператором безусловного перехода. Помеченным оператором называется
оператор имеющий перед собой метку. Метка – это идентификатор с : в конце.
goto metka;
операторы
metka:
Эти операторы никогда не будут выполнятся.
Если метка стоит перед оператором goto то программа никогда не закончится и требуется аварийный выход. В этом случае говорят: программа зациклилась.
metka:
операторы
goto metka;
Поэтому оператором безусловного перехода нужно пользоваться очень осторожно.
Для исключения зацикливания и перехода в другую часть программы при выполне-
нии какого-либо условия в языке введены операторы условного перехода.
-
Неполный оператор 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
// это трудная задача
Вопросы для самопроверки.
-
Оператор перехода.
-
Неполный оператор если.
-
Оператор выбора. Если то иначе
-
Оператор множественного выбора. Если то иначе если то иначе.
-
Оператор условия () ? :
-
Оператор выбора swith.