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 Unidade 01 Lógica de programaçãoLógica de programação Maxwell Félix ApresentaçãoApresentação Nesta unidade, estudaremos sobre lógica de programação. É capital compreender que, na área da computação, a lógica de programação está relacionada com o raciocínio (lógica do pensamento e suas operações intelectuais). Inclusive, se formos pesquisar a origem da palavra, vamos encontrar o seguinte: do grego logiké, tem relação com logos, razão, palavra ou discurso. (SIGNIFICADOS, 2022). Podemos entender lógica como a maneira de pensar/raciocinar. Vejamos, em uma ocorrência policial, por exemplo, sempre existe um suspeito que, na grande maioria dos casos, é inocente. Logo, segundo a lógica, sou um suspeito. Em computação, a área em que mais usamos o raciocínio lógico é na programação, pois, para escrevermos um programa de computador, precisamos raciocinar com coerência e praticidade. Grosso modo, a lógica entra em cena quando os pensamentos e as ideias, de certa forma, estão organizados. Dessa forma, podemos dizer que a aplicação da lógica ocorre quando pensamentos e ideias se encontram coerentes e sequencialmente encadeados. 8 ALGORITMOS COMPUTACIONAIS| Geralmente, todo profissional de computação que sabe usar bem a lógica, sem dúvida, é ou será bem-sucedido, quer seja um desenvolvedor de software quer seja um administrador de banco de dados, um analista de redes etc. Portanto, vale a pena estudar sobre o assunto, porque, sem nenhuma dúvida, você vai precisar. OOBJETIVOSBJETIVOS DEDE APRENDIZAGEMAPRENDIZAGEM • Compreender como funciona a lógica de programação; • Conhecer a base de funcionamento dos algoritmos; • Adquirir conhecimentos sobre estruturas de controle; • Entender como funcionam as estruturas de dados. 1. Noções de Lógica1. Noções de Lógica O raciocínio lógico tem relação com ideias e pensamentos organizados e sequencialmente encadeados. De acordo com Moraes (2000, p. 4), “Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo”. Nesse contexto, atribuindo essa noção a programação de computadores, os pensamentos podem ser definidos como um conjunto de instruções sequenciais que devem ser executadas como uma tarefa, a fim de resolver determinado problema. Contudo, o que entendemos por instruções? No uso coloquial, ainda conforme Moraes (2000, p. 4), instruções são: “um conjuntode regras ou normas definidas para a realização ou emprego de algo”. Em computação, a instrução pode ser uma ou mais informações que indicam uma ordem para o computador executar uma tarefa. O raciocínio lógico tem relação com ideias e pensamentos organizados e sequencialmente encadeados. ALGORITMOS COMPUTACIONAIS 9| Podemos deduzir até aqui que a lógica está diretamente ligada ao pensamento. Quando resolvemos qualquer problema, usamos a lógica. Segundo Oliveira et al. (2012, p. 23), a “Lógica trata da correção do pensamento. Como filosofia, ela procura saber por que pensamos assim e não de outro jeito. Com arte ou técnica, ela nos ensina a usar corretamente as leis do pensamento”. Podemos também afirmar que a lógica nos ensina a pensar corretamente, com base na complexidade do raciocínio. Vejamos: Poderíamos dizer também que a Lógica é a arte de pensar corretamente e, visto que a forma mais complexa do pen- samento é o raciocínio, a Lógica estuda ou tem em vista a correção do raciocínio. Podemos ainda dizer que a lógica tem em vista a ordem da razão. Isto dá a entender que a nossa razão pode funcionar desordenadamente, pode pôr as coisas de pernas para o ar. Por isso a Lógica ensina a colocar Ordem no Pensamento. Desordem: “E se eu escolher aquilo?” ou “É, mas eu não tinha pensado nisso”. Enfim, lógica é ciência que coloca a cabeça para funcionar corretamente. Para chegarmos à conclusão de algo utilizamos as premissas que são conhecimentos prévios, desta forma organizamos o pensamento, com a organização do mesmo é que concluímos se algo é verdadeiro ou falso. (OLIVEIRA et al., 2012, p. 23). Para Forbellone e Eberspacher (2005), quer seja pela arte quer seja pelo trabalho técnico, a lógica nos ensina a pensar e a usar esse pensamento de maneira correta: Poderíamos dizer também que a lógica é a “arte de bem pen- sar”, que é a “ciência das formas do pensamento”. Visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a “correção do raciocínio”. Podemos ainda dizer que a lógica tem em vista a “ordem da razão”. Isso dá a entender que a nossa razão pode funcionar desordenadamente. Por isso, a lógica estuda e ensina a colocar “ordem no pensamento”. (FORBELLONE; EBERSPACHER, 2005, p.12). 10 ALGORITMOS COMPUTACIONAIS| Então, segundo as afirmações de Forbellone e Eberspacher (2005), podemos deduzir que lógica é a técnica de organizar as ideias, sendo possível aplicá-las para o bem da pesquisa, com a finalidade de solucionar os problemas que possam surgir. Em conformidade com Raulino (2013), para que possamos entender melhor a eficiência técnica da lógica, devemos observar suas ações características: • Organizar os conhecimentos de qualquer área de atuação; • Raciocinar de forma correta, sem esforço consciente; • Observar e interpretar informações de maneira rápida; • Ampliar a competência linguística (tanto oral como escrita); • Adquirir aptidão para o raciocínio quantitativo; e • Reconhecer padrões em estruturas (premissas, pressuposições, cenários, entre outros). ...podemos deduzir que lógica é a técnica de organizar as ideias, sendo possível aplicá-las para o bem da pesquisa... Já falamos aqui que lógica se refere a pensamentos e ideias organizados e sequencialmente encadeados. Encadeamentos esses denominados argumentos. Segundo Raulino (2013), os argumentos estabelecem o seguinte: • As proposições são as afirmativas de um argumento; • Um argumento é um conjunto de proposições, de tal forma que é possível dizer que uma deriva das outras; • A proposição derivada comumente é chamada de conclusão, e as demais, de premissas; e • Em um argumento válido, as premissas são consideradas provas evidentes da veracidade da conclusão. ALGORITMOS COMPUTACIONAIS 11| Agora vamos a um exemplo de argumento com a figura a seguir: Figura 01: Argumento (premissas e conclusão). Argumento Premissas Se estudar, será aprovado no vestibular. Eu fui aprovado Conclusão Logo, eu estudei Fonte: RAULINO (2013) (Adaptada). Argumento é um conjunto de proposições iniciais, redundando em uma proposição final, ou ainda, em um conjunto de proposições p1, p2... pn, sendo elas as premissas do argumento, e a proposição c, a qual chamamos de conclusão do argumento. Vale a pena saber que também podem ser usados os termos hipótese e tese, respectivamente: Exemplo: p1: Todo cearense é humorista. p2: Todo humorista gosta de forró. c: Todo cearense gosta de forró. O argumento apresentado no exemplo anterior é chamado de silogismo, ou seja, um argumento formado por duas premissas e uma conclusão. Conforme Lima (2012), “Na Lógica, o estudo dos argumentos não leva em conta a verdade ou a falsidade das premissas que compõem o argumento, mas tão somente a validade deste”. Pelo visto até aqui, é importante entender que, em computação, ideias e pensamentos precisam ter lógica apurada, mais adiante saberemos o porquê. 12 ALGORITMOS COMPUTACIONAIS| 2. Notação de Lógica2. Notação de Lógica Antes de iniciar a fala sobre notação, vamos entender seu significado e valor. Segundo o Dicionário Informal, notação é o “ato de notar, de representar algo por meio de símbolos ou caracteres; sistema de representação gráfica de elementos de determinado campo de conhecimento (p.ex., música, lógica, matemática, química etc.) [...]”. A partir desse conhecimento, podemos prosseguir, representando a notação utilizada na lógica de programação. De acordo com Bianchi (2012), como segue: Observe a notação utilizada para representar o valor lógico de uma proposição: Proposição simples: V(p) – letra minúscula. Proposição composta: V(P) – letra maiúscula. Exemplo de proposições simples: p1: Um triângulo tem três lados. q1: São Paulo é um país. Lemos as notações adiante da seguinte forma: V(p) = V < o valor lógico de p é igual a V (verdadeiro) >; V(q) = F < o valor lógico de q é igual a F (falso) >. Exemplo de proposições compostas: p1: O sol é uma estrela ou q1: A terra é uma estrela. Lemos as notações adiante da seguinte forma: P (p, q) = p v q V(P) = V (o símbolo “v” representa o conectivo “ou”) Conforme Alencar Filho (2002), alguns autores denominam proposições compostas como fórmulas proposicionais ou apenas fórmulas. Ainda podemos destacar que uma proposição P forma-se a partir da combinação de proposições simples (p, q, r…), assim escritas: P (p, q, r). ALGORITMOS COMPUTACIONAIS 13| 3. proposição3. proposição Podemos dizer, a partir da premissa, que a lógica proposicional estuda as relações entre sentenças. Vejamos o que diz Bianchi (2012) sobre proposição: “É um conjunto de palavras ou símbolos que exprime um pensamento de sentido completo, de modo que se possa atribuir, dentro de certo contexto, um de dois valores lógicos possíveis: verdadeiro ou falso”. De acordo com Andrade e Carmelo (1999), olhando para as proposições que já estudamos, podemos dizer que uma proposição é uma sentença declarativa, expressa por meio de palavras e/ou números, na qual possamos atribuir um valor verdadeiro ou falso. Ainda, proposição é uma sentença declarativa que pode ser verdadeira ou falsa, mas nunca ambas. Este é o princípio da não contradição, ou seja, uma proposição não pode ser verdadeira e falsa ao mesmo tempo. Temos ainda o princípio do terceiro excluído, pois uma proposição é verdadeira ou falsa, não há outra (terceira) possibilidade. Exemplos: • Fortaleza é a capital do estado do Ceará. (verdade) • (5 + 5) * 2 = 20. (verdade) • 5 – 7 = 2. (falso) • O número 4 é primo, e o número 3 é par. (falso) Nesse contexto, podemos nos perguntar: Por que não usamos nossa linguagem natural e nosso alfabeto para compor as relações lógicas? Segundo Neto (2017, p. 2), nossa linguagem não seria apropriada para o estudo lógico das sentenças. Vejamos: A linguagem natural não é apropriada para o estudo das re- lações lógicas entre sentenças e para resolver isso os mate- máticos criaram uma linguagem formal própriapara o estudo da lógica. O que diferencia uma linguagem formal de uma linguagem natural é que na linguagem formal a gramática é especificada precisamente, enquanto na linguagem natural quase sempre isso não é possível. (NETO, 2017, p. 2). 14 ALGORITMOS COMPUTACIONAIS| Quadro 01: Composição da linguagem da lógica proposicional. Alfabeto Um conjunto contável de símbolos usados na linguagem. O alfabeto de uma linguagem refere-se aos símbolos que, quando agrupados, formam expressões admissíveis da linguagem. Sendo o alfabeto da linguagem da lógica proposicional formado por: Variáveis proposicionais Conectivos lógicos Português + conectivos lógicos Delimitadores () Gramática Conjunto de regras que, quando aplicadas sucessivamente, formam as expres- sões admissíveis da linguagem. A gramática são as regras de formação das expressões de determinada lin- guagem. Sendo as regras de formação da linguagem da lógica proposicional: 1. As variáveis proposicionais são fórmulas também denominadas fórmulas atômicas. 2. Se P é uma fórmula, (¬P) é uma fórmula. 3. Se P e Q são fórmulas, (P ˄ Q), (P ˅ Q), (P → Q) e P ↔ Q) também são fórmulas. 4. Não há outras fórmulas além das obtidas pelo uso das regras 1 a 3. Semântica A semântica dá significado a linguagem. No nosso caso, esse significado gera valor para cada uma das expressões de uma fórmula da lógica proposicional. Fonte: NETO (2017, p. 2) (Adaptado). Exemplos de proposições: Simples: • Maria é muito bonita. • Antônio é estudioso. Compostas: • Carlos é enfermeiro, e Cecília é médica. • Comprei um carro novo; então, vamos viajar. FFIQUEIQUE ATENTOATENTO As sentenças declarativas são proposições, mesmo que não tenhamos certeza sobre qual seja seu valor lógico (verdadeiro ou falso). Exemplo: Existe vida pós-morte. ALGORITMOS COMPUTACIONAIS 15| 4. coNectivos Lógicos e tabeLa verdade4. coNectivos Lógicos e tabeLa verdade Conforme Andrade e Carmelo (1999), os conectivos lógicos (“e”, “ou”, “não”, “se… então”, “se e somente se”) são utilizados para, a partir de proposições existentes, formar novas proposições. Ainda segundo os autores: Operadores lógicos ou conectivos lógicos efetuam operações sobre as proposições do mesmo modo que adição em uma operação sobre os números, ou que a interseção é operação sobre os conjuntos. Quando um operador lógico é usado para construir uma nova proposição, seu valor-verdade depende da natureza dos operadores lógicos usados e do valor-verdade das proposições originalmente dadas. Discutiremos agora como os operadores lógicos afetam o valor-verdade das proposições. (ANDRADE; CARMELO, 1999, p. 8-9). Antes de prosseguirmos, vamos conhecer a tabela verdade, um instrumento utilizado para determinar os valores lógicos das proposições. Dadas várias proposições simples (p, q, r), podemos combiná-las pelos conectivos lógicos. As tabelas serão preenchidas com base nesses valores lógicos: Tabela 01: Conectivos lógicos. Negação ~ Conjunção ^ Disjunção v Condicional – > Bicondicional < – > Fonte: BRAVO (2016) (Adaptada). Para encontrar o número de linhas das tabelas, efetue o cálculo: 2 (V, F) elevado ao número de proposições simples. Tabela 02: Duas proposições simples: 22 = 4 linhas. p q V V V F F V F F Fonte: BRAVO (2016) (Adaptada). 16 ALGORITMOS COMPUTACIONAIS| Tabela 03: Três proposições simples: 23 = 8. p q r V V V V V F V F V V F F F V V F V F F F V F F F Fonte: BRAVO (2016) (Adaptada). Tabela 04: Resumo dos conectivos. p q p ^ q p v q ~p p – > q p < – > q V V V V F V V V F F V F F F F V F V V V F F F F F F V V Fonte: BRAVO (2016) (Adaptada). Conjunção ( ^ ) “p ^ q”, em que se lê “p e q”. p: O sol é quente. (V) q: 10 < 52. (V) p ^ q: O sol é quente e 10 < 52. (V) Tabela 05: Possibilidades da proposição “p ^ q”. p q p ^ q V V V V F V F V V F F F Fonte: BRAVO (2016) (Adaptada). ALGORITMOS COMPUTACIONAIS 17| Negação ( ~ ) “~p”, em que se lê “não p”. p: O canário é amarelo. ~p: O canário não é amarelo. ou ~p: Não é verdade que o canário é amarelo. ou ~p: É falso que o canário é amarelo. Tabela 07: Possibilidades da proposição “~p”. p ~p V F F V Fonte: BRAVO (2016) (Adaptada). Condicional ( – > ) “p – > q”, em que se lê “se p então q” ( – > símbolo de implicação). p: O alfabeto tem vinte símbolos. (F) q: O Brasil tem trinta estados. (F) p – > q: Se o alfabeto tem 20 símbolos, então o Brasil tem 30 estados. Tabela 08: Possibilidades da proposição “p – > q”. p q p – > q V V V V F F F V V F F V Fonte: BRAVO (2016) (Adaptada). Bicondicional (< – >) “p < – > q”, em que se lê “p se e somente se q”. Para uma bicondicional ser verdadeira, é preciso que ambas as proposições sejam verdadeiras ou ambas falsas. p: O cachorro mia. (F) q: 7 é um número par. (F) p < – > q: O cachorro mia se e somente se 7 for um número par. (V) 18 ALGORITMOS COMPUTACIONAIS| Tabela 09: Possibilidades da proposição “p < – > q”. p q p < – > q V V V V F F F V F F F V Fonte: BRAVO (2016) (Adaptada). 5. propriedades5. propriedades (associativa, comutativa e distributiva)(associativa, comutativa e distributiva) Essas propriedades utilizam um mesmo conectivo, sendo que a ordem de montagem da tabela verdade não altera seus resultados. Conjunção: (p ^ q) ^ r < – > p ^ (q ^ r) Tabela 10: Propriedade associativa. p q r p ^ q (p ^ q) ^ r q ^ r P ^ (q ^ r) V V V V V V V V V F V F F F V F V F F F F V F F F F F F F V V F F V F F V F F F F F F F V F F F F F F F F F F F Fonte: FRANCK (2017) (Adaptada). Tabela 11: Propriedade comutativa. p q p v q q v p p v q < – > q v p V V V V V V F V V V F V V V V Fonte: FRANCK (2017) (Adaptada). ALGORITMOS COMPUTACIONAIS 19| Tabela 12: Propriedade distributiva – conjunção e disjunção. p q r q v r p ^ (q v r) p ^ q p ^ r (p ^ q) v (p ^ r) V V V V V V V V V V F V V V F V V F V V V F V V V F F F F F F F F V V V F F F F F V F V F F F F F F V V F F F F F F F F F F F F Fonte: FRANCK (2017) (Adaptada). Para finalizar esse assunto, a seguir há um resumo das propriedades estudadas: Associativa: (p ˄ q) ˄ r < – > p ˄ (q ˄ r) (p ˅ q) ˅ r < – > p ˅ (q ˅ r) Comutativa: p ˄ q < – > q ˄ p p ˅ q < – > q ˅ p Distributiva: p ˄ (q ˅ r) < – > (p ˄ q) ˅ (p ˄ r) p ˅ (q ˄ r) < – > (p ˅ q) ˄ (p ˅ r) 6. FLuxo e Lógica Nos aLgoritmos6. FLuxo e Lógica Nos aLgoritmos O assunto agora é algoritmo. Vamos falar de fluxo e da lógica que já aprendemos até aqui, pois usar o raciocínio lógico em algoritmo é fundamental para escrever um programa de computador. 20 ALGORITMOS COMPUTACIONAIS| O desenvolvimento de um algoritmo passa primeiramente por uma ideia. É preciso lembrar do conceito de lógica, quando falamos que ela organiza nossos pensamentos, nossas ideias, com o objetivo de criar algo ou resolver um problema existente. Então, agora veremos isso na prática. Primeiramente, vejamos um conceito claro de algoritmo. Segundo Forbellone e Eberspacher (2005, p. 3), “Um algoritmo pode ser definido como uma sequência de passos que visam atingir um objetivo bem definido”. Quer dizer, de acordo com os autores, a finalidade principal do estudo da lógica é construir algoritmos coerentes e válidos. Ainda dizem eles, “Na medida em que precisamos especificar uma sequência de passos, é necessário utilizar ordem, ou seja, ‘pensar com ordem’, portanto precisamos utilizar lógica.” (FORBELLONE; EBERSPACHER, 2005, p. 3). É preciso lembrar do conceito de lógica, quando falamos que ela organiza nossos pensamentos... A lógica que estamos falando agora é a lógica da construção de algoritmos, pois, para alcançar um objetivo na programação de computadores, precisamos abstrair os detalhes que são verdadeiramente importantes no contexto do problema, isto é, pensar com lógica. Outra importância da construção de algoritmos é que uma vez concebida uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação e ser agregada das funcionalidades disponíveis nosdiversos am- bientes, costumamos denominar esse processo de codificação. (FORBELLONE; EBERSPACHER, 2005, p. 3). O Instituto Federal Fluminense (2019, p. 6) publicou uma apostila para os cursos de tecnologia que nos traz a seguinte definição de algoritmo: “É a especificação de uma sequência ordenada de instruções, finitas e não ambíguas, que deve ser seguida para a solução de um determinado problema, garantindo a sua repetibilidade”. Surge, então, a seguinte pergunta: Para que serve um algoritmo? • O algoritmo é uma sequência de passos lógicos e finitos que permite solucionar problemas; ALGORITMOS COMPUTACIONAIS 21| • O objetivo de aprender a criar algoritmos é que este é a base de conhecimentos para as linguagens de programação; • Em geral, existem muitas maneiras de resolver o mesmo problema. Ou seja, podem ser criados vários algoritmos diferentes para resolver o mesmo problema; • Assim, ao criarmos um algoritmo, indicamos uma dentre várias possíveis sequências de passos para solucionar o problema. (Instituto Federal Fluminense, 2019, p. 7). O algoritmo possui algumas características que são consideradas essenciais, como: • Completo: todas as instruções devem ser claras e obviamente únicas. • Não redundante: o conjunto de instruções descritas no algoritmo deve ter uma única forma de interpretação. • Determinístico: após todas as instruções serem executadas, o resultado esperado deve ser atingido. • Finito: a execução dever ser iniciada e precisa terminar após os passos determinados. Seguem alguns exemplos de algoritmos adiante: • Trocar uma lâmpada: ¾ Identificar a lâmpada queimada; ¾ pegar uma escada; ¾ posicionar a escada embaixo da lâmpada; ¾ buscar a lâmpada nova; ¾ subir na escada; ¾ retirar a lâmpada velha; ¾ colocar a lâmpada nova; ¾ acender a lâmpada nova. 22 ALGORITMOS COMPUTACIONAIS| • Trocar o pneu furado de um carro: ¾ pegar o macaco e o estepe no porta-malas; ¾ colocar o macaco embaixo do carro, próximo ao pneu, sem o levantar; ¾ com a chave adequada, retirar os parafusos da roda; ¾ levantar o carro e retirar o pneu; ¾ colocar o estepe; ¾ colocar os parafusos e apertar; ¾ baixar o carro e retirar o macaco; ¾ apertar bem os parafusos; ¾ guardar o pneu furado e as ferramentas; ¾ fechar o porta-malas. Podemos observar que existe uma sequência de passos que são seguidos naturalmente nos dois exemplos, como um padrão, pois, qualquer pessoa que fosse executar qualquer um dos algoritmos apresentados faria da mesma forma, ou seja, seguiria o mesmo fluxo de execução. De acordo com Forbellone e Eberspacher (2005), a sequência executada nos dois algoritmos é uma sequência linear, isto é, da mesma forma como se lê um texto, de cima para baixo e da esquerda para a direita. Também é possível observar que o objetivo foi atingido, porque estava bastante claro. Porém, mesmo com os objetivos bem determinados nos dois casos, podem acontecer alguns problemas. Vejamos: Se a lâmpada nova também estivesse queimada? Se o estepe do carro estivesse seco? Logo mais veremos algumas soluções que poderemos utilizar para resolver também esses problemas. ALGORITMOS COMPUTACIONAIS 23| Vamos agora conhecer as formas de representação de um algoritmo. As mais conhecidas são: • Linguagem natural: o algoritmo é escrito (expresso) em linguagem nativa (português). Toda a sequência de passos é descrita de forma natural, um texto comum. Exemplo: ¾ Calculando a média de alunos: 9 Obter as quatro notas bimestrais. 9 Calcular a média aritmética. 9 Caso a média seja maior ou igual a 7, aluno aprovado. 9 Se for menor, aluno reprovado. Quais são os problemas desse modelo? De forma geral, a linguagem natural pode gerar várias interpretações e até mesmo ambiguidades, o que certamente vai dificultar a transcrição do algoritmo para uma linguagem de programação. Figura 02: Calculando a média de alunos. Início Matríc, 1bim, 2bim, 3bim, 4bim, n Final Digitar: Matrícula e notas bimestrais nFinal = (1bim+2bim+3bim+4bim)/4 Nota do aluno nota final Fim Fonte: Elaborada pelo autor. 24 ALGORITMOS COMPUTACIONAIS| • Fluxograma: no fluxograma, o problema é representado de forma gráfica, geometricamente diferente, sendo que cada forma implica instruções ou comando distintos. Podemos afirmar que é mais precisa do que a linguagem natural, mas também tem seus problemas. O maior deles é que, nesse tipo de algoritmo, não conseguimos visualizar os detalhes de implementação na linguagem de programação. Quadro 02: Elementos gráficos usados no fluxograma. Terminal Início ou fim do fluxo do algoritmo. Entrada manual Representa a entrada manual de dados, geralmente pelo teclado. Processo Identifica a execução de processos. Exibição Exibe informações (ações ou resultados), geralmente no monitor de vídeo. Decisão Identifica os testes de condições para a tomada de decisão e permite os desvios ou os laços de repetição. Linha Permite conectar cada símbolo, seguindo o fluxo do algoritmo. Conector Faz a conexão entre blocos do algoritmo ou permite, pelo conector, dividir o mesmo algoritmo em partes, para um melhor entendimento. Fonte: Elaborado pelo autor. • Pseudocódigo: também conhecido como “Portugol”, aproxima-se da linguagem de programação, sem distinguir nenhuma. Podemos visualizar detalhes importantes, em especial, quando definimos os tipos de variáveis que podemos manipular. Porém, é preciso aprender a lidar com a linguagem Pseudocódigo. Para Carvalho (2007, p. 7), o que chamamos de “Pseudocódigo” possui outros nomes, todos válidos, como já sabemos. Vejamos: O Português Estruturado é uma forma especial de linguagem bem mais restrita que a Língua Portuguesa e com significados bem definidos para todos os termos utilizados nas instruções (comandos). Essa linguagem também é conhecida como Portugol, Pseudocó- digo ou Pseudolinguagem. O Português Estruturado na verdade é uma simplificação extrema da língua portuguesa, limitada a pouquíssimas palavras e estruturas que têm significado pré-de- finido, pois deve-se seguir um padrão. Emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de pro- gramação, para descrever os algoritmos. ALGORITMOS COMPUTACIONAIS 25| Embora o Português Estruturado seja uma linguagem bastan- te simplificada, ela possui todos os elementos básicos e uma estrutura semelhante à de uma linguagem de programação de computadores. Portanto, resolver problemas com português estruturado pode ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de programação qualquer, só não tão rígida quanto a sua sintaxe. Veja a estrutura de um algoritmo adiante: ALGORITMO <nome do algoritmo> <definição de variáveis> INÍCIO <comandos> FIM Quadro 03: Principais comandos do “Portugol”. SE-ENTÃO-SENÃO SE <condição> ENTÃO <comandos n> SENÃO <comandos n> FIMSE ESCOLHA-CASO CASO <condição> FAÇA opção 1: <comandos 1> opção n: <comandos n> SENÃO <comandos n> FIMCASO ENQUANTO-FAÇA ENQUANTO <condição> FAÇA <comandos n> FIMENQUANTO PARA-FAÇA PARA <variável>:= <valor inicial> ATÉ <valor final> FAÇA <comandos n> FIMPARA 26 ALGORITMOS COMPUTACIONAIS| REPITA-ATÉ REPITA <comandos 1> <comandos 2> <comandos n> ATÉ <condição> leia leia(variável/constante) leia(código) leia(nome) leia(e-mail) escreva escreva(“argumento”) escreva(“código do cliente:”) escreva(“nome do cliente:”) escreva(“digite um e-mail válido:”) Fonte: Elaborado pelo autor. Aqui podemos conhecer uma introdução sobre as estruturas de repetição, conforme Carvalho (2007, p. 18-21). Essas estruturas são poderosas e permitem que uma sequência de comandos seja executada até que uma condição seja satisfeita. Vejamos: Na estrutura Enquanto-Faça as instruções a serem repeti- das podem não ser executadas nenhuma vez, pois o teste fica no início da repetição, então a execução das instruções (que estão "dentro" da repetição) depende do teste. Nesta estrutura, a repetição é finalizadaquando o teste é Falso (F), ou seja, enquanto o teste for Verdadeiro as instruções serão executadas e, quando for Falso, o laço é finalizado. A estrutura de repetição Para-Até-Faça é um pouco dife- rente das outras duas (Repita-Até e Enquanto-Faça), pois possui uma variável de controle, ou seja, com esta estrutura é possível executar um conjunto de instruções um número determinado de vezes. Através da variável de controle, de- fine-se a quantidade de repetições que o laço fará. Na estrutura Repita-Até as instruções a serem repetidas são executadas, no mínimo uma vez, já que o teste (a condição) fica no final da repetição. Nesta estrutura, a repetição é fina- lizada quando o teste for Verdadeiro (V), ou seja, o algoritmo fica executando as instruções que estiverem dentro do laço até que o teste seja verdadeiro. ALGORITMOS COMPUTACIONAIS 27| Exemplos de Pseudocódigo ou Português Estruturado (figuras 03 e 04): Figura 03: Estrutura SE-ENTÃO-SENÃO. Fonte: Elaborada pelo autor. Figura 04: Estrutura ESCOLHA-CASO. Fonte: Elaborada pelo autor. Vamos demonstrar agora as estruturas de repetição. Observe-as com atenção, pois elas são importantíssimas para o processamento de dados. Dessa forma, faz toda a diferença aprender como funcionam. Existem três estruturas, a saber (figuras 05, 06 e 07): 28 ALGORITMOS COMPUTACIONAIS| Figura 05: Estrutura ENQUANTO-FAÇA. Fonte: Elaborada pelo autor. Figura 06: Estrutura PARA-FAÇA. Fonte: Elaborada pelo autor. Figura 07: Estrutura REPITA-ATÉ. Fonte: Elaborada pelo autor. ALGORITMOS COMPUTACIONAIS 29| A programação de computadores é fortemente apoiada pelas estruturas de decisão e controle. Segundo Prus (2001), o desenvolvimento de software mantém alinhadas essas estruturas para a criação de sistemas de informação, transformando, assim, o algoritmo em programa de computador, software empresarial ou de caráter científico. Apresentamos até aqui apenas alguns exemplos de comandos do Portugol, utilizando as estruturas de controle de programação. Na Unidade 02, estudaremos a construção dos algoritmos, momento em que abordaremos as outras estruturas e faremos as demonstrações devidas. É fato que, quando combinamos todas as estruturas, temos recursos suficientes para resolver os problemas, por mais complexos que estes possam parecer. FFIQUEIQUE ATENTOATENTO O mercado de desenvolvimento de software é um dos mais promissores. As estatísticas revelam números muito bons, pois as empresas estão cada vez mais dependentes de sistemas de informação. Os empregadores, de modo geral, procuram profissionais de sistemas que possuam olhar sistêmico e habilidades para resolver os problemas que surjam nos processos do dia a dia do negócio, transformando-os em sistemas de informação. Portanto, aprofunde seus conhecimentos na abstração de problemas e desenhe algoritmos ideais para resolvê-los. PPRATIQUERATIQUE 1. Com suas palavras, explique a composição do argumento. 30 ALGORITMOS COMPUTACIONAIS| 2. Defina proposição. 3. Em programação de computadores, o que são instruções sequenciais? 4. De acordo com os estudos realizados, o que é lógica? 5. O que é um algoritmo? 6. Como alcançar objetivos claros em programação de computadores? 7. Quais são as características técnicas de um algoritmo? 8. Com suas palavras, explique fluxo de execução. ALGORITMOS COMPUTACIONAIS 31| 9. Quais são as formas de representação de algoritmos? 10. Dentre as formas de representação de algoritmos, por que o pseudocódigo é mais eficaz? Explique. RRELEMBREELEMBRE Caro estudante, iniciamos nossos estudos sobre lógica de programação. A priori, pensamos que matemática é de difícil compreensão, mas agora, depois de ler esta unidade, percebermos que o raciocínio lógico é responsável por organizar nossos pensamentos, claro, a partir dos conhecimentos adquiridos. Por meio das noções de lógica e da compreensão sobre a notação usada para representar os argumentos, conseguimos chegar nas proposições, objeto de nossa maior atenção, pois precisamos aprender proposições, com base em seu conceito, para que possamos igualmente compreender a ideia dos conectivos lógicos, bem como da tabela verdade e suas propriedades, somente assim poderemos aplicar nosso raciocínio na construção dos algoritmos. Para fechar esta unidade, lemos sobre o fluxo de execução e a lógica nos algoritmos, conteúdos mais interessantes, visto que nos aproximamos da compreensão acerca do funcionamento da linguagem de computadores, ou seja, como funciona o fluxo de execução em um programa de computador. Quanto às linguagens de computadores, sabemos que existem inúmeras delas, mas o importante é que tenhamos o domínio daquela que adotarmos como padrão e sejamos capazes de desenvolver sistemas complexos, ou ainda, que possamos migrar qualquer sistema para a linguagem que dominamos, isso sim é um diferencial. 32 ALGORITMOS COMPUTACIONAIS| Vale salientar que, como os profissionais desenvolvedores de sistemas são bastante solicitados por grandes e médias empresas no mercado de trabalho, aprofundar os próprios conhecimentos sobre esses temas pode fazer você chegar longe profissionalmente. RREFERÊNCIASEFERÊNCIAS ALENCAR FILHO, Edgard de. Iniciação à Lógica Matemática. São Paulo: Nobel, 2002. ANDRADE, Doherty; CARMELO, Emerson Luiz do Monte. Elementos de Lógica. 1999. Disponível em: http://www.dma.uem.br/kit/topicos-especiais/ logica.pdf. Acesso em: 16 fev. 2022. BESSA, André. Algoritmos e Lógica de Programação: O que é isso e porque é importante. 2021. Disponível em: https://www.alura.com.br/artigos/ algoritmos-e-logica-de-programacao. Acesso em: 20 fev. 2022. BIANCHI, Luiz. Lógica Matemática. Website Lumadi. 2012. Disponível em: http://www.bianchi.pro.br/logicamat/logicamatematica.php. Acesso em: 16 fev. 2022. BRAVO, Raquel de Souza Francisco. Lógica Proposicional. 2016. Disponível em: http://www.ic.uff.br/~ueverton/files/aulasFMC/Aula%2012.pdf. Acesso em: 16 fev. 2022. 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. DICIONÁRIO INFORMAL. Notação. 2022. Disponível em: https://www. dicionarioinformal.com.br/notacao/. Acesso em: 15 fev. 2022. FRANCK, Natascha Simões. Raciocínio Lógico e Matemático. São Paulo: Maxi Educa, 2017. ALGORITMOS COMPUTACIONAIS 33| 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. INSTITUTO FEDERAL FLUMINENSE. Apostila de Lógica de Programação. 2019. Disponível em: https://educapes.capes.gov.br/bitstream/ capes/560827/2/Apostila%20-%20Curso%20de%20L%C3%B3gica%20 de%20Programa%C3%A7%C3%A3o.pdf. Acesso em: 21 fev. 2022. LIMA, Cleone Silva. Apostila de Lógica: Fundamentos de Lógica e Algoritmos. 2012. Disponível em: https://docente.ifrn.edu.br/cleonelima/ disciplinas/fundamentos-de-programacao-2.8401.1m/fundamentos-de- logica-e-algoritmos-1.8401.1v/apostila-equivalencias-logicas. Acesso em: 15 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. NETO, Francisco Cunha. Caderno de Lógica Proposicional. Cadernos CiComp. 2017. Disponível em: https://cadernoscicomp.com.br/tutorial/logica- proposicional/. Acesso em: 20 abr. 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. PRUS, Élcio Miguel. Um Modelo de Sistema Tutor Inteligente Aplicado aoEnsino da Programação Estruturada. 2001. Dissertação (Mestrado em Engenharia da Produção) – Programa de Pós-Graduação em Engenharia de Produção, Universidade de Santa Catarina, Florianópolis, 2001. Disponível em: https://repositorio.ufsc.br/xmlui/handle/123456789/81900. Acesso em: 22 fev. 2022. RAULINO, Filipe. Fundamentos de Lógica e Algoritmos: Introdução. Natal, 2013. Instituto Federal de Educação, Ciência e Tecnologia – Rio Grande do Norte. Aula 1. Disponível em: http://docente.ifrn.edu.br/filiperaulino/ disciplinas/logica/aulas/aula1. Acesso em: 15 fev. 2022. 34 ALGORITMOS COMPUTACIONAIS| SIGNIFICADOS. Significado de lógica. Disponível em: https://www. significados.com.br/logica/. Acesso em: 10 fev. 2022. AANOTAÇÕESNOTAÇÕES
Compartilhar