Baixe o app para aproveitar ainda mais
Prévia do material em texto
ALGORITMO ETAPA 2 CONCEITOS FUNDAMENTAIS PARA CONSTRUÇÃO DE ALGORITMOS CENTRO UNIVERSITÁRIO LEONARDO DA VINCI Rodovia BR 470, Km 71, nº 1.040, Bairro Benedito 89130-000 - INDAIAL/SC www.uniasselvi.com.br Curso sobre Algoritmo Centro Universitário Leonardo da Vinci Organização Greisse Moser Badalotti Autor Marcio Poffo Reitor da UNIASSELVI Prof. Hermínio Kloch Pró-Reitoria de Ensino de Graduação a Distância Prof.ª Francieli Stano Torres Pró-Reitor Operacional de Ensino de Graduação a Distância Prof. Hermínio Kloch Diagramação e Capa Renan Willian Pacheco Revisão Harry Wiese Caro acadêmico! Parabéns por ter chegado a esta etapa. Agora você vai aprender conceitos mais próximos de linguagens de programação, não as vinculando somente a uma, mas de maneira geral a todas. Neste sentido, serão introduzidos os principais tipos de dados, variáveis, constantes, comandos de atribuição, operadores; enfim, vários conceitos que são muito importantes para você conseguir programar em uma linguagem de programação real. A partir desta etapa, nossos exemplos em pseudocódigo utilizam o “Portugol” para facilitar o seu entendimento das lógicas utilizadas. Para isso, não esqueça, faça todos os exercícios propostos, analise e refaça os exemplos demonstrados que você vai conseguir entendê-los. Este é o caminho para o bom aprendizado de programação. Portanto, bons estudos! 2 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. 1. TIPOS DE DADOS Internamente, um computador utiliza apenas números para manipulação de dados, porém as linguagens de programação nos permitem manipular diferentes tipos de informações de forma transparente. Por exemplo, um número é diferente de uma palavra que contenha caracteres alfanuméricos. Podemos definir tipos de dados como um conjunto de objetos que possuem o mesmo comportamento diante de uma operação a ser realizada com eles (MEDINA; FERTIG, 2006). Neste sentido, nós podemos exemplificar tipos de dados pelo tipo humano, por exemplo, em que todas as pessoas dormem, comem, realizam suas necessidades fisiológicas, o que caracteriza todas elas como um tipo “humano”. 1.1. TIPOS DE DADOS PRIMITIVOS Agora vamos partir para os tipos de dados aceitos em algoritmos, como números inteiros (Z), os quais possuem as mesmas características, então são classificados como tipo “INTEIRO”. Por exemplo, a sequência {1, 2, 3, 4, -1, -2, -3, -4} possuem o mesmo tipo: “inteiro”. O tipo de dados INTEIRO aceita tanto números inteiros positivos quanto negativos. Os números inteiros são utilizados para definir valores que não tenham decimais, como ano, mês, idade, quantidades etc. Analisemos o pseudocódigo de um algoritmo desenvolvido na tabela a seguir. Tabela 1.1 – Algoritmo que utiliza tipo de dado inteiro Algoritmo leAnoNascimento Declara ano: Inteiro Inicio Escreva(“Escreva o ano que você nasceu”) Leia(ano) Escreva(“Você nasceu no ano”, ano) Fim Fonte: O autor Observe no pseudocódigo da Tabela 1.1, o tipo de dado da variável criada é inteiro. Isso significa que apenas números inteiros são aceitos neste tipo de variável. Em casos de linguagens de programação, caso seja informado um valor não inteiro, será causada uma exceção, isto é, um erro na execução do programa. Vamos analisar agora o próximo algoritmo. Neste faz-se um cálculo matemático com os valores das variáveis do tipo inteiro, as quais foram declaradas no algoritmo. 3 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Tabela 1.2 – Algoritmo que utiliza tipo de dado inteiro Algoritmo calculaQuantidadeComprada Declara quantidade1, quantidade2, soma: Inteiro Inicio Escreva(“Escreva a quantidade 1”) Leia(quantidade1) Escreva(“Escreva a quantidade 2”) Leia(quantidade2) soma ← (quantidade1 + quantidade2) Escreva(“A quantidade total comprada é”, soma) Fim Fonte: O autor Para o caso do algoritmo acima, a variável “soma” é do tipo inteiro, assim como as outras duas variáveis, então ela receberá um valor inteiro. Este cálculo é perfeitamente funcional. E quando precisamos calcular valores decimais? Neste caso temos o tipo de dados “REAL”. Os números reais (R) não podem ser atribuídos às variáveis do tipo inteiro, pois elas não suportam decimais. Temos que criar variáveis do tipo real. O tipo de dados real aceita qualquer valor decimal {1.12, 1.65656, 2500.56, -10.52, -1000.2565}. Veja o exemplo do próximo algoritmo. Tabela 1.3 – Algoritmo que utiliza tipo de dado real Algoritmo leSalario Declara salario: Real Inicio Escreva(“Escreva o seu salário”) Leia(salario) Escreva(“O seu salário é”, salario) Fim Fonte: O autor No caso do algoritmo da Tabela 1.3, qualquer valor numérico informado será aceito. Inclusive, caso informado um inteiro será aceito, pois o computador o trata como um decimal. Por exemplo, caso informado o valor 10, o valor processado será 10.0, isto é, como real. No caso deste algoritmo, pode ser informado qualquer valor real {0, 10.50, 1250.25656565569, 9898.46 etc.}. 4 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. Vejamos agora um exemplo de um algoritmo que realiza um cálculo com números reais. Neste caso, criamos variáveis do tipo real, que receberão números decimais, e em seguida aplicamos um cálculo. Analise a tabela 1.4. Tabela 1.4 – Algoritmo que realiza cálculo com tipo de dados real Algoritmo leSalario Declara valorEnergia, valorAgua, valorGasolina, soma: Real Inicio Escreva(“Escreva o custo da energia elétrica”) Leia(valorEnergia) Escreva(“Escreva o custo da água”) Leia(valorAgua) Escreva(“Escreva o custo da gasolina”) Leia(valorGasolina) soma ← (valorEnergia + valorAgua + valorGasolina) Escreva(“O total de gastos é”, soma) Fim Fonte: O autor Note que todas as variáveis, do algoritmo da Tabela 1.4, foram declaradas com o tipo de dados real. Isso porque se sabe que todos os valores aceitos podem ser decimais. Desta forma evitam-se erros de execução em um programa. O mesmo para a variável “soma”, que recebe o cálculo das outras três variáveis. Vamos conhecer agora outro tipo de dado muito utilizado: LITERAL ou também chamado de CARACTERE. Este tipo de dado suporta qualquer caractere alfanumérico, isto é, textos, números, símbolos, espaços, enfim qualquer forma de texto que se deseja armazenar. Vejamos um exemplo escrito em pseudocódigo, na Tabela 1.5, para um algoritmo que utilize o tipo de dados caractere. 5 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Tabela 1.5 – Algoritmo que utilize o tipo de dado caractere Algoritmo leNome Declara nome: Caractere Inicio Escreva(“Escreva o seu nome”) Leia(nome) Escreva(“O seu nome é”, nome) Fim Fonte: O autor Note que no algoritmo escrito na Tabela 1.5, a variável “nome” foi declarada com o tipo de dado caractere. Isso possibilita a variável receber qualquer valor, desde uma letra do alfabeto, um número ou até mesmo um símbolo. Até aqui aprendemos os tipos de dados inteiro, real e caractere. Mas temos um outro tipo de dado muito importante para lhe apresentar: o lógico ou booleano. Estes valores são provenientes da lógica matemática, ou também lógica de Boole (foi o matemático considerado um dos fundadores da matemática) (MEDINA; FERTIG, 2006). Este tipo de dado possui apenas dois valores 0 ou 1, ou, ainda, Verdadeiro (True), ou Falso (False). Neste sentido, um valor lógico pode ser adquirido do resultado de uma afirmação ou proposição lógica. Tabela 1.6 – Algoritmo que utiliza o tipo de dado lógico/booleano Algoritmo leValor Declara valor: Real valorMaior: Booleano Inicio Escreva(“Escreva o valor”) Leia(valor) valorMaior ← (valor > 2000.00) Escreva(valorMaior) Fim Fonte: O autor 6 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitosreservados. Note no algoritmo da Tabela 1.6, em que foi desenvolvida uma expressão lógica, que compara se o valor informado é maior que dois mil. Neste caso, será retornado o valor verdadeiro (true) ou falso (false), atribuído para a variável “valorMaior”. No decorrer deste caderno serão apresentados mais exemplos do uso do tipo de dados booleano. 1.2. TIPOS DE DADOS NÃO PRIMITIVOS Os tipos de dados não primitivos são os tipos de dados construídos a partir dos tipos de dados primitivos (JUNIOR et al., 2014). O vetor ou array é um tipo de variável que pode ser descrito como uma lista de valores do mesmo tipo de dados. Um array pode ser definido também por uma lista. Para acessar algum valor de um array, utiliza-se a sua posição na lista, chamado de índice. Veja um exemplo na Tabela 1.7. Tabela 1.7 – Lista de compras 1. Pão 2. Ovos 3. Carne 4. Macarrão Fonte: O autor Note que a Tabela 1.7 possui uma lista de compras. Cada produto está em uma posição da lista. Por exemplo: a carne está na posição 3 da lista. Então para acessá-la, precisamos ir na posição 3, obviamente. Agora vejamos o pseudocódigo do próximo algoritmo, Tabela 1.8, que exemplifica a utilização de uma variável do tipo array ou vetor. Tabela 1.8 – Algoritmo que utiliza o tipo de dado array Algoritmo escreveLista Declara lista: vetor[0..3] de caractere Inicio lista[0] ← “Pão” lista[1] ← “Ovos” lista[2] ← “Carne” lista[3] ← “Macarrão” Escreva( lista[2] ) // imprime “Carne” Fim Fonte: O autor 7 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Note que a declaração de nosso vetor é de até 4 posições, o que significa que nossa lista limita a armazenar até 4 valores. Note também que para inserirmos valores no vetor do nosso algoritmo “escreveLista”, na Tabela 1.8, iniciamos do índice 0 (zero). Isso porque nas linguagens de programação, a primeira posição de um vetor é sempre o zero. Observe a última linha de nosso vetor, que imprime na tela o valor “Carne”, pois está pegando a posição 2 do vetor, isto é, N -1. Para concluir esta seção, vamos falar um pouco de matriz. Uma matriz também é uma lista de valores, porém esta pode ser chamada de n-dimensional, pois possui duas ou mais “colunas” para armazenar valores. Neste caso, utilizamos o número n de índices para acessar algum dado armazenado. Vamos exemplificar que fica mais fácil de entender. Observe a Tabela 1.9. Tabela 1.9 – Algoritmo que utiliza o tipo de dado matriz Algoritmo escreveMatriz Declara lista: array[0..3, 0..1] de caractere Inicio lista[0, 0] ← “Pão” lista[0, 1] ← “Caro” lista[1, 0] ← “Carne” lista[1, 1] ← “Caro” lista[2, 0] ← “Macarrão” lista[2, 1] ← “Barato” Escreva( “A ”, lista[2, 0], “ está ”, lista[2, 1] ); // imprime “A Carne está cara” Fim Fonte: O autor Observe agora a Figura 1.1, a seguir, que possui a representação da matriz do algoritmo acima em forma de uma planilha ou tabela. Desta forma, você pode idealizar como uma matriz funciona. Figura 1.1 – Representação da matriz do algoritmo da tabela 1.9 Fonte: O autor 8 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. Observe que a posição da “carne”, por exemplo, índice “1, 0” possui a descrição do produto, e a posição “1, 1” possui a designação do preço se é “Caro”. É assim que funciona uma matriz em qualquer linguagem de programação. RESUMO DOS TIPOS DE DADOS Tabela 1.10 – Tipos de dados Tipo de dado Exemplo Inteiro 1, 2, 3, 4, 0, -1, -2, -3, -4 Real 1.50, 250.56595, -0.523, -2.3454 Caractere “casa”, “carro”, “Marcio”, “12ABA” Booleano Verdadeiro (True), Falso (False) Array {1, 2, 3, 4, -5, -6} Matriz {“Carne”, “Cara”} Fonte: O autor 2. VARIÁVEIS E CONSTANTES No desenvolvimento de um algoritmo, seja em pseudocódigo quanto em uma linguagem de programação real, a utilização de variáveis é quase que inevitável, conforme você deve ter notado em nossos exemplos de algoritmos até agora. Mas o que é uma variável? E qual é a diferença entre variável e constante? 2.1. VARIÁVEIS Uma variável pode ser entendida como um endereço de memória para armazenar algum dado ou informação temporariamente (contêiner de armazenamento) (TEIXEIRA, 2011). No decorrer da execução do programa, o conteúdo da variável pode ser alterado. Devido a isso chama-se variável. Como já foi mencionado na Seção 1 desta unidade, toda variável possui um tipo de dado, que define qual é o tipo que pode ser armazenado nela. Neste sentido, imagine uma variável, ou até mesmo uma constante que será mencionada a seguir, possa ser exemplificada com uma caixinha com um rótulo que a identifica. Veja a figura a seguir que ilustra isso (LIMA, 2015). Figura 2.1 – Exemplo de como pode-se imaginar uma variável Fonte: Lima (2015, p. 18) 9 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Embora já foram apresentados exemplos de pseudocódigos, vamos apresentar mais um, utilizando variáveis. Segue exemplo. Tabela 2.1 – Algoritmo para ler valor informado e imprimir na tela Algoritmo leValorInformado Declara nome: Caractere salario: Real Inicio Escreva(“Escreva o seu nome”) Leia(nome) Escreva(“Escreva o seu salário”) Leia(salario) Escreva(“Seu nome é”, nome, “ e seu salário é ”, salario) Fim Fonte: O autor 2.2. CONSTANTES Uma constante também é uma área de memória para armazenar dados. Porém uma constante não pode ter seu conteúdo alterado em tempo de execução de um programa, isto é, ela possui seu valor predefinido do início da execução do programa até o seu final. Normalmente são utilizados para identificar conceitos matemáticos que possuam valor definido, como por exemplo o “pi”, que possui seu valor fixo 3.1416. Mas assim como toda variável possui um tipo de dado, uma constante também possui. Para criar uma constante para armazenar o valor de “pi”, por exemplo, precisamos que a constante seja do tipo real, por se tratar de um número decimal. Vejamos em nosso próximo pseudocódigo uma constante sendo utilizada. Note que ela é declarada já com seu valor predefinido, e o mesmo não é alterado em tempo de execução. 10 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. Tabela 2.3 – Algoritmo que utiliza constante em sua lógica Algoritmo calculaValorPI Declara constante valorPI = 3.1416 Declara resultado: Real quantidade: Inteiro Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) resultado ← (valorPI * quantidade) Escrever(“O resultado é ”, resultado) Fim Fonte: O autor Observe a Tabela 2.3 que a constante foi utilizada normalmente como se fosse uma variável, para fins de cálculo. A única diferença é que a constante não pode receber outro valor durante a execução do programa, isto é, seu valor permanece inalterado. 3. COMANDOS DE ATRIBUIÇÃO O comando de atribuição nos permite atribuir um valor para uma determinada variável, sendo que o valor atribuído deve ser compatível com o tipo de dado da variável. Por exemplo, se a variável for do tipo integer, então ela pode receber apenas números inteiros. Tabela 3.1 – Comando de atribuição. identificador ← expressão; Fonte: O autor Conforme pode ser analisada a Tabela 3.1, o termo “identificador” é a variável e o termo “expressão” é o valor ou uma expressão que retornará um valor para ser atribuído para a variável. Em pseudocódigo, o símbolo utilizado para atribuição é ←. Nos exemplos anteriores de pseudocódigo, você pode observar que em todos eles utilizamos este símbolo para designar atribuição de valor para uma variável. 11 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Tabela 3.2 – Utilizando comando de atribuição. Algoritmo atribuicao Declara idade: Integer resultado: Real nome: Caractere Inicio Idade ← 30 resultado ← (1 + 45.568) nome ← “Teste sistema” Fim Fonte:O autor Em linguagens de programação são utilizados outros símbolos para indicar atribuição. Veja na tabela a seguir alguns deles. Tabela 3.4 – Comandos de atribuição em algumas linguagens de programação Linguagem de Programação Comando Delphi := Java = Fonte: O autor 4. COMANDOS DE ENTRADA E SAÍDA DE DADOS Em linguagens de programação é muito importante existir um meio de entrada de dados, pois é a partir desta funcionalidade que se pode tratá-los, isto é, processá-los. Em nosso estudo, como estamos utilizando pseudocódigo para representar algoritmos, utilizamos o comando “Leia”. Tabela 4.1 – Comando de entrada de dados para o algoritmo processar Algoritmo comandoLeia Declara quantidade: Inteiro Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Fim Fonte: O autor 12 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. Além disso, também é muito importante um meio para saída de dados da aplicação, isto é, um meio de proporcionar a saída dos dados gerados. Neste sentido, um comando que permita imprimir algo em um dispositivo de saída, como uma impressora, tela, disco físico etc. Para isso, temos o comando “Escreva”, em algoritmos. Tabela 4.1 – Comando de saída de dados processados por um algoritmo Algoritmo comandoEscreva Declara quantidade: Inteiro Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Escreva(“A quantidade informada foi ”, quantidade) Fim Fonte: O autor 5. OPERADORES LÓGICO E RELACIONAIS Operadores são utilizados para combinar as variáveis e constantes utilizadas em nossos algoritmos, fornecendo um valor como resposta. 5.1 OPERADORES LÓGICOS Os operadores lógicos são de muita importância para a todas as estruturas de algoritmos, principalmente, estruturas baseadas na programação com comandos condicionais, seletivas de repetição (loop). Fundamentalmente, os operadores lógicos são baseados nas tabelas conhecidas por tabelas verdade, que apresentam resultados booleanos, isto é, verdadeiro (true) ou falso (false), conforme as comparações realizadas nos algoritmos. Além disso, os símbolos de comparações podem variar de uma linguagem de programação para outra. Mas em nosso contexto, vamos utilizar os símbolos normalmente utilizados em pseudocódigos. Seguem operadores lógicos em ordem de prioridade para execução. 13 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Figura 5.1 – Operadores lógicos por ordem de prioridade Fonte: Leite (2006, p. 53) Vejamos agora um exemplo do emprego dos operadores lógicos em uma simples tabela verdade. Você se lembra da tabela verdade? Caso não lembre, leia as explicações passo a passo a seguir. Figura 5.2 – Exemplo de tabela verdade para operadores lógicos Fonte: Leite (2006, p. 53) Analise a terceira coluna “.não. A” da Figura 5.2. Está sendo realizada uma negação para os valores atribuídos para “A”. Neste caso, basta inverter os valores, isto é, onde for verdadeiro é transformado em falso e vice-versa. O mesmo ocorre na quarta coluna, mas neste caso, para o “B”. A quinta coluna aplica a conjunção, que retorna verdadeiro quando os dois valores tiverem valor verdadeiro, ou retorna falso nos demais casos. A última coluna da tabela verdade ilustrada na Figura 5.2, está aplicando a disjunção, e neste caso, retorna verdadeiro sempre que um dos dois valores tiver valor verdadeiro. Este é um simples e prático exemplo de como funciona uma tabela verdade, muito importante para o aprendizado de lógica de programação. 5.2. OPERADORES RELACIONAIS Os operadores relacionais são utilizados para realizar comparação de valores, resultando em um valor booleano – Verdadeiro (true) ou Falso (false). Existem alguns operadores relacionais que auxiliam nas comparações que normalmente utilizamos em 14 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. nossos algoritmos: igual, diferente, maior, menor, maior ou igual e menor ou igual. Veja a tabela a seguir, que explica cada um deles. Figura 5.2 – Operadores relacionais por ordem de prioridade Fonte: Leite (2006, p. 52) Que tal exemplificarmos os operadores relacionais na prática? Vamos criar um novo algoritmo que realize comparações. Observe-o em nossa Tabela 5.1. Tabela 5.1 – Algoritmo com a utilização de operadores relacionais Algoritmo operadoresRelacionais Declara quantidade: Inteiro resultado: Booleano Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) resultado ← quantidade = 20 Escreva(“A expressão possui o valor ”, resultado) Fim Fonte: O autor No caso do algoritmo acima, descrito na Tabela 5.1, realiza-se uma comparação lógica para descobrir se o valor informado pelo usuário é igual a 20. Caso for, então a variável “resultado” recebe o valor verdadeiro (true), e caso contrário, recebe falso. Várias comparações diferentes poderiam ser realizadas com outros operadores, por exemplo, comparar se dois valores são diferentes, ou se um é maior que o outro etc. 15 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO 6. EXPRESSÕES ARITMÉTICAS E LÓGICAS 6.1. EXPRESSÕES ARITMÉTICAS As expressões aritméticas são expressões que apresentam como resultado um valor numérico, isto é, um número inteiro ou real. Neste sentido, expressões aritméticas são aquelas cujos operandos e operadores são de tipos numéricos. Aqui são cálculos matemáticos. A seguir são listados os operadores aritméticos mais utilizados em algoritmos e linguagens de programação, porém deve ser lembrado que alguns deles podem ter o símbolo diferente em determinadas linguagens. Tabela 6.1 – Lista de operadores aritméticos Operador Símbolo Descrição Adição + Soma dois ou mais valores Subtração - Subtrai dois ou mais valores Multiplicação * Multiplica dois ou mais valores Divisão / Divide dois ou mais valores Exponenciação ^ a^x valor de “a” elevado a potência “x” Módulo Mod Retorna o resto da divisão de dois números Fonte: O autor Agora que conhecemos os operadores aritméticos, vamos praticar, desenvolvendo um algoritmo. Analise a Tabela 6.2, e reescreva o exemplo em seu caderno para aprender melhor. Tabela 6.2 – Algoritmo com expressão aritmética Algoritmo expressaoAritmetica Declara quantidade: Inteiro valor : Real resultado: Booleano Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Escreva(“Escreva o valor”) Leia(valor) valor ← ( (quantidade * valor) + 10/100) Escreva(“O valor total é ”, valor) Fim Fonte: O autor 16 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. 6.2 EXPRESSÕES LÓGICAS As expressões lógicas são expressões que apresentam como resultado um valor booleano, isto é, verdadeiro ou falso. Nestes tipos de expressões são utilizados tanto operadores lógicos quanto relacionais, e podem ainda ser combinados com expressões aritméticas. Quando duas ou mais expressões que utilizam operadores lógicos e relacionais forem combinadas, devem-se utilizar parênteses para apresentar a ordem de precedência (ALMEIDA, 2008). Os operadores mais utilizados nesses tipos de expressões são os operadores lógicos, listados na Figura 5.1. As tabelas verdade são um exemplo de expressões lógicas. Tabela 6.3 – Exemplo de tabela verdade A B A ou B A e B não A não B F F F F V V F V V F V F V F V F F V V V V V F F Fonte: O autor A Tabela 6.3 apresenta uma tabela verdade. Note que as duas primeiras colunas definem o valor para as expressões A e B. As demais colunas aplicam os operadores lógicos. Note que na tabela verdade ilustrada na Figura 5.2 descrevemos os valores completos, e nesta, da Tabela 6.3, utilizamos “F” para designar valor falso e “V” para verdadeiro. 6.3 PROCEDÊNCIA DE OPERADORES Existe uma regra matemática quando se executam expressões aritméticas. A ordem de prioridade da análise dos operadores em uma expressão aritmética é chamada de precedência de operadores. Sempre que umaexpressão aritmética precisa ser avaliada em um algoritmo, o analisador de sintaxe processa a expressão priorizando certos operadores. As expressões internas que contêm estes operadores são analisadas primeiro e seu valor a substitui, permanecendo nos cálculos posteriores seu valor calculado. Logo depois, a próxima expressão interna, dentro da ordem de priorização, é analisada e seu valor a substitui em memória, e assim seguindo o cálculo até que todas as expressões internas sejam substituídas por seu valor. Isso é feito até o final em que todas as expressões internas são substituídas por seu valor, e estes são calculados em conjunto, dentro da ordem de prioridade, resultando em um único valor. Este é o resultado final de toda a expressão. 17 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Tabela 6.4 – Prioridade das operações aritméticas 1. Parênteses; 2. Potenciação; 3. Multiplicação, divisão, resto da divisão e divisão interna; 4. Adição e subtração. Fonte: O autor Neste sentido, para que se obtenha uma prioridade diferente de cálculos, são utilizados parênteses para separar as expressões que devem ser calculadas separadamente. Isso significa que os parênteses priorizam a análise e execução de uma expressão. Isso pode ser visto na Tabela 6.4, que apresenta a ordem de priorização das operações. Vamos apresentar alguns algoritmos, explicando-os. Tabela 6.5 – Algoritmo com expressão aritmética Algoritmo procedencia1 Declara quantidade: Inteiro valor : Real resultado: Booleano Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Escreva(“Escreva o valor”) Leia(valor) valor ← (quantidade + quantidade) * valor Escreva(“O valor total é ”, valor) Fim Fonte: O autor Observe o algoritmo da Tabela 6.5, o qual possui no cálculo uma soma da variável “quantidade”, cujo resultado é multiplicado pelo conteúdo da variável “valor”. Observe que, neste caso, a prioridade ocorre na soma, isto é, primeiro é realizada a soma da expressão “quantidade + quantidade”, e depois ocorre a multiplicação, devido a soma estar entre parênteses. De acordo com nossa Tabela 6.4, tudo o que está dentro de parênteses é calculado em separado. 18 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. Tabela 6.6 – Algoritmo com expressão aritmética Algoritmo procedencia2 Declara quantidade: Inteiro valor : Real resultado: Booleano Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Escreva(“Escreva o valor”) Leia(valor) valor ← quantidade^2 * valor Escreva(“O valor total é ”, valor) Fim Fonte: O autor Observe o algoritmo da Tabela 6.6, cujo cálculo possui a variável “quantidade” elevada à potência 2, além da multiplicação pela variável “valor”. Note que, neste caso, a prioridade ocorre no cálculo de potência, isto é, primeiro é realizado o cálculo “quantidade” elevada à potência 2, para depois seu resultado ser multiplicado pela variável valor. Essa regra está descrita na Tabela 6.4. Tabela 6.7 – Algoritmo com expressão aritmética Algoritmo procedencia3 Declara quantidade: Inteiro valor : Real resultado: Booleano Inicio Escreva(“Escreva a quantidade”) Leia(quantidade) Escreva(“Escreva o valor”) Leia(valor) valor ← (quantidade/10)^quantidade * valor Escreva(“O valor total é ”, valor) Fim Fonte: O autor 19 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO E agora? Qual é a procedência que ocorre no algoritmo da Tabela 6.7? Calma! É simples. Vamos analisando a Tabela 6.4 e seguir a procedência dos operadores. Desta forma descobriremos como o algoritmo calculará. O cálculo inicia pela expressão que está entre parênteses. Depois disso, é realizado o cálculo da potenciação, que, neste caso, é o resultado da divisão que está entre parênteses elevado ao valor da variável “quantidade”. Por fim, o resultado dos cálculos anteriores será multiplicado pelo valor da variável “valor”. 20 ALGORITMO Copyright © UNIASSELVI 2016. Todos os direitos reservados. REFERÊNCIAS ALMEIDA, M. Curso essencial de lógica de programação. São Paulo: Digerati Books, 2008. JUNIOR, D. P.; NAKAMITI, G. S.; BIANCHI, F; FREITAS, R. L.; XASTRE, L. A. estrutura de dados e técnicas de programação. Rio de Janeiro: Elsevier, 2014. LEITE, M. Técnicas de programação: uma abordagem moderna. Rio de Janeiro: Brasport, 2006. LIMA, G. S. Curso completo de programação e algoritmos. Salvador: 2015. MEDINA, M.; FERTIG, C. Algoritmos e programação. São Paulo: Novatec, 2006. TEIXEIRA, C. Construção de algoritmos no século XXI. Independentes, 2011. 21 Copyright © UNIASSELVI 2016. Todos os direitos reservados. ALGORITMO Centro Universitário Leonardo da Vinci Rodovia BR 470, km 71, n° 1.040, Bairro Benedito Caixa postal n° 191 - CEP: 89.130-000 - lndaial-SC Home-page: www.uniasselvi.com.br
Compartilhar