Universidade Federal do Vale do São Francisco
Curso de Engenharia de Computação
Introdução a Algoritmos – Parte 03
(baseado no material do prof. Marcelo Linder)
Linder)
Prof. Jorge Cavalcanti
[email protected]
www.univasf.edu.br/~jorge.cavalcanti
www.twitter.com/jorgecav
1
Introdução a Algoritmos
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
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.
2
Introdução a Algoritmos
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
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
3
Introdução a Algoritmos
Exemplo 5: Instrução Condicional
algoritmo "divisão – instrução condicional“
// Seção de Declarações
var
n1, n2: inteiro
resultado: real
inicio
// Seção de Comandos
escreva ("Digite o dividendo:")
leia (n1)
escreva ("Digite o divisor:")
leia (n2)
se (n2=0) entao
escreva ("Impossível dividir por zero")
senao
resultado <- n1/n2
escreva ("O resultado eh:", resultado)
fimse
fimalgoritmo
4
Introdução a Algoritmos
5
Introdução a Algoritmos
Fluxograma
Vimos o símbolo
quando falamos sobre
fluxograma. Este símbolo nos permite implementar a
..
instrução
“se entao” e “se entao senao”. Exemplo:
.
Verdadeiro
<expressão-lógica>
<seqüência-de-comandos>
...
Falso
...
Verdadeiro
<expressão-lógica>
6
Falso
<seqüência-de-comandos1>
<seqüência-de-comandos2>
...
6
Introdução a Algoritmos
Fluxograma/Exercício – Com base no que foi exposto
construa um fluxograma para obter o resultado da
divisão de dois números inteiros quaisquer.
Inicio
n1, n2: inteiro
res: real
“Digite o
dividendo
inteiro:”
“O resultado da
divisão é ”,res
Fim
res <- n1 / n2
falso
verdadeiro
n1
n2=0
“Digite o
divisor
inteiro:”
n2
“Impossível
Dividir”
Estruturas de Controle de Fluxo
Exercício 9 – Construa um algoritmo,
representando-o com um pseudocódigo e com um
fluxograma, que calcule o salário líquido de um
funcionário. O algoritmo recebe através do teclado
o salário bruto de um determinado funcionário,
caso este seja inferior a R$ 300,00 é descontado
5% em impostos, se o salário 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
salário líquido do funcionário.
8
algoritmo “exercício 9a”
var salario: real
inicio
escreva (“Entre com o salário bruto do funcionário:
”)
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 salário líquido do funcionário é: ”)
escreva (salario:6:2)
fimalgoritmo
9
10
algoritmo “exercício 9b”
var salario: real
inicio
escreva (“Entre com o salário bruto do funcionário:
”)
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 salário líquido do funcionário é: ”)
escreva (salario:6:2)
fimalgoritmo
Inicio
“Entre com o
salário bruto do
funcionário:”
salario: real
salario
salario<300
falso
verdadeiro
salario<=1200
falso
salario <- 0.85 * salario
verdadeiro
salario <- 0.9 * salario
“O salário líquido
do funcionário é: ”
salario <- 0.95 * salario
Salario:6:2
Fim
11
Estruturas de Controle de Fluxo
Exercício
10
–
Faça
um
algoritmo,
representando-o com um pseudocódigo e com
um fluxograma, para ler três valores reais e
informar se estes podem ou não formar os lados
de um triângulo, e qual tipo de triângulo seria:
Eqüilátero, Isósceles ou Escaleno.
12
Estruturas de Controle de Fluxo
Exercício
11
–
Elabore
um
algoritmo,
representando-o com um pseudocódigo e com um
fluxograma, que com base no nome, em três notas e
no número de faltas de um aluno qualquer
determine qual a sua situação final: Aprovado,
Reprovado por Falta ou Reprovado por Média. As
notas mencionadas devem compor a média que para
propiciar aprovação deve ter valor mínimo 7,0 e o
limite de faltas é igual a 15. A reprovação por falta
sobrepõe a reprovação por Média.
13
Teste de Mesa
Ao nos recordarmos dos passos necessários para
a construção de um algoritmo veremos que após a
elaboração de um algoritmo devemos testá-lo
realizando simulações com o propósito de
verificarmos se este está ou não correto.
Existem alguns softwares disponíveis que efetuam
a interpretação de algoritmos representados em
pseudocódigos ou em fluxogramas.
Porém, existe uma técnica denominada “teste de
mesa” que permite a simulação do processo de
interpretação 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 instrução, verificando o conteúdo de todas
as variáveis contidas no algoritmo.
Sendo assim deve-se enumerar as linhas do
algoritmo e em seguida criar uma tabela onde, a
cada linha, são mostrados os conteúdos das
variáveis do algoritmo
e o número da linha
executada.
Para uma melhor visualização do processo
adotaremos a seguinte convenção: nas linhas em
que uma variável é lida (entrada), o valor da
variável ficará entre colchetes [] e quando o
conteúdo de uma variável for escrito (saída), ficará
entre chaves {}.
15
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 figura
geométrica:”)
4. Leia (arestas)
5. Vertices <- arestas + 2 – faces
6. Escreva (“O número de vértices do objeto especificado é: ”,
vertices)
Fimalgoritmo
16
Linha
Vertices
Faces
Arestas
1
?
?
?
2
?
[6]
?
3
?
6
?
4
?
6
[12]
5
8
6
12
6
{8}
6
12
Introdução a Algoritmos
Trecho 1
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.
Trecho 2
Trecho 3
Para lidar com casos deste tipo foi criado o comando de
seleção múltipla.
17
Introdução a Algoritmos
Sintaxe: Comando de seleção múltipla
escolha (<variável>)
caso <valor11>, <valor12>, ..., <valor1n>
<seqüência-de-comandos-1>
caso <valor21>, <valor22>, ..., <valor2m>
<seqüência-de-comandos-2>
...
outrocaso
<seqüência-de-comandos-extra>
fimescolha
18
Introdução a Algoritmos
Exemplo 6:
algoritmo "Times - seleção múltipla"
// Função :
escolha (time)
// Autor :
caso "Sport", "Santa Cruz", "Nautico",
// Data : 10/8/2010
"Petrolina"
// Seção de Declarações
escreval ("É um time Pernambucano")
var
caso "Vitória", "Bahia", "Camaçari",
time: caractere
"Juazeiro"
inicio
escreval ("É um time Baiano")
outrocaso
// Seção de Comandos
escreval ("É de outro Estado")
escreval ("Digite um nome de time de
futebol:")
fimescolha
leia (time)
fimalgoritmo
19
Introdução a Algoritmos
20
Introdução a Algoritmos
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”.......
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.
21
Algoritmos e Programação
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”.......
algoritmo "Dias da Semana seleção múltipla“
var
num: inteiro
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")
caso 4
escreval
caso 5
escreval
caso 6
escreval
caso 7
escreval
outrocaso
escreval
fimescolha
("Hoje é Quarta")
("Hoje é Quinta")
("Hoje é Sexta")
("Hoje pe Sábado")
("Número inválido")
fimalgoritmo
22
Algoritmos e Programação
2 - Peça uma letra e mostre se ela é vogal ou
consoante.
algoritmo "Letras do Alfabeto seleção 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",
// Seção 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 Programação
3 - Peça três números e mostre o maior entre eles.
algoritmo "MAIOR“
var
n1,n2,n3, maior: inteiro
inicio
// Seção de Comandos
escreval ("Digite três números")
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
Download

Parte 3 - Univasf