Você está na página 1de 30

Estruturas de Decises

Fabio Takeshi Matsunaga


Universidade Estadual de Londrina  UEL

8 de julho de 2015

Reviso . . .

Variveis;
Funo printf e scanf;
Operadores;

Variveis
Um nome associado a um valor que pode ser acessado ou
alterado pelo programa;
Composto por nome, tipo e valor;
Deve ser formado por combinaes de letras, dgitos e
sublinhado;
No deve comear com nmeros, conter acentuaes, smbolos
especiais e no podem ser palavras-chaves da linguagem;
1
2
3
4

int
int
int
a =

a = 2; // a passa a valer 2
b = 3; // b passa a valer 3
c = a + b ; // c passa a valer 5
a * c ; // a passa a valer 10

Funo printf
Usado para escrever resultados do programa;
Usado para escrever uma cadeia (string) de caracteres passado
como argumento entre aspas duplas;
Essa cadeia de caracteres podem ser cadeias formatadoras,
para formatar valores a serem escritos na sada;
Estrutura: printf("cadeia formatadora", var1, var2, var3, . . . );
1
2
3
4
5

printf ( " Dois numeros : %.2 f e % d \ n " , 1.5 , 2) ;


int a = 1;
float b = 2;
printf ( " Valor de a = % d e b = % f \ n " , a , b ) ;

Funo scanf
Usado para o programa interagir com o mundo externo,
fazendo a entrada de dados pelo teclado;
Utiliza strings de formatao para associar o formato do valor
lido varivel (deve ser sempre compatvel);
Estrutura: scanf("string de formatao", &var1);
1
2
3
4
5
6
7
8

int x ;
float y ;
char z ;
scanf ( " % d " ,& x ) ; // Le inteiro e armazena em x
scanf ( " % f " ,& y ) ; // Le real e armazena em y
scanf ( " % c " ,& z ) ; // Le caracter e armazena em z

Funo printf e scanf . . .

String de formato
%d ou %i
%f
%lf
%c
%s

Tipo de dado a ser impresso


Inteiro (int)
Real (oat)
Real de dupla preciso (double)
Caractere (char)
String

Operadores aritmticos

Unrios  operam sobre um nico operando

Menos unrio (R = -x): utilizado para trocar o sinal algbrico


de um valor (positivo para negativo ou vice-e-versa) ou para
multiplicar um valor por -1;
Binrios  operam sobre dois operandos
Soma (R = x+y): Soma dois valores;
Subtrao (R = x-y): Subtrai dois valores (diferente do
menos unrio, apesar de usarem o mesmo smbolo);
Multiplicao (R = x*y): Produto de dois valores;
Diviso (R = x/y): Diviso de dois valores;
Mdulo (R = x%y): Resto da diviso de x com y;

Operadores relacionais

Relacionais  efetua comparao entre variveis, retornando 1


se a expresso for verdadeira ou 0 se for falsa
Maior que (R = x>y): Verica se x maior que y;
Menor que (R = x<y): Verica se x menor que y;
Maior ou igual a (R = x>=y): Verica se x maior ou igual
que y;
Menor ou igual a (R = x<=y): Verica se x menor ou igual
que y; ;
Igual (R = x==y): Verica se x igual a y;
Diferente (R = x!=y): Verica se x diferente de y;

Operadores lgicos
Lgicos  utilizado em expresses que retornam valores
verdadeiro ou falso de acordo com a lgica booleana
(considera-se que os dois operandos x e y sejam do tipo bool
ou provenientes de expresses relacionais ou lgicas)
AND (R = x&&y): resulta um valor VERDADEIRO (1) se os
dois valores das variveis forem VERDADEIROS (1) e FALSO
(0) caso contrrio;
OR (R = x||y): resulta um valor VERDADEIRO (1) se pelo
menos um dos valores forem VERDADEIROS (1) e FALSO (0)
caso contrrio;
NOT (R = !x): operador lgico unrio que inverte os valores,
isto , se for VERDADEIRO (1) retorna FALSO (0), e
vice-e-versa;

Operadores lgicos

Precedncia

Maior precedncia

Menor precedncia

Operadores

(), [], ->


- unrio, ++, , !, & (endereo), * (ponteiro)
*, /, %
+, - (binrios)
,  (operadores bit a bit)
<, >, <=, >= (relacionais)
==, != (igualdade)
& (operador AND bit a bit)
 (operador XOR bit a bit)
| (operador OR bit a bit)
&& (AND lgico)
|| (OR lgico)
?: (operador condicional ternrio)
= (atribuio)
, (vrgula)

Operadores de incremento
1
2
3
4

# include < stdio .h >


int main () {
int x = 0;

x = x +1; // Aumenta x em 1

6
7

x = x +3; // Aumenta x em 3

8
9

x = x -1; // Diminui x em 1

10
11

x = x *4; // Multiplica o x por 4

12
13

x = x /2; // Divide x pela metade

14
15
16
17

x = x %2; // Atribui o resto da divisao por 2

Operadores de incremento (simplicao)


1
2
3
4

# include < stdio .h >


int main () {
int x = 0;

x +=1; // Aumenta x em 1

6
7

x +=3; // Aumenta x em 3

8
9

x -=1; // Diminui x em 1

10
11

x *=4; // Multiplica o x por 4

12
13

x /=2; // Divide x pela metade

14
15
16
17

x %=2; // Atribui o resto da divisao por 2

Comandos de deciso
Observao importante: sempre inicialize a varivel que for
incrementar ou decrementar com algum valor (veja a linha
4), pois se voc no inicializar a varivel no comeo, causar
um erro interno no seu programa ou gerar resultados
indesejveis. Imagine a situao:
1
2
3
4

# include < stdio .h >


int main () {
int x ; // x n o foi inicializado

x = x +1; // Aumenta x em 1
printf ( " x = % d \ n " , x ) ; // I m p r i m i r
invalido ( lixo )

6
7
8
9
10

getchar () ;

um valor

Operadores de incremento

Incremento/Decremento  operadores que incrementam ou

decrementam valores de uma varivel

Incremento (x++ ou ++x): incrementa o valor de x em 1.


Equivale a x = x+1;
Decremento (x ou x): decrementa o valor de x em 1.
Equivale a x = x-1;

Operadores de incremento pr-xado

1
2
3
4

# include < stdio .h >


int main () {
int x , y ;

5
6
7
8
9

x = 10;
y = ++ x ; // Incremento pre - fixado
printf ( " x = %d , y = % d \ n " ,x , y ) ;

O programa acima imprimir x = 11, y = 11

Operadores de incremento

1
2
3
4

# include < stdio .h >


int main () {
int x , y ;

5
6
7
8
9

x = 10;
y = x ++; // Incremento pos - fixado
printf ( " x = %d , y = % d \ n " ,x , y ) ;

O programa acima imprimir x = 11, y = 10

Comandos if

Estrutura de um comando if :
if (condio)
Instruo;
Ou:
if (condio) {
Instruo 1
Instruo 2
}

Exemplo 1
1
2
3
4
5

# include < stdio .h >


# include < stdlib .h >
int main () {
int a ;

scanf ( " % d " ,& a ) ;

7
8

if (a <0) {
printf ( " Voce digitou um valor negativo \ n " ) ;
}

9
10
11
12
13
14

system ( " pause " ) ;

Exemplo 2
1
2
3
4
5
6
7

# include < stdio .h >


# include < stdlib .h >
int main () {
int a , b ;
scanf ( " % d " ,& a ) ;
scanf ( " % d " ,& b ) ;

if (a > b ) {
printf ( " a eh maior do que b \ n " ) ;
}
if (a < b ) {
printf ( " b eh maior do que a \ n " ) ;
}

9
10
11
12
13
14
15
16
17

system ( " pause " ) ;

Comando if-else

Lembrando que o comando if s executa a(s) instruo(oes)


caso a condio de teste seja verdadeira. Caso no seja, a
instruo no ser executada.
O comando else existe para executar um outro conjunto de
instrues caso a condio ou expresso do if for falsa.

Comandos if-else

Estrutura de um comando if-else:


if (condio) {
Instrues;
} else {
Outro conjunto de Instrues;
}

Exemplo 2
1
2
3
4
5
6

# include < stdio .h >


# include < stdlib .h >
int main () {
int a , b ;
scanf ( " % d " ,& a ) ;

if (a >0) {
printf ( " Voce digitou um numero positivo \ n " ) ;
}
else {
printf ( " Voce digitou um numero negativo \ n " ) ;
}

8
9
10
11
12
13
14
15
16

system ( " pause " ) ;

Exemplo 2
1
2
3
4
5
6
7

# include < stdio .h >


# include < stdlib .h >
int main () {
int a , b ;
scanf ( " % d " ,& a ) ;
scanf ( " % d " ,& b ) ;

if (a > b ) {
printf ( " a eh maior do que b \ n " ) ;
}
else {
printf ( " b eh maior do que a \ n " ) ;
}

9
10
11
12
13
14
15
16
17

system ( " pause " ) ;

Comandos if-else aninhados


Estrutura de um comando if-else:
if (condio 1) {
Instrues;
}
else if (condio 2) {
Outro conjunto de Instrues;
}
else if (condio 3) {
Outro conjunto de Instrues;
}
else if (condio 4) {
Outro conjunto de Instrues;
}

Comandos if-else aninhados


Estrutura de um comando if-else:
if (condio 1) {
Instrues;
}
else if (condio 2) {
Outro conjunto de Instrues;
}
else if (condio 3) {
Outro conjunto de Instrues;
}
else if (condio 4) {
Outro conjunto de Instrues;
}

Exemplo 1
1
2
3

int main () {
int a , b ;
scanf ( " % d " ,& a ) ;

if (a >0) { // Se a >0 , positivo


printf ( " Voce digitou um numero positivo \ n " ) ;
}
else if (a <0) { // Se a <0 , positivo
printf ( " Voce digitou um numero negativo \ n " ) ;
}
else { // Se nao for nem maior nem menor que 0
printf ( " Voce digitou zero \ n " ) ;
}

5
6
7
8
9
10
11
12
13
14
15
16

system ( " pause " ) ;

Exemplo 2
1
2
3

int main () {
int a , b , c ;
scanf ( " % d % d % d " , &a , &b , & c ) ;

4
5
6
7
8
9
10
11
12
13

if (a >= b && a >= c )


printf ( " % d eh o maior \ n " , a ) ;
else {
if (b >= a && b >= c )
printf ( " % d eh o maior \ n " , b ) ;
else
printf ( " % d eh o maior \ n " , c ) ;
}

Exerccios

Faa um programa que leia quatro notas de um aluno e calcule a


mdia de notas. Em seguida, verique se o aluno foi aprovado ou
reprovado, considerando a mdia 7.0.

Exerccios

Faa um programa que leia quatro notas de um aluno e calcule a


mdia de notas. Em seguida, verique se o aluno foi aprovado ou
reprovado, considerando a mdia 7.0. Entretanto, se a mdia for
menor do que 7.0 (a princpio reprovao), se a nota for maior do
que 5.0, o aluno car de EXAME. Considere o exame tambm na
lista de condies no seu programa.

Exerccios

Faa um programa que leia um valor e verque se ele par, mpar


ou zero. No esquea de imprimir o resultado na tela.