Baixe o app para aproveitar ainda mais
Prévia do material em texto
ALGORITMOS E PROGRAMAÇÃO I Mário Roberto Klein Junior SUMÁRIO Esta é uma obra coletiva organizada por iniciativa e direção do CENTRO SU- PERIOR DE TECNOLOGIA TECBRASIL LTDA – Faculdades Ftec que, na for- ma do art. 5º, VIII, h, da Lei nº 9.610/98, a publica sob sua marca e detém os direitos de exploração comercial e todos os demais previstos em contrato. É proibida a reprodução parcial ou integral sem autorização expressa e escrita. CENTRO UNIVERSITÁRIO UNIFTEC Rua Gustavo Ramos Sehbe n.º 107. Caxias do Sul/ RS REITOR Claudino José Meneguzzi Júnior PRÓ-REITORA ACADÊMICA Débora Frizzo PRÓ-REITOR ADMINISTRATIVO Altair Ruzzarin DIRETOR DE ENSINO A DISTÂNCIA (EAD) Rafael Giovanella Desenvolvido pela equipe de Criações para o Ensino a Distância (CREAD) Coordenadora e Designer Instrucional Sabrina Maciel Diagramação, Ilustração e Alteração de Imagem Igor Zattera, Thaís Munhoz Revisora Luana dos Reis ALGORITMO 5 FRITANDO UM OVO 7 CONSTRUINDO UM ALGORITMO 9 RESUMINDO O CAPÍTULO 18 VARIÁVEIS: TIPOS DE DADOS E OPERADORES 19 TIPOS DE DADOS 20 OPERADORES 23 TABELA VERDADE 25 PRECEDÊNCIA DE OPERADORES 26 COLOCANDO EM PRÁTICA 27 RESUMINDO O CAPÍTULO 30 VISUALG 31 DOWNLOAD 32 INTERFACE DO VISUALG 32 UTILIZANDO O VISUALG PARA CRIAR E EXECUTAR ALGORITMOS 35 EXECUTANDO O ALGORITMO 36 EXECUTANDO O ALGORITMO PASSO A PASSO 37 ESTRUTURAS CONDICIONAIS 39 ESTRUTURA SE-ENTAO 40 ESTRUTURA SE-ENTAO-SENAO 41 EXPRESSÕES CONDICIONAIS COMPOSTAS 43 ESTRUTURA DE SELEÇÃO ANINHADA 44 ESTRUTURA DE SELEÇÃO MÚLTIPLA ESCOLHA 47 RESUMINDO O CAPÍTULO 52 ESTRUTURAS DE REPETIÇÃO 53 ESTRUTURA DE REPETIÇÃO DE NÚMEROS DEFINIDOS 54 ESTRUTURAS DE REPETIÇÕES DE NÚMEROS INDEFINIDOS 60 RESUMINDO O CAPÍTULO 64 3ALGORITMOS E PROGRAMAÇÃO I APRESENTAÇÃO Prezado, aluno! Seja bem-vindo à disciplina de Algoritmo e programação I! Levando em conta que você está realizando um curso superior voltado a área de tecnologia, a minha pergunta é óbvia, mas não custa fazê-la. Quão importante o computador é na sua vida? Se você respondeu: “muito”, estamos pensando da mesma maneira. Ago- ra, o motivo pelo qual eu fiz essa pergunta? Porque ela me leva a uma próxima pergunta. Você já parou para pensar em como o seu computador funciona? Aqui, quando eu falo computador, não estou me referindo somente aos dispositivos que, comumente, aprendemos a chamar de computador. O nosso velho desktop ou o não tão novo notebook ou laptop. Hoje em dia, temos computadores nos nossos bolsos (smartphones), na nossa parede da sala (smart TV’s) ou até nos nossos pulsos (relógios). Entretanto, vamos voltar a pergunta. Você já parou para pensar em como esses dispositivos fazem o que dese- jamos que façam? Como que, quan- do pegamos nosso celular e abrimos o WhatsApp, podemos em poucos segundos enviar uma mensagem para alguém que está do outro lado do mundo? Então, vou lhe contar um segredo, são programas que realizam as seguintes funções; é por causa deles que conseguimos fazer o que desejamos com nossos computadores. Também é por causa deles que estamos aqui, para começar a aprender um pouco sobre como eles funcionam. Nossos computadores executam uma função simples e bem definida: PROCESSAR DADOS. Você deve estar se perguntando, mas que dados são esses e que tipo de processamento é esse? Vamos por partes, desde o momento em que ligamos o computador, a principal função dele é processar dados de maneira pela qual ele foi programado. Esses dados podem vir de diversas fon- tes, desde nosso mouse, teclado ou HD, até de fontes mais “distantes”, como a internet. Tudo para o computador se trata de dados, desde a tela que está sendo exibida no monitor, até quando o navega- dor da internet retorna alguma busca realizada. Vamos levar em conta esse exemplo da busca realizada no navegador. O navegador é um aplica- tivo ou programa (como você preferir). Esse aplicativo é responsável por pegar seus dados de entrada do teclado (quando você digita o que quer buscar), enviá-los através da internet para outro compu- tador, receber os dados retornados por este outro computador e mostrá-los na tela para você. Se você não conhece o Whatsapp, sugiro que abra o seu buscador preferido na internet e dê uma rápida lida e volte aqui para continuarmos. 4ALGORITMOS E PROGRAMAÇÃO I APRESENTAÇÃO Todo esse processo é realizado através de uma programação que foi realizada para que funcionasse da maneira que nós esperamos. Essa programação é o que aprenderemos daqui para frente (não so- mente nessa disciplina). Vamos começar a entender que tudo começa com a lógica necessária para darmos as instruções para que o computador realize o processamento dos dados. Depois, aprenderemos como estruturar essa ló- gica em uma linguagem específica que está mais perto da linguagem que o computador entende, e começaremos a criar nossos primeiros programas, utilizando uma linguagem de programação real, que é possível ser utilizada para criar diversos programas. No entanto, vamos começar com um passo de cada vez. E esse passo co- meça por entendermos o que é, como funciona e como se cria um Algoritmo. 5 ALGORITMO Do ponto de vista da informática, um algoritmo é o conjunto das regras e procedimentos lógicos, perfeitamente definidos, que levam à solução de um problema em um número finito de etapas. 6ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Suponha que você receba as seguintes instruções: 1. Vá até o supermercado. 2. Encontre o corredor dos cafés. 3. Busque pelo café mais barato. 4. Pegue 3 unidades. 5. Dirija-se ao caixa. 6. Pague em dinheiro. 7. Volte para casa. 8. Prepare um café quente e saboroso. Você é capaz de executar essas instruções perfeitamente? Se você consegue seguir essas instruções, saiba que é exatamente assim que um computa- dor trabalha, o tempo todo. Deixando um pouco de lado a sátira dessa lista de instruções, é importante en- tender que ela respeita uma sequência lógica (se mudarmos a ordem de alguma delas o resultado poderá não ser o mesmo) e tem um objetivo bem definido para a resolução do problema da falta de café em casa. O que muda dessa lista de instruções para um programa de computador que você está acostumado a utilizar, é que os programas possuem uma linguagem específica e são um pouco mais complexos. Quero dizer, muito mais complexos. Mas não se assus- te, com o tempo você aprenderá que a complexidade para desenvolver a solução de um problema está, diretamente, ligada ao seu conhecimento sobre o problema e as ferra- mentas que você tem disponível para resolvê-lo. Pronto! Agora que você já entendeu o que é um algoritmo, você está pronto para programar um aplicativo em seu computador. Bem-vindo ao maravilhoso mundo da programação! Você já é um programador profissional! Brincadeiras a parte, vamos começar a modelar os nossos problemas em sequên- cias lógicas de instruções. Importante: caso você ainda não saiba, aprenderá, empiricamente, que “programadores são ferramentas projetadas para converter cafeína em código”. 7ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO FRITANDO UM OVO Agora, que você já teve o primeiro contato com uma sequência de instruções, comece a criar uma outra para direcionar o processo para fritar um ovo. Primeiramente vamos definir algumas regras: • Crie o máximo possível de instruções. Tenha em mente que quem executará estas instruções não possui nenhum conhecimento prévio de como fun- ciona uma cozinha, aonde as coisas estão e como elas funcionam. • Leve em conta que quem executará tais instruções já se encontra dentro da cozinha. • Apesar de não conhecer nada da cozinha, o exe- cutor sabe identificar as coisas. Se uma instrução for, por exemplo, “Abrir a geladeira”, ele saberá como fazer isso. Agora pare de ler um pouco e faça esse exercício, escrevendo em um papel todas as instruções. VALIDANDO A SOLUÇÃO Vou agora descrever a minha solução para o problema dado: 1. Abra a porta da geladeira. 2. Na porta dageladeira, encontre a bandeja de ovos. 3. Pegue um ovo. 4. Feche a porta da geladeira. 5. Coloque os ovos sobre a pia. 6. Abra a porta do armário. 7. Junto às panelas, encontre uma frigideira. 8. Pegue a frigideira. 9. Coloque sobre uma boca vazia do fogão. 10. Junto aos temperos, encontre o azeite. 11. Pegue o azeite. 12. Coloque a quantia necessária de azeite para cobrir o fundo da frigideira. 13. Guarde novamente o azeite. 14. Próximo aos talheres, encontre uma escumadeira. 15. Coloque sobre a pia. 8ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO 16. Feche o armário. 17. Ligue a boca do fogão cuja panela encontra-se sobre. 18. Bata suavemente a casca do ovo (mais ou menos no meio) contra a pia. 19. Com as duas mãos abra o ovo sobre a frigideira. 20. Abra o armário. 21. Próximo aos temperos, localize o pote com sal. 22. Pegue o pote. 23. Feche o armário. 24. Abra o pote. 25. Coloque uma pitada de sal sobre o ovo que se encon- tra na frigideira. 26. Tampe o sal e coloque-o em cima da pia. 27. Quando a clara estiver branca e a gema estiver leve- mente mole, desligue o fogo. 28. Abra o armário. 29. Localize um prato. 30. Pegue e segure-o consigo. 31. Feche o armário. 32. Pegue a escumadeira que está sobre a pia. 33. Com cuidado para não estourar a gema, retire o ovo da frigideira. 34. Coloque-o no prato. 35. FIM!!! Ufa! Essa foi a receita para fazer um ovo frito mais extensa que eu já vi no mundo. E A SUA RECEITA? FICOU IGUAL? Aposto que não. Assim como nas receitas de culinária de verdade, não existe uma única forma de se criar uma sequência de instruções para a resolução de um problema. Isso também acontece com os programas de computador. Dependendo de quem for o programador, o algoritmo utili- zado pode ser completamente diferente, porém, ambos podem chegar ao mesmo resultado final. Isso também acontecerá com os exemplos de algoritmos que iremos produzir durante toda a disciplina. Procure não se preocupar muito com a so- lução dada por mim e com a solução que você produzir. Procure sempre iden- tificar se você conseguiu atingir o objetivo, que é a resolução do problema. IMPORTANTE, NÃO SE PREOCUPE MUITO COM ISSO, AGORA! As soluções costumam ser diferentes, porém, a resolução do problema deve ser sempre o principal objetivo; ele deve ser efetivo. Quando você estiver escrevendo um algoritmo, saiba também, que às vezes temos que produzir o melhor algoritmo; ele deve ser, também, eficaz. 9ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Agora que já estamos entendidos sobre o que é um algoritmo, qual a sua função e como ele fun- ciona, precisamos entender como se constrói um “algoritmo de verdade”. CONSTRUINDO UM ALGORITMO Para construir um algoritmo, precisamos seguir alguns passos importantes para que ele faça corretamente o que precisamos que faça. Vamos a eles: 1. Estudar e entender tudo sobre o problema a ser resolvido, para que nenhuma informação seja desconsiderada enquanto estivermos escrevendo nosso algoritmo. 2. Estruturar quais são os dados que são necessários informar para que o nosso algoritmo tenha um bom funcionamento. Chamamos esses de dados de entrada. 3. De forma lógica, pensar como esses dados devem ser processados para que o algoritmo re- solva o problema. 4. Estruturar quais são os dados que representam a solução do problema. Estes, chamamos de dados de saída. 5. Finalmente, construiremos o algoritmo utilizando o formato necessário para que ele funcione. Note no passo 5, que eu falei sobre formato necessário. Isso quer dizer que existe mais de um tipo de se representar um algoritmo. Vamos entender alguns tipos que nos servirão de base para criarmos nossos algoritmos: TIPOS DE REPRESENTAÇÃO DE ALGORITMOS Conforme comentei anteriormente, existe mais de um tipo para represen- tarmos nossos algoritmos. Cada um com a sua característica e sua função no pro- cessamento, representação e entendimento do nosso problema. DESCRIÇÃO NARRATIVA Essa é a forma que acabamos de ver. Sim, a lista de instruções é uma ma- neira de representação de algoritmos. Ela é ótima para entendermos o problema e quais são os passos necessários para resolvê-lo. E você não precisou aprender nada de diferente. Mas ela não é perfeita. Vamos supor o passo 18 do nosso exem- plo de como fritar um ovo. Bata suavemente a casca do ovo (mais ou menos no meio) contra a pia. Essa instrução está sujeita a interpretações diferentes, considerando quem irá executá-la. Certo? Suavemente, para mim pode ser diferente do que é para você. Isso quer dizer que esse formato pode não ser tão eficaz, visto que, ele está sujeito à interpretação de quem o executa. Vamos ao próximo formato: 10ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO FLUXOGRAMA Você sabe o que é um fluxograma e como se monta um? Vou te dar um exemplo de fluxograma: Quando olhamos um desenho como esse, uma coisa fica ób- via: a sequência dos passos a serem seguidos. Mas. por outro lado, ele exige que conheçamos quais os símbolos que foram utilizados para representar cada um dos passos. Isso não é necessariamente um problema, pois, formalmente, é definida a linguagem utilizada. O que pode ser sim, um problema, quando utilizamos esse formato, e quando estamos representando os passos para a so- lução de um problema muito complexo, que pode ficar muito ex- tenso, impossibilitando uma visão clara de todo o processo. Isso não quer dizer que ele não é utilizado, só pode não ser a melhor forma para que representemos os nossos problemas, pre- tendendo que o computador os resolva. Um pouco mais próximo do que é utilizado para a programa- ção dos nossos computadores, temos o nosso próximo formato: PSEUDOCÓDIGO – PORTUGUÊS ESTRUTURADO Esse é o formato que trabalharemos nossos primeiros al- goritmos daqui para frente. Ele é chamado de pseudocódigo, porque não é uma linguagem de programação propriamente dita, todavia ele se aproxima bastante, pois é construído utili- zando a Língua Portuguesa. Vamos entender como representar o nosso algoritmo utili- zando um exemplo real, mas para isso, precisamos seguir nossos 5 passos para a construção de um algoritmo. Importante: não é um requisito para o aprendizado da programação, mas é muito importante que você tenha algum certo conhecimento da língua inglesa, pois a maioria das linguagens de programação utilizam essa língua como base. 11ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Definição do problema: Faça um algoritmo que leia do usuário 3 números e calcule a média entre eles, escrevendo-a. 1. Problema: o problema a ser resolvido pelo nosso algoritmo é o cálculo da mé- dia aritmética entre três números quaisquer, que serão informados durante a execução do algoritmo. Sabemos, da Matemática, que para realizar o cálculo da média aritmética de 3 números devemos somá-los e dividi-los por 3. 2. Definir dados de entrada: conforme a nossa definição do problema, os 3 nú- meros, cuja média será calculada, serão informados durante a execução do algoritmo, logo, esses são os nossos dados de entrada. 3. Processamento: os passos são: a. Leitura dos dados b. Cálculo da média – (N1 + N2 + N3) / 3 c. Escrita da média 4. Definir dados de saída: nesse problema, o que desejamos é que a média cal- culada seja escrita, nesse caso, nosso dado de saída é a própria média. 5. Criar o algoritmo: para criar nosso algoritmo em português estruturado, precisamos primeiro entender como se estrutura um algoritmo nesse formato. ESTRUTURA DE UM ALGORITMO EM PORTUGUÊS ESTRUTURADO Um algoritmo em português estruturado possui um formato bem definido com comandos igual- mente bem definidos. Vamos entender como é o formato básico de um algoritmo? Agora, aprenderemos o significado de cada linha. Linha 1 – a palavra reservada “algoritmo” indica que estamos iniciando um novo algoritmo e que o nome desse algoritmo está na sequência entre aspas. Importante: durante o decorrer deste material, sempre que forexibido um algoritmo, seja ele em português estruturado ou em linguagem de programação (mais adiante iniciaremos com linguagens reais que nos permitam criar programas) será utilizada uma fonte monoespaçada e no formato utilizado abaixo. 12ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Linha 2 – a palavra reservada “var” indica que estamos iniciando a sessão do nosso algoritmo responsável pela declaração das variáveis. Variáveis, como na Mate- mática, são responsáveis por guardar um determinado valor, porém, o algoritmo não armazena valores numéricos. Linha 3 – as duas barras indicam que está sendo iniciado um comentário, ou seja, tudo o que vem após as barras não será considerado parte do algoritmo e só está ali para servir de comentário. Nesse caso, está indicando que estamos dentro da seção de decla- ração de variáveis, que aprenderemos mais adiante. Linha 4 – quando, após a seção de declaração de variáveis, for encontrada a pala- vra reservada “inicio” (note que não tem acento, assim como em todo o algoritmo não se utiliza acentos, espaços e caracteres especiais com exceção do “_” – underline – que pode ser utilizado para separação de palavras) indica que terminamos a seção de decla- ração de variáveis e iniciamos o processamento do nosso algoritmo. Linha 5 – igualmente à linha 3, é o comentário, informando que estamos dentro da seção de processamento do algoritmo, ou seja, o corpo do nosso algoritmo. É no corpo que passos para a resolução do nosso problema serão listados em ordem. Linha 6 – quando, após os comandos do corpo do nosso algoritmo, forem encon- tradas as palavras reservadas “fimalgoritmo”, sem espaço, estaremos informando que nosso algoritmo terminou. Nada virá após. Importante: palavras reservadas são palavras que não podem ser utilizadas como variáveis para a construção do nosso algoritmo. Existem mais palavras reservadas que estaremos conhecendo no decorrer do material. Vamos entender um pouco mais das duas sessões que utilizamos para a criação do nosso algoritmo. As declarações de variáveis e corpo do nosso algoritmo. DECLARAÇÃO DE VARIÁVEIS A seção de declaração de variáveis serve para que indiquemos todas as variáveis que serão utilizadas no decorrer do nosso algoritmo. Uma variável, conforme comentado ante- riormente, serve para armazenarmos alguma informação que pode, ou não, ser modificada durante a execução do algoritmo. Esse processo também existe em qualquer programa que utilizamos. Do ponto de vista do processamento realizado por um computador, a declaração de uma variável serve para que o computador possa reservar um espaço na memória, que permanecerá durante toda a execu- ção daquele algoritmo. Como o português estruturado representa o pseudocódigo de um programa de computa- dor, também devemos declarar as variáveis que utilizaremos no decorrer do nosso algoritmo. 13ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Para declararmos uma variável, devemos utilizar a seguinte sintaxe: Onde <var1> deve ser substituído por uma ou outra lista separada por vírgula, de nomes de variáveis. Para facilitar o entendimento, deve-se no- mear as variáveis de acordo com o dado que nela é armazenado. Após a lis- ta de variáveis, deve vir um símbolo de dois pontos, e, na sequência, o tipo de dados que todas as variáveis daquela linha possuirão. Isso quer dizer que podemos, não sendo obrigatório, agrupar a de- claração de variáveis, desde que todas armazenem o mesmo tipo de dados. Posteriormente, veremos quais são os tipos de dados possíveis de se utili- zar em um algoritmo. Importante: quando, no contexto de algoritmos, ou até no contexto de programação, falamos sobre “sintaxe”, estamos tratando da estrutura que deve ser utilizada. Quando estamos programando no computador, caso a sintaxe do nosso algoritmo não esteja correta, o algoritmo não funcionará, ou seja, ele não está sintaticamente correto. Cabe a você entender a sintaxe correta para escrever o algoritmo e utilizá-la. CORPO DO ALGORITMO É nessa seção que ocorre o algoritmo propriamente dito. Aqui são descritos os comandos que serão executados para que o problema inicial seja resolvido. Também, escreveremos comandos para a leitura dos dados (entrada de dados), pro- cessamento e escrita dos dados processados (saída de dados). No decorrer de toda a disciplina, estaremos aprendendo novos comandos que nos auxiliam em uma função específica. Esses comandos são a grande diferença entre um al- goritmo representado em descrição narrativa e em pseu- docódigo, pois temos comandos bem definidos que não estão sujeitos a diferentes tipos de interpretação. É o que o computador precisa para executar nossos programas e comandos bem definidos. Importante: todo o comando que é representado por uma palavra, esta palavra deve ser reservada, ou seja, não pode ser utilizada para representar uma variável. 14ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO RETOMANDO NOSSO ALGORITMO Agora que conhecemos como é a estrutura básica de um algoritmo, vamos retomar ao nosso problema da média e ver como é um algoritmo que resolve esse problema. Vamos analisar o que foi feito nas seções de declaração de variáveis (linha 3 e 4) e corpo do algoritmo (linhas 6 a 10). Declaração das variáveis: Linha 3 – estamos declarando três variáveis com nomes “num1”, “num2”, “num3” com tipo inteiro (número sem casas decimais). Estas variáveis servem para armazenar a entrada de dados. Linha 4 – estamos declarando uma variável com nome “media” (sem acento - lembre-se dos caracteres especiais que não podem ser utilizados) com o tipo de dado real (número com vír- gula). Como o resultado de uma divisão pode ser um número com vírgulas, não podemos declará- -la junto com as demais que são do tipo inteiro. Essa variável, como o nome indica, armazenará o resultado do cálculo da média que realizaremos no corpo do nosso algoritmo. Corpo do algoritmo: Linhas 6 a 8 - estamos indicando que devem ser lidos valores de entrada e estes serão armazenados nas respectivas variáveis. Linha 9 – esta linha deve ser analisada em duas partes. A primeira parte até o símbolo de atribuição “<-”, que indica que o resultado da expressão que está à direita do símbolo que será armazenado na variável que está à esquerda do símbolo. Agora, vamos analisar a expressão que está à direita. Trata-se de uma expressão matemática, onde os valores lidos anteriormente, representados por suas variáveis, serão somados (assim como na matemática, os parênteses indicam a precedência) e, posteriormente, o valor dessa soma será dividido por 3. Linha 10 – por último, estamos realizando a saída de dados, ou seja, estamos dando o comando de escrita da média. Importante: essa vai ser a última dica referente às palavras reservadas que teremos em nosso material. A lógica das palavras reservadas será a mesma para todo o decorrer do material e também no decorrer da sua vida, enquanto estiver programando. Uma palavra que representa algo fora do contexto do problema, não pode ser utilizada como nome de variável. Nesse algoritmo, temos mais 4 palavras reservadas (“inteiro”, “real”, “leia” e “escreva”). Novamente, devemos lembrar que não podemos utilizar essas palavras como nome de alguma variável. 15ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Agora que temos o nosso algoritmo pronto, o que fazemos com ele. Lembre-se que falamos sobre o que é um algoritmo e o que ele representa. Então, se o nosso al- goritmo representa os passos para a solução de um problema, precisamos validar se o nosso problema inicial foi solucionado. Para fazer isso, vamos testar o nosso algoritmo, ou seja, iremos segui-lo passo a passo para ver se no seu final, todas as premissas de que nosso problema nos im- pôs foram satisfeitas. TESTANDO O ALGORITMO – TESTE DE MESA Assim como, para a construção do algoritmo, temos uma técnica a ser seguida, para testá-lo temos também uma técnica. Chamamos essa técnica de teste demesa. Um teste de mesa é a simulação de cada um dos comandos referente ao corpo do nosso algoritmo. Aí você me pergunta, como fazemos para conferir se tudo está certo? Para problemas simples como este, podemos fazer isso “de cabeça”, guardando a cada passo os valores das variáveis em nossa memória, mas conforme os problemas vão ficando mais complexos e extensos, não podemos confiar somente na nossa memória para saber quais os valores armazenados em cada uma das variáveis do nosso algorit- mo, conforme vamos executando os passos. Porém, temos uma ferramenta bem simples para fazer isso. Vamos fazer como um computador faz, vamos armazenar os dados. Considerando que, até o momento estamos escrevendo nosso algoritmo no papel, simu- laremos a execução deste também no papel. Quando analisamos um algoritmo, a primeira coisa a se fazer é analisar a declaração das variáveis. Para cada uma das linhas de declaração de variáveis, criaremos uma tabela com o nome da variável e o tipo dela. Essa tabela será nossa memória no decorrer da execução. Para criá-la, colocamos cada uma das variáveis em uma coluna com nome da variável e o tipo de dados referentes. Vamos à tabela de dados do nosso algoritmo: Agora que temos o cabeçalho da nossa tabela montada, as linhas serão os valores de cada uma delas após a execução de cada comando do nosso algoritmo. Consideraremos os valores da entrada de dados para as variáveis num1, num2 e num3, que são respectivamente 3, 6 e 9. Para entender os valores desse teste de mesa, tenha o algoritmo ao seu lado e simularemos ele juntos. Vamos executar cada instrução (linhas 6 a 10) e atualizarmos a nossa tabela de dados. Na linha 6, o algoritmo pede para ler um valor que será armazenado na variável num1. Como a variável num1 é do tipo inteiro, devemos utilizar somente valores desse tipo. Consi- deramos o valor 3. Como essa é a primeira instrução executada, criamos a primeira linha da tabela com o valor 3 na coluna referente a variável num1 e deixamos todas as outras com zero (uma variável numérica sem valor, e que possui o valor zero). num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real) 16ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Agora, na linha 7, o algoritmo pede novamente para lermos um valor e armazená- -lo na variável num2. Consideramos o 6 como valor lido. Criaremos uma nova linha e na coluna do num2 colocaremos o valor lido. Nas demais colunas, como os valores das va- riáveis não sofreram alterações, repetimos o valor anterior. Agora, na linha 8, segue a mesma lógica, porém, para a variável num3, com valor 9, o resultado é o seguinte: Agora, na linha 9, temos uma diferença. Temos o nosso cálculo da média, que deve ser feito somando as variáveis num1, num2 e num3, e depois dividido por 3. E é nesse tipo de instrução que a tabela de dados do nosso teste de mesa comprova sua eficiência. num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real) 3 0 0 0,0 Para saber qual o valor de cada uma das variáveis utilizadas, devemos consultar a última linha, até o momento, para saber qual é. No nosso caso, 3, 6 e 9. Fazemos a soma “de cabeça” (18) e dividimos por 3. Para o resultado, 6, criamos uma nova linha na tabela e o colocamos na coluna referente a média. Novamente, as demais variáveis não sofreram alterações, portanto, os valores são repetidos. Por último, na linha 10, a instrução é de saída. Nesse caso, não precisamos atua- lizar nossa tabela de dados, porém, podemos simular a saída, escrevendo-a à parte da nossa tabela, como se fosse em um monitor do computador. Infelizmente, não é pos- sível demonstrar esse passo aqui, mas é importante que saibamos que ele existe, pois é ele que representa todo o processamento realizado. Se pensássemos nesse algoritmo como um programa de computador, sem esse passo, o usuário teria digitado os valores, mas nunca veria o resultado, ou seja, para ele, o programa não executou nada. num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real) 3 0 0 0,0 3 6 0 0,0 num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real) 3 0 0 0,0 3 6 0 0,0 3 6 9 0,0 num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real) 3 0 0 0,0 3 6 0 0,0 3 6 9 0,0 3 6 9 6,0 17ALGORITMOS E PROGRAMAÇÃO I EXERCÍCIOS SUMÁRIO Agora chegou a sua vez de escrever alguns algoritmos para resolução de pro- blemas. Vou descrever os problemas e você deverá criar o algoritmo e testá-lo, uti- lizando a técnica do teste de mesa que foi vista anteriormente: 1. Escreva um algoritmo que leia dois valores numéricos que representem as medidas de base e altura de um triângulo. Tendo estas medidas, calcule a área desse triângulo escrevendo o seu resultado. OBS: se você não lembra como se calcula a área de um triângulo, digite no Goo- gle “cálculo área do triângulo”, você encontrará facilmente a fórmula desejada. 2. Escreva um algoritmo que leia o número de horas trabalhadas por um profis- sional autônomo e também o valor hora e o percentual de imposto que ele deve pagar. Calcule o valor do imposto a ser descontado desse profissional e o valor líquido que ele tem por receber. Escreva, primeiramente, o valor do imposto e, na sequência, o valor líquido. OBS: O percentual do imposto informado será em base 100, ou seja, para um imposto de 15% será informado o valor 15. Lembre-se que você deve realizar um cálculo intermediário com esse número para calcular o valor do imposto. 18ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO 1. Aprendemos, através de instruções, como fritar um ovo, porém, a lista de instruções pode ser diferente para resolução de um mesmo problema. 2. Aprendemos quais são os passos necessários para construção de qualquer algoritmo e que precisamos internalizar esses passos para criação de um pensamento lógico para solução dos problemas que serão resolvidos pe- los nossos algoritmos. 3. Vimos que não existe uma única forma de se representar um algoritmo. As três formas de representação que conhecemos foram: descrição narrativa, fluxograma e português estruturado – pseudocódigo. Este último é o que utilizaremos por sua semelhança com os programas de computador. 4. Aprendemos como é a estrutura de um algoritmo representado em português estruturado, ten- do como estrutura básica as seguintes sessões: inicialização e declaração do nome do algoritmo, declaração das variáveis, início, corpo e fim do algoritmo. Analisamos também o exemplo do algoritmo, que calcula a média aritmética de três números quaisquer informados pelo usuário. 5. Finalizando, aprendemos como testar e validar o nosso algoritmo, utilizando como ferra- menta o teste de mesa e a tabela de dados para acompanhamento dos valores das variáveis no decorrer da execução. 6. Espero que você tenha conseguido criar os algoritmos que foram propostos para exercitar. Qual- quer dúvida, utilize o ambiente virtual para esclarecimentos. Nos vemos no próximo capítulo. RESUMINDO O CAPÍTULO 19 VARIÁVEIS: TIPOS DE DADOS E OPERADORES Ao falarmos sobre variáveis, para uma compreensão dos algoritmos, precisamos entender como elas funcionam em um programa que é executado em um computador. 20ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Em um programa de computador, que você está acostumado a utilizar, existem muitas variáveis declaradas. Essas, armazenam os dados úteis durante a execução do programa. Um exemplo seria a va- riável que armazena as coordenadas da posição da janela em relação à tela. Sempre que arrastamos a janela, os valores da coordenada mu- dam, ou seja, o valor que está armazenado na variável será modificado pelo nosso programa. Se as variáveis são responsáveis por armazenar nossos dados, onde é que esses dados são armazenados? Você já deve ter ouvido falar sobre memória RAM, aquela memó- ria que nossos computadores utilizam para armazenar as informações que são necessárias somente durante a execução dos programas. Toda a declaração de variável feita nos programas, ou,em nosso caso, nos algoritmos, fazem com que o computador reserve um de- terminado espaço na memória, para que aquela informação seja salva, novamente, durante a execução do programa. Quais informações podemos armazenar dentro das variáveis? No capítulo anterior, quando analisamos a estrutura de um algoritmo, vimos que existe uma seção específica destinada a de- claração de variáveis (abaixo, novamente a sintaxe das linhas de declaração de variáveis). Sabendo que todas as variáveis declara- das possuem um tipo de dado bem definido, sejam elas agrupadas por tipo (mais de uma variável por linha), ou declaradas individu- almente (linha a linha), aprenderemos quais são os tipos de dados que podemos dar as nossas variáveis. TIPOS DE DADOS No capítulo anterior, em nosso primeiro algoritmo completo, declaramos variáveis de dois tipos de dados. Um tipo foi o “inteiro”, que representa os números inteiros, positivo ou negativo, e o ou- tro foi o “real”, que representa os números que podem ter, ou não, casas decimais. Esse é o tipo de dados numéricos, que possui essas duas divisões. Porém, existem outros tipos de dados destinados a outras fun- cionalidades. Vamos a todos eles: 21ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO • Numérico: conforme já comentado, esse tipo de dado serve para declarar variáveis que armazenam números. Porém, sintaticamente, “numérico” não é um tipo de dado váli- do, pois precisamos especificar qual o tipo de número que nossa variável armazenará. Devemos declarar nossas variáveis numéricas utilizando o tipo específico de número armazenado, ou seja, “inteiro” ou “real”. Importante salientar que, no corpo do algoritmo, quando queremos colocar um nú- mero com separador decimal, devemos utilizar o símbolo de ponto para essa função, e não vírgula, como estamos acostumados no sistema brasileiro. No caso da separação de milha- res, que no sistema brasileiro utilizamos o ponto como símbolo, não precisamos fazê-la. Exemplo de declaração: • Lógico: quando uma variável possui esse tipo de dado, ela pode ter somente um dos dois valores válidos: Verdadeiro ou Falso. Esse tipo de dado servirá para que possamos realizar testes lógicos com nossas variáveis. Exemplo de declaração: • Caractere: variáveis declaradas com esse tipo de dado servem para armazenar ex- pressões literais que não são interpretadas pelo nosso algoritmo (podemos, inclusive, utilizar caracteres especiais em nossas expressões literais). Um exemplo de variável que pode ser declarada utilizando esse tipo de dado, é uma variável que armazena o nome de uma pessoa. Exemplo de declaração: Após aprendermos como utilizar esses dados, vamos observar um exemplo: Na legislação trabalhista brasileira, sempre que um funcionário gozará de seu período de férias, ele deve receber, adiantado, uma bonificação no valor de 1/3 de seu salário bruto como “Adicional de Férias”. Considerando essa definição, escreva um algoritmo que leia o Importante: para que possamos, no corpo do algoritmo, atribuir um valor literal em uma variável, ou também utilizá-lo em chamadas de funções (como por exemplo, na função de saída “escreva”), precisamos colocar a expressão literal a ser atribuída entre aspas. Ex: Nome <- “joão da silva” 22ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO nome de um funcionário e o seu salário bruto e calcule o valor a ser recebido por esse funcionário como acréscimo de férias, escrevendo ao final o nome do funcionário, o valor do salário bruto, o valor do adicional de férias e o valor total, conforme exemplo de saída abaixo: RESOLUÇÃO DO ALGORITMO PARA CÁLCULO DE FÉRIAS Antes de verificar a resolução e análise da solução abaixo, tente criar esse algoritmo por conta própria. A prática é que te levará cada vez mais próximo da perfeição. Importante: Sempre que, no decorrer deste material, for mostrado um exemplo de saída de dados (escrita) de um algoritmo, cada expressão de escrita gera uma nova linha e esta sempre irá iniciar com o caractere “>”. Na sequência, a informação de saída. Lembrando que não existe uma única, vamos analisar a solução acima. Linhas 3 e 4: declaração das variáveis, conforme já vimos anteriormente, porém, utilizando o tipo de dados “caractere”. Linhas 6 e 7: aqui estamos vendo um adendo na forma de ler o nome do funcionário para a variável “nome”. Estamos primeiro escrevendo qual dado será lido, para depois realizar a leitura. Podemos utilizar o comando escreval, que vai escrever a frase “Digite o nome do funcionário”, em uma nova linha, na tela do usuário. Pensando no monitor do usuário, temos a seguinte situação: 23ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Onde teremos, na segunda linha, o cursor piscando e aguardando que o usuário digite a in- formação e pressione “ENTER” para prosseguir. Utilizamos, primeiramente, a escrita, para que o usuário não veja somente o cursor piscando sem saber o que ele deve fazer. Quando simularmos nossos algoritmos em um programa, você conseguirá ter uma visualização melhor desta “técnica”. Linhas 8 e 9: similar às linhas 6 e 7, porém, dessa vez, para a leitura do salário bruto. Linha 10: cálculo do adicional de férias através da divisão do valor do salário por 3, repre- sentando nosso 1/3 de férias. Após o cálculo, o valor é armazenado na variável “ferias”. Linha 11: Similar à linha 10, porém, o cálculo é do valor total que se dá através da soma do valor do salário bruto com o valor do adicional de férias, calculado anteriormente. A variável to- tal vai receber o valor do resultado da soma do “salario” com as “ferias”. Linha 12: novamente, uma forma diferente para realizar uma função já conhecida. Nes- se caso, estamos escrevendo uma expressão literal explicativa antes da informação propria- mente dita. Podemos escrever várias informações (variáveis ou expressões) na mesma linha, separando-as por vírgula. Linhas 13, 14 e 15: similar à linha 12, estamos escrevendo as demais informações solicitadas. Agora que já conhecemos os tipos de dados, vamos entender um pouco mais o que pode- mos fazer com cada um desses tipos de dados. Vamos conhecer os operadores que podem ser utilizados para manipulação dos dados. OPERADORES Mesmo sem nos darmos conta, nos exemplos e exercícios realizados até agora, já utilizamos alguns tipos de operadores. Por mais que alguns sejam simples, como por exemplo, o operador de atribuição, “<–”, e não precisam maiores explicações, vamos analisar uma lista com todos os operadores que podemos utilizar em nossos algoritmos. Operador de atribuição: conforme comentado acima, este é um dos primeiros operadores que utilizamos. Sua sintaxe é bastante simples: primeiramente, é avaliado o resultado da expressão que está à direita do operador e o resultado é armazenado na variável que está à esquerda do operador. Operadores aritméticos: os operadores aritméticos permitem a realização de cálcu- los matemáticos, utilizando valores armazenados em variáveis, ou ainda, valores escritos diretamente no código. Até agora, já vimos os operadores referentes às quatro operações matemáticas básicas. Vamos ver os demais, inclusive repassando novamente por estes: Operador Representação no algoritmo Exemplo Soma + valor1 + valor2 Subtração – valor1 – valor2 Multiplicação * valor1 * valor2 Divisão / valor1 / valor2 Exponenciação ^ valor1 ^ valor2 Módulo (resto inteiro da divisão) mod valor1 mod valor2 Operadores aritméticos 24ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Operadores relacionais: os operadores relacionais são utilizados para comparação de dois valo- res conforme o tipo de operador utilizado. O resultado de uma expressão que utiliza um operador rela- cional é sempre um resultado lógico, ou seja, verdadeiro ou falso. Vamos ver quais são: Operadores lógicos: Os operadores lógicos são utilizados para associar expressões ou variáveis lógicas. O resultado destas expressões também é um resultado do tipo lógico. Operador Representaçãono algoritmo Exemplo Maior > valor1 > valor2 Maior ou igual ≥ valor1 ≥ valor2 Menor < valor1 < valor2 Menor ou igual ≤ valor1 ≤ valor2 Igual = valor1 = valor2 Diferente <> valor1 <> valor2 Operadores relacionais Operador Representação no algoritmo Exemplo e (conjunção) E – este operador retorna verdadeiro se somente os dois lados da expressão forem verdadeiros. <expressão 1> E <expressão 2> ou (disjunção) OU – este operador retorna verdadeiro se ao menos um dos lados da expressão forem verdadeiro. <expressão 1> OU <expressão 2> não (negação) NAO – este operador inverte o valor da expressão adjacente, ou seja, retorna verdadeiro para uma expressão com valor falso ou retorna falso para uma expressão com valor verdadeiro. NÃO <expressão> Operadores lógicos 25ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Você deve estar se perguntando, de que forma os operadores relacionais e lógicos são utilizados dentro de um algoritmo? Antes de lhe mostrar como iremos utilizá-los, primeiro preciso que você entenda bem como eles funcionam, pensando somente nos valores lógicos que eles retornam. Para isso, vamos analisar uma ferramenta que chamamos de tabela ver- dade. Ela nos auxiliará no entendimento destes operadores. TABELA VERDADE Para a análise da tabela verdade, vamos considerar duas variáveis, A e B, analisan- do os resultados possíveis dos operadores relacionais e o resultado da combinação com operadores lógicos. Analisando a primeira linha, na primeira coluna temos a suposição de que A = 3 (A é igual a 3) seja verdadeiro e, na segunda coluna, a suposição de que B <> 20 (B é diferente de 20) seja verdadeiro também. Dessa forma, temos para cada um dos operadores lógicos (“E”, “OU” e “NÃO”) o valor de uma operação, considerando as duas primeiras suposições. Ainda analisando a primeira linha, para “A = 3 E B <> 20” temos um retorno verdadeiro, da mesma forma que para “A = 3 OU B <> 20” temos um retorno verdadeiro, porém, para o operador “NAO” na expressão “NAO A = 3”, como “A = 3” é verdadeiro e a função do operador é in- verter o valor, o resultado final será falso. Lembre-se! O resultado de uma expressão contendo um operador relacional ou lógico, sempre resultará em um valor lógico. Por ora, você deve atribuir o resultado dessas expres- sões sempre em uma variável do tipo lógico. OPERADOR E OPERADOR OU OPERADOR NAO Expressão no Algoritmo A = 3 B <> 20 A = 3 E B <> 20 A = 3 OU B <> 20 NAO A = 3 RESULTADOS V V V V F V F F V F F V F V V F F F F V Tabela verdade 26ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO PRECEDÊNCIA DE OPERADORES Assim como na Matemática, em algoritmos temos operadores que possuem precedência sobre outros. Você deve estar lembrado que quando temos uma expressão matemática composta, por exemplo, de operadores de adição e multiplicação, primeiramente devemos resolver a operação de multiplicação, para só, então, resolvermos a operação de adição. Um pequeno exemplo para recordarmos. Resolva a expressão: 2 + 5 × 3 + 4 = ? Se você chegou ao resultado 21, você resolveu essa expressão corretamente. Em algoritmos, também temos regras de precedência de ope- radores. Considerando os operadores aritméticos, a precedência é a mesma utilizada nas expressões matemáticas. Primeiro, temos a precedência dos parênteses, que vem depois da operação de expo- nenciação, que após as operações de multiplicação, divisão e por úl- timo as operações de adição e subtração. Importante: nas expressões matemáticas temos os separadores de expressões, os parênteses, chaves e colchetes. Em algoritmos, temos somente os parênteses. Quando se deseja separar mais de uma operação, que na matemática utilizaríamos as chaves e colchetes, em algoritmos utilizamos parênteses aninhados. Vamos a um exemplo: Considere a seguinte expressão matemática: {5 + (2 + 5) × (3 + 4)} × 2 Nesse caso, em algoritmos teríamos a seguinte expressão: (5 + (2 + 5) * (3 + 4)) * 2 27ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Considerando que em algoritmos temos ainda os operadores lógicos e relacionais, temos uma lista de precedência um pouco maior. Para melhor compreensão, podemos montar uma pi- râmide de precedência, onde no topo da pirâmide estará a maior precedência, e a base da pirâmi- de representa a menor precedência: Levando em conta essa pirâmide de precedência, temos que considerar a utili- zação de parênteses sempre que temos expressões que mesclam operadores de maior e menor precedência, para que, assim, tenhamos certeza do resultado esperado. Se, em uma expressão, os operadores possuem a mesma precedência, ela será executada da esquerda para a direita. COLOCANDO EM PRÁTICA Agora é hora de exercitarmos para fixarmos um pouco mais sobre o que aca- bamos de aprender. Considerando o exercício anterior de cálculo das férias, modifique o algorit- mo criado para que seja deduzido o INSS (desconto de 11%), escrevendo o valor de INSS e também: “O funcionário deve descontar IRRF: <VERDADEIRO/FALSO>”, onde a expressão, após os dois pontos, indica se o usuário deve descontar o im- posto de renda na fonte. Considerando que na tabela do imposto de renda de 2016, diz que, deve ser descontado o imposto na fonte para todos que obtiveram ganhos superiores a 1.903,98 (lembre-se que no corpo do algoritmo, o símbolo de separa- dor decimal é o ponto e a vírgula, não sendo necessário a utilização do separador de milhar), já descontado o valor do INSS. 28ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO RESOLUÇÃO DO ALGORITMO PARA CALCULO DE FÉRIAS Antes de verificar a resolução e análise da solução a seguir, tente criar esse algoritmo por conta própria. A prática é que te levará cada vez mais próximo da perfeição. Não me cansarei de escrever isso, pois tenho a certeza de que é uma verdade. Para a solução, primeiro devemos lembrar que não temos o operador de percentual nos operadores matemáticos, po- rém, sabemos que 11% pode ser realizada através da operação matemática, 11 dividido por 100. Ou seja, a expressão mate- mática para esse cálculo pode ser representada da seguinte forma: inss = total × 11 ÷ 100 Tendo isso em mente, vamos ao nosso algoritmo: 29ALGORITMOS E PROGRAMAÇÃO I EXERCÍCIOS SUMÁRIO Da mesma forma que no capítulo anterior, e também em todos os demais que teremos nesse material, chegou a sua vez de exercitar: 1. Considerando que em uma escola existe média para aprovação em uma disci- plina, a média ponderada do ano deve ser superior a 6, escreva um algoritmo que leia o nome do aluno que se deseja calcular a média, as notas dos 4 bimes- tres, calculando a média. A média ponderada deve ser calculada levando em conta que o primeiro bimestre tem peso 1, o segundo peso 2, e assim susceti- velmente. No final, escreva o nome do aluno, a média atingida e VERDADEIRO OU FALSO para o caso do aluno ser aprovado ou não. DICA: Se você não lembra como se calcula uma média ponderada, realize uma pesquisa rápida para entender esse cálculo. 2. Escreva um algoritmo que leia um número inteiro e escreva VERDADEIRO se o número for par ou FALSO se o número for ímpar. DICA: Você deverá utilizar o operador módulo. 3. Escreva um algoritmo que leia dois números reais, o primeiro representando o raio da base de um cilindro, e o segundo, a altura deste cilindro, logo, calcule o volume do mesmo. DICA: A mesma do primeiro exercício. 30ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO 1. Aprendemos os tipos de dados que podemos utilizar em nossos algorit- mos: numéricos (inteiro e real), lógico e caractere. 2. Aprendemos quais são os operadores que podem ser utilizados para a realização de expressões aritméticas. Soma, subtração, multiplicação, divisão, exponenciação e módulo. 3. Da mesma forma, aprendemos que existem operadores relacionais que podem montar expressões sobre os mesmos valores numéricos, porém, o resultado das expressões sempre será um valor lógico. São eles: maior, maior ou igual, menor,menor ou igual, igual e diferente. 4. Como último grupo de operadores, vimos os operadores lógicos, que nos permitem trabalhar com valores lógicos para compor expressões entre 2 valores (operadores “E” e “OU” e, também, o operador “NAO”, que realiza a inversão de um valor lógico. RESUMINDO O CAPÍTULO 31 VISUALG Até este momento, nossos algoritmos foram construídos somente papel. Vamos dar um passo adiante!? 32ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Conforme vimos, superficialmente, no capítulo de Introdução, quando quere- mos desenvolver um programa, utilizamos uma linguagem de computador. Isso não quer dizer que teremos que, até o final dessa disciplina, ficarmos praticando somen- te no papel. Apesar desse tipo de prática ser bastante eficiente para o aprendizado, uma vez que o único fator envolvido é a solução do problema, utilizando uma pseu- dolinguagem, temos disponível, gratuitamente, uma ferramenta que nos permite construir e testar nossos algoritmos, utilizando essa mesma pseudolinguagem. A ferramenta, chamada de Visualg, foi criada por um professor universi- tário que viu a importância dos alunos das disciplinas de Algoritmo, praticarem a criação e testes dos algoritmos propostos, tendo uma ideia mais real de como seria esse mesmo processo caso estivessem utilizando uma linguagem de pro- gramação já difundida. A ideia é que, daqui para frente, possamos utilizar essa ferramenta para a cons- trução dos nossos algoritmos. DOWNLOAD Primeiramente, é necessário realizar o download através do link: https://sourceforge.net/projects/visualg30/files/latest/download Após o término do download, tem-se disponível um arquivo em formato RAR que deve ser descompactado, utilizando algum software adequado para essa função. Logo, à descompactação, temos acesso ao aplicativo visualg30, conforme imagem ao lado. INTERFACE DO VISUALG Abrindo esse aplicativo, tem-se acesso à interface que permite a criação e os testes do nosso algoritmo. próxima imagem, você visualizará a interface e todos os componentes que serão utili- zados daqui para frente. Instalação Visualg 33ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO 34ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO 1. Editor que utilizaremos para a criação do nosso algoritmo. Nele, digitamos os códigos que permitem que nosso algoritmo funcione. 2. Quando estamos executando nosso algoritmo, nesta listagem aparecerão todas as variáveis declaradas, o tipo e o valor da variável até o momento da execução. A utilização deste quadro só representa uma funcionalidade quando o algoritmo está sendo executado com breakpoints ou através da op- ção passo a passo. Mais adiante, veremos como executá-lo dessa forma. 3. Nesse painel, poderemos executar a saída do nosso aplicativo, ou seja, é nele que todos os resultados dos comandos de escrita aparecerão após te- rem sido executados. 4. Após ter concluído a construção do algoritmo, utilizamos esse botão para executá-lo de forma contínua, ou seja, as únicas paradas na execução, ocor- rerão quando for executado um comando de leitura (comando “leia”). 5. Com esse botão, nosso algoritmo é executado passo a passo, ou seja, nós é que decidimos quando deve ser executado o próximo comando (a próxima linha). Para a execução passo a passo, devemos utilizar esse botão para cada linha a ser executada. Agora que já conhecemos a interface da ferramenta, vamos entender algumas pequenas diferenças que temos com relação a linguagem que utilizamos até agora. 1. As palavras reservadas Algoritmo (primeira linha), Var, Inicio e Fimalgoritmo tem a primeira letra maiúscula, sendo que a palavra reservada que indica o final do algoritmo é uma só, sem o espaço de separação, ficando Fimalgoritmo. 2. A indentação padrão (espaços em branco que nos auxiliam de forma visual a ver os blocos - até o momento, temos o bloco de declaração de variáveis e o bloco do corpo do algoritmo) é reali- zada através de 3 espaços. 3. Verifique corretamente as aspas a serem utilizadas para a criação de expressões literais, do tipo caractere. De forma escrita é difícil de exemplificar, mas cuide para utilizar aspas duplas sem indi- cação de direção (não se deve utilizar o caractere aspas que aponta à direita quando está iniciando e à esquerda quando está finalizando). Desconfie das aspas quando, ao executar um algoritmo, for mostrado um erro em uma linha que tenha expressões literais, como no exemplo que segue: Tirando esses detalhes, tudo o que aprendemos até o momento pode ser executado nessa ferra- menta. É isso que faremos agora. Aviso 35ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO UTILIZANDO O VISUALG PARA CRIAR E EXECUTAR ALGORITMOS Primeiramente, quero que saiba que entendo que pode passar algumas dificul- dades durante o processo até que consiga pegar a prática. Como não estamos em uma disciplina presencial, quero que lembre que pode sempre recorrer ao nosso ambiente virtual para sanar suas dúvidas. Porém, esse atendimento pode não ser on-line e não quero que interrompa seus estudos até que obtenha um retorno. Dessa forma, vou lhe apresentar uma estratégia para tentar resolver os problemas que venham surgir. Você pode utilizar a opção ajuda que a ferramenta oferece. Nessa opção será aberto o navegador contendo toda a documentação de ajuda provida pela ferramenta. Entretanto, não quero que você se apavore com os problemas que podem surgir. Normalmente, eles são de fácil resolução, bastando que tenhamos atenção a toda in- formação que a ferramenta nos dá, comparando com o algoritmo que escrevemos nela. Agora, deixamos de perder tempo e vamos começar com um algoritmo que já desenvolvemos. Digite o algoritmo de cálculo de férias com desconto no INSS que criamos em conjunto no capítulo anterior, fazendo as adaptações necessárias. Na próxima ima- gem, você consegue visualizar como ficou o algoritmo, antes da execução: Exemplo 36ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO EXECUTANDO O ALGORITMO Após digitá-lo, vamos executar pelo botão “Executar” (número 4 da tela explicativa). Nesse momento, a ferramenta começará a execução de cada uma das instruções que coloca- mos. Primeiramente, todas as variáveis serão declaradas. Depois, no primeiro comando do corpo do algoritmo, será escrita a mensagem. Porém, o que você vê logo após clicar no botão executar, é uma janela preta do prompt de comando, similar a imagem: Executando algoritmo Arrastando a janela do prompt sobre o algoritmo, conseguimos ver os dois pai- néis direitos, o superior que mostra todas as variáveis declaradas com seus respecti- vos valores, e o inferior que mostra o resultado de saída até o momento. Conforme co- mentei anteriormente, quando utilizamos a opção de “Executar”, a única parada que é feita para interação acontece quando se executa a instrução leia. É isso que a janela do prompt de comando está aguardando. Que seja digitado algum valor que será armaze- nado na variável “nome”, conforme o comando da linha 9 do nosso algoritmo. Digite um nome qualquer e pressione Enter. Nesse momento, o que você vê na tela deve ser algo semelhante a imagem: Executando algoritmo 37ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Antes de digitar o salário, note que no painel das variáveis, a variá- vel nome já mudou de valor, tendo agora, exatamente, o que foi digitado no comando leia. Nesse momento, você pode digitar o salário e, novamente, pressionar Enter. Agora você deve estar vendo no prompt de comando algo semelhante ao que se vê na imagem abaixo: Eu sei que não é exatamente o que esperávamos, isso porque não houve quebra de linhas entre cada um dos comandos “escreva”. Quando desejamos que o Visualg quebre a linha após escrever alguma sentença na tela, devemos utilizar o comando “escreval”. Faça a mudança e teste novamente se desejar. Executando algoritmo Voltando a nossa análise do que temos em tela, repare no painel superior direito, o das variáveis, o que ele representa. Se você leu e sededicou até aqui no material, notará que ele é bem semelhante à tabela que pro- duzimos quando executamos nosso teste de mesa manualmente. A única diferença aqui é que não temos, linha a linha, a evolução dos valores das variáveis conforme a execução dos comandos. Esse painel, quando chega- mos no final da execução do algoritmo, representa a última linha da tabela produzida em nosso teste de mesa. Para fechar o prompt de comando, basta pressionar ESC. EXECUTANDO O ALGORITMO PASSO A PASSO A execução passo a passo se aproxima muito do teste de mesa que executamos quando estamos testan- do nosso algoritmo “no papel”. Quando expliquei para você o funcionamento do teste de mesa, à primeira vista não deve ter sido um processo simples, imagino eu. Explicar esse mesmo processo utilizando o Visualg, parece-me um tanto quanto mais complicado, sen- do passível a problemas na interpretação com minhas palavras, levando em conta a informação que eu pre- tendo passar. Por isso, preparei um vídeo, especialmente, para explicar como funciona a execução passo a passo através do Visualg. Quando você tiver visto a facilidade que esse processo lhe proporciona, saiba que quase todas as gran- des linguagens de programação, através de alguma ferramenta de desenvolvimento, permite esse tipo de execução. Isso pode lhe salvar horas no futuro quando os algoritmos se tornarem cada vez mais complexos. Busque sempre saber as facilidades de desenvolvimento disponíveis para cada linguagem de programação que você utilizará para desenvolver seus programas. 38ALGORITMOS E PROGRAMAÇÃO I EXERCÍCIOS SUMÁRIO Vamos aproveitar as novas ferramentas para praticar um pouco mais o desenvolvimento de al- goritmos. Crie os algoritmos conforme os enunciados abaixo. Dica geral: se não lembrar das fórmulas para os cálculos, realize uma breve pesquisa para relembrar. 1. Criar um algoritmo que leia um valor que representará o diâmetro de um círculo e calcule e im- prima a área deste círculo. Exemplo para validação: para entrada = 10, o valor esperado de saída = 78,53975. 2. Criar um algoritmo que leia um valor que representará uma temperatura em graus Célsius. Cal- cule e imprima esta temperatura convertida para Fahrenheit e Kelvin. Exemplo para validação: para entrada = 30 o valor esperado de saída para Fahrenheit = 86, e saída para Kelvin = 303,15 3. Criar um algoritmo para calcular e imprimir o valor de uma prestação em atraso, considerando a seguinte fórmula: prestação = valor + (juros_dia × dias_atraso) onde juros_dia = valor + %juros. Importante: lembre que em algoritmos não temos um operador pronto para o cálculo de percentual. Exemplo para validação: para entrada valor = 30, dias_atraso = 10 e %juros = 1 o valor esperado de saída = 33 39 ESTRUTURAS CONDICIONAIS Neste capítulo, aprenderemos sobre operadores lógicos e relacionais. Acompanhe-me! 40ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Em alguns exemplos, até verificamos que podemos atribuir valores a variáveis lógicas utilizando esses operadores, mas essa é somente uma pequena funcionalidade que esses operadores nos provêm nos algoritmos que construímos. Uma situação que diversos algoritmos precisam lidar é com condições. No con- texto de um algoritmo, uma condição representa um ponto decisório em que a execução do algoritmo seguirá fluxos diferentes conforme o retorno da expressão condicional. Isso quer dizer que poderemos escrever trechos de códigos diferentes que serão execu- tados somente quando o valor de uma ou mais variáveis respeitar a condição proposta. Fazendo uma analogia com a vida real, podemos exemplificar uma estrutura condicional com a seguinte frase: “Se o tempo será de chuva vou sair de casa com o guarda-chuva, caso contrário sairei de manga curta”. Nessa frase, podemos avaliar exatamente a estrutura condicional que teremos em nossos algoritmos. Vamos analisar primeiramente a condição: “Se o tempo será de chuva”. Nessa expressão, a variável que terá seu valor avaliado é o “tempo” como previsão do tem- po e chuva é o nosso valor de comparação. Agora, analisaremos as hipóteses. Caso a expressão seja verdadeira, a ação será “vou sair de casa com o guarda-chuva”. Caso a expressão seja falsa, a ação será “sairei de manga curta”. Começaremos a realizar condições em nossos algoritmos, iniciaremos com con- dições simples do tipo “se-entao”. ESTRUTURA SE-ENTAO A sintaxe para utilizarmos essas estruturas em nossos algoritmos é a seguinte: Na primeira linha, temos a palavra reservada “se”, que indica o início da estrutura condi- cional. Após, temos entre parênteses, a nossa expressão condicional que pode ser uma expressão simples (uma condição utilizando somente um operador relacional) ou composta (mais de uma condição, cada qual separada por um operador lógico). Por último, temos a palavra reservada “entao”, que indica que está iniciando o conjunto de instruções que serão executadas quando a condição for verdadeira. Na segunda linha, podemos ter uma ou mais instruções (chamamos também de bloco de instruções) que serão executadas até que se finalize a estrutura condicional através da palavra reservada “fimse”, que pode ser vista na terceira linha. Importante: se você notar no exemplo da sintaxe, na linha 2 temos um espaço extra à esquerda. Conforme comentado anteriormente, esse espaço representa a indentação do nosso bloco de instruções. Não é obrigatório indentar os blocos de código, pois não mudará em nada a execução do seu algoritmo. Porém, a indentação é um artifício visual para que saibamos que aquele bloco de código está dependendo de uma determinada situação para ser executado. 41ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Vamos a um exemplo simples, conforme o seguinte enunciado: Escreva um algoritmo que leia um número que representa uma temperatura e escreva “quente” se a temperatura for maior que 30. Considerando essa instrução, nosso algoritmo pode ser construído assim (esse, e os próximos algoritmos daqui em diante, já está na estrutura do Visualg, ou seja, você pode digitá-lo, como aqui se encontra, retirando somente o número das linhas): Vamos analisar a nova estrutura, das linhas 7 à 9. Na linha 7, iniciamos nossa estrutura com a palavra reservada “se”, depois te- mos na nossa condição que é a temperatura maior do que 30 e, no final da linha, a pa- lavra reservada “entao”, que indica que dali em diante teremos o bloco condicional. Na linha 8, a nossa instrução condicional (devidamente indentada), represen- tada pelo comando “escreval”. E por último, na linha 9, finalizamos a estrutura condicional com a palavra reservada, “fimse”. Faça diversos testes no Visualg, colocando valores menores, maiores e iguais a 30 e execute em modo Passo a Passo. Note que a palavra “quente” só será escrita quando o valor digitado for realmente maior que 30. Agora que você já testou bastante esse algoritmo e entendeu o seu funcionamento, escreva e teste um algoritmo, utilizando o Visualg, considerando o seguinte enunciado: Escreva um algoritmo que leia dois números e escreva, “são iguais”, caso estes números sejam realmente iguais. Não colocarei a solução desse algoritmo aqui, pois quero que você pratique os seus co- nhecimentos. Se você está com dúvida de como criar o algoritmo para o enunciado dado, leia novamente o material. ESTRUTURA SE-ENTAO-SENAO Além da estrutura “se-então”, que nos permite executar um bloco de instruções, caso a ex- pressão condicional seja verdadeira, temos também a estrutura “se-entao-senao”, que permite também a execução de um bloco de instruções quando a expressão condicional for falsa. A sintaxe é bem semelhante. Vamos a ela: 42ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Analisando a sintaxe, podemos notar que foi incluída, na linha 3, a palavra reservada “senao”, a qual indica o final das instruções, caso a condição seja verdadeira e, o início das instruções, caso a condição seja falsa. Agora, vamos modificar umpouco o enunciado que vimos anteriormente. Escreva um algoritmo que leia um número que represente uma temperatura e escreva “quente”, se a temperatura for maior que 30 e escreva “frio” caso contrário. Note agora, que na linha 9 temos a palavra reservada “senao”, que indica o final dos comandos, caso a temperatura seja maior que 30 e o início dos comandos caso, seja menor ou igual a 30. Na linha 10 temos a nossa instrução de escrita para quando a condição retornar um valor falso. Na linha 11, temos a finalização de toda a estrutura condicional. Novamente, sugiro que você execute esse algoritmo no Visualg, em formato passo a pas- so, digitando valores maiores, menores e igual a 30. Agora, praticaremos um algoritmo para um enunciado (esse algoritmo também não es- tará com a solução): Escreva um algoritmo que leia dois números. Se os números forem diferentes, calcule a subtração do primeiro pelo segundo número e escreva o resultado. Caso eles sejam iguais, calcule a soma e escreva o resultado. 43ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO EXPRESSÕES CONDICIONAIS COMPOSTAS Até o momento, tanto os exemplos dados, quanto os algoritmos que você deve ter criado para praticar, utilizam expressões condicionais simples, ou seja, possuem somente uma condição. Se você voltar um pouco no conteúdo, verá que temos os operadores lógicos que nos permi- tem realizar expressões que possuem mais de uma condição. Do ponto de vista das estruturas condicionais, a sintaxe é a mesma, mudando somente a ex- pressão presente dentro dos parênteses, mas vamos ver alguns exemplos para que você coloque em prática os operadores lógicos que vimos lá atrás. Vamos considerar um novo enunciado: Escreva um algoritmo que leia 3 números. Escreva “igual”, caso os 3 números sejam iguais ou escreva “diferente”, caso algum deles seja diferente dos demais. Solução: Importante: para analisar esse algoritmo, devemos acionar um pensamento lógico. O enunciado do algoritmo solicitava que fosse feita a comparação entre os três números para verificar se os três são iguais, porém, temos somente dois testes (n1 = n2 e n2 = n3). Podemos construir o algoritmo somente com dois testes, porque no caso de n1 ser igual a n2 e n2 ser igual a n3, podemos assumir implicitamente que n1 é igual a n3. Vamos praticar mais um pouco, considerando o seguinte enunciado: Escreva um algoritmo que leia dois números e escreva “você digitou um nú- mero maior do que 20” caso algum dos números digitados seja realmente maior do que 20. No caso, se nenhum dos números for maior que 20 escreva “os dois números são menores que 20”. 44ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO ESTRUTURA DE SELEÇÃO ANINHADA Nem sempre, ao escrevermos nossos algoritmos, temos regras simples do tipo “se-en- tao” ou “se-entao-senao”. Às vezes, temos várias regras condicionais que não podem ser traduzidas para algoritmos somente com as estruturas, “se-entao-senao”. Suponha que você tenha um problema para resolver, que tenha um enunciado assim: Escreva um algoritmo que leia um número que escreva “positivo”, caso o número di- gitado seja maior que zero, “negativo” caso o número seja menor que zero ou “neutro” se o número for igual a zero. Desse modo, com uma estrutura “se-entao-senao”, conseguimos facilmente atender os dois primeiros requisitos, porém, o último (do neutro) ficará sem atendimento, a não ser, é claro, que utilizássemos três estruturas diferentes do tipo “se-entao”, uma para cada requisito. Vamos ver como ficaria nesse caso: Se você rodar esse algoritmo através do Visualg, verá que ele funciona, perfeitamente, atendendo todos os requisitos do problema. Porém, executando-o em modo passo a passo, notará que, mesmo que você digite um número maior do que zero, a execução do algoritmo realizará os outros dois testes. E isso pode ser um problema. Vamos supor que, no enunciado do algoritmo tenha um outro requisito que diga assim: Escreva um algoritmo que leia um número que escreva “correto”, caso o número digitado for igual a 10. Se não for, o algoritmo deve escrever “positivo”, caso o número digitado seja maior que zero, “negativo” caso o número seja menor que zero ou “neutro” caso o número seja igual a zero. 45ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Dessa maneira, não basta somente adicionar uma nova estrutura para testar se o número é igual a 10. Supondo que nossa ideia seja adicionar uma nova estrutura para o teste igual a 10, anterior as demais, como o algoritmo executará também os próximos testes, no resultado final seria escrito, caso digitado o número 10, primeiro “correto” e na sequência “positivo”, pois os demais testes também seriam executados. Faça o teste no Visualg, digitando o número 10: Para solucionar esse problema, temos ao nosso dispor uma técnica de aninha- mento de condições. Primeiramente, temos que entender o que significa uma estrutura estar aninha- da. No nosso contexto, a melhor definição quando falamos que algo está aninhado é dizer que está envolto. Vamos pensar na nossa estrutura “se-entao-senao”. Porque não podemos aninhar, dentro do bloco do “senao” uma nova estrutura “se-entao-senao”? Na ver- dade, é isso mesmo que temos que fazer para resolver esse tipo de problema. Vamos aninhar as es- truturas condicionais, tantas quantas forem necessárias para atender aos nossos requisitos. Agora que já entendemos o que podemos fazer, o mais importante é: Como fazer? Seguindo o mesmo enunciado, analise como não é nada de outro mundo: Podemos notar que o que foi feito não é a aplicação de um novo conceito, mas sim uma nova técnica. A ideia aqui é utilizar o bloco “senao” para uma nova estrutura condicional. Isso faz com que essa estrutura só seja executada se o primeiro teste retornar um valor falso. Importante: note o quão importante é a utilização da técnica de indentação, nesses casos. Faça o teste retirando os espaços em branco do início da linha e veja como, “visualmente”, fica mais complicado de entender o fluxo do algoritmo. 46ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Agora que já entendemos o funcionamento das estruturas condicionais “se-entao” e “se-en- tao-senao” e também as técnicas de expressões condicionais compostas e de estruturas condicio- nais aninhadas, vamos ver em um enunciado mais prático, como podemos aplicá-las. Escreva um algoritmo que leia três números inteiros que representam as dimensões de um possível triângulo. Esse algoritmo deve verificar primeiramente se as dimensões formam um tri- ângulo, escrevendo “não é um triângulo” quando não formar. Caso forme um triângulo, o algo- ritmo deve classificá-lo como equilátero, isósceles ou escaleno. Seguem as regras: • Para formar um triângulo, nenhum dos lados pode ter comprimento igual a zero e nenhum dos lados pode ter comprimento igual a soma dos demais lados. • Para ser um triângulo equilátero, todos os lados devem ter o mesmo comprimento. • Para ser um triângulo isósceles, dois lados devem possuir o mesmo comprimento. • Para ser um triângulo escaleno, todos os lados devem possuir comprimentos diferentes. Minha primeira dica para esse algoritmo é não olhar a solução que virá na sequência. Lem- bre-se: é muito importante a prática para o desenvolvimento do raciocínio lógico. Vamos aprender as dicas para construção do algoritmo? Primeiramente, tente compreen- der, do ponto de vista prático, as restrições que o enunciado nos impõe. Entenda como elas cor- relacionam para que você possa organizar a construção do seu algoritmo. Quando começar a escrever o algoritmo, tenha em mente que você deve tentar quebrá-lo em partes, para que fique mais simples. Dessa forma, vamos tentar aplicar uma regra do enunciado de cada vez. Sabendo que essa regra funciona (fazendo pe- quenos testes de mesa direcionados), aí sim, passamos à próxima regra. Agora é a hora de pegar o papel e a caneta, para escrevê-lo ou iniciar um novo algo- ritmo no Visualg, caso você se sinta mais confortável. Lembre-se:só pule para a solução quando você tiver concluído ou se você não conseguiu desenvolver por conta própria. 47ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Ao analisar a solução, atente para os comentários (frase que vem após a sequência de duas barras “//”). Quando estiver criando um algoritmo que possua um nível de complexidade maior, utilize a técnica de comentar os trechos que são mais importantes para o seu entendimento. Se você chegou até aqui e ficou um pouco confuso, volte um pouco no material e releia com calma o funcionamento das estruturas condicionais. No final do capítulo, você encon- trará alguns exercícios para praticar. Se desejar, neste momento, você pode tentar resolver algum destes exercícios antes de seguir adiante para o último tipo de estrutura condicional, que pode ser utilizada na construção dos algoritmos. ESTRUTURA DE SELEÇÃO MÚLTIPLA ESCOLHA Antes de entendermos como funciona esse tipo de seleção, vamos deixar claro que ela não é uma estrutura essencial. Isso quer dizer, que os problemas que podemos solucionar com esse tipo de estrutura, também podem ser solucionados com uma estrutura do tipo “se-entao-senao” aninhadas. Iniciaremos por um exemplo de problema e solução, utilizando uma estrutura “se-en- tao-senao”. Posteriormente, solucionaremos o mesmo problema, porém, utilizando uma estrutura de seleção múltipla escolha. Suponha o seguinte problema: Escreva um algoritmo que calculará o valor a ser pago como IPTU (Imposto Predial e Territorial Urbano). Para isso, o algoritmo deverá ler dois números. O primeiro representa o código de um tipo de imóvel e o segundo representa a área do imóvel, cujo IPTU será cal- culado. O cálculo é realizado, multiplicando-se a área do imóvel pelo fator referente ao tipo do imóvel, conforme tabela. Caso o código do tipo do imóvel digitado não esteja presente na tabela, apresente uma mensagem de erro informando: “Tipo do imóvel inválido”. Se o código digitado for válido, realize o cálculo e escreva a área digitada, a descrição do tipo do imóvel e o valor do IPTU calculado. Lembre-se! Primeiro tente solucionar por conta própria, após verá a solução. Obs: a área do imóvel não é necessariamente um número inteiro. Código Tipo Imóvel Fator IPTU 1 Residencial – Casa R$ 200,00 2 Residencial – Prédio R$ 180,00 3 Comercial – Casa R$ 300,00 4 Comercial – Prédio R$ 280,00 5 Industrial R$ 400,00 Executando algoritmo 48ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Espero que você tenha chegado até aqui com um algoritmo que solucione o problema proposto. Não tenho a pretensão que o algoritmo seja igual ao pro- posto, mas acredito que o seu também venha estar bem estruturado para solução do problema. Agora, analisaremos a solução dada. Primeiramente, quero falar de uma técnica que foi usada. Conforme o enunciado do algoritmo, o cálculo do IPTU é o mesmo, independente do tipo do imóvel, o que muda é somente o fator e a descrição do tipo do imóvel. Tendo isso em mente, criamos es- truturas condicionais que somente preenchem vari- áveis para cada tipo de imóvel. No final do algoritmo, na linha 37, uma outra estrutura condicional testa se o fator de multiplicação é igual a zero, informando que, caso esse teste retorne verdadeiro, o código do imóvel digitado é um código inválido. Esse teste se torna verdadeiro no caso de um código inválido, pois na linha 12, a variável fator foi inicializada com va- lor zero. A aplicação dessa técnica permite que não repitamos as linhas 40 à 43 em cada um dos testes realizados pelas estruturas condicionais. 49ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO Agora, analisaremos as estruturas condicionais. Note, entre as linhas 13 e 36, não passam de estruturas condicionais “se-entao-senao” aninhadas. Cada uma das estruturas verifica se o código digitado corresponde ao da estrutura, para, em caso verdadeiro, atribuir os valores corresponden- tes às variáveis “fator” e “tipo imóvel”. Caso a expressão de seleção seja avaliada como falsa, passa para o próximo teste a ser realizado dentro do bloco “senao”, até que atinja o último teste (“código = 5”), onde não é necessário ter uma estrutura “senao”, pois a mensagem de código inválido está sendo validada com o teste simples, realizado na linha 37. Construir o algoritmo, isolando os testes lógicos de seleção do teste lógico de saída, facilitará uma alteração do algoritmo para, por exemplo, colocarmos mais códigos de tipos de imóveis. Nesse caso, bastaria complementarmos o último teste de validação (linha 29) para incluirmos uma estrutura senão e continuaremos conforme a quanti- dade de novos testes que forem necessários. Caso não tenha ficado claro o funcionamento desse algoritmo, sugiro digitá-lo no Visualg, as- sim como está, e executá-lo passo a passo para entender como o mesmo será executado. Siga adian- te somente após entendermos a lógica aplicada. Isso é essencial para compreensão da estrutura de seleção múltipla escolha. Agora que já está bem entendido o funcionamento desse algoritmo, vamos iniciar a análise de uma situação que acontece nele. Especificamente, entre as linhas 13 e 36, como vimos anteriormente, estamos somente verificando o código digitado para atribuirmos o valor às variáveis referentes ao código digitado. Note que a estrutura aninhada já começa a se tornar visualmente complicada para o entendimen- to do algoritmo. Imagina se tivéssemos nas regras do enunciado uma tabela com 10 códigos de tipo de imóveis. Imagine o quão complicado seria essa estrutura condicional. É justamente para resolver esse problema que a estrutura de seleção múl- tipla escolha existe. Com essa nova estrutura não precisamos ficar aninhando estruturas do tipo “se-senao-entao”. Modificaremos esse algoritmo para en- tender como funciona essa estrutura. 50ALGORITMOS E PROGRAMAÇÃO I SUMÁRIO A mudança ocorreu entre as linhas 13 a 36 do primeiro algoritmo, que foram substituídas pelas linhas 13 a 29 desse novo algoritmo. Na linha 13, iniciamos pela palavra reservada, “escolha”, segui- da da variável “código”. Essa instrução indica que está sendo iniciada uma estrutura múltipla escolha que avaliará o valor da variável “códi- go”. Nas linhas 14, 17, 20, 23 e 26, temos a palavra reservada “caso” e os possíveis valores à variável. Isso quer dizer que será testado o valor da variável e a execução pulará à linha do valor correspondente. Ao en- contrarmos o valor correspondente, a execução seguirá pelas linhas de código posteriores até que seja encontrada uma instrução com a palavra reservada “caso”, “fimescolha” e uma outra palavra reservada que ve- remos na sequência. Encontrar uma dessas palavras reservadas indica o final do bloco de instruções do caso. Não ficou claro? Não se preocupe! Analisaremos a estrutura de for- ma isolada e fora do contexto do problema. Agora, com a estrutura isolada, fica mais fácil entendermos como ela funciona. Note na primeira linha a palavra reservada “escolha”, seguida da variável que será testada. Das linhas 2 a 8 temos sempre um caso testado com a palavra reservada homônima, seguido de um bloco de instruções referente ao caso. Agora, na linha 9, surgiu uma nova palavra reservada, chamada “outrocaso”. Conforme havíamos co- mentado anteriormente, três palavras reservadas encerram um bloco de instruções de um caso. São elas “caso”, que indica que um novo teste está inciando; “fimescolha” que indica o final de toda a estrutura de seleção de múltipla escolha, e, agora, a palavra reservada “outrocaso”. Essa palavra “reservada” indica que iniciou um bloco de instruções, que será executado sempre que não for encontrado um caso correspondente para o valor da variável que acompanha o início da estrutura. Dentro da estrutura de seleção de múltipla escolha, podemos ter quantos casos desejarmos, porém, só po- deremos ter um bloco final do tipo “outrocaso”, dentro da estrutura representada pela palavra “fimescolha”. É importante salientar
Compartilhar