Baixe o app para aproveitar ainda mais
Prévia do material em texto
G RU PO SER ED U CACIO N AL M étodos Com putacionais MÉTODOS COMPUTACIONAIS Organizador: ALFREDO JOÃO DOS SANTOS NETO Autores: RAFAELA RODRIGUES OLIVEIRA AMARO ARIEL DA SILVA DIAS Capa para impressão_2022 1,3Capa para impressão_2022 1,3 27/07/2022 09:25:5327/07/2022 09:25:53 MÉTODOS COMPUTACIONAIS Autores: RAFAELA RODRIGUES OLIVEIRA AMARO; ARIEL DA SILVA DIAS. Organizador: ALFREDO JOÃO DOS SANTOS NETO Métodos Computacionais © by Ser Educacional Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, do Grupo Ser Educacional. Diretor de EAD: Enzo Moreira Gerente de design instrucional: Paulo Kazuo Kato. Coordenadora de projetos EAD: Jennifer dos Santos Sousa. Equipe de Designers Instrucionais: Gabriela Falcão; José Carlos Mello; Lara Salviano; Leide Rubia; Márcia Gouveia; Mariana Fernandes; Mônica Oliveira e Talita Bruto. Equipe de Revisores: Camila Taís da Silva; Isis de Paula Oliveira; José Felipe Soares; Nomager Fabiolo Nunes. Equipe de Designers gráficos: Bruna Helena Ferreira; Danielle Almeida; Jonas Fragoso; Lucas Amaral, Sabrina Guimarães, Sérgio Ramos e Rafael Carvalho. Ilustrador: João Henrique Martins. Neto, Alfredo João dos Santos; Amaro, Rafaela Rodrigues Oliveira; Dias, Ariel da Silva. Recife: Editora Digital Pages e Grupo Ser Educacional - 2022. 185 p.: pdf ISBN: 978-65-81507-39-8 1. Computadores 2. Redes 3. Programação. Grupo Ser Educacional Rua Treze de Maio, 254 - Santo Amaro CEP: 50100-160, Recife - PE PABX: (81) 3413-4611 E-mail: sereducacional@sereducacional.com Iconografia Estes ícones irão aparecer ao longo de sua leitura: ACESSE Links que complementam o contéudo. OBJETIVO Descrição do conteúdo abordado. IMPORTANTE Informações importantes que merecem atenção. OBSERVAÇÃO Nota sobre uma informação. PALAVRAS DO PROFESSOR/AUTOR Nota pessoal e particular do autor. PODCAST Recomendação de podcasts. REFLITA Convite a reflexão sobre um determinado texto. RESUMINDO Um resumo sobre o que foi visto no conteúdo. SAIBA MAIS Informações extras sobre o conteúdo. SINTETIZANDO Uma síntese sobre o conteúdo estudado. VOCÊ SABIA? Informações complementares. ASSISTA Recomendação de vídeos e videoaulas. ATENÇÃO Informações importantes que merecem maior atenção. CURIOSIDADES Informações interessantes e relevantes. CONTEXTUALIZANDO Contextualização sobre o tema abordado. DEFINIÇÃO Definição sobre o tema abordado. DICA Dicas interessantes sobre o tema abordado. EXEMPLIFICANDO Exemplos e explicações para melhor absorção do tema. EXEMPLO Exemplos sobre o tema abordado. FIQUE DE OLHO Informações que merecem relevância. SUMÁRIO UNIDADE 1 Introdução.................................................................................. 12 Introdução a computadores e componentes................................ 13 Arquitetura de um computador......................................................... 15 Representação da informação no computador.................................. 18 Conceito de bits.................................................................................. 18 Bytes e seus múltiplos para coleção de bits........................................ 19 Desenvolvimento de Algoritmos................................................. 20 Sintaxe de um algoritmo.................................................................... 21 Fluxogramas...................................................................................... 23 Semântica de um algoritmo............................................................... 24 Exemplo não computacional de um algoritmo.................................. 24 Exemplo computacional de um algoritmo......................................... 25 Tipos de dados e convenções............................................................. 27 Nomes de variáveis............................................................................ 28 Operações Aritméticas...................................................................... 29 Teoria dos erros........................................................................... 31 Erro na origem dos dados.................................................................. 34 Erro de truncamento......................................................................... 35 Erro de arredondamento................................................................... 36 Erro absoluto, erro relativo e erro percentual...................................... 37 Aritmética de ponto flutuante........................................................... 39 Algarismos significativos.................................................................. 40 Multiplicação e divisão com algarismos significativos...................... 41 Felipe Costa Máquina de escrever Teoria dos erros Sistemas numéricos.................................................................... 41 Sistema de numeração decimal......................................................... 43 Sistema de numeração binário.......................................................... 43 Sistema de numeração octal............................................................. 44 Sistema de numeração hexadecimal................................................. 44 Mudança de bases numéricas............................................................ 45 Base binária para base decimal.......................................................... 45 Base decimal para base binária.......................................................... 47 Sistema e Aritmética de ponto flutuante.......................................... 50 Linguagens de programação....................................................... 55 Paradigmas....................................................................................... 57 Paradigma imperativo....................................................................... 58 Paradigma procedural....................................................................... 58 Paradigma orientado a objetos......................................................... 59 Paradigma processamento paralelo.................................................. 61 Paradigma declarativo...................................................................... 62 Paradigma de lógica.......................................................................... 62 Paradigma funcional......................................................................... 63 Paradigma database (paradigma de processamento de banco de dados)............................................................................................... 64 Paradigma de programação orientada a eventos.............................. 65 Linguagens de baixo e alto nível........................................................ 66 Linguagem de baixo nível.................................................................. 66 Linguagem de alto nível.................................................................... 67 Principais diferenças entre linguagem de baixo nível e linguagem de alto nível............................................................................................67 UNIDADE 2 Introdução...................................................................................72 Introdução à linguagem de programação C.................................. 73 Conceitos básicos da linguagem C............................................... 73 Variáveis e constantes em C............................................................... 76 Comandos de entrada e saída de dados............................................. 80 Operadores na linguagem C............................................................... 83 Estruturas de decisãoem C ......................................................... 86 Estrutura de decisão IF....................................................................... 87 Estrutura de decisão SWITCH............................................................ 88 Estruturas de repetição em C...................................................... 90 Laço de repetição FOR....................................................................... 90 Laço de repetição WHILE.................................................................... 91 Laço de repetição DO-WHILE............................................................. 92 Funções em C.............................................................................. 93 Vetores e matrizes em C.................................................................... 95 UNIDADE 3 Introdução.................................................................................100 Equações não lineares.................................................................101 Solução de equações não lineares......................................................101 Teorema de Bolzano..........................................................................102 Métodos de solução de equações não lineares i...........................103 Método do Meio Intervalo (MMI)......................................................104 Método das Aproximações Sucessivas (MAS)...................................108 Métodos de solução de equações não lineares ii...........................111 Método das secantes (MS).................................................................111 Método de Newton-Raphson (MNR)................................................114 Comparação entre os métodos numéricos........................................118 Sistemas lineares.......................................................................120 Classificação de Sistemas Lineares....................................................121 Métodos diretos.........................................................................122 Método da Eliminação Gaussiana......................................................123 Método da fatoração LU....................................................................128 UNIDADE 4 Introdução.................................................................................134 Equações não lineares – métodos iterativos...............................135 Método de Gauss-Jacobi.................................................................. 136 Método de Gauss-Seidel.................................................................. 140 Teoria da aproximação...............................................................145 Ajuste de curvas............................................................................... 145 Método dos Mínimos Quadrados (MMQ)......................................... 146 Interpolação polinomial.............................................................151 Método de Newton-Gregory............................................................ 153 Método de Lagrange........................................................................ 157 Equações diferenciais ordinárias................................................160 Método de Euler............................................................................... 162 Método de Runge-Kutta.................................................................. 166 Integração numérica..................................................................169 Regra do Trapézio............................................................................. 171 Primeira Regra de Simpson............................................................... 173 Segunda Regra de Simpson............................................................... 176 Referências Bibliográficas.........................................................180 Apresentação Olá, aluno(a) Desde suas primeiras aplicações no século passado, ficou cla- ro que o computador mudaria para sempre nossas vidas. Os compu- tadores, que antes eram grandes máquinas de calcular, passaram a fazer parte de nossa realidade no formato de desktops pessoais, tablets, smartphones e tantos outros. A simulação computacional, proveniente do constante avan- ço tecnológico,é possibilitada pela modelagem matemática, prática que permite esquematizar uma situação-problema. Nesse contexto, surge a necessidade de compreender métodos numéricos. Neste objeto de aprendizagem, veremos uma introdução aos computadores e seus componentes. Aprenderemos o que são algo- ritmos e como construí-los. Ainda neste objeto de aprendizagem, será introduzida a teoria dos erros e a aritmética de ponto flutuante, usada para representar números reais computacionalmente. Fina- lizando com conceitos de linguagem de programação e seus para- digmas. Em seguida, entraremos no mundo da linguagem de progra- mação C. Conheceremos como essa linguagem surgiu, seus con- ceitos iniciais e os principais comandos. Também veremos como representar vetores e matrizes nessa linguagem e como construir funções. Finalizando, aprenderemos métodos numéricos que possibi- litarão a simulação computacional para resolução de problemas que não são analíticos. Você aprenderá métodos para resolver equações não lineares, sistemas lineares, equações diferenciais ordinárias e de integração numérica. Autoria Rafaela Rodrigues Oliveira Amaro Olá, meu nome é Rafaela Rodrigues Oliveira Amaro. Sou especialista em Me- todologia do Ensino de Matemática pela Faculdade de Administração, Ciências, Educação e Letras (FACEL) em 2012 e gra- duada em Matemática pela Fundação Co- munitária de Ensino de Itabira (FUNCESI) em 2009. Ariel da Silva Dias Olá, meu nome é Ariel da Silva Dias. Sou mestre em Ciência da Computação e Matemática Computacional pela Univer- sidade de São Paulo (2014). É graduado em Ciência da Computação pela Pontifí- cia Universidade Católica de Minas Gerais (2011). É professor universitário com atua- ção em cursos de graduação e pós-gradua- ção lato sensu nas áreas de Banco de Dados, Matemática Computa- cional, Sistemas Distribuídos, Sistemas Operacionais, Segurança da Informação, Compiladores, Linguagens de Programação, Internet das Coisas, Jogos Digitais, Gameficação e Teoria dos Jogos. * Aponte a câmera do seu celular para ter acesso ao currículo lattes. Alfredo João dos Santos Neto Rafaela Rodrigues Oliveira Amaro Ariel da Silva Dias Alfredo João dos Santos Neto Olá, meu nome é Alfredo João dos Santos Neto. Sou bacharel em Física pela Universidade de Pernambuco (2016), mes- tre em Física pela Universidade Federal de Pernambuco (2018) e especialista em Me- todologias da Educação a Distância pela Universidade da Amazônia (2022). Organizador UN ID AD E 1 Objetivos ◼ Compreender a arquitetura de um computador, seus elemen- tos, o conceito de bits e seus múltiplos; ◼ Reconhecer a estrutura de um algoritmo e como implemen- tá-lo; ◼ Conceituar, identificar e calcular o erro; ◼ Definir o que é Aritmética de ponto flutuante e apresentar suas propriedades; ◼ Definir o que é Aritmética de ponto flutuante e apresentar suas propriedades; 12 Introdução Durante a leitura deste material, você conhecerá um pouco da his- tória dos computadores, além de sua arquitetura e como seus com- ponentes interagem. Entenderá que um algoritmo é uma sequência lógica de ins- truções e que não se limita apenas à computação. Aprenderá sobre a teoria dos erros e aritmética de ponto flutuante, dois conceitos im- portantes e inerentes à linguagem dos computadores. Compreenderá o conceito de linguagem de programação, os principais paradigmas envolvidos e entenderá que essas linguagens foram criadas para dizer ao computador e aos elementos de sua ar- quitetura o que eles têm que fazer e quando têm que fazer. Estude interativamente com o material, visitando os links e acessando os vídeos propostos, de forma a construir uma aprendi- zagem mais efetiva.13 Introdução a computadores e componentes Desde muito cedo, em 300 a.C., na Babilônia (atual Iraque), as má- quinas de contagem, conhecidas como ábacos, já eram utilizadas no senso e para outros tipos de cálculos. A primeira ferramenta de contagem acionada por engrenagem foi o relógio de cálculo de Schickard, inventado em 1623. Alguns anos depois,uma calculadora – capaz de adicionar, subtrair, multiplicar e dividir – foi desenvol- vida pelo famoso estudioso Gottfried Wilhelm Leibniz, que também desenvolveu os números binários e muitas ideias importantes em filosofia e lógica. Em 1642, o filósofo e matemático Blaise Pascal, aos 19 anos, inventou a pascaline (Figura 1) como uma ajuda para o pai, que era cobrador de impostos. Pascal construiu 50 unidades dessa calcula- dora de função única acionada por engrenagem, cuja única funcio- nalidade era realizar adição. Entretanto, devido ao custo exorbitan- te, não conseguiu vender muitas dessas calculadoras. Outro fator da baixa venda dá-se porque elas realmente não eram tão precisas, afinal, naquela época, não era possível fabricar engrenagens com a precisão necessária. Figura 1: Pascaline ou pascalina, primeira máquina de calcular mecânica, inventada em 1642, por Pascal. Fonte:BRANCAGLIONE, 2018. Note que estamos falando de uma “tecnologia” (assim era para a época) que durou até a era atual, pois nos painéis dos carros a parte do hodômetro do velocímetro usava o mesmo mecanismo que a pascaline para incrementar a próxima roda após cada rotação completa da roda anterior. 14 O alemão Gottfried Wilhelm Leibniz, poucos anos depois de Pascal, conseguiu construir uma calculadora de quatro funções – adição, subtração, multiplicação e divisão –, que foi batizada de contador de passos. Embora o contador empregasse o sistema de números decimais, Leibniz foi o primeiro a defender o uso do sis- tema de números binários, fundamental para a operação dos com- putadores modernos. Leibniz é considerado um grande filósofo, foi inventor do cálculo junto com Newton, mas morreu pobre e sozinho. Com o sistema binário, os inventores foram capazes de usar sistemas de cartões perfurados para os primeiros computadores eletrônicos. A International Business Machines (IBM) posterior- mente adotaria essa tecnologia e a disponibilizaria para usos mais amplos. Para atender às demandas de orientação de mísseis durante a Segunda Guerra Mundial, a IBM e a Universidade de Harvard se uni- ram para criar o Harvard Mark I, um computador mecânico de um metro e oitenta de altura. Este foi o primeiro computador moderno. SAIBA MAIS A Hewlett-Packard (HP), uma empresa de tecnologia iniciada em 1939, desenvolveu seu primeiro computador em 1966. O HP 2116A, como era chamado, era um controlador para vários instrumentos diferentes. Em 1974, a HP desenvolveu um sistema de processa- mento de memória que usava chips DRAM (Dynamic Random Ac- cess Memory Chips), em oposição aos núcleos magnéticos popula- res. O primeiro computador pessoal estava disponível em 1975: o computador MITAS Altair. Ele vinha em uma caixa e tinha que ser montado pelo comprador. Este foi o computador que inspirou Bill Gates, então calouro de Harvard, a mudar o rumo de sua carreira e criar a empresa chamada Microsoft. O primeiro computador da Apple, o Apple I, estava disponível um ano depois. 15 VOCÊ SABIA? Existem vários lugares (virtuais e não virtuais) para se ver a evolu- ção da tecnologia de computadores. O Computer History Museum está localizado em Mountain View, Califórnia, parte do famoso Vale do Silício. É um dos maiores museus que conta a história da evolu- ção dos computadores. Como está um pouco longe de nós, que tal visitar o site e vivenciar um tour virtual? A arquitetura do computador é uma especificação que detalha como o conjunto de padrões de tecnologia de software e hardware inte- ragem para formar um sistema ou plataforma computacional. Em resumo, a arquitetura do computador se refere a como um sistema de computador é projetado e com quais tecnologias ele é compatível. Como vimos brevemente em sua história, o computador é uma máquina eletrônica que facilita a execução de qualquer tare- fa. No computador, a CPU executa cada instrução fornecida em uma série de etapas. Essa série é chamada ciclo da máquina e é repetida para cada instrução. Um ciclo de máquina envolve buscar instru- ções, decodificar as instruções, transferir os dados e executar as instruções. Existem três categorias de arquitetura de computadores: • Design do sistema: inclui todos os componentes de hardware do sistema,como processadores, unidade de processamento gráfico e acesso direto à memória.Ele também inclui contro- ladores de memória, caminhos de dados, multiprocessamento e virtualização. • Arquitetura do conjunto de instruções (ISA): é a linguagem de programação incorporada da unidade central de processa- mento. Ela define as funções e capacidades da CPU com base em qual programação pode executar ou processar. Isso inclui Arquitetura de um computador Felipe Costa Destacar 16 Figura 2: Arquitetura de Von Neumann. Fonte: O autor Conforme pode ser observado na Figura 2, o sistema compu- tacional possui unidades básicas que ajudam o computador a execu- tar operações. Veja a seguir: • Unidade de entrada: conecta o ambiente externo ao sistema interno do computador. Ela fornece dados e instruções para o sistema do computador. Os dispositivos de entrada mais usa- dos são teclado, mouse, fita magnética etc. A unidade de en- trada executa as seguintes tarefas: aceita os dados e instruções do ambiente externo, converte-o em linguagem de máquina e fornece ao sistema computacional os dados convertidos. o tamanho da palavra, tipos de registro do processador, mo- dos de endereçamento da memória, formatos de dados e o conjunto de instruções que os programadores usam. • Microarquitetura: também conhecida como organização do computador, esse tipo de arquitetura define os caminhos dos dados, o processamento e o armazenamento dos dados, bem como a forma com que eles devem ser implementados na ISA. Na história da computação, surgiram diversos tipos de arqui- teturas de computador. Entretanto, a mais famosa, utilizada até hoje, é a arquitetura de Von Neumann, criada em 1946 por John Von Neumann (Figura 2). 17 • Unidade de saída: responsável por conectar o sistema interno do computador ao ambiente externo. Ela fornece os resultados de qualquer cálculo ou instruções para o mundo exterior. Al- guns dispositivos de saída são impressoras e monitores; • Unidade de memória ou armazenamento: contém os dados e instruções. Ela também armazena os resultados intermediá- rios antes de serem enviados paraos dispositivos de saída ou para uso posterior. A unidade de memória ou armazenamento de um sistema de computador pode ser dividida em duas ca- tegorias: • Armazenamento primário: é um tipo volátil, com armazenamento temporário, usado para armazenar os dados que estão sendo executados no momento. Os dados são perdidos quando o computador é des- ligado. A RAM é usada como memória de armazena- mento principal; • Armazenamento secundário: é um tipo não volátil, com armazenamento permanente de dados, sendo esta memória mais lenta e mais barata que a memó- ria primária. Os dispositivos de memória secundária comumente usados são discos rígidos e CDs; • Unidade lógica aritmética (ULA): todos os cálculos são rea- lizados na ULA do sistema computacional. Ela pode executar operações básicas, como adição, subtração, divisão, multi- plicação etc. Sempre que são necessários cálculos, a unidade de controle transfere os dados da unidade de armazenamento para a ULA.Quando as operações são concluídas, o resultado é transferido de volta para a unidade de armazenamento; • Unidade de controle: responsável por controlar todas as ou- tras unidades do computador e por buscar as instruções na memória principal. Também é conhecida como sistema ner- voso central do computador;• Unidade central de processamento (UCP): a unidade de con- trole e a ULA são conhecidas como UCP (ou CPU para sigla em inglês de central processing unit). A UCP é o cérebro do sis- 18 Representação da informação no computador A arquitetura do computador é composta de circuitos eletrônicos, que operam com sinais binários (0 e 1). Nos projetos de circuitos computacionais são usados chips, que são compostos de um mate- rial semicondutor denominado transistor. Os transistores possuem a propriedade de conduzir energia elétrica apenas quando uma ten- são conveniente é empregada em seus terminais. Sendo assim, os transistores são utilizados em um chaveamento como “liga-desli- ga”, sendo que, quando está ligado, é representado por 1, e, quando desligado, é representado por 0. O agrupamento de transistores permite outras funções lógi- cas. Como não é o objetivo deste livro se aprofundar nessas funções, por ora é suficiente saber que tudo o que é armazenado e processado no computador trata-se de um conjunto finito de 0s e 1s, e isso nos leva ao conceito de bits. Conceito de bits A informação mais básica que um computador consegue compreen- der é o bit. Este termo é uma forma abreviada de dígito binário e possui apenas um dos dois valores: 0 ou 1. Se você olhar para um interruptor de luz, verá que ele é um mecanismo binário, pois ou está ligado ou desligado. A forma abreviada de um bit é uma letra minúscula b. Para ter certeza de que seu significado é entendido, você provavelmente deve usar a palavra inteira bit, pois, em geral, às vezes as pessoas usam indevidamente a letra minúscula b para byte. Nós, seres humanos, não conseguimos (ou temos alguma dificuldade) em pensar em termos de bits. Somente computadores possuem facilidade e destreza ao trabalhar com eles. Portanto, os seres humanos foram criando, aos poucos, uma organização para interagir com o computador. É aí que entram os bytes e outras co- leções de bits. tema computacional. Ela executa as seguintes tarefas: realiza todas as operações, toma todas as decisões e controla todas as unidades do computador. 19 Bytes e seus múltiplos para coleção de bits Um byte (sua forma abreviada é um B maiúsculo) é uma unidade comum para agrupamentos de bits. Em uso geral, um byte é consi- derado uma sequência contígua de oito bits. Existem outros signi- ficados menos comuns para um byte, mas, para a sua formação, a sequência de oito bits é boa e será adotada neste livro. Em termos de conversão para uso humano, considere que oito bits podem representar 256 coisas diferentes. Começando com zero (a contagem por um computador geralmente começa em zero em vez de um), você obtém uma sequência como a seguir: • 00000000 = decimal 0 • 00000001 = decimal 1 • 00000010 = decimal 2 • 00000011 = decimal 3 • ... • 11111111 = decimal 255 Deste modo, você pode mapear os números inteiros de 0 a 255 em um byte,usar 256 bytes para representar 256 caracteres ASCII diferentes, usar 256 bytes para representar números hexadecimais de 0 a FF ou qualquer outro mapeamento definido por você. A capa- cidade de fazer esse mapeamento permite que os humanos intera- jam melhor com os computadores sem ter que pensar em binário. As coisas ficam complicadas quando os conjuntos de bytes começam a aumentar; é aí que surgem os múltiplos como quilo, mega, giga, penta... bytes! Entretanto, aqui cabe uma atenção es- pecial. O termo “quilo” é geralmente denotado para representar mil ou 103. No binário, por sua vez, “quilo” significa 210, o que resulta em 1024 em decimal. Esta relação continua em toda a escala dos múlti- plos de bytes. Com tudo isso em mente, aqui estão os vários prefixos em uso hoje, e a que eles se referem em números reais. Cada múltiplo é mostrado primeiro como seu valor decimal e depois como seu valor binário: 20 • Kilo (kB) = 1.000 bytes = 103 decimal • Kibi (KiB) = 1.024 bytes = 210 binário • Mega (MB) = 1.000.000 bytes = 106 decimal • Mebi (MiB) = 1.048.576 bytes= 220 binário • Giga (GB) = 1.000.000.000 bytes = 109 decimal • Gibi (GiB) = 1.073.741.824 bytes = 230 binário • Tera (TB) = 1.000.000.000.000 bytes = 1012 decimal • Tebi (TiB) = 1.099.511.627.776 bytes = 240 binário Desenvolvimento de Algoritmos Existem muitas definições para o termo algoritmo. As autoras do li- vro Algoritmos e programação com exemplos em Pascal e C (2014), Nina Edelweiss e Maria Aparecida Livi, indicam que um algoritmo corresponde a uma descrição de um padrão de comportamento ex- presso em termos de um conjunto finito de ações. Edelweiss e Livi apontam que um algoritmo deve: • possuir um estado inicial; • consistir em uma sequência lógica finita de ações; • produzir dados de saída corretos; • possuir um estado final. Thomas Cormen et al., em sua obra Algoritmos: teoria e prá- tica (2012), defende que um algoritmo deve ser um procedimento computacional bem definido, que toma um conjunto de valores de entrada e produz um conjunto devalores como saída. Note que tanto Edelweiss e Livi quanto Cormen elencam propriedades de um al- goritmo caracterizando, principalmente, que ele deve iniciar (re- cebendo dados de entrada) e ser concluído (apresentando dados de saída). Podemos definir algoritmo como um procedimento ou fór- mula para resolver um problema com base na realização de uma sequência de ações especificadas. Um programa de computador pode ser visto como um algoritmo elaborado. Atente para a palavra Felipe Costa Destacar 21 Sintaxe de um algoritmo Como vimos, o algoritmo é uma sequência de ações para resolver um problema. Logo, para que todas as pessoas envolvidas em um projeto possam entender o seu algoritmo, é necessário estabelecer uma convenção ou conjunto de regras que regulem a escrita deste algoritmo. A este conjunto denominamos regras de sintaxe. Quando falamos em regras na computação, estamos por in- dicar quais tipos de comandos (estruturas de programação) e ex- pressões podem ser utilizados. Os tipos de comandos ou estruturas são: • Estrutura sequencial: trata-se da estrutura de controle pa- drão. As instruções são executadas linha por linha, na ordem em que aparecem; • Estrutura condicional: é usada para testar uma condição. Uma sequência de instruções é executada dependendo da condição verdadeira ou falsa. Isso significa que o programa escolhe en- tre dois ou mais caminhos alternativos. Esta condição se refe- re a qualquer expressão ou valor que retorne um valor boolea- no, significando verdadeiro ou falso; • Estrutura de repetição (ou iteração): executa repetidamente uma série de instruções em loop, desde que a condição de pa- rada seja verdadeira. A condição de parada pode ser predefi- nida ou em aberto. Um loop pode ser controlado por evento ou controlado por contador. Um loop controlado por evento exe- cuta uma sequência de instruções até que ocorra um evento, enquanto um controlado por contador executa as instruções utilizada na frase anterior “pode”, pois, afinal, um programa é um algoritmo, mas um algoritmo não é um programa. Em matemática e ciência da computação, um algoritmo ge- ralmente significa um pequeno procedimento que resolve um pro- blema recorrente. Porém, um algoritmo não se limita apenas a um programa de computador, ele pode se apresentar de outras manei- ras: algoritmo que leve você de casa até a faculdade; algoritmo para fazer um bolo; algoritmo de como dirigir; algoritmo de como resol- ver um cálculo matemático, entre outros exemplos. 22 EXEMPLO Sintaxe de um algoritmo Problema: precisamos mostrar na tela do computador a área do círculo com base no dado de entrada (raio) que será informado pelo usuário, sabendo que sua fórmula é área = pi · raio². Resposta: um possível algoritmo que resolve este problema é: inicio_do_algoritmo Primeiro passo: peça ao usuário para digitar o raio do círculo; Segundo passo: calcule a área usando a fórmula pi · raio²; Terceiro passo: exiba o valor na tela. fim_do_algoritmo Note o estadoinicial, a solução do problema por meio de uma sequência finita de ações e o estado final, tudo conforme as defini- ções vistas no início deste tópico. um número pré-determinado de vezes. Nos três tipos de estruturas existem expressões envolvendo a utilização de dados. Não é usual trabalhar diretamente com os valo- res dos dados; deste modo, são utilizadas variáveis que os armaze- nam para que sejam realizadas as operações. Uma variável corres- ponde a um lugar físico na memória do computador,onde ficarão os bits referente aos dados. Acrescentam-se ainda os valores constantes que, diferente- mente das variáveis,não podem ser mudados. Por exemplo, o va- lor de pi na matemática é3,1415...; na física e na geografia, ele tem o mesmo valor, logo, é uma constante.O saldo bancário é um valor que será modificado, podendo ser de mil reais,dois mil, dois reais ou zero. Chamamos este tipo de valor variável. 23 Fluxogramas Além da escrita de uma sequência de ações em português, como foi feito anteriormente, também podemos utilizar fluxogramas, que possuem grande apelo visual. Todo fluxograma possui uma sintaxe e uma semântica mui- to bem definidas,apresentando símbolos específicos para cada co- mando, tipos de expressões padronizados e sub-rotinas predefini- das. Enquanto a sintaxe define os símbolos,a semântica define como interpretá-los. A Figura 3 apresenta os principais tipos de compo- nentes do fluxograma. Figura 3: Símbolos de um fluxograma. Fonte: O autor Utilizando estes elementos, podemos representar o algorit- mo do cálculo da área do círculo por meio de um fluxograma. Obser- ve o Diagrama 1. Diagrama 1: Fluxograma para o cálculo da área de um círculo. Fonte: O autor Felipe Costa Destacar 24 Veja pelo fluxograma que temos o início do algoritmo, a se- quência finita de ações e o fim, todos os elementos bem definidos. Semântica de um algoritmo Tendo as regras de escrita (sintática) definidas, é necessário deter- minar um conjunto de regras para a interpretação do algoritmo, às quais chamaremos regras semânticas. Os símbolos e comandos, por si só, não possuem um significado, por isso precisam estar bem definidos. Vamos olhar o Diagrama 1. O símbolo do retângulo represen- ta o processamento da instrução “Área ← pi · raio²”. É um tipo de símbolo que será executado de forma imperativa, uma vez que não existe condição imposta a ele. A instrução interna ao retângulo é condizente com a ação dele, logo, o símbolo está semanticamente correto. Note, então, que a semântica sempre deve acompanhar a sintaxe. Por exemplo, o símbolo de retângulo não poderia representar o início ou o fim de um fluxograma, uma vez que ele não possui esta funcionalidade. Exemplo não computacional de um algoritmo Um exemplo de algoritmo que está fora do contexto computacional é o procedimento para se fritar um ovo. Vamos lá?! início Coloque um pouco de óleo na frigideira; Acenda o fogo; Coloque a frigideira sobre o fogo; Espere o óleo esquentar; Quebre o ovo; Despeje o ovo no óleo quente; Coloque um pouco de sal no ovo; Retire o ovo quando estiver pronto. Fim 25 Exemplo computacional de um algoritmo Um exemplo concreto do uso de algoritmo pode ser feito quando, dados dois valores, temos que encontrar qual deles é o maior e apre- sentá-lo na tela. Note que existe uma condição simples: se um número X for maior que um número Y, então mostraremos o número X na tela; caso contrário (senão), apresentaremos o número Y na tela. Vamos então ao algoritmo. início Pedir para o usuário fornecer valores inteiros para X e Y; SE X > Y ENTÃO Mostrar o valor de X na tela; SENÃO Mostrar o valor de Y na tela; Fim Podemos simular a execução deste algoritmo utilizando o conceito de teste de mesa. Em um teste de mesa, simulamos al- gumas possíveis entradas do usuário, com o objetivo de entender a execução do algoritmo ou código e verificar se o algoritmo realmen- te chega ao objetivo para o qual foi projetado. Neste teste, colocare- mos o comando, bem como as variáveis, conforme o Quadro 1. Quadro 1: Teste de mesa do algoritmo para encontrar maior valor. Felipe Costa Destacar 26 Note que o valor de entrada para a variável X foi 6, e o valor para a variável Y foi 5.No teste condicional, 6 é maior que 5, logo, ele foi apresentado. Mas veja agora o teste do Quadro 2. Nele, o usuário informa os valores 50 e 51, respectivamente, para X e Y. Quadro 2: Teste de mesa do algoritmo para encontrar maior valor. Diagrama 2: Fluxograma do algoritmo para encontrar o maior número entre X e Y. Fonte: O autor Para este segundo teste, X é igual a 50 e Y igual a 51. No teste condicional SE X > Y, a relação é falsa, logo, não é mostrado o valor de X na tela, mas, sim,o valor de Y. Note a instrução SENÃO indican- do um segundo caminho na execução do algoritmo. O Diagrama 2 possibilita visualizar os dois caminhos possí- veis que podem ser obtidos por esse algoritmo. Note que a saída à direita é para quando X é maior que Y, e a saída à esquerda é para quando Y é maior que X. 27 Veja que com o fluxograma fica mais prático compreender o comportamento de execução do algoritmo. Nele, temos o início, as instruções finitas e o fim. Sendo verdadeira ou falsa a comparação, o fluxograma sempre terminará no último símbolo chamado fim. Tipos de dados e convenções Até agora nós apenas criamos os algoritmos e os mostramos em “execução”.Porém, olhe o que fizemos e perceba que nem no al- goritmo nem no fluxograma há indicação explícita do tipo de valor que está em operação. Por exemplo,os números 50 e 51, bem como o 6 e o 5, podem ser utilizados como números inteiros ou números reais. Logo, nos exemplos que vimos anteriormente, não tem como definí-los. Por outro lado, os números 50,19 e 51,8 são, certamente, nú- meros reais,pois existe uma vírgula separando as casas decimais. Além disso, existem valores como caracteres (uma única letra ou número), strings ou cadeias de caracteres(possui dois ou mais ca- racteres) e valores lógicos. Esses são os tipos primitivos de dados e os veremos agora. Números: em um algoritmo, podemos trabalhar tanto com números inteiros quanto com números reais. Estes últimos são es- critos com separador de casas decimais. Por exemplo, ao pesar um determinado material, obtivemos o valor 40, que pode ser inteiro ou real. Se nosso objetivo era apenas pesar e saber o valor, sem se preo- cupar com a precisão, então podemos declarar uma variável como inteira, logo, o 40 apresentado é inteiro. Porém, se desejamos obter precisão na aferição, a variável precisa ser declarada como núme- ro real, deste modo, podemos obter um peso como 40,0002. Note a presença das casas decimais. Caracteres e cadeias de caracteres: entende-se como carac- tere a presença de uma única letra, número ou símbolo. Todo carac- tere em linguagem de programação é limitado com aspas simples. Deste modo, o caractere A será representado como ‘A’. Isso ocorre para evitar confusão entre o valor do caractere e o nome de uma va- riável, bem como para diferenciar um número cinco (que é inteiro) de um número ‘5’ (entre aspas simples, que é um caractere). 28 Símbolos como ‘@’, ‘\’, ‘/’, espaço em branco e outros tam- bém são representados como caracteres. Quando existem dois ou mais caracteres juntos,chamamos de cadeia de caracteres ou strings. Por exemplo, a palavra “programação”é uma string ou ca- deia de caracteres. Note que, neste caso, usamos aspas duplas para delimitar uma string. Outro exemplo: “programação de computa- dores”,veja que aqui, além das letras, também há espaços em bran- co que fazem parte da string. Valores lógicos: George Boole elaborou a lógica booleana e, em sua homenagem, foi criado o tipo chamado booleano ou tipo lógico. Este tipo de dados, diferentemente dos anteriores, apenas possui dois valores:verdadeiro ou falso, sendo convencionado tra- tá-los na grafia inglesa: true ou false. Estes valores são estudados em expressões lógicas e estruturas condicionais. Nomesde variáveis Vimos então os tipos primitivos de dados: inteiro, real e caractere. Agora,veremos que existem convenções para declarar o nome das variáveis, e é importante que sejam seguidas para que não haja erros de execução ou interpretação de leitura do código. 1. O nome de uma variável deve ter, no máximo, 63 caracteres; 2. O nome deve ser iniciado obrigatoriamente por uma letra ou por ‘_’; 3. O nome só pode possuir número se começar com letra; 4. O nome da variável somente aceita: letras, números e o carac- tere ‘_’; 5. Letras gregas ou outras fora do alfabeto ocidental não são aceitas; 6. Algumas linguagens de programação são case sensitive, ou seja, A (maiúsculo)é diferente de a (minúsculo). • Exemplos de nomes válidos de variáveis: numero, vetor, num1, coord_X,_resultado, ValorTotal, valor_parcial. • Exemplos de nomes inválidos de variáveis: n umero, @vetor, N 1, num-fi m,x&a, R$. Felipe Costa Destacar 29 Note que o espaço em branco é um erro, pois pode parecer que se tratam de duas variáveis diferentes. Os caracteres especiais não devem ser utilizados em variáveis. O caractere ‘-‘ não pode ser utilizado, uma vez que ele, na programação,tem o papel reservado para realizar operações de subtração. Operações Aritméticas Na montagem do algoritmo ou de um código de programação, po- demos considerar as quatro operações aritméticas, que são: adição, subtração, multiplicação e divisão. Dependendo do tipo de variável e dos operadores, o resultado da operação pode ser diferente, e isso ocorre em três casos: divisão real,divisão inteira e obtenção do res- to da divisão. Todas estas operações são binárias, pois consideram a relação entre dois operandos. Outro tipo de operação existente é a troca de sinal, que, dife- rente das anteriores,é uma operação unária, pois realiza a troca de sinal de apenas um operando.Apesar de caracterizarmos apenas a relação entre números inteiros e números reais, também podemos utilizar a operação de adição em cadeias de caracteres.Por exemplo, considere uma variável A, que contém a cadeia “Métodos”,e uma variável B, que possui a cadeia de caracteres “Computacionais”.Ao fazermos C ← A + B, o resultado em C será “Métodos Computacio- nais”.Denominamos este tipo de adição com cadeia de caracteres concatenação. Veremos agora um exemplo de pseudocódigo de algoritmo que, ao receber dois números inteiros, realizará a divisão (operação div) e também obterá o resto da divisão utilizando a operação mod. Algoritmo: início Pedir para o usuário fornecer valores inteiros para A e B; Result ← A div B; Resto ← A mod B; Mostrar na tela result e resto. fim Felipe Costa Destacar O Operador + tem a finalidade principal de adicionar dois números. Entretanto, ele pode também concatenar operandos numéricos com operandos de cadeia de caracteres. O operador + possui um conjunto complexo de regras que determinam se adicionam, concatenam, sinalizam um erro do compilador ou emitem uma exceção InvalidCastException de tempo de execução. 30 Diagrama 3: Fluxograma de operações aritméticas. Fonte: O autor Agora faremos o teste de mesa simulando a interação do usuário com o algoritmo. A variável A receberá o valor 8, enquan- to a variável B receberá o valor 5. Faremos a operação de divisão de inteiros e também obteremos o resto da divisão armazenando, respectivamente, nas variáveis result e resto, seguindo a ordem de execução do algoritmo e do Diagrama 3. Vejamos então estas opera- ções no teste de mesa do Quadro 3. 31 Quadro 3: Teste de mesa do algoritmo apresentado. Quando dividimos o inteiro 8 pelo inteiro 5, o resultado da divisão (Result ← A div B) será 1, pois a parte inteira de 8dividida por 5 é 1. O valor do resto dessa divisão é 3, que foi obtido na operação Resto ← A mod B. Teoria dos erros A obtenção de resultados provenientes de observações é limitada. Afinal, o ser humano é falho. Todavia, uma vez que é difícil determi- nar respostas exatas e precisas, torna-se necessário estimar quão boa e eficiente foi a medição realizada, quantificando a qualidade da solução descoberta. Essa diferença entre o resultado encontrado e o resultado correto recebe o nome de erro e é inerente aos processos numéricos, não podendo, em muitos casos, ser evitado. Da mesma forma, a nossa interação com os computadores gera erros que são inevitáveis. Mas de que forma? Ao fornecermos dados ao computador, estes serão convertidos para linguagem de máquina e todas as operações necessárias serão efetuadas. Uma nova conversão será feita para que os resultados nos sejam apre- sentados. Dentro desses cenários, nasce a Teoria dos Erros, que estuda a dinâmica do erro nas diversas situações em que ele pode estar in- serido. Conforme Humes e outros autores, no livro Noções de Cál- culo Numérico, publicado em 1987, é propósito da Teoria dos Erros: • determinar o mais correto resultado para a medida aferida a partir dos dados experimentais existentes, ou seja, definir, em termos estatísticos, a mais acertada aproximação para o valor verdadeiro; • encontrar a incerteza no valor obtido, isto é, determi- nar o grau de precisão e confiança da medida analisada. 32 Vamos explorar um contexto comum à nossa vida, que fará toda a diferença para a compreensão desse conteúdo. Considere uma pista de atletismo de forma circular e raio (distância do centro à borda da circunferência) equivalente a 50 m. Um atleta tem como meta percorrer tal pista dez vezes diariamente, de maneira a se preparar para uma competição. Se a meta proposta pelo atleta for cumprida, quantos metros ele terá percorrido? Como se calcula o comprimento de uma circunferência? Vocês se lembram? A relação que permite calcular o comprimento de uma circunferência é C = 2 · π · r, em que π é uma constante e r indica a medida do raio da circunferência. Agora que já definimos os compo- nentes da fórmula a ser utilizada, podemos solucionar o problema. Figura 3: Elementos de uma circunferência. Fonte: Adobe Stock. Acesso em: 05/10/2019. Como já foi definido, o raio equivale a 50 m, mas e o valor de π? Que número representa essa constante? Para sanar essas interrogações, partiremos para o cálculo da metragem percorrida baseado nos valores de π indicados a seguir: π = 3,14 33 Sendo assim: C = 2 · π · r C = 2 · 3,14 · 50 = 314 Como esse percurso será executado dez vezes, logo, a conta que deve ser feita é: 314 · 10 = 3140 m Para outro valor de π: π = 3,1416 Desse modo: C = 2 · π · r C = 2 · 3,1416 · 50 = 314,16 Como esse percurso será executado dez vezes, logo, será per- corrido: 314,16 · 10 = 3141,6 m Para o seguinte valor de π: π = 3,14159265 C = 2 · π · r C = 2 · 3,14159265 · 50 = 314,159265 Como esse percurso será executado dez vezes, logo, será per- corrido o seguinte valor: 314,159265 · 10 =3141,59265 m Você identificou alguma alteração nas metragens percorri- das? A resposta é categórica: sim! Atente-se ao fato de como o re- sultado é alterado mediante o valor definido para π. Verifique que quanto mais preciso e exato se define essa constante, mais preciso e exato também é o resultado proveniente das operações que o uti- lizam. No entanto, a cada cálculo realizado, existe uma diferença, ainda que pequena,entre os resultados. Logo, há a incidência de erro, proveniente da utilização de um valor arredondado a outro mais preciso. Para operações como essa, é preciso identificar o tipo de erro existente para, posteriormente, mensurar o indicador. Felipe Costa Destacar 34 O número π indica a razão entre a circunferência de um círculo e seu diâmetro. Com a descoberta e aprimoramento do cálculo infinite- simal, passou-se também a recorrer a utilização de séries infinitas convergentes de produtos e frações com o intuito de aproximar o valor de π. CURIOSIDADE Erro na origem dos dados Alguns dados são obtidos por medidas experimentais. Em outras palavras,até obter determinadas informações, é comum que surjam incoerências. Dessa forma, logono início, nos deparamos com os erros dos dados de entrada. Quando o modelo matemático é proveniente de um problema físico, há incertezas quanto às medidas realizadas pelos instrumen- tos de medição, que possuem uma precisão limitada devido a diver- sos fatores, conforme mostra a Figura 4. Figura 4: Fontes de erro na origem de dados. Fonte: Adobe Stock. Acesso em: 05/10/2019. 35 De maneira geral, na tentativa de indicar um fenômeno físico por um modelo matemático, dificilmente se obtém uma descrição adequada a este fenômeno.Geralmente,é preciso várias simplifi- cações do mundo físico para se obter um modelo matemático que possibilite seu uso. Erro de truncamento O erro de truncamento consiste no erro característico e inerente aos modelos numéricos. O ato de truncar corresponde aos erros originá- rios da utilização de processos, que são compostos por termos infi- nitos ou muito grandes para a determinação de um valor. Figura 5: Fontes de erro de truncamento. Fonte: Adobe Stock. Acesso em: 05/10/2019. São considerados exemplos de erro de truncamento: 36 • estudo de uma série infinita, uma vez que ao adaptá-la para uma quantidade de termos finitos, ou seja, limitar uma quan- tidade de termos, cometemos erro de truncamento; • processo de linearização de uma função, pois consiste no de- senvolvimento da função em série de Taylor, considerando apenas os termos lineares. Por exemplo:para o valor de e 1,5 ou de qualquer valor de e, pode-se utilizar a série de Taylor de uma função exponencial como recurso, definida por: Erro de arredondamento De maneira a entender melhor o erro de arredondamento, é impor- tante definir o que é arredondamento e quais regras fundamentam o ato de arredondar. Arredondamento é o processo que “dispensa” algumas casas deci- mais à direita de um algarismo. A Associação Brasileira de Normas Técnicas (ABNT) publicou, em 10 de dezembro de 2014, a norma ABNT NBR 5891:2014 – Regras de arredondamento na numeração decimal, definindo as regras para executar tal operação. DEFINIÇÃO A seguir, é possível ver quais são essas indicações, bem como seus respectivos exemplos: • Quando o algarismo imediatamente seguinte ao último for in- ferior a 5, o último algarismo a ser conservado permanecerá sem modificação. Exemplo 1: o algarismo 14,9834, quando arredondado, fica 14,98. • Quando o algarismo imediatamente seguinte ao último alga- rismo a ser conservado for superior ou igual a 5 e for seguido de, no mínimo, um algarismo diferente de zero, o último alga- rismo a ser conservado deverá ser aumentado em uma unidade. 37 Exemplo 2: o algarismo 4,6691, quando arredondado à segunda decimal, fica 4,67. • Quando o algarismo imediatamente seguinte ao último al- garismo a ser conservado for 5 seguido de zeros, deve-se ar- redondar o algarismo a ser conservado para o algarismo par mais próximo. Exemplo 3: o algarismo 0,63500, quando arredondado à segunda decimal, fica 0,64. • Quando o algarismo imediatamente seguinte ao último a ser conservado for 5 e estiver seguido de zeros, ele permanecerá sem modificação quando for par. Exemplo: o algarismo 10,6650, quando arredondado à segunda decimal, fica 10,66. Logo, os erros de arredondamento ocorrem a cada arredon- damento mal realizado e são introduzidos nas operações efetuadas, influenciando diretamente na solução e gerando, assim, resultados diferentes ou muito distantes do correto. Erro absoluto, erro relativo e erro percentual É fundamental a quantificação do erro, ou seja, mensurar quão grande ou quão pequeno foi o erro cometido nos processos numéri- cos. Para tal, podemos utilizar as medidas de erro denominadas erro absoluto, erro relativo e erro percentual. O erro absoluto (EAx), lido como erro absoluto em x, com- preende o resultado entre a subtração do valor exato de um número x e seu valor aproximado x, encontrado a partir de um procedimento numérico e da seguinte relação: Na maioria das situações, apenas x é um valor conhecido. Desse modo, o que se faz é fixar um limitante superior ou uma es- timativa para o módulo do erro absoluto.O erro absoluto não é sufi- ciente para descrever a precisão de um cálculo. Por isso, é mais incidente a utilização do erro relativo. 38 O erro relativo (ERx), também lido como erro relativo em x, é a razão entre o erro absoluto. Seu valor aproximado é dado por: Por fim, o erro percentual é o erro relativo em porcentagem: Você conhece o número de Euler? Já ouviu falar sobre essa interessante constante?Pois bem, ele é um famoso número irracio- nal que possui infinitas casas decimais. Tendo isso em mente, va- mos aplicar os conceitos aprendidos a esse popular número. O número de Euler tem esse nome em homenagem ao matemáti- co Leonhard Euler. Ele é um número irracional, positivo e funcio- na como base para os logaritmos naturais. Além disso, o número de Euler possui infinitas casas decimais e nenhum padrão. O símbolo utilizado para representá-lo é a letra e. CURIOSIDADE Admita que o número de Euler esteja compreendido no se- guinte intervalo: e∈[2,71; 2,72] Consideraremos o valor aproximado de x̅=2,71. Nesse contex- to, calcularemos o erro absoluto, o erro relativo e o erro percentual. • Erro absoluto Para determinar o erro absoluto, basta substituir o valor determi- nado como aproximado (x̅) e o valor cujo erro queremos mensurar (x): 39 • Erro relativo Para calcular o erro relativo, utilizaremos o valor determinado para o erro absoluto: • Erro percentual Para mensurar o erro percentual, é necessário realizar o produto entre o erro relativo por 100%. Logo: A conclusão referente a essa situação é mais fácil de ser inter- pretada pelo resultado do erro percentual, que permite concluir que o número e = 2,71 possui 0,37% de precisão em sua representação. Aritmética de ponto flutuante Caro(a) aluno(a), você se recorda da notação científica? Lembra como representá-la? A notação científica é um modo simplificado de escrever nú- meros decimais muito grandes ou pequenos. Ela pode ser utilizada no sistema de numeração binário?A resposta é categórica: não! Para atender a essa demanda, foi criado o ponto flutuante, que nada mais é do que uma versão da notação científica adaptada para o sistema binário. Diagrama 4: Sistema decimal x Sistema binário. Felipe Costa Destacar 40 Já a Aritmética de ponto flutuante, como o próprio nome su- gere, trabalha as operações aritméticas (adição, subtração, multipli- cação e divisão) com os números representados em ponto flutuante. Algarismos significativos Medições de grandezas físicas são constantemente utilizadas nas mais distintas operações. Assim, considerando o resultado de uma medição, os algarismos significativos são identificados como aque- les que são contabilizados da esquerda para a direita, partindo do primeiro algarismo diferente de zero. E como contabilizar estes algarismos significativos? Veja al- guns exemplos: • • o algarismo 0,014 possui dois algarismos significativos; • • o algarismo 37,5 possui três algarismos significativos; • • o algarismo 0,007800 possui quatro algarismos significa- tivos; • • o algarismo 91,042 possui cinco algarismos significativos. O número zero quando posicionado à esquerda de um alga- rismo,depois ou antes da vírgula, sinaliza apenas o uso das unida- des, múltiplos e submúltiplos, não sendo considerado como signifi- cativo. Se ele vier entre dois números diferentes de zero, então será considerado significado, como no exemplo acima para o número 91,042 que possui cinco algarismos significativos. O número zero quando posicionado à direita e após outros algarismos diferentes de zero, só será significativo se vier após a vírgula. ◼ Exemplo 1: 0,00234 equivale a 0,234 · 10-3. Sua representação mudou, mas a quantidade de algarismos significativos per- manece inalterada. ◼ Exemplo 2: 0,00000014 possui dois algarismos significativos. Adição e subtração com algarismos significativos Para as operações de adiçãoou subtração, devemos arredon- dar os valores dos algarismos significativos a fim de deixá-los com uma igual quantidade de casas decimais e, em seguida, executar a operação. 41 ◼ Exemplo 3: 10,08299 + 23,06 = 10,08 + 23,06 = 33,14 99,112 - 87,4436 = 99,112 - 87,444 = 11,668 Após os cálculos, a referência para representação em relação à quantidade de casas decimais continua com o componente que apresenta menor quantidade de algarismos significativos. Multiplicação e divisão com algarismos significativos Operações de multiplicação e divisão são executadas conforme suas especificações próprias e o resultado obtido deve ser escrito com a mesma quantidade de algarismos significativos ao fator que com- põe a operação que possui a menor quantidade de algarismos sig- nificativos. ◼ Exemplo 4: 1,120 · 12,7306 = 14,258272≅14,26 67,23 : 7,0119 = 9,58798614 ≅9,588 Observe que o critério de quantidade de casas decimais se ba- seia no número constituído por menos algarismos significativos. Sistemas numéricos Como organizar vários algarismos de maneira a se obter uma estru- turação lógica e concisa? Nossos antepassados se preocuparam com essa questão e, para solucioná-la,criaram os sistemas de numeração. Como exem- plo, temos o sistema de numeração romana, que foi desenvolvido na Roma Antiga e consiste na utilização de sete letras maiúsculas, I, V, X, L, C, D e M, às quais são atribuídos valores específicos a cada representação, de modo a diferenciá-las. Felipe Costa Destacar 42 Figura 6: Sistema de numeração romana. Fonte: Shutterstock. Acesso em: 31/10/2019. Um sistema de numeração é uma esquematização que repre- senta uma grande quantidade de números de uma forma coerente e concisa, direcionando, a cada número, uma particular e única re- presentação, refletindo em suas estruturas algébricas e aritméticas. Tendo isso em mente, estudaremos os quatro grandes siste- mas de numeração que são amplamente utilizados na matemática e computação, conforme mostra o Diagrama 5. Diagrama 5: Principais sistemas de numeração. Fonte: O autor 43 Sistema de numeração decimal O sistema de numeração decimal é instituído por dez dígitos: 0, 1, 2,3, 4, 5, 6, 7, 8 e 9. Sua dinâmica ocorre pelo agrupamento de dez, sendo que cada algarismo é multiplicado por uma potência de 10, diferenciada pelo valor de seu expoente. Constitui um sistema po- sicional, isto é, o valor de um algarismo é determinado pela posição que ocupa no numeral. ◼ Exemplo 1. O número 671 é representado no sistema decimal da seguinte ma- neira: 671 = 6 centenas + 7 dezenas + 1 unidade 671 = 6 · 102 + 7 · 101 + 1 · 100 ◼ Exemplo 2. O número 4125 é representado no sistema decimal da seguinte ma- neira: 4125 = 4 unidades de milhar + 1 centena + 2 dezenas + 5 unidades 4125 = 4 · 103 + 1 · 102 + 2 · 101 + 5 · 100 Sistema de numeração binário O sistema de numeração binário é formado pelos algarismos 0 e 1, que são conhecidos como bits. No funcionamento desse sistema, cada algarismo que compõe o número é multiplicado por uma po- tência de base dois, distinguida pelo valor atribuído a seu expoente. ◼ Exemplo3. O número 111 é representado no sistema binário da seguinte manei- ra: (111)2 = 1 · 22 + 1 · 21 + 1 · 20 ◼ Exemplo 4. O número 101,01 é representado no sistema binário da seguinte ma- neira: 44 (101,01)2 = 1 · 22+ 0 · 21+ 1· 20 + 0 · 2-1 + 1 · 2-2 Sistema de numeração octal No sistema de numeração octal, a base é 8 e cada posição é indicada por um múltiplo de uma potência de 8. Como o próprio nome suge- re, é formado por oito algarismos, que originam outros números. ◼ Exemplo 5. O número 532 é representado no sistema octal da seguinte maneira: 532 = 5 · 82 + 3 · 81 + 2 · 80 ◼ Exemplo 6. O número 982,5 é representado no sistema octal da seguinte ma- neira: 982,5 = 9 · 82 + 8 · 81 + 2 · 80 + 5 · 8-1 Sistema de numeração hexadecimal O sistema de numeração hexadecimal possui base igual a 16, que é elaborada pelo conjunto dos seguintes algarismos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,E, F. Nesse sistema, existe a combinação entre letras e números. Assim, cada algarismo pode conter dezesseis pos- sibilidades de símbolos. Ao findar todos os dígitos hexadecimais, a repetição começa com o incremento de outro dígito.Dessa maneira, a continuidade da sequência é dada por: 10, 11, 12, 13, 14, 15,16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23 etc. ◼ Exemplo 7. O número 12412 é representado no sistema hexadecimal da seguinte maneira: 12412 = 307 C ◼ Exemplo 8. O número 427 é representado no sistema hexadecimal da seguinte maneira: 427 = 01AB 45 Mudança de bases numéricas Antes de prosseguirmos com o conteúdo, vamos fazer uma breve revisão? Aprendemos que os números podem ser representados em formatos diferentes,atrelados a sistemas posicionais que utilizam bases específicas.Nesse contexto, surge uma dúvida: de que manei- ra é possível converter os números representados em bases posicio- nais diferentes? Como alterar um número alocado em base decimal para uma base binária? E o processo inverso, como deve ser realiza- do? Explicações a estas interrogações descobriremos a seguir! Base binária para base decimal Para converter um número representado na base binária para a base decimal, é necessário realizar os seguintes passos: • escreva o número na base binária e relacione as potências da direita para a esquerda; • comece com o último algarismo mais à direita e associe a ele a multiplicação por 20; • adicione o número 1 a cada expoente, sempre da direita para a esquerda; • encerre quando o número de elementos presentes na listagem for equivalente à quantidade de algarismos presentes na re- presentação binária; • realize a operação aritmética resultante, começando pelas multiplicações e,em seguida, as adições; • o resultado do somatório indica o número procurado. ◼ Exemplo 1. (1001)2 = (?)10 ( 1 0 0 1 )2 = 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 ( 1 0 0 1 )2 = 1 · 8 + 0 · 4 + 0 · 2 + 1 · 1 ( 1 0 0 1 )2 = 8 + 0 + 0 + 1 ( 1 0 0 1 )2 = (9)10 46 Quando houver a existência de uma vírgula na representação biná- ria, é indicação que há uma parte fracionária. Sendo assim, é neces- sário lembrar que toda base elevada a um expoente negativo possui a propriedade de ser convertida a uma fração. DICA Por exemplo: Logo, o número 1001, representado na base binária, equivale a 9 na representação decimal. ◼ Exemplo 2. (110101)2 = (?)10 ( 1 1 0 1 0 1 )2 = 1 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20 ( 1 1 0 1 0 1 )2 = 1 · 32 + 1 · 16 + 0 · 8 + 1 · 4 + 0 · 2 + 1 · 1 ( 1 1 0 1 0 1 )2 = 32 + 16 + 0 + 4 + 0 + 1 ( 1 1 0 1 0 1 )2 = (53)10 Logo, o número 110101, representado na base binária, equiva- le a 53 na representação decimal. ◼ Exemplo 3. (10,01)2 = (?)10 ( 1 0 ,0 1 )2 = 1 · 21 + 0 · 20 + 0 · 2-1 + 1 · 2-2 ( 1 0 ,0 1 )2 = 1 · 2 + 0 · 1 + 0 · 0,5 + 1 · 0,25 ( 1 0 ,0 1 )2 = 2 + 0 + 0 + 0,25 ( 1 0 ,0 1 )2 = (2,25)10 Logo, o número 10,01, representado na base binária, equivale a 2,25 na representação decimal. 47 Assim, conseguimos determinar os outros termos relativos à repre- sentação binária. ◼ Exemplo 4. (10,111)2 = (?)10 (1 0 ,1 1 1)2 = 1 · 21 + 0 · 20 + 1 · 2-1 + 1 · 2-2 + 1 · 2-3 (1 0 ,1 1 1)2 = 1 · 2 + 0 · 1 + 1 · 0,5 + 1 · 0,25 + 1 · 0,125 (1 0 ,1 1 1)2 = 2 + 0 + 0,25 + 0,125 (1 0 ,1 1 1)2 = (2,375)10 Base decimal para base binária O processo de conversão de um número indicado na base decimal para a base binária é diferenciado para a parte inteira e a parte deci- mal (se houver). Assim,conheceremos as duas técnicas. A transformação da parte inteira, ou o método das divisões sucessivas, é guiada pelas seguintes orientações: • divida o número inteiro por 2; • divida novamente o quociente da divisão anterior por 2; • repita o processo de divisão por 2 até obter o último quociente igual a 1. O número binário é obtido pela escrita do último quociente e seusrespectivos restos referentes às divisões. Além disso, eles são lidos sempre em sentido inverso. Quando o número for composto por uma porção fracionária, ou seja, quando ele for decimal, utilizamos o método das multipli- cações sucessivas, que é orientado pelos seguintes passos: • multiplique a parte fracionária por 2; • do resultado obtido, a parte inteira será o primeiro dígito do número em base binária. Caso haja parte fracionária restante, ela deverá ser multiplicada novamente por 2; • o processo é repetido até se obter o número 0 na parte fracio- nária da última multiplicação. 48 ◼ Exemplo 1. (14)10 = (?)2 Tabela 1: conversão da base decimal para a base binária do exemplo 1. A leitura é realizada sempre no sentido contrário e a partir do quociente 1.Assim, o número 14, indicado na base decimal, possui representação binária dada por ◼ Exemplo 2. ( 1 1 1 0 )2. (41)10 = (?)2 Tabela 2: conversão da base decimal para a base binária do exemplo 2. Considerando a leitura no sentido contrário a partir do quo- ciente 1, concluímos que o número 41, indicado na base decimal, possui representação binária dada por (1 0 1 0 0 1)2. 49 ◼ Exemplo 3. (0,1875)10 = (?)2 0,1875 · 2 = 0,375 0,375 · 2 = 0,75 0,75 · 2 = 1,50 0,50 · 2 = 1,00 Como a parte inteira é zero, ela permanece inalterada. Já a leitura, é feita baseada na parte inteira provinda dos resultados das multiplicações e segue o sentido de cima para baixo. Logo, o número 0,1875 possui representação binária equivalente a (0,0 0 1 1)2. Nesta situação, de um número composto por uma parte in- teira e outra decimal,é necessário realizar um procedimento ade- quado para número inteiro e outro para a porção decimal. ◼ Exemplo 4. (85,375)10 = (?)2 Tabela 3: conversão da base decimal para a base binária do exemplo 3 – parte inteira. Para a parte decimal, é necessário realizar o seguinte proce- dimento: 0,375 · 2 = 0,75 0,75 · 2 = 1,50 0,50 · 2 = 1,00 Assim, é possível concluir que a representação binária para o número 85,375 é (1 0 1 0 1 0 1 ,0 1 1)2. 50 Observe que todas as representações binárias são passíveis de con- ferência. Assim, ao optar em conferir se o resultado encontrado está realmente correto, basta realizar o processo inverso, ou seja, seguir os parâmetros para conversão da base binária para a base decimal. DICA Sistema e Aritmética de ponto flutuante A necessidade de representar computacionalmente números muito extensos,sejam muito grandes ou números muito pequenos, justi- fica a utilização da representação em ponto flutuante, que consiste em uma versão da notação científica tendo a base binária como re- ferência. A representação em Aritmética de ponto flutuante é muito utilizada na computação digital. Um exemplo disso são as calcula- doras científicas. Um número real (R) é representado internamente em um computador por meio de uma série de impulsos elétricos que apon- tam dois resultados possíveis:0 ou 1, indicando a utilização de uma base binária.Cada número representado em ponto flutuante está relacionado com três outros números: mantissa, expoente (valor mínimo e máximo) e base. A mantissa é a parte do número que representa seus dígitos significativos. O expoente está associado à base utilizada e a base corresponde ao sistema que opera a máquina. Outro componen- te importante é t, que revela o número de dígitos significativos do sistema de representação, também definido por ser a precisão da máquina. De acordo com Franco, autor do livro Cálculo Numérico, publi- cado em 2006,um número x, representado no sistema de numera- ção de ponto flutuante é dado por: x = mantissa · βe x = ± 0, d1, d2, d3 …dt· β e Felipe Costa Destacar Felipe Costa Destacar Felipe Costa Destacar Felipe Costa Destacar 51 Em que é possível identificar os componentes: • β é a base de operações aritméticas da máquina; • e é o expoente que está compreendido no intervalo -m ≤ e ≤ M, em que (m,M ∈N); • t é a quantidade de dígitos da mantissa, em que d1 ≠ 0, 0 ≤ di< β, i = 1, 2, 3, …t. De maneira prática e resumida, todas as informações neces- sárias para um sistema de ponto flutuante serão apresentadas da seguinte forma: F (β,t,m,M) Bem, considere um sistema de ponto flutuante descrito por: F (2, 5, -4, 4) Sendo que: • a base é binária; • a precisão equivale a 5; • -4 indica o valor mínimo para o expoente; • 4 indica o valor máximo para o expoente. É indicado que exista uma forma normalizada de representa- ção numérica.Para tanto, em nosso contexto, utilizaremos somente mantissas normalizadas.Uma mantissa se encontra normalizada quando é constituída unicamente por uma parte fracionária (não existe parte inteira) e quando o primeiro dígito à direita da vírgula for diferente de 0, ou seja, considerando o sistema numérico biná- rio,só existe a possibilidade de ser o algarismo 1. Destaca-se que um número não normalizado é passível de normalização.Para isso, basta realizar deslocamentos da mantissa para a direita ou esquerda e incrementos ou decrementos do ex- poente, respectivamente. Para manter a magnitude, ou seja, o tamanho do número, é necessário a multiplicação pela base elevado a um expoente com- posto pela quantidade de casas que a vírgula for deslocada. O sinal que o acompanhará será positivo caso o deslocamento aconteça para a esquerda e será negativo quando ocorrer para a direita. Felipe Costa Destacar 52 ◼ Exemplo 1. Considere a seguinte representação binária não normalizada: (-111,101)2 Para normalizá-la, é necessário deslocar a vírgula três casas para a esquerda, de modo que o primeiro algarismo antes da vírgula seja igual a 0. Logo, seu formato será: (-0,111101)2 Assim, a versão normalizada pode ser descrita por: (-0,111101 · 23)2 Aprendemos como identificar se a representação numérica está normalizada.No entanto, como converter um número retratado por uma base numérica qualquer para o sistema de ponto flutuante? Basta seguirmos os três passos descritos a seguir: • 1°: verifique se a base é igual à solicitada; • 2°: converta, caso necessário, o número para a base indica- da; • 3°: normalize. ◼ Exemplo 2. Escreva o número (-3,625)10 no sistema F (10, 5, -3, 3). • 1°: observe que a base do sistema é 10, igual à da represen- tação numérica.Logo, não é necessário o segundo passo, uma vez que não haverá conversão. • 2°: normalize. Será necessário deslocar a vírgula uma casa à esquerda.Logo, a base 10 deverá ter o expoente igual a 1. Sendo assim, a resposta correta é: (-0,3625 · 101 )10 ◼ Exemplo 3. Escreva o número (-3,625)10 no sistema F (2, 5, -3, 3). • 1°: a base é diferente. Logo, há a necessidade de conversão; 53 • 2°: Para converter uma base decimal em uma binária, é pre- ciso utilizar o método das divisões sucessivas para a parte in- teira (Tabela 4); e o de multiplicações sucessivas para a parte decimal. Esses cálculos podem ser vistos a seguir. Tabela 4: divisões sucessivas para a parte inteira. Multiplicações sucessivas para a parte decimal: 0,625 · 2 = 1,25 0,25 · 2 = 0,50 0,50 · 2 = 1,00 Assim, a representação binária para o número -3,625 é: (1 1, 1 0 1 )2. • 3° Normalize: para normalizar é necessário deslocar a vírgula duas casas para a esquerda. Logo, a base 2 terá um expoente de número 2 positivo (22). A resposta correta é: (-0,1 1 1 0 1 · 22 )2 ◼ Exemplo 4. Escreva o número (11,01)2 no sistema F (2, 4, -5, 5). • 1°: observe que a base do sistema é 2, igual à da representação numérica.Logo, não se torna necessário o segundo passo, uma vez que não haverá conversão; • 2°: normalize. Será necessário deslocar a vírgula duas casas para a esquerda. Logo, a base 2 deverá ter o expoente igual a +2. Logo, a representação neste sistema de ponto flutuante será: (0,1101 · 22 )2 ◼ Exemplo 5. Escreva o número (11,01)2 no sistema F (10, 3, -3, 3). 54 • 1°: as bases são distintas. Logo, existe a necessidade de con- versão; • 2°: para converter uma base binária em umadecimal, é preci- so realizar produtos entre a base 2: (11,01)2 = (?)10 ( 1 1 , 0 1 )2 = 1 · 21 + 1 · 20 + 0 · 2-1 + 1 · 2-2 ( 1 1 ,0 1 )2 = 1 · 2 + 1 · 1 + 0 · 0,5 + 1 · 0,25 ( 1 0 ,1 1 1 )2 = 2 + 1 + 0 + 0,25 ( 1 1 ,0 1 )2 = (3,25)10 • 3°: para normalizar, é necessário deslocar uma casa para a es- querda.Logo, a base 10 terá um expoente um positivo. Assim, a representação adequada para esse sistema é: (0,325 · 101 )10 ◼ Exemplo 6. Escreva o número (0,00012238)10 no sistema F (10, 5, -3, 3). • 1°: observe que as bases são 10. Logo, é necessário realizar o segundo passo, uma vez que não haverá conversão; • 2°: será necessário deslocar a vírgula por três casas à direita. Logo, a base10 deverá ter o expoente igual a -3. A representação nesse sistema de ponto flutuante é: (0,12238 · 10-3 )10 Como sabemos, o conjunto de números reais é ilimitado, ou seja, infinito.Todavia, sua representação em um sistema de ponto flutuante não é o que o torna limitado, isto é, um sistema finito. Essa limitação atribuída ao sistema de ponto flutuante é oriunda de duas vertentes: faixa do expoente limitada, sendo de- limitada por um valor mínimo e outro máximo, e a mantissa, que também indica um número finito de números. Sempre que uma operação matemática gera um número com expoente acima do expoente máximo, tem-se o overflow. As operações que resultam em expoente abaixo do expoente mínimo, por sua vez, sofrem underflow. Felipe Costa Destacar 55 De forma mais simplificada, é possível afirmar que um erro ocasionado por overflow acontece quando um número é muito gran- de para ser representado.Em contrapartida, um erro de underflow é gerado quando um número é muito pequeno para ser representado. Uma dúvida que pode aparecer é a seguinte: como determi- nar o maior e o menor número em um sistema de ponto flutuante, uma vez que ele é limitado?Bem, vamos resolver dois exercícios, de modo a sanar tal questionamento. ◼ Exemplo 7. Admita um sistema de ponto flutuante descrito por F (2, 3, -3, 3). A partir disso, determine: a) O maior número representável nesse sistema. Como o desejado é o maior número, ele pode ser descrito por: xn = 0,111 · 23 Uma vez que a maior mantissa no sistema binário é o 1 1 1 e o maior expoente,conforme especificações, é o 3. Logo, convertendo para a base decimal,tem-se: xn = (1 · 2-1 + 1 · 2-2 + 1 · 2-3) · 23 = 7 Assim, em um sistema flutuante F (2, 3, -3, 3), o maior valor passível de representação é o 7. b) O menor número representável nesse sistema. Como o desejado é o menor número, ele pode ser descrito por: xn = 0,100 · 2-3 Uma vez que a menor mantissa no sistema binário é 1 0 0 e o menor expoente,conforme especificações, é o -3. Logo, converten- do para a base decimal,tem-se: xn = (1 · 2-1 + 0 · 2-2 + 0 · 2-3) · 2-3 = 0,0625 Assim, em um sistema flutuante F (2, 3, -3, 3), o menor valor passível de representação é o 0,0625. Uma linguagem de programação é uma notação projetada para co- nectar instruções a uma máquina ou um computador. As linguagens de programação são usadas, principalmente, para controlar o de- Linguagens de programação Felipe Costa Destacar 56 sempenho de uma máquina ou para expressar algoritmos. Existem milhares de linguagens de programação implementadas, algumas para objetivos gerais e outras para fins específicos.Muitas destas linguagens precisam ser declaradas de forma imperativa, enquanto outras utilizam a forma declarativa. O programa pode ser dividido de duas formas: como sintaxe e como semântica. Pensa-se que o primeiro computador programável a ser projetado (embora nunca tenha sido realmente concluído) seja o Analytical Engine, concebido em 1835 por Charles Babbage, e des- tinado a ser usado para resolver problemas computacionais gerais. Nesse esforço, Babbage foi assistido porLady Ada Lovelace, que hoje é amplamente considerada a primeira programadora de computa- dor. Ela introduziu muitos conceitos de programação em uso até hoje, incluindo o uso de loops para lidar com tarefas repetitivas e o uso de sub-rotinas que podem ser chamadas de qualquer lugar den- tro de um programa. O primeiro computador eletromecânico programável foi construído na Alemanha,em 1941, por Konrad Zuse, embora seu significado pareça ter sido ignorado pelos militares alemães. Durante a década de 1940, vários outros cientistas da com- putação começaram a desenvolver a ideia de computadores com programas armazenados,nos quais as instruções e os dados podiam ser gravados na memória do computador. Um artigo de 1936 do ma- temático Alan Turing havia descrito tal máquina. Turing publicou especificações de projeto detalhadas para um programa de compu- tador em 1946, mas um artigo publicado por John Von Neumann, em 1945, foi mais amplamente divulgado e, consequentemente,re- cebeu muito mais atenção. Sistemas de computador existentes, como o computador Colossus, usado pelos britânicos durante a guerra para decifrar os códigos militares alemães, e o computador ENIAC, usado após a guerra pelos americanos para desenvolver a bomba de hidrogênio, foram programados ajustando interruptores e controlando dados. O Diagrama 6 demonstra a organização dos diferentes para- digmas de programação.Daremos ênfase em cada um destes para- digmas, e citaremos conceitualmente as principais linguagens rela- cionadas a eles. 57 Diagrama 6: paradigmas de linguagem de programação. Fonte: O autor Cada linguagem tende a suportar um paradigma (ou estilo) particu- lar de programação. Embora vários fatores possam afetar a escolha da linguagem de programação para uma tarefa específica, incluindo preferência pessoal, política corporativa ou simplesmente a dis- ponibilidade de conhecimento e experiência interna suficientes, a linguagem selecionada deve ser a mais adequada para a tarefa em questão. Qualquer que seja a linguagem escolhida, os seguintes re- cursos são comuns à maioria: • Entrada: obtenha dados de um dispositivo de entrada, como uma unidade de disco ou o teclado; • Saída: envie dados para um dispositivo de saída, como uma unidade de disco, unidade de exibição visual, impressora ou adaptador de rede; • Aritmética e lógica: execute operações aritméticas, como adição e multiplicação,e operações lógicas, como comparar o valor de duas variáveis; Paradigmas Vamos estudar agora sobre os diferentes paradigmas de lin- guagens de programação e as diferenças entre eles. 58 • Execução condicional: execute um conjunto diferente de ins- truções do programa, dependendo de uma condição especifi- cada ser verdadeira ou falsa; • Repetição: execute um conjunto de instruções do programa repetidamente,até que alguma condição de saída seja avalia- da como verdadeira (um loop condicional)ou para um número especificado de iterações (um loop de contagem). Serão apresentados a seguir os principais paradigmas de pro- gramação. Entretanto,vale reforçar que, atualmente, as linguagens de programação são multiparadigmas,ou seja, uma mesma lingua- gem pode possuir dois ou mais paradigmas. Paradigma imperativo A palavra "imperativo" vem do latim impero, que significa "eu or- deno". É a mesma palavra que originou "imperador", e esta relação é bastante adequada.Neste paradigma, o desenvolvedor é o im- perador. Você dá ao computador pequenas ordens e ele as executa uma de cada vez e as informa. O paradigma consiste em várias instruções e, após a execução de todas elas, o resultado é armazenado. Trata-se de escrever uma lista de instruções para informar ao computador o que fazer, passo a passo. Os exemplos de algoritmos que vimos até aqui são impera- tivos. Em um paradigma de programação imperativo, a ordem das etapas é crucial,porque uma determinada etapa terá consequências diferentes, dependendo dos valores das variáveis no momento em que a etapa é executada. O fluxo de controle na programação imperativa é explícito: os comandos mostram como a computação ocorre, passo a passo. Cada etapa afeta o estado global
Compartilhar