Você está na página 1de 45

DCC 119 Algoritmos

Utilizada quando a execução de uma ação


depender de uma inspeção ou teste de uma
condição (expressão lógica).

Pode ser:
Alternativa Simples
Alternativa Dupla
Alternativa Múltipla Escolha

2
Sintaxe:
se (<condição>)
{
Comando;
}

3
Exemplo 1:
X 10;
MAX 20;
se (X > MAX)
{
MAX X;
}

4
Exemplo 2:
X 10;
MAX 5;
se (X > MAX)
{
MAX X;
}

5
Analogia:
Pseudolinguagem Linguagem C

se (<condição>) if (condição)
{ {
C; C;
} }

6
Analogia:
Pseudolinguagem Linguagem C

se (<condição>) if (condição)
{ {
C; C;
} }

Obs.: Se houver só um
comando no então, não
precisa usar chaves
({bloco}).
7
Analogia: imprimir o MAIOR entre A e B
#include <stdio.h>
principal int main()
{ {
inteiro a, b, maior; int a, b, maior;
a 9; a = 9;
b 2; b = 2;
maior b; maior = b;
se (a > maior) if (a > maior)
{ maior = a;
maior a;
}
imprima(maior); printf ( \nMAIOR = %d , maior);
} return 0;
}

8
Sintaxe:

se (< condição >)


{
C1 ;
}
senão
{
C2 ;
}

9
Analogia:
Pseudolinguagem Linguagem C

se (< condição >) if (condição)


{ {
C1 ; C1 ;
} }
senão else
{ {
C2 ; C2 ;
} }

10
Analogia: imprimir o MAIOR entre A e B
#include <stdio.h>
principal int main()
{ {
inteiro A, B, MAIOR; int a, b, maior;
A 9; a = 9;
B 2; b = 2;
se (A > B) if (a > b)
{ {
MAIOR A; maior = a;
} }
senão else
{ {
MAIOR B; maior = b;
} }
imprima(MAIOR); printf ( \nMAIOR = %d , maior);
return 0;
} }
11
Sintaxe:

escolha (<expressão>)
{
caso V1 : C1;

caso V2 : C2;

. . . . . . . .. . . . . .

caso Vn : Cn;

senão : Cn+1;

}
12
Pseudolinguagem Linguagem C

escolha (<expressão>) switch(<expressão>)


{ {
caso V1 : C1; case V1: C1;
break;
caso V2 : C2; case V2: C2;
break;
............. ...........
caso Vn : Cn; case Vn: Cn;
break;
senão : Cn+1; default: Cn+1;
} }

13
Exemplo:
#include <stdio.h>
principal int main()
{ {
inteiro EPOCA; int epoca;
imprima( Digite o número do trimestre: ); printf("Digite o número do trimestre:");
leia(EPOCA); scanf("%d , &epoca);
escolha (EPOCA) switch (epoca)
{ {
caso 1: imprima( verão ); case 1: printf("verão");
break;
caso 2: imprima( outono ); case 2: printf ("outono");
break;
caso 3: imprima( inverno ); case 3: printf ("inverno");
break;
caso 4: imprima( primavera ); case 4: printf ("primavera");
break;
senão: imprima( período inválido ); default: printf( Trimestre inválido");
} }
return 0;
} } 14
Construir um algoritmo para ler os coeficientes A, B e C de
uma equação do segundo grau e se:
Delta for negativo: imprimir a mensagem Não há
solução real .
Delta for maior ou igual a zero: calcular e imprimir as
raízes da equação.

Método Direto

15
1) Enunciado está entendido?
Para resolver o problema é necessário saber a equação
de 2º grau. Esta equação tem a seguinte forma:
(-B ± raiz(DELTA)) / (2*A) onde DELTA = (B**2 4*A*C)

16
2) Quais variáveis serão necessárias?

A, B, C e DELTA serão as variáveis inteiras que comporão


a fórmula da equação acima. Serão necessárias mais
duas variáveis inteiras X1 e X2 que serão as raízes da
equação.

17
3) Quais métodos serão utilizados?
Por se tratar de uma condição, utilizaremos a estrutura de
controle de alternativa.

18
4) Elaborar o Algoritmo para resolver o problema

principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (B*B 4*A*C);
se (DELTA 0)
{
X1 (-B + raiz(DELTA)) / (2*A);
X2 (-B - raiz(DELTA)) / (2*A);
imprima( Raizes da equação: , X1, X2);
}
senão
{
imprima ( Não existem raízes reais );
}
}
19
5) Testar o algoritmo Entradas A = 1, B = 5, C = 4
Saídas esperadas: -1 e -4
principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (B*B 4*A*C);
se (DELTA 0)
{
X1 (-B + raiz(DELTA)) / (2*A);
X2 (-B - raiz(DELTA)) / (2*A);
imprima( Raizes da equação: , X1, X2);
}
senão
{
imprima ( Não existem raízes reais );
}
}
20
5) Testar o algoritmo Entradas A = 1, B = 5, C = 4
Saídas esperadas: -1 e -4
principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (5*5 4*1*4);
se (DELTA 0)
{
X1 (-B + raiz(DELTA)) / (2*A);
X2 (-B - raiz(DELTA)) / (2*A);
imprima( Raizes da equação: , X1, X2);
}
senão
{
imprima ( Não existem raízes reais );
}
}
21
5) Testar o algoritmo Entradas A = 1, B = 5, C = 4
Saídas esperadas: -1 e -4
principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (5*5 4*1*4);
se (9 0)
{
X1 (-B + raiz(DELTA)) / (2*A);
X2 (-B - raiz(DELTA)) / (2*A);
imprima( Raizes da equação: , X1, X2);
}
senão
{
imprima ( Não existem raízes reais );
}
}
22
5) Testar o algoritmo Entradas A = 1, B = 5, C = 4
Saídas esperadas: -1 e -4
principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (5*5 4*1*4);
se (9 0)
{
X1 (-5 + raiz(9)) / (2*1);
X2 (-5 - raiz(9)) / (2*1);
imprima( Raizes da equação: , X1, X2);
}
senão
{
imprima ( Não existem raízes reais );
}
}
23
5) Testar o algoritmo Entradas A = 1, B = 5, C = 4
Saídas esperadas: -1 e -4
principal
{
real A, B, C, DELTA, X1, X2;
imprima( Leia os coeficientes A, B e C da equação de 2º grau );
leia(A,B,C);
DELTA (5*5 4*1*4);
se (9 0)
{
-1 (-5 + raiz(9)) / (2*1);
-4 (-5 - raiz(9)) / (2*1);
imprima( Raizes da equação: , -1, -4);
}
senão
{
imprima ( Não existem raízes reais );
}
}
24
6) Traduzir o algoritmo para um programa
#include <stdio.h>
#include <math.h>

int main()
{
float a, b, c, delta, x1, x2;
printf("Leia os coeficientes A, B e C da equação de 2º grau: ");
scanf("%f %f %f", &a, &b, &c);
delta = pow(b,2) - 4*a*c;
if(delta >= 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("Raizes da equação: %f %f", x1, x2);
}
else
{
printf("Não existem raízes reais");
}
return 0;
}
25
7) Documentação:
O conjunto de documentos produzidos ao longo
do método direto constitui a primeira
documentação técnica do programa.

26
1. Ler dois números inteiros e informar se o primeiro valor
lido é maior, menor ou igual ao segundo.

2. Ler um número inteiro e informar se ele é divisível por 2.

3. Altere o algoritmo anterior para que seja informado se o


número é divisível por 2 e por 3 simultaneamente.

27
4. Altere o algoritmo anterior para que seja informado se o
número é divisível por 2 e por 3, mas que não seja
divisível por 5.

5. Desenvolver um algoritmo para ler o número do dia da


semana e imprimir o seu respectivo nome por extenso.
Considerar o número 1 como domingo, 2 para segunda
etc. Caso o dia da semana não exista (menor do que 1
ou maior do que 7), exibir a mensagem Dia da semana
inválido".

6. Fazer um algoritmo para ler dois números e um dos


símbolos das operações: +, -, * e /. Imprimir o resultado
da operação efetuada sobre os números lidos.
28
7. Os funcionários de uma empresa receberam um aumento
de salário: técnicos (código = 1), 50%; gerentes (código =
2), 30%; demais funcionários (código = 3), 20%. Escrever
um algoritmo para ler o código do cargo de um
funcionário e o valor do seu salário atual, calcular e
imprimir o novo salário após o aumento.

8. Desenvolver um algoritmo para ler o valor inteiro da idade


de uma pessoa e imprimir uma das mensagens: se idade
< 13: Criança, se 13 idade < 20: Adolescente, se 20
idade < 60: Adulto e se idade 60: Idoso.

29
9. Elaborar um algoritmo para ler o código de um produto e
informar a sua origem:
a) Código do produto entre 1 e 20: Europa
b) Código do produto entre 21 e 40: Ásia
c) Código do produto entre 41 e 60: América
d) Código do produto entre 61 e 80: África
e) Código do produto maior que 80: Paraguai

10. Para auxiliar os vendedores de uma loja na orientação


aos clientes sobre as diversas formas de pagamento,
desenvolver um algoritmo para:

30
a) Imprimir o seguinte menu:
Forma de pagamento:
1. A vista.
2. Cheque para trinta dias.
3. Em duas vezes.
4. Em três vezes.
5. Em quatro vezes.
6. A partir de cinco vezes.
Entre com sua opção:

b) Ler o código da opção de pagamento.

31
c) Imprimir uma das mensagens de acordo com a
opção lida:
Opção = 1: Desconto de 20%
Opção = 2, 3 ou 4: Mesmo preço a vista
Opção = 5: Juros de 3% ao mês
Opção = 6: Juros de 5% ao mês
Opção <1 ou opção >6: Opção inválida

11. Desenvolver um programa na linguagem C para cada


algoritmo anterior.

32
DCC 120 Laboratório de Programação
Declaração de variáveis
Operadores
Expressões
Impressão de dados (monitor)
printf("expressão de controle", argumentos);
Leitura de dados (teclado):
scanf("expressão de controle", argumentos);
Exemplos:
scanf( %d , &a);
scanf( %f , &f1);

34
O comando if é uma estrutura de decisão que decide se uma sequência de
comandos será ou não executada. Sua sintaxe é:

if (<expressão>)
{
<sequência de comandos>
}

Ou

if (<expressão>) <único comando>;

A expressão sempre será avaliada logicamente (verdadeiro ou falso),


correspondendo ao FALSO o valor zero (==0) e os demais ao VERDADEIRO (!=0).35
Exemplo: Programa para determinar o maior de dois números
fornecidos pelo usuário.

#include <stdio.h>
int main()
{
float a, b, maior;
printf("Digite os dois numeros");
scanf("%f %f", &a, &b);
maior = a;
if (b > a) maior = b;
printf("O maior entre numeros %f , %f e' %f ", a, b, maior);
return 0;
}

36
Exemplo: Ler duas variáveis (x e y) e imprimí-las na ordem crescente.
#include <stdio.h>
int main()
{
float x, y, aux;
printf("Digite os dois numeros");
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 , %f: \n", x, y);
return 0;
}
37
O comando if pode decidir entre duas sequências de comandos qual vai
ser a executada, tendo a seguinte sintaxe:

if (<expressão>)
{ // caso a expressão verificada retorne verdadeiro
<sequência de comandos>
}
else
{ // caso a expressão verificada retorne falso
<sequência de comandos>
}

38
Exemplo: Verificar a paridade de um número.

#include <stdio.h>
main()
{
int x;
printf("Digite o numero: ");
scanf("%d", &x);
if (x % 2 == 0)
printf("%d e' par \n", x);
else
printf("%d e' impar \n", x);
return 0;
}

Obs.: No exemplo acima não são utilizadas chaves no if e no


else pois há apenas um comando a ser executado. Em casos
como esse pode-se ou não utilizar as chaves.
39
if (<condição 1>)
{
<comandos if1>
if (<condição 2> )
{
<comandos if2>
}
else
{
<comandos else2>
}
}
else
{
<comandos else1>
if (<condição 3>)
{
<comandos if3>
}
}
40
1. Qual é a saída do programa. 2. Qual é a saída do programa.
int main() int main()
{ {
int x = 10, y = 3; int a = 2, b = 3, c = 4;
if (x < 10) if ((a<3) && ((b !=3) || (c == 4)))
printf( Saída 1 ); printf( saída 1 );
else if ((c ==3) || (b ==4))
if (y < 4) printf( Saída 2 );
if (x > 10) if ((a < 3) && (b > 4))
printf( Saída 2 ); printf( Saída 3 );
else printf( Saída 3 ); else if (a == 2)
return 0; if (b==5)
} printf( Saída 4 );
else printf( Saída 5 );
return 0;
}

41
Utilizado quando uma determinada variável pode ser igual a
diferentes valores que se deseja avaliar
sintaxe:
switch (variável)
{
case constante1: <comandos>
break;
case constante2: <comandos>
break;
default: <comandos>
}

42
int main()
{
int epoca;
printf("Digite o trimestre do ano em que estamos: ");
scanf("%d",&epoca);
switch (epoca)
{
case 1: printf("verão");
break;
case 2: printf("outono");
break;
case 3: printf("inverno");
break;
case 4: printf("primavera");
break;
default: printf("período inválido");
}
return 0;
}

43
1. Faça um programa para ler dois número inteiros, faça a
divisão do primeiro pelo segundo (se o segundo for
diferente de zero).
2. Faça um programa para ler dois números reais e verificar
se ambos são maiores que zero. Caso positivo, informar
Valores são válidos . Caso contrário, informar Valores
inválidos .
3. Tendo como dados de entrada a altura e o sexo de uma
pessoa, construa um programa que calcule seu peso
ideal, utilizando as seguintes fórmulas:
para homens: (72.7*h)-58
para mulheres: (62.1*h)-44.7
4. Faça um programa que leia 3 comprimentos (x,y e z) e
responda se eles formam um triângulo, ou seja, se
x < y + z e y < x + z e z < x + y.
5. Fazer um algoritmo para ler dois números e um dos
símbolos das operações: +, -, * e /. Imprimir o resultado
da operação efetuada sobre os números lidos.
44
6. Faça um programa para ler um caracter e imprimir as seguintes
mensagens, segundo o caso:
Sinal de Menor
Sinal de maior
Sinal de Igual
Outro caracter

7. Elabore um programa que, dada a idade de um nadador,


classifique-o em uma das seguintes categorias:
infantil A = 5 7 anos
infantil B = 8 10 anos
juvenil A = 11 13 anos
juvenil B = 14 17 anos
adulto = 18 30 anos
sênior = maiores de 30 anos
45

Você também pode gostar