Prévia do material em texto
0
Construção de Algorítmos
1
Autor(a): Simone de Abreu
Curso Superior de Tecnologia em Análise e Desenvolvimento
de Sistemas
Coordenador: Emerson dos Santos Paduan
São Paulo - 2016
2
Sumário
Desvio condicional simples, composto e encadeado 3
Introdução 3
Desvio condicional simples 4
Desvio condicional composto 7
Desvio Condicional Encadeado 10
Como Criar Condições? 13
Bibliografia básica 16
Bibliografia complementar 16
3
Desvio condicional simples, composto e enca-
deado
Introdução
O conteúdo apresentado nesta unidade tem como objetivo principal apontar os
conceitos que serão abordados, direcionando-o para a consulta do material
completo a ser estudado, por meio de acessos às Bibliotecas Virtuais disponí-
veis na página da Universidade Anhembi Morumbi.
Cada tópico aqui abordado deverá ser estudado conforme as indicações desta-
cadas nos links.
Siga os passos abaixo para acessar a Biblioteca da Universidade:
Entre na página da Biblioteca da Universidade;
Clique no ícone da Biblioteca Virtual 3.0/Ebrary/VTC, conforme figura 1;
Faça o login, se necessário.
Figura 1- Página da Biblioteca da Universidade
4
Desvio condicional simples
Os algoritmos vistos até o momento com entrada, processamento e saída eram
puramente sequenciais. Todas as instruções eram executadas em uma ordem
bem definida, do início ao fim.
Um desvio condicional é utilizado quando existe a necessidade de se verificar
condições para a realização de uma instrução ou de uma sequência de instru-
ções (PUGA & RISSETTI, 2009).
A seguir, um exemplo de desvio condicional:
Um desvio condicional simples é utilizado para verificar se uma dada condição
é atendida. Se a condição for atendida, um conjunto de instruções deverá ser
executado (PUGA & RISSETTI, 2009). Caso contrário, continua o fluxo de execu-
ção do algoritmo.
Dessa forma, a cada execução do algoritmo tem-se um conjunto de instruções
que podem ou não ser executadas, dependendo exclusivamente de uma con-
dição ser satisfeita ou não. Assim, o fluxo de execução do algoritmo deixa de ser
linear e passa a sofrer um desvio de acordo com o resultado da condição.
Uma condição pode ser uma expressão lógica ou relacional. Portanto, ao se
avaliar uma condição, tem-se como resposta um valor booleano true ou false. Se
a condição resultar em true, o bloco de instruções será executado – fazendo,
assim, o desvio do fluxo. Se a condição resultar em false, o bloco de instrução
será pulado e o fluxo de execução continuará.
Suponha que uma pessoa esteja jogando um game de computador (PUGA
& RISSETTI, 2009):
1. Para que o jogador passe de uma fase para a fase seguinte, é
necessário que se verifique se ele atingiu a pontuação exigida. As-
sim, existe uma condição para a realização de uma sequência de
instruções para liberar o acesso à próxima fase do jogo.
2. Ao final do jogo, uma pergunta é feita: “Deseja continuar?” O jo-
gador poderá escolher entre as respostas sim ou não.
5
A Figura 2 representa um desvio condicional simples utilizando um fluxograma
para ilustrar de forma bem clara um desvio.
Figura 2 – Fluxograma de um desvio condicional simples
Ao analisar a Figura 2, o bloco de instruções ({ }) somente será executado se o
resultado da condição resultar em true. Caso contrário, o bloco será pulado e o
fluxo de execução continuará normalmente.
O comando que representa um desvio condicional simples é o if. A Figura 3
apresenta a sintaxe desse comando.
Bibliografia a ser acessada
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/57
(Capítulo 5 do livro Lógica de programação e estruturas de dados com
aplicações em Java, de Puga e Rissetti).
Observe, neste capítulo, o tópico 5.4 – Estruturas de Seleção Simples.
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/57
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/57
6
Figura 3 – Sintaxe do desvio condicional simples
O exemplo a seguir (Figura 4) representa um desvio de fluxo que somente ocor-
rerá se o jogador de um game atingir 1000 pontos ou mais. Ao atingir essa pon-
tuação, o jogador passa para a próxima fase. Caso contrário, continua o fluxo
de execução.
Figura 4 – Exemplo de um desvio condicional simples
A implementação em Java do exemplo do game é representada pela classe
Game (Figura 5). Após informar a pontuação atingida, é tomada uma decisão
para avançar ou não de fase. O avanço de fase somente acontecerá se a pon-
tuação for maior ou igual a mil pontos.
7
Figura 5 – Exemplo comando if
Desvio condicional composto
O desvio condicional composto prevê dois conjuntos de instruções para serem
realizados de acordo com a avaliação de uma condição. Um conjunto de instru-
ções que será executado quando a condição resultar em verdadeiro e um con-
junto de instruções a ser executado quando a condição resultar em falso (PUGA
& RISSETTI, 2009). Os algoritmos agora preveem dois caminhos possíveis a se-
rem seguidos.
A Figura 6, a seguir, representa um desvio condicional composto utilizando um
fluxograma.
8
Figura 6– Fluxograma de um desvio condicional composto
Ao analisar a Figura 6, se o resultado da condição for verdadeiro, um conjunto
de instruções será executado e continuará o fluxo de execução do algoritmo.
Caso contrário, outro bloco de instruções será executado e continuará o fluxo
de execução do algoritmo.
Para representar o desvio condicional composto em um algoritmo, utiliza-se o
comando if/else. A sintaxe desse comando é representada na Figura 7.
Bibliografia a ser acessada
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/57
(Capítulo 5 do livro Lógica de programação e estruturas de dados
com aplicações em Java, de Puga e Rissetti).
Observe, neste capítulo, o tópico 5.5 – Estruturas de Seleção Com-
posta.
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/57
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/57
9
Figura 7 – Sintaxe do desvio condicional composto
O fluxograma a seguir (Figura 8) representa um desvio condicional composto
para indicar se um número inteiro é par ou ímpar. Para determinar isso, é ne-
cessário saber se o número é divisível por 2; caso seja, então ele é par; caso
contrário, é ímpar.
Figura 8 – Fluxograma representando um desvio condicional composto
A classe ParImpar (Figura 9) apresenta a implementação do algoritmo para de-
terminar se um número é par ou ímpar. Agora existem dois fluxos distintos que
serão executados de acordo com o resultado da condição. Um fluxo para o
10
bloco do if e outro fluxo para o bloco do else. Apenas um fluxo é acionado a cada
execução da classe ParImpar:
Figura 9 – Exemplo comando if/else
É importante ressaltar que a cláusula else é sempre a negação da condição ve-
rificada no comando if. Portanto, não existe condição para a cláusula else.
Desvio Condicional Encadeado
Um desvio condicional encadeado é uma sequência de testes de seleção, os
quais serão executados ou não de acordo com o resultado das condições e com
o encadeamento dos testes (PUGA & RISSETTI, 2009).
O desvio condicional encadeado trabalha com um conjunto de decisões aninha-
das, em que cada decisão mais interna depende do resultado das decisões mais
externas para ser executada. Ele é utilizado quando é necessário testar várias
condições que sejam dependentes.
Basicamente, tem-se um ou mais comandos if dentro de outro comando if, ou
dentro de uma cláusula else. A Figura 10 apresenta um exemplo de fluxograma
para desvio condicional encadeado.
11
Figura 10 – Fluxograma de um desvio condicional encadeado
Ao analisar a Figura 10, é possível perceber que a condição 2 é dependentedo
resultado da condição 1. Se a condição 1 resultar em false, a condição 2 nunca
será executada. Portanto, a condição 2 somente será executada se a condição
1 resultar em true. O encadeamento também poderia acontecer para um resul-
tado false da condição 1.
Para exemplificar o uso do desvio condicional encadeado, será analisado o se-
guinte problema:
Bibliografia a ser acessada
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/61 (Capítulo 5 do livro Lógica de programa-
ção e estruturas de dados com aplicações em Java, de Puga e Rissetti).
Observe, neste capítulo, o tópico 5.6 – Estruturas de Seleção Encadea-
das.
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/59 (Capítulo 4 do livro Fundamentos da
programação de computadores, de Ascencio e Campus).
Observe, neste capítulo, o tópico 4.4 – Estrutura condicional em Java.
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/61
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/61
http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/59
http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/59
12
Para ser aprovado em uma disciplina, um aluno precisa ter média maior ou
igual a 6 e, no mínimo, 75% de frequência na disciplina. As possibilidades e
as mensagens para ilustrar a situação de um aluno dadas a sua média e a
sua frequência são:
Aluno APROVADO!
Aluno REPROVADO por falta!
Aluno REPROVADO por nota!
Na classe SituacaoAluno (Figura 11), tem-se um desvio condicional encadeado.
A decisão (frequência >= 75) somente será avaliada se a decisão anterior (media
>= 6 ) resultar em true.
Para verificar se o aluno foi aprovado ou não, primeiro se verifica a média atin-
gida. Se a média for menor que seis pontos, o fluxo vai para a cláusula else e
apresenta uma mensagem de reprovação. Mas, se a média for maior ou igual a
seis pontos, tem-se outra decisão, que é verificar a frequência do aluno nas au-
las. Caso a frequência seja maior ou igual a 75%, o aluno está aprovado; caso
contrário, o aluno está reprovado por falta.
13
Figura 11 – Exemplo comando if/else encadeado
Como Criar Condições?
Para criar uma condição, é necessário identificar quais decisões serão tomadas
em um determinando problema. Basicamente, tem-se de identificar quais per-
guntas devem ser respondidas em um problema.
Uma condição é uma expressão lógica/relacional que utiliza os operadores re-
lacionais (>=, ==, <, != etc) e os operadores lógicos (&&, || e !).
E como saber qual operador lógico utilizar?
Para determinar se um número pertence a um intervalo entre 0 e 30, deve-se
utilizar o operador lógico && (E), pois o número deve ser maior ou igual a 0 e
também deve ser menor ou igual a 30. Se ambas as expressões resultarem true,
então o número pertence ao intervalo (Figura 12).
14
Figura 12 – Exemplo de condição utilizando o operador &&
Já para determinar se um número está fora do intervalo entre 0 e 30, utiliza-se
o operador lógico || (OU), pois o número deve ser menor que 0 ou maior que
30. Se apenas uma das expressões resultar true, então a condição é satisfeita,
pois um número não pode ser menor que 0 e maior que 30 ao mesmo tempo!
(Figura 13)
Figura 13 – Exemplo de condição utilizando o operador ||
Para formar uma condição é possível ter vários operadores relacionais e lógicos
na mesma expressão. Por exemplo, pode-se utilizar o operador && e || em
uma mesma expressão.
Além do comando if/else para representar decisões em um programa, é possível
utilizar o comando switch..case. Para saber mais sobre esse comando, acesse a
bibliografia a seguir.
15
Bibliografia a ser acessada
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/65
(Capítulo 5 do livro Lógica de programação e estruturas de dados com
aplicações em Java, de Puga e Rissetti).
Observe, neste capítulo, o tópico 5.7 – Estruturas de Seleção de Múltipla
Escolha.
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/59
(Capítulo 4 do livro Fundamentos da programação de computadores,
de Ascencio e Campus).
Observe, neste capítulo, o tópico 4.4.3 – Estrutura case.
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/65
http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/65
http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/59
http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/59
16
Bibliografia básica
ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos de Programação de Compu-
tadores. 2. ed. São Paulo: Pearson Prentice Hall, 2007.
PUGA, S; RISSETTI, G. Lógica de programação e estruturas de dados com aplica-
ções em Java. 2. ed. São Paulo: Pearson Prentice Hall, 2009.
Bibliografia complementar
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção
de algoritmos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.