24
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação 1 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav Introdução a Algoritmos Introdução a Algoritmos – Parte 03 Parte 03 (baseado no material do prof. Marcelo (baseado no material do prof. Marcelo Linder Linder) )

Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

Embed Size (px)

Citation preview

Page 1: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

Universidade Federal do Vale do São FranciscoCurso de Engenharia de Computação

1

Prof. Jorge [email protected]

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) )

Page 2: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

� 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.

Page 3: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

� 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

Page 4: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 5: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

Introdução a Algoritmos

5

Page 6: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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>

Page 7: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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:”

Page 8: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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.

Page 9: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 10: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 11: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 12: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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.

Page 13: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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.

Page 14: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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.

Page 15: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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 {}.

Page 16: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 17: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

� 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

Page 18: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 19: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 20: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

Introdução a Algoritmos

20

Page 21: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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.

Page 22: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 23: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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

Page 24: Introdução a Algoritmos Introdução a Algoritmos ––Parte 03 ...jorge.cavalcanti/Introducao_Algoritmos_Parte03.pdf · variáveis do algoritmo e o número da linha executada

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