Baixe o app para aproveitar ainda mais
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.
Compartilhar