Baixe o app para aproveitar ainda mais
Prévia do material em texto
Autoria: Maxwell Félix ALGORITMOSALGORITMOS COMPUTACIONAISCOMPUTACIONAIS SSEJAEJA BEMBEM--VINDOVINDO!! ReitoR: Prof. Cláudio ferreira Bastos Pró-reitor administrativo financeiro: Prof. rafael raBelo Bastos Pró-reitor de relações institucionais: Prof. Cláudio raBelo Bastos Pró-reitor acadêmico: Prof. HerBert Gomes martins direção ead: Prof. riCardo deiBler ZamBrano Júnior coordenação ead: Profa. luCiana rodriGues ramos Todos os direitos reservados. Nenhuma parte desta publicação pode ser reproduzida, total ou parcialmente, por quaisquer métodos ou processos, sejam eles eletrônicos, mecânicos, de cópia fotostática ou outros, sem a autoriza- ção escrita do possuidor da propriedade literária. Os pedidos para tal autorização, especificando a extensão do que se deseja reproduzir e o seu objetivo, deverão ser dirigidos à Reitoria. expediente Ficha técnica autoria: maxwell félix suPervisão de Produção ead: franCisCo Cleuson do nasCimento alves design instrucional: emanoela de araúJo Projeto gráfico e caPa: franCisCo erBínio alves rodriGues diagramação e tratamento de imagens: ismael ramos martins revisão textual: emanoela de araúJo Ficha catalogRáFica catalogação na publicação biblioteca centRo univeRsitáRio ateneu FÉLIX, Maxwell. Algoritmos Computacionais. Maxwell Félix. – Fortaleza: Centro Uni- versitário Ateneu, 2022. 124 p. ISBN: 1. Lógica. 2. Tópicos preliminares. 3. Estruturas de controle. 4. Estruturas de dados. Centro Universitário Ateneu. II. Título. SSEJAEJA BEMBEM--VINDOVINDO!! Caro estudante, É com grande satisfação que apresentamos o material didático da disciplina Algoritmos Computacionais. Os algoritmos são a essência da lógica de programação de computadores. Portanto, em um primeiro contato com a área computacional, claro, para aqueles que estão começando agora, os algoritmos são um dos assuntos fundamentais. Ao ler este material, você terá noções sobre lógica de programação, tópicos preliminares, estruturas de controle e estruturas de dados. Este livro está dividido em quatro unidades de acordo com a ementa da disciplina. Iniciaremos nossos estudos lendo sobre raciocínio lógico, ou seja, como ideias e pensamentos são organizados a fim de que possam fluir para o desenvolvimento de programas de computador, uma atividade que, sem dúvidas, faz uso de ideias estruturadas. Posteriormente, veremos os tópicos preliminares, conhecimento necessário para que possamos entender um assunto importantíssimo: variáveis e constantes. A programação depende desse entendimento para aprender como funcionam as estruturas de decisão, seleção e controle, as quais são fundamentais para a atividade de programação de computadores. Para finalizar, estudaremos sobre as estruturas de dados, uma técnica de programação que nos permite estender o conhecimento sobre variáveis. Vamos aprender que as variáveis vão muito além de um espaço de memória que guarda um valor único, com um nome comum. Durante este curso, você conhecerá ferramentas de trabalho que são fundamentais para aprender a programar. Nesse sentido, incentivamos que você também pesquise e conheça o perfil das linguagens de programação mais usadas no mercado de trabalho. Vale muito a pena aprofundar os estudos em desenvolvimento de sistemas. Bons estudos! SUMÁRIO CCONECTEONECTE--SESE AANOTAÇÕESNOTAÇÕES RREFERÊNCIASEFERÊNCIAS Estes ícones aparecerão em sua trilha de aprendizagem e significam: SUMÁRIO 1. Noções de lógica ..............................................................8 2. Notação de lógica ...........................................................12 3. Proposição......................................................................13 4. Conectivos lógicos e tabela verdade ..............................15 5. Propriedades (associativa, comutativa e distributiva) .... 18 6. Fluxo e lógica nos algoritmos .........................................19 Referências ........................................................................32 01 1. Tipos primitivos...........................................................36 2. Constantes, variáveis e comandos de atribuição .......39 3. Expressões aritméticas ..............................................45 4. Expressões lógicas.....................................................49 5. Comandos de entrada e saída ...................................54 Referências ....................................................................63 02 TÓPICOS PRELIMINARES LÓGICA DE PROGRAMAÇÃO 1. Variáveis compostas homogêneas unidimensionais .......................................................96 2. Variáveis compostas homogêneas multidimensionais ...................................................102 3. Variáveis compostas heterogêneas .......................107 4. Estrutura de registro ...............................................109 5. Atribuição de registro..............................................111 6. Leitura e escrita de registro ....................................112 Referências ................................................................123 04 ESTRUTURAS DE DADOS 1. Estrutura sequencial ................................................... 68 2. Estrutura de seleção................................................... 71 3. Estrutura de seleção composta .................................. 75 4. Estrutura de seleção encadeada ................................ 79 5. Estrutura de repetição ................................................ 82 Referências .................................................................... 92 03 ESTRUTURAS DE CONTROLE ApresentaçãoApresentação Vamos iniciar nossos estudos sobre tópicos preliminares de lógica e algoritmos. É importante compreender e estudar sobre variáveis e constantes, porque, em programação de computadores, elas estão por todo o ciclo de desenvolvimento. São as variáveis e as constantes que movimentam e permitem o fluxo de informação, estando diretamente envolvidas no cálculo e no processamento de todas as informações que entram ou saem do sistema. Compreender como a ciência da computação trata a informação é fundamental. Chamamos de tipos primitivos a classificação da informação para efeito de processamento. Existem também as expressões aritméticas e lógicas. São essas expressões que permitem as comparações, os testes de valores e a tomada de decisão durante o fluxo do programa. Elas muitas vezes são usadas em conjunto não somente para cálculos, mas também durante todo o processo da informação. Em banco de dados, por exemplo, as expressões lógicas são bastante utilizadas. Por fim, vamos aprender sobre os comandos de atribuição e os comandos de entrada e saída de dados. Os comandos de entrada e saída E/S de dados são de suma importância, pois fazem o sistema funcionar. Nesta unidade, portanto, vamos entender melhor o que estudamos sobre algoritmos e lógica de programação, porque vamos usar o conhecimento adquirido até aqui no entendimento dos novos assuntos. Unidade 02 tópicos preLimiNarestópicos preLimiNares 36 ALGORITMOS COMPUTACIONAIS| OOBJETIVOSBJETIVOS DEDE APRENDIZAGEMAPRENDIZAGEM • Dominar o conceito e o funcionamento das variáveis e das constantes; • Compreender como funcionam as expressões aritméticas; • Adquirir conhecimento sobre expressões lógicas na programação de com- putadores; • Entender o uso dos comandos de E/S. 1. tipos primitivos1. tipos primitivos De acordo com Forbellone e Eberspacher (2005), para falarmos de tipos primitivos, primeiro temos que compreender a importância da informação. Como obra-prima, a informação justifica a necessidade da existência dos computadores, somente eles são capazes de gerar, manipular e armazenar o volume de informação de nossos dias de forma eficiente e eficaz, com alta performance. Estamos falando da informação manipulada por computadores, visto que estamos estudando algoritmos computacionais, ou seja, o princípio da programação de computadores. Entretanto, temosque observar o seguinte: Devemos observar que existe uma tênue diferença entre dado e informação. Por exemplo, ao citarmos uma data, como 21 de setembro, estamos apresentando um dado; ao dizermos que esse é o Dia da Árvore, estamos agregando valor ao dado data, apresentando uma informação. (FOR- BELLONE; EBERSPACHER, 2005, p. 24). Segundo Manzano e Oliveira (2005), é necessário compreender os tipos de informação, os quais se apresentam em dois tipos básicos: dados e instruções. Os dados são a obra-prima que, quando tratados e processados, formam as informações, sendo divididas em quatro tipos primitivos que serão utilizados na construção dos algoritmos, como segue: ALGORITMOS COMPUTACIONAIS 37| Dados • Inteiros: representados por qualquer valor numérico pertencente ao conjunto dos números inteiros relativos, positivos ou negativos. Exemplo: 10, 29, 45, - 30, - 7. • Reais: representados por qualquer valor numérico pertencente ao conjunto dos números inteiros relativos, positivos ou negativos e fracionários. Exemplo: 10, 29, 45, 12.987, 89,01, - 5, - 210. • Caracteres: representados por qualquer sequência contendo letras, números e símbolos. Toda sequência do tipo caracteres deve estar entre aspas (“ ”). Existem outras denominações para esse tipo de dado: string, literal, alfanumérico. Exemplo: “Programação de Computadores”; “Celular: (099) 9 8888- 7777”; “Opção Inválida!”; • Lógicos: representados por dois únicos valores, do tipo verdadeiro ou falso, porém, apenas um dos dois valores pode ser representado por vez. Podemos atribuir a uma variável um valor lógico. Outra observação importante é que esses valores devem ser delimitados por (.). Exemplo: contador:=.T. ou quebra:=.F. Instruções Em programação de computadores, as instruções são definidas como um conjunto de palavras-chaves, um vocabulário completo de linguagem de programação, por exemplo. Agora, você tem ideia de quantas linguagens de programação existem? Então, imagina agora o tamanho desse conjunto de palavras-chaves. Para escrever um programa de computador, usamos uma dessas linguagens de programação, na verdade chamamos de instrução cada linha escrita em um programa de computador. Conforme Manzano e Oliveira (2005, p. 19): 38 ALGORITMOS COMPUTACIONAIS| Deve-se ainda considerar que existem várias linguagens de programação, como: Pascal, C, Basic, SmalTalk, Fortran, Co- bol, Java, entre outras, sendo que uma determinada instrução para realizar uma tarefa em um computador poderá ser escrita de forma diferente, dependendo da linguagem utilizada. Figura 01: Exemplo 01 de instruções em um programa de computador. Fonte: Elaborada pelo autor. Por isso dizemos que um programa de computador é um conjunto de instruções estruturadas que, quando executadas, realizam uma determinada tarefa. Começamos a escrever instruções para o computador quando redigimos os primeiros algoritmos. Figura 02: Exemplo 02 de instruções em um programa de computador. Fonte: Elaborada pelo autor. ALGORITMOS COMPUTACIONAIS 39| Os exemplos contidos nas figuras 01 e 02 são somente para ilustrar o conjunto de instruções que encontramos dentro de um programa de computador. Outro detalhe importante é que utilizamos a linguagem Java. Em outras linguagens, podem existir pequenas diferenças no nome e no uso de cada instrução, mas o programa vai entender os objetivos propostos. Outro exemplo clássico de instruções que podemos mencionar aqui tem relação com os comandos do sistema operacional. Cada comando é uma instrução que o computador executa. Hoje, quando você deseja formatar um pendrive, basta colocá-lo na porta USB e, com o mouse, dá a instrução para o computador fazer a formatação. 2. coNstaNtes, variáveis e comaNdos de atribuição2. coNstaNtes, variáveis e comaNdos de atribuição Os conceitos de constantes e variáveis podem ser pensados juntos, pois acreditamos que isso nos ajuda a mentalizar melhor as características de cada um dos conceitos. Segundo Manzano e Oliveira (2005), em algoritmos e em programação de computadores, o entendimento desses conceitos é muito importante. Vejamos: • Constante: “Tem-se como definição de constante tudo aquilo que é fixo ou estável.” (MANZANO; OLIVEIRA, 2005, p. 4). Em programação de computadores, dizemos que uma variável é constante quando seu valor não sofre alterações de nenhum tipo durante o decorrer do fluxo de execução do programa. Surge a pergunta: Como criar uma variável do tipo constante? Exemplo: índiceAnual:=0,15 msgProcesso:=”Processamento finalizado com sucesso!!!” salMínimo:=1.212,00 • Variáveis: “Tem-se como definição de variável tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante.” (MANZANO; OLIVEIRA, 2005, p. 4). Ao contrário do que estudamos em constante, em programação de computadores, a variável tem seu valor alterado toda hora, isto é, seu valor é incerto, variando de acordo com o processamento. 40 ALGORITMOS COMPUTACIONAIS| Quais são as características de uma constante ou variável? Conforme Manzano e Oliveira (2005), cada variável precisa ter um nome único para ser identificada dentro do algoritmo/programa, mas existem ainda algumas regras que devem ser observadas. As características especiais de uma variável são as seguintes: • É uma entidade (espaço na memória) reservada para guardar informação. • O nome de uma variável pode ser criado com um ou mais caracteres. • Não poderá ser usado o nome de uma palavra reservada ou uma instrução de linguagem. • O primeiro caractere do nome de uma variável não pode ser numérico. • Não podem ser usados caracteres especiais no nome da variável, apenas o ( _ ) underline. • O conteúdo da variável pode ser consultado, alterado ou até mesmo apagado a qualquer momento. • Quando alteramos o valor de uma variável, o valor anterior será perdido. A variável armazena sempre o último valor. Para que possamos diversificar nosso conhecimento, é preciso entender que, na manipulação de dados, existem ainda os identificadores. Vejamos o que nos diz Ferrari e Cechinel (2008, p. 30): Para que os dados sejam manipulados no computador, é necessário que estes estejam associados a um nome, um identificador. O conteúdo deste identificador será o dado em si e o seu nome será usado para acessar o dado e realizar operações com o mesmo. Uma analogia útil para entender o conceito e a necessidade de utilização do identificador seria pensar no mesmo como uma placa de sinalização que indica (delimita) uma determinada região ou espaço na memória do computador onde o dado (informação) desejado está lo- calizado. Sendo assim, toda vez que se deseja acessar uma determinada informação utilizamos o nome dessa placa de sinalização e recuperamos o conteúdo que está localizado dentro do espaço delimitado pela mesma. ALGORITMOS COMPUTACIONAIS 41| Ainda dentro das características das constantes e variáveis, temos duas que são necessárias conhecer. Os tipos de dados da variável devem ser um dos aqui estudados, a saber: caracteres, numéricos ou lógicos. Já as informações acerca da variável são apresentadas em conformidade com seu tipo. Exemplo: nome:= “João da Silva Porto”; informação, variável do tipo caractere idade:= 18; informação, variável do tipo inteiro salário:= 4500,00; informação, variável do tipo real situação:= “A”; informação, variável do tipo lógico Figura 03: Algoritmos como exemplos de comandos, variáveis e instruções. Fonte: Elaborada pelo autor. Como podemos observar na Figura 03, definimos os tipos de dados e atribuímos a eles seus respectivos valores. Assim, a variável está declarada, evitando-se erros de declaração de variável. Em seguida, utilizamos os comandos de entrada (comando leia) e saída (comando escreva) de dados, com os quais manipulamos as variáveis no fluxo do algoritmo. 42 ALGORITMOS COMPUTACIONAIS| Segundo Manzano e Oliveira (2005), uma variável tem muita importância dentro do contexto da programação de computadores.É relevante compreender ainda que uma variável pode executar dois papéis. Portanto, quando sofre alguma modificação, sofre uma ação, mas também pode ser considerada uma variável de controle quando monitorada, com seu valor checado sempre que necessário, isso tudo, é claro, durante o fluxo de execução do programa. Um programa de computador funciona com base em variáveis, por isso é fundamental compreender como elas funcionam. Sobre a nominação de variáveis, uma dica é sempre criar nomes para facilitar a identificação, pois, quando codificamos o nome da variável, dificultamos a manutenção desse programa por outros programadores, já que, como sabemos, na área de desenvolvimento de software, nem sempre o suporte e a manutenção de software são feitos pelo mesmo programador que o criou, até porque a maioria dos sistemas não é documentado a esse nível. Tabela 01: Nomes de constantes/variáveis. CODIFICADA IDENTIFICÁVEL TEOR DA VARIÁVEL nxsb salBase Salário base nxsa salAnterior Salário anterior cxn nomeFunc Nome do funcionário nxs sexo Sexo nxi idade Idade nxrj índiceReajuste Índice de reajuste de salários dxrj dataReajuste Data do reajuste de salários Fonte: Elaborada pelo autor. Como podemos abstrair o conhecimento sobre variáveis? Vejamos a seguir: Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado ao longo do tempo durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. (MORAES, 2000, p. 15). ALGORITMOS COMPUTACIONAIS 43| FFIQUEIQUE ATENTOATENTO Como já mencionado anteriormente sobre a importância de compreender como funcionam as variáveis e as constantes, todos os valores manipulados pelos programas, na grande maioria das vezes, passam pelas variáveis. Características à parte, é interessante observar que os recursos dos comandos de atribuição poupam tempo e deixam o programa mais enxuto. Portanto, vale muito a pena adotá-los em sua programação. Muitas empresas que desenvolvem seus próprios softwares costumam ter normas de desenvolvimento para, inclusive, facilitar a documentação e o banco de dados. Já estudamos sobre constantes e variáveis, agora vamos conhecer as características e as formas de atribuir valores às variáveis, atribuição. Vejamos a definição a seguir: A atribuição é uma notação utilizada para atribuir um valor a uma variável, ou seja, para armazenar um determinado conteúdo em uma variável. A operação de atribuição, nor- malmente, é representada por uma seta apontando para a esquerda, mas existem outros símbolos para representar a atribuição, depende da forma de representação do algorit- mo. (CARVALHO, 2007, p. 9). As formas de atribuir valores a uma variável ou constante são realizadas por meio dos operadores de atribuição, os quais vão dos mais simples aos mais complexos, ou mais recursivos. Ainda segundo a autora, como regra, não pode haver nenhum caractere, nada, à esquerda da variável, somente a variável. A seguir apresentamos exemplos de algumas atribuições, lembrando que existem outras mais complexas. 44 ALGORITMOS COMPUTACIONAIS| Tabela 02: Operadores de atribuição. Operador Descrição = Armazena o valor do segundo operando no objeto especificado pelo primeiro operando (atribuição simples). *= Multiplica o valor do primeiro operando pelo valor do segundo operando e armazena o resultado no objeto especificado pelo primeiro operando. /= Divide o valor do primeiro operando pelo valor do segundo operando e armazena o resultado no objeto especificado pelo primeiro operando. %= Obtém o módulo do primeiro operando especificado pelo valor do segundo. += Operando e armazena o resultado no objeto especificado pelo primeiro operando. -= Soma o valor do segundo operando ao valor do primeiro operando e armazena o resultado no objeto especificado pelo primeiro operando. Subtrai o valor do segundo operando do valor do primeiro operando e armazena o resultado no objeto especificado pelo primeiro operando. Fonte: Microsoft Docs. (2021) (Adaptada). Vamos apresentar alguns exemplos de comandos de atribuição mais simples (Figura 04): Figura 04: Comandos de atribuição. Fonte: Elaborada pelo autor. ALGORITMOS COMPUTACIONAIS 45| LLINKINK WEBWEB Quer aprender mais sobre operadores de atribuição e possibilidades mais complexas? Visite o site da Microsoft Docs. no link adiante: https://bit. ly/3rlYgVp. 3. expressões aritméticas3. expressões aritméticas Em linguagem de programação, expressão é uma combinação de valores, conhecida como expressões aritméticas. Elas são constituídas tendo como base os operadores aritméticos, as constantes e as variáveis numéricas. Além disso, geram sempre um valor numérico. Trata-se de uma parte essencial no contexto da programação de computadores, sendo amplamente usadas nas estruturas de controle de programação, além de fazerem parte da lógica e da validação das condições propostas nas instruções do programa. Para Manzano e Oliveira (2005), o uso de expressões aritméticas é algo corriqueiro em programação de computadores para resolver problemas matemáticos ou simplesmente cálculos. Como já vimos, elas existem ou são definidas a partir da relação entre constantes, variáveis numéricas e operadores aritméticos. Denominamos os operadores aritméticos como o conjunto de símbolos que representam as operações matemáticas e que obedecem às regras matemáticas de prioridade comum, sempre destacando que as expressões envolvidas por parênteses serão sempre resolvidas antes das que estiverem fora dos parênteses. Além disso, quando as expressões forem envolvidas por dois ou mais parênteses, a resolução será iniciada do parêntese mais interno ao mais externo, ou seja, de dentro para fora; e, ainda, quando duas expressões tiverem a mesma prioridade, a resolução será iniciada na expressão mais à esquerda. Vejamos a tabela de prioridades: 46 ALGORITMOS COMPUTACIONAIS| Tabela 03: Tabela de prioridade de operadores. Operador Tipo Operação Tipo de retorno Prioridade + Binário Adição Inteiro ou real 4 - Binário Subtração Inteiro ou real 4 * Binário Multiplicação Inteiro ou real 3 / Binário Divisão Inteiro ou real 3 % Binário Módulo, resto Inteiro ou real 4 ** Binário Exponenciação Inteiro ou real 1 ++ Binário Incremento Inteiro ou real -- Binário Decremento Inteiro ou real + Unário Manutenção de sinal Positivo 3 - Unário Inversão de sinal Negativo 3 Fonte: MANZANO; OLIVEIRA (2005) (Adaptada). Vamos apresentar alguns exemplos de expressões aritméticas: Na matemática tradicional: m = n1 + n2 2 Em computação, a mesma expressão: m = (n1 + n2)/2 Na matemática tradicional: 9 + 23 +2 + 23 4 + 3 Em computação, a mesma expressão: ((9+(23+2)**(1/2))/(4+3))+23 Outros exemplos: idade = 2+(10 * (4+1)) nfinal = (n1+n2+n3+n4)/2 comissões = (vmes*0,8)+bonus Aqui acontece o que chamamos de horizontalidade! Vamos a um exemplo que usa expressões aritméticas (Figura 05): ALGORITMOS COMPUTACIONAIS 47| Figura 05: Exemplo do uso de expressões aritméticas. Fonte: Elaborada pelo autor. Esse algoritmo (Figura 05), quando executado, exibe os valores de cada expressão. Observe que as notas foram atribuídas a cada variável, mas somente a média foi calculada. Na variável idade, armazenamos o resultado da idade simulada, sendo também informada para o cálculo da idade. Já na comissão, foram atribuídos os valores da venda e o valor do bônus para cálculo da comissão. Assim, quando executado, o algoritmo exibe os valores esperados e as mensagens do comando escreva. Trata-se de exemplos simples de expressões aritméticas. Contudo, demonstraremos mais adiante algoritmos que capturam os dados informados via teclado e que armazenam as devidas variáveis por meio do comando leia. MMATERIALATERIAL COMPLEMENTARCOMPLEMENTAR Expressões Aritméticas Asexpressões aritméticas são aquelas em que os operadores são aritméticos e os operandos são valores do tipo numérico (inteiro ou real). Esses valores numéricos podem ser acessados por meio de identificadores constantes ou por meio de variáveis. 48 ALGORITMOS COMPUTACIONAIS| As operações aritméticas fundamentais são: adição, subtração, multiplicação, divisão, potenciação, divisão inteira e o resto (módulo). (...) Precedência Geral dos Operadores Aritméticos Quando uma expressão aritmética precisa ser avaliada num algoritmo, o analisador processa a expressão dando prioridade para certos operadores. As sub-expressões que contém estes operadores serão avaliadas primeiro e seu valor substituído pela sub-expressão inteira. A seguir a próxima sub- expressão na ordem é avaliada e assim por diante até que toda a expressão corresponda a um só valor. As primeiras sub-expressões a serem resolvidas serão os parênteses mais internos, depois as potências, depois as multiplicações e divisões, e assim por diante. A maneira de alterar a ordem de execução das operações numa expressão aritmética é através de parênteses, sendo que eles são executados antes de tudo, a partir dos mais internos para os mais externos. Por exemplo, considere a seguinte expressão aritmética: (5+3)**2 * (5-2) + 8 8**2 * 3 + 8 64 * 3 + 8 192 + 8 200 A mesma é avaliada pelo computador da seguinte maneira: primeiro os parênteses mais internos são avaliados, depois a potenciação, depois a multiplicação e depois a soma. Se ignorássemos a precedência dos operadores (ou dos parênteses) teríamos um resultado completamente diferente e consequentemente errado. (...) ALGORITMOS COMPUTACIONAIS 49| Escrita de Operações Aritméticas Cada operação aritmética em um algoritmo deve ser escrita em apenas uma única linha. Sendo assim, quando uma expressão matemática usual é escrita precisamos utilizar parênteses para garantir que todas as operações sejam executadas na ordem adequada. Ao desenvolvermos um algoritmo é bastante comum deixarmos parênteses não pareados nas expressões aritméticas, o que é um erro difícil de se localizar posteriormente. Um teste prático para evitarmos esse tipo de contratempo consiste em contar na expressão quantos parênteses esquerdos e direitos existem, e conferir se eles estão em mesmo número. (...) Exceções em Expressões Aritméticas Para a maioria das expressões aritméticas executadas em um algoritmo é possível associar um valor definido, ou seja, o resultado da expressão propriamente dito. Por exemplo, a expressão 2 + 3, depois de avaliada, tem um valor definido igual a 5, e a expressão 2 ∗ ∗10 tem um valor definido de 1024. Entretanto, nem todas as expressões aritméticas possuem um valor definido matematicamente, é o caso de divisões de números pelo valor 0 (zero) ou de raízes quadradas de números negativos. A avaliação desse tipo de expressão deve ser sempre evitada a partir da verificação dos valores que farão parte das mesmas, ou seja, se um denominador é nulo ou se o número cuja raiz será extraída é negativo, a operação não deve ser realizada. Fonte: FERRARI; CECHINEL (2008, p. 34-37). 4. expressões Lógicas4. expressões Lógicas De acordo com o que já estudamos sobre expressões aritméticas, as expressões lógicas são fundamentais em programação de computadores. Diferente das expressões aritméticas, as expressões lógicas não realizam cálculos com o objetivo de retornar um valor numérico, mas sim retornam valores lógicos (V)erdadeiro ou (F)also. 50 ALGORITMOS COMPUTACIONAIS| As expressões lógicas são aquelas cujo valor só pode ser verdadeiro ou falso. São compostas por operadores relacio- nais, operadores lógicos, e por identificadores variáveis ou constantes do tipo lógico. As expressões lógicas também po- dem ser compostas por resultados de expressões aritméticas. (FERRARI; CECHINEL, 2008, p. 38). Nas expressões lógicas, temos os operadores lógicos, também conhecidos como booleanos e relacionais. Ainda de acordo com os autores, situações lógicas dever ser representadas por operadores lógicos, não podendo, por exemplo, serem representadas por operadores aritméticos. Ainda, os operadores lógicos são conhecidos como conectivos lógicos, porque unem duas expressões simples em uma expressão composta. Esses operadores ainda podem ser unários, que realizam uma operação em uma única expressão (ou sentença) e binários, que realizam operações em duas expressões (ou sentenças). Tabela 04: Função dos operadores lógicos. Operadores Lógicos E/AND OU/OR NÃO/NOT Conjunção: o conjunto das expressões/condições deve ser verdadeiro. Disjunção: pelo menos uma das expressões/condições deve ser verdadeira. Negação: acontece a inversão do resultado da expressão/ condição. Fonte: CARVALHO (2007) (Adaptada). Vamos entender melhor como se aplicam esses operadores: O primeiro deles é o operador binário de conjunção ou e lógico, representado por ∧ ou AND. Quando duas expressões são uni- das por este operador, a expressão resultante só é verdadeira se ambas expressões constituintes também são. Por exemplo “chove e venta” só é verdadeiro se as duas coisas forem verda- deiras, “chove” e também “venta”. Se uma das sentenças não ocorrer, a sentença como um todo é falsa. O segundo operador é o operador binário de disjunção ou lógico, representado por ∨ ou OR. Neste caso, se qualquer uma das expressões consti- tuintes for verdadeira, a expressão completa também será. Por exemplo, “vou à praia ou vou ao campo” é uma sentença verda- deira caso qualquer uma das duas ações acontecer, ou ambas. ALGORITMOS COMPUTACIONAIS 51| É verdadeira, se eu for a praia e não ao campo, se eu for ao campo e não a praia e se eu for a ambos. (...) O último dos operadores é o operador unário não lógico, representado por ¬. Sua função é simplesmente inverter valor lógico da expressão a qual se aplica. (FERRARI; CECHINEL, 2008, p. 39). Em programação de computadores, não podemos escolher se vamos trabalhar com expressões aritméticas ou lógicas, por isso precisamos entender bem as duas, porque ambas são recursos de programação para resolver, analisar ou testar condições. Vejamos alguns exemplos: Figura 06: Operadores lógicos. Fonte: Elaborada pelo autor. Ainda em programação, vamos exemplificar as expressões utilizando linguagem de consulta, como bancos de dados SQL: 52 ALGORITMOS COMPUTACIONAIS| Figura 07: Operadores lógicos no SQL. Fonte: Elaborada pelo autor. Como podemos observar nos exemplos anteriores, utilizamos constantemente as expressões lógicas na programação de computadores. Observe também como há o uso do raciocínio lógico em cada expressão e, consequentemente, em seus respectivos resultados. Nos exemplos apresentados, utilizamos operadores relacionais e operadores lógicos. As instruções da Figura 07 são oriundas da linguagem SQL (Structured Query Language), linguagem de consulta estruturada, indispensável para aqueles que pretendem trabalhar com bancos de dados. Ainda com base em Ferrari e Cechinel (2008), vejamos um exemplo bem simples de expressão lógica: 1ª 2ª (5 < 7) and (3 > 2) Analisando a 1ª expressão, concordamos que ela é verdadeira, pois 5 é menor que 7. Analisando a 2ª expressão, concordamos também que ela é verdadeira, pois 3 é maior que 2. Logo, podemos concluir que toda a expressão retornará um valor verdadeiro. Vejamos outro exemplo: 1ª 2ª (5 > 7) or (3 > 2) Analisando a 1ª expressão, verificamos que ela é falsa, pois 5 não é maior que 7. Analisando a 2ª expressão, concordamos que ela é verdadeira, pois 3 é maior que 2. Contudo, a expressão usa o operando or (ou); assim, se apenas uma das expressões for verdadeira, será retornado um valor verdadeiro. Uma diferença importante entre os operandos and e or. ALGORITMOS COMPUTACIONAIS 53| Figura 08: Exemplo de validação de expressões lógicas. Fonte: Elaborada pelo autor. Agora vamos estudar os operadores relacionais.Conforme Forbellone e Eberspacher (2005), os operadores relacionais são fortemente utilizados em programação de computadores para comparação entre valores de um mesmo tipo primitivo, valores esses que podem ser representados por meios de constantes, variáveis ou expressões aritméticas ou lógicas. Portanto, é a partir dos referidos operadores que conseguimos verificar o estado de uma variável, se o seu valor é falso ou verdadeiro. Utilizando os operadores relacionais, conseguimos também verificar se uma condição é igual ou maior que, ou menor que, se diferente de maior ou igual a etc. A tabela a seguir detalha os símbolos e a notação: Tabela 05: Operadores relacionais. Operador Descrição = Igual a <> Diferente de > Maior que < Menor que >= Maior ou igual a <= Menor ou igual a Fonte: Elaborada pelo autor. 54 ALGORITMOS COMPUTACIONAIS| Apresentamos algumas expressões utilizando os operadores relacionais, não esquecendo que o retorno dessas expressões é normalmente os valores verdadeiro ou falso. Figura 09: Operadores relacionais. Fonte: Elaborada pelo autor. Os exemplos apresentados são um norte para nosso estudo, pois tanto os operadores relacionais como os aritméticos são recursos poderosos e importantes dentro da programação de computadores. 5. comaNdos de eNtrada e saída5. comaNdos de eNtrada e saída As funções de entrada e saída de dados na computação atendem a dois critérios básicos. As informações de entrada são fornecidas pelas pessoas que trabalham para esse fim, alimentar os sistemas de informação. Todas essas informações vão para um determinado local, os bancos de dados, mas também temos as informações que são geradas por textos, imagens, sons, sendo que todos os tipos de dados ou informações passam por essas duas funções e atendem ao conceito universal de computação. ALGORITMOS COMPUTACIONAIS 55| Figura 10: Processamento de dados – Entrada e Saída. Retroalimentação Entrada de dados Processamento de dados Saída de dados Fonte: Elaborada pelo autor. Essa imagem que visualizamos anteriormente reflete o processamento de dados tradicional que usamos até hoje (entrada e saída), salvo raras exceções. Buscamos o entendimento do processamento de dados para embasar nossos estudos. Portanto, todos os profissionais de informática devem entender esse processo como algo básico, surgindo a necessidade de estudar as duas funções individualmente, para que fique claro como se comporta cada uma delas. É a partir do estudo dos algoritmos que aprendemos como tratar os processos de entrada e saída de dados dentro da programação de computadores. De acordo com Ferrari e Cechinel (2008), no desenvolvimento de algoritmos, vamos descobrir a necessidade de estabelecer uma interação com o usuário e, assim, receber informações por intermédio da entrada de dados padrão. Da mesma forma, precisamos enviar informações já processadas para a saída padrão. De acordo com Oliveira et al. (2012, p. 33), para orientar o processo de elaboração do algoritmo, é importante entender estes passos: • Ler atentamente o enunciado, destacando os pontos mais importantes; • Definir os dados de entrada, ou seja, quais dados serão fornecidos; • Definir o processamento, ou seja, quais cálculos serão efetuados e quais serão as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saídas; 56 ALGORITMOS COMPUTACIONAIS| • Definir os dados de saídas, ou seja, quais dados serão gerados depois do processamento; • Construir o algoritmo utilizando um dos tipos descritos; • Testar o algoritmo utilizando as informações. Ainda de acordo com Oliveira et al. (2012, p. 36), no desenvolvimento de algoritmos, precisamos utilizar os comandos padronizados pela ferramenta que estamos usando, os quais não diferem do pseudocódigo padrão. Assim, para cada função, um par de comando, quando for o caso, a fim de que não ocorram erros (bugs): Erros Sintáticos - ocorrem quando as instruções do programa não são escritas de acordo com a sintaxe da linguagem sendo usada. Por exemplo: se eu esquecesse um fim se de um co- mando se, o comando estaria incompleto. Não estaria definido conforme a sintaxe da linguagem. Por isso, ocorreria o erro sintático. Este tipo de erro impede a execução do algoritmo ou programa. Erros Semânticos - (ou lógico) - ocorrem quando o código escrito pelo programador não gera o resultado desejado por este. Ou seja, o código está sintaticamente correto, mas o resultado gerado pelo algoritmo não está correto. Erros de lógica podem ser simplesmente uso incorreto de operadores (+ no lugar de -, usar o operador OU no lugar de usar o E), atribuições erradas (por exemplo, pedir para digitar o nome da pessoa e guardar o que for digitado na variável endereço), etc. Os erros sintáticos são fáceis de encontrar e corrigir porque, geralmente, o compilador se encarrega de apontá-los e, nor- malmente, dá uma indicação do tipo de erro. O programa só é executado quando não existem mais erros sintáticos. Já os erros semânticos são de detecção mais difícil, uma vez que os compiladores não podem encontrar erros de lógica, já que não tem conhecimento sobre o que o programador deseja fa- zer. Dessa forma, erros de lógica só podem ser encontrados e remediados pelo programador. Esse tipo de erro pode fa- zer com que o programa exiba comportamentos inesperados. (OLIVEIRA et al., 2012, p. 36, grifo dos autores). ALGORITMOS COMPUTACIONAIS 57| Para a entrada de dados, utilizaremos o comando leia. Assim, com o objetivo de usar o comando leia, o programador sabe que a variável deve armazenar o valor que será informado pelo usuário, mas atenção, essa variável precisa ter sido declarada no início do programa, assim como todas as outras variáveis que serão usadas. Além disso, cada variável precisa receber os valores para os quais foram criadas. Vamos desenvolver um algoritmo para demostrar os comandos leia – entrada de dados e o comando escreva – saída de dados. Figura 11: Comando escreva – saída de dados. Fonte: Elaborada pelo autor. 58 ALGORITMOS COMPUTACIONAIS| O código anterior (Figura 11) vai exibir uma tela de entrada de dados (verifique no console da imagem o que seria exibido na tela do computador), com orientações para o usuário sobre cada informação, sendo usados o comando escreva e o comando leia. O comando escreva é um comando de saída de dados, disponibilizando na tela as orientações para a entrada de cada informação. Já o comando leia exibe o espaço necessário para a digitação dos dados. Após o preenchimento dos campos de dados, o usuário deve teclar <enter>, então, os dados serão armazenados em variáveis para, posteriormente, ao final do programa, serem armazenados em bancos de dados, isso na programação, depois que esse algoritmo for convertido em programa de computador, por meio de uma linguagem de programação. Quando utilizamos o comando escreva, emitimos um comando de saída de dados, em geral, esse comando estabelece a interação com o usuário. Vamos demonstrar o algoritmo do cálculo da média de um aluno utilizando o comando escreva e o comando leia, ambos enfatizados para os processos de entrada e saída de dados. Vejamos: Figura 12: Cálculo de média com mensagem para o aluno. Fonte: Elaborada pelo autor. ALGORITMOS COMPUTACIONAIS 59| Saber acompanhar os comandos de entrada e saída de dados é essencial para o controle de informações, havendo muitos dispositivos de saída de dados, sendo que, para cada um, temos uma especificidade de comandos. Há ainda outro exemplo de algoritmo que, com apenas um número informado, cria uma tabuada desse mesmo número, ou seja, se informar 5, ele vai criar rapidamente a referida tabuada, exibindo, assim, os resultados na tela do computador. Vejamos: Figura 13: Criando tabuada e exibindo na tela do computador. Fonte: Elaborada pelo autor. Os exemplos apresentados são todos funcionais, podendo, portanto, serem alteradosaté mesmo no pseudocódigo, sendo as modificações, claro, para cada linguagem de programação. 60 ALGORITMOS COMPUTACIONAIS| Em programação de computadores, um mesmo problema pode gerar vários algoritmos diferentes, ou seja, o algoritmo de um programador pode ser totalmente diferente dos demais. Resta saber qual será o mais eficiente ou mais recursivo. Certamente será aquele que tiver a melhor lógica, resolvendo o problema com menor custo e menor tempo de resposta. Somente estudando algoritmos podemos desenvolver códigos eficientes e resolver qualquer tipo de problema. Esses profissionais, com certeza, são os mais procurados no mercado de trabalho. Há alguns programas (ferramentas) que podem ser utilizados para auxiliar na construção de algoritmos, importantes para otimizar o tempo de desenvolvimento. Adiante, utilizei alguns deles, a saber: o Portugol Studio, um software livre (totalmente gratuito), multiplataforma (Linux/MAC/Windows) e desenvolvido por alunos e professores da Universidade do Vale do Itajaí/ SC (UNIVALI), e o VisuAlg, falaremos dele na Unidade 04. Figura 14: Tela do Portugol Studio. Fonte: https://bit.ly/3uUIG5e. O software Portugol Studio apresenta interface limpa, fácil de aprender, constituindo-se uma excelente ferramenta, como sugestão para o aprendizado da lógica na construção de algoritmos. ALGORITMOS COMPUTACIONAIS 61| LLINKINK WEBWEB Leia mais sobre as ferramentas Portugol Studio, faça o download e escolha a melhor versão para seu sistema operacional. Acesse o link a seguir: https://bit.ly/3xDAcRS. PPRATIQUERATIQUE 1. Quais são os tipos de dados primitivos utilizados na construção de algoritmos? 2. Defina instrução em um programa de computador. 3. Os comandos do sistema operacional são também instruções? Explique. 4. De acordo com os estudos realizados, o que é lógica? 5. Cite três características especiais da variável. 62 ALGORITMOS COMPUTACIONAIS| 6. De acordo com os estudos realizados, quais são os tipos de dados que se pode armazenar em uma variável? 7. Defina dados lógicos. 8. Qual a importância das operações aritméticas e lógicas? 9. Dados e instruções são necessários em programação de computadores? Por quê? 10. De acordo com os estudos realizados, explique as diferenças entre constante e variável em programação de computadores. RRELEMBREELEMBRE Nesta unidade, lemos sobre vários assuntos; todos eles voltados para a construção de algoritmos e, posteriormente, para a programação de computadores. Os estudos sobre lógica de programação, estes, vamos precisar sempre aperfeiçoar, especialmente aqueles que desejam seguir carreira na área de desenvolvimento de sistemas. ALGORITMOS COMPUTACIONAIS 63| No início, tudo pareceu muito simples. Aprendemos dois assuntos bastante básicos, dados e instruções. Desse ponto em diante, começamos de fato a entrar no mundo dos algoritmos computacionais. Apesar de se tratar de estudos iniciais, tudo parece muito desafiador e de fato o é. Quando desmembramos os assuntos iniciais, nós nos deparamos com os quatro tipos de dados: inteiros, reais, caracteres e lógicos. Sem esse conhecimento, não conseguiríamos avançar no estudo dos algoritmos. Quanto às instruções, já começamos a falar de programas de computador, visto que, de acordo com o que observamos, um programa de computador consiste em um conjunto de instruções, com o objetivo de comandar o computador para realizar uma determinada tarefa. Depois lemos sobre constantes e variáveis, componentes que não podem faltar na programação. O conceito de variáveis precisa ficar claro para todos os desenvolvedores, pois desenvolver técnicas de manipulação de variáveis é essencial para a área de programação, haja vista serem elas que fazem o fluxo do algoritmo. Na manipulação de variáveis, uma ação é fundamental, declarar a variável com o tipo de dado que ela vai armazenar. Por fim, estudamos sobre expressões aritméticas e lógicas. Daqui em diante, só nos resta começar a demonstrar os algoritmos utilizando esses novos conhecimentos. Agora é com você, escolha a ferramenta ideal para promover mais interação na construção e na execução do algoritmo, e, logo mais, saberá, por meio desse estudo, qual a linguagem de programação que vai adotar para dar vida e funcionalidade aos algoritmos preparados. RREFERÊNCIASEFERÊNCIAS CARVALHO, Flávia Pereira de. Apostila de Lógica de Programação: Algoritmos. Rio grande do Sul: Faculdades Integradas de Taquara (FACCAT), 2007. Disponível em: https://fit.faccat.br/~fpereira/apostilas/apostila_ algoritmos_mar2007.pdf. Acesso em: 26 fev. 2022. 64 ALGORITMOS COMPUTACIONAIS| FERRARI, Fabrício; CECHINEL, Cristian. Introdução a Algoritmos e Programação. 2008. Disponível em: https://www.ferrari.pro.br/home/ documents/FFerrari-CCechinel-Introducao-a-algoritmos.pdf. Acesso em: 28 fev. 2022. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de Programação: a Construção de Algoritmos e Estruturas de Dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: Lógica para o Desenvolvimento de Programação de Computadores. 22. ed. São Paulo: Editora Érica, 2005. MICROSOFT, Docs. Operadores de Atribuição. 2021. Disponível em: https:// docs.microsoft.com/pt-br/cpp/cpp/assignment-operators?view=msvc-170. Acesso em: 27 fev. 2022. MORAES, Paulo Sérgio de. Lógica de Programação. In: Curso Básico de Lógica de Programação. São Paulo: Unicamp, Centro de Computação – DSC, 2000. Disponível em: https://ftp.unicamp.br/pub/apoio/treinamentos/ logica/logica.pdf. Acesso em: 10 fev. 2022. OLIVEIRA, Cintia Reis de et al. Lógica de Programação: Manual do Professor. Ceará: SEDUC, 2012. Disponível em: https://educacaoprofissional. seduc.ce.gov.br/images/material_didatico/professor/informatica/logica_de_ programacao.pdf. Acesso em: 19 abr. 2022. UNIVALE-LITE. Portugol Studio. 2022. Disponível em: https://github.com/ UNIVALI-LITE/Portugol-Studio/releases/tag/v2.7.5. Acesso em: 10 fev. 2022. ALGORITMOS COMPUTACIONAIS 65| AANOTAÇÕESNOTAÇÕES 66 ALGORITMOS COMPUTACIONAIS| AANOTAÇÕESNOTAÇÕES
Compartilhar