introdução a algoritmos introdução a algoritmos ––parte 03...

Post on 09-Dec-2018

247 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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