introdução a algoritmos introdução a algoritmos ––parte 03...
Post on 09-Dec-2018
260 Views
Preview:
TRANSCRIPT
Universidade Federal do Vale do São FranciscoCurso de Engenharia de Computação
1
Prof. Jorge Cavalcantijorge.cavalcanti@univasf.edu.br
www.univasf.edu.br/~jorge.cavalcanti
www.twitter.com/jorgecav
Introdução a Algoritmos Introdução a Algoritmos –– Parte 03Parte 03(baseado no material do prof. Marcelo (baseado no material do prof. Marcelo LinderLinder) )
� Estruturas de Controle de Fluxo
� Os algoritmos desenvolvidos até o momento constituem uma seqüência de ações que sempre são executadas em sua totalidade indiferente do valor da entrada de dados.
� Para a resolução de determinados problemas ou para a
Introdução a Algoritmos
2
� Para a resolução de determinados problemas ou para a execução de determinadas tarefas é necessária a realização de um conjunto distinto de ações e este conjunto é definido com base na análise da entrada de dados.
� Um exemplo simples de uma destas situações é um algoritmo capaz de efetuar o cálculo 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 cálculo será feito de formas distintas.
� Instrução Condicional� Estas instruções permitem que o programador especifique a seqüência de instruções que será executada.
Considere um problema que exija uma decisão.
� Tomemos como exemplo uma divisão, onde haja a necessidade de que o algoritmo verifique se o divisor é igual
Introdução a Algoritmos
3
necessidade de que o algoritmo verifique se o divisor é igual ou diferente de zero. Se for igual não é possível dividir. Se for diferente é possível dividir.
Sintaxe:se (<expressão-lógica>) então
<sequência de comandos>senão<seqüência de comandos>
fimse
Exemplo 5: Instrução Condicional
algoritmo "divisão – instrução condicional“// Seção de Declarações varn1, n2: inteiroresultado: realinicio
Introdução a Algoritmos
4
inicio// Seção de Comandosescreva ("Digite o dividendo:")leia (n1)escreva ("Digite o divisor:")leia (n2)
se (n2=0) entaoescreva ("Impossível dividir por zero")
senaoresultado <- n1/n2escreva ("O resultado eh:", resultado)
fimsefimalgoritmo
Introdução a Algoritmos
5
Introdução a Algoritmos
Fluxograma
Vimos o símbolo quando falamos sobrefluxograma. Este símbolo nos permite implementar ainstrução “se entao” e “se entao senao”. Exemplo:. .
.
Verdadeiro
66
<expressão-lógica>
Verdadeiro
Falso
<seqüência-de-comandos> . . .
. . .
<expressão-lógica>
Verdadeiro
Falso
<seqüência-de-comandos1> . . .
<seqüência-de-comandos2>
Fluxograma/Exercício – Com base no que foi expostoconstrua um fluxograma para obter o resultado dadivisão de dois números inteiros quaisquer.
n1, n2: inteirores: real
Inicio
Fim
“O resultado da divisão é ”,res
Introdução a Algoritmos
n1
res <- n1 / n2
n2=0“ImpossívelDividir”
verdadeiro
falso
“Digite odividendointeiro:”
n2“Digite odivisorinteiro:”
Exercício 9 – Construa um algoritmo,representando-o com um pseudocódigo e com umfluxograma, que calcule o salário líquido de umfuncionário. O algoritmo recebe através do tecladoo salário bruto de um determinado funcionário,caso este seja inferior a R$ 300,00 é descontado5% em impostos, se o salário variar de R$ 300,00
Estruturas de Controle de Fluxo
8
5% em impostos, se o salário variar de R$ 300,00até 1.200,00 é descontado 10% em impostos, seesse for superior a R$ 1.200,00 é descontado 15%em impostos. Ao final o algoritmo deve exibir osalário líquido do funcionário.
algoritmo “exercício 9a”var salario: realinicioescreva (“Entre com o salário bruto do funcionário: ”)
leia (salario)se (salario<300.0) entaosalario <- salario*0.95
fimsese ((salario>=300) e (salario<=1200)) entao
9
se ((salario>=300) e (salario<=1200)) entaosalario <- salario*0.90
fimsese (salario>1200) entaosalario <- salario*0.85
fimseescreva (“O salário líquido do funcionário é: ”)escreva (salario:6:2)
fimalgoritmo
algoritmo “exercício 9b”var salario: realinicioescreva (“Entre com o salário bruto do funcionário: ”)
leia (salario)se (salario<300.0) entaosalario <- salario*0.95
senaose ((salario>=300) e (salario<=1200)) entao
10
se ((salario>=300) e (salario<=1200)) entaosalario <- salario*0.90
senaosalario <- salario*0.85
fimsefimseescreva (“O salário líquido do funcionário é: ”)escreva (salario:6:2)
fimalgoritmo
salario
salario: real
Inicio
falso
“Entre com o salário bruto do funcionário:”
salario<300 salario<=1200falso
salario <- 0.85 * salario
11
salario <- 0.95 * salario
Fim
verdadeiro verdadeiro
salario <- 0.9 * salario “O salário líquido do funcionário é: ”
Salario:6:2
Estruturas de Controle de Fluxo
Exercício 10 – Faça um algoritmo,representando-o com um pseudocódigo e comum fluxograma, para ler três valores reais einformar se estes podem ou não formar os ladosde um triângulo, e qual tipo de triângulo seria:Eqüilátero, Isósceles ou Escaleno.
12
Eqüilátero, Isósceles ou Escaleno.
Estruturas de Controle de Fluxo
Exercício 11 – Elabore um algoritmo,representando-o com um pseudocódigo e com umfluxograma, que com base no nome, em três notas eno número de faltas de um aluno qualquerdetermine qual a sua situação final: Aprovado,Reprovado por Falta ou Reprovado por Média. Asnotas mencionadas devem compor a média que para
13
notas mencionadas devem compor a média que parapropiciar aprovação deve ter valor mínimo 7,0 e olimite de faltas é igual a 15. A reprovação por faltasobrepõe a reprovação por Média.
Teste de Mesa
Ao nos recordarmos dos passos necessários paraa construção de um algoritmo veremos que após aelaboração de um algoritmo devemos testá-lorealizando simulações com o propósito deverificarmos se este está ou não correto.
Existem alguns softwares disponíveis que efetuama interpretação de algoritmos representados em
14
a interpretação de algoritmos representados empseudocódigos ou em fluxogramas.
Porém, existe uma técnica denominada “teste demesa” que permite a simulação do processo deinterpretação de um algoritmo utilizando apenas umpapel e uma caneta.
Teste de MesaPara acompanhar o desenvolvimento de um
algoritmo é importante verificar o estado dos dadosa cada instrução, verificando o conteúdo de todasas variáveis contidas no algoritmo.
Sendo assim deve-se enumerar as linhas doalgoritmo e em seguida criar uma tabela onde, acada linha, são mostrados os conteúdos das
15
cada linha, são mostrados os conteúdos dasvariáveis do algoritmo e o número da linhaexecutada.
Para uma melhor visualização do processoadotaremos a seguinte convenção: nas linhas emque uma variável é lida (entrada), o valor davariável ficará entre colchetes [] e quando oconteúdo de uma variável for escrito (saída), ficaráentre chaves {}.
Algoritmo “vértices”
Var vertices, faces, arestas: inteiro
Inicio
1. Escreva (“Entre com o número de faces da figura geométrica: ”)
2. Leia (faces)
3. Escreva (“Entre com um número da arestas da figurageométrica:”)
4. Leia (arestas)
5. Vertices <- arestas + 2 – faces
Escreva (“O número de vértices do objeto especificado é: ”,
16
6. Escreva (“O número de vértices do objeto especificado é: ”,vertices)
FimalgoritmoLinha Vertices Faces Arestas
1 ? ? ?
2 ? [6] ?
3 ? 6 ?
4 ? 6 [12]
5 8 6 12
6 {8} 6 12
� Comando de Seleção Múltipla
� Em algumas situações ao chegarmos a uma determinada instrução de um algoritmo devemos selecionar um dentre alguns trechos a seguir, tendo como base para esta escolha um conjunto de valores.
Introdução a Algoritmos
17
� Para lidar com casos deste tipo foi criado o comando de seleção múltipla.
Trecho 1Trecho 2
Trecho 3
Sintaxe: Comando de seleção múltipla
escolha (<variável>)caso <valor11>, <valor12>, ..., <valor1n>
<seqüência-de-comandos-1>caso <valor21>, <valor22>, ..., <valor2m>
Introdução a Algoritmos
18
caso <valor21>, <valor22>, ..., <valor2m><seqüência-de-comandos-2>
...outrocaso
<seqüência-de-comandos-extra>fimescolha
Exemplo 6:
algoritmo "Times - seleção múltipla"// Função :// Autor :// Data : 10/8/2010// Seção de Declarações var
escolha (time)
caso "Sport", "Santa Cruz", "Nautico", "Petrolina"
escreval ("É um time Pernambucano")
Introdução a Algoritmos
19
vartime: caractere
inicio// Seção de Comandos escreval ("Digite um nome de time de futebol:")leia (time)
escreval ("É um time Pernambucano")
caso "Vitória", "Bahia", "Camaçari", "Juazeiro"
escreval ("É um time Baiano")
outrocaso
escreval ("É de outro Estado")
fimescolha
fimalgoritmo
Introdução a Algoritmos
20
1) Receba do usuário um número entre 1 e 7, inclusive 1 e 7.Se ele digitar o número 1 mostre “Hoje é Domingo”, se eledigitar o número 2 mostre “Hoje é Segunda”.......
2) Peça uma letra e mostre se ela é vogal ou consoante.
3) Peça três números e mostre o maior entre eles.
Introdução a Algoritmos
21
3) Peça três números e mostre o maior entre eles.
1 - Receba do usuário um número entre 1 e 7,inclusive 1 e 7. Se ele digitar o número 1 mostre“Hoje é Domingo”, se ele digitar o número 2 mostre“Hoje é Segunda”.......
Algoritmos e Programação
algoritmo "Dias da Semana seleção múltipla“
var
num: inteiro
inicio
caso 4
escreval ("Hoje é Quarta")
caso 5
escreval ("Hoje é Quinta")
2222
inicio
// Seção de Comandos
escreval ("Digite um número de 1 a 7:")
leia (num)
escolha (num)
caso 1
escreval ("Hoje é Domingo")
caso 2
escreval ("Hoje é Segunda")
caso 3
escreval ("Hoje é Terça")
escreval ("Hoje é Quinta")
caso 6
escreval ("Hoje é Sexta")
caso 7
escreval ("Hoje pe Sábado")
outrocaso
escreval ("Número inválido")
fimescolha
fimalgoritmo
2 - Peça uma letra e mostre se ela é vogal ouconsoante.
Algoritmos e Programação
algoritmo "Letras do Alfabeto seleção multipla“varlet: caracter
inicio// Seção de Comandos
caso "b", "c", "d", "f", "g", "h", "j","k", "l", "m", "n", "p", "q", "r",
Tudo na mesma linha do algoritmo
23
// Seção de Comandosescreval ("Digite uma letra do alfabeto:")leia (let)escolha (let)
caso "a", "e", "i", "o", "u"escreval ("É uma vogal")
"k", "l", "m", "n", "p", "q", "r","s", "t", "v", "x", "w", "y", "z"escreval ("É uma consoante")
outrocasoescreval ("É outro caractere")
fimescolhafimalgoritmo
3 - Peça três números e mostre o maior entre eles.
Algoritmos e Programação
algoritmo "MAIOR“varn1,n2,n3, maior: inteiroinicio// Seção de Comandos
senaose (n2>n3) entaomaior:= n2
senaomaior:= n3
24
// Seção de Comandosescreval ("Digite três números")leia (n1,n2,n3)
se (n1>n2) e (n1>n3) entaomaior:= n1
maior:= n3fimse
fimseescreva (maior)fimalgoritmo
top related