3. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Estruturas Condicionais
Δ Até o momento, já estudamos as seguintes estruturas de decisão:
• Desvio Condicional Simples
se (condição) então
//instruções
senão
//instruções
fim_se
• Desvio Condicional Encadeado
se (condição) então
//instruções
senão
se (condição) então
//instruções
senão
//instruções
fim_se
fim_se
4. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Em algumas situações é necessário termos várias soluções ligadas a
repostas diferentes;
Δ O comando se...então nos permite implementar tais situações, porém de
forma limitada e, em alguns casos, ineficiente:
• Imagine implementar 100 estruturas do tipo se para 100 condições
diferentes!
• Tal comando obriga o programador a escrever várias linhas de código;
Δ A tomada de decisão por seleção é uma alternativa mais rápida ao uso de
tomadas de decisão sequenciais ou encadeadas;
Δ Essa estrutura lógica de condição é útil e pode ser usada em situações em
que se possui um grande número de verificações lógicas a serem realizadas,
tanto de forma sequencial quanto de forma encadeada;
5. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Diagrama:
• após a verificação de cada condição da estrutura
de decisão por seleção ocorre o desvio do fluxo
para a ação prevista;
• Após a ação prevista, o fluxo do programa é
desviado para o único conector existente em
toda a estrutura;
• Se a primeira condição (CONDIÇÃO 1) do
primeiro simbolo de decisão possuir resultado
lógico verdadeiro, são executadas as instruções
indicadas pela linha sinalizada com a letra S.
• Após a efetivação das instruções o fluxo do
programa é desviado para o conector que dá
continuidade à execução.
• O mesmo raciocínio aplicado á primeira condição
se aplica às demais condições previstas no bloco;
• Se uma das condições gerar resultado lógico
falso, o fluxo do programa é desviado pela linha
sinalizada pelo rótulo N para a próxima condição
de avaliação;
• Se nenhuma das condições for satisfeita,
executa-se a Ação para nenhuma condição
Satisfeita.
6. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Estrutura Padrão caso/seja...faça;
caso <variável>
seja <opção 1> faça
//instruções para condição 1 verdadeira
seja <opção 2> faça
//instruções para condição 2 verdadeira
seja <opção 3> faça
//instruções para condição 3 verdadeira
senao
//instruções para nenhuma condição verdadeira
fim_caso
7. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ As palavras reservadas caso e fim_caso delimitam a região que fará a
seleção múltipla;
Δ O comando caso seleciona uma expressão ou variável para ser comparada
com os valores especificados nos comandos seja;
Δ O comando caso tem o funcionamento similar ao comando se, visto
anteriormente;
Δ A diferença principal fica pela maior facilidade em montar soluções de
múltiplas escolhas dentro do algoritmo;
8. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Exemplo:
programa exemplo_caso
var sexo: caractere
inicio
escreval(“Digite seu sexo (M ou F)”)
leia(sexo)
caso(sexo)
seja (“M”)
escreval(“O usuário é Homem”)
seja (“F”)
escreval(“O usuário é Mulher”)
senao
escreval(“caractere inválido”)
fim_caso
fim
9. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Exemplo 2:
programa menor_idade
var idade: inteiro
inicio
escreval(“Digite sua idade:”)
leia (idade)
caso(idade)
seja 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
escreval(“Menor de idade”)
senao
escreval(“Maior de idade”)
fim_caso
fim
10. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo – Resolução de problemas
Δ Desenvolver um programa de computador que leia um valor numérico inteiro entre os valores 1 e 12 e
apresente por extenso o nome do mês correspondente ao valor entrado. Caso sejam fornecidos valores
menores que 1 e maiores que 12, o programa deve apresentar a mensagem "Valor inválido“;
Δ Solução
1. Efetuar a leitura de um valor numérico
inteiro (variável MÊS).
2. Se a variável MÊS for igual a 1, apresentar a
mensagem" Janeiro".
3. Se a variável MÊS for igual a 2, apresentar a
mensagem "Fevereiro".
4. Se a variável MÊS for igual a 3, apresentar a
mensagem "Março".
5. Se a variável MÊS for igual a 4, apresentar a
mensagem "Abril".
6. Se a variável MÊS for igual a 5, apresentar a
mensagem "Maio".
7. Se a variável MÊS for igual a 6, apresentar a
mensagem" Junho”.
8. Se a variável MÊS for igual a 7, apresentar a
mensagem "Julho",
9. Se a variável MÊS for igual a 8, apresentar a
mensagem "Agosto",
10. Se a variável MÊS for igual a 9, apresentar a
mensagem "Setembro".
11. Se a variável MÊS for iguat a 10, apresentar a
mensagem "Outubro",
12. Se a variável MÊS for igual a 11, apresentar a
mensagem “Novembro".
13. Se a variável MÊS for igual a 12, apresentar a
mensagem “Dezembro".
14. Se a variável MÊS for menor que 1 ou maior que 12,
apresentar a mensagem "Valor inválido".
11. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo – Resolução de problemas
Δ Desenvolver um programa de computador que leia um valor numérico inteiro entre os valores 1 e 12 e
apresente por extenso o nome do mês correspondente ao valor entrado. Caso sejam fornecidos valores
menores que 1 e maiores que 12, o programa deve apresentar a mensagem "Valor inválido“;
Δ Solução
programa mes
var
mes: inteiro
inicio
escreval ("Digite o No do Mês")
leia(mes)
caso(mes)
seja (1) faca
escreval ("Janeiro")
seja (2) faca
escreval ("Fevereiro")
seja (3) faca
escreval ("Março")
seja (4) faca
escreval ("Abril")
seja (5) faca
escreval ("Maio")
seja (6) faca
escreval ("Junho")
seja (7) faca
escreval ("Julho")
seja (8) faca
escreval ("Agosto")
seja (9) faca
escreval ("Setembro")
seja (10) faca
escreval ("Outubro")
seja (11) faca
escreval ("Novembro")
seja (12) faca
escreval ("Dezembro")
senao
escreval ("Algarismo inválido")
fim_caso
Fim
12. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Comando de seleção múltipla
Δ Limitações:
• A instrução caso/seja ...faça/senão/fim_caso é útil apenas nos casos em que
há tomadas de decisão sequenciais ou encadeadas utilizando as ações
previstas com o operador relacional "igual a“;
• Outro detalhe importante é que o comando senão na estrutura de tomada de
decisão por seleção é opcional.
• Ele pode ser omitido quando não se desejar deixar definida uma ação quando
as condições gerais não forem satisfeitas;
13. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Para vocês
1. Faça um algoritmo que lê um número de 1 a 7 e informa o dia da semana
correspondente, sendo domingo o número 1. Caso o número não
corresponder a um dia da semana, é exibida uma mensagem de erro;
2. Faça um algoritmo (utilizando o comando caso) que, baseado no código
digitado pelo usuário, retorne o nome e valor do produto.
• Sabendo que
o001 – Parafuso (R$ 0,15)
o002 – Porca (R$ 0,05)
o003 – Prego (R$ 0,10)
o004 – Martelo (R$ 40,00)
o005 – Tomada (R$ 3,00)
14. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Para Vocês
3. Faça um algoritmo que receba dois números, um operador matemático (+,-,*,/)
e efetue o cálculo matemático baseado no operador digitado. O resultado
deverá ser exibido em seguida. Utilize o comando caso.
• Exemplo:
Caso “+”
resultado <- valor1 + valor2
Caso “-”
...
4. Elabore um algoritmo que, dada a idade válida de um nadador, classifique-o
em uma das categorias abaixo. Ao final, exiba a idade digitada, a categoria e
verifique se o usuário quer digitar outra idade:
• Não aceito: 0 a 4 anos
• Infantil: 5 a 10 anos
• Juvenil: 11 a 17 anos
• Sênior: 18 a 20 anos
15. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Vetores (arrays)
Δ Até agora as variáveis comuns serviram bem aos nossos propósitos, mas há
situações em que precisamos armazenar muitos dados de um mesmo tipo
em nossos programas.
Δ Exemplo:
• "Tenho uma equipe de vendas com 10 integrantes e gostaria de poder digitar
o nome do vendedor e o valor das vendas mensais do mesmo. Ao final, o
programa deve apresentar o nome e o valor calculado da comissão de cada
vendedor, que é de 10%.".
Δ Como resolver esse problema?
16. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Vetores (arrays)
Δ Este é um caso típico de uso de vetores (arrays), pois somente com
variáveis, precisaríamos ter uma variável para cada vendedor e uma
variável para cada valor de venda:
var
vendedor_1, vendedor_2, vendedor_3, ..., vendedor_n: caractere
vendas_1, vendas_2, vendas_3, ..., vendas_n: Real
inicio
escreva (“Digite o nome do primeiro vendedor”)
leia (vendedor_1)
escreva (“Digite o valor das vendas desse vendedor.”)
leia (vendas_1)
escreva (“Digite o nome do segundo vendedor”)
leia (“vendedor_2”)
escreva (“Digite o valor das vendas desse vendedor.”)
leia (vendas_2)
. . .
escreva (“Vendedor “, vendedor_1, “ comissão: “ , comissao_1)
escreva (“Vendedor “, vendedor_1, “ comissão: “ , comissao_1)
. . .
fim
17. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Vetores (arrays)
Δ Veja que se tivéssemos 20 vendedores teríamos que ter 40 variáveis.
Δ Além do fato que teríamos que ficar repetindo as solicitações dos nomes e valores
durante muitas linhas de código.
Δ Vejamos um desenho simbolizando um vetor:
Δ Na figura acima vemos uma representação de um vetor armazenado na memória do
computador. Esse vetor tem 4 posições, que são chamadas índices. Podemos notar que
os índices de vetores começam em 1 e vão aumentando progressivamente de acordo
com o tamanho do mesmo.
Δ O índice é como se fosse uma "etiqueta" através da qual podemos acessar uma
determinada posição do vetor. Por exemplo, vemos que no índice 1 temos o valor 10, no
índice 2, no índice o valor 32 e assim por diante.
Δ Mas o vetor inteiro, com todos os dados pode ser atribuído a somente uma variável,
dando um nome para o mesmo.
Memória
Índice = 1
Valor = 10
Índice = 2
Valor = 32
Índice = 3
Valor = 8
Índice = 4
Valor = 17
18. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Vetores (arrays)
Δ Se precisarmos acessar algum valor do vetor, utilizamos o seu índice dentro
de colchetes []. Digamos que tivéssemos definido o nome vet_num e se
quiséssemos mostrar o conteúdo do vetor na segunda posição, poderíamos
declarar:
escreval (vet_num[2])
Δ O resultado apresentado seria 32, que é o conteúdo do vetor no índice 2.
Δ Para atribuir um valor a uma determinada posição do vetor, também
utilizamos o índice:
vet_num[4]<-15
Vet_num[1]<-50
Δ O vetor agora teria os valores:
Memória
Índice = 1
Valor = 50
Índice = 2
Valor = 32
Índice = 3
Valor = 8
Índice = 4
Valor = 15
19. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Formalizando Vetores (array)
Δ Um vetor existirá obedecendo sempre ao mesmo tipo de dado, e por esta
razão é chamado de estrutura de dados homogênea;
Δ Um vetor também é chamado de matriz unidimensional;
Δ Caracteriza-se por ser definida uma única variável dimensionada com um
determinado tamanho;
Δ A dimensão de um vetor é constituída por constantes inteiras e positivas;
Δ Exemplo de declaração de um vetor de 8 posições:
• vet_num: conjunto[1..8] de inteiro
Δ Deve-se considerar que à manipulação dos elementos de um vetor ocorrera
de forma individualizada, pois não é possível efetuar a manipulação de
todos os elementos do conjunto ao mesmo tempo;
20. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo
Δ Utilizar matrizes unidimensionais (vetores) em uma determinada situação:
• Calcular e apresentar a média geral de uma turma de 8 alunos. A média a ser
obtida deve ser a média geral das médias de cada aluno obtida durante o ano
letivo.
Δ Solução:
• será necessário somar todas as médias e dividi-las por 8. A tabela seguinte
apresenta o número de alunos, suas notas bimestrais e respectivas médias
anuais. E da média de cada aluno que será efetuado o cálculo da média da
turma.
22. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo
Δ Algoritmo:
programa MEDIA_TURMA
var
MD : conjunto [ 1 . . 8 ] de real
SOMA, MÉDIA : real
I : inteiro
início
SOMA <- 0
I<-1
para I de 1 até 8 passo 1 faca
leia (MD[I])
SOMA <- SOMA + MD [ I]
fim_para
MEDIA <- SOMA / 8
escreval (MEDIA)
fim
23. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo 2
Δ Vamos agora ler os dados de um vetor:
programa MEDIA_TURMA
var
MD : conjunto [1 . . 8] de real
SOMA , MÉDIA : real
i : inteiro
inicio
SOMA <- O
i<-1
para i de 1 até 8 passo 1 faça
leia (MD[i])
SOMA <-SOMA + MD [i]
fim_para
MÉDIA <- SOMA / 8
i<-1
para i de 1 até 8 passo 1 faça
escreva MD [i]
fim_para
escreva MÉDIA
fim
24. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo
Δ Desenvolver um programa que leia cinco elementos numéricos inteiros de
uma matriz A do tipo vetor. No final, apresentar o total da soma de todos
os elementos da matriz A que sejam pares.
Δ Solução:
Δ CUIDADO: Não confundir índice com elemento da matriz!
Δ Algoritmo:
1. Iniciar o contador de índice, variável i como 1, estendendo essa contagem
até 5.
2. Ler os cinco valores, um a um.
3. Verificar se o elemento é par. Se sim, efetuar a soma dos elementos.
4. Apresentar o tolal de todos os elementos pares da matriz.
25. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Exemplo
programa ELEMENTO_PAR
var
A: conjunto [ 1 . . 5] de inteiro
R, i, SOMA: inteiro
início
SOMA <- 0
i<=1
para i de 1 até 5 passo 1 faça
leia (A[i])
fim_para
i<=1
para i de 1 ate 5 passo 1 faça
R <- (A[i] % 2 )
se (R=0) então
SOMA <- SOMA + A [I]
fim_se
fim_para
escreval (SOMA)
fim
26. D
E
C
I
S
Ã
O
P
O
R
S
E
L
E
Ç
Ã
O
E
V
E
T
O
R
E
S
ALGORITMOS - 02/2015 – ÊNIO FILHO
Para Vocês
Δ Leia 10 elementos inseridos pelo usuário e apresente-os, usando vetores;
Δ Ler 8 elementos em um vetor A. Construir um vetor B com os elementos da
matriz A multiplicados por 3.
• O elemento B[1] deverá ser implicado pelo elemento A[1 ]*3;
• O elemento B[2] implicado pelo elemento A[2]*3 e assim por diante, até 8.
• Apresentar o vetor B.
Δ Ler 15 elementos de uma matriz A do tipo vetor. Construir uma matriz B de
mesmo tipo, observando a seguinte lei de formação: "Todo elemento de B
deverá ser o quadrado do elemento de A correspondente". Apresentar as
matrizes A e B.
Δ Criar um programa que efetue a leitura dos nomes de 20 pessoas e em
seguida apresentá-los na mesma ordem em que foram informados.
27. DÚVIDAS?
Contatos:
E-mail: enio.filho@alfa.br
Skype: eniopvf
Twitter: eniopvf
Bibliografia:
• MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica para
desenvolvimento de programação de computadores. 18ª. ed. São Paulo: Érica, 2006. 236 p. ISBN
857194718;
• FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção
de algoritmos e estruturas de dados. 3ª. ed. São Paulo (SP): Pearson Prentice Hall, 2005. 195 p. ISBN
9788576050247;