Você está na página 1de 24

Universidade Federal do Vale do So Francisco Curso de Engenharia de Computao

Introduo a Algoritmos Parte 03


(baseado no material do prof. Marcelo Linder) Linder)

Prof. Jorge Cavalcanti


jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav
1

Introduo a Algoritmos
Estruturas de Controle de Fluxo
Os algoritmos desenvolvidos at o momento constituem uma seqncia de aes que sempre so executadas em sua totalidade indiferente do valor da entrada de dados. Para a resoluo de determinados problemas ou para a execuo de determinadas tarefas necessria a realizao de um conjunto distinto de aes e este conjunto definido com base na anlise da entrada de dados. Um exemplo simples de uma destas situaes um algoritmo capaz de efetuar o clculo do imposto de renda devido por um determinado contribuinte. Neste caso dependendo da quantidade de dependentes, do valor de sua renda e outras fatores o clculo ser feito de formas distintas.
2

Introduo a Algoritmos
Instruo Condicional
Estas instrues permitem que o programador especifique a seqncia de instrues que ser executada. Considere um problema que exija uma deciso. Tomemos como exemplo uma diviso, onde haja a necessidade de que o algoritmo verifique se o divisor igual ou diferente de zero. Se for igual no possvel dividir. Se for diferente possvel dividir.

Sintaxe:
se (<expresso-lgica>) ento <sequncia de comandos> seno <seqncia de comandos> fimse
3

Introduo a Algoritmos
Exemplo 5: Instruo Condicional algoritmo "diviso instruo condicional // Seo de Declaraes var n1, n2: inteiro resultado: real inicio // Seo de Comandos escreva ("Digite o dividendo:") leia (n1) escreva ("Digite o divisor:") leia (n2) se (n2=0) entao escreva ("Impossvel dividir por zero") senao resultado <- n1/n2 escreva ("O resultado eh:", resultado) fimse fimalgoritmo 4

Introduo a Algoritmos

Introduo a Algoritmos
Fluxograma Vimos o smbolo quando falamos sobre fluxograma. Este smbolo nos permite implementar a .. instruo se entao e se entao senao. Exemplo:
.
Verdadeiro

<expresso-lgica>
Falso

<seqncia-de-comandos>

...

...

Verdadeiro

<expresso-lgica>
6

<seqncia-de-comandos1>

...
6

Falso

<seqncia-de-comandos2>

Introduo a Algoritmos
Fluxograma/Exerccio Com base no que foi exposto construa um fluxograma para obter o resultado da diviso de dois nmeros inteiros quaisquer.
Inicio O resultado da diviso ,res

n1, n2: inteiro res: real

Fim

Digite o dividendo inteiro: n1

res <- n1 / n2
falso verdadeiro

n2=0

Impossvel Dividir

Digite o divisor inteiro:

n2

Estruturas de Controle de Fluxo


Exerccio 9 Construa um algoritmo, representando-o com um pseudocdigo e com um fluxograma, que calcule o salrio lquido de um funcionrio. O algoritmo recebe atravs do teclado o salrio bruto de um determinado funcionrio, caso este seja inferior a R$ 300,00 descontado 5% em impostos, se o salrio variar de R$ 300,00 at 1.200,00 descontado 10% em impostos, se esse for superior a R$ 1.200,00 descontado 15% em impostos. Ao final o algoritmo deve exibir o salrio lquido do funcionrio.

algoritmo exerccio 9a var salario: real inicio escreva (Entre com o salrio bruto do funcionrio: ) leia (salario) se (salario<300.0) entao salario <- salario*0.95 fimse se ((salario>=300) e (salario<=1200)) entao salario <- salario*0.90 fimse se (salario>1200) entao salario <- salario*0.85 fimse escreva (O salrio lquido do funcionrio : ) escreva (salario:6:2) fimalgoritmo
9

10

algoritmo exerccio 9b var salario: real inicio escreva (Entre com o salrio bruto do funcionrio: ) leia (salario) se (salario<300.0) entao salario <- salario*0.95 senao se ((salario>=300) e (salario<=1200)) entao salario <- salario*0.90 senao salario <- salario*0.85 fimse fimse escreva (O salrio lquido do funcionrio : ) escreva (salario:6:2) fimalgoritmo

Inicio Entre com o salrio bruto do funcionrio: salario: real

salario

salario<300
verdadeiro

falso

salario<=1200
verdadeiro

falso

salario <- 0.85 * salario

salario <- 0.9 * salario salario <- 0.95 * salario

O salrio lquido do funcionrio :

Salario:6:2 Fim
11

Estruturas de Controle de Fluxo


Exerccio 10 Faa um algoritmo, representando-o com um pseudocdigo e com um fluxograma, para ler trs valores reais e informar se estes podem ou no formar os lados de um tringulo, e qual tipo de tringulo seria: Eqiltero, Issceles ou Escaleno.

12

Estruturas de Controle de Fluxo


Exerccio 11 Elabore um algoritmo, representando-o com um pseudocdigo e com um fluxograma, que com base no nome, em trs notas e no nmero de faltas de um aluno qualquer determine qual a sua situao final: Aprovado, Reprovado por Falta ou Reprovado por Mdia. As notas mencionadas devem compor a mdia que para propiciar aprovao deve ter valor mnimo 7,0 e o limite de faltas igual a 15. A reprovao por falta sobrepe a reprovao por Mdia.

13

Teste de Mesa
Ao nos recordarmos dos passos necessrios para a construo de um algoritmo veremos que aps a elaborao de um algoritmo devemos test-lo realizando simulaes com o propsito de verificarmos se este est ou no correto. Existem alguns softwares disponveis que efetuam a interpretao de algoritmos representados em pseudocdigos ou em fluxogramas. Porm, existe uma tcnica denominada teste de mesa que permite a simulao do processo de interpretao de um algoritmo utilizando apenas um papel e uma caneta.

14

Teste de Mesa
Para acompanhar o desenvolvimento de um algoritmo importante verificar o estado dos dados a cada instruo, verificando o contedo de todas as variveis contidas no algoritmo. Sendo assim deve-se enumerar as linhas do algoritmo e em seguida criar uma tabela onde, a cada linha, so mostrados os contedos das variveis do algoritmo e o nmero da linha executada. Para uma melhor visualizao do processo adotaremos a seguinte conveno: nas linhas em que uma varivel lida (entrada), o valor da varivel ficar entre colchetes [] e quando o contedo de uma varivel for escrito (sada), ficar entre chaves {}.
15

Algoritmo vrtices Var vertices, faces, arestas: inteiro Inicio 1. Escreva (Entre com o nmero de faces da figura geomtrica: ) 2. Leia (faces) 3. Escreva (Entre com um nmero da arestas da figura geomtrica:) 4. Leia (arestas) 5. Vertices <- arestas + 2 faces 6. Escreva (O nmero de vrtices do objeto especificado : , vertices) Fimalgoritmo

Linha 1 2 3 4 5 6

Vertices ? ? ? ? 8 {8}

Faces ? [6] 6 6 6 6

Arestas ? ? ? [12] 12 12

16

Introduo a Algoritmos
Comando de Seleo Mltipla
Em algumas situaes ao chegarmos a uma determinada instruo de um algoritmo devemos selecionar um dentre alguns trechos a seguir, tendo como base para esta escolha um conjunto de valores.

Trecho 1

Trecho 2

Trecho 3

Para lidar com casos deste tipo foi criado o comando de seleo mltipla.
17

Introduo a Algoritmos
Sintaxe: Comando de seleo mltipla escolha (<varivel>) caso <valor11>, <valor12>, ..., <valor1n> <seqncia-de-comandos-1> caso <valor21>, <valor22>, ..., <valor2m> <seqncia-de-comandos-2> ... outrocaso <seqncia-de-comandos-extra> fimescolha

18

Introduo a Algoritmos
Exemplo 6:
algoritmo "Times - seleo mltipla" // Funo : escolha (time) // Autor : caso "Sport", "Santa Cruz", "Nautico", // Data : 10/8/2010 "Petrolina" // Seo de Declaraes escreval (" um time Pernambucano") var caso "Vitria", "Bahia", "Camaari", time: caractere "Juazeiro" inicio escreval (" um time Baiano") outrocaso // Seo de Comandos escreval (" de outro Estado") escreval ("Digite um nome de time de futebol:") fimescolha leia (time)
fimalgoritmo
19

Introduo a Algoritmos

20

Introduo a Algoritmos
1) Receba do usurio um nmero entre 1 e 7, inclusive 1 e 7. Se ele digitar o nmero 1 mostre Hoje Domingo, se ele digitar o nmero 2 mostre Hoje Segunda....... 2) Pea uma letra e mostre se ela vogal ou consoante. 3) Pea trs nmeros e mostre o maior entre eles.

21

Algoritmos e Programao
1 - Receba do usurio um nmero entre 1 e 7, inclusive 1 e 7. Se ele digitar o nmero 1 mostre Hoje Domingo, se ele digitar o nmero 2 mostre Hoje Segunda.......
algoritmo "Dias da Semana seleo mltipla var num: inteiro inicio // Seo de Comandos escreval ("Digite um nmero de 1 a 7:") leia (num) escolha (num) caso 1 escreval ("Hoje Domingo") caso 2 escreval ("Hoje Segunda") caso 3 escreval ("Hoje Tera") caso 4 escreval caso 5 escreval caso 6 escreval caso 7 escreval outrocaso escreval fimescolha fimalgoritmo ("Hoje Quarta") ("Hoje Quinta") ("Hoje Sexta") ("Hoje pe Sbado") ("Nmero invlido")

22

Algoritmos e Programao
2 - Pea uma letra e mostre se ela vogal ou consoante. algoritmo "Letras do Alfabeto seleo multipla Tudo na mesma linha do algoritmo var let: caracter caso "b", "c", "d", "f", "g", "h", "j", inicio "k", "l", "m", "n", "p", "q", "r", // Seo de Comandos "s", "t", "v", "x", "w", "y", "z" escreval ("Digite uma letra do alfabeto:") escreval (" uma consoante") leia (let) outrocaso escolha (let) escreval (" outro caractere") caso "a", "e", "i", "o", "u" fimescolha escreval (" uma vogal") fimalgoritmo

23

Algoritmos e Programao
3 - Pea trs nmeros e mostre o maior entre eles. algoritmo "MAIOR var n1,n2,n3, maior: inteiro inicio // Seo de Comandos escreval ("Digite trs nmeros") leia (n1,n2,n3) se (n1>n2) e (n1>n3) entao maior:= n1 senao se (n2>n3) entao maior:= n2 senao maior:= n3 fimse fimse escreva (maior) fimalgoritmo

24