Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основная книга по С++й.doc
Скачиваний:
16
Добавлен:
28.10.2018
Размер:
2.07 Mб
Скачать

Тема 7. Представление основных управляющих структур программирования Оператор присваивания

Оператор присваивания записывается в виде:

<переменная> = <выражение>;

Значение выражения из правой части присваивается переменной из левой части оператора присваивания. При присваивании необходимо обеспечивать совместимость типов (иногда говорят – совместимость по присваиванию), т.е. тип, полученный при вычислении выражения, должен быть совместим с типом переменной, которой это значение должно быть присвоено. Значение типа T1 является совместимым по присваиванию с типом T2 (то есть, допустим, оператор T1=T2), если выполняется одно из следующих условий:

  • T1 и T2 имеют тождественные типы, и ни один из них не является файловым типом или структурным типом, содержащим компонент с файловым типом на одном из своих уровней.

  • T1 и T2 являются совместимыми порядковыми типами, и значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 являются вещественными типами, и значения типа T2 попадают в диапазон возможных значений T1.

  • T1 является вещественным типом, а T2 является целочисленным типом.

  • T1 и T2 являются строковыми типами.

  • T1 является строковым типом, а T2 является символьным типом (Char).

  • T1 и T2 являются совместимыми множественными типами, и все члены значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 являются совместимыми типами указателей.

  • T1 и T2 являются совместимыми процедурными типами.

  • T1 представляет собой процедурный тип, а T2 – процедура или функция с идентичным типом результата, идентичным числом параметров и соответствием между типами параметров.

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

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

Синтаксис оператора

{ <операторы> }

Здесь «операторы» – один или несколько любых операторов языка Си, разделенных точкой с запятой. Составной оператор предназначен для объединения нескольких операторов в один, что имеет решающее значение там, где синтаксис языка Си допускает использование только одного оператора.

Оператор перехода Goto

Синтаксис оператора

goto <метка>;

«Метка» - это любой идентификатор, после которого поставлено двоеточие. Оператор goto указывает на то, что выполнение программы необходимо продолжить, начиная с оператора, перед которым записана метка. Метку можно поставить перед любым оператором в той функции, где находится соответствующий ей оператор goto. Ее не надо объявлять.

Условный оператор If

В синтаксисе языка Си предусмотрены две конструкции для записи условного оператора: условный оператор с одним вариантом действии (сокращенная форма) и условный оператор с двумя вариантами действии (полная форма).

Синтаксис оператора if можно представить следующим образом:

if (<условие>) <оператор1> [else <оператор2>];

Здесь «условие» – логическое выражение. В результате его вычисления должен получаться результат, имеющий стандартный логический тип. Если результатом является значение True (Истина), то выполняется «оператор1». Если логическое выражение принимает значение False, и ключевое слово else отсутствует (сокращенная форма), то управление передается оператору, следующему за оператором if. В полной форме условного оператора в этом случае сначала будет выполнен «оператор2».

В общем случае, при наличии множественных вложенных операторов if ключевое слово else связывается с ближайшим ключевым словом if, которое еще не связано с ключевым словом else.

Приведем примеры использования оператора if.

if (A != B) Z = X+Y;

else Z = 1;

if (P1 = null)

{

P1 = Pl^.next;

if (a > 0)

{

if (b > 0)

{

if (c > 0) d = a*b*c;

else

if (d < 0)

{

d = SQRT(–a*b*c);

c = –c*b;

}

else d = SQR(d);

}

else d = a*b;

else d = a;

}

Пример 15. Используем оператор if для разработки программы и блок-схемы алгоритма поиска действительных корней квадратного уравнения (рис.31).

float a,b,c,z; /*Даны коэффициенты квадратного уравнения*/

float x1,x2; /*Найти и вычислить их корни*/

printf("\nВведите коэффициент а:\n");

scanf("%f",&a);

printf("Введите коэффициент b:\n");

scanf("%f",&b);

printf("Введите коэффициент с:\n");

scanf("%f",&c);

z=b*b-4*a*c; /*Z-дискриминант*/

if(z>=0.0)

{

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

x2=(-b-sqrt(z))/2/a;

printf("\nКорни уравнения:x1=%f,\nx2=%f",x1,x2);

}

else

printf("\nДействительные корни отсутствуют.");