d=a/c; //1- без потери точности
cout << “d=” <<d<<endl;
b=a/c; //2- с потерей точности
cout <<“b=”<<b<<endl; refurn 0;}
Ò Задания:
1.Составить программу, которая для заданного значения х вычисляет значения выражения:
Х2+sin (x+1)/25, c учётом приоритета операций в с++:
(pow(x,2)+sin(x+1)/25;
2.Написать программу, подсчитывающую площадь квадрата, периметр которого равен p.
Пусть дан квадрат со стороны а, тогда: p = 4a, а =p/4……
s=a2………………………………..S=
Ò Программа на языке С++ состоит из последовательности операторов, каждый из них определяет значение некоторого действия;
Ò Все операторы разделены на 4 группы:
- операторы следования;
- операторы ветвления;
- операторы цикла;
- операторы передачи управления.
Ò К ним отн-ся : оператор выражение и составной оператор.
Ò Выражение, завершающееся точкой с запятой, рассматривается как оператор (вычислении значения выражения или выполнении законченного действия);
++i; //оператор инкремента
х+=у; //оператор сложение с присваиванием
f(a, b) //вызов функции
x= max (a, b) + a*b; //вычисление сложного выражения
Ò Частным случаем оператора выражения является пустой оператор ;
(используется, когда по синтаксису оператор требуется, а по смыслу — нет)
Ò Составной оператор или блок представляет собой последоват-ть операторов, заключенных в фигурные скобки.
Ò Блок обладает собственной областью видимости: объявленные внутри блока имена доступны только внутри блока;
Ò Составные операторы применяются в случае, когда правила языка предусматривают наличие только одного оператора, а логика программы требует нескольких операторов.
Ò К ним отн-ся : условный оператор if и оператор выбора switch,
они позволяют изменить порядок выполнения операторов в программе;
Условный оператор if
Ò if используется для разветвления процесса обработки данных на два направления.
Ò if имеет формы: сокращенную или полную.
Ò Формат сокращенного оператора if: if (В) S;
В –логич. или арифметич. выражение, истинность которого проверяется; S - один оператор: простой или составной.
Ò При выполнении сокращенной формы оператора if сначала вычисляется выражение В, затем проводится анализ его результата: если В истинно, то выполняется оператор S; если В ложно, то оператор S пропускается.
Ò C помощью сокращенной формы оператора If можно либо выполнить оператор S, либо пропустить его.
Ò Формат полного оператора if: if (B) S1 ; else S2;
SI, S2- один оператор: простой или составной.
Ò При выполнении полной формы оператора if сначала вычисляется выражение В, затем анализируется его результат: если В истинно, то выполняется оператор S1 а оператор S2 пропускается; если В ложно, то выполняется оператор S2, a S1 - пропускается.
Ò C помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.
Примеры записи условного оператора if.
Ò if (a > 0) х=у; // сокращенная форма с простым оператором
Ò if (++i) {x=y; y=2*z;} // сокращенная форма с составным оператором
Ò if (а > 0 |'| b<0) x=y; eise x=z; //полная форма с простым оператором
Ò if (i+j-1) { х= 0; у= 1;} else {x=1; у:=0;} //полная форма с составными операт
Ò Операторы S1 и S2 могут являться операторами if, такие операторы наз. вложенные;
Ò Ключевое слово else связывается с ближайшим предыдущим словом if, которое еще не связано ни с одним else.
Ò Примеры алгоритмов с использованием вложенных условных операторов:
Ò Пример1 Уровни вложенности If Пример 2 Уровни вложенности if
Ò if(A<B) if (A<B)
Ò if (С < D) if (C<D) X=Y 2
Ò if(E<F)X=Q; else X=Z:
Ò else X = R; 3 2 1 else 1
else X=Z; if (E<F) X=R;
else X = Y; else X=Q; 2
Ò Оператор выбора switch
предназначен для разветвления процесса вычислений на несколько направлений.
Ò Формат оператора:
switch (<выражение>)
{case <константное_выражение_1>: [<оператор 1>]
case <константное_выражение_2>: [<оператор 2>]
…………………………..
case <константное_выражение_n>: [<оператор n>]
[default: <оператор> ]}
Ò Выражение, стоящее за ключевым словом switch, должно иметь арифметич. тип или тип указатель.
Ò Все константные выражения должны иметь разные значения, но совпадать с типом выражения, стоящим после switch.
Ò Ключевое слово case и расположенное после него константное выражение называют также меткой case.
Ò Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch.
Ò Полученный результат сравнивается с меткой case.
Ò Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки.
Ò Затем последовательно выполняются все операторы до конца оператора switch , если только их выполнение не будет прервано с помощью оператора передачи управления break
Ò При использование оператора break происходит выход из switch и управление переходит к первому после него оператору.
Ò Если совпадения выражения ни с одной меткой case не произошло, то выполняется оператор, стоящий после слова default, а при его отсутствии управление передается следующему за switch оператору.
Ò Пример. Известен порядковый номер дня недели. Вывести на экран его название.
#include <iostream>
using namespace std;
int main()
{int x; cin >>x;
switch (x)
{ case 1: cout <<"понедельник"; break;
case 2: cout <<"вторник"; break;
case 3: cout <<"среда"; break;
case 4: cout <<"четверг"; break;
case 5: cout <<"пятница"; break;
case 6: cout <<"суббота"; break;
case7: cout <<"воскресенье";break;
default: cout <<"вы ошиблись";}
return 0;}
Ò Дана точка на плоскости с координатами (х, у).
Ò Составим программу, которая выдает одно из сообщений «Да», «Нет», «На границе» (в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе)
Ò Заданная область разбивает всю плоскость на 3 непересекающихся множества точек. y
Ò I1 -множество точек, лежащих внутри области;
Ò I2- множество точек, лежащих вне области;
Ò I3 - множество точек, образующих границу области. 10 x
-10
Ò Точка с координатами (х, у) может принадлежать только одному из них;
Ò Множества I1 , I2, I3 значительно труднее описать математич-ки, чем интервалы в примере 2,поэтому для проверки выбираются те два множества, которые наиболее просто описать математич-ки.(труднее всего описать точки границы области).
Ò Для рис. 1 множества задаются следующим образом; I1:х2 + у2<102; I2:х2 + у2>102;
I3: х2 +у2 = 102.
Ò Множества
Ò I1:х2 + у2<102; I2:х2 + у2>102;
Ò I3: х2 +у2 = 102. рис.1
х
#include < iosfream>
#include <cmath> 10 y
using namespace std;
int main() -10
{ float x,y;
cout << "x="; cin >>x;
cout << “y”; cin >>y;
if (x*x+y*y< 100) //точки внутри области ?
cout <<"Да";
else if (x*x+y*y>100) //точки вне области?
cout<<"HЕT“;
else cout << "на границе";
return 0;}
Результат программы:
Координаты точек ответ
0 да
10 на границе
-12 нет
Ò Множества задаются (для рисунка 2) :
I1: |х|<10 и |y|<5; I2: |x| >10 или |y|>5;
I3:( |х|<=10и у = 5) или( |х|<=10и у = -5) или ( |y|<5и x = 10) или( |у|<5и х = -10).
Ò рис.2
#include <iostream> y Результат:
#include <cmath> 5 координаты точек ответ
int main() x 0 0 да
cout <<“x=“; cin>>x; 10 10 5 на границе
cout <<"y="; cin>>y; -12 13 нет
If (fabs(x)<10 && fabs(y)<5) //точки внутри области?
cout <<"Да";
else if (fabs(x)>101 || fabs(y)>5) //точки вне области?
cout<<"HeT";
else cout <<"на границе";
return 0;}
Ò
Ò Дан номер фигуры (1- квадрат, 2 - треугольник);
Ò по номеру фигуры запросить необходимые данные для вычисления площади;
Ò произвести вычисление площади фигуры и вывести получ-ые данные на экран.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ int x;
cout << “Программа подсчитывает площадь:\n1. квадрата;\n2. треугольника.\nЗ. выход из программы’’;
cout <<“Укажите номер фигуры или завершите работу с программой.\n”;
cin >> x;
switch (x)
{case 1 :{cout <<"введите длину стороны квадрата\n";
float a; cin >>a;
if (a>0) cout«"Площадь квадрата со стороной" <<а <<"равна\t <<а*а;
else cout «"Квадрат не существует\n";
break;}
case 2: {cout« "введите длины сторон треугольника\n";
float a,b,c,p, s; cin >>a >>b >>c;
if (a+b>c && a+c>b && b+c>a)
{p=(a+b+c)/2; s= sqrt(p*(p-a)*(p-b)*(p-c));
cout <<"Площадь треугольника со сторонами" <<a <<b <<c <<"равная\t" <<s;}