You are on page 1of 32

Programao Aplicada

Engenharia
Prof. Wellington Lima dos Santos

Prtica 02 Operadores e Funes

Plano de aula

Octave

Operadores

De atribuio
Aritmticos
Relacionais
Lgicos

Funes

Elementares/utilitrias
Trigonomtricas
Exponeciais e Logaritmicas
2

Operadores

Um operador realiza uma operao matemtica ou


lgica sobre um operando, ou entre dois operandos, ou
seja ele pode ser unrio ou binrio.
Geralmente os operadores so representados por um
ou dois smbolos no alfanumricos do teclado, ou ainda
por um nome curto. Eis alguns operadores do Octave:

+ - * / ^ ** == ~= != > >= < <=


| || & && ~ ! xor etc.

As linguagens de programao oferecem as seguintes


classes de operadores:

operador de atribuio (comando de atribuio para algumas)


operadores aritmticos, relacionais e lgicos

Operador de Atribuio

No Octave, o smbolo = representa o operador de


atribuio.

No confunda-o com o smbolo de igualdade da matemtica, que


no Octave representado por ==.

Sua sintaxe :
nomeVar = expresso

O valor retornado pela expresso sua direita


armazenado na varivel sua esquerda. Exemplos:

num = 20
%l-se num recebe 20
x = 2 * num + 1
z = y = 5
%primeiro y recebe 5, depois z recebe y

Operadores Aritmticos
Operadores Aritmticos Binrios:
Atuam sobre um operando esquerda e outro direita
Operador

Operao

Adio

Subtrao

Multiplicao

Diviso

Potenciao

**

Potenciao

Prioridade
baixa
mdia
alta

Exemplo

Resultado

2 + 3

17 9

4 * 5

20

5 / 4

1.25

2 ^ 3

3 ** 2

Operadores Aritmticos Unrios de Sinal + e -:


y = +5
y = 3 * -4

% O mesmo que y = 5
% atribui -12 z
5

Operadores Aritmticos

Operaes envolvendo operadores de maior prioridade


so executadas primeiro:
5 + 4 * 3 ^ 2

Operaes com operadores de mesma prioridade so


executadas da esquerda para a direita:
5 + 4 3
2 * 3 / 4

% 9 - 3 = 6
% 6 / 4 = 1.5

Cuidado:

% 5 + 4 * 9 -> 5 + 36 = 41

No Octave, 2^2^3 igual a (2^2)^3 = 64, como no Excel


e no 2^(2^3) = 256, como nas calculadoras HP

Salvao (regra que vale sempre):

Se houver dvida sobre a prioridade, use parnteses!


6

Funes Matemticas Elementares

No Octave as funes matemticas operam sobre


argumentos que podem ser:

nmeros reais ou escalares (matrizes 1x1)


nmeros complexos (partes real e imaginria)
vetores ou matrizes (de nmeros reais ou complexos)

abs(x)
sqrt(x)
fix(x)
round(x)
ceil(x)
floor(x)
mod(x,y)
rem(x,y)

retorna o valor absoluto de x.


retorna a raiz quadrada de x.
retorna a parte inteira de x.
retorna o inteiro mais prximo de x.
retorna o teto (inteiro mais prximo que x).
retorna o piso (inteiro mais prximo que x).
retorna o resto da diviso de x por y.
retorna o resto da diviso de x por y.

se x y > 0, mod(x, y) = rem(x, y)


se x y < 0, mod(x, y) = rem(x, y) {mod tem o sinal de x e rem o sinal de y.}

Exemplos de fix, round, floor e ceil


x

fix(x)

round(x)

floor(x)

ceil(x)

2.0
2.3
2.5
2.7
3.0
-2.3
-2.7

2
2
2
2
3
-2
-2

2
2
3
3
3
-2
-3

2
2
2
2
3
-3
-3

2
3
3
3
3
-2
-2

Restos retornados por mod e rem

mod(x, y)

rem(x, y)

-8

-2

-3

-1

-8

-3

-2

-2

Quando os argumentos de mod e rem tm o mesmo


sinal, os resultados de ambas so os mesmos.
Quando os sinais so diferentes, rem pode ser mais
adequada. Um exemplo concreto: o Octave no tem
uma funo que retorne a parte fracionria de um No x
qualquer, mas pode-se obt-la com rem(x, 1):
>>rem(3.4, 1) % 0.4; mod(3.4, 1) -> 0.4
>>rem(-3.4, 1) % -0.4; mod(-3.4,1) -> 0.6
9

Funes Trigonomtricas

sin(x), cos(x), tan(x), asin(x), acos(x), atan(x)

O argumento x deve estar em radianos

>> sin(pi/6)
ans =
0.5000

Para usar argumentos em graus (degrees),


acrescente d ao nome destas funes:

sind(x), cosd(x), tand(x),


asind(x), acosd(x), atand(x)

>> sind(30)
ans =
0.5000
10

Funes Logartmicas e Exponenciais

log(x)

Retorna o logaritmo neperiano


(base e = 2,7183...) x

>> log(10)
ans =
2.3026

log10(x)

Retorna o logaritmo decimal de x

>> log10(100)
ans =
2.0000

exp(x)

Retorna e (2.7183...) elevado a x: ex

>> exp(1)
ans =
2.7183

11

12

(pi * sin(pi^2-4))/(3+sqrt(2/(pi-1)))

(1+sqrt(2/(pi+3)))/(cos(pi^2-4)+5)

(4-log(pi-3))/sqrt(2/(exp(pi)-1))

(pi-sqrt(abs(1/pi-2)))/(3+exp(4-pi))

ans =

19.813

4 ln 3

ans = 0.34422

2
exp( ) 1
c)

d)

3 e 4

ans = -0.31832
ans =

0.26551

Utilize o Octave para calcular os resultados das expresses:


2
11

2
sin( 4)
3
a)
b)

cos(

4) 5
2
3

11

Exerccio 1:

Exerccio 2:

Elabore um programa que leia o lado de um


quadrado qualquer, calcule e mostre na tela
os valores do permetro e da rea do
quadrado.

Dicas:

Utilize o comando input


Permetro = 4 * lado
rea = lado * lado
13

Soluo 2

Abra o editor, digitando edit na linha de comando ou


pressionando <Ctrl + 4>
Digite (ou copie e cole) o cdigo abaixo:
lado = input("Digite o lado do quadrado: ")
per = 4 * lado;
area = lado * lado;
fprintf("O quadrado de lado %f tem perimetro %f e
%f\n", lado, per, area)

area

Salve (<Ctrl + S>) o arquivo como areaperquad;


Volte para a linha de comando, pressionando <Ctrl + 0>
e digite:
>> areaperquad
14

Exerccio 3

Implemente um programa que leia dois


intervalos de tempo decorridos, ambos dados
em horas e minutos, calcule a soma dos
intervalos e mostre o resultado na tela em
horas e minutos.

15

Soluo 3
h1 = input("Digite o numero de horas
do primeiro intervalo: ");
m1 = input("Digite o numero de minutos do primeiro intervalo: ");
h2 = input("Digite o numero de horas
do segundo intervalo: ");
m2 = input("Digite o numero de minutos do segundo intervalo: ");
%calcula o nmero de horas
horas = h1 + h2 + fix((m1+m2)/60); % fix retorna a parte inteira
minutos = mod(m1 + m2, 60);
fprintf("\n%d Horas %d e minutos mais %d horas e %d minutos\n",h1,m1,
h2,m2);
fprintf("\nE' igual a %d horas e %d minutos.\n", horas, minutos );

16

Exerccio 4

Escreva um programa que leia um nmero


inteiro de trs dgitos, N (100 N 999) e
escreva como resposta esse nmero com os
dgitos invertidos.

Exemplo: se a entrada for 123, a sada ser 321.


Dicas:
mod(N, 10) ou rem(N, 10) retorna o dgito da
unidade;
fix(N / 10) retorna N sem o dgito da unidade, ou
seja, desloca a dezena para a unidade, a centena
para dezena...
17

Operadores Aritmticos de Incremento


(++) e Decremento (--)

A linguagem do Octave permite dois operadores bastante teis:

Estes operandos trabalham de dois modos:

++ ( operador de incremento ) : adiciona um ao valor de uma varivel


-- (operador de decremento ): subtrai um do valor uma varivel
++NomeVar ou --NomeVar
NomeVar++ ou NomeVar--

(modo prefixado)
(modo ps-fixado)

No modo prefixado, quando a varivel precedida de ++ ou -- lida


na memria, primeiro ela incrementada ou decrementada, s
ento o seu novo valor disponibilizado.
Exemplos:
a
x
y
z

=
=
=
=

4; b = 7; c = 3;
++a
% a = 5, x = 5
--b * 2
% b = 6, y = 12
++c * ++c - ++c % z = 4 * 5 6 = 14, c = 6
18

Operadores Aritmticos de Incremento


(++) e Decremento (--)

No modo ps-fixado, quando a varivel sucedida por ++ ou --


lida na memria, uma cpia do seu valor disponibilizada para a
operao corrente e a varivel incrementada ou decrementada.
De outro modo, faz-se uma cpia do original, altera-se o original e
ento usa-se a cpia.
Exemplos:
a
x
y
z

=
=
=
=

4; b = 7; c = 3;
a++
% x = 4, a = 5
b-- * 2
% y = 7 * 2 = 14, b = 6
c++ * c++ - c++ % z = 3 * 4 5 = 7, c = 6

Na expresso direita da ltima linha, ocorre a seguinte seqncia


de operaes: c lido (3) e incrementado (c = 4); c lido (4) e
incrementado (c = 5); executa-se 3 * 4; c lido (5) e incrementado
(c = 6); executa-se 12 - 5; o valor 7 atribudo a z.
19

Precedncia dos Operadores Aritmticos

A tabela abaixo mostra a precedncia dos operadores


aritmticos:

Operadores como mesmo nvel de precedncia so


avaliados da esquerda para a direita;
Parnteses podem ser usados para alterar a ordem de
avaliao, pois eles elevam para o nvel mais alto de
precedncia uma operao ou conjunto de operaes.

20

Operadores Relacionais e Lgicos

Os operadores relacionais comparam dois valores e


retornam um valor lgico: falso ou verdadeiro
Os operadores lgicos binrios combinam dois valores
lgicos e tambm retornam um valor lgico.
Existe um nico operador lgico unrio: operador de
negao, que inverte valor lgico do operando: falso
verdadeiro e verdadeiro falso.
No Octave, o valor 0 (zero) representa falso e qualquer
valor no nulo (por padro 1) representa verdadeiro.

Ao serem avaliadas, as expresses relacionais e/ou lgicas


retornam sempre 0 (falso) ou 1 (verdadeiro).

21

Operadores Relacionais

Forma geral:
A Op B

Operador Operao
==

Igual a

~=

A, B: Operandos
(escalar,
complexo,
matriz, string)
Op:

Operador

!=

No igual a

>

Maior que

>=

Maior ou igual a

<

Menor que

<=

Menor ou igual a
22

Operadores Relacionais - Exemplos


Expresso relacional

Resultado

2 + 3 == 5

pi != 3.14

5>2

3 >= 4

A < B

2.5 <= 2.5

'bia' > 'ana'

1 0 0

[4 2 7] ~= [3 2 6]

1 0 1

Obs.: Nas duas ltimas linhas da tabela acima os dados so


vetores, por isso o resultado um vetor lgico contendo as
comparaes entre seus elementos correspondentes.
23

Operadores Lgicos

Operam sobre valores lgicos e o resultado


tambm um valor lgico (0 ou 1).
Operador

Sintaxe

Operao Lgica

&, &&

A&B

|, ||

A|B

OU

xor

xor(A, B)

!A

~A

OU exclusivo
Negao

Nota: No Octave o operador xor uma funo, na realidade.


24

Operadores Lgicos- Tabelas Verdade

Uma tabela verdade contm os resultados lgicos


de todas as combinaes possveis entre os
operandos:
Operandos
A
B

E
A&B

OU
AlB

OU excl.
xor(A,B)

NO
~A

0
25

Precedncia dos Operadores no Octave


Em Ordem Decrescente:

(), {}, .
++, -- (ps-fixo) exemplo: a=2; b=a++^a %b=8
^ e ** (potenciao), ' (tranposta)
+ e - unrios, ++ e -- prefixos, ~, ! (esqdir)1
*, /
*
/, \ (multiplicao, diviso e diviso esquerda)
+, (adio e subtrao)
:
(operador dois pontos)
==, !=, ~=, >, >=, <=, <= (operadores relacionais)
&
(e lgico elemento a elemento)
|
(ou lgico elemento a elemento)
&&
(e lgico padro: avaliao de curto circuito)
||
(ou lgico padro: avaliao de curto circuito)
=
(atribuio) exemplo: b = a = 5 (esqdir)

(esqdir): operadores de mesmo nvel so avaliados da direita p/ a esquerda


26

Operadores Lgicos - Exemplo

Um exemplo concreto do uso dos operadores


relacionais e lgicos a frmula usada no
Sistema Acadmico da UFGD para aprovao:

frmula (critrio) descritiva: para ser aprovado o


aluno deve ter mdia de aproveitamento (MA)
igual ou superior a 6,0 e freqncia (freq) igual
ou superior a 75%.
frmula lgica:

MA >= 6,0 & Freq >= 75 == 1 (aprovado)


MA >= 6,0 & Freq >= 75 == 0 (reprovado)
27

Operadores Lgicos - Exemplo


MA

Freq

MA >= 6,0

freq >= 75

MA >= 6,0
&
freq >= 75

7,0

90%

Aprovado

5,8

80%

Reprovado

5,0

70%

Reprovado

6,5

72%

Reprovado

7,2

75%

Aprovado

Situao

28

Operadores Lgicos - Exemplo

De forma equivalente, pode-se dizer: ser reprovado o


aluno que obtiver MA menor que 6,0 ou tiver menos de
75% de freqncia. Eis a frmula lgica equivalente:

MA < 6,0 | Freq < 75 == 1 (reprovado)


MA < 6,0 | Freq < 75 == 0 (aprovado)

MA

Freq

MA < 6,0

freq < 75

MA < 6,0
|
freq < 75

7,0

90%

Aprovado

5,8

80%

Reprovado

5,0

70%

Reprovado

6,5

72%

Reprovado

7,2

75%

Aprovado

Situao

29

Automatizando...

A tarefa anterior pode ser automatizada em um script


(programa), que leia a mdia de aproveitamento e a
freqncia do aluno e retorne 1 (verdadeiro) caso ele
seja aprovado ou 0 (falso), se ele for reprovado.
Para abrir o editor de scripts ou programas, pode-se
proceder de duas formas:

digitar o comando edit na linha de comando:


clicar no menu Janela | Editor, ou pressionar <Ctrl + 4>

Com editor aberto, digite (ou copie e cole) o cdigo:


MA =
input("Digite a media de aproveitamento: ");
Freq = input("Digite a frequencia do aluno (%): ");
fprintf("Legenda: ans = 1 (AP) e ans = 0 (REP)\n")
MA >= 6.0 & Freq >= 75
30

Automatizando...

A seguir, salve o arquivo clicando no cone Salvar da


barra de tarefas, ou clicando no menu Arquivo | Salvar
Arquivo, ou simplesmente pressionando <Ctrl + S>.
Escolha um nome para o arquivo, da mesma forma que
se define um nome para uma varivel; o nome sugerido
para o arquivo aprova.m
Pronto, agora voc tem um programa que pode ser
executado, digitando-se o seu nome na linha de
comando (se ela estiver invisvel pressione <Ctrl + 0>):
>>aprova

% ou nome que voce escolheu

Execute o programa com diferentes entradas para


verificar se o programa est consistente.
31

Exerccio

Implemente um script (programa) que leia a


idade e o peso de uma pessoa e retorne 1 caso
ela possa doar sangue, ou 0, caso contrrio.
Para doar sangue, uma pessoa saudvel deve
ter 18 a 60 anos de idade e pesar pelo menos
50kg.

32

You might also like