SlideShare une entreprise Scribd logo
1  sur  46
Instituto de Computação – UFAL
Exercício
 Lembrem-se, já fizemos o algoritmo desse
problema em aulas anteriores
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
#include <stdio.h>
main()
{
int numero, unidades;
scanf("%d", &numero);
unidades = numero % 10;
printf("%dn", unidades);
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Ok … pausa !
 O que já vimos até agora?
 Criar um codigo fonte em C
 Compilar usando o gcc
 Todo programa em C tem que ter a função main(){ }
 Tipos básicos (int, float, double, char)
 Declarar variáveis
 Atribuir valores às variáveis
 Operações aritméticas (+, *, -, / , %)
 Operações relacionais ( <, > , ==, <=, >= )
 Leitura de dados (scanf)
 Saída de dados (printf)
 Formatação da saída (printf)
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Quais os próximos passos?
 Execução condicional
 Repetições
 Arrays (ou vetores)
 Strings
 Funções
 Ponteiros
 Estruturas
 Recursão
 Pesquisa e ordenação
 Arquivos
 Alocação dinâmica de memória
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Execução condicional
 Já percebeu que até agora o fluxo dos
programas que fizemos foram todos:
 Sequenciais
 de cima pra baixo
 sem desvios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Execução condicional
#include <stdio.h>
main()
{
int numero, unidades;
scanf("%d", &numero);
unidades = numero % 10;
printf("%dn", unidades);
}
rodrigo@ic.ufal.br
#include <stdio.h>
main()
int numero, unidades
scanf("%d", &numero)
unidades = numero % 10
printf("%dn", unidades);
Instituto de Computação – UFAL
Execução condicional
 E se precisarmos desviar o fluxo?
 Algoritmo para atravessar a rua
repita enquanto estiver na rua
se tiver um buraco na sua frente
Dê um passo pro lado
senao
Dê um passo para frente
fim_enquanto
rodrigo@ic.ufal.br
Passo pro lado
Passo pra frente
Buraco
à
frente?
sim
Está na
rua?
sim
fim
não
não
Instituto de Computação – UFAL
Execução condicional
 Significa que uma instrução só é executada se
uma determinada condição for satisfeita
 Já vimos isso:
se ( pa == pb ) entao
imprima "A resposta é a esfera C"
senao se ( pa > pb ) entao
imprima "A resposta é a esfera A"
senao
imprima “A resposta é B"
fim_se
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Comando If
if ( expressão )
{
sequência de comandos
}
rodrigo@ic.ufal.br
1
if
…
true
false
1
…
Instituto de Computação – UFAL
 Exemplo:
…
int a = 5, b = 8;
if ( a != b )
{
printf(“Cinco é diferente de oiton”);
}
printf(“entendeu?n”);
…
 Exercício:
 Escreva um programa que determine o maior número de
dois números dados
rodrigo@ic.ufal.br
int a = 5, b = 8
a!=b
printf(“Cinco é diferente de oiton”)
printf(“entendeu?n”)
Instituto de Computação – UFAL
Solução
#include <stdio.h>
main()
{
float a, b, maior;
printf("Digite os dois numerosn");
scanf("%f %f", &a, &b);
maior = a;
if (b > a)
{
maior = b;
}
printf("O maior dos numeros %f , %f eh %f ", a, b, maior);
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Ok … vamos por partes: Vocabulário, estado,
fluxo
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
… outra entrada, mesmo exemplo
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercício
 Escreva um programa para imprimir na tela em
ordem crescente dois números dados
 Qual a entrada?
 É inteiro? Só positivos? O zero pode? Podem ser iguais?
 Qual a saída?
 Como chegar lá?
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Já testou?
 #1: maior primeiro, menor depois
 5
 2
 #2: menor primeiro, maior depois
 2
 5
 #3: números iguais
 5
 5
 #4: contendo o 0
 0
 2
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
#include <stdio.h>
main()
{
float x, y, aux;
printf("Digite os dois numeros:n");
scanf("%f %f", &x, &y);
printf("Conteudos originais de x e de y: %f , %f n", x, y);
if (y < x)
{
aux = x;
x = y;
y = aux;
}
printf("Conteudos de x e de y ordenados: %f , %fn", x, y);
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Comando if-else
if ( expressao )
{
Sequência de comandos 1
}
else
{
Sequência de comandos 2
}
rodrigo@ic.ufal.br
1
if
2
…
true
false
1
2
…
Instituto de Computação – UFAL
Exercício
 Escreva um programa que escreva na tela se
um dado número inteiro é par ou ímpar
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
main()
{
int numero;
printf("Digite um numero inteiro:n");
scanf("%d",&numero);
if ( (numero % 2) ==0 )
{
printf("O numero %d eh par!n",numero);
}
else
{
printf("O numero %d eh impar!n",numero);
}
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo
 No programa abaixo, não prevemos o caso em que os dois números são
iguais
#include <stdio.h>
main()
{
float a, b, maior;
printf("Digite os dois numerosn");
scanf("%f %f", &a, &b);
maior = a;
if (b > a)
{
maior = b;
}
printf("O maior dos numeros %f , %f eh %f ", a, b, maior);
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercício
 Escreva um programa que dado dois números,
indique o maior deles, caso exista, ou então
indique que os números são iguais
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
#include <stdio.h>
main(){
float a, b, maior;
printf("Digite os dois numerosn");
scanf("%f %f", &a, &b);
maior = a;
if (b > a)
{
maior = b;
}
if (a==b)
{
printf("Os numeros digitados sao iguaisn");
}
else
{
printf("O maior dos numeros %f , %f eh %f ", a, b, maior);
}
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
If-else
If (expressao)
{
lista de comandos;
}
else if (expressao)
{
lista de comandos;
}
else if (expressao)
{
…
}
else
{
lista de comandos;
}
rodrigo@ic.ufal.br
1if
2
…
true
false
else
if
else
if
3
4
1
2
3
4
…
false
false
true
true
Instituto de Computação – UFAL
If’s aninhados
If (expressao)
{
if (expressao)
{
if (expressao)
{
}
else
{
}
…
}
…
}
else if (expressao)
{
…
}
Else
{
lista de comandos;
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercício
 São dados 03 números, correspondendo aos
pesos das esferas A, B e C, respectivamente.
 Duas possuem pesos iguais e uma é mais
pesada
 Escreva um programa que indique qual a esfera
mais pesada
rodrigo@ic.ufal.br
A B C
Instituto de Computação – UFAL
Solução
main()
{
float pa, pb, pc;
printf("Digite os pesos das esferas A, B e Cn");
scanf("%f %f %f",&pa, &pb, &pc);
if (pa > pb)
{
printf("A esfera A e a mais pesada!n");
}
else if (pa == pb)
{
printf("A esfera C e a mais pesadan");
}
else
{
printf("A esfera B e a mais pesadan");
}
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercício
 Uma empresa decidiu dar um aumento
escalonado a seus funcionários
 13% para os salários inferiores ou iguais a R$
2000,00;
 11% para os salários situados entre R$ 2000,0 e R$
4000,00 (inclusive);
 9 % para os salários entre R$ 4000,00 e R$ 8000,00
(inclusive)
 7% para os demais salários.
 Dado um salário, imprimir o salário atual e o
novo salário
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
/*Programa para atualizar salários*/
#include <stdio.h>
main(){
float salarioAtual, salarioNovo, indiceAjuste;
printf("Digite o salario atualn");
scanf("%f", &salarioAtual);
if (salarioAtual <= 200){
indiceAjuste = 1.13;
}else if (salarioAtual <= 400){
indiceAjuste = 1.11;
}else if (salarioAtual <= 800){
indiceAjuste = 1.09;
}else{
indiceAjuste = 1.07;
}
salarioNovo = salarioAtual*indiceAjuste;
printf("Atual = %.2fnNovo = %.2f n" , salarioAtual, salarioNovo);
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercício
 Entrada
 03 números reais, correspondendo aos coeficientes de
uma equação do segundo grau
 Saída
 Imprima as raízes da equação
 Lembre-se:
 b2 - 4ac não pode ser negativo
 a não pode ser 0
 Biblioteca <math.h>
 Para calcular potências, use a função:
 pow(x, y) :Argumento x elevado ao argumento y
 Raiz quadrada
 sqrt(x): Raiz quadrada do argumento x
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplos de equações
 2x² + 7x + 5 = 0
 3x² + x + 2 = 0
 x²-6x+8=0
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Solução
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c;
float delta;
float x1, x2;
scanf("%f %f %f",&a,&b,&c);
if (a==0)
{
printf("Nao eh uma equacao do 2. graun");
}
else
{
delta = pow(b,2) - 4 * a * c;
if (delta < 0)
{
printf("Nao existem raizes reaisn");
}
else
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("As raizes sao: %f e %fn",x1,x2);
}
}
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exercícios
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
O comando switch
 Sintaxe
switch (expr)
{
case const1:
sequência de comandos;
break;
case const2:
sequência de comandos;
break;
default:
statement;
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Switch :: Fluxo
 Idéia chave: “onde é o local da entrada no
bloco”.
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo 1
...
int dia;
scanf("%d",&dia);
switch (dia)
{
case 1 : printf("Domingon");
break;
case 2 : printf("Segundan");
break;
case 3 : printf("Terçan");
break;
case 4 : printf("Quartan");
break;
case 5 : printf("Quintan");
break;
case 6 : printf("Sextan");
break;
case 7 : printf("Sábadon");
break;
default : printf("Não é um valor válidon");;
break;
}
...
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo 2
...
int dia;
scanf("%d",&dia);
switch (dia)
{
case 1 :
case 7 : printf("Fim de Semanan");
break;
case 2 :
case 3 :
case 4 :
case 5 :
case 6 : printf("Dia de semanan");
break;
default : printf("Não é um valor válidon");;
break;
}
...
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo: if X switch
rodrigo@ic.ufal.br
 Ambrósio quer investir
 O valor que o banco irá pagar para Ambrósio
depende do tipo de conta que ele tem
Tipo de conta Taxa de juros recebida
Pessoal 2.3%
Pessoal com imóvel 2.6%
Pessoal Gold 2.9%
small business 3.3%
big business 3.5%
gold business 3.8%
Instituto de Computação – UFAL
Exemplo: com if
int tipo;
float juros = 0.0;
scanf("%d",&tipo);
if (tipo == 1)
{
juros = 2.3;
}
else
{
if (tipo == 2)
{
juros = 2.6;
}
else
{
if (tipo == 3)
{
juros = 2.9;
}
else
{
if (tipo == 4)
{
juros = 3.3;
}
else
{
if (tipo == 5)
{
juros = 3.5;
}
else
{
juros = 3.8;
}
}
}
}
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo: com switch
int tipo;
float juros = 0.0;
scanf("%d",&tipo);
switch (tipo){
case 1:
juros = 2.3;
break;
case 2:
juros = 2.6;
break;
case 3:
juros = 2.9;
break;
case 4:
juros = 3.3;
break;
case 5:
juros = 3.5;
break;
case 6:
juros = 3.8;
break;
default:
juros = 0.0;
}
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Exemplo: com else if
int tipo;
float juros = 0.0;
scanf("%d",&tipo);
if (tipo == 1)
{
juros = 2.3;
}
else if (tipo == 2)
{
juros = 2.6;
}
else if (tipo == 3)
{
juros = 2.9;
}
else if (tipo == 4)
{
juros = 3.3;
}
else if (tipo == 5)
{
juros = 3.5;
}
else
{
juros = 3.8;
}
rodrigo@ic.ufal.br

Contenu connexe

Tendances

Aula 1 - Programação 1
Aula 1 - Programação 1Aula 1 - Programação 1
Aula 1 - Programação 1Isaac Barros
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1Isaac Barros
 
Aula 6 - Programação 1
Aula 6 - Programação 1Aula 6 - Programação 1
Aula 6 - Programação 1Isaac Barros
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Isaac Barros
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-ST
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-STGeração Automática de Ontologias Probabilíticas a partir de um modelo UMP-ST
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-STDiego Marques
 
Algoritmos Lista 1 de exercícios gabarito
Algoritmos Lista 1 de exercícios gabaritoAlgoritmos Lista 1 de exercícios gabarito
Algoritmos Lista 1 de exercícios gabaritoRicardo Sonaglio Albano
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fontethomasdacosta
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Ismar Silveira
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRodrigo Almeida
 

Tendances (15)

Aula 1 - Programação 1
Aula 1 - Programação 1Aula 1 - Programação 1
Aula 1 - Programação 1
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Aula 6 - Programação 1
Aula 6 - Programação 1Aula 6 - Programação 1
Aula 6 - Programação 1
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
Tutorial R
Tutorial RTutorial R
Tutorial R
 
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-ST
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-STGeração Automática de Ontologias Probabilíticas a partir de um modelo UMP-ST
Geração Automática de Ontologias Probabilíticas a partir de um modelo UMP-ST
 
Aula 3 - 06/04/11
Aula 3 - 06/04/11Aula 3 - 06/04/11
Aula 3 - 06/04/11
 
Algoritmos Lista 1 de exercícios gabarito
Algoritmos Lista 1 de exercícios gabaritoAlgoritmos Lista 1 de exercícios gabarito
Algoritmos Lista 1 de exercícios gabarito
 
Computacao cientifica
Computacao cientificaComputacao cientifica
Computacao cientifica
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fonte
 
Utilizandoo winplot
Utilizandoo winplotUtilizandoo winplot
Utilizandoo winplot
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas Embarcados
 

En vedette

Est nac salud 2011_20
Est nac salud 2011_20Est nac salud 2011_20
Est nac salud 2011_20dregla
 
Reforma al artículo 4o
Reforma al artículo 4oReforma al artículo 4o
Reforma al artículo 4ojangulog
 
Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Isaac Barros
 
Roadmapping 11
Roadmapping 11Roadmapping 11
Roadmapping 11Trendtail
 
Quadrinhos
QuadrinhosQuadrinhos
Quadrinhosdmsaft
 
Paintball Informatica I
Paintball Informatica I Paintball Informatica I
Paintball Informatica I EdgarLossel
 

En vedette (8)

Est nac salud 2011_20
Est nac salud 2011_20Est nac salud 2011_20
Est nac salud 2011_20
 
Congreso de gestión pública
Congreso de gestión públicaCongreso de gestión pública
Congreso de gestión pública
 
Reforma al artículo 4o
Reforma al artículo 4oReforma al artículo 4o
Reforma al artículo 4o
 
Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1
 
Roadmapping 11
Roadmapping 11Roadmapping 11
Roadmapping 11
 
Quadrinhos
QuadrinhosQuadrinhos
Quadrinhos
 
Paintball Informatica I
Paintball Informatica I Paintball Informatica I
Paintball Informatica I
 
Protección Radiológica
Protección RadiológicaProtección Radiológica
Protección Radiológica
 

Similaire à Aula 7 decisao - Programação 1

Similaire à Aula 7 decisao - Programação 1 (20)

Linguagem c wellington telles - aula 05
Linguagem c   wellington telles - aula 05Linguagem c   wellington telles - aula 05
Linguagem c wellington telles - aula 05
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Ling c
Ling cLing c
Ling c
 
Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5Algoritmo e lógica de programação - aula 5
Algoritmo e lógica de programação - aula 5
 
Estruturas de dados Revisão de C
Estruturas de dados Revisão de CEstruturas de dados Revisão de C
Estruturas de dados Revisão de C
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Algop - aula 04
Algop - aula 04Algop - aula 04
Algop - aula 04
 
Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6
 
Aula01
Aula01Aula01
Aula01
 
Aula 5 algoritimos(continuacao)
Aula 5   algoritimos(continuacao)Aula 5   algoritimos(continuacao)
Aula 5 algoritimos(continuacao)
 
Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1
 
Algop - aula 04 pascal 1
Algop - aula 04 pascal 1Algop - aula 04 pascal 1
Algop - aula 04 pascal 1
 
Algoritmos em c #1
Algoritmos em c #1Algoritmos em c #1
Algoritmos em c #1
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Series lab
Series labSeries lab
Series lab
 
Beabá do R
Beabá do RBeabá do R
Beabá do R
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 

Aula 7 decisao - Programação 1

  • 1. Instituto de Computação – UFAL Exercício  Lembrem-se, já fizemos o algoritmo desse problema em aulas anteriores rodrigo@ic.ufal.br
  • 2. Instituto de Computação – UFAL Solução #include <stdio.h> main() { int numero, unidades; scanf("%d", &numero); unidades = numero % 10; printf("%dn", unidades); } rodrigo@ic.ufal.br
  • 3. Instituto de Computação – UFAL Ok … pausa !  O que já vimos até agora?  Criar um codigo fonte em C  Compilar usando o gcc  Todo programa em C tem que ter a função main(){ }  Tipos básicos (int, float, double, char)  Declarar variáveis  Atribuir valores às variáveis  Operações aritméticas (+, *, -, / , %)  Operações relacionais ( <, > , ==, <=, >= )  Leitura de dados (scanf)  Saída de dados (printf)  Formatação da saída (printf) rodrigo@ic.ufal.br
  • 4. Instituto de Computação – UFAL Quais os próximos passos?  Execução condicional  Repetições  Arrays (ou vetores)  Strings  Funções  Ponteiros  Estruturas  Recursão  Pesquisa e ordenação  Arquivos  Alocação dinâmica de memória rodrigo@ic.ufal.br
  • 5. Instituto de Computação – UFAL Execução condicional  Já percebeu que até agora o fluxo dos programas que fizemos foram todos:  Sequenciais  de cima pra baixo  sem desvios rodrigo@ic.ufal.br
  • 6. Instituto de Computação – UFAL Execução condicional #include <stdio.h> main() { int numero, unidades; scanf("%d", &numero); unidades = numero % 10; printf("%dn", unidades); } rodrigo@ic.ufal.br #include <stdio.h> main() int numero, unidades scanf("%d", &numero) unidades = numero % 10 printf("%dn", unidades);
  • 7. Instituto de Computação – UFAL Execução condicional  E se precisarmos desviar o fluxo?  Algoritmo para atravessar a rua repita enquanto estiver na rua se tiver um buraco na sua frente Dê um passo pro lado senao Dê um passo para frente fim_enquanto rodrigo@ic.ufal.br Passo pro lado Passo pra frente Buraco à frente? sim Está na rua? sim fim não não
  • 8. Instituto de Computação – UFAL Execução condicional  Significa que uma instrução só é executada se uma determinada condição for satisfeita  Já vimos isso: se ( pa == pb ) entao imprima "A resposta é a esfera C" senao se ( pa > pb ) entao imprima "A resposta é a esfera A" senao imprima “A resposta é B" fim_se rodrigo@ic.ufal.br
  • 9. Instituto de Computação – UFAL Comando If if ( expressão ) { sequência de comandos } rodrigo@ic.ufal.br 1 if … true false 1 …
  • 10. Instituto de Computação – UFAL  Exemplo: … int a = 5, b = 8; if ( a != b ) { printf(“Cinco é diferente de oiton”); } printf(“entendeu?n”); …  Exercício:  Escreva um programa que determine o maior número de dois números dados rodrigo@ic.ufal.br int a = 5, b = 8 a!=b printf(“Cinco é diferente de oiton”) printf(“entendeu?n”)
  • 11. Instituto de Computação – UFAL Solução #include <stdio.h> main() { float a, b, maior; printf("Digite os dois numerosn"); scanf("%f %f", &a, &b); maior = a; if (b > a) { maior = b; } printf("O maior dos numeros %f , %f eh %f ", a, b, maior); } rodrigo@ic.ufal.br
  • 12. Instituto de Computação – UFAL Ok … vamos por partes: Vocabulário, estado, fluxo rodrigo@ic.ufal.br
  • 13. Instituto de Computação – UFAL … outra entrada, mesmo exemplo rodrigo@ic.ufal.br
  • 14. Instituto de Computação – UFAL Exercício  Escreva um programa para imprimir na tela em ordem crescente dois números dados  Qual a entrada?  É inteiro? Só positivos? O zero pode? Podem ser iguais?  Qual a saída?  Como chegar lá? rodrigo@ic.ufal.br
  • 15. Instituto de Computação – UFAL Já testou?  #1: maior primeiro, menor depois  5  2  #2: menor primeiro, maior depois  2  5  #3: números iguais  5  5  #4: contendo o 0  0  2 rodrigo@ic.ufal.br
  • 16. Instituto de Computação – UFAL Solução #include <stdio.h> main() { float x, y, aux; printf("Digite os dois numeros:n"); scanf("%f %f", &x, &y); printf("Conteudos originais de x e de y: %f , %f n", x, y); if (y < x) { aux = x; x = y; y = aux; } printf("Conteudos de x e de y ordenados: %f , %fn", x, y); } rodrigo@ic.ufal.br
  • 17. Instituto de Computação – UFAL Comando if-else if ( expressao ) { Sequência de comandos 1 } else { Sequência de comandos 2 } rodrigo@ic.ufal.br 1 if 2 … true false 1 2 …
  • 18. Instituto de Computação – UFAL Exercício  Escreva um programa que escreva na tela se um dado número inteiro é par ou ímpar rodrigo@ic.ufal.br
  • 19. Instituto de Computação – UFAL Solução main() { int numero; printf("Digite um numero inteiro:n"); scanf("%d",&numero); if ( (numero % 2) ==0 ) { printf("O numero %d eh par!n",numero); } else { printf("O numero %d eh impar!n",numero); } } rodrigo@ic.ufal.br
  • 20. Instituto de Computação – UFAL Exemplo  No programa abaixo, não prevemos o caso em que os dois números são iguais #include <stdio.h> main() { float a, b, maior; printf("Digite os dois numerosn"); scanf("%f %f", &a, &b); maior = a; if (b > a) { maior = b; } printf("O maior dos numeros %f , %f eh %f ", a, b, maior); } rodrigo@ic.ufal.br
  • 21. Instituto de Computação – UFAL Exercício  Escreva um programa que dado dois números, indique o maior deles, caso exista, ou então indique que os números são iguais rodrigo@ic.ufal.br
  • 22. Instituto de Computação – UFAL Solução #include <stdio.h> main(){ float a, b, maior; printf("Digite os dois numerosn"); scanf("%f %f", &a, &b); maior = a; if (b > a) { maior = b; } if (a==b) { printf("Os numeros digitados sao iguaisn"); } else { printf("O maior dos numeros %f , %f eh %f ", a, b, maior); } } rodrigo@ic.ufal.br
  • 23. Instituto de Computação – UFAL If-else If (expressao) { lista de comandos; } else if (expressao) { lista de comandos; } else if (expressao) { … } else { lista de comandos; } rodrigo@ic.ufal.br 1if 2 … true false else if else if 3 4 1 2 3 4 … false false true true
  • 24. Instituto de Computação – UFAL If’s aninhados If (expressao) { if (expressao) { if (expressao) { } else { } … } … } else if (expressao) { … } Else { lista de comandos; } rodrigo@ic.ufal.br
  • 25. Instituto de Computação – UFAL Exercício  São dados 03 números, correspondendo aos pesos das esferas A, B e C, respectivamente.  Duas possuem pesos iguais e uma é mais pesada  Escreva um programa que indique qual a esfera mais pesada rodrigo@ic.ufal.br A B C
  • 26. Instituto de Computação – UFAL Solução main() { float pa, pb, pc; printf("Digite os pesos das esferas A, B e Cn"); scanf("%f %f %f",&pa, &pb, &pc); if (pa > pb) { printf("A esfera A e a mais pesada!n"); } else if (pa == pb) { printf("A esfera C e a mais pesadan"); } else { printf("A esfera B e a mais pesadan"); } } rodrigo@ic.ufal.br
  • 27. Instituto de Computação – UFAL Exercício  Uma empresa decidiu dar um aumento escalonado a seus funcionários  13% para os salários inferiores ou iguais a R$ 2000,00;  11% para os salários situados entre R$ 2000,0 e R$ 4000,00 (inclusive);  9 % para os salários entre R$ 4000,00 e R$ 8000,00 (inclusive)  7% para os demais salários.  Dado um salário, imprimir o salário atual e o novo salário rodrigo@ic.ufal.br
  • 28. Instituto de Computação – UFAL Solução /*Programa para atualizar salários*/ #include <stdio.h> main(){ float salarioAtual, salarioNovo, indiceAjuste; printf("Digite o salario atualn"); scanf("%f", &salarioAtual); if (salarioAtual <= 200){ indiceAjuste = 1.13; }else if (salarioAtual <= 400){ indiceAjuste = 1.11; }else if (salarioAtual <= 800){ indiceAjuste = 1.09; }else{ indiceAjuste = 1.07; } salarioNovo = salarioAtual*indiceAjuste; printf("Atual = %.2fnNovo = %.2f n" , salarioAtual, salarioNovo); } rodrigo@ic.ufal.br
  • 29. Instituto de Computação – UFAL Exercício  Entrada  03 números reais, correspondendo aos coeficientes de uma equação do segundo grau  Saída  Imprima as raízes da equação  Lembre-se:  b2 - 4ac não pode ser negativo  a não pode ser 0  Biblioteca <math.h>  Para calcular potências, use a função:  pow(x, y) :Argumento x elevado ao argumento y  Raiz quadrada  sqrt(x): Raiz quadrada do argumento x rodrigo@ic.ufal.br
  • 30. Instituto de Computação – UFAL Exemplos de equações  2x² + 7x + 5 = 0  3x² + x + 2 = 0  x²-6x+8=0 rodrigo@ic.ufal.br
  • 31. Instituto de Computação – UFAL Solução #include <stdio.h> #include <math.h> main() { float a,b,c; float delta; float x1, x2; scanf("%f %f %f",&a,&b,&c); if (a==0) { printf("Nao eh uma equacao do 2. graun"); } else { delta = pow(b,2) - 4 * a * c; if (delta < 0) { printf("Nao existem raizes reaisn"); } else { x1 = (-b + sqrt(delta)) / 2*a; x2 = (-b - sqrt(delta)) / 2*a; printf("As raizes sao: %f e %fn",x1,x2); } } } rodrigo@ic.ufal.br
  • 32. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 33. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 34. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 35. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 36. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 37. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 38. Instituto de Computação – UFAL Exercícios rodrigo@ic.ufal.br
  • 39. Instituto de Computação – UFAL O comando switch  Sintaxe switch (expr) { case const1: sequência de comandos; break; case const2: sequência de comandos; break; default: statement; } rodrigo@ic.ufal.br
  • 40. Instituto de Computação – UFAL Switch :: Fluxo  Idéia chave: “onde é o local da entrada no bloco”. rodrigo@ic.ufal.br
  • 41. Instituto de Computação – UFAL Exemplo 1 ... int dia; scanf("%d",&dia); switch (dia) { case 1 : printf("Domingon"); break; case 2 : printf("Segundan"); break; case 3 : printf("Terçan"); break; case 4 : printf("Quartan"); break; case 5 : printf("Quintan"); break; case 6 : printf("Sextan"); break; case 7 : printf("Sábadon"); break; default : printf("Não é um valor válidon");; break; } ... rodrigo@ic.ufal.br
  • 42. Instituto de Computação – UFAL Exemplo 2 ... int dia; scanf("%d",&dia); switch (dia) { case 1 : case 7 : printf("Fim de Semanan"); break; case 2 : case 3 : case 4 : case 5 : case 6 : printf("Dia de semanan"); break; default : printf("Não é um valor válidon");; break; } ... rodrigo@ic.ufal.br
  • 43. Instituto de Computação – UFAL Exemplo: if X switch rodrigo@ic.ufal.br  Ambrósio quer investir  O valor que o banco irá pagar para Ambrósio depende do tipo de conta que ele tem Tipo de conta Taxa de juros recebida Pessoal 2.3% Pessoal com imóvel 2.6% Pessoal Gold 2.9% small business 3.3% big business 3.5% gold business 3.8%
  • 44. Instituto de Computação – UFAL Exemplo: com if int tipo; float juros = 0.0; scanf("%d",&tipo); if (tipo == 1) { juros = 2.3; } else { if (tipo == 2) { juros = 2.6; } else { if (tipo == 3) { juros = 2.9; } else { if (tipo == 4) { juros = 3.3; } else { if (tipo == 5) { juros = 3.5; } else { juros = 3.8; } } } } } rodrigo@ic.ufal.br
  • 45. Instituto de Computação – UFAL Exemplo: com switch int tipo; float juros = 0.0; scanf("%d",&tipo); switch (tipo){ case 1: juros = 2.3; break; case 2: juros = 2.6; break; case 3: juros = 2.9; break; case 4: juros = 3.3; break; case 5: juros = 3.5; break; case 6: juros = 3.8; break; default: juros = 0.0; } rodrigo@ic.ufal.br
  • 46. Instituto de Computação – UFAL Exemplo: com else if int tipo; float juros = 0.0; scanf("%d",&tipo); if (tipo == 1) { juros = 2.3; } else if (tipo == 2) { juros = 2.6; } else if (tipo == 3) { juros = 2.9; } else if (tipo == 4) { juros = 3.3; } else if (tipo == 5) { juros = 3.5; } else { juros = 3.8; } rodrigo@ic.ufal.br