Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ - С-С++методичка и титул.doc
Скачиваний:
12
Добавлен:
08.11.2019
Размер:
789.5 Кб
Скачать

Оператор присваивания

Это один из основных операторов для вычисления и сохранения в памяти значения выражения, который имеет вид:

переменная = выражение.

Выражение справа вычисляются и его значение присваивается переменной слева от знака операции присваивания (=). Тип результата выражения приводится к типу переменной слева.

Например, преобразование типов данных:

int x ; char y ; long z;

x = y;

x = x + z;

В первом операторе присваивания значение y преобразуется к типу int. Во втором операторе x справа преобразуется к типу long, а результат выражения x+z преобразуется к типу int переменной x слева.

Если, как в последнем операторе присваивания, переменная находится в левой и правой части, можно образовать составное присваивание.

Пример 11.

Простое присваивание: Составное присваивание:

x = x + z; x += z;

s = s * (f + 2); s *= f + 2;

c = c + 1; c +=1;

Если, как в последнем примере, переменная изменяется на 1 можно использовать сокращенную форму присваивания с помощью операции ++ (увеличение на 1) или – – (уменьшение на 1).

Применяются две формы таких операций:

1. Префиксная, когда знак операции стоит перед операндом:

++ с; – – с ;

при этом операнд изменяется на 1 и его новое значение участвует в выражении.

2. Постфиксная, когда знак операции стоит после операнда:

c++; c– –;

при этом операнд сначала участвует в выражении со старым значением, затем операнд изменяется на 1.

Ясно, что нет никакого различия между результатами выражений ++с или с++. Форма записи операций ++ или – – сказываются в составных выражениях.

Например, пусть даны описания переменных:

int x = 1, p = 2, r ;

Тогда r = ++x + p ; // x = 2, результат r = 4,

r = p + x++ ; // x = 2, результат r = 3.

Цепочкой присваиваний можно задать одно значение нескольким переменным, например,

x = y = z = 0;

Условный оператор (if)

В разветвляющихся вычислительных процессах на некотором этапе вычислений осуществляется проверка заданного условия (в виде выражения) и выбор одной из ветвей продолжения вычислительного процесса, которых может быть две (ветви “да” и “нет”) или больше. Для реализации разветвления в программе используется условный оператор (в полной и сокращенной форме) и оператор выбора.

Полный условный оператор имеет вид:

if (условие) оператор 1

else оператор 2

где if (если) , else (иначе) – ключевые слова;

условие – это выражение (не обязательно логическое), значение которого сравнивается с 0. При этом, если значение выражения не равно 0 (условие истинно), то выполняется оператор 1, а оператор 2 пропускается, иначе (выражение = 0, то есть условие ложно) выполняется оператор 2;

оператор 1, оператор 2 – одиночные или составные операторы.

Составной оператор – это группа операторов, заключенная в фигурные скобки, которая выступает как единое целое в сложных операторах (условном и операторах цикла):

{оператор; …} .

Замечание. В случае, если оператор 1 или оператор 2 одиночные, то после них ставится разделитель точка с запятой (;), а если эти операторы составные, то после закрывающей фигурной скобки (}) точка с запятой не ставится.

Пример 12.

а) Применение одиночных операторов.

Фрагмент схемы алгоритма: Фрагмент программы:

да

x>y if ( x>y ) p = x+y;

else p = x-y;

p=x-y

p=x+y

нет printf (“p = %f”, p);

вывод(p)

б) Применение составных операторов.

Фрагмент схемы алгоритма: Фрагмент программы:

да if ( k )

k { p = x+y;

нет p=x+y printf (“p=%f”, p);

r=x-y }

else

вывод(r)

вывод(p)

{ r = x – y;

printf (“r=%f”, r);

}

Неполный условный оператор образуется, если отсутствует часть else условного оператора:

if (условие ) оператор.

Тогда, если условие истинно (не равно 0) , то выполняется оператор, иначе он пропускается, и выполняется оператор, следующий за условным оператором. В схеме алгоритма это выражается отсутствием действий по ветви “нет”:

фрагмент схемы алгоритма: фрагмент программы:

да

a >b if ( a>b ) max=a;

нет max=a

Пример 13.

В переменную max записать максимум из значений трех переменных a, b, c и вывести его.

Программа:

#include <stdio.h> // функции стандартного ввода-вывода

#include <conio.h> // функции консольного ввода-вывода

void main ( ) // главная функция

{ float a, b, c, max; // описание переменных

clrscr ( ); // очистка экрана

printf (“Введите a, b, c: ”);

scanf (“%f%f%f”, &a, &b, &c); // ввод исходных данных

if (a>b) max = a; // полный условный оператор

else max = b;

if (c>max) max = c; // неполный условный оператор

printf (“max=%f”, max); //* вывод результата

}

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

Пример14.

Влияние фигурных скобок при использовании вложенных операторов if.

  1. Программа с применением фигурных скобок:

void main ()

{ int a=2, b=7, c=3;

if (a>b)

{ if (b<c) c=b;

}

else c=a;

printf(“c=%d”, c);

}

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

с=2.

  1. Опустив фигурные скобки в операторе if, получим следующий вложенный условный оператор:

if (a>b)

if(b<c) c=b;

else c=a;

Результат в этом случае: с=3, то есть реализуется другой алгоритм.