МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
Электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Телевидения и Видеотехники
отчет
По лабораторной работе№8
По дисциплине «Информатика»
Тема: ОПЕРАТОРЫВЕТВЛЕНИЯ,
ПРОГРАММИРОВАНИЕ ВЕТВЯЩИХСЯ ПРОЦЕССОВ
Студенткагр. 7106 | Рязанцева М.Н. | |
Преподаватель | Чиркунова А.А. |
Санкт-Петербург
Цель работы: освоение способов реализации ветвящихся процессов на основе конструкций языка С++
Основные теоретические положения
Операторы ветвления в С++
1. Неполное ветвление:
if (условие) <простой оператор>;
или
if (условие) {<составной оператор>;}
2. Полное ветвление
if (условие) {код;} else {код;}
3. Ветвление «с продолжением»
if (условие) {код}
elseif (условие2) {код}
elseif(условие3) {код}
или
if (условие) {код}
elseif (условие2) {код}
else if(условие3) {код}
else {код}
4. Особенности операторов полного, неполного ветвления и ветвления «с продолжением»
4.1. ВС++ логическое выражение после слова if обязательно должно быть в круглых скобках; код обязательно должен заканчиваться точкой с запятой вне зависимости от наличия/отсутствия операторных скобок.
4.2.При вычислении условия используются следующие знаки сравнения и логические операции
Знаки сравнения | Логические операции | |||
Знак | Смысл | Оператор | Смысл | |
== | Равно | && | Логическое «И» | |
!= | Не равно | || | Логическое «ИЛИ» | |
< | Меньше | ! | Логичес ое «НЕ» | |
> | Больше | |||
<= | Меньше либо равно | |||
>= | Больше либо равно |
4.3.В условии могут стоять любые операторы, причем это не обязательно операторы отношения или логические. Считается, что любой ненулевой результат соответствует значению ИСТИНА (True), а нулевой — ЛОЖЬ (False).
5. Переключатель
switch (условие)
{
case константа: инструкции;break;
case константа: инструкции;break;
case константа: инструкции;break;
…
case константа: инструкции;break;
default: инструкции
}
Каждая ветвь case может быть помечена одной или несколькими целочисленными константами или же константными выражениями. Выполняется та ветвь case, для которой константа (выражение) совпала с условием, указанным в начале переключателя switch. Если выяснилось, что ни одна из констант не подходит, то выполняется ветвь default. Если этой ветви нет, то ничего не выполняется. Ветви case и default могут располагаться в любом порядке.
Условие, следующее за ключевым словом switch в круглых скобках, может быть любым выражением, допустимыми в языке программирования С++, значение которого должно быть целым.
В конце каждой ветви достаточно часто ставится инструкция break. Это связано с тем, что после выполнения одной ветви программа проверяет возможность выполнения остальных "ниже" находящихся ветвей. Инструкция break вызывает немедленный выход из переключателя switch.
Экспериментальные результаты
1. Код, позволяющий:
· Пользователю выбрать вычисление либо значения функции , либо значения функции
;
· вводить значение аргумента функции (переменная х);
· вводить целое число-«флажок», который будет управлять режимом расчета. (Будем полагать, что при вводе в качестве значения «флажка» 1 (единицы) будет вычисляться , а при вводе в качестве значения «флажка» 0 (нуля) будет вычислять функция
)
§ Код
#include<vcl.h>
#include <math.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
intmain(intargc, char* argv[])
{
double x, y;
intfl;
cout<<"Vvedite x:";
cin>> x;
cout<<"Vvedite '0' dlya y=1-x^2 ili '1' dlya y=|1-x^2|"<<endl;
cin>>fl;
if (fl==0) y=1-pow(x,2);
else y=abs(1-pow(x,2));
cout<< "y=" << y <<endl;
cin>> x;
return 0;
}
§ Программа
2. код для определения нужного значения функции в соответствии со схемой алгоритма, приведенной на рис. 4
§ Код
#include<vcl.h>
#include <math.h>
#include <iostream.h>
#pragmahdrstop
#pragma argsused
intmain(intargc, char* argv[])
{
double x, y;
intfl;
cout<<"Vvedite x:";
cin>> x;
cout<<" Vvedite '0' dlya y=1-x^2 ili '1' dlya y=|1-x^2|"<<endl;
cin>>fl;
y=1-pow(x,2);
if (fl==1) y=abs(y);
cout<< "y=" << y <<endl;
cin>> x;
return 0;
}
§ Программа
3. Код, позволяющий сообщить пользователю результат расчета
§ Код
#include <vcl.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
intmain(intargc, char* argv[])
{
int flag, a;
float U, R, I;
cout<< "===========================ZakonOma===========================\n";
cout<< "Vvedite 1 dlyaraschetasilytoka\n";
cout<< "Vvedite 2 dlyaraschetasoprotivleniya\n";
cout<< "Vvedite 3 dlyaraschetanapryazheniya\n";
cin>> flag;
switch(flag)
{
case 1: cout<< "Vveditenapryazhenie\n";
cin>> U;
Q1:cout<< "Vveditesoprotivlenie\n";
cin>> R;
if (R!=0)
{
I=U/R;
cout<< "Otvet: I=" << I <<endl;
}
else {cout<< "Error!\n"; goto Q1;}
break;
case 2: cout<< "Vveditenapryazhenie\n";
cin>>U;
Q2: cout<< "Vveditesilytoka\n";
cin>>I;
if (I!=0)
{
R=U/I;
cout<< "Otvet: R=" << R <<endl;
}
else {cout<< "Error!\n"; goto Q2;}
break;
case 3: cout<< "Vveditesoprotivlenie\n";
cin>>R;
cout<< "Vveditesilytoka\n";
cin>>I;
U=R*I;
cout<<"Otvet: U="<<U<<endl;
break;
}
cout<< "Nazhmitelyubuyuklavishudlyavyhoda...\n";
cin>>a;
return 0;
}
§ Программа
4. Switch
§ Код
#include<vcl.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
intmain(intargc, char* argv[])
{
int flag, a;
float U, R, I;
cout<< "===========================ZakonOma===========================\n";
cout<< "Vvedite 1 dlyaraschetasilytoka\n";
cout<< "Vvedite 2 dlyaraschetasoprotivleniya\n";
cout<< "Vvedite 3 dlyaraschetanapryazheniya\n";
cin>> flag;
if (flag==1)
{
cout<< "Vveditenapryazhenie\n"; cin>> U;
Q1:cout<< "Vveditesoprotivlenie\n"; cin>> R;
if (R!=0)
{
I=U/R;
cout<< "Otvet: I=" << I <<endl;
}
else {cout<< "Error!\n"; goto Q1;}
}
else if (flag==2)
{
cout<< "Vveditenapryazhenie\n";
cin>>U;
Q2: cout<< "Vveditesilytoka\n";
cin>>I;
if (I!=0)
{
R=U/I;
cout<< "Otvet: R=" << R <<endl;
}
else {cout<< "Error!\n"; goto Q2;}
}
else if (flag==3)
{
cout<< "Vveditesoprotivlenie\n";
cin>>R;
cout<< "Vveditesilytoka\n";
cin>>I;
U=R*I;
cout<<"Otvet: U="<<U<<endl;
}
cout<< "Nazhmitelyubuyuklavishudlyavyhoda...\n";
cin>>a;
return 0;
}
§ Программа
Вывод: мы освоили все виды ветвящихся процессов в с++