Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория по языку СИ.doc
Скачиваний:
27
Добавлен:
03.03.2016
Размер:
1.93 Mб
Скачать

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

Это группа операторов, отделенных друг от друга точкой с запятой, начинающихся с открывающей фигурной скобки { и заканчивающихся закрывающейся фигурной скобкой }.

{

оператор_1;

...

оператор_n

}

Транслятор воспринимает составной оператор как один оператор.

2.4. Операторы ветвления

Алгоритмы разветвленной структуры (рис. 4) применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие.

Рис. 4. Блок-схема алгоритма разветвляющейся структуры

Условный оператор, соответствующий приведенной блок-схеме, имеет вид:

if (выражение) оператор_1;

else оператор_2;

Вычисляется выражение. Если оно не равно нулю, т.е. имеет значение true, выполняется оператор_1, в противном случае (выражение равно нулю, т.е. false) – оператор_2.

Если в зависимости от некоторого условия выполняется некоторое действие, а в противном случае ничего не происходит, то алгоритм имет вид (рис. 5):

Рис. 5. Блок-схема алгоритма разветвляющейся структуры, без альтернативного действия

Условный оператор в этом случае имет конструкцию:

If (выражение) оператор;

Эту запись можно назвать «пропуск оператора else». Здесь оператор либо выполняется, либо пропускается, в зависимости от значения выражения.

Если в какой-либо ветви условного процесса требуется выполнить несколько операторов, следует использовать составной оператор.

Распространенные ошибки при программировании условных процессов:

1. Неверное использование операций проверки равенства (==) и присваивания (=). Например,

if (a=1) b=0; //НЕ ВЕРНО4

if (a==1) b=0; //ВЕРНО

2. Запись проверки на принадлежность диапазону. Например,

if if (0<x<1)… //НЕ ВЕРНО

if (0<x && x<1)… //ВЕРНО

4.2.5. Примеры программ

ЗАДАЧА 4. Известны коэффициенты а, b и с квадратного уравнения ax2+bx+c=0. Вычислить корни квадратного уравнения.

Входные данные: a, b, c.

Выходные данные: х1, х2.

Алгоритм решения задачи в виде блок-схемы представлен на рис. 6.

Рис. 6. Алгоритм решения квадратного уравнения

#include <stdio.h>

#include <math.h>

void main()

{

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

printf("\n vvedite a \n"); scanf("%f",&a);

printf("\n vvedite b \n"); scanf("%f",&b);

printf("\n vvedite c \n"); scanf("%f",&c);

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

if (d<0) printf("reshenij net \n");

else

{

x1=(-b+sqrt(d))/2/a; x2=(-b-sqrt(d))/2/a;

printf("x1=%f \n", x1); printf("x2=%f \n", x2);

}

}

ЗАДАЧА 5. Дано вещественное число x. Для функции, график которой приведен на рис. 7, вычислить y=f(x).

Рис. 7. Графическое представление задачи 5

Постановка задачи:

Алгоритм решения задачи 5 представлен на рис. 8.

Рис. 8. Блок-схема решения задачи 5

#include <iostream.h>

#include <math.h>

int main()

{

float x,y;

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

if (x<=1) y=1;

else if (x>1) y=2;

else y=fabs(x);

cout<<"\n x="<<x<<"\t y="<<y;

}

4.2.6. Оператор варианта

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений:

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

{

case значение_1: Операторы_1; break;

case значение_2: Операторы_2; break;

[default: Операторы; break;]

}

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

Если выражение=значение_1, то выполняются операторы_1. Если выражение =значение_2, то выполняются операторы_2 и т .д.

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

ЗАДАЧА 6. Вывести на печать название дня недели, соответствующее заданному числу D, при условии, что в месяце 31 день и 1-е число – понедельник.

Если остаток от деления заданного числа D на семь равен единице, то это понедельник, двойке – вторник, тройке – среда и так далее. Выражение D % 7 может принимать только одно из значений: 1, 2, 3, 4, 5, 6 или 0. В записи оператора варианта ветвь default будет отсутствовать.

int main()

{unsigned int d;

cout<<"d="; cin>>d;

switch (d%7)

{

case 1: cout<<"Monday";break;

case 2: cout<<"Tuesday";break;

case 3: cout<<"Wednesday";break;

case 4: cout<<"Thursday";break;

case 5: cout<<"Friday";break;

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

case 0: cout<<"Sunday";break;

}

}

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.