Prévia do material em texto
Inserir Título Aqui Inserir Título Aqui Programação de Computadores Estruturas de Decisão Responsável pelo Conteúdo: Prof. Me. Hugo Fernandes Revisão Textual: Prof.ª Esp. Kelciane da Rocha Campos Nesta unidade, trabalharemos os seguintes tópicos: • Estruturas de Decisão; • Blocos de Decisão. Fonte: Getty Im ages Objetivos • Utilizar estruturas de decisão para testar uma ou mais condições e de acordo com o re- sultado, Verdadeiro ou Falso, seguir um bloco de instruções; • Estudar os conceitos e a sintaxe de três tipos de estruturas de decisão, bem como exem- plos de suas aplicações. Caro Aluno(a)! Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o úl- timo momento o acesso ao estudo, o que implicará o não aprofundamento no material trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas. Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns dias e determinar como o seu “momento do estudo”. No material de cada Unidade, há videoaulas e leituras indicadas, assim como sugestões de materiais complementares, elementos didáticos que ampliarão sua interpretação e auxiliarão o pleno entendimento dos temas abordados. Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e aprendizagem. Bons Estudos! Estruturas de Decisão UNIDADE Estruturas de Decisão Contextualização Em muitos momentos, nosso aplicativo deve tomar decisões de acordo com as condi- ções pré-estabelecidas. As estruturas de decisão exigem que o programador especifique uma ou mais condições a serem avaliadas ou testadas pelo programa, juntamente com uma declaração ou instruções a serem executadas. No Scratch, como em qualquer outra linguagem de programação, as condições são testadas e retornam sempre um resultado do tipo Boolean (verdadeiro ou falso). Nesse contexto, iremos estudar os conceitos e a sintaxe de três tipos de estruturas de decisão, bem como exemplos de suas aplicações. 6 7 Estruturas de Decisão Em muitos momentos, nosso aplicativo deve tomar decisões de acordo com as con- dições pré-estabelecidas. As estruturas de decisão exigem que o programador especifi- que uma ou mais condições a serem avaliadas ou testadas pelo programa, juntamente com uma declaração ou instruções a serem executadas. Figura 1 O modelo acima representa um fluxograma em que temos uma estrutura de decisão, e de acordo com a resposta do teste da condição, falso ou verdadeiro, o programa executa um bloco de instruções e segue para a finalização do algoritmo. Fluxograma e pseudocódigo: https://goo.gl/i1WgUz No Scratch, como em qualquer outra linguagem de programação, as condições são testadas e retornam sempre um resultado do tipo Boolean (verdadeiro ou falso). A sin- taxe do comando sempre é: testar a condição e executar uma instrução. Figura 2 7 UNIDADE Estruturas de Decisão Aqui devemos nos atentar ao detalhe do “encaixe” do bloco em formato de hexá- gono. Isso significa que podemos encaixar, como condição, somente blocos com essa forma. Esses blocos são os operadores relacionais e operadores lógicos e alguns blocos da categoria Sensores. Operadores relacionais Operadores relacionais são utilizados para comparar valores entre dois termos. O resultado dessa comparação sempre irá retornar um valor booleano, ou seja, true ou false. No Scratch, temos os seguintes operadores: Tabela 1 OPERADORES RELACIONAIS Operador Nome Descrição Exemplo = Igualdade Verifica se os valores de dois operandos são iguais ou não; se a resposta for sim, a condição torna- se verdadeira (true). > Maior que Verifica se o valor do operando esquerdo é maior que o valor do operando à direita; se sim, a condição torna-se verdadeira (true). < Menor que Verifica se o valor do operando esquerdo é menor que o valor do operando à direita; se sim, a condição torna-se verdadeira (true). Operadores lógicos Um operador lógico é um operador que retorna um resultado booleano (true ou false), baseado no resultado booleano de uma ou duas outras expressões. O conceito de opera- dores lógicos é simples. Eles permitem que um programa tome uma decisão com base em múltiplas condições. Cada operando é considerado uma condição que pode ser avaliada de acordo com o valor (verdadeiro ou falso). Os operadores lógicos no Scratch são e, ou e não. Tabela 2 OPERADORES LÓGICOS Operador Descrição Exemplo e Retorna verdadeiro se ambas as expressões resultarem como verdadeiras. Todas as expressões são avaliadas antes que o operador e seja aplicado. 8 9 OPERADORES LÓGICOS Operador Descrição Exemplo ou Retorna verdadeiro se pelo menos uma das expressões resultar como verdadeira. Caso a primeira expressão retorne como verdadeira, o restante da expressão não é avaliado. não Retorna verdadeiro se a expressão à direita for avaliada como falsa. Retorna falso se a expressão à direita for verdadeira. Blocos de Decisão A linguagem Scratch fornece os seguintes tipos de declarações de tomada de decisão: Tabela 3 Bloco de comando (categoria controle) Nome do conceito em programação se... então (if... then) se... então... senão (if... then... else) se... então... senão... se (if... then... else... if) Estrutura se... então A estrutura se... então é utilizada para testar uma condição e caso retorne verdadeiro, executa um bloco de instruções. Toda declaração se... então segue uma sintaxe padrão: teste uma condição e, se for verdade, execute uma ação. 9 UNIDADE Estruturas de Decisão Se (condição) então executa bloco de instruções Desvio Condicional Simples: https://goo.gl/8mT5hg Vamos a um exemplo. Um programa deve obter as notas A e B de um aluno, somar as notas e, em seguida, verificar se a nota do aluno é maior que seis (6); se sim, o progra- ma exibe na tela a mensagem “Aprovado”. A seguir, temos um fluxograma descrevendo esse algoritmo. Figura 3 Qual é a condição para que o aluno possa ser aprovado? A condição é que a soma das notas A e B deve ser maior que seis (6); caso o teste dessa condição retorne verdadeiro, o programa executa as instruções previstas para esta situação. 10 11 Nesse cenário, vejamos o seguinte exemplo no Scratch: Figura 4 Explicando o código • Linha 1 – bloco “quando for clicado”. Esse bloco indica que o programa será exe- cutado quando o usuário clicar no ícone da bandeira verde. • Linha 2 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a primeira nota. • Linha 3 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_A”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_A”. • Linha 4 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a segunda nota. • Linha 5 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_B”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_B”. • Linha 6 – nessa linha, utiliza-se o bloco “mude para” para alterar o valor contido na variável “soma”. Para isso, utilizamos o bloco “+” da categoria Operadores. • Linha 7 – bloco “se... então”. Esse bloco testa a condição proposta pelo operador relacional “>” (maior). Ou seja, caso o teste resulte em verdadeiro (a soma for maior que 6), será executada a linha 8. 11 UNIDADE Estruturas de Decisão • Linha 8 – bloco “diga por”. Esse bloco é responsável por exibir mensagens em texto na área do ator. Nesse caso específico, essa linha será executada somentese a condição testada pelo bloco “se... então” for verdadeira. Estrutura se... então... senão Na estrutura se... então... senão, além de ser testada uma condição e executado um bloco de instruções no caso de retorno do teste ser verdadeiro, também são descritas as instruções para quando o retorno for falso. Utilizamos essa estrutura quando o programa deve tomar duas decisões. Toda declaração se... então... senão segue uma sintaxe padrão: teste uma condição e, se for verdade, execute o bloco de instrução 1; caso contrário, o bloco de instrução 2. Se (condição) então executa bloco de instruções 1 senão executa bloco de instruções 2 Estrutura de decisão SE-ENTÃO- -SENÃO: https://goo.gl/mWJnqh Continuemos com o exemplo anterior, em que nosso programa recebe duas notas e em seguida efetua a soma entre as duas. Ire- mos complementar com mais uma decisão. Caso a condição retorne falso, o programa irá imprimir na tela o texto “Reprovado”. Na Figura 5 temos um fluxograma descre- vendo esse algoritmo. Do mesmo modo que o algoritmo ante- rior, a condição para o aluno ser aprovado é possuir uma nota maior que seis (6); con- tudo, nesse novo algoritmo, temos previstas instruções em caso de o retorno ser falso, ou seja, caso o aluno possua nota menor ou igual a seis (6). Vejamos a implementação desse algorit- mo no Scratch: Figura 5 12 13 Figura 6 Explicando o código • Linha 1 – bloco “quando for clicado”. Esse bloco indica que o programa será exe- cutado quando o usuário clicar no ícone da bandeira verde. • Linha 2 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a primeira nota. • Linha 3 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_A”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_A”. • Linha 4 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a segunda nota. • Linha 5 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_B”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_B”. • Linha 6 – nessa linha, utiliza-se o bloco “mude para” para alterar o valor contido na variável “soma”. Para isso, utilizamos o bloco “+” da categoria Operadores. • Linha 7 – bloco “se... então... senão”. Esse bloco testa a condição proposta pelo operador relacional “>” (maior). Ou seja, caso o teste resulte em verdadeiro (a soma for maior que 6), será executada a linha 8. Por outro lado, se o teste resultar falso, a linha 9 será executada. • Linha 8 – bloco “diga por”. Esse bloco é responsável por exibir mensagens em texto na área do ator. Essa linha será executada somente se a condição testada pelo bloco “se... então... senão” for verdadeira. • Linha 9 – bloco “diga por”. Essa linha será executada somente se a condição testa- da pelo bloco “se... então... senão” for falsa. 13 UNIDADE Estruturas de Decisão Estrutura se... então... senão... se Utilizamos a estrutura se... então... senão... se quando é necessário avaliar mais do que dois resultados e condições possíveis. A sintaxe para essa estrutura é: Se (condição) então executa bloco de instruções 1 senão Se (condição2) então executa bloco de instruções 2 EDesvio Condicional Aninhado (SE...ENTÃO...SENÃO...SE): https://goo.gl/3hQmAb Vamos dar continuidade ao exemplo do programa que recebe duas notas e em segui- da efetua a soma das notas e exibe na tela “Aprovado” ou “Reprovado”. Iremos com- plementar com mais uma condição. Caso a nota seja inferior a seis (6), porém superior a quatro (4), o programa irá imprimir na tela o texto “Avaliação Final”. A seguir temos um fluxograma descrevendo esse algoritmo. Figura 6 14 15 A condição para o aluno ser aprovado é possuir uma nota maior que seis (6); porém abaixo dessa nota, temos uma nova condição. O aluno pode efetuar a avaliação final se sua nota for maior que quatro (4). Se sua nota for menor ou igual a quatro (4), será reprovado. No Scratch, essa estrutura se dá por meio do encaixe entre blocos “se... então” e/ou “se... então...senão”. Vejamos a implementação desse algoritmo no Scratch: Figura 7 Explicando o código • Linha 1 – bloco “quando for clicado”. Esse bloco indica que o programa será exe- cutado quando o usuário clicar no ícone da bandeira verde. • Linha 2 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a primeira nota. • Linha 3 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_A”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_A”. • Linha 4 – bloco “pergunte e espere”. Esse bloco é responsável pela funcionalidade de entrada de dados. Nesse caso, essa instrução solicita ao usuário que digite a segunda nota. • Linha 5 – bloco “mude para”. Esse bloco é responsável por alterar o valor contido na variável “nota_B”. O resultado da resposta solicitada na linha 3 será inserido na variável “nota_B”. • Linha 6 – nessa linha, utiliza-se o bloco “mude para” para alterar o valor contido na variável “soma”. Para isso, utilizamos o bloco “+” da categoria Operadores. 15 UNIDADE Estruturas de Decisão • Linha 7 – bloco “se... então... senão”. Esse bloco testa a condição proposta pelo operador relacional “>” (maior). Ou seja, caso o teste resulte em verdadeiro (a soma for maior que 6), será executada a linha 8. Por outro lado, se o teste resultar falso, o bloco se... então... senão na linha 9 será executado. • Linha 8 – bloco “diga por”. Essa linha será executada somente se a condição testa- da pelo bloco “se... então... senão” for verdadeira. • Linha 9 – bloco “se... então... senão”. Essa linha será executada somente se a con- dição da linha 7 retornar falso. Uma vez executado, esse bloco testa a condição: Soma “>” (maior) que “4”. Caso retorne verdadeiro, a linha 10 será executada; caso retorne falso, será executada a linha 11. • Linha 10 – bloco “diga por”. Essa linha será executada somente se a condição tes- tada pelo bloco “se... então... senão” da linha 9 for verdadeira. • Linha 11 – bloco “diga por”. Essa linha será executada somente se a condição tes- tada pelo bloco “se... então... senão” da linha 9 for falso. Considerações finais Concluímos nossa unidade de estudo sobre estruturas de decisão. Ao longo desta unidade, exploramos as principais estruturas de decisão juntamente com o uso de operadores lógicos e relacionais. Para avançar nos estudos de programação de computadores, deve-se ter em mente que o domínio na criação de algoritmos é fundamental. Dito isso, deixo como sugestão a leitura do livro Algoritmos: lógica para desenvol- vimento de programação de computadores, dos autores José Augusto N. G. Manza- no e Jayr F. de Oliveira. Até breve! 16 17 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Livros Algoritmos: Lógica para desenvolvimento de programação de computadores MANZANO, José Augusto N. G.; OLIVEIRA, Jayr F. de. Algoritmos: lógica para desenvol- vimento de programação de computadores. 28ª edição. Cap. 4 - Programação com decisão. Vídeos Lógica de programação com Scratch - Parte 3 - Condicionais e mais operadores Tutorial sobre Scratch focando em condicionais. Vamos entender o funcionamento dos dois tipos de condicionais se... então e se... então... senão. https://youtu.be/YiPCIvItJnc Leitura Estruturas de condição encadeadas https://goo.gl/oRsLq6 Algoritmo - estruturas condicionais https://goo.gl/ycyXNt 17 UNIDADE Estruturas de Decisão Referências MARJI, Majed. Aprenda a programar com Scratch: uma introdução visual à pro- gramação com jogos, arte, ciência e matemática. São Paulo: Novatec Editora, 2014. SCRATCH.Scratch. 2019. Disponível em: <https://Scratch.mit.edu/about/>, Acesso em: 15 de jan. de 2019. 18