Similar presentations:
Операторы. Лекция 3 по алгоритмизации и программированию
1. Лекция 3
2.
1. Оператор «выражение»i++;
a+=2;
x=a+b;
;
Основное назначение выражения:
1) определить порядок вычисления некоторого
выражения;
2) найти значение выражения.
Если результатом вычисления выражения
является число, то данное выражение –
арифметическое. Если результатом будет
значение «истина» или «ложь», то это
логическое выражение.
3. Примеры решения задач
• Задача №1.Определить,
попадет ли точка с
координатами (х, у )
в заштрихованную
область.
4.
#include <iostream>#include <cmath>
using namespace std;
void main()
{
float x,y;
cout<<"\nEnter x,y";
cin>>x>>y;
bool Ok=(y>=-x+1&& y<=2/3*x+2 && x>=0 &&
y>=0) ||
(x*x+y*y>=1 && x*x+y*y<=9 && x<=0) ||
(x>=0 && x<=1 && y<=-1 && y>=-3) ||
(x>=1 && x<=2 && y<=0 && y>=-3);
cout<<"\n"<<Ok;
}
5.
Если в выражениях встречаются переменные и константы разных типов,то производится автоматическое преобразование типов.
Правила преобразования типов
1) Преобразование типов не происходит, если оба операнда имеют
одинаковый тип.
2) При наличии разных типов величина с младшим типом приводится к
величине старшего типа, исключение составляют операция
присваивания и оператор присваивания.
3) При выполнении операций присваивания величина, полученная в
правой части, преобразуется к типу переменной, стоящей в левой части.
Пример:
int x;
float a=2.55, c=1.75; //double преобразуется в float
x=a+b;
Преобразование целого типа (от младшего к старшему)
char short int long int
Преобразование вещественного типа (от младшего к старшему)
float double long double
6. 2. Составные операторы
2.1. Составные операторы{
n++;
составной оператор
summa+=n;
}
//это
2.2. Блоки
{
int n=0;
n++;
summa+=n;
}
//это блок
7.
ПРОГРАММИРОВАНИЕ ВЕТВЛЕНИЙВ языке С для программирования ветвлений
существуют:
1) условная операция;
2) условный оператор
3) оператор-переключатель.
Условная операция
<выражение> ?
<выражение_1>:<выражение_2>
(левоассоциативная операция)
Вычисляется значение выражения.
Если значение отлично от 0, то
вычисляется «выражение_1».
Если выражение будет равно 0, то
вычисляется «выражение_2» и
результатом будет значение выражения
2.
max=(a>b)?a:b;
8.
• Выражение-условие :• арифметическое выражение,
• отношение,
• логическое выражение.
9. 3. Операторы выбора
3.1. Условный операторif (выражение-условие) оператор; //сокращенная форма
if (выражение-условие) оператор;
else оператор;
//полная форма
10.
11.
Найти решение квадратного уравнения ax2+bx+c=0.#include “stdio.h”
#include “math.h”
void main ()
{
float a,b,c;
float d,x1,x2;
printf(“\nВведите a, b, c”);
scanf(“%f%f%f”,&a,&b,&c);
d=b*b-4*a*c;
if (d>0) { printf(“\nДва корня”);
x1=(–b+sqrt(d))/(2*a);
x2=(–b–sqrt(d))/(2*a);
printf(“: x1=%8.3f x2=%8.3f”,x1,x2);
}
else {
x1=–b/(2*a);
x2=sqrt(fabs(d))/(2*a);
if (d<0) { printf (“\n Комплексные корни”);
printf(“\nx1=%8.3f+%8.3f*I”,x1,x2);
printf(“\nx2=%8.3f-%8.3f*I”,x1,x2);
}
else printf (“\nКратный корень: %8.3f”,x1);
}
}
12. 3.2. Переключатель
switch (выражение){
case константа1 : оператор1 ;
case константа2 : оператор2 ;
...........
[default: операторы;]
}
13.
14.
Результаты работы программы:1.
При вводе 1 будет
выведено:
The number is one
2*2=1
#include <iostream>
3*3=1
using namespace std;
1 is very beautiful!
void main()
The end of work
{
2.
При вводе 2 будет
int i;
выведено:
2*2=4
cout<<"\nEnter the number";
3*3=4
cin>>i;
2 is very beautiful!
switch(i)
The end of work
{
3.
При вводе 3 будет
case 1:cout<<"\nThe number is выведено:
one";
3*3=9
3 is very beautiful!
case 2:cout<<"\n2*2="<<i*i;
The end of work
case 3: cout<<"\n3*3="<<i*i;
4.
При вводе 4 будет
case 4: cout<<"\n"<<i<<" is
выведено:
very beautiful!";
4 is very beautiful!
default:cout<<"\nThe end of
The end of work
work";
5.
При вводе всех остальных
чисел будет выведено:
}
The end of work
}
Пример
15.
y=1.0;n=4;
switch (n)
{
case 5: y=y*x;
case 4: y*=x;
case 3: y*=x;
case 2: y*=x;
case 1: y*=x; printf(“\ny=%e”,y);
default: printf(“\nСтепень больше 5”);
}
При х=2 фрагмент программы вычисляет
значение 2^4.
16.
Оператор break – оператор завершениякакого-либо действия.
Моделирование
оператора
выбора
аналогичного оператору выбора на языке Паскаль
с
помощью
оператора-переключателя
производится следующим образом:
switch (<целочисленное выражение>)
{
case
<константа
1>:
<список
операторов>; break;
case
<константа
2>:
<список
операторов>; break;
...
case
<константа
N>:
<список
операторов>; break;
[default: < список операторов >;]
}
17.
ПРОГРАММИРОВАНИЕ ЦИКЛОВЕсли для решения задачи необходимо
несколько раз подряд выполнить действие или
группу действий, то для этого организуются
циклы.
Все циклические алгоритмы делятся на две
группы:
1) количество повторений заранее известно
(используются циклы с параметром);
2) количество повторений заранее неизвестно
(используются циклы с предусловием и с
постусловием).
18. 4.1. Цикл с параметром
for (выражение_1;выражениеусловие;выражение_3)оператор;
•Выражение_1 – задает начальные значения для
цикла (инициализация) могут присутствовать
другие операторы присваивания.
• Выражение-условие определяет условие
выполнения
цикла, если оно не равно 0, цикл выполняется,
а затем вычисляется значение выражения_3.
•Выражение_3 – задает изменение параметра цикла
или
других переменных (коррекция).
19.
Вычислить F=n!=1 2 3 4… n.1)F=1;
for (i=1; i<=n; i+=1) F=F*i;
2)for(F=1,i=1; i<=n; i++) F=F*i;
3) for(i=1,F=1; i<=n; i++) F=F*i;
4)F=1;
for (i=1; i<=n; F*=i,i++);
/* Сначала идет вычисление факториала,
а затем изменение шага. Тело цикла
является пустым.*/
5)for (F=1,i=1; i<=n; F*=i,i++);
6)for(F=1,i=1;i<=n; i++, F*=i);
вычисляет значение (n+1)!.
20.
• Задача №2. Данапоследовательность целых
чисел из n элементов. Найти
среднее арифметическое
этой последовательности.
21.
#include <iostream>using namespace std;
void main()
{
int a,n,i;
double s=0;
cout<<"\nEnter n";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"\nEnter a";
cin>>a;
s+=a;
}
s=s/n;
cout<<"\nсреднее арифметическое
равно="<<s<<"\n";
}
22.
В качестве параметра цикла может выступатьпеременная любого типа.
Пример
Получить на отрезке от a до b значения функции
y=sin x с шагом h. Данные задачи: x [a;b], h, y=sin x,
x=x+h.
...
float a,b,h,x,y;
for (x=a;x<=b;x+=h)
{ y=sin(x);
printf(“\nx=%5.3f y=%5.3f”,x,y);
}
...
23.
4.2. Цикл с предусловиемwhile (выражениеусловие)
оператор;
Пример
a=1;s=0;
while (a!=0)
{
cin>>a;
s+=a;
}
24.
ПримерНайти сумму цифр произвольного целого числа.
...
S=0;
n=abs(n);
while (n)
{S+=n%10; // n%10 – выделяет последнюю
цифру числа
n/=10; ; // n/10 – «зачеркивает»
последнюю цифру
}
...
Оператор цикла или один из операторов,
составляющих тело цикла, обязательно должен
изменить условие продолжения цикла. Особенность
цикла с предусловием – тело цикла может не
выполниться ни разу в случае, когда n=0.
25. 4.3. Цикл с постусловием
doОператор;
while (выражениеусловие);
Пример
s=0;
do
{
cin>>a;
s+=a;
}
while(a!=0);
26.
• Задача №3. Дана последовательностьцелых чисел, за которой следует 0.
Найти минимальный элемент этой
последовательности.
27.
//вариант программы №1#include <iostream>
using namespace std;
void main()
{
int a,min;
cout<<"\nEnter a";
cin>>a;
min=a;
while(a!=0)
{
cout<<"\nEnter a";
cin>>a;
if (a!=0&&a<min) min=a;
}
cout<<"\nmin="<<min<<"\n";
}
28.
//вариант программы №2#include <iostream>
using namespace std;
void main()
{
int a,min;
cout<<"\nEnter a";
cin>>a;
If (a!=0)
{
min=a;
do
{
cout<<"\nEnter a";
cin>>a;
if (a!=0 && a<min) min=a;
}
while(a!=0);
cout<<"\nmin="<<min<<"\n";
}
else cout<<"\nPYSTO\n";
}
29.
//вариант программы №3#include <iostream>
using namespace std;
void main()
{
int a,min;
cout<<"\nEnter a";
cin>>a;
min=a;
for(;a!=0;)
{
cout<<"\nEnter a";
cin>>a;
if (a!=0&&a<min) min=a;
}
cout<<"\nmin="<<min<<"\n";
}