Оператор условной передачи управления if

Для выбора одной из ветвей вычислений применяется оператор условного перехода:

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

elseоператор2;

вычисляется выражение, и если его значение не равно 0 (истинно), то выполняетсяоператор1, иначе –оператор2, например:

if(x>y) max = x;

else max = y;

Если операторы1,2содержат более одного оператора, то они заключаются в фигурные скобки{ }, т.е. применяетсяблок.

Конструкция else…может отсутствовать и такую форму называютсокращенной, тогда в случае ложности условия управление передается на следующий заifоператор.

Если операторы 1,2в свою очередь являются операторамиif, то такой оператор называютвложенным, при этом ключевое словоelseпринадлежит ближайшему предшествующемуif.

Например, найти наибольшее значение из трех чисел x,y,z:

if (x>y)

if (x>z) max=x;

else max=z;

else if(y>z) max=y;

else max=z;

Операции сравнения:<(меньше),<=(меньше или равно),>(больше),>=(больше или равно),!=(не равно),= =(равно). Пары символов разделять нельзя.

Операции сравнения бинарные, их общий вид:

Операнд 1знак операцииОперанд2

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

Логические операции используются в качестве условий при составлении более сложных выражений. Приведем их перечень в порядке убывания приоритета:

!(отрицание или логическое НЕ – унарная операция),&&(конъюнкция или логическое И),||(дизъюнкция или логическое ИЛИ).

Например: (0<x)&&(x<=100)

((!x)&&(y>0)||((z==1)&&(k>0))

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

Тернарная (условная) операция ?:

Ее общая форма:

Операнд 1?Операнд2:Операнд 3

Если значение операнда 1 истинно (не равно 0), то результатом операции являетсяоперанд2, иначе –операнд3.

Например, найти наибольшее из двух чисел: max = a>b ? a : b;

Оператор выбора switch

Общая форма оператора выбора (переключателя):

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

caseconst_1: операторы; break;

caseconst_N: операторы;break;

default:операторы;

}

Вычисляется выражениеи проверяется, совпадает ли его результат со значением одной из констант. При совпадении выполняются операторы этого case. Значениями const_1,…,const_N могут быть только целые или символьные константы. Конструкция default выполняется, если результат выражения не совпал ни с одной из констант, и может отсутствовать. Оператор break выполняет досрочный выход из switch (после выполнения ветви case все остальные будут опущены). Если оператор break в case не записан, то будут выполняться операторы следующих ветвей case до появления оператора break, либо до завершения оператора switch.

Например:

switсh(i) {

case 1: f=pow(x,2); break;

case 2: f=fabs(x); break;

case 3: f=sqrt(x); break;

default: printf(“Ошибка!”); exit(1);

}

f=f+5;

Пример выполнения задания

Ввести значения исходных данных x,yиz. Вычислить значение функции

Оператор условной передачи управления if - student2.ru Оператор условной передачи управления if - student2.ru

Предусмотреть вывод сообщения, по какой ветви выполнялись вычисления.

Текст программы может иметь седующий вид (в комментариях указаны действия по вводу-выводу в потоках, набираемые вместо записанных):

#include <conio.h> // #include <iostream.h>

#include <stdio.h>

#include <math.h>

void main()

{

double x, y, z, u;

puts("Input x, y, z"); // cout << "Input x, y, z" << endl;

scanf("%lf%lf%lf",&x, &y, &z); // cin >> x >> y >> z;

if (x*y > z){

u = x*sin(y);

puts(" x*y > z"); // cout << " x*y > z" << endl;

}

else {

u = y*cos(x);

puts(" x*y <= z"); // cout << " x*y <= z" << endl;

}

printf("\n\t Rezult U = %8.6lf", u); // cout << "\n\t Rezult U = " << u;

puts("\nPress any key ... "); // cout <<"\nPress any key ... " << endl;

getch();

}

Результаты выполнения программы для различных исходных данных, вводимых в одной строке, разделяя их пробелами, могут иметь следующий вид:

1 вариант введенные значения соответсвуют первому условию:

Оператор условной передачи управления if - student2.ru

2 вариант введенные значения соответсвуют второму условию:

Оператор условной передачи управления if - student2.ru

Задание №6. Реализация циклических алгоритмов

Цель работы:изучить циклические операторы while,do-while,for, научиться реализовывать циклические алгоритмы. Составить и отладить программу.

Теоретические сведения

Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной формах. Для организации повторений в языке C++ используются три различных оператора цикла.

1. Оператор цикла с предусловием

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

код цикла

организует повторение операторов кода цикладо тех пор, покавыражениеистинно (не равно 0), если выражение = 0 (ложно) при первом входе, то код цикла не выполнится ни разу. Если код цикла состоит более чем из одного оператора, то организуетсяблок.

2. Оператор цикла с постусловием

do

код цикла

while (выражение);

организует повторение кода цикладо тех пор, пока выполнитсявыражениеистинно, после чего управление передается следующему за циклом оператору. Данный оператор гарантирует выполнениекода циклахотя бы один раз.

3. Оператор с предусловием и коррекцией

for (выражение 1;выражение 2;выражение 3)

код цикла

где выражение 1– начальное значение параметра цикла;выражение2– проверка условия на продолжение цикла;выражение3– изменение (коррекция) параметра цикла.

Вначале вычисляется выражение 1, затем проверяетсявыражение 2, если оно – истинно, то выполня­ет­ся код цикла, затем производится коррекция ввыражении3, и так до тех пор, покавыражение2 не примет значение «ложь».

Досрочный выход из операторов цикла выполняет оператор break, а операторcontinueвыполняет передачу управления в головной оператор цикла.

Пример выполнения задания

Написать и отладить программу вывода всех значений функции S(x) для аргументах, изменяющегося в интервале от а до b c шагом h и заданном n.

Оператор условной передачи управления if - student2.ru .

Текст программы предложенного задания может иметь следующий вид (в комментариях указаны действия по вводу-выводу в потоках, набираемые вместо записанных):

#include <stdio.h> // include <iostream.h>

#include <conio.h>

void main()

{

double a, b, x, h, r, s;

int n, zn = -1, k;

puts("Input a,b,h,n"); // cout << "Input a,b,h,n" << endl;

scanf("%lf%lf%lf%d", &a, &b, &h, &n); // cin >> a >> b >> h >> n;

for(x = a; x<=b; x+=h) {

r= s=1;

for(k = 1; k<=n; k++) {

r=zn*r*x/k;

s+=r;

}

printf("\n x= %8.2lf sum= %8.5lf", x,s);

// cout << "\n x= " << x << " sum= " << s;

}

puts("\nPress any key ... "); // cout << "\nPress any key ... " << endl;

getch();

}

Результат программы с введенными в одной строке значениями a=0.1,b=1.0,h=0.2 иn=10, будет иметь следующий вид:

Оператор условной передачи управления if - student2.ru

Задание №7. Обработка массивов

Цель работы: изучить составной тип данных – массив. Написать и отладить программу с использованием массивов.

Теоретические сведения

Массив – конечная последовательность данных одного типа. Массив – объект сложного типа, каждый элемент которого определяется именем (ID) и целочисленным значением индекса (номера), по которому к элементу массива производится доступ. Рассмотрим одномерные массивы.

Внимание!Индексы массивов в языке С/С++ начинаются с 0.

В программе одномерный массив декларируется следующим образом:

типID массива[размер];

где размер– указывает количество элементов в массиве. Размер массива может задаваться константой или константным выражением. Для использования массивов переменного размера существует отдельный механизм – динамическое выделение памяти.

Примеры декларации массивов:

int a[5];

doubleb[4] = {1.5, 2.5, 3.75};

в целочисленном массиве апервый элемента[0], второй –а[1], …, пятый –а[4]. Для массиваb, состоящего из действительных чисел, выполнена инициализация, причем элементы массива получат следующие значения:b[0]=1.5,b[1]=2.5,b[2]=3.75,b[3]=0.

В языке С/С++ не проверяется выход индекса за пределы массива. Корректность использования индексов элементов массива должен контролировать программист.

Примеры описания массивов:

const Nmax=10; – задание максимального значения;

typedefdoublemas1[Nmax*2]; – описание типа одномерного массива;

mas1a; – декларация массиваатипаmas1;

intss[10]; – массив из десяти целых чисел.

Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

f = 2*a[3] + a[Ss[i] + 1]*3;

a[n] = 1 + sqrt(fabs(a[n–1]));

Пример выполнения задания

В статическом массиве А размеромN(не более 20), состоящем из целых чисел найти количество четных чисел и их сумму. Размер массива и его элементы вводятся с клавиатуры.

Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:

#include <iostream.h>

#include <conio.h>

void main()

{

int a[20], n, i, kol = 0, s = 0;

cout << "\t Input N (<=20) ";

cin >> n;

cout <<"\n\t Massiv A" << endl;

for(i=0; i<n;i++) {

cout << "\t a[ " << i+1 << " ] = ";

cin >> a[i];

}

for(i=0; i<n;i++)

if(a[i] % 2 ==0){

kol++;

s += a[i];

}

cout << "\n Kol-vo = " << kol << "\t Summa = " << s << endl;

cout << "\n Press any key ... " << endl;

getch();

}

Результат выполнения программы может иметь следующий вид:

Оператор условной передачи управления if - student2.ru

Наши рекомендации