·

Engenharia Mecânica ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

GRUPO SER EDUCACIONAL Métodos Computacionais MÉTODOS COMPUTACIONAIS Organizador ALFREDO JOÃO DOS SANTOS NETO Autores RAFAELA RODRIGUES OLIVEIRA AMARO ARIEL DA SILVA DIAS Capa para impressão2022 13 Capa para impressão2022 13 27072022 092553 27072022 092553 MÉTODOS COMPUTACIONAIS Autores RAFAELA RODRIGUES OLIVEIRA AMARO ARIEL DA SILVA DIAS Organizador ALFREDO JOÃO DOS SANTOS NETO 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 9786581507398 1 Computadores 2 Redes 3 Programação Grupo Ser Educacional Rua Treze de Maio 254 Santo Amaro CEP 50100160 Recife PE PABX 81 34134611 Email sereducacionalsereducacionalcom 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 PROFESSORAUTOR 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 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ível67 UNIDADE 2 Introdução72 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ão em 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 DOWHILE 92 Funções em C 93 Vetores e matrizes em C 95 UNIDADE 3 Introdução100 Equações não lineares101 Solução de equações não lineares101 Teorema de Bolzano102 Métodos de solução de equações não lineares i103 Método do Meio Intervalo MMI104 Método das Aproximações Sucessivas MAS108 Métodos de solução de equações não lineares ii111 Método das secantes MS111 Método de NewtonRaphson MNR114 Comparação entre os métodos numéricos118 Sistemas lineares120 Classificação de Sistemas Lineares121 Métodos diretos122 Método da Eliminação Gaussiana123 Método da fatoração LU128 UNIDADE 4 Introdução134 Equações não lineares métodos iterativos135 Método de GaussJacobi 136 Método de GaussSeidel 140 Teoria da aproximação145 Ajuste de curvas 145 Método dos Mínimos Quadrados MMQ 146 Interpolação polinomial151 Método de NewtonGregory 153 Método de Lagrange 157 Equações diferenciais ordinárias160 Método de Euler 162 Método de RungeKutta 166 Integração numérica169 Regra do Trapézio 171 Primeira Regra de Simpson 173 Segunda Regra de Simpson 176 Referências Bibliográficas180 Apresentação Olá alunoa 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çãoproblema 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ósgradua çã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 UNIDADE 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 aC 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 depoisuma 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 FonteBRANCAGLIONE 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 HewlettPackard 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 sistemacomo processadores unidade de processamento gráfico e acesso direto à memóriaEle 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 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 converteo 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 ULAQuando 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 ligadesli 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 tratase 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 byteusar 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 1000 bytes 103 decimal Kibi KiB 1024 bytes 210 binário Mega MB 1000000 bytes 106 decimal Mebi MiB 1048576 bytes 220 binário Giga GB 1000000000 bytes 109 decimal Gibi GiB 1073741824 bytes 230 binário Tera TB 1000000000000 bytes 1012 decimal Tebi TiB 1099511627776 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 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 tratase 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 é iniciodoalgoritmo 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 fimdoalgoritmo Note o estado inicial 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 computadoronde ficarão os bits referente aos dados Acrescentamse ainda os valores constantes que diferente mente das variáveisnão podem ser mudados Por exemplo o va lor de pi na matemática é31415 na física e na geografia ele tem o mesmo valor logo é uma constanteO saldo bancário é um valor que será modificado podendo ser de mil reaisdois 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 definidasapresentando símbolos específicos para cada co mando tipos de expressões padronizados e subrotinas predefini das Enquanto a sintaxe define os símbolosa 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 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 26 Note que o valor de entrada para a variável X foi 6 e o valor para a variável Y foi 5No 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 simo 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çãoPoré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 exemploos 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 5019 e 518 são certamente nú meros reaispois 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 caracterespossui 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 400002 Note a presença das casas decimais Caracteres e cadeias de caracteres entendese 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 juntoschamamos 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 doresveja 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 valoresverdadeiro 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 Nomes de variáveis Vimos então os tipos primitivos de dados inteiro real e caractere Agoraveremos 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 coordXresultado ValorTotal valorparcial Exemplos de nomes inválidos de variáveis n umero vetor N 1 numfi mxa R 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çãotem 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 realdivisã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 operandoApesar 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 caracteresPor exemplo considere uma variável A que contém a cadeia Métodose uma variável B que possui a cadeia de caracteres ComputacionaisAo fazermos C A B o resultado em C será Métodos Computacio naisDenominamos 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 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 tornase 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 05102019 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 π 314 33 Sendo assim C 2 π r C 2 314 50 314 Como esse percurso será executado dez vezes logo a conta que deve ser feita é 314 10 3140 m Para outro valor de π π 31416 Desse modo C 2 π r C 2 31416 50 31416 Como esse percurso será executado dez vezes logo será per corrido 31416 10 31416 m Para o seguinte valor de π π 314159265 C 2 π r C 2 314159265 50 314159265 Como esse percurso será executado dez vezes logo será per corrido o seguinte valor 314159265 10 314159265 m Você identificou alguma alteração nas metragens percorri das A resposta é categórica sim Atentese 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 pequenaentre 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 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 passouse 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 palavrasaté obter determinadas informações é comum que surjam incoerências Dessa forma logo no 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 05102019 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ômenoGeralmenteé 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 05102019 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 exemplopara o valor de e 15 ou de qualquer valor de e podese 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 58912014 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 149834 quando arredondado fica 1498 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 46691 quando arredondado à segunda decimal fica 467 Quando o algarismo imediatamente seguinte ao último al garismo a ser conservado for 5 seguido de zeros devese ar redondar o algarismo a ser conservado para o algarismo par mais próximo Exemplo 3 o algarismo 063500 quando arredondado à segunda decimal fica 064 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 106650 quando arredondado à segunda decimal fica 1066 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 absolutoO 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 constantePois 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 e271 272 Consideraremos o valor aproximado de x 271 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 271 possui 037 de precisão em sua representação Aritmética de ponto flutuante Caroa alunoa 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árioA 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 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 0014 possui dois algarismos significativos o algarismo 375 possui três algarismos significativos o algarismo 0007800 possui quatro algarismos significa tivos o algarismo 91042 possui cinco algarismos significativos O número zero quando posicionado à esquerda de um alga rismodepois 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 91042 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 000234 equivale a 0234 103 Sua representação mudou mas a quantidade de algarismos significativos per manece inalterada Exemplo 2 000000014 possui dois algarismos significativos Adição e subtração com algarismos significativos Para as operações de adição ou 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 1008299 2306 1008 2306 3314 99112 874436 99112 87444 11668 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 1120 127306 142582721426 6723 70119 958798614 9588 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álacriaram 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 42 Figura 6 Sistema de numeração romana Fonte Shutterstock Acesso em 31102019 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 23 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 1112 1 22 1 21 1 20 Exemplo 4 O número 10101 é representado no sistema binário da seguinte ma neira 44 101012 1 22 0 21 1 20 0 21 1 22 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 9825 é representado no sistema octal da seguinte ma neira 9825 9 82 8 81 2 80 5 81 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 DE 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ígitoDessa maneira a continuidade da sequência é dada por 10 11 12 13 14 1516 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 diferentesatrelados a sistemas posicionais que utilizam bases específicasNesse 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 eem seguida as adições o resultado do somatório indica o número procurado Exemplo 1 10012 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 910 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 1101012 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 5310 Logo o número 110101 representado na base binária equiva le a 53 na representação decimal Exemplo 3 10012 10 1 0 0 1 2 1 21 0 20 0 21 1 22 1 0 0 1 2 1 2 0 1 0 05 1 025 1 0 0 1 2 2 0 0 025 1 0 0 1 2 22510 Logo o número 1001 representado na base binária equivale a 225 na representação decimal 47 Assim conseguimos determinar os outros termos relativos à repre sentação binária Exemplo 4 101112 10 1 0 1 1 12 1 21 0 20 1 21 1 22 1 23 1 0 1 1 12 1 2 0 1 1 05 1 025 1 0125 1 0 1 1 12 2 0 025 0125 1 0 1 1 12 237510 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 Assimconheceremos 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 seus respectivos 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 1410 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 1Assim o número 14 indicado na base decimal possui representação binária dada por Exemplo 2 1 1 1 0 2 4110 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 12 49 Exemplo 3 0187510 2 01875 2 0375 0375 2 075 075 2 150 050 2 100 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 01875 possui representação binária equivalente a 00 0 1 12 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 8537510 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 0375 2 075 075 2 150 050 2 100 Assim é possível concluir que a representação binária para o número 85375 é 1 0 1 0 1 0 1 0 1 12 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 extensossejam 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íveis0 ou 1 indicando a utilização de uma base bináriaCada 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 2006um número x representado no sistema de numera ção de ponto flutuante é dado por x mantissa βe x 0 d1 d2 d3 dt βe 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 mM 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 βtmM 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éricaPara tanto em nosso contexto utilizaremos somente mantissas normalizadasUma 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á riosó existe a possibilidade de ser o algarismo 1 Destacase que um número não normalizado é passível de normalizaçãoPara 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 52 Exemplo 1 Considere a seguinte representação binária não normalizada 1111012 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á 01111012 Assim a versão normalizada pode ser descrita por 0111101 232 Aprendemos como identificar se a representação numérica está normalizadaNo 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 362510 no sistema F 10 5 3 3 1 observe que a base do sistema é 10 igual à da represen tação numéricaLogo 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 à esquerdaLogo a base 10 deverá ter o expoente igual a 1 Sendo assim a resposta correta é 03625 101 10 Exemplo 3 Escreva o número 362510 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 0625 2 125 025 2 050 050 2 100 Assim a representação binária para o número 3625 é 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 é 01 1 1 0 1 22 2 Exemplo 4 Escreva o número 11012 no sistema F 2 4 5 5 1 observe que a base do sistema é 2 igual à da representação numéricaLogo 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á 01101 22 2 Exemplo 5 Escreva o número 11012 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 uma decimal é preci so realizar produtos entre a base 2 11012 10 1 1 0 1 2 1 21 1 20 0 21 1 22 1 1 0 1 2 1 2 1 1 0 05 1 025 1 0 1 1 1 2 2 1 0 025 1 1 0 1 2 32510 3 para normalizar é necessário deslocar uma casa para a es querdaLogo a base 10 terá um expoente um positivo Assim a representação adequada para esse sistema é 0325 101 10 Exemplo 6 Escreva o número 00001223810 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 é 012238 103 10 Como sabemos o conjunto de números reais é ilimitado ou seja infinitoTodavia 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 temse o overflow As operações que resultam em expoente abaixo do expoente mínimo por sua vez sofrem underflow 55 De forma mais simplificada é possível afirmar que um erro ocasionado por overflow acontece quando um número é muito gran de para ser representadoEm 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 é limitadoBem 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 0111 23 Uma vez que a maior mantissa no sistema binário é o 1 1 1 e o maior expoenteconforme especificações é o 3 Logo convertendo para a base decimaltemse xn 1 21 1 22 1 23 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 0100 23 Uma vez que a menor mantissa no sistema binário é 1 0 0 e o menor expoenteconforme especificações é o 3 Logo converten do para a base decimaltemse xn 1 21 0 22 0 23 23 00625 Assim em um sistema flutuante F 2 3 3 3 o menor valor passível de representação é o 00625 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 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íficosMuitas 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 Pensase 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 subrotinas que podem ser chamadas de qualquer lugar den tro de um programa O primeiro computador eletromecânico programável foi construído na Alemanhaem 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 armazenadosnos 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 consequentementere 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çãoDaremos ê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çãoe 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 repetidamenteaté que alguma condição de saída seja avalia da como verdadeira um loop condicionalou para um número especificado de iterações um loop de contagem Serão apresentados a seguir os principais paradigmas de pro gramação Entretantovale reforçar que atualmente as linguagens de programação são multiparadigmasou 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 adequadaNeste 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 Tratase 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 é crucialporque 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 da computação A programação procedural é um paradigma de programação es truturado com base no conceito de chamada de procedimento Os procedimentos em questão podem ser subrotinas métodos ou funções cada um deles consiste em uma coleção de instruções do Paradigma procedural 59 programa que são realizadas sequencialmente para executar uma tarefa específica Um procedimento pode ser chamado a partir de qualquer ponto de um programa e pode chamar outros procedi mentos Um benefício evidente das linguagens procedurais é que elas permitem que o mesmo código seja reutilizado repetidamente em vez de forçar o programador a escrever o mesmo código várias ve zes Eles também evitam a necessidade de usar as instruções GOTO ou JUMP encontradas em linguagens não estruturadas e que em programas grandes frequentemente resultam no chamado código espaguete Linguagens procedurais também são adequadas para modularização Os programas modulares consistem em vários módulos de código distintoscada um lidando com um aspecto específico de um aplicativo Por exemplo o programador pode decidir coletar todo o código processual para lidar com a funcionalidade de processamen to de dados em um módulo e o código para gerar a interface gráfica do usuário do aplicativo em outro Essa abordagem ajuda a reduzir a complexidade geral de um aplicativo grande organizando o código do aplicativo em unidades funcionais relacionadas As principais linguagens de programação deste paradigma são C C Java Pascal A programação orientada a objetos POO é um paradigma que usa objetos para modelar entidades de dados Assim amplia a ideia de modularizaçãomas enfatiza os dados e não as funções desempe nhadas pelo programa Uma entidade do mundo real como uma conta bancária ou um cliente pode ser modelada como um objeto Os traços que descrevem a entidade do mundo real como número da conta ou ID do cliente são incorporados no objeto como variáveis ou atributos Paradigma orientado a objetos 60 O objeto também possui vários métodos funções ou procedimen tos que podem ser chamados para recuperar suas informações ou modificar o estado deleOs objetos interagem com os usuários do aplicativo e entre si enviando e recebendo mensagens As mensa gens que um objeto responderá são definidas por sua interface Os aplicativos são produzidos ao criar objetos para representar as enti dades de dados que serão manipuladas pelo aplicativo Os dados do objeto e os detalhes precisos de como seus méto dos são implementados são ocultos para entidades externas De um modo geral os atributos de um objeto são declarados como privados e só podem ser acessados ou modificados pelos métodos do próprio objeto Os métodos em si geralmente são declarados públicos mas as maneiras pelas quais eles podem ser chamados são estritamente definidas pela sua interface A capacidade de ocultar os dados e a implementação de código de um objeto atrás de sua interface são chamadas encapsulamento Objetos como clientes e contas bancárias tendem a existir em grande número em situações do mundo real Deste modo podese supor que um aplicativo que modele um sistema bancário ou depar tamento de atendimento ao cliente precisará fornecer muitos ob jetos do mesmo tipo Nas linguagens de programação orientadas a objetos cada um é derivado de um objeto de modelo chamado clas se A classe define os atributos métodos e interface para cada objeto criado a partir dela Um objeto criado a partir de uma classe específica é portan to considerado uma instância única dessa classe A ideia de classes pode ser estendida para permitir que variações na classe original sejam definidas como subclasses Por exemplo poderíamos ter uma classe principal chamada Conta Bancaria da qual poderíamos deri var duas subclasses denominadas Conta Corrente e Conta Poupança As duas subclasses herdariam os atributos métodos e interface de Conta Bancária a classe pai mas cada uma poderia ser modifica da para refletir sua função mais especializada A capacidade de uma subclasse de herdaras características de sua classe pai é chamada herança As linguagens de programação orientadas a objetos existem 61 desde a década de 1960 Pensase que o Simula seja a primeira lin guagem de programação a exibir características orientadas a ob jetos enquanto a primeira verdadeiramente orientada a objetos é considerada por muitos a Smalltalk Somente nos anos 90porém a programação orientada a objetos emergiu como o paradigma pre dominanteprovavelmente devido ao aumento da popularidade da interface gráfica do usuário para a qual uma abordagem orientada a objetos é ideal Embora a maioria das linguagens de programação tenha ado tado características orientadas a objetos até certo ponto as lingua gens atualmente em destaque incluem Smalltalk primeira linguagem orientada a objeto Python Ruby Java C Visual BasicNet Neste paradigma o processamento das instruções do programa é dividido entre vários processadores Um sistema de processamento paralelo permite que muitos processadores executem um programa em menos tempo A abordagem de processamento paralelo geralmente é mais bem usada quando você tem um sistema que possui mais de uma CPU ou pro cessadores multinúcleosmuito comum nos computadores atuais você precisa resolver alguns problemas computacionais que levam horas ou dias para serem resolvidos mesmo com o be nefício de um microprocessador mais poderoso você trabalha com dados do mundo real que precisam de si mulação e modelagem mais dinâmicas Linguagens que suportam a abordagem de processamento paralelo Paradigma processamento paralelo 62 NESL um dos mais antigos C C Paradigma declarativo O paradigma declarativo é um estilo de construção de programas que expressa a lógica de uma computação sem falar sobre seu fluxo de controle A programação declarativa é um paradigma em que o programador define o que precisa ser realizado sem definir como ele deve ser implementado Em outras palavras a abordagem enfoca o que precisa ser alcançado em vez de instruir como alcançar Portanto as principais diferenças entre o paradigma impera tivo e o paradigma declarativo é que o primeiro indica como fazer e o segundo indica o que fazer Paradigma de lógica O paradigma da programação lógica adota uma abordagem decla rativa para a solução de problemas É baseado na lógica formal Ele não é composto de instruções mas sim de fatos e cláusulas Usa tudo o que sabe e tenta criar o mundo em que todos esses fatos e cláusulas são verdadeiros Por exemplo Sócrates é um homem todos os homens são mortais e portantoSócrates é mortal A seguir é apresentado um programa Prolog simplesque explica essa instância homemSocrates mortalX homemX A primeira linha pode ser lida como Sócrates é um homem É uma cláusula básica que representa um fato simples A segunda linha pode ser lida como X é mortal se X é um homem em outras palavras todos os homens são mortais Esta é uma cláusula ou re gra para determinar quando a sua entrada X é mortal O símbolo é pronunciado como se Podemos testar o programa fazendo a pergunta mortalSocrates Isto é Sócrates é mortal sendo que a interrogação é o prompt do 63 computador para fazer uma pergunta O Prolog responderá yes Exemplos de linguagens deste paradigma Prolog Absys ALF linguagem de programação funcional de lógica algébri ca Alice Ciao Paradigma funcional O paradigma de programação funcional está no centro das atenções há um tempo por conta do JavaScript que ganhou mais popularida de recentementeO paradigma de programação funcional tem suas raízes na matemática e é independente de linguagem O princípio chave desse paradigma é a execução de uma série de funções ma temáticas Você compõe seu programa de funções curtas Todo o código está dentro de uma função Todas as variáveis têm escopo definido para a função No paradigma de programação funcional as funções não modificam nenhum valor fora do escopo dessa função e as próprias funções não são afetadas por nenhum valor fora do escopo Para ilustrar vamos identificar se o número fornecido é pri mo ou não como paradigma de programação funcional utilizando JavaScript function verificaPrimonumero forlet i2 iMathfloorMathsqrtnumero i ifnumero i 0 return false return true verificaPrimo15 retorna false 64 No exemplo anterior usamos funções matemáticas Math floor e Mathsqrt para resolver nosso problema com eficiência Podemos resolver esse problema sem usar funções matemáticas nativas do JavaScript mas para executar o código com eficiência é recomendável usar funções incorporadas A variável numero está com escopo definido para a função verificaPrimoe não será afetada por nenhum valor fora dele A função sempre produz a mesma saída quando recebe a mesma en trada Exemplos de linguagens que suportam este paradigma Haskell OCaml Scala Clojure Racket JavaScript Paradigma database paradigma de processa mento de banco de dados Este paradigma de programação é baseado em dados e seu movi mento As instruções do programa são definidas pelos dados em vez de codificarem uma série de etapas Para processar os dados e consultálos os bancos de dados usam tabelas Os dados podem ser facilmente acessados gerenciados modificados atualizados con trolados e organizados Uma boa abordagem de processamento de banco de dados é crucial para qualquer empresa ou organizaçãoporque ele armazena todos os detalhes pertinentes sobre a empresa como registros de funcionáriosregistros de transações e detalhes de salário A maioria dos bancos de dados usa o SQL Structured Query Language para gravar e consultar dados Aqui está um exemplo na abordagem de processamento de banco de dados SQL 65 CREATE DATABASE detalhesPessoais CREATE TABLE Pessoa PessoaID int UltimoNome varchar255 PrimeiroNome varchar255 Endereco varchar255 Cidade varchar255 A coluna PessoaID é do tipo int e conterá um número inteiro As co lunas UltimoNome Primeiro Nome Endereco e Cidade são do tipo varchar e conterão valores do estilo cadeia de caracteres string e o comprimento máximo para esses campos é de 255 caracteres conforme definido entre parênteses Paradigma de programação orientada a eventos A programação orientada a eventos é um paradigma no qual o fluxo de execução do programa é determinado por eventos por exem plo uma ação do usuário como um clique do mouse pressiona mento de tecla uma mensagem do sistema operacional ou de outro programa Um programa orientado a eventos é projetado para Detectar eventos à medida que eles ocorrem Lidar com eventos usando um procedimento de manipulação apropriado Como nos outros paradigmas apresentados não existe apenas uma linguagem de programação para este embora algumas linguagens Visual Basic por exemplo sejam projetadas especificamente para facilitar essa programação e forneçam um ambiente de desenvol vimento integrado IDE Integrated Development Environment que automatiza parcialmente a produção de código além de for necer uma seleção abrangente de objetos e controles internos cada um podendo responder a uma variedade de eventos De modo geral todas as linguagens visuais e orientadas a objetos suportam pro gramação orientada a eventos Visual Basic Visual C e Java são exemplos dessas linguagens 66 Um IDE de programação visual como o VBNet fornece gran de parte do código para detectar eventos automaticamente quando um novo aplicativo é criado O programador pode portanto con centrarse em questões como o design da interface que envolve adicionar controles como botões de comandocaixas de texto e la bels aos formulários um formulário representa o espaço e trabalho ou a janela de um programa Quando a interface do usuário estiver completa o programador poderá adicionar um código de manipula ção de eventos a cada controle conforme necessário Muitos ambientes de programação visual fornecem modelos de código para manipuladores de eventos portanto o programador só precisa prover o código que define a ação que o programa deve executar quando o evento ocorrer Cada manipulador de eventos geralmente é vinculado a um objeto ou controle específico em um formulário Quaisquer subrotinas métodos ou procedimentos de função adicionais necessários geralmente são colocados em um módulo de código separado e podem ser considerados outras partes do programaconforme e quando necessário Linguagens de baixo e alto nível A principal diferença entre elas é que a linguagem de alto nível é facilmente interpretada pelos programadores mas não pelas má quinas enquanto a linguagem de baixo nível pode ser facilmente entendida pelas máquinas mas não pelos humanos A linguagem de baixo nível é compreendida pela linguagem de máquina e lingua gem assembly Linguagem de baixo nível A linguagem de baixo nível é considerada baixa porque vai para o nível da máquina e pode determinar como os elementos de hardwa re do computador realmente interagem Essas linguagens de bai xo nível precisam de um amplo conhecimento dos componentes de hardware e de suas configurações São linguagens de baixo nível Linguagem de máquina é considerada a linguagem natural do computadorque pode ser reconhecida diretamente pelas máquinas eletrônicas É uma linguagem não portátil e depen dente da máquique consiste em apenas dois números biná rios 0 e 1 Cada instrução em um computador existe na for 67 Linguagem de alto nível Linguagens de alto nível são construídas por uma combinação de símbolos matemáticos caracteres e símbolos da linguagem natu ral sendo modeladas por cenários do mundo real De uma manei ra geral as linguagens de programação modernas são conhecidas como de alto nível Estas são implementadasprincipalmente para o desenvolvimento rápido e fácil de um programaNão é necessário memorizar a arquitetura e os registros de uma CPU para o desenvol vimento de um programa Os compiladores são usados para traduzir o programa de linguagem de alto nível para a linguagem de máqui naExistem várias linguagens de alto nível como COBOL FORTRAN BASIC C e C Java entre outras Principais diferenças entre linguagem de baixo nível e linguagem de alto nível linguagem de alto nível é amigável para programadores Por outro ladoa linguagem de baixo nível é amigável à máquina o que significa que é interpretada facilmente por máquinas ma de código binário No entanto é bastante difícil fornecer instruções a um computador em uma linguagem binária ou seja escrever programas em linguagem no nível da máquina As velocidades de gravação teste e depuração na linguagem de máquina são lentas e erros incautos são muito comuns Linguagem assembly nessa linguagem os programado res usam comandos que se assemelham um pouco ao inglês comum que é compreensível até certo ponto e interpretado pelos programadores Os programas são construídos usando símbolos alfanuméricos também conhecidos como mnemô nicos em vez de 0s e 1s Inclui ADD SUB MUL DIV RLC e RAL como símbolos ou mnemônicos Linguagens como C Java Visual Basic e outras já vistas ante riormente são traduzidas para linguagem de máquina O assembler montador é usado para executar essas operações a fim de traduzir a linguagem não máquina para a linguagem da máquina Cada pro cessador é ativado com sua própria linguagem de montagem como os processadores 8085 8086 80186 que possuem suas próprias linguagens de montagem 68 Linguagens de baixo nível levam um tempo maior para serem executadas se compararmos às linguagens de alto nível Linguagens de alto nível são convertidas em linguagem es pecífica da máquina com a ajuda de um compilador Por outro lado com linguagens de baixo nível apenas um assembler é necessário para a linguagem assembly Quando se trata de consumo de memória as linguagens de baixo nível são altamente eficientes por outro lado lingua gens de alto nível consomem mais memória Uma linguagem de alto nível é facilmente compreensível para programadoresenquanto a linguagem de baixo nível não pode ser interpretada facilmentepois contém um conjunto de longas séries de zeros e uns As linguagens de baixo nível não podem ser executadas em máquinas diferentes pois não são portáteis e são fortemente dependentes da máquina Po routro lado os programas escri tos em linguagens de alto nível são portáteis e independentes de máquinas A manutenção em programas escritos em linguagem de alto nível é mais fácil se comparada à manutenção em linguagens de baixo nível Por fim as linguagens de baixo nível são usadas principal mente para construir aplicações menos operacionais sendo neces sárias funções simples e específicas como máquinas CNC Com puter Numeric Control controle numérico computadorizado dispositivos eletrônicosentre outros Por outro lado linguagens de alto nível são usadas para criar aplicações abrangentes nas quais uma longa sequência de funções é realizadacomo softwares usados em hospitais indústriasfábricas etc SINTETIZANDO Durante a leitura deste objeto de aprendizagem você pôde com preender a arquitetura organizacional de um computador Viu que a arquitetura de Von Neumann é dividida em três partes entrada 69 processamento e saída sendo que esse modelo está presente em todos os sistemas computacionais sejam eles desktopssmartpho nes ou grandes computadores de processamento pesadoPôde com preender que os algoritmos são uma sequência finita de açõescom início e fim bem evidentes e que a linguagem de programação é como nós passamos ao computador esses algoritmos dizendo o que ele tem que fazer e quando tem que fazer Aprendemos que existem três fatores que ocasionam o surgimento dos erros a origem dos dados provindos da inexatidão dos dados obtidos o erro pelo ato de truncar ou seja delimitar uma série de termos infinitos e o erro originado pelo arredondamento mal suce dido Mensurar esse erro tornase necessário e pode ser determina do pelas relações de erro absoluto erro relativo e erro percentual O sistema de ponto flutuante é muito utilizado no meio computa cional fundamentando conceitos relacionados à programação Ba sicamente os pontos flutuantes correspondem ao número de ope rações e cálculos de processamento que um computador é capaz de fazer em um segundo Para trabalhar com essa dinâmica de ponto flutuante são necessários os seguintes elementos a base a ser uti lizada precisão a ser instituída expoente limitado por valores má ximo e mínimo e a mantissa Por fim conhecemos os principais paradigmas de programação Vi mos que a maioria das linguagens de programação implementa dois ou mais paradigmasEm casos em que uma linguagem implementa apenas um paradigma dizemos que ela é pura É incrivelmente raro ter uma linguagem pura em orientação a objetos ou uma linguagem pura funcional As linguagens de programação são em sua maio riamultiparadigmáticas UNIDADE 2 Objetivos Conhecer como surgiu e compreender o motivo do sucesso como linguagem de programação da linguagem C Aprender conhecimentos básicos sobre a linguagem C Conhecer as diferentes estruturas e ser capaz de escolher a mais adequada para cada problema Estudar as funções em C aprendendo como declarar e usar uma função Ser capaz de criar programas básicos em C que sejam úteis para resolver problemas aplicados à engenharia 72 Introdução Olá estudante Como vai Seja bemvindoa Neste objeto de aprendizagem você será apresentado à essa poderosa ferramenta que é a linguagem de programação C Você aprenderá os conceitos básicos e a aparência geral de um código em C Saberá como ler informações digitadas no teclado e usálas no programa E também como mostrar na tela para o usuário os resul tados gerados pelo programa Para isso serão ensinados os coman dos de entrada e saída de dados A linguagem de programação que será estudada suporta uma grande variedade de símbolos que facilitam a escrita de programas são os chamados operadores Juntamente a eles veremos as estru turas de decisão e repetição que tornam os programas mais eficazes e inteligentes Concluindo esta unidade aprenderemos sobre as funções em C responsáveis pela forma estruturada de programar nessa lingua gem e veremos sobre a usabilidade e manipulação de vetores e ma trizes em C Preparadoa para aprender uma linguagem de programa ção Bons estudos 73 Introdução à linguagem de programação C Desde a sua invenção em 1972 por Dennis Ritchie a linguagem C tornouse uma das mais utilizadas no mundo Em 1989 o ANSI American National Standards Institute revisou e padronizou a linguagem C Com o passar dos anos passou por outras revisões e implementações visando sua melhoria e ampla aceitação frente à vasta diversidade de microprocessadores BACKES 2013 C é uma linguagem que implementa o paradigma de progra mação estruturada ou seja um problema muito complexo pode ser dividido em problemas menores que são mais simples de resolver ASCENCIO CAMPOS 2012 É uma linguagem de alto nível mas com permissões que apenas linguagens de baixo nível têm Por isso é comum que a linguagem C seja referenciada como linguagem de nível médio Por exemplo essa linguagem fornece aos programa dores acesso ao microprocessador permitindo a manipulação de bits bytes e endereços SCHILDT 1996 O sucesso da linguagem C devido à sua versatilidade foi de tamanha proporção que influenciou o desenvolvimento de outras linguagens como PHP Java e C BACKES 2013 Para criarmos programas em C necessitamos de um ambien te de desenvolvimento integrado ou IDE Integrated Development Environment Existem várias IDEs para programar em linguagem C Um bom exemplo de uma IDE de código aberto e simples de usar é o CodeBlocks Conceitos básicos da linguagem C Para que você compreenda melhor cada conceito que será apresen tado vamos ver um pequeno e simples programa em C mas reple to de informações importantes Aproveite para replicar o progra ma abaixo aí no seu CodeBlocks Para aprender uma linguagem de programação tão importante quanto a teoria também é a prática 74 Figura 1 exemplo de um programa em C Explicando cada parte do programa da Figura 1 Exemplo de um programa em C A primeira linha do programa é um comentário Os comentá rios são úteis apenas para os programadores Ajuda a deixar o pro grama organizado e fácil de interpretar As linhas de comentários serão ignoradas pelo compilador Há duas formas de inserir comen tários em seu código vemos que há dois delimitadores um no começo do comentário e um ao final dele Eles devem ser usados exatamente nessa ordem Estes delimitadores permitem comentários de várias linhas bastando apenas um no começo e um ao final do comentário mesmo que em linhas diferentes este é outro tipo de delimitador e deve ser usado no começo de cada linha de comentário Se optar por usar esse delimitador cada linha de comentário no seu código deverá ser iniciada por ele Veja na Figura 2 como usálos Figura 2 exemplos de comentários em C 75 include stdioh A instrução include serve para incluir bibliotecas e arquivos de cabeçalho e deve ser inserida sempre no começo do programa No nosso exemplo está sendo incluído o arquivo de cabeçalho de en tradasaída padrão stdioh standard inputoutput headerfile Há outros arquivos de cabeçalho padrão como por exemplo mathh para funções matemáticas timeh para fazer manipulações com hora e data entre outros int main Nessa linha do código estamos declarando a função main e informando que ela será do tipo inteiro int A função main é a função principal e todos programas escritos em C devem ter essa função A parte principal do seu programa deve estar escrito dentro da função main printfTestando meu primeiro programa em C printf é um comando de saída para que algo seja exibido na tela No nosso exemplo será exibido na tela a mensagem Testando meu primeiro programa em C sem as aspas As aspas delimitam o que deverá ser exibido na tela Essa linha completa do código é chamada de instrução e todas as instruções em um programa em C devem terminar com um pontoevírgula para sinalizar o fi nal da linha ou seja da instrução DEITEL 2011 O comando printf é uma função e faz parte da biblioteca padrão que foi inserida no começo do programa Por isso podemos usála sem têla definido anteriormente return0 A instrução return serve para retornar algum valor ou resul tado obtido por uma função No nosso caso essa instrução retorna o valor 0 para o ambiente que está executando o programa indicando que o mesmo foi executado com sucesso 76 Configurar o ambiente de desenvolvimento para enumerar as li nhas do código facilita para o programador a leitura do programa encontrar erros ou localizar partes específicas dentro do código A numeração das linhas é apenas visual e não faz parte do programa DICA Variáveis e constantes em C As variáveis e constantes em programação são posições de memó ria que são reservadas para que possamos armazenar determina do valor ou dado durante a execução do programa BACKES 2013 Como o próprio nome sugere as variáveis podem ter seus valores alterados durante a execução do programa já as constantes terão seus valores ou dados preservados durante a execução do programa e não poderão ser alterados durante a execução do mesmo Para poder usar ou manipular uma variável ou constan te em seu programa ela deve ser identificada por um nome e deve sempre ser declarada antes de ser usada Como regra de uma boa programação não declare variáveis que não serão usadas no código Vejamos a seguir como declarar variáveis e constantes Declaração de variáveis Uma forma geral de declarar variáveis em C segue o seguinte padrão tipodedado nomedavariável Na linguagem C existem 5 tipos básicos de dados int é utilizado para armazenar números inteiros float utilizado para armazenar números reais com precisão simples Pode ser chamado também de ponto flutuante double é também utilizado para armazenar números reais mas com precisão dupla Isso quer dizer que é possível arma zenar números com mais algarismos significativos eou ex 77 char serve para armazenar um caracter Para armazenar mais de um caracter ou uma cadeia de caracteres é necessário de clarar um vetor de caracteres void não retorna valor Diferente dos outros tipos de dados este não pode ser usado para declarar variáveis apenas fun ções poente com mais magnitude Para esses tipos básicos de dados há a possibilidade de serem alterados com o uso de modificadores exceto para o tipo void São eles signed unsigned long e short Não abordaremos os detalhes dos modificadores de tipo de dados Para declararmos corretamente uma variável além de definir o tipo de dado precisamos dar um nome que a identifique Sendo assim algumas regras precisam ser seguidas para escolhermos cor retamente os nomes das variáveis o nome de uma variável deve começar ou com um underli ne ou com uma letra só serão aceitos para compor o nome de uma variável letras números e o underline não é permitido que uma variável tenha o mesmo nome que uma função definida pelo programador ou igual as funções que estão nas bibliotecas C VOCÊ SABIA Uma característica muito interessante da linguagem C é o fato dela ser case sensitive E o que isso significa Quer dizer que letras maiús culas e minúsculas fazem diferença para uma mesma palavra Por exemplo as palavras Casa CASA CaSa ou CasA apesar de terem o mesmo significado são consideradas palavras diferentes Ou seja poderíamos definir quatro variáveis diferentes com apenas um nome 78 As variáveis podem ser declaradas de três maneiras dentro das funções fora das funções e como parâmetro de uma função As que são declaradas dentro das funções só podem ser usadas den tro da própria função São chamadas de variáveis locais As que são declaradas fora das funções podem ser usadas dentro de qualquer função Elas são chamadas variáveis globais e devem ser declaradas logo no começo do código após a inclusão do cabeçalhos e definição das constantes As variáveis que são declaradas como parâmetro de uma função veremos mais adiante no tópico sobre funções em C Ao declarar mais de uma variável as que forem do mesmo tipo de dado podem ser declaradas em uma única linha informando apenas uma vez o tipo de dado e separando os nomes das variáveis por vírgula A declaração das variáveis globais e locais devem ser fi nalizadas por um pontoevírgula Ao declarar uma variável é permitido que já atribua um valor para a mesma Veremos a seguir Figura 3 um exemplo de um código fictício onde o objetivo é exemplificar as diversas possibilidades ao declarar uma ou mais variáveis EXEMPLO Figura 3 exemplos declarando variáveis 79 Declaração de constantes A definição de constantes em C pode ocorrer de duas formas com o uso do comando define ou const A declaração de constantes deve vir no começo do código logo após a inclusão dos arquivos de cabeçalho Vejamos como usar cada uma delas Usando define define nomeconstante valorconstante Exemplo define RAIZ2 141421 define PI 314159 Usando const const tipodedado nomeconstante valorconstante Exemplo const double RAIZ2 141421 const float PI 314159 É notável duas diferenças básicas entre as duas formas de declarar constantes no comando define não se usa o símbolo de igual e nem o símbolo ao final da linha já para o const é preciso usar o símbolo de igual separando o nome da constante de seu va lor e usase o pontoevírgula ao final da linha Na linguagem C existem 32 palavras que são reservadas e só podem ser usadas especificamente para a função que foram designadas não podendo por exemplo serem usadas como nome de variáveis Por exemplo não poderemos criar uma variável com o nome return pois como vimos no primeiro exemplo a palavra return é um co mando para definir o tipo de retorno ao final de uma função CURIOSIDADE 80 Na tabela abaixo você encontra as 32 palavras reservadas da lin guagem C Tabela 1 palavras reservadas da linguagem C Comandos de entrada e saída de dados Um comando de entrada de dados é usado para receber dados pelo teclado Uma das principais funções usadas para entrada de dados é a função scanf Essa função está definida na biblioteca padrão stdioh e a sua sintaxe está expressa a seguir scanftipo de dado de entrada lista de variáveis O tipo de dado de entrada especifica o formato da entrada dos dados que será lido do teclado e gravado na variável referente Na lista de variáveis deve conter todas as variáveis que receberão valo res As variáveis devem ser separadas por vírgula e conter o símbolo na frente do seu nome Os formatos de entrada de dados mais comuns são c lê um caracter tipo char s lê uma cadeia de caracteres string f lê números reais tipos float ou double d ou i lê números inteiros tipo int Exemplos scanff horas scanfd idade scanfff minutos segundos scanfc VouF No início dessa unidade vimos no exemplo de um programa 81 em C que a função printf é usada para exibir algo na tela Ou seja a função printf é um comando usado para realizar a saída de dados A sua sintaxe é printftipo de saída lista de argumentos Em tipo de saída deve ser expressa a frase ou texto que será exibida na tela bem como os códigos das variáveis Em lista de argumentos deve estar a lista de variáveis que serão exibidas na tela juntamente com a frase ou texto Os códigos das variáveis são os mesmos que foram apresentados anteriormente no comando scanf Para mostrarmos na tela valores de variáveis por meio da função printf devemos escrever printfvalor1 valor2 variável1 variável2 A ordem dos formatos que aparecem entre aspas deve ser a mesma em que as variáveis serão listadas Se estivermos trabalhan do com números reais é possível definir a quantidade de caracteres e de casas decimais que queremos que apareça Vejamos alguns exemplos Exemplos 1 mostrando o valor de duas variáveis na tela Figura 4 código em C para o exemplo 1 EXEMPLO 82 Exemplo 2 usando a função printf para mostrar texto e da dos na tela Figura 5 código em C para o exemplo 2 Exemplo 3 mostrando na tela números reais formatados Figura 6 código em C para o exemplo 3 Tabela 2 códigos especiais da linguagem C Figura 7 exemplo usando um código especial para adicionar nova linha 83 Operadores na linguagem C Dentre os diversos tipos de operadores que são aceitos na linguagem C abordaremos 4 grupos aritméticos relacionais de atribuição e lógicos Operadores Aritméticos Na linguagem C encontramos cinco operadores aritméticos soma dois valores subtrai dois valores multiplica dois valores divisão de dois valores resto de uma divisão módulo Como os operadores operam sobre dois operandos eles são chamados de binários No entanto o sinal de menos pode operar apenas sobre um valor sendo chamado de operador unário O ope rador unário sinal de menos atua invertendo o sinal de um valor Exemplo xy Atençãoem uma divisão se for feita entre dois números inteiros o resultado será um número inteiro e a parte fracionária será descar tada Para que o resultado seja um número real pelo menos um dos dois números na divisão deve ser real Teste no seu computador o seguinte código e observe os re sultados das divisões ATENÇÃO 84 Operadores Relacionais Os operadores relacionais relacionam dois valores eou ex pressões e verificam algum tipo de comparação entre eles Os símbolos utilizados são maior que menor que maior ou igual a menor ou igual a igual a diferente de Os quatro primeiros operadores têm sua funcionalidade aná loga ao que usamos na matemática O operador não é um ope rador de atribuir valor mas sim de comparar se o que está à esquer da realmente é idêntico ao que está à direita Tenha muito cuidado com os operadores de maior ou igual a e menor ou igual a Os símbolos devem ser usados exatamente na ordem que aparecem Se a ordem for trocada não será reconhecido como um operador e o programa apresentará erro ATENÇÃO Operador de atribuição O operador de atribuição na linguagem C é o sinal de igual Ele atribui ao que está na esquerda o valor que está na direita Portanto à esquerda do operador de atribuição geralmente tere mos uma variável e à direita um valor ou expressão que será atri buído A exceção a essa regra será quando tivermos uma atribuição múltipla É recomendado que se evite esse último tipo de atribuição Figura 8 o tipo de dados dos números altera o resultado da divisão 85 Exemplos x 5 valor 15 z z 1 x y z 3 atribuição múltipla Nas operações de incremento ou decremento de uma unidade em uma variável é comum o operador de atribuição sem suprimido e substituído pelos operadores de incremento ou decremento Vejamos alguns exemplos a a 1 pode ser substituído por a x x 1 pode ser substituído por x Para casos análogos aos mostrados acima é permitido que se altere a ordem do operador com a variável sem que o resultado seja modificado Ou seja a ou a são equivalente Operadores lógicos Os operadores lógicos operam sobre duas expressões compa rando e verificando se a expressão geral é verdadeira ou falsa Para esse caso existem três tipos de operadores lógicos que estão mos trados a seguir Operador E lógico A expressão geral só será verdadeira se as expressões à esquerda e à direita forem verdadeiras Caso contrário a expressão geral será falsa Exemplo para representar a condição 0 x 2 escrevemos x0 x2 Operador OU lógicoA expressão geral será verdadeira se a ex pressão à esquerda ou à direita for verdadeira ou ambas Caso con trário a expressão geral será falsa Exemplo a variável z só pode ser equivalente a V de verda deiro ou F de falso nunca os dois ao mesmo tempo A condição será representada por 86 z V z F Operador negação lógico Esse operador muda o valor lógico da expressão Exemplo y não pode ser igual a 5 Representação y 5 Esses operadores são frequentemente utilizados na composi ção de estruturas de decisão VOCÊ SABIA Em programação é ideal que os códigosfonte de programas sejam escritos de forma indentada A indentação de um código são os es paçamentos tabulações colocados em cada novo bloco de coman dos que estão limitados por chaves Isso mantém uma boa aparência no código e facilita a leitura tanto pelo programador quanto por ou tras pessoas que precisem ler aquele código Veja um exemplo Figura 9 exemplo de indentação em um código Estruturas de decisão em C Quando estamos criando programas haverá situações em que será necessário decidir qual comando executar a partir de tal ponto de pendendo da avaliação de uma condição Para não precisarmos ficar tomando essas decisões manualmente automatizamos essas tare fas com as estruturas de decisão Basicamente existem duas estruturas de decisão na linguagem C a 87 estrutura SWITCH Vejamos cada uma delas Estrutura de decisão IF A estrutura IF de forma geral é declarada como Figura 10 forma geral da estrutura if Os comandos logo após o if serão executados apenas se a con dição verificada for verdadeira Caso seja falsa aquele bloco de co mandos será pulado e serão executados os comandos que estão após o else No entanto o uso do else é opcional Se os comandos a serem executados for apenas um comando em linha única o uso das chaves é dispensável e também é permi tido que se escreva na mesma linha do if e do else if condição comandos else comandos Caso haja mais do que duas condições a serem verificadas é permitido que se faça um encadeamento do tipo ifelseif Figura 11 encadeamento da estrutura if 88 Durante a execução do programa a primeira condição que for avaliada como verdadeira os comandos pertencentes a ela serão executados e todos os demais serão ignorados Se todas as condições forem falsas o último else será executado Nesse caso de encadea mento o último else também é opcional o seu uso Exemplo 1 uso simples da estrutura ifelse Figura 12 aplicação da estrutura ifelse Exemplo 2 encadeamento ifelseif Figura 13 aplicação do encadeamento da estrutura ifelseif Estrutura de decisão SWITCH O comando switch é utilizado para avaliar uma lista de valores ou caracter associados à uma variável A primeira verificação que for verdadeira seus comandos associados serão executados e a estru tura é encerrada Vejamos como declarar a estrutura switch 89 Figura 14 forma geral da estrutura switch Diferentemente do if na estrutura switch os testes sempre serão sobre a mesma variável Caso nenhum case seja executado os comandos do default serão executados Assim como o último else da estrutura if tinha seu uso opcional o default também é opcional O break é um comando de parada e faz com que o programa saia da estrutura switch Por isso que o break está dentro dos case assim que uma verificação for satisfeita não faz sentido o programa con tinuar verificando as demais Vejamos um exemplo usando a estrutura switch Figura 15 aplicação da estrutura switch 90 Estruturas de repetição em C Na linguagem C este tipo de estrutura permite que determinados comandos sejam repetidos de forma determinada ou indetermina da até que uma condição seja satisfeita As estruturas de repetição também conhecidas por laços ou loops de repetição podem ser de três tipos FOR WHILE e DOWHILE Laço de repetição FOR O loop for é utilizado quando é necessário que um comando ou bloco de comandos se repita por uma quantidade determinada de vezes O fato do laço começar já com uma quantidade definida de repetições faz com que seja classificado como uma estrutura de repetição de terminada Para o loop for ser iniciado ele precisa de uma condição de partida uma condição de parada e um incremento A estrutura geral de um loop for é for partida parada incremento comandos A condição de partida é determinada por um valor inicial em uma variável de controle A condição de parada é dada pelo valor fi nal da variável de controle e o incremento define como a variável de controle sairá do ponto inicial até a condição de parada De posse dos 3 dados necessários para iniciar um laço for é possível saber mos quantas vezes aquele comandobloco de comandos se repetirá Exemplo Figura 16 aplicação simples do laço de repetição for 91 No exemplo acima a condição de partida foi j0 a condição de parada foi j100 e o incremento foi j ou seja a cada vez que o programa chegar ao final do laço for a variável j será incrementada de 1 e os comandos serão executados novamente até que j 100 Para esse exemplo vemos que o laço será repetido 100 vezes Laço de repetição WHILE O loop while depende apenas de uma condição Enquanto essa con dição for verdadeira o laço será repetido Quando a condição se tor nar falsa o laço será encerrado e o programa continuará com os co mandos posteriores ao loop while A forma geral desse laço é dada por while condição comandos Haverá casos em que não teremos tanto controle sobre a con dição como no laço for fazendo com que o loop while repita inde finidamente até que a condição se torne falsa para que o laço seja encerrado Sendo assim temos uma estrutura de repetição que pode ser dos dois tipos indeterminada ou determinada Exemplo Figura 17 um exemplo de como usar o laço while 92 Laço de repetição DOWHILE O laço dowhile também depende apenas de uma condição No en tanto diferente do visto nos laços anteriores neste a condição é ve rificada ao final do loop e não no começo Vejamos sua estrutura geral do comandos while condição O que torna esse laço diferente dos demais é que a condição estando ao final do laço garante que os comandos serão executados pelo menos uma vez Ao final se a condição for verdadeira o laço será repetido Se a condição verificada for falsa o loop será encer rado Assim como no laço de repetição while podemos ter uma es trutura de repetição dos dois tipos indeterminada ou determinada Exemplo 1 laço dowhile como uma estrutura determinada Figura 18 laço dowhile como uma estrutura determinada 93 Exemplo 2 laço dowhile como uma estrutura indeterminada Figura 19 laço dowhile como uma estrutura indeterminada Funções em C Já temos uma noção básica do que é uma função e como ela funcio na Vamos formalizar e consolidar nosso conhecimento nessa seção Uma função é um bloco de instruções construído para realizar uma tarefa O uso de funções torna o código estruturado facilita a leitura reduz o tamanho e a ocorrência de erros Uma função deve ter a seguinte forma geral tiporetorno nomedafunção declaração dos parâmetros corpo da função O tiporetorno especifica o tipo de dado que será retornado pela função Caso o tipo de retorno não seja especificado o padrão da linguagem C é considerar o tipo inteiro Diferente das variáveis uma função pode ser do tipo void O nome da função segue as mesmas regras que para nomes de variáveis para se ter um nome válido Vimos que uma das maneiras de se declarar uma ou mais va riáveis é como parâmetro de uma função Esse caso se aplica aqui A declaração dos parâmetros é uma lista da seguinte forma 94 tiporetorno nomedafunção declaração dos parâmetros tiporetorno nomedafunção tipo var1 tipo var2 tipo var3 tipo varN Para as funções obrigatoriamente todos os parâmetros de vem ter seu tipo declarado Os parâmetros de uma função informam quais são as entradas No entanto uma função pode ser declarada sem nenhum parâmetro como vimos nos exemplos anteriores com a função main Mesmo que a função seja declarada sem parâme tros é necessário o uso dos parênteses Como visto no início da unidade o comando return retorna o valor de uma função Esse comando é colocado ao final de uma função pois a função é encerrada ao chegar num comando return O comando return pode informar o valor de retorno da função ou ser usado sem informar valor algum Exemplo 1 Figura 20 declarando funções Uma função pode ser declarada antes ou após a função main Se for declarada após a função main devese antes da função main declarar o protótipo da função da seguinte forma 95 Exemplo 2 Figura 21 declarando a função após a função main Vetores e matrizes em C O uso de vetores e matrizes é bastante conveniente sempre que qui sermos guardar vários valores dentro de uma mesma variável onde todos os dados serão do mesmo tipo Um vetor também chamado array é declarado da seguinte forma tipodado nomevetortamanho O tipodado poderá ser qualquer tipo de dados válido O nome do vetor também segue as mesmas regras usadas para nomear va riáveis e tamanho definirá a quantidade de elementos que po derão ser guardados no vetor Observe que são usados colchetes na definição do tamanho Não pode ser parênteses ou chaves A primeira posição de um vetor tem índice 0 Logo a última posição de um vetor terá o índice tamanho1 Da mesma forma que é possível atribuir um valor a uma va riável na sua declaração também é possível com vetores e matrizes Para vetores deve ser feito da seguinte forma tipodado nomevetortamanho Lista de valores A lista de valores deve informar os valores que serão armaze nados no vetor separandoos por vírgula Veja duas formas distintas de inicializar um vetor 96 int exemplo6 150 230 100 24 59 63 int vetor5 vetor0 50 vetor1 14 vetor2 84 vetor3 67 vetor4 10 Um vetor na linguagem C pode ter N dimensões Acabamos de aprender sobre vetores unidimensionais Nos restringiremos a falar sobre vetores com no máximo duas dimensões Em outras palavras um vetor de duas dimensões pode ser chamado de matriz Trabalhar com matriz pode ser muito útil quando nossos dados es tiverem distribuídos em uma tabela com linhas e colunas Análoga ao vetor uma matriz pode ser declarada da seguinte forma tipodado nomevetortamanholinhastamanhocolunas Vejamos alguns exemplos com vetores e matrizes Exemplo 1 vetor de tamanho 31 que pode ser preenchido com os dias de um mês Figura 22 código com exemplo do uso de vetores 97 Exemplo 2 atribuindo valores a todos os elementos de uma matriz com 50 linhas e 50 colunas Figura 23 preenchendo os elementos de uma matriz SINTETIZANDO Finalizando o estudo desse objeto de aprendizagem consolidamos conhecimentos básicos sobre uma linguagem de programação ex tremamente poderosa com ferramentas suficientes para a constru ção de programas de média complexidade Estudamos um pouco da história da linguagem C e conhecemos suas características Aprendemos sobre a estrutura geral de um progra ma escrito na linguagem C como declarar e manipular variáveis e constantes como mostrar informações na tela como capturar da dos pelo teclado e como manipular os diversos operadores suporta dos por essa linguagem As estruturas em C são poderosas ferramentas que permitem que um programa tome decisões ou faça repetidamente uma mesma atividade Aprendemos sobre as estruturas de decisão if e switch e sobre as estruturas de repetição for while e dowhile Por fim conhecemos como declarar funções uma das partes mais importantes da linguagem de programação C e como declarar e acessar vetores e matrizes UNIDADE 3 Objetivos Conceituar equações não lineares e apresentar diferentes mé todos numéricos para determinar as raízes dessas equações Definir e solucionar problemas associados aos métodos nu méricos para determinar raízes desenvolvendo habilidades para identificar o melhor método para cada equação Caracterizar e classificar sistemas lineares Conceituar e descrever métodos diretos eliminação gaussia na e fatoração LU 100 Introdução Olá prezadoa estudante Tudo bem Neste objeto de aprendizagem aprenderemos que para de terminar as raízes de equações não lineares temos que recorrer aos métodos numéricos Embora um valor para a raiz da equação seja encontrado este valor será um valor aproximado do valor exato Veremos diferentes métodos para encontrar essas raízes Embora todos os métodos tenham o mesmo objetivo você aprenderá a iden tificar qual método se adequará melhor a cada equação Estudaremos a classificar os sistemas lineares quanto ao nú mero de soluções possíveis Você conhecerá dois métodos para re solver sistemas lineares Aprenderá também que apesar dos méto dos diretos terem um número finito de processos inevitavelmente ocorrerá um tipo de erro Preparadoa Bons estudos 101 Equações não lineares Caroa alunoa é trivial resolver uma equação polinomial do pri meiro grau como 3x 15 0 concordam Uma equação neste for mato pode ser solucionada da seguinte maneira Podemos definir uma equação não linear como toda e qual quer equação com variável de grau diferente de 1 As equações não lineares não podem ser solucionadas a partir de um número limitado de operações algébricas simples exp log ou funções elementares polinômios razão entre polinô mios potências racionais e as funções transcendentais exponen ciais logaritmo trigonométricas hiperbólicas Existem casos em que a própria função é desconhecida expli citamente ou seja sua definição ocorre a partir de uma série infi nita ou de uma integral O resultado também pode ser uma equação diferencial Nesses casos utilizamos métodos numéricos para re solver a equação Solução de equações não lineares Solucionar uma equação não linear consistirá em aproximar solu ções com precisão cada vez mais alta de equações que se encontram no formato fx 0sendo que f R Re fdeverá ser no mínimo uma função contínua ou seja sem intervalos de descontinuidade em uma vizinhança da raiz Em seu livro Noções de cálculo numérico de 1984 Humes descreve o processo iterativo como aquele que calcula uma sequên cia de aproximações x1x2x3 da solução desejada O cál culo de uma nova iteração é realizado com base nas aproximações anteriores desta maneira devem ser informadas as aproximações iniciais que o processo demandar Dizemos que o processo iterativo converge para x se a sequência 102 constituída porx1x2x3 também converge para esse valor Essa informação é obtida após um número finito de passos aplican do um algoritmo determinado número de vezes Logo os processos iterativos não fornecerão valores exatos paraas raízes mas sim um valor aproximado Embora os métodos numéricos não forneçam soluções preci sas eles podem ser calculados com a exatidão requerida pelo pro blema De modo geral conforme afirma Barroso et al em seu livro Cálculo numérico com aplicaçõesde 1987 para se calcular uma raiz dois passos devem ser seguidos Isolamento da raiz consiste em determinar um intervalo a b o menor possível que contenha uma e somente uma raiz da equação fx 0 Refinamento da raiz ou seja melhorar a raiz aproximada aproximandoa até o grau de exatidão pretendido Determinar raízes de uma equação sempre foi uma questão deba tida ao longo dos séculos Na antiga Babilônia já era conhecida a fórmula para o cálculo das raízes exatas de uma equação quadrática No século XVI matemáticos italianos encontraram modelos para o cálculo de soluções exatas de equações polinomiais do terceiro e do quarto grau No século XVII o matemático Niels Abel 18021829 contribuiu para soluções notáveis e consideráveis para a evolução da matemática provando que não há uma fórmula geral para o cálculo das raízes exatas de uma equação polinomial de grau maior ou igual a 5 Nesta conjuntura é necessário recorrer aos métodos numéricos para calcular aproximações para as raízes reais de dada equação VOCÊ SABIA Teorema de Bolzano Na pesquisa de zero de uma função é muito comum utilizarmos o teorema de Bolzano que só pode ser aplicado em funções contínuas em um intervalo trabalhando a existência de uma raiz em determi nado intervalo 103 Seja fℝ ℝ uma função contínua em um intervalo a b ℝ Se fa fb 0 então existe x ϵa b tal que fx 0 Se fa fb 0 então não existe x ϵ a b tal que fx 0 De modo geral podemos afirmar que se uma função contí nua muda de sinal em um determinado intervalo então ela possui pelo menos um 0 ou sejauma raiz nesse intervalo conforme pode ser verificado no Gráfico 1 Gráfico 1 Teorema de Bolzano Métodos de solução de equações não lineares I Aprendemos que para determinar a solução de uma equação linear é necessário limitar um intervalo que contenha uma raiz em segui da deve ocorrer seu refinamento Mas em que consiste este processo Como é possível refinar ou seja melhorar a precisão de uma raiz de uma função O formato no qual ocorre esse refinamento é que diferencia e categoriza os métodos numéricos sendo que todos estes são classi ficados como métodos iterativos pois a repetição contínua e suces siva de um método recebe a denominação de iteração enquanto as aproximações sucessivas encontradas por estes processos são cha madas de termos iterados Conheceremos inicialmente os seguintes métodos Método do meio intervalo MMI Método das aproximações sucessivas MAS 104 Seremos apresentados à sua correta definição matemática e sua interpretação geométrica ou seja à maneira na qual podemos visualizar no plano sua dedução assim como o algoritmo a ser uti lizado em cada técnica Método do Meio Intervalo MMI O método do meio intervalo também recebe o nome de método da bissecção e consiste em dividir sucessivamente por dois o intervalo em que se localiza a raiz até que a solução seja isolada conforme a correção estabelecida Para a utilização do método do meio intervalo é necessá rio admitir um intervalo a b para qual fafb0 assim será calculado o valor da funçãono ponto médio x1 ab2 como fafx1 0 então ftem uma raiz entre a e x1Baseado nisso o processo é repetido sobre o novo intervalo ax1 para finalizar se fafx1 0 segue que fbfx1 0 desde que fa e fbte nham sinaiscontrários Portanto ftem um 0 entre x1e b O processo será repetido porém utilizando o intervalo x1b De modo geral o MMI pode ser caracterizado como Para k 1 2 3 e um intervalo definido por a b faça Se Gráfico 2 Interpretação geométrica do Método do Meio Intervalo MMI Fonte FRANCO 2006 p66 Adaptado 105 Utilizar o MMI consiste em construir uma tabela semelhante à Tabela 1 Tabela 1 Algoritmo do Método do Meio Intervalo MMI Sobre o preenchimento desta tabela é necessário se atentar às seguintes observações k corresponde ao número de iteração respectiva à linha preen chida e deve iniciar sempre por 0 a e b são determinados pelo intervalo informado ou seja ab xk será respectivo à linha utilizada correspondendo ao núme ro de iteraçãorealizada fxksignifica o resultado da função dada a média utilizada sendo necessárioapenas o sinal do resultado fa fxk nesta etapa é realizada a regra de sinais e seu re sultado influenciará na próxima iteração Veja a regra Se b a ε indica a precisão da iteração Assim quando o re sultado dessa subtração corresponder a um núcmero menor ou igual ao erro que é determinado no exercício a média da iteração corresponderá à raiz da equação Na multiplicação entre dois números inteiros utilizamos a regra de sinais para determinar o sinal resultante das respectivas operações Basicamente essa regra afirma que o produto entre números que possuem sinais iguais ou gera um resultado positi vo já o produto entre números com sinais diferentes ou origina um resultado negativo VOCÊ SABIA 106 Exemplo 1 determinar a raiz da equação ex 2cosx 4 0 x 12 com precisão ou seja com erro de ϵ 001 Para iniciar o processo de determinação da solução deste exemplo construiremos uma tabela com o cabeçalho igual à Tabela 1 Tabela 2 dados obtidos pelo método do meio intervalo MMI Assim é possível concluir que a raiz da equação ex 2cosx 4 0 localizada no intervalo x 12 equivale a 145 devido à pre cisão solicitada de ϵ 001Observe que a raiz encontrada deve per tencer ou seja estar compreendida no intervalo determinado O erro indicado no enunciado do exercício indica a precisão na qual os cálculos devem ser realizados Basicamente informa com quan tas casas decimais o resultado deve ser informado no entanto po dese já aplicar a precisão indicada em cada iteração de modo a fa cilitar os cálculos uma vez que não serão utilizadas todas as casas decimais DICA 107 Exemplo 2 determinar a raiz da equação x2 4 5e2x 0 x 10 com precisão ou seja com erro de ϵ 0001 Para iniciar a resolução deste exemplo construiremos uma tabela com o cabeçalho igual à Tabela 1 Tabela 3 dados obtidos pelo método do meio intervalo MMI É possível concluir que a raiz da equação x2 4 5e2x 0 lo calizada no intervalo x 1 0 equivale a 0113 devido à precisão solicitada de ϵ 0001 ou três casas decimais Podemos inferir sobre este método Sua convergência é linear ou seja é lenta A cada iteração o comprimento do intervalo que contém a so lução é reduzido à metade Indicado para diminuir o intervalo que contém a raiz 108 O método das aproximações sucessivas MAS que também rece be o nome de método da iteração linear ou método do ponto fixo é demonstrado por uma sequência de aproximações da raiz xde uma função fx e é obtido por intermédio de uma relação de recorrên cia xn1ϕxn n123 Sendo que x0é uma aproximação inicial dex e ϕx é uma função que temx como ponto fixo ou seja xϕx A representação gráfica respectiva ao método das aproxima ções sucessivas MAS é indicada no Gráfico 3 Método das Aproximações Sucessivas MAS Gráfico 3 interpretação geométrica do Método das Aproximações Sucessivas MAS Fonte HUMES 1984 p 22 Adaptado Para determinar as raízes de funções utilizando o método das aproximações sucessivas MAS é útil elaborar uma tabela com o cabeçalho igual ao representado na Tabela 4 Tabela 4 algoritmo do Método das Aproximações Sucessivas MAS Sobre o preenchimento desta tabela é necessário se atentar às seguintes observações k corresponde ao número de iteração respectiva à linha preen chida e deve iniciar sempre por 0 109 xké a aproximação inicial e é informado no enunciado do exer cício ϕxk indica o resultado da transformação xϕx logo mudará conforme a função trabalhada xkϕxk εpermite mensurar o erro encontrado a cada ite ração a partir deste valor identificase a parada Tabela 5 dados obtidos pelo Método das Aproximações Sucessivas MAS DICA É importante que a calculadora a ser utilizada nos cálculos esteja sempre configurada no modo RAD modo radianos para ângulos 110 Verifique a maneira adequada para realizar essa alteração uma vez que não ocorrendo tal mudança haverá divergência nos resultados Tabela 6 dados obtidos pelo Método das Aproximações Sucessivas MAS Concluímos que a raiz da equação fx ex x partindo do chute inicial de x0 0 e precisão de quatro casas decimais é 05671 Observe que foram necessárias muitas iterações para se alcançar o resultado perante a precisão determinada no entanto é comum no enunciado dos exercícios já estarem estipuladas as quantidades de iterações a serem realizadas de modo a tornar o processo de reso lução mais prático Levando em consideração este método podemos concluir que É difícil de determinar uma função de iteração que satisfaça a 111 condição de convergência A velocidade de convergência é inversamente proporcional a Fε Utilizar o teste Fx0 1pode levar a um engano caso x0não esteja suficientemente próximo à raiz Métodos de solução de equações não lineares II Caroa alunoa nós já fomos apresentados a dois métodos nu méricos que viabilizam encontrar a raiz de uma função o método do meio intervalo e o método das aproximações sucessivas Agora dando sequência ao estudo dos métodos numéricos que são capazes de determinar o zero de uma função conheceremos mais duas me todologias que apresentam características peculiares São elas Método das secantes MS Método de NewtonRaphson MNR Estes métodos são mais utilizados que os anteriores uma vez que possuem uma capacidade de convergência mais rápida ou seja necessitam de menos iterações para se encontrar o zero da função Continuando com a metodologia adotada anteriormente veremos a correta definição matemática associada a cada método e sua interpretação geométrica além de conhecer com detalhes o algoritmo a ser utilizado em cada técnica Método das secantes MS O método das secantes que também pode ser chamado de método das cordas baseiase em um algoritmo de determinação de zeros de uma função que utiliza uma sequência de raízes de linhas secantes para aproximar cada vez mais e com mais precisão da raiz de uma função A secante de um ângulo representa a razão entre a hipotenusa e o cateto adjacente dependendo diretamente do valor dessa abertu ra Outra relação também define a secante como sendo o inverso da função cosseno do respectivo ângulo CURIOSIDADE 112 Geometricamente o método das secantes Gráfico 4 con siste em considerar como aproximação posterior a intersecção da corda que une os pontosxk fxk exk1 fxk1 com o eixo das abs cissas a partir de duas aproximaçõesum ponto é encontrado como sendo a abscissa de intersecção do eixo horizontal e da reta secante que passa pelos pontos A reta secante interceptada pelas aproxi mações iniciais corta o eixo x obtendo a primeira estimativa para a raiz Não satisfazendo a condição proposta é necessário fazer mais iterações até que se identifique um valor que atenda a precisão es tipulada Observe que graficamente a função é interceptada pela reta secante também visualizamos a composição de dois triângulos semelhantes Gráfico 4 interpretação geométrica do Método das Secantes Fonte FRANCO 2006 p 81 Adaptado Para determinar as raízes de funções utilizando o método das secantes é útil elaborar uma tabela com o cabeçalho igual ao repre sentado na Tabela 7 Tabela 7 algoritmo do método das secantes MS Sobre o preenchimento desta tabela são imprescindíveis as seguintes observações a e b correspondem aos números que compõem o ponto ini cial 113 xk é o valor da função para o valor de a e b e a partir deste resultado será definido quem será fixado seguindo a regra Se fa 0 ou seja fixa a e fa Se fb 0 ou seja fixa b e fb xk1 indica o próximo termo da iteração xk1 xk ε calcula o erro encontrado a cada iteração a partir deste valoridentificase a parada Que tal compreender melhor o funcionamento deste outro método numéricoVamos lá Começaremos com a construção de uma tabela que contenha um cabeçalho igual ao disposto na Tabela 7 Exemplo 6 encontre a estimativa da raiz de equação x2 10lnx 5 0x 4 5 com precisão ou seja com erro de ϵ 00001 Tabela 8 dados obtidos pelo Método das Secantes MS Assim de acordo com a precisão encontrada é possível con cluir que 44690é uma aproximação da raiz da equação x2 10lnx 5 0 no intervalo 4 5 Observe que os valores de b e fb foram fixados destacados em outra cor ou seja mantidos até o final Isso ocorreu porque o valor que representa fb foi positivo 114 Exemplo 7 determinar a raiz da equação 3x cosx 0 x 0 1 com precisãoou seja com erro de ϵ 104 00001 Tabela 9 dados obtidos pelo Método das Secantes MS Logo de acordo com a precisão determinada é possível esta belecer que03167 é uma aproximação da raiz da equação 3x cosx 0 x 0 1 Averigue que o valor de b 1 e fb 24597 foram constantes destacados em outra corou seja mantidos até o final da resolução Isso ocorreu porque o número que representa fb possuía um sinal positivo Podemos dizer que este método Exige que o sinal da segunda derivada seja constante no in tervalo Se os pontos iniciais forem próximos da raiz haverá boa con vergência caso contrárioserá mais lento que o método do meio intervalo MMI A ordem de convergência do método da secante não é quadrá tica como a do método de Newton mas também não é apenas linear Método de NewtonRaphson MNR O método de NewtonRaphsonMNR se diferencia dos demais apresentados por necessitar do cálculo do valor de uma função e de sua respectiva derivada E você recordase decomo derivar uma função Vamos relembrar 115 Uma das derivadas mais simples que existe é a derivada de uma função potência Basicamente derivar uma função potência consiste em realizar o produto entre o expoente e o coeficiente da função e em seguida subtrair uma unidade deste mesmo expoente No entanto constantemente nos deparamos com equações compostas por termos mais elaborados para tal situação existem tabelas que disponibilizam das informações destas derivadas como veremos na Tabela 10 que dispõe das relações de derivada mais uti lizadas Tabela 10 Derivadas compostas Retomando a dinâmica do método de NewtonRaphson MNR este pode ser deduzido baseado em sua interpretação geo métrica uma vez que a primeira derivada de uma função representa a inclinação da reta tangente Gráfico 5 Interpretação geométrica Método de NewtonRaphson MNR Fonte FRANCO 2006 p 77 Adaptado 116 É importante ressaltar que o método de Newton quando bemsucedidoconverge rapidamente o insucesso na utilização deste método se deve ao fato do ponto inicial usado como referência inicial não estar suficientemente próximo da solução Para determinar as raízes de funções utilizando o MNR é útil elaborar uma tabela com o cabeçalho igual ao representado na Ta bela 11 em que são destacadas a função e sua respectiva derivada Tabela 11 algoritmo de NewtonRaphson MNR Sobre o preenchimento desta tabela é necessário se atentar às seguintes observações k corresponde ao número de iteração respectiva à linha preen chida e deve iniciar sempre por 0 xké a aproximação inicial e é informado no enunciado do exer cício fxk e fxk indicam respectivamente o valor da função e de sua derivada no ponto xk xk1indica o próximo termo da iteração xk1 xk ε calcula o erro encontrado a cada iteração a partir deste valor identificase a parada Exemplo 8 determinar a raiz da equação x3 5x2 x 3 0 x 24 04com precisão ou seja com erro de ε 0001 Inicie por x 24 Começaremos a resolução do exemplo 8 a partir da cons trução de uma tabela que contenha o cabeçalho igual ao disposto na Tabela 11 Para completála adequadamente devemos derivar a função logo y x3 5x2 x 3 y 3x3 1 5x2 1 1x1 1 0 y 3x2 10x 1 117 Tabela 12 dados obtidos pelo Método de NewtonRaphson MNR Logo de acordo com a precisão determinada é possível es tabelecer que0646 é uma aproximação da raiz da equação x3 5x2 x 3 0 com x0 24Observe que o valor está compreendido dentro do intervalo inicial Exemplo 9 encontre a raiz da equação 2x senx 4 0 x3 2 com precisão ou seja com erro de ϵ 00001 Inicie por x 3 Iniciaremos o processo de resolução do exemplo 9 a partir da elaboração de uma tabela que contenha um cabeçalho igual ao dis posto na Tabela 11 Para completála corretamente devemos deri var a função logo y 2x senx y 2x1 1 cosx y 2 cosx 118 Tabela 13 dados obtidos pelo Método de NewtonRaphson MNR Logo de acordo com a precisão determinada é possível afir mar que 23542é uma aproximação da raiz da equação 2x senx 4 0 x 3 2com precisãoou seja com erro de ϵ 00001 partindo por x 3 Este método Demanda de conhecimentos de derivada Possui excelente convergência Comparação entre os métodos numéricos Agora que já conhecemos os principais métodos numéricos dare mos início ao estudo que visa comparar tais metodologias Quanto à garantia de convergência que retrata a segurança de um método identificar a raiz da função há restrições para o mé todo do meio intervaloMMI e o método das aproximações suces sivas MAS Para o método da bisseção a convergência é garantida desde que A função seja contínua no intervalo determinado A derivada da função mantenha o sinal no intervalo O produto entre a função de cada valor do intervalo seja menor que zeroou seja fa fb 0 Já para o método das aproximações sucessivas MAS é ne cessário atender às especificações apresentadas anteriormente para 119 o método do meio intervalo MMIassim como A função inicial e sua adaptação sejam contínuas no intervalo inicialI φx M 1 para algum M 0 e Ɐx I O chute inicial pertença ao intervalo ou seja x0I O parâmetro do esforço computacional faz sua avaliação con forme o número de operações efetuadas a cada iteração a dificul dade dessas operações quantidades de decisões lógicas número de avaliações da função a cada iteração e do número total de iterações De modo geral sobre a eficiência computacional O método da bisseção é o que efetua cálculos mais simples por iteração O método de Newton requer cálculos mais elaborados pois demanda o cálculo da função e de sua derivada No entanto o número de iterações executadas pelo método da bisseção geralmente é bem maior que a quantidade de iterações executadas pelo método de Newton A rapidez de convergência está diretamente relacionada ao número de iterações realizadas de maneira a encontrar a raiz isso não necessariamente significa um tempo menor uma vez que o tempo gasto para realizar cada iteração alterna de método para mé todo Método do meio intervalo convergência linear ou seja lenta Método das aproximações sucessivas convergência rápida desde que a condição de convergência seja atendida Método das secantes ótima convergência Método de NewtonRaphson excelente convergência De modo geral a escolha do método deve levar em considera ção qual é o mais rápido o que garanta a convergência e que facilite os cálculos por iteraçãoO método de Newton é uma hábil alternati va desde que o cálculo de fxou seja da derivada da função não seja muito elaborado Em caso contrário é mais indicado utilizar o método das secantes pois é o que dispõe de uma convergência mais eficiente que os demais método do meio intervalo e método 120 Sistemas lineares Nesta seção conheceremos sobre a definição formal de sistemas lineares mas inicialmente partiremos da concepção de equação linear que é caracterizada por possuir não mais de uma variável Cada uma destas incógnitas dispõe de expoente um São exemplos de equações lineares Um sistema de equações lineares pode ser descrito como aquele tem em sua composição n equações lineares com n incóg nitas variáveis já uma solução de um sistema linear equivale na determinação de valores para as n variáveis tais que ao inserir es tes valores nas respectivas equações todas devem ser resolvidas si multaneamente Para exemplificar a concepção de solução de um sistema li near considere que ele seja composto por três variáveis e três equa ções lineares No Diagrama 1 a solução é dada por 1 1 2 pois ao substituir nas equações lineares x 1y 1 e z 2 todas as equa ções são atendidas ao mesmo tempo Diagrama 1 solução de um sistema linear É importante salientar que todo sistema linear pode ser re presentado em outro formato chamado de matricial ou simples mente Ax b sendo que A é denominada matriz dos coeficientes b é o vetor do termo independente e x a solução do sistema Observe a notação matricial do sistema linear anterior das aproximações sucessivas 121 A corrente em um circuito elétrico simples pode ser analisada por intermédio de um sistema linear de equações As leis de Kirchhoff representam uma importante ferramenta na resolução destes cir cuitos elétricos pois tais leis facilitam o equacionamento das volta gens juntamente com as correntes envolvidas Diante deste cenário a álgebra linear com suas técnicas de resolução de sistemas viabi liza a obtenção das correntes no circuito CURIOSIDADE Classificação de Sistemas Lineares Todo sistema linear pode ser classificado conforme o número de so luções que ele admite Sendo assim há três possibilidades e conse quentemente três categorias Sistema possível admite uma única e possível solução Sistema possível e indeterminado admite infinitas soluções Sistema indeterminado não admite nenhuma solução DEFINIÇÃO A interpretação geométrica da possível quantidade de solu ções de cada sistema linear se associa à posição relativa entre duas retas em um plano cartesianoA partir disso concluímos que um sis 122 Gráfico 6 interpretação geométrica da classificação de um sistema linear Fonte RUGGIERO LOPES 2013 Métodos diretos Diversos problemas podem ser resolvidos via análise linear Devido a essa constante necessidade de resolução existem duas grandes metodologias que viabilizam a determinação do conjunto solução de um sistema linear os métodos diretos e os métodos iterativos Os métodos diretos são os preferencialmente escolhidos para tema possível e determinado é representado por retas concorrentes uma vez que associam um único ponto de intersecção ou seja uma solução na qual o ponto que satisfaz as equações se localiza em am bas as retas Já o sistema possível e indeterminado é representado pelas retas coincidentes pois são atribuídos infinitos pontos à sua solução Por fim um sistema indeterminado possui correspondên cia com as retas paralelas porque não existe ponto algum coinci dente entre as equações o que impossibilita a solução das equações lineares em questão Tais distinções estão dispostas no Gráfico 6 123 Diagrama 2 erro nos métodos direto e iterativo Como apresentado no Diagrama 2 no método direto incide o erro de arredondamentouma vez que por necessidade ou ausência de precisão adicional na máquina este erro ocorrerá Já no método iterativo existe a necessidade de truncar ou seja de limitar uma série infinita de termos Método da Eliminação Gaussiana O método de eliminação de Gauss também denominado método de Gauss simples baseiase na transformação do sistema linear em um triangular equivalente por meio de uma série de operações elementares sobre as linhas do sistema original ou seja o sistema equivalente é encontrado pela aplicação repetida da operação O objetivo desta técnica consiste em organizar essas se a grande maioria dos sistemas lineares podendo ser definidos como métodos que determinam a solução com um número finito ou seja limitado de operações Neste contexto seremos apresentados aos principais métodos diretos conhecidos por Método de eliminação gaussiana Método de fatoração LU Um fator interessante a ser considerado na dinâmica dos mé todos diretos e iterativos é a questão do erro que em ambas as me todologias estão implantadas porém em situações diferentes Veja no Diagrama 2 a comparação deste indicativo 124 A linguagem matricial descreve cada elemento de uma matriz por aij em que i indica a linha e j a coluna ocupada pelo elemento da matriz Essa dinâmica permite localizar um elemento na disposição da matriz Por exemplo o elemento a43 se refere a um elemento lo calizado na quarta linha e terceira coluna VOCÊ SABIA Para compreender a eliminação gaussiana considere um sis tema descrito por E a partir deste realizaremos as seguintes etapas Etapa 1 obter a matriz aumentada referente ao sistema Ab Consiste em acrescentar a coluna referente aos resultados à matriz referente ao sistema Logo será quências de maneira que o sistema linear resultante seja triangular superior Uma matriz é considerada triangular quando os elementos que estão acima ou abaixo da diagonal principal são nulos O que define uma matriz triangular inferior são os números não nulos que estão abaixo da diagonal principal para uma matriz triangular su perior os números não nulos se localizam acima da diagonal prin cipal Considerando uma matriz composta por três linhas e três co lunas 125 Etapa 2 transformação da matriz aumentada Ab em uma matriz aumentadaAb em que A é uma matriz triangular superior Esta etapa é subdividida em duas partes Inicialmente é preciso zerar a21 e a31 que representam os elementos da primeira coluna abaixo da diagonal principal Em Seguida é preciso zerar a32 que representa o elemento da segunda coluna abaixo da diagonal principal Para essa finalidade é possível executar as seguintes ações Multiplicação de uma linha por uma constante não nula Substituição de uma linha por ela mesma somada a um múl tiplo de outra linha Transposição de duas linhas Etapa 3 resolver o sistema linear Ab da etapa 2 Uma vez triangulado o sistema a solução é encontrada por substituição regressiva ou seja a partir da determinação do valor de uma incógnita obtémse os outros Para compreender melhor esta dinâmica de Gauss resolve remos o exemplo 1 a seguir avançando com base nas três etapas propostas Vamos lá Exemplo 1 resolva o sistema linear a seguir utilizando a eliminação gaussiana 126 Etapa 1 obter a matriz aumentada referente ao sistema Ab Etapa 2 transformação da matriz aumentada Ab em uma matriz aumentadaAb em queA é uma matriz triangular superior Para facilitar a manipulação entre as linhas será denomina do por L1 a primeira linha do sistema L2a segunda linha e L3a ter ceira linha Esta etapa é subdividida em duas partes Inicialmente é preciso zerar os elementos da primeira coluna abaixo da diagonal principal Etapa 3 resolver o sistema linear Ab da etapa 2 Como a primeira coluna equivale à variável x a segunda à va riável y e a terceira à variável zé possível concluir que Exemplo 2 resolva o sistema linear a seguir utilizando a eliminação gaussiana Etapa 1 obter a matriz aumentada referente ao sistema Ab 127 Etapa 2 transformação da matriz aumentada Ab em uma matriz aumentadaAb em que A é uma matriz triangular superior Esta etapa é dividida em duas outras partes Inicialmente é preciso zerar os elementos da primeira coluna abaixo da diagonal principal Neste momento fazse necessária a divisão de toda a segun da linha por 3de maneira que o elemento localizado na segunda linha e segunda coluna se torne um Esse processo é necessário para conseguir anular o elemento 8 eassim encontrar a matriz trian gular superior O elemento 8 destacado em negrito deve ser anulado Para isso devemos realizar a adição da terceira linha com oito vezes a segunda linha logo 128 Etapa 3 resolver o sistema linear Ab da etapa 2 Como a primeira coluna equivale à variável x a segunda à variável y e a terceira à variável z é possível concluir que Logo o conjunto solução é S 2 0 1 Método da fatoração LU O método de decomposição LU que se origina do inglês lower L e upperU trabalha com uma matriz do formato Ax b e se baseia no fato de quepara resolver um sistema é possível fatorar a matriz A como o produto entre duas matrizes A matriz L é triangular inferior e a matriz U caracterizada por ser triangular superior ou seja A LU Diagrama 3 caracterização da matriz L e da matriz U 129 É importante destacar que os elementos da matriz L que são chamados de multiplicadores são as constantes que utilizamos nas operações aritméticas embutidas na eliminação gaussiana O processo de fatoração para determinação deste sistema consiste em decompor a matriz A dos coeficientes em um produto de dois ou mais fatores e em seguidasolucionar uma série de siste mas lineares Se A LU logo é possível deduzir que Axb LUxb LUxb Lyb Uxy Desta forma ao invés de resolvermos o sistema originalse rão solucionados dois o sistema triangular inferior Ly be o sistema triangular superior Ux y que juntosirão nos fornecer a solução do sistema original Ax b ou sejaos resultados atribuídos a x serão a solução do sistema em questão Formalizaremos nosso raciocínio pela execução de tarefas Para a fatoração LU serão necessárias quatro etapas Etapa 1 realizar a eliminação gaussiana na matriz e assim determinar amatriz U excluindo a coluna dos resultados que rece berá o nome de b Etapa 2 identificar os multiplicadores utilizados na elimina ção gaussiana anterior para montar a matriz L 130 Etapa 3 resolver o sistema linear Ly b e assim determinar y Etapa 4 encontrar a solução x por meio da resolução do sis tema Ux y ou seja Exemplo 3 utilizando a fatoração LU determine a solução do sis tema a seguir Etapa 1 realizar a eliminação gaussiana na matriz Etapa 2 identificar os multiplicadores Observe que para zerar o elemento localizado na segunda li nha e primeira coluna a21 2 foi elaborada a operaçãoL2 2L1 logo m21 2 já para o elemento a31 3 a operação foi L3 3L1 logo m31 3 Para o elemento a32 1 a operação foi L3 L2 logo m32 1 131 Etapa 3 resolver o sistema linear Ly b e assim determinar y Uma vez determinado o valor da variável y1 3 por retro substituição é possível determinar as constantes y2 e y3 Assim Etapa 4 encontrar a solução x por meio da resolução do sis tema Ux you seja Uma vez determinado o valor da variável x3 3 por retro substituição é possível determinar as constantes x2 e x1 Assim Logo a solução do sistema é S 213 Resolver um sistema linear por retrosubstituição consiste em deter minar o resultado de uma variável e a partir deste valor retroceder ou seja retornar para as outras equações lineares e assim encon trar os valores das incógnitas restantes VOCÊ SABIA 132 SINTETIZANDO Percebemos que por meio dos métodos apresentados podemos de terminar uma raiz aproximada de uma função ou seja por meio de iterações sucessivas podemos determinar um valor para x tal que fx seja nulo O método do meio intervalo trabalha com a diminuição constante do intervalo inicial até se obter uma raiz mais apropriada às condições iniciais este método possui uma convergência lenta ou também denominada por linear De maneira geral o método das aproxima ções sucessivas pode ser descrito como um método iterativo que se fundamenta em uma fórmula de recorrênciaA partir de um valor inicial uma sucessão de valores será gerada até se determinar a raiz O método de NewtonRaphson é muito eficiente e com convergên cia mais rápida que os demais É o mais indicado sempre que for fácil verificaras condições de convergência e que o cálculo da derivada não for muito complicado O método da secante é uma saída para o método de Newton quando se deseja evitar o cálculo de uma deriva da muito elaborada pois ele converge mais rapidamente que outros métodos disponíveis É importante ressaltar que a escolha do método depende muito da estrutura algébrica que compõe a função a ser resolvida uma vez que de acordo com este formato haverá a necessidade de mais ite rações ou não assim como a rapidez para desenvolver cada iteração Neste objeto de aprendizagem aprendemos também sobre a reso lução de sistemas lineares Os métodos diretos são descritos por se rem processos finitos mas que ocasionam erros de arredondamen to Nesta categoria conhecemos o Método da eliminação gaussiana popularmente conhecido por escalonamento e a fatoração LU UNIDADE 4 Objetivos Apresentar e caracterizar métodos iterativos método de GaussJacobi e método de GaussSeidel para solucionar sis temas lineares Definir a teoria da aproximação e obter estimativas para va lores de uma função pela concepção de aproximações por mí nimos quadrados Compreender o conceito de interpolação polinomial e aplicar os métodos de NewtonGregory e Lagrange em interpolações polinomiais Definir e aplicar o método de Euler e o método RungeKutta para resolver equações diferenciais ordinárias Compreender a concepção de integração numérica e aplicar a regra do trapézio além da primeira e segunda regras de Simpson em uma integração numérica 134 Introdução Olá prezadoa estudante Tudo bem Neste objeto de aprendizagem aprenderemos dois novos mé todos que são indicados para resolver sistemas lineares de grande porte eles fazem parte dos métodos iterativos Esses métodos tem a característica de possuir uma relação recursiva e depender de uma aproximação inicial Veremos também um método para realizar ajustes de curvas Dando continuidade você conhecerá alguns métodos para realizar uma interpolação polinomial ou seja como estimar pontos intermediários a partir de alguns pontos conhecidos na vizinhança Diversos problemas da engenharia são modelados por meio de equações diferenciais Muitas delas são extremamente compli cadas e difíceis de solucionar analiticamente Portanto veremos dois métodos numéricos de resolver equações diferenciais ordiná rias Por fim você estudará como realizar uma integração nu mérica Serão apresentados três métodos Você aprenderá as par ticularidades de cada um deles e qual deles será mais útil para cada situação Verá também que é possível realizar uma integração nu mérica não somente de funções explícitas mas também a partir de pontos que representam uma função desconhecida Preparadoa Bons estudos 135 Equações não lineares métodos iterativos Os métodos iterativos são esporadicamente utilizados para a solu ção de sistemas lineares de pequena dimensão uma vez que o tem po destinado para obter a precisão necessária ultrapassa as técnicas de método diretocomo a eliminação de Gauss e o da fatoração LU como vimos anteriormente Neste contexto os métodos iterativos se apresentam como uma alternativa para decifrar sistemas constituídos por grandes quantidades de elementos que surgem com regularidade em análise de circuitos elétricos na solução numérica de problemas de contor no e equações diferenciais parciais estes são geralmente da ordem de dez mil equações com dez mil variáveis sendo separados com seus elementos não nulos em posições esperadas De modo geral as características principais dos métodos ite rativos são Diagrama 1 caracterização dos métodos iterativos 136 Método de GaussJacobi O método de GaussJacobi transforma o sistema linear Ax b em x Cx g Considere um sistema E suponha que aij 0i 123n É necessário isolar o vetor x mediante a separação pela diagonal assim Assim encontramos x Cx g em que Para prosseguir utilizando este dispositivo é necessária a in formação de uma aproximação inicial denotada por x0 de modo a obter x1 x2 xk por meio de uma relação recursiva ou seja por meio de um resultado encontramos o próximo É importante salientar que a denotação x1 indica o valor de x na primeira iteração x2 corresponde ao valor de x na segunda itera ção e assim por dianteEssas iterações chegam ao fim quando aten dida a restrição inicial determinase a quantidade de iterações ou quando é atendido o critério de convergência Adotaremos o critério de especificar a quantidade de iterações necessárias 137 Agora para entender na prática como resolver um sistema pelo método iterativo de GaussJacobi vamos decompor a dinâmica desta metodologia nas etapas que serão descritas a seguir Etapa 1 isolar a variável x1 na primeira linha x2 na segunda linha e x3 na terceira linha até xn na enésima linha Etapa 2 multiplicar a expressão encontrada pelo inverso do coefi ciente da incógnita referência da linha Etapa 3 realizar a primeira iteração aplicando a aproximação inicial informada no enunciado da questão Etapa 4 utilizar o resultado encontrado na etapa 3 para concluir a próxima iteraçãoprosseguir com este processo até chegar à quan tidade de iterações solicitada Vamos colocar em prática a execução destas etapas Acompa nhe a resolução do exemplo Exemplo 4 calcule uma aproximação para a solução do sistema com três iterações x0 e precisão de três casas decimais para o siste ma descrito por Utilizando o método de GaussJacobi Etapa 1 Etapa 2 138 A determinação desta fase é primordial para o sucesso do mé todo de GaussJacobiuma vez que as igualdades encontradas serão sempre utilizadas nas iterações de maneira a obter as aproximações das variáveis em questão Etapa 3 como a aproximação inicial é x0 logo x10 0 x20 0 e x300 Substituindo estes valores na expressão algébrica encontrada anteriormente Logo a aproximação da solução do sistema após uma iteração é x1 Logo a aproximação da solução do sistema após duas iterações é x2 De modo a atender a solicitação de três iterações é necessário realizar mais um processo igual ao anterior 139 Logo a aproximação para o conjunto solução do sistema li near após três iterações é x3 Exemplo 5 calcule uma aproximação para a solução do sistema com três iterações x0 e precisão de três casas decimais para o sis tema descrito por Utilizando o Método de GaussJacobi Etapa 1 Etapa 2 Etapa 3 como a aproximação inicial é x0 logo x10 07 x20 16ex3006 Substituindo estes valores na expressão algé brica encontrada anteriormente 140 Logo a aproximação da solução do sistema após uma iteração éx1 Etapa 4 como x1 logo x1 1 096 x2 1 186 e x31 094 Logo a aproximação da solução do sistema após duas iterações é x2 De modo a atender a solicitação de três iterações é necessário realizar mais um processo igual ao anterior Logo a aproximação para o conjunto solução do sistema li near após três iterações Método de GaussSeidel Para compreender o método de GaussSeidel assim como no mé todo de GaussJacobi todo sistema linear do formato Ax b pode ter uma forma equivalente a x Cx g 141 No método GaussJacobi é efetuada uma separação diago nal e o processo iterativo de progressão é sequencial componente por componente A distinção para o método de GaussSeidel é que no momento de se realizar a atualização dos componentes do vetor em uma determinada iteração a formulação faz uso dos compo nentes da iteração atual com as restantes não atualizadas da itera ção anterior A título de exemplo ao se calcular a componente da itera ção xjk1 utilizase no cálculo as componentes já atualizadas x1k1 x2k1 xj1k1com as componentes ainda não atualizadas da ite ração anterior xj1k xj2k xn k Basicamente as etapas a serem cumpridas para utilização deste método são as mesmas do método de GaussJacobi Com elas determinamos a solução aproximada de um sistema linear usu fruindo desta metodologia Etapa 1 isolar a variável x1 na primeira linha x2 na segunda linha e x3 na terceira linha até xn na enésima linha Etapa 2 multiplicar a expressão encontrada pelo inverso do coefi ciente da incógnita referência da linha Etapa 3 realizar a primeira iteração aplicando a aproximação inicial informada no enunciado da questão Utilizar o valor mais recente associado às variáveis x1 x2 e x3 nas respectivas iterações Phillip Ludwig von Seidel 18211896 trabalhou como assistente de Jacobi solucionando problemas sobre sistemas lineares de equa CURIOSIDADE 142 ções diferenciais que provinham do trabalho de Gauss relacionados aos mínimos quadrados As técnicas iterativas hoje chamadas de Jacobi e GaussSeidel eram conhecidas por Gauss anteriormente no entanto os resultados de Gauss não eram muito divulgados Exemplo 6 calcule uma aproximação para a solução do sistema com três iterações x0 e precisão de três casas decimais para o sistema descrito por Utilizando o método de GaussSeidel Etapa 1 Etapa 2 Etapa 3 como a aproximação inicial é x0 logo x10 0 x20 0 e x30 0 basta substituir os valores e determinar a primeira va riável Como a variável foi atualizada será este o valor de x1 1 a ser utili zado juntamente com x3 de modo a determinar a próxima variável 143 Após a atualização será considerado x2 075 e x1 1 para a determinação da terceira variável Logo após a primeira iteração encontramos x1 Essas manipulações compõem a primeira iteração No en tanto a dinâmica sempre será essa de aproveitar o resultado mais recente da variável Para a segunda iteração encontraremos Assim após a segunda iteração encontramos x2 Contudo após a terceira iteração encontramos a solução aproxi mada correspondente a x3 Exemplo 7 calcule uma aproximação para a solução do sistema com três iterações x0 e precisão de três casas decimais para o sis tema descrito por 144 Utilizando o método de GaussSeidel Etapa 1 Etapa 2 Etapa 3 como a aproximação inicial é x0 logo x10 1 x20 1 e x30 1 Como esta variável foi atualizada será este o valor de x1 525 a ser utilizado juntamente com x3 de modo a determinar a próxima variável Após a atualização será considerado x23312 e x1 525 para a de terminação da terceira variável Logo após a primeira iteração encontramos x1 145 Prosseguindo nos cálculos uma vez que foram pedidas três itera ções Assim após a terceira iteração encontramos a solução aproximada correspondente a x3 Teoria da aproximação O estudo da teoria da aproximação envolve dois tipos gerais de problemas o primeiro ocorre quando uma função é dada de forma explícita mas o objetivo é encontrar uma maneira mais simples desta função como um polinômio que seja útil para determinar va lores aproximados desta mesma função Outro dilema consiste no ajuste dos pontos obtidos e a determinação da melhor função em certa classe para representar os dados A concepção geral da aproximação consiste na substituição do estudo de certos objetos matemáticos mais presentes em cálcu los elaboradoscomo por exemplo as funções contínuas ou seja aquelas que não detêm falhas na sua formação por outros mais simples tais como polinômiosque são expressões algébricas com postas por variáveis e coeficientes relacionados pelas operações de adição subtração multiplicação e expoentes inteiros não negativos de variáveis Basicamente a teoria da aproximação estuda diversos pro cessos para obter funções que se aproximem da melhor maneira possível dos pontos suscetíveis à análise Este é um conteúdo mui to extenso e complexo no entanto nesta unidade estudaremos a abordagem direcionada ao Método dos Mínimos Quadrados MMQ A necessidade de ajustar valores aproximados da função em algum ponto fora do intervalo de tabelamento valores resultantes de al gum experimento físico ou ainda oriundos de pesquisas a uma fun Ajuste de curvas 146 ção que tenha uma boa aproximaçãoé a motivação para realizar um ajuste de curva Mas o que seria essa curva E como realizar um ajuste da mesma Curva pode ser descrita por ser uma linha podendo ser modelada em diferentes formatos e estruturas que variam conforme o ângulo com que essa linha se arma sobre o espaço e sobre o plano já o ajus te como o próprio nome nos sugere consiste em adaptar essa linha a determinados pontos dispersos em um plano DEFINIÇÃO Observe o Diagrama 2 com a relação entre o nome da curva e seu respectivo grau Diagrama 2 tipos de curvas Método dos Mínimos Quadrados MMQ Considere a seguinte situação obter estimativas para os valores de uma função em pontos não tabulados ou sejadados experimentais Para tal tarefa utilizaremos a metodologia dos Mínimos Quadra dos que possui a capacidade de determinar as melhores retas de aproximação Conforme afirma Franco em seu livro Cálculo numéricode 2006 neste método há dois seguimentos que direcionam a pro cessos de resoluções diferentes o caso discreto em que a função é dada por uma tabela de valores e o caso contínuoque se trabalha com a função em seu formato algébrico 147 Iniciaremos com o caso discreto em que o problema de ajuste de curvas consiste no pressuposto da posse dos pontos xi fxi i 0123 n para encontrar funções gix tais que o desvio em cada ponto i seja mínimo ou seja φxa1 g1 xa2 g2 xan gn x Aproximese ao máximo da função fx A escolha das funções gix varia conforme o gráfico dos pon tos que recebe a denominação de diagrama de dispersão Por meio dele é possível visualizar o tipo de curva que mais se adequa aos pontos Gráfico 1 gráfico de dispersão O Método dos Mínimos Quadrados consiste em determinar os coeficientes a1a2a3a4 ande tal forma que a soma dos quadrados dos desvios seja mínimaou seja Quanto aos parâmetros a0 a1 que representam os coeficientes de um ajuste linearpara que ocorra o mínimo será necessário que estes atendam às igualdades 148 Consideraremos para a resolução dos exercícios o ajuste li near ou sejao ajuste dos pontos para uma reta que possui repre sentação algébrica dada por Px a1x a0 Exemplo 8 considere os dados apresentados na Tabela 1 e determi ne a reta de mínimos quadrados que aproxime estes dados Admita quatro casas decimais Tabela 1 dados numéricos De modo a facilitar a resolução do exercício vamos transpor a Tabela 1 ou sejaas linhas serão transformadas em colunas e as colunas em linhas além disso serão acrescentadas mais duas colu nas uma referente ao cálculo de xiyi e outra representando xi2 Uma última linha será colocada de maneira a tabular os resultados ou seja os somatórios de cada coluna Tabela 2 dados numéricos 149 De posse destes valores basta substituílos Observe Para finalizar substituímos na relação Px a1x a0 Px 15382x 036 Agora que finalizamos o modo de utilizar o Método dos Mí nimos Quadrados para dados discretos iniciaremos a abordagem para dados contínuos Nesta dinâmicaconsideraremos uma função y fx ϵ E Cab em que o objetivo será aproximar fx x ab por um polinômio de grau no máximo m PmxϵE Kmx ou seja fxa0 a1x amxm Pmx de maneira que a distância entre fx e Pmx seja mínima Logo será necessário encontrar a classe de todos os polinô mios de grau inferior ou igual a m Assim para aproximar uma função fx ab por um poli nômio Pmx degrau máximo m basta determinar a projeção orto gonal de fx sobre Kmx que é construído a partir de 1xx2xm Vale ressaltar que os coeficientes a0 a1x amxmde Pmx serão constituídos pelo vetor normal da solução do sistema linear isto é E admitindo que o produto escalar como Cab ou seja f g ab é Exemplo 9 admita uma função definida por fx x4 5x x 11 Aproxime essa função a um polinômio quadrático Inicialmente é necessário caracterizar um polinômio do segundo 150 grau Este é representado por A base para K2x será 1 x x2 logo o objetivo será solucio nar o sistema Como o produto escalar é C11 estes serão os intervalos que compõem a integral definida logo De posse destas informações conseguimos completar o sis tema linear para posteriormente determinar seus coeficientes 151 E por fim resolvendo o sistema linear Interpolação polinomial Um procedimento recorrente na matemática desde a Antiguidade é a necessidade de realizar estimativas de pontos intermediários a partir de dados precisos Para tal tarefa utilizamse as técnicas de aproximação polinomial Mas por que um formato polinomial Conforme Franco no livro Cálculo Numérico de 2013 os polinômios são facilmente computáveis suas derivada se integrais geram no vos polinômios além de suas raízes serem obtidas por procedimen tos simples quando comparadas a outros formatos Neste contexto existe o teorema de Weierstrass que reco nhece que toda função contínua pode ser arbitrariamente aproxi mada por um polinômio Basicamente um polinômio algébrico é descrito no formato Ruggiero e Lopes autores do livro Cálculo Numérico Aspectos Teóricos e Computacionais de 2013 descrevem as principais ocasiões em que a interpolação polinomial se faz necessária 152 Função extremamente complicada e de fatigante manejo É desconhecida a expressão analítica da função sendo conhe cidos apenas alguns de seus pontos O enigma principal de uma interpolação por polinômios con siste em dados n 1 pontos ou números distintos reais ou com plexos x0 x1 xn e n 1 números reais ou complexos y0 y1 yn números estes que geralmente são n 1 valores de uma função y fx em x0 x1 xn Será determinado um polinômio Pnx de grau máximo tal que A interpolação linear consiste na fórmula mais simples de in terpolação conectando dois pontos a uma reta É necessário ressal tar que o grau de um polinômio interpolador é uma unidade menor que a quantidade de pontos conhecidos Logo o polinômio interpolador de grau 1 é P1 x a1 x a0 E para determinar os coeficientes a0 e a1 é necessário que P1 x0fx0y0 e P1 x1fx1y1 Ou seja basta solucionar o sistema linear Já a interpolação quadrática também muito utilizada em di versos problemas se refere a uma função do segundo grau e neces sita de três pontos para sua constituição Seu polinômio interpola dor é descrito na forma P2 x a2 x2 a1 x a0 O objetivo agora será determinar os valores referentes aos coeficientes a0a1e a2 possibilitado pelas relações P2 x0fx0y0 e P2 x1fx1y1 e P2 x2fx2y2 Ou seja basta solucionar o sistema linear 153 Conforme verificamos um polinômio Pnx que interpola fx em x0 x1 xn é único Porém existe uma gama de métodos úteis para se obter tal polinômioUma das mais triviais é a montagem e posterior resolução de um sistema linearno entanto haverá situa ções em que tal procedimento será inviável Com isso recorreremos aos métodos de NewtonGregory e método de Lagrange Método de NewtonGregory Um método que viabiliza a determinação de polinômios é o chama do método de NewtonGregory Ressaltase que está metodologia só pode ser utilizada quando os pontos de xi forem igualmente espa çados ou seja a amplitude for constante Outra característica con siste no fato de que a fórmula de NewtonGregory do polinômio de interpolação permite passar de um polinômio de grau p para um po linômio de grau p1 adicionando um termo ao polinômio de grau p Para encontrar o polinômio segundo este algoritmo é neces sário compreender o seu fundamento que consiste na concepção de diferenças ordináriasMas o que isso nos sugere Que sejam x0 x1 xn n 1 pontos distintosigualmente espaçados em ab isto é xi1 xi h i 0 1 n 1 e sejam y0 y1 yn n 1 valores de uma função y fx Sobre x xk k 0 1 n definese Onde Δryké a diferença ordinária de y de ordem r em x xk Para calcular as diferenças ordinárias de uma função y fx sobre os pontos x0x1 xnigualmente espaçados de h é possível construir uma tabela de diferenças ordinárias De acordo com as orientações de Franco em sua já citada obra Cálculo Numérico é necessário seguir os seguintes passos A primeira coluna é constituída pelos pontos xi i 01 n 154 A segunda coluna deverá conter os valores de yk nos pontos xi i 01 n Nas colunas 3 4 5 estão as diferenças ordinárias de ordem 1 2 3 sendo que cada uma destas diferenças é basicamente a diferença entre duas diferenças ordinárias consecutivas e de ordem inferior Observe na Tabela 3 a seguir a representação deste algoritmo Tabela 3 algoritmo de NewtonGregory Nesta metodologia os resultados a serem utilizados na cons trução do polinômio de interpolação para argumentos igualmente espaçados de h são os primeiros valores de cada coluna de diferen ças embora seja imprescindível construir toda a tabela uma vez que os valores não são independentes um do outro O polinômio de interpolação uma vez que é gerado por Vamos entender na prática como funciona essa metodologia resolvendo o próximo exercício de exemplo Exemplo 1 a função y senx é definida pelos pontos apresentados na tabela abaixo Tabela 4 pontos para a função y senx do exemplo 1 Com base nessas informações a Calcule o polinômio interpolador b Determine sen145 155 Em problemas de interpolação polinomial uma vez determinado o valor de x sobre o qual se deseja uma estimativa é possível ava liar se a resposta encontrada pode estar correta ou não Mas como Bemverifique no exercício anterior que foi informado que sen14 0985 e sen15 0997 Como foi pedido sen145 esse valor deve estar compreendido entre 0985 e 0997 Essa análise não permite determinar com precisão se a resposta está correta porém funciona como um norte para orientar se o resultado pode estar correto ou não REFLITA Resolução a O primeiro passo consiste em transpor essa tabela ou seja trans formar linhas em colunas e viceversa assim como acrescentar as colunas referentes às diferenças ordinárias Tabela 5 tabela transposta com as diferenças ordinárias Agora calcularemos o valor de z Para tal tarefa é necessário identificar x0 12 bem como a amplitude que é encontrada por h 13 12ou h 14 13 ou h 15 14 01 logo A partir dos dados destacados em azul e de posse do corres pondente de zbasta substituir na relação Veja as manipulações al gébricas 156 b Agora para determinar sen145 basta substituir este valor no polinômio interpolador encontrado anteriormente Exemplo 2 Em um pedágio de uma rodovia federal foi computada a quantidade de carros que se movimentam de acordo com o horário Tais informações estão contidas na tabela a seguir observea a Utilizando três pontos ou seja uma interpolação quadrática de termine o polinômio interpolador que caracteriza a quantidade de carros às 11h30 Considere a amplitude em horas h 05 b Qual o número de carros estimado no horário de 13h Resolução 157 a Como o comando pede três pontos é necessário escolher três pontos que estejam próximos ao horário de 11h30 que será reescrito como 115 devido à amplitude equivaler a 05 logo Tabela 7 três pontos próximos ao horário de 11h30 Agora determinaremos o valor de z logo b Com o horário a ser estimado basta substituir esse valor no poli nômio interpolador P2 130921322071311743381 Dando continuidade aos métodos que permitem a determi nação de um polinômio interpolador conheceremos a seguir o mé todo de Lagrange Método de Lagrange O método de Lagrange consiste em outra opção que permite inter polar polinômios e se baseia em um algoritmo diferente que é am plamente utilizado uma vez que apresenta a vantagem de não ser necessário um espaçamento constante No entanto a manipulação algébrica é mais intensa Sendo x0 x1 xn n 1 pontos distintos Consideraremos k 01 n os seguintes polinômios Pkx de grau n 158 Onde os n polinômios são encontrados da seguinte maneira E assim sucessivamente até determinar a quantidade de po linômios referente à quantidade de pontos informados ou determi nados no comando da questão Lembrese que um polinômio de 1º grau necessita de dois pontos para a interpolação já um polinômio de 2º grau precisa de três pontos assim como um de 3 grau utiliza quatro pontos Apesar de receber o nome de JosephLois Lagrange estudiosos afirmam que a relação já era conhecida por Isaac Newton Ela foi publicada pela primeira vez por Edward Waring em 1779 Lagrange publicou essa descoberta em 1795 e se dedicou ao trabalho volta do para a interpolação Seus estudos exerceram forte influência na análise de matemáticos posteriores CURIOSIDADE Exemplo 3 Determine o polinômio interpolador de uma função que foi tabelada da seguinte forma Tabela 8 pontos tabelados de uma função Resolução Observe que estamos em uma situação que envolve três pontos dis tintoslogo será necessário encontrar p1x p1x1 p2x p2x2 p3x e p3x3 p1 xxx2 xx3 x0x1xx1x2x p1 x1 p1 1xx11112 159 p2 xxx1 xx3 x1x1x1x1x21 p2 x2 p2 00211 p3 xxx1 xx2 x1x0x1xx2x p3 x3 p3 11212 Logo o polinômio que interpola os pontos tabelados é Este é considerado de segundo grau ou seja P2x porque foram utilizados três pontos para esta análise De maneira geral o grau se refere à uma quantidade de n 1 pontos Exemplo 4 A resistência medida em kgcm2 de certa barra metáli ca fx varia de acordo com seu respectivo diâmetro A partir desta constatação estudiosos chegaram aos seguintes valores Tabela 9 valores de diâmetro e resistência Com base nos dados apresentados estime a resistência de uma barra que possui um diâmetro de 23 cm Resolução Como o comando se refere a um diâmetro de 23 cm logo este será o valor atribuído a x Com base nestas informações determinaremos os termos que compõem o polinômio de Lagrange respectivamente iguais a p1x p1x1 p2x p2x2 p3x e p3x3 160 Assim é possível concluir que para um diâmetro de 23 cm a resistência da barra será de 26 kgcm2 Lembrese que o valor en contrado se localiza no intervalo apresentado na tabela Tal analise é importante para avaliar se a resposta encontrada se enquadra nas informações disponibilizadas Equações diferenciais ordinárias Equações diferenciais são úteis para modelar problemas das mais diversas engenharias que envolvam a variação de alguma variável em relação a outraGrande parte destes exercícios requer a resolução de um problema de valor inicial ou seja solucionar um problema de equação diferencial que satisfaça a determinada condição inicial São exemplos de equações diferenciais 161 Uma equação diferencial pode ser classificada conforme sua linearidade e o grau de sua maior derivada Basicamente o formato algébrico de cada classificação pode ser descrito a seguir Figura 1 classificação de uma equação diferencial de acordo com sua ordem Nas situações cotidianas uma equação diferencial possui a capacidade de modelar uma situação extremamente complicada para ser exatamente solucionada e duas possíveis abordagens po dem ser utilizadas para estimar a solução A primeira abordagem se baseia na simplificação de uma equação diferencial de maneira a possibilitar outra resolução e com base nesta determinação é rea lizado novamente uma outra aproximação da equação diferencial inicialA segunda abordagem usufrui de métodos que possibilitam a determinação destas soluções para um problema de valor inicial Com relação às soluções referentes à resolução de uma equa ção diferencial estas podem ser chamadas de geral ou particular A primeira corresponde a uma resposta que apresenta uma constante indefinida na sua constituição enquanto na segunda modalidade 162 Método de Euler Leonhard Euler 1707 1783 foi o primeiro a apresentar ao público o uso de métodos de diferenças elementares para encontrar apro ximações de soluções de equações diferenciais por isso essa me todologia consiste em uma dedução simples Esse fato serve como base para compreender outras técnicas numéricas que permitem a determinação da solução de equações diferenciais Para explicar melhor o processo de resolução de uma equa ção diferencial ordinária EDO Gilat e Subramariam autores de Métodos numéricos para engenharia e cientistas de 2008 indicam uma associação a um sistema de EDOs composta por duas EDOs de primeira ordem formadas por duas variáveis independentesy z e a variável x como dependente Para um domínio ab e condições iniciais iguais a ya y1 e za z1 para um sistema de duas EDOs o Método de Euler é essa constante é determinada a partir da condição inicial estabele cida Os métodos que conheceremos a seguir são método de Euler e método de RungeKutta que permitem aproximar as soluções em determinados pontos específicos e frequentemente igualmente espaçados 163 O início da resolução parte de i 1 no primeiro ponto x1 uma vez que os valores de y1 e z1 são conhecidos Depois atribuído um va lor à h é possível descobrir o segundo ponto que compõe a solução os valores no lado direito da equação são conhecidosO processo da sequência parte de i 2 3 até o término do domínio da solução Exemplo 5 Resolva a equação diferencial Considere h 05x03 e y0 1 Resolução Inicialmente vamos compreender melhor as informações disponibilizadas h 05 ou seja o espaçamento entre os valores de x terá essa diferença x03 isto é o valor de x está compreendido entre 0 e 3 sendo estes valores espaçados conforme a amplitude y0 1 ou seja quando x 0 y 1 Inicialmente vamos construir uma tabela para visualizar quais valores de x devem ser encontrados Observe que o primeiro valor já foi informado por isso ele já deve ser inserido Tabela 10 valores de x a serem encontrados 164 Devemos determinar o respectivo valor para x 05 É importante ressaltar que ao se calcular f0 1 essa notação in dica a relação entre duas variáveis isto é que x é igual a 0 e y igual a 1 O ponto e vírgula possui essa funcionalidade de separar valores Como na função inicial dada por 2x3 12x2 20x 85 não existe a variável y só o valor de x deve ser substituído de modo a determinar o valor de f01 SAIBA MAIS Substituindo essas informações na relação indicada anterior mente encontramos Concluímos então que o segundo ponto é 05 525 Prosseguiremos o mesmo processo para o próximo valor de x Agora o valor de x será xi1xi05050510 Substituindo essas informações na relação indicada anterior mente encontramos Assim o terceiro ponto é 105875 Agora o valor de x será xi1xi05100515 Substituindo essas informações na relação indicada anterior mente encontramos 165 Assim o quarto ponto é 15 5125 Assim o quinto ponto é 2045 Assim o sétimo ponto é 305875 De posse destes valores completamos a tabela inicial e chegamos à solução aproximada da equação diferencial no intervalo proposto Tabela 11 solução aproximada da equação diferencial 166 Neste mesmo contexto o de determinar numericamente so luções aproximadas de uma equação ordinária conheceremos a se guir o Método de RungeKutta Método de RungeKutta No final do século XIX Carle Runge 1856 1927 deduziu diversas fórmulas para encontrar uma solução para equações lineares com problemas de valor inicial Esse método fornece respostas mais pre cisas que o método de Euller Os métodos de RungeKutta podem ser de segunda terceira e quarta ordemno entanto o mais utilizado é o de quarta ordem por isso será abordado aqui Nesta metodologia de resolução de EDO são desenvolvidas múltiplas estimativas da inclinação média melhorada do intervalo onde cada um dos quatro valores de K indica uma inclinação e a equação que relaciona esses valores consiste em uma média ponde rada que representa uma inclinação melhorada As fórmulas que viabilizam o cálculo segundo RungeKutta consistem basicamente em determinar quatro constantes K1 K2 K3 e K4 que juntas intermediadas por operações aritméticas possibi litam encontrar o valor associado à imagem Os valores que compõe o intervalo de xi são sempre previamente informados no enunciado do exercício e conforme a amplitude determinada ele é igualmente espaçado Neste contexto para valores posteriores ao informado ou seja baseado yio objetivo é encontrar yi1 A relação a ser utilizada é a seguinte 167 Possuindo essas constantes basta substituir em Já para posições anteriores à informada é necessário se orientar por outras fórmulas que são representadas por Conhecendo as constantes basta substituir em Tais cálculos serão necessários conforme o comando da questão por issoatentese Haverá situações em que será necessá rio descobrir apenas o termo anterior ao informado e outras vezes apenas o posterior ou até mesmo ambos Exemplo 6 Resolva a equação diferencial Considere h 0310 x 16 e y13 2176 Resolução Para descobrir quais componentes deverão ser encontrados será construída uma tabela conforme a demanda do intervalo inicial que é de 10 x16 e devidamente espaçado conforme a amplitude de h 03 de modo a facilitar sua compreensão Tabela 12 demanda do intervalo inicial 168 Para determinar yi1 é necessário encontrar as constantes K1 K2K3 e K4 logo Conhecendo os valores basta substituir em Assim acrescentando esse valor a tabela inicial Tabela 13 valores acrescidos à tabela inicial Agora só resta determinar o valor associado a yi1 Como no procedimento anterior o primeiro passo é determinar K1 K2 K3 e K4 porém cuidado Por causa da posição a fórmula que viabiliza tal cálculo é diferente 169 Uma vez conhecidos esses valores basta substituir em Assim a tabela referente à solução desta equação diferencial ordinária conforme as especificações iniciais é Tabela 14 solução final da equação diferencial Integração numérica Integrar numericamente uma função representada por y fx já é ato comumnão é mesmo Nos cálculos anteriores a integração foi uma tarefa recorrenteporém no contexto de métodos numéricos toda a manobra algébrica é diferenciada se comparada ao que está vamos acostumados anteriormente 170 Integrar numericamente uma função representada por y fx já é ato comumnão é mesmo Nos cálculos anteriores a in tegração foi uma tarefa recorrenteporém no contexto de métodos numéricos toda a manobra algébrica é diferenciada se comparada ao que estávamos acostumados anteriormente Porém haverá casos em que a primitiva Fx será de difícil obtenção ou desconhecida o que dificultará e muito o cálculo desta integral Em situações práticas a função a ser integrada não terá um formato analítico e estará exibida por pontos tornando mais uma vez inviável o cálculo da integral Neste contexto a integração nu mérica constituirá um recurso que viabilizará tal cálculo Basicamente a ideia da integração numérica consiste em transformar a integral proposta ou os dados dispostos em um po linômio de fácil integração Em Cálculo Numérico Franco enumera vantagens de se integrar um polinômio que aproxima y fx a fx pode ser de difícil integração como enquanto um polinômio é de integração imediata b A solução do resultado de uma integral é conhecida no entanto seu cálculo só é obtido aproximadamente como cSão conhecidos apenas os pontos discretos que representam a função Fórmulas de NewtonCotes utilizam valores de fx desde que estes sejam igualmente espaçados Fórmula de quadratura gaussiana utiliza pontos sem a necessi dade de existência de um espaçamento igual uma vez que este indi cador é determinado pelas propriedades dos polinômios ortogonais As fórmulas de NewtonCotes se baseiam na substituição de uma função de difícil manipulação ou de dados obtidos por um poli nômio simples As mais populares desta categoria de fórmulas e que serão utilizadas no decorrer desta unidade são a regra do trapézio 171 Regra do Trapézio A regra do trapézio trabalha aproximando pequenos trechos da cur va y fx por segmentos de reta igualmente espaçados em um in tervalo ab Observe sua representação geométrica pelo Gráfico 2 a seguir Gráfico 2 método do trapézio Fonte GILAT SUBRAMANIAM 2008 p293 A região entre a curva e o eixo x é aproximada por trapézios Calculando a soma das áreas dos trapézios encontrase o resultado equivalente à integral de fx De maneira geral esse cálculo é en contrado a partir da seguinte relação Onde todo trapézio possui uma largura h geralmente rela cionada com o número n de intervalos e calculada por a 1ª e a 2ª regra de Simpson Todas estas possuem uma caracterís tica em comum que consiste no fato de que os dados a serem inte grados são igualmente espaçados 172 É importante ressaltar que quanto maior o número de pontos disponíveis eou utilizados mais próximo será do valor real sem aproximações e menor será o erro incidido nos cálculos Exemplo 7 Calcule a integral a seguir utilizando 7 intervalos ou seja n 7Utilize três casas decimais Resolução Inicialmente é necessário descobrir o valor correspondente ao es paçamento existente neste intervalo logo Agora será construída uma tabela de maneira a calcular a integral para cada valor de x Tabela 15 cálculo da integral para cada valor de x Observe que o primeiro e último valor de x devem obrigato riamente coincidir com os limites da integral assim como a quan tidade de pontos deve ser igual à quantidade de intervalos contidos no enunciado na questão isto é 7 Agora basta substituir os valores na regra do trapézio 173 Esse exemplo caracterizou a situação de uma integral que possui um formato de difícil resolução No próximo exemplo co nheceremos o modo de resolver uma integral indicada pelos pontos Vamos lá Exemplo 8 Um carro consegue percorrer determinado trajeto em sessenta segundos A velocidade medida a cada intervalo de seis segundos foi identificada com o auxílio de um radar mensurado a partir do início da volta em metros por segundo Tais informações estão apresentadas na tabela a seguir Tabela 16 informações de tempo e velocidade Com base nas informações anteriores encontre o compri mento da pista utilizando a regra dos trapézios Resolução Como os dados já estão todos explicitados agora basta substituí los na regra do trapézio lembrando que o valor de h foi descrito no enunciado como seis Primeira Regra de Simpson A primeira regra de Simpson também popularmente chamada de regra do 13aproxima os pontos através de uma equação polinomial do segundo grau isto é um polinômio quadrático A demonstração da primeira regra de Simpson para a integração em um intervalo a b é realizada dividindo a b em um número par ou seja em um formato 2N de subintervalos de amplitude de maneira que 174 x0a x2N b Há uma restrição para utilização deste método que consis te no tamanho de seu Intervalo Este quando subtraído de um seu subintervalo deve ser múltiplo de dois Isto é se o tamanho do con junto equivale a quatro 4 1 3 Três não é divisível por 2 logo a regra não poderá ser aplicada Já para um conjunto composto por cinco elementos 5 1 4 e quatro é divisível por 2 então o uso da metodologia é viável A representação geométrica desta metodologia é indicada pelo Gráfico 3 Gráfico 3 primeira regra de Simpson Fonte GILAT SUBRAMANIAM 2008 p296 Algebricamente uma integral pode ser calculada pela pri meira regra de Simpson utilizando a seguinte relação Lembrando que a fórmula que calcula a amplitude continua a mesma ou seja Exemplo 9 Calcule o valor da integral a seguir aplicando a primeira regra de Simpson com sete intervalos e três casas decimais 175 Resolução Inicialmente é primordial identificar a amplitude que permitirá o espaçamento entre os pontos logo Agora conhecendo a amplitude como h 01 é possível construir uma tabela de modo a identificar o valor de y mediante o valor de x Tabela 17 identificando o valor de y mediante o valor de x O próximo e último passo consiste em substituir os valores obtidos da primeira regra de Simpson logo O resultado da Integral é de aproximadamente 01525 Exemplo 10 A velocidade de um foguete lançado do chão vertical mente para cima foi tabelada da seguinte maneira 176 Tabela 18 velocidade em pésseg com base em t segundos Utilizando a primeira regra de Simpson calcule a altura do foguete após 20 segundos Resolução Como os dados já foram tabelados basta substituílos na relação proposta pela primeira regra de Simpson É importante sempre identificar a amplitude através do espaçamento constante Nesse caso este valor equivale a cinco logo De modo semelhante à primeira regra de Simpson encontra remos a segunda regra de Simpson que é considerada a metodo logia com menos incidência de erro mas que conserva a base das regras aprendidas anteriormente Segunda Regra de Simpson A segunda regra de Simpson também é denominada regra dos 38 e consiste no fato de aproximar os pontos da tabela por equações cú bicas isto é de terceiro grau desde que o número correspondente a seus subintervalos ou n 1 seja divisível por três Para exem plificar conjuntos compostos por 4 7 e 10 pontos podem utilizar desta regra uma vez que 4 1 3 7 1 6 e 10 1 9 ou seja são múltiplos do algarismo três Em Cálculo Numérico Franco discorre que para generalizar esta metodologiaé necessário dividir o intervalo ab em um nú mero de subintervalos de amplitude h de maneira que x0 a x3N b Assim a fórmula que permite utilizar esta regra é indicada por 177 Não se esqueça que a relação que calcula a amplitude é A representação gráfica da segunda regra de Simpson pode ser verificada pelo Gráfico 4 a seguir Gráfico 4 segunda regra de Simpson Fonte GILAT SUBRAMANIAM 2008 p296 Agora que fomos apresentados à toda a teoria que fundamen ta a segunda regra de Simpson vamos praticála Exemplo 11 Calcule a integral a seguir utilizando N 7 e três casas decimais Resolução Calculando a amplitude encontramos Neste momento é possível elaborar uma tabela em que os elementos sejam devidamente espaçados conforme a amplitude encontrada 178 Tabela 19 elementos espaçados Agora basta substituir os valores na segunda regra de Simpson Exemplo 12 Os pontos de uma determinada função foram calcula dos e seus dados estão alocados na tabela a seguir Calcule a integral referente a estes pontos utilizando a segunda regra de Simpson e quatro casas decimais Resolução Como os pontos são conhecidos basta inserilos na relação asso ciada com a segunda regra de Simpson 179 Logo o resultado da integral representada pelos pontos dis postos na tabela apresentada possui como solução aproximada o valor de 05644 SINTETIZANDO Olá alunoa Neste objeto de aprendizagem aprendemos sobre os métodos iterativos Eles são caracterizados pela recursividade ou seja a repetição do mes mo processo são passíveis a erros de truncamento e indicados para so lucionar sistemas de grande porte Nesta dinâmica fomos apresentados ao método de Gauss Jacobi e ao método de GaussSeidel Com o objetivo de encontrar funções que aproximem pontos em um plano de maneira a transformálas em uma expressão algébrica de fá cil manipulação conhecemos o Método dos Mínimos Quadrados que é utilizado para gerar o que se chama em estatística de regressão linear ou ajuste linear As interpolações polinomiais são procedimentos de suma importância para realizar estimativas de valores intermediários a partir de dados precisos Foram apresentados dois métodos que viabilizam a interpo lação NewtonGregory e Lagrange Eles possuem a mesma eficiência porém se diferenciam pela necessidade ou não do espaçamento ser constante As equações diferenciais temática constante em problemas de enge nharia são calculadas de uma forma diferente A resolução pode ser feita utilizando diversos métodos e conhecemos dois deleso método de Euler e o método de RungeKutta que se assemelham no fato de serem métodos iterativos isto é necessitam do resultado anterior para a de terminação do posterior A integração numérica assim como as temáticas anteriores se distin gue das técnicas utilizadas no cálculo habitual São utilizadas quando as integrais são muito difíceis ou quando se retém apenas seus pontos constituintes Conhecemos a regra do trapézio e as duas regras de Simp son que viabilizam calcular estas integrais Sucesso em sua trajetória profissional 180 Referências Bibliográficas UNIDADE 1 ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS NBR 5891 Re gras de arredondamento na numeração decimal Rio de Janeiro 2014 AMARAL T R LEITE N M G SILVA AO O ensino de Cálculo Nu mérico utilizandoo Scilab In VI Congresso Internacional de Ensi no da Matemática 2013 Canoas BARROSO L C et al Cálculo Numérico com aplicações 2 ed São Paulo EditoraHarbra 1987 BRANCAGLIONE M Conexões da matemática da física à física da matemáticaDisponível em httpstinyurlcomyb8mgbaz Acesso em 17 maio 2020 CAMPOS F F F Algoritmos numéricos Rio de Janeiro LTC 2001 COMPUTER HISTORY MUSEUM CHM decodes technology for everyone Disponívelem httpscomputerhistoryorg Acesso em 17 maio 2020 CORMEN T H et al Algoritmos teoria e prática 3 ed Rio de Janei ro Campus 2012 COSTA A Erros e algarismos significativos Gazeta da Física Pedroso 2015 Disponívelem httpswwwspfptmagazines GFIS94article651pdf Acesso em 08out 2019 DALCÍDIO D M MARINS J M Cálculo Numérico computacional teoria e prática2 ed São Paulo Editora Atlas 1994 DÉCIO S MENDES J T MONKEN L H Cálculo Numérico São Paulo Makron Books 2003 EDELWEISS N LIVI M A C Algoritmos e programação com 181 exemplos em Pascal e C Porto Alegre Bookman 2014 FRANCO N B Cálculo Numérico São Paulo Pearson Prentice Hall 2006 HOW the pascaline works Postado por MechanicalComputing 9min 51s son color ing Disponível em httpswwwyoutube comwatchv3h71HAJWnVU Acesso em 17 maio 2020 HUMES M Y M Noções de Cálculo Numérico São Paulo Ed Mc Graw Hill 1984 KLÜBER T E Modelagem Matemática revisitando aspectos que justificam a sua utilização no ensino Brandt CF Burak D Klüber TE orgs sl pp 4158 2016 LICENCIATURA em computação Notação Ponto Flutuante Prof Gilberto Farias Postado por VideosUFPBVirtual 10min 21s color son port Disponível em httpswwwyoutubecomwatchtimeconti nue10vpsyH7eBVLr4 Acesso em 31 out 2019 O JOGO da imitação trailer Postado por Cinemaginando 2min 31s son color leg Disponível em httpswwwyoutubecom watchvNM4GZ3NQvxQ Acesso em 17 maio 2020 RAMOS D M C ARAUJO W B OLIVEIRA A R Aplicação de méto dos numéricosatravés ambiente gráfico no ensino de engenharia In XXVIII Encontro Nacional deEngenharia de Produção 2008 Rio de Janeiro RUGGIERO M A G LOPES V L R Cálculo Numérico aspectos teóricos e computacionais2 ed São Paulo Pearson Makron Books 1996 UNIDADE 2 ASCENCIO Ana F G CAMPOS Edilene A V Fundamentos da pro gramação de computadores algoritmos PASCAL CC padrão 182 ANSI e JAVA 3ª ed São Paulo Pearson Education do Brasil 2012 BACKES André Linguagem C recurso eletrônico completa e descomplicada Rio de Janeiro Elsevier 2013 DEITEL Harvey M DEITEL Paul J Como programar em C 6ª Ed Pearson 2011 LAWISCH André Linguagem de Programação CDisponível em httpsecivilufesfileswordpresscom201103apostilacouc pdf PARREIRA JÚNIOR Walteno Martins Curso Básico de Programa ção em Linguagem C Disponível em httpwaltenomartinscom bralgdadosapostilapdf PINHEIRO Francisco A C Elementos de programação em C Por to Alegre Bookman 2012 SCHILDT Herbert C completo e total 3ª edição revisada e atua lizada São Paulo Makron Books 1996 UNIDADE 3 AMARAL T R LEITE N M G SILVA A O O Ensino de Cálculo Numérico Utilizando o Scilab Disponível em httpwwwcon ferenciasulbrabrindexphpciemvipaperviewFile1232373 Acesso em 22 nov 2019 BARROSO L C et al Cálculo numérico com aplicações 2 ed São Paulo Editora Harbra 1987 CAMPOS F F F Algoritmos numéricos Rio de Janeiro LTC 2001 DALCÍDIO D M MARINS J M Cálculo numérico computacional teoria e prática2 ed São Paulo Editora Atlas 1994 DÉCIO S MENDES J T MONKEN L H Cálculo numérico São Paulo Makron Books 2003 FRANCO N B Cálculo numérico São Paulo Pearson Prentice Hall 2006 183 HUMES M YOSHIDA M Noções de cálculo numérico São Paulo McGraw Hill1984 KLÜBER T E Modelagem matemática revisitando aspectos que justificam a sua utilização no ensino Disponível em http booksscieloorgidb4zpq03 Acesso em 22 nov 2019 RAMOS D M C ARAUJO W B OLIVEIRA A R Aplicação de mé todos numéricos através ambiente gráfico no ensino de enge nharia Disponível em httpwwwabeproorgbrbibliotecaene gep2008tnstp07854412278pdfAcesso em 22nov 2019 RUGGIERO M A G LOPES V L R Cálculo numérico aspectos teóricos e computacionais2 ed São Paulo Pearson Makron Books 2010 SILVA Z SANTOS J D Métodos numéricos 3 ed Recife Univer sitária 2010 SPERANDIO D MENDES J T SILVA L H M Cálculo numérico características matemáticas e computacionais dos métodos nu méricos São Paulo Pearson PrenticeHall 2003 UNIDADE 4 AMARAL T R LEITE N M G SILVA A O O Ensino de Cálculo Nu mérico Utilizando o Scilab In CONGRESSO INTERNACIONAL DE ENSINO DA MATEMÁTICA6 2013 Canoas AnaisCanoas CIEM 2013 ARENALES S DAREZZO A Cálculo Numérico Aprendizagem com apoio de software São Paulo Thomson Learning 2008 BARROSO L C et al Cálculo Numérico com aplicações 2 ed São Paulo Editora Harbra 1987 CAMPOS FILHO F F Algoritmos Numéricos LTC Rio de Janeiro 2001 CHAPRA S C CANALE RP Métodos numéricos para engenharia 5 ed Porto Alegre AMGH 2011 184 DÉCIO S MENDES J T MONKEN L H Cálculo Numérico São Paulo MakronBooks 2003 FRANCO N B Cálculo Numérico São Paulo Pearson Prentice Hall 2006 GILAT A SUBRAMANIAM V Métodos numéricos para engenha ria e cientistasPorto Alegre Booman 2008 HUMES A F P C et al Noções de Cálculo numérico São Paulo Mc Graw Hill1984 RAMOS D M C ARAUJO W B OLIVEIRA A R Aplicação de méto dos numéricos através ambiente gráfico no ensino de engenharia In ENCONTRO NACIONALDE ENGENHARIA DE PRODUÇÃO 28 2008 Rio de JaneiroAnaisRio de Janeiro ENEGEP 2008 RUGGIERO M A G LOPES V L R Cálculo Numérico Aspectos teóricos e computacionais 2 ed São Paulo Pearson Makron Books 1996