Смекни!
smekni.com

Язык программирования С (стр. 2 из 5)

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 множества задаются следующим образом; I12 + у2<102; I22 + у2>102;

I3: х22 = 102.

Ò Множества

Ò I12 + у2<102; I22 + у2>102;

Ò I3: х22 = 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 << “Программа подсчитывает площадь:&bsol;n1. квадрата;&bsol;n2. треугольника.&bsol;nЗ. выход из программы’’;

cout <<“Укажите номер фигуры или завершите работу с программой.&bsol;n”;

cin >> x;

switch (x)

{case 1 :{cout <<"введите длину стороны квадрата&bsol;n";

float a; cin >>a;

if (a>0) cout«"Площадь квадрата со стороной" <<а <<"равна&bsol;t <<а*а;

else cout «"Квадрат не существует&bsol;n";

break;}

case 2: {cout« "введите длины сторон треугольника&bsol;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 <<"равная&bsol;t" <<s;}