Algoritmos
Utilizada quando a execuo de uma ao depender de uma inspeo ou teste de uma condio (expresso lgica). Pode ser:
Alternativa Simples Alternativa Dupla Alternativa Mltipla Escolha
Sintaxe:
se (<condio>) { Comando; }
Exemplo 1:
Exemplo 2:
Analogia:
Pseudolinguagem
Linguagem C if (condio) { C; }
se (<condio>) { C; }
Analogia:
Pseudolinguagem
Linguagem C if (condio) { C; } Obs.: Se houver s um comando no ento, no precisa usar chaves ({bloco}).
7
se (<condio>) { C; }
Analogia:
Pseudolinguagem se (< condio >) { C1 ; } seno { C2 ; } Linguagem C if (condio) { C1 ; } else { C2 ; }
10
Sintaxe:
escolha (<expresso>) { caso V1 : C1; caso V2 : C2; . . . . . . . .. . . . . . caso Vn : Cn; seno : Cn+1; }
12
Pseudolinguagem escolha (<expresso>) { caso V1 : C1; caso V2 : C2; ............. caso Vn : Cn; seno : Cn+1; }
Linguagem C switch(<expresso>) { case V1: C1; break; case V2: C2; break; ........... case Vn: Cn; break; default: Cn+1; }
13
Exemplo:
principal { inteiro EPOCA; imprima( Digite o nmero do trimestre: ); leia(EPOCA); escolha (EPOCA) { caso 1: imprima( vero ); caso 2: imprima( outono ); caso 3: imprima( inverno ); caso 4: imprima( primavera ); seno: imprima( perodo invlido ); } } #include <stdio.h> int main() { int epoca; printf("Digite o nmero do trimestre:"); scanf("%d , &epoca); switch (epoca) { case 1: printf("vero"); break; case 2: printf ("outono"); break; case 3: printf ("inverno"); break; case 4: printf ("primavera"); break; default: printf( Trimestre invlido"); } return 0; } 14
Construir um algoritmo para ler os coeficientes A, B e C de uma equao do segundo grau e se: Delta for negativo: imprimir a mensagem No h soluo real . Delta for maior ou igual a zero: calcular e imprimir as razes da equao.
Mtodo Direto
15
1) Enunciado est entendido? Para resolver o problema necessrio saber a equao de 2 grau. Esta equao tem a seguinte forma:
(-B raiz(DELTA)) / (2*A) onde DELTA = (B**2 4*A*C)
16
2) Quais variveis sero necessrias? A, B, C e DELTA sero as variveis inteiras que comporo a frmula da equao acima. Sero necessrias mais duas variveis inteiras X1 e X2 que sero as razes da equao.
17
3) Quais mtodos sero utilizados? Por se tratar de uma condio, utilizaremos a estrutura de controle de alternativa.
18
5) Testar o algoritmo
principal { real A, B, C, DELTA, X1, X2; imprima( Leia os coeficientes A, B e C da equao 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 equao: , X1, X2); } seno { imprima ( No existem razes reais ); } }
20
5) Testar o algoritmo
principal { real A, B, C, DELTA, X1, X2; imprima( Leia os coeficientes A, B e C da equao 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 equao: , X1, X2); } seno { imprima ( No existem razes reais ); } }
21
5) Testar o algoritmo
principal { real A, B, C, DELTA, X1, X2; imprima( Leia os coeficientes A, B e C da equao 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 equao: , X1, X2); } seno { imprima ( No existem razes reais ); } }
22
5) Testar o algoritmo
principal { real A, B, C, DELTA, X1, X2; imprima( Leia os coeficientes A, B e C da equao 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 equao: , X1, X2); } seno { imprima ( No existem razes reais ); } }
23
5) Testar o algoritmo
principal { real A, B, C, DELTA, X1, X2; imprima( Leia os coeficientes A, B e C da equao 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 equao: , -1, -4); } seno { imprima ( No existem razes reais ); } }
24
7) Documentao: O conjunto de documentos produzidos ao longo do mtodo direto constitui a primeira documentao tcnica do programa.
26
1. Ler dois nmeros inteiros e informar se o primeiro valor lido maior, menor ou igual ao segundo.
3. Altere o algoritmo anterior para que seja informado se o nmero divisvel por 2 e por 3 simultaneamente.
27
4. Altere o algoritmo anterior para que seja informado se o nmero divisvel por 2 e por 3, mas que no seja divisvel por 5. 5. Desenvolver um algoritmo para ler o nmero do dia da semana e imprimir o seu respectivo nome por extenso. Considerar o nmero 1 como domingo, 2 para segunda etc. Caso o dia da semana no exista (menor do que 1 ou maior do que 7), exibir a mensagem Dia da semana invlido". 6. Fazer um algoritmo para ler dois nmeros e um dos smbolos das operaes: +, -, * e /. Imprimir o resultado da operao efetuada sobre os nmeros lidos.
28
7. Os funcionrios de uma empresa receberam um aumento de salrio: tcnicos (cdigo = 1), 50%; gerentes (cdigo = 2), 30%; demais funcionrios (cdigo = 3), 20%. Escrever um algoritmo para ler o cdigo do cargo de um funcionrio e o valor do seu salrio atual, calcular e imprimir o novo salrio aps o aumento. 8. Desenvolver um algoritmo para ler o valor inteiro da idade de uma pessoa e imprimir uma das mensagens: se idade < 13: Criana, se 13 idade < 20: Adolescente, se 20 idade < 60: Adulto e se idade 60: Idoso.
29
9. Elaborar um algoritmo para ler o cdigo de um produto e informar a sua origem: a) Cdigo do produto entre 1 e 20: Europa b) Cdigo do produto entre 21 e 40: sia c) Cdigo do produto entre 41 e 60: Amrica d) Cdigo do produto entre 61 e 80: frica e) Cdigo do produto maior que 80: Paraguai 10. Para auxiliar os vendedores de uma loja na orientao 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 trs vezes. 5. Em quatro vezes. 6. A partir de cinco vezes. Entre com sua opo: b) Ler o cdigo da opo de pagamento.
31
c) Imprimir uma das mensagens de acordo com a opo lida: Opo = 1: Desconto de 20% Opo = 2, 3 ou 4: Mesmo preo a vista Opo = 5: Juros de 3% ao ms Opo = 6: Juros de 5% ao ms Opo <1 ou opo >6: Opo invlida 11. Desenvolver um programa na linguagem C para cada algoritmo anterior.
32
DCC 120
Laboratrio de Programao
O comando if uma estrutura de deciso que decide se uma sequncia de comandos ser ou no executada. Sua sintaxe :
A expresso 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 nmeros fornecidos pelo usurio.
#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
O comando if pode decidir entre duas sequncias de comandos qual vai ser a executada, tendo a seguinte sintaxe:
if (<expresso>) { // caso a expresso verificada retorne verdadeiro <sequncia de comandos> } else { // caso a expresso verificada retorne falso <sequncia de comandos> }
38
Obs.: No exemplo acima no so utilizadas chaves no if e no else pois h apenas um comando a ser executado. Em casos como esse pode-se ou no utilizar as chaves.
39
if (<condio 1>) { <comandos if1> if (<condio 2> ) { <comandos if2> } else { <comandos else2> } } else { <comandos else1> if (<condio 3>) { <comandos if3> } }
40
return 0;
}
41
Utilizado quando uma determinada varivel pode ser igual a diferentes valores que se deseja avaliar
sintaxe: switch (varivel) { 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("vero"); break; case 2: printf("outono"); break; case 3: printf("inverno"); break; case 4: printf("primavera"); break; default: printf("perodo invlido"); }
return 0;
43
1. 2.
3.
Faa um programa para ler dois nmero inteiros, faa a diviso do primeiro pelo segundo (se o segundo for diferente de zero). Faa um programa para ler dois nmeros reais e verificar se ambos so maiores que zero. Caso positivo, informar Valores so vlidos . Caso contrrio, informar Valores invlidos . Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando as seguintes frmulas:
para homens: (72.7*h)-58 para mulheres: (62.1*h)-44.7
4. 5.
Faa um programa que leia 3 comprimentos (x,y e z) e responda se eles formam um tringulo, ou seja, se x < y + z e y < x + z e z < x + y. Fazer um algoritmo para ler dois nmeros e um dos smbolos das operaes: +, -, * e /. Imprimir o resultado da operao efetuada sobre os nmeros lidos.
44
6.
Faa um programa para ler um caracter e imprimir as seguintes mensagens, segundo o caso:
infantil A = 5 7 anos infantil B = 8 10 anos juvenil A = 11 13 anos juvenil B = 14 17 anos adulto = 18 30 anos snior = maiores de 30 anos
45