Você está na página 1de 20

Introduo

Introduo ao Clculo Numrico e Computacional


Introduo
O Clculo Numrico consiste na obteno de solues aproximadas de problemas de
lgebra Linear e No-Linear, Estatstica e Anlise de Dados, Clculo Diferencial e Integral e
outros mtodos matemticos, utilizando mtodos numricos. Com a popularizao de
computadores de baixo custo e de alta capacidade de processamento, praticamente todas as
atividades de Engenharia tem feito uso cada vez mais intensivo dos mtodos e tcnicas
computacionais na resoluo de problemas reais, para os quais as solues manuais so
impraticveis e/ou imprecisas.
Desta forma, o uso do computador como ferramenta de trabalho de clculo numrico
requer o entendimento dos seus princpios de operao e de como eles interferem nos resultados
obtidos. Geralmente, aceito como verdade que computadores no erram e que so os usurios
que cometem enganos que levam ao mal funcionamento do computador. Na realidade, o
computador, como dispositivo de clculo numrico, comete erros devido s suas caractersticas
intrnsecas e o papel do usurio quantificar esses erros e encontrar formas de, se no eliminlos, pelo menos minimiz-los.

Hardware e Software
Hardware o termo em ingls empregado para designar todo e qualquer componente,
parte e sistema, capaz de realizar um processamento computacional, isto , um processamento de
modificao e controle de dados numricos. Exemplos de hardware so o computador, suas
partes, componentes e perifricos (monitor de vdeo, disco magntico, impressora, etc). Um
computador constitudo pelas seguintes unidades:
unidade central de processamento (CPU - Central Processing Unit): responsvel pela
execuo de instrues e pelo controle da operao de todas as unidades do computador.
unidade de armazenamento de instrues e dados, que pode ser dividida em unidade
primria, para armazenamento em tempo de execuo (memria RAM - Random Access
Memory) de curta durao e unidade de armazenamento secundria, de longa durao, uma
memria permanente constituda pela memria ROM (Read-Only Memory), pelos discos
magnticos (floppy disk e disco rgido) e pelos discos pticos (CD-ROM, CD-RW) e
magneto-pticos.
unidades de entrada e sada (I/O - Input/Output), cuja funo primria a entrada e sada
de dados do computador. Exemplos de dispositivos de entrada de dados so o teclado, o
mouse, microfone e joystick, enquanto que dispositivos de sada tpicos so o monitor de
vdeo, caixa de som e impressora. Exemplos de perifricos que funcionam como dispositivos
de entrada e sada de dados so a tela de vdeo sensvel ao toque (touch screen) e o modem,
usado para comunicao de dados entre computadores atravs de uma linha telefnica.
Atualmente, a capacidade dos computadores superam e muito as suas especificaes e
propsitos de uso original. Os computadores so capazes no apenas de armazenar, tratar e gerir

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

informaes em quantidade e velocidade, so capazes tambm de proverem comunicao entre


computadores e outros dispositivos eletrnicos digitais, tais como telefones, fax e televisores; so
capazes de aceitar, manipular e apresentar informaes na forma de voz, som, imagem, vdeo e
texto; permitem o controle de outros dispositivos eletrnicos digitais, tais como semforos,
sistema de trfego areo (radares, torre de controle, mesa de operao), sistema de comunicaes
(telefonia digital), sistemas bancrios (caixa eletrnico, terminal de consulta, mesa de operao) e
inmeras outras aplicaes essenciais para a vida cotidiana. A penetrao da computao na vida
diria se d de tal forma, que aparelhos eletrodomsticos comuns, como torradeiras, mquina de
fazer caf so dotadas de um computador embutido num componente integrado miniaturizado e a
tendncia que o computador de mesa que conhecemos hoje se torne um eletrodomstico que vai
comandar os outros aparelhos eletrodomsticos.
Os programas de computador so um conjunto de instrues que comandam o hardware.
O software, por sua vez, designa um programa ou um conjunto de programas, capazes de atuar,
modificar e controlar o processamento de dados lgicos e numricos pelo computador. Existem
trs tipos de software:
sistemas operacionais e firmware: os sistemas operacionais so programas de computador
que contm todas as instrues para o controle e a operao do computador. Exemplos de
sistemas operacionais so o MS-DOS, Windows-9x (95, 98, ME e XP/Home), Windows NT,
200 e XP/Professional e o UNIX e suas variantes (Linux, FreeBSD, Solaris, Mac-OSX, etc)
que "rodam" em diversas plataformas de hardware. A maioria dos sistemas operacionais prov
uma interface de usurio grfica (GUI - Graphical User Interface), de modo a facilitar a
operao do computador sem a necessidade de memorizao de comandos. O firmware um
conjunto de instrues que informa ao sistema operacional quais so os componentes de
hardware que esto instalados no computador. Normalmente, o firmware um conjunto de
instrues que vem gravado numa memria ROM do tipo CMOS (Complementary Metal
Oxide Semiconductors) instalada na placa-me. Em microcomputadores do tipo PC o firmware
tambm chamado de BIOS (Basic Input-Output System) a que muitos tcnicos se referem
como CMOS (por causa do tipo de memria).
linguagens de programao: so as ferramentas para a construo de softwares, tanto para
sistema operacional como para aplicaes. Todos os programas que rodam num computador
so feitos partir de uma linguagem de programao. Existem diversas linguagens de
programao, incluindo os seus dialetos que, geralmente, so constitudos por extenses da
linguagem feitos por um fabricante de software em particular. Exemplos de linguagens de
programao so: FORTRAN (linguagem de uso cientfico), COBOL (linguagem de uso
comercial), BASIC, Pascal, C, C++ e Java. Existem linguagens de programao
implementadas dentro de um software de aplicao e que so denominados scripts, como o
VisualBasic for Applications (VBA), que a linguagem script encontrada nos programas de
processamento de texto Word, planilha Excel e banco de dados Access, todos integrantes do
pacote de software Office da Microsoft. Outros programas que, originalmente foram criados
como programas de aplicao com recursos de programao script, como os softwares de
gerenciamento de banco de dados, evoluram para linguagens de programao de banco de
dados, como o caso da linguagem SQL, desenvolvida pela IBM e pelo programa Oracle da
empresa homnima.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

software aplicativo: programas de computador desenvolvidos para o usurio final, podem ser
classificados como software de aplicao. Os softwares de aplicao geralmente so programas
desenvolvidos para uma aplicao especfica como, por exemplo, um software de controle de
contas a pagar e receber ou um software de planilha eletrnica ou de processamento de texto.
Na medida em que o hardware foi evoluindo (processadores mais velozes, memrias e discos
com maior capacidade de armazenamento, etc), os programas aplicativos foram evoluindo
englobando diversas tarefas e agregando outros programas num "pacote", como o MS Office.
Na Fig. 1.1 esquematizado, em nvel hierrquico, a relao entre hardware, software e o
usurio (ser humano). Quanto mais inferior o nvel, mais ele se aproxima do nvel puramente
fsico em que enxergamos um computador como sendo um conjunto de componentes eletrnicos,
placas de circuito e gabinetes, sem uma funo lgica (e inteligente) a faz-lo funcionar. medida
que subimos nos diversos nveis, aproxima-nos do nvel puramente lgico, representado pela
inteligncia criadora do computador, o ser humano. Neste nvel, estamos numa camada mais
abstrata em que os conceitos so baseados na lgica e no raciocnio para criarmos os programas
que iro interagir com o nvel fsico. Um programa de computador , na essncia, um conjunto de
instrues transcritas para a linguagem do computador da inteligncia (abstrata) do seu criador.
Usualmente, ele confundido pelo disquete no qual armazenado, mas na realidade trata-se de
uma entidade lgica relacionada com a capacidade intelectual do seu autor em descrever de forma
algoritmica a sequncia para a consecuo de uma atividade executada pelo computador.
SER HUMANO
APLICATIVO
APLICATIVO
INTERFACE GRFICA (GUI)
LINGUAGEM DE PROGRAMAO (COMPILADOR)

NVEL DE
ABSTRAO

SISTEMA OPERACIONAL

NVEL
FSICO

FIRMWARE (BIOS)
HARDWARE

COMPUTADOR

Fig. 1.1 - Modelo hierrquico para um computador.

Arquitetura de Microcomputador
Um computador essencialmente uma mquina de processamento de dados. Ele recebe
dados ou requisio de informaes, processa-os e fornece as informaes ou dados requisitados
de modo ordenado, digerido e reduzido, em forma de tabelas, grficos, imagens, texto, som, etc.
Um microcomputador um tipo de computador no qual a unidade central de
processamento (CPU) constituda por um circuito integrado de uso genrico de ultra alta escala
de integrao (ULSI - Ultra Large Scale of Integration) denominado microprocessador. Devido
sua disponibilidade, o microcomputador vem encontrando inmeras aplicaes em diferentes
Clculo Numrico e Computacional

C.Y. Shigue

Introduo

reas, como na comunicao de dados, em redes de computadores, como sistema de aquisio de


dados e de controle de instrumentao nas reas cientfica, mdica e industrial, como videogame e
centro de entretenimento. Internamente, um microcomputador organiza-se da forma
esquematizada na Fig. 1.2.
CPU
UNIDADE
LGICA E
ARITMTICA
(ALU)

MEMRIA
UNIDADE
DE
CONTROLE

APENAS DE LEITURA
(ROM)

barramento interno

ACESSO DIRETO
(RAM)

MEMRIA
INTERNA
CACHE

PERIFRICOS
DISCOS MAGNTICOS
MONITOR DE VDEO
TECLADO, MOUSE

SADA

ENTRADA

DADOS

Fig. 1.2 - Arquitetura de um microcomputador.


Um microprocessador um circuito integrado de elevadssimo grau de integrao,
contendo milhes de transistores, constitudo basicamente por trs unidades:
i. Unidade de Controle: obtm as informaes que esto armazenadas na memria principal,
interpreta-as e d sequncia s operaes para as outras unidades para executar as instrues;
ii. Unidade Lgica e Aritmtica: unidade que realiza as operaes lgicas e aritmticas. As
operaes lgicas principais so a multiplicao lgica (AND lgico), adio lgica (OR
lgico), negao lgica, inverso ou complementao lgica (NOT lgico), alm de outras
operaes como NAND, NOR, XOR, etc. As operaes aritmticas so a adio, subtrao,
multiplicao, diviso e deslocamento.
iii. Memria interna cache: realiza operao de armazenamento da parcela de dados da memria
principal mais requisitadas, com a finalidade de aumentar a velocidade de acesso aos dados
entre a CPU e a memria principal.
Outras unidades podem ser agregadas na pastilha do circuito integrado para aumentar a
velocidade de processamento e melhorar o desempenho do processador.
A Fig. 1.3 mostra a arquitetura do microprocessador Pentium da Intel, com tamanho
tpico de circuito de 0,6 m e contendo mais de trs milhes de transistores. Observar que o
processador de operaes flutuante (Pipelined floating point) e o processador de operaes
inteiras (Superscalar integer execution units) so unidades adicionais, que tem como justificativa
a capacidade de processamento superescalar e vetorial, caractersticas essas de
supercomputadores, bem como suporte a unidade de processamento de operaes com nmeros
complexos (Complex instruction support) que melhoram o desempenho do computador na
execuo de diversas tarefas simultaneamente (processamento paralelo multitarefa) e no

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

processamento numrico intensivo (como na gerao de grficos 3-D, execuo de sons no


formato MP3 e exibio de vdeo digital).

Fig. 1.3 - Esquema do circuito do microprocessador Pentium.


A memria usada para armazenar instrues e dados operados pela CPU. Existem dois
tipos de memria: memria ROM e memria RAM. A memria ROM ou memria apenas de
leitura (Read-Only Memory) armazena principalmente as informaes que necessitam ficar
armazenadas permanentemente, como aquelas relativas ao hardware (tipo e quantidade de discos
magnticos, tipo de controladora de vdeo, endereamento e quantidade de memria). A memria
RAM ou memria de acesso direto (Random-Access Memory) um tipo de memria voltil, isto
, as informaes armazenadas nela so temporrias e se perdem quando o computador
desligado. A memria RAM utilizada principalmente para armazenar dados e instrues
relativos aos programas a serem executados e que ficam disponveis apenas durante o tempo de
execuo.

O Computador Digital
Desde os primrdios da Computao, nos anos 40, at os dias de hoje, os computadores
vm sofrendo um contnuo processo de desenvolvimento. Entretanto, o princpio fundamental de
operao do computador no mudou, desde o ENIAC em 1945 e o EDVAC em 1952, que foi o
primeiro computador integralmente eletrnico. Os computadores atuais so digitais (isto ,
processam as informaes utilizando nmeros binrios) que processam os dados e as instrues
na CPU, com armazenamento na memria. Este modelo computacional deve-se ao matemtico
John Von Neumann, que estabeleceu os princpios dos computadores atuais e que por isso
tambm so chamados de computadores Von Neumann. Pelo fato de operarem no formato
numrico binrio, significa que os nmeros de base decimal a que estamos familiarizados devem
ser convertidos no seu correspondente binrio. Da mesma forma, o alfabeto e os smbolos
grficos (!?,.%$#<> etc) tambm devem ser convertidos em seu equivalente codificado em
binrio.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

Fig. 1.4 - John Von Neumann e


o computador EDVAC, o
primeiro computador digital do
mundo.
A quantificao da informao armazenada e processada por um computador feita
atravs do byte (simbolizado pela letra B maiscula), que igual a 8 bits (simbolizado pela letra b
minscula). Em termos aproximados, um byte equivalente um caracter, e a informao
quantificada em termos de mltiplos de bytes, que so potncias de 2, como veremos adiante, e
esto apresentados como ordens de grandeza do byte, como descrito a seguir:
1 kB = 210 bytes = 1.024 bytes = 8.192 bits = 8 kb
1 MB = 220 bytes = 1.048.576 bytes = 1.024 kB
1 GB = 230 bytes = 1.073.741.824 bytes = 1.048.576 kB = 1.024 MB
Assim, um computador que contenha uma unidade de disco magntico de 650 MB de
capacidade, capaz de armazenar 650 x 1.048.576 = 681.574.400 bytes de informao, ou o
equivalente a aproximadamente 681 milhes de caracteres, ou o equivalente a 180 mil pginas ou
a cerca de 400 volumes de livros ou o equivalente a 40 volumes da Enciclopdia Britannica
contendo somente texto. Para efeito de comparao, 650 MB tambm a capacidade de
armazenamento de um CD-ROM. O equivalente em CD a um arquivo de som digital cerca de
75 minutos de gravao e equivalente 100 imagens fotogrficas coloridas de mdia definio
(600 dpi - dpi = pontos por polegada).

Linguagens de Computador
No incio da Computao, a programao era realizada atravs da abertura e fechamento
de vlvulas eletrnicas por meio de chaves que controlavam a passagem de corrente pelas
vlvulas. Era uma tarefa essencialmente de manipulao fsica do hardware (Fig. 1.5).

Fig. 1.5 - "Programando" o ENIAC.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

partir dos anos 50, com o desenvolvimento das linguagens de programao, que iniciouse primeiramente com as linguagens de mquina (baseadas em codificao por nmeros binrios,
0 e 1), at as linguagens mais naturais como o FORTRAN e o COBOL, a programao de
computadores vm se afastando do nvel fsico e se torna cada vez mais uma atividade "abstrata"
em que um algoritmo escrito em linguagem mais prxima humana (da o nome, linguagem
"natural") tornando a programao codificao de uma seqncia de instrues baseada numa
linguagem de descrio de comandos. As primeiras linguagens foram projetadas para realizao
de tarefas especficas e foram evoluindo para linguagens de uso geral e hoje, se observa
novamente uma tendncia de dispor-se de linguagens de uso especfico.
seguir, listamos as principais linguagens de programao.
FORTRAN
Uma das mais antigas linguagens de programao, o FORTRAN que um siglnimo de
FORmula TRANslator, foi projetado para ser uma linguagem para manipulao de operaes
matemticas, originalmente em computadores mainframe. Na poca em que foi criado, a
programao era feita em cartes perfurados, um para cada instruo do programa,
caracterstica essa que influenciou numa srie de comandos que permanecem como herana
at hoje. Embora seja uma das linguagens mais antigas, o FORTRAN evoluiu juntamente com
a informtica e hoje, a verso padronizada mais recente, o FORTRAN-90 possui uma srie de
recursos disponveis nas linguagens mais modernas e mantm uma grande comunidade de
programadores em todo o mundo ainda desenvolvendo programas cientficos e de engenharia
altamente complexos e sofisticados. Por essas caractersticas, ainda o FORTRAN a lingua
franca de inmeros cientistas e engenheiros.
COBOL
O COmmon Business Oriented Language ou COBOL a linguagem desenvolvida na mesma
poca do FORTRAN para criar programas de aplicao comercial, que envolvem a criao e
manipulao de informaes comerciais disponveis em banco de dados, usando uma
linguagem de comandos em ingls. Devido ao fato de ser uma linguagem com capacidade de
manipulao de registros de dados comerciais, a sua capacidade de manipulao matemtica
limitada s operaes aritmticas bsicas.
Pascal
A linguagem Pascal deve esse nome ao filsofo, matemtico e fsico francs Blaise Pascal, a
quem Niklaus Wirth, professor do Instituto Tcnico Federal (ETH) da Sua, criador dessa
linguagem homenageou. O Pascal foi projetado como uma linguagem de ensino de
programao, da a sua ampla aceitao em crculos acadmicos de todo o mundo como a
primeira linguagem a ser ensinada em cursos de programao para estudantes de cincias
exatas. A sua construo fora aos alunos aprenderem e programar de forma estruturada e
modular. Outra vantagem que o Pacal foi desenvolvido para ser independente da plataforma
de hardware e do sistema operacional.Assim, um programa escrito num computador poderia
ser compilado sem modificao em outro tipo de computador, com diferente processador e
sistema operacional.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

BASIC
A linguagem BASIC, que o acrnimo de Beginner's All-purpose Symbolic Instruction
Code, tal como a linguagem Pascal, tambm foi criada para o ensino de programao de
computadores em nvel introdutrio no Darthmouth College, EUA. No incio, o BASIC foi a
primeira linguagem interpretada disponvel para uso geral e uma das primeiras a serem
disponveis pela ento recm-criada empresa produtora de software Microsoft nos primeiros
microcomputadores fabricados na dcada de 1970. A rpida popularizao dos
microcomputadores nos anos seguintes tambm popularizaram a linguagem BASIC entre os
jovens aficionados por jogos eletrnicos em computador, resultando numa gerao de
programadores que aprendeu o BASIC como primeira linguagem de programao.
Atualmente, a linguagem Microsoft Visual BASIC uma das linguagens mais utilizadas na
programao em ambiente Windows.
Linguagem Assembly
A linguagem Assembly uma linguagem de representao simblica da linguagem de mquina
de um processador em particular, sendo por isso, considerada uma linguagem de baixo nvel,
isto , de nvel hierrquico prximo ao fsico. Assim, cada processador tem sua linguagem
assembly prpria, apesar de que uma famlia de processadores, tais como a famlia Intel
80x86, pode compartilhar parte ou o todo de seu cdigo assembly. Em portugus, as
linguagens assembly so tambm denominadas linguagens montadoras (assembler em ingls).
C
Nos idos anos 60 e incio dos 70 era comum os programadores criarem suas prprias
linguagens de programao partir de cdigos assembler, por no haver a cultura de
comercializao do software como um produto independente do hardware como hoje. Uma
dessas linguagens experimentais foi denominada linguagem "A", que aps alguns
aperfeioamentos deu origem linguagem "B". Esta linguagem, por sua vez, naturalmente
evoluiu para o que hoje conhecemos como linguagem "C". O fato da linguagem ter evoludo e
encontrado grande aceitao entre os programadores deriva do fato dela ser uma linguagem
ao mesmo tempo simples e poderosa, capaz de programar o hardware em nvel de linguagem
de mquina ao mesmo tempo que possibilita uma construo sinttica prxima linguagem
natural. Ela foi criada por Kerninghan e Ritchie, pesquisadores do Laboratrio Bell dos
Estados Unidos, como linguagem de desenvolvimento do sistema operacional Unix. Como
este sistema foi adaptado para uma ampla variedade de plataformas de hardware quer foram
adotados pela maioria dos fabricantes de computadores utilizados em aplicaes crticas
(bancos de dados, processadores de comunicao, gerenciadores de redes) a linguagem C
ganhou grande popularidade entre os programadores de sistema e de aplicaes sofisticadas.
C++
No final dos anos 80 com o aumento da capacidade do hardware, os desenvolvedores de
software no conseguiam acompanhar o ciclo de desenvolvimento com a mesma rapidez da
evoluo do hardware, ocasionando o que se chamou de crise do software. Para fazer frente
ao aumento da complexidade na criao dos softwares, os cientistas da computao
elaboraram os conceitos de objetos e de programao orientada a objects , que determinaram

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

um novo paradigma de programao que as linguagens de programao da poca, como a


linguagem C padro (o chamado ANSI-C), no tinham suporte estrutura lgica desse novo
paradigma. Devido ao fato da linguagem C ser (e ainda ) a linguagem de desenvolvimento
mais utilizada pelos programadores profissionais, um tipo de extenso da linguagem proposto
por Bjarne Stroustrup do mesmo Laboratrio Bell onde foi criado a linguagem C foi
desenvolvido. Esta linguagem denominada C++ retro-compatvel com programas escritos
em linguagem C, ao mesmo tempo que adota uma estrutura para o desenvolvimento de
programas de acordo com o paradigma de orientao a objetos.
Linguagens Scripting
As linguagens scripting existem desde os anos 60. Entretanto, o poder e sofisticao dessas
linguagens aumentou dramaticamente nos ltimos anos. Combinando com o avano na
tecnologia de hardware, o uso de linguagens scripting ampliou o horizonte de aplicaes para
um sem nmero de tarefas. As linguagens scripting foram criadas para funcionar como "cola"
na integrao de componentes de software e aplicaes criados em linguagens de
programao convencionais, como as descritas anteriormente. Elas avanaram no vcuo da
crise de software dos anos 80 e funcionaram e tm funcionado como uma mola propulsora na
criao de aplicativos grficos e distribudos, que hoje mantm em funcionamento parcela
significativa dos sites comerciais da internet. seguir, relacionamos algumas linguagens
scripting mais utilizadas.
Shell Unix (sh, csh, ksh, etc)
O sistema operacional tm uma linguagem de comandos que possui a sintaxe da linguagem C
e que possibilita a digitao de comandos interativamente. A estas linguagens scripting de
linha de comando denomina-se shell. O primeiro shell do sistema operacional Unix foi criado
no incio dos anos 70 e uma srie de outros shells (csh, ksh, bash, etc) foram criados para
automatizar tarefas rotineiras de operao e administrao do Unix. Um dos aspectos que
tornam o Unix poderoso e singular a sua capacidade de criar novas aplicaes partir da
composio de diferentes aplicaes j existentes e que, talvez seja uma das razes da
popularidade do Unix como plataforma de desenvolvimento de software entre os
desenvolvedores profissionais.
Perl
Criado por Larry Wall no final dos anos 80 com a finalidade de colocar em um nico lugar as
funes de muitas aplicaes de processamento de texto Unix, tais como sh, sed e awk, o Perl
(acrnimo de Practical Extraction and Report Language) rapidamente se tornou uma das
ferramentas mais utilizadas pelos administradores de sistemas de informao. Com a chegada
do WWW (internet com interface grfica), o Perl adquiriu fama como linguagem para
construo de scripts para pginas Web dinmicas, isto , que se atualizam com o acesso dos
usurios.
Tcl
Criada por John Ousterhout no fim dos anos 80 como uma linguagem de comandos embutvel
para uso como ferramenta interativa. Completa-o a ferramenta de construo de interface
Clculo Numrico e Computacional

C.Y. Shigue

Introduo

10

grfica Tk. O Tcl e o Tk so disponveis para todas as principais plataformas de hardware e


software, sendo uma ferramenta essencial na criao de aplicativos multiplataforma. Hoje, a
linguagem Tcl usada para uma ampla variedade de uso, desde gerao automtica de
contedo para internet, at gerenciamento de sistemas, passando por automao de projeto
eletrnico.
Visual Basic
A linguagem da Microsoft pode ser considerada ao mesmo tempo como linguagem de
programao de sistema e como linguagem scripting. Conforme mencionado anteriormente,
ela se popularizou como ferramenta para criao rpida de aplicativos (em ingls, RAD Rapid
Application Development), baseado na interface grfica do Windows. A combinao do
Visual Basic e da linguagem de componentes scripting VBX (atualmente denominado
ActiveX) a fora motriz por detrs de inmeros sites de comrcio eletrnico da internet
baseados na tecnologia de software ASP (acrnimo de Active Server Pages) que executa
todas as tarefas de gerao de pginas HTML dinmicas e de administrao de banco de
dados. Esse sucesso em grande parte devido facilidade de integrao propiciada pelo
Visual Basic.
Python
O Python uma linguagem orientada a objetos dinmica, criada por Guido van Rossum no
incio dos anos 90 como uma proposta de facilitar o aprendizado de uma linguagem de
programao e ao mesmo tempo prover uma ponte entre entre o shell e a linguagem C. uma
linguagem elegante, com uma sintaxe fcil de aprender, portvel como o Tcl, com o qual
compartilha a ferramenta GUI Tk e com uma extensa biblioteca de suporte matemtico,
grfico e multimdia. fcil de estender para diversas aplicaes e ser embutido em C/C++, o
que tem contribudo para a sua popularizao. Originalmente projetada como uma linguagem
scripting avanada, tm encontrado novos usos como ferramenta RAD para a Web, bem
como para aplicaes distribudas.
JavaScript
Criada no meio da dcada de 90 pela Netscape para executar scripts embutidos em pginas
HTML, como por exemplo, validao de preenchimento de formulrios. O JavaScript se
tornou um padro de facto para scripts executados no lado do cliente. Embora no tenha
relao com a linguagem Java, compartilha com a sintaxe dos principais funes e tipos de
dados.
Java
O Java, originalmente desenvolvido por Bill Joy da SUN como uma linguagem de
programao de dispositivos eletrnicos programveis, encontrou o seu nicho de aplicao na
Web como linguagem de gerao de pseudo-cdigos compilados orientados a byte e no a
bits e independente de plataforma. Para ser executado, o Java pode rodar tanto do lado do
cliente, quando o cdigo denominado applet, quanto do lado do servidor, quando
denominado servlet o programa compilado Java. Para ser executado no lado do cliente

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

11

necessrio que o navegador (browser) Web tenha instalado a mquina virtual Java (JVM Java Virtual Machine) que o interpretador de cdigo orientado a byte do Java.
PHP
A linguagem PHP (um acrnimo recursivo para PHP: Hypertext Preprocessor) uma
linguagem scripting de uso geral, muito utilizada para o desenvolvimento de aplicaes Web
embtivel dentro de documentos HTML. Ela foi criada por Jamus Ledorf em 1995,
inicialmente como simples script Perl para gerar estatsticas de acesso para seu currculo
online. Ele nomeou esta srie de scripts como Personal Home Page Tools (da veio o nome
PHP originalmente). Como mais funcionalidades foram requeridas, Rasmus escreveu uma
implementao C muito maior, que era capaz de comunicar-se com base de dados, e
possibilitava usurios desenvolver simples aplicativos dinmicos para Web. O que distingui o
PHP de outras linguagens script, como Javascript que embora o comando esteja escrito na
pgina HTML, o cdigo executado no servidor. Se o script estiver no servidor, o cliente
recebe os resultados da execuo desse script, sem determinar como o cdigo fonte. Por
causa dessa caracterstica e tambm pela integrao com programas open source como o
MySQL (gerenciador de banco de dados) e Apache (servidor WWW), o PHP muito
utilizado na administrao de sites com contedo dinmico.

Nveis de Linguagens de Programao


Existe apenas uma linguagem de programao que qualquer computador pode entender e
executar: o seu cdigo de mquina nativo. Este o mais baixo nvel em que se pode escrever um
programa de computador. Todas as outras linguagens de programao so chamadas de
linguagens de alto nvel ou de baixo nvel em funo do seu grau de semelhana com a linguagem
de mquina em termos de recurso e de sintaxe.
Assim, uma linguagem de baixo nvel corresponde linguagem de mquina, de modo que
uma instruo nessa linguagem corresponde a uma instruo em cdigo de mquina. J uma
instruo em linguagem de alto nvel corresponde a uma srie de instrues em linguagem de
mquina. Em termos gerais, o nmero de instrues em linguagem de mquina equivalente a uma
instruo em linguagem de alto nvel denominada pontos de funo.
As linguagens de baixo nvel tem a vantagem de poderem ser escritas com instrues que
acessam diretamente s particularidades da arquitetura da unidade central de processamento
(CPU) tornando, assim, o programa extremamente eficiente, otimizando o uso tanto da memria
RAM como do processador em s. Entretanto, escrever um programa em linguagem de baixo
nvel demanda um tempo significativamente maior e requer um conhecimento mais aprofundado
das caractersticas internas do processador, alm do cdigo estar mais sujeito a falhas plea maior
complexidade de programao. Portanto, programao em linguagem de baixo nvel utilizada
em programas pequenos ou em segmentos de cdigo em linguagem de alto nvel para otimizar o
desempenho de partes crticas do programa.
As linguagens de alto nvel permitem o desenvolvimento rpido de programas. Em
comparao com os programas escritos em linguagem de baixo nvel, o desempenho pode no ser
to bom, mas a economia de tempo na programao supera a menor eficincia na execuo pelo
fato do custo operacional mais elevado residir no desenvolvimento de software e no na upgrade
do hardware. Como regra bsica, o custo para escrever um programa aproximadamente
Clculo Numrico e Computacional

C.Y. Shigue

Introduo

12

constante para cada linha do cdigo, independentemente da linguagem, de forma que escrever
uma linha de instruo em programa escrito em linguagem de alto nvel, que equivale a dez linhas
de cdigo escrito em linguagem de baixo nvel, representa um custo de 1/10 do custo do
programa escrito em linguagem de baixo nvel.

Representao de Nmeros
Os nmeros empregados no clculo computacional podem ser de dois tipos: nmeros
inteiros e nmeros em ponto flutuante (que representam os nmeros reais da Matemtica). Os
computadores atuais representam os nmeros internamente no formato binrio, como seqncia
de 0s e 1s. Apesar dessa representao ser conveniente para as mquinas, anti-natural para os
seres humanos, cujo sistema de numerao natural o decimal. A seguir, apresentamos a
representao de nmeros decimais e binrios e os mtodos de converso de um sistema a outro.

Sistema de Numerao Decimal


O sistema de numerao decimal o sistema natural, adotado em todas operaes
matemticas cotidianas. Este sistema de base 10, no qual todos os mltiplos e submltiplos so
expressos como potncias de 10. Por exemplo, os seguintes nmeros decimais podem ser escritos
como uma combinao linear de potncias de 10:
1537 = 1x103 + 5x102 + 3x101 + 7x100

(1.1)

36,189 = 3x101 + 6x100 + 1x10-1 + 8x10-2 + 9x10-3

(1.2)

6,032x1023 = 6x1023 + 0x1022 + 3x1021 + 2x1020

(1.3)

Observar que a posio relativa de cada algarismo indica a potncia pela qual ele est
multiplicando. Assim, de acordo com esta conveno, o algarismo 3 do exemplo (1.1), que est
na 2a posio contar da direita para a esquerda, est multiplicando 101. O algarismo 7 (unidade)
do mesmo exemplo chamado de algarismo menos significativo e o algarismo 1 (milhar) o
algarismo mais significativo. O algarismo 3 o 2o algarismo significativo e o 5 o 3o algarismo
significativo.
De acordo com os exemplos acima, qualquer nmero decimal pode ser escrito na forma
geral como:
N = anbn + an-1bn-1 + an-2bn-2 + ... + a0b0 + a-1b-1 + ... + a-mb-m

(1.4)

onde N um dado nmero na base b e an, an-1, etc representam os coeficientes que multiplicam
as correspondentes potncias de b. Assim, N = anan-1...a0,a-1 a-2...a-m na representao usual
(implcita). Detalhe importante a observar o de os coeficientes que multiplicam potncias de b
cujos expoentes sejam < 0 esto separados por uma vrgula daqueles coeficientes cujos expoentes
de b sejam 0.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

13

Sistema de Numerao Binrio


Atualmente, em que pese a nossa familiaridade com o sistema de numerao decimal, este
tipo de representao numrica inadequado para a representao da informao em
computadores digitais. Os computadores digitais operam basicamente com dois tipos de sinais de
tenso: alto e baixo. Matematicamente, pode-se expressar estes valores por 0 (baixo) e 1 (alto).
partir de um esquema de representao binria por valores de 0 e 1 podemos expressar qualquer
quantidade numrica. Vejamos os seguintes exemplos de nmeros decimais representados como
potncias de 2:
2,510 = 1x21 + 0x20 + 1x2-1

(1.5)

98,7510 = 1x26 + 1x25 + 0x24 + 0x23 + 0x22 + 1x21 + 0x20 + 1x2-1 + 1x2-2

(1.6)

Observar que o ndice 10 em 2,5 e 98,75 indica que esses nmeros so decimais.
Utilizando a frmula de representao expressa pela equao (1), podemos reescrever os
dois exemplos numricos acima como:
2,510 10,12
98,7510 1100010,112
Como no caso dos nmeros decimais, a posio relativa de cada algarismo binrio indica a
potncia pela qual ele est multiplicando. Igualmente os coeficientes que multiplicam potncias de
2 cujos expoentes sejam < 0 esto separados por uma vrgula daqueles coeficientes cujos
expoentes de 2 sejam 0.

Converso de Nmeros Decimal-Binrio


Para convertermos um nmero decimal para um nmero binrio devemos aplicar um
mtodo para a parte inteira e outro para a parte fracionria. Para a parte inteira, aplicamos o
mtodo das divises sucessivas, que consiste em se dividir o nmero decimal por 2, em seguida
divide-se o quociente obtido por 2 e assim sucessivamente, at que o ltimo quociente encontrado
seja 1. O nmero binrio inteiro ser, ento, formado pela concatenao do ltimo quociente com
os restos das divises no sentido contrrio ao que foram obtidos.
Por exemplo, vamos converter o nmero decimal 23:
23

11

Clculo Numrico e Computacional

23
=
10

10111
2

C.Y. Shigue

Introduo

14

Outro exemplo,
15

15
=
10

01111 = 1111
2
2

Notar que neste exemplo necessitamos apenas de quatro dgitos binrios para descrever
1510, pois o zero `a esquerda de 11112 no siginificativo.
Para converter um nmero fracionrio de base decimal para base binria aplicamos o
mtodo das multiplicaes sucessivas. Ele consiste nas seguintes etapas: multiplicamos o nmero
fracionrio por 2; deste resultado, a parte inteira ser o primeiro dgito do nmero fracionrio
binrio e parte fracionria ser novamente multiplicada por 2. O processo repete-se at que a
parte fracionria do ltimo produto seja zero.
Como exemplo, tomemos o nmero decimal 0,1875:
0,1875
x 2

0,3750
x 2

0,75
x 2

0,50
x 2

0,3750

0,750

1,50

1,00

0,1875
= 0,0011
10
2

Outro exemplo,
0,1
x 2

0,2
x 2

0,4
x 2

0,8
x 2

0,6
x 2

0,2
x 2

0,2

0,4

0,8

1,6

1,2

0,4

0,1

10

= 0,0001100110011...

... e os produtos
continuam.

Como mostrado neste exemplo, nem sempre um nmero decimal exato possui uma
representao binria exata. Este fato a principal causa de erros de arredondamento no clculo
numrico em computadores digitais.
A converso de bases para um nmero decimal que contm parcela inteira e parcela
fracionria constituda por duas partes distintas sobre as quais so aplicadas as respectivas
regras de converso:
23,187510 = 10111,00112

Representao Binria em Ponto Flutuante


Em computao digital, um dgito binrio denominado bit (do ingls, binary digit). Um
grupo de oito bits corresponde a 1 byte. Nos computadores digitais, a representao dos nmeros
binrios feita com um nmero finito de bits. A esse tamanho de bits dado o nome de palavra
de computador. O tamanho da palavra de computador depende de caractersticas internas
arquitetura do mesmo. Em geral, os microcomputadores padro PC tem o tamanho de palavra de

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

15

16 e 32 bits. Computadores com arquitetura mais avanada possuem tamanho de palavra de 64


bits ou mais.
O tamanho de palavra de computador tem a seguinte implicao: quanto maior o tamanho
da palavra, mais veloz e mais preciso ser o computador. Para entender como o tamanho de
palavra afeta a preciso e, consequentemente, os erros de arredondamento do clculo
computacional, veremos a representao de nmeros reais binrios em notao de ponto
flutuante.
Um nmero binrio em ponto flutuante (nmero real) representado da seguinte forma:
sinal da caracterstica
sinal da mantissa

caracterstica

mantissa

Pela norma IEEE-754 do Instituto dos Engenheiros Eltricos e Eletrnicos (IEEE), o


dgito mais esquerda (tambm chamado de dgito mais significativo - em ingls, MSB) o sinal
da caracterstica: 0 (positivo) e 1 (negativo). Os dgitos seguintes representam o valor binrio da
caracterstica seguido pela mantissa. O nmero de bits da caracterstica obtido pela diferena
entre o tamanho da palavra de computador e o nmero de bits da mantissa que se seguem
caracterstica, sendo que o primeiro bit da mantissa representa o seu sinal. A conveno para o
sinal da mantissa o mesmo da caracterstica, isto , 0 positivo e 1, negativo.
Os nmeros em ponto flutuante no formato IEEE tem a seguinte representao:

Preciso simples
Dupla preciso

Tamanho
(bytes)
4
8

No de bits
de sinal
1
1

No de bits do
expoente
8
11

No de bits da
mantissa
23
52

Bias
127
1023

Bit de sinal
O bit de sinal apresenta zero como nmero positivo e um como nmero negativo.

Expoente (caracterstica)
O campo do expoente precisa representar tanto nmeros positivos como nmeros
negativos. Para fazer isto, um valor bias adicionado ao expoente para obter o expoente
armazenado no computador. Para a norma IEEE o valor de 127 para varivel em preciso
simples. Assim, um expoente significa que 127 armazenado no campo do expoente. Um valor
armazenado de 200 indica um expoente real de (200 127) ou 73. Expoentes armazenados de
127 e +128 so usados para fins especiais.

Mantissa
A mantissa representa os bits de preciso de um nmero. Qualquer nmero pode ser
expresso em notao cientfica. Por exemplo, o nmero cinco pode ser representado em qualquer
uma das seguintes formas:

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

16

5.00 x 100
0.05 x 102
5000 x 10-3
Por convenincia, os nmeros em ponto flutuante so armazenados na forma normalizada.
Em notao cientfica, a forma normalizada de representar o nmero cinco como 5.0 x 100,
enquanto que na notao de ponto flutuante, a parte inteira no representada, de modo que o
nmero cinco representado na forma normalizada como 0.5 x 101.

Tipos de Dados Numricos no Computador


Os tipos de dados numricos no computador representados na linguagem C so
equivalentes aos tipos numricos de outras linguagens, como o FORTRAN, o BASIC e o Pascal.
Tipo INTEIRO
Representa os nmeros inteiros, empregando 1, 2 ou 4 bytes, de acordo com o tamanho
do nmero que desejamos expressar.
Tipo

Denominao

bytes

Faixa

Algarismos
significativos

short
int
long

inteiro curto
inteiro
inteiro longo

1
2
4

-128 a 127
-32.768 a 32.767
-2.147.483.648 a 2.147.483.647

3
5
10

Tipo REAL
Os nmeros fracionrios ou decimais so representados como nmeros reais, cuja notao
empregada a de nmero com ponto decimal fixo ou ponto flutuante. A vantagem deste ltimo
permitir expressar nmeros muito pequenos ou nmeros muito grandes de forma automtica.
Existem dois tipos de nmeros reais de acordo com a sua preciso: 1) Preciso simples, com 4
bytes e 2) Dupla preciso, com oito bytes. A tabela seguinte apresenta os tipos representativo dos
nmeros reais.
Tipo

Denominao

bytes

Faixas de valores

Algarismos
significativos

float

Preciso simples

double

Dupla preciso

-3,4028235.1038 a -1,1754944.10-38
1,1754944.10-38 a 3,4028235.1038
-1,797693134862316.10308 a
-2,225073858507201.10-308
2,225073858507201.10-308 a
1,797693134862316.10308

Clculo Numrico e Computacional

15

C.Y. Shigue

Introduo

17

Aritmtica Computacional e Erros Computacionais


Quando realizamos clculo manualmente, os erros de arredondamento da calculadora so
desprezveis, porque a quantidade de clculo que podemos operar pequeno. No computador,
geralmente, a quantidade de operaes aritmticas que se pode realizar muito maior do que
aquelas realizadas manualmente, de forma que o erro de arredondamento do dispositivo de
clculo se torna importante. Outro problema que no clculo manual temos controle da
propagao do erro porque, visualmente, estamos conferindo o resultado de cada operao
aritmtica ao digit-lo na calculadora. No computador no temos como checar cada operao,
tendo em vista a velocidade com elas so realizadas e tambm pela quantidade, que impossibilita a
conferncia dos resultados das operaes aritmticas. Desta forma, a verificao dos resultados e
o controle sobre a propagao de erros em programas de computador essencial para se atingir
resultados consistentes e confiveis.
As seguintes consideraes tem que ser levadas em conta ao se realizar clculos numricos
no computador:
A aritmtica computacional no a mesma coisa que a aritmtica base de lpis e papel. No
clculo manual sempre possvel monitorar os resultados intermedirios e ajustar a preciso
dos clculos. Na aritmtica computacional, cada nmero tem uma quantidade de algarismos
fixas que muitas vezes podem ser inadequadas para o clculo repetitivo;
O clculo manual usualmente realizado para um pequeno nmero de operaes aritmticas,
enquanto que o clculo computacional pode envolver bilhes de operaes aritmticas. Assim,
pequenos erros que poderiam passar despercebidos no clculo manual, podem arruinar
completamente o resultado do clculo computacional, por causa da acumulao e propagao
de erro.
Impreciso intrnseca da representao binria em ponto flutuante
Todo o nmero inteiro decimal pode ser representado exatamente por um nmero inteiro
binrio; porm, isto no verdadeiro para nmeros fracionrios. Na realidade, todo o nmero
decimal irracional tambm ser irracional no sistema binrio. No sistema binrio, apenas nmeros
racionais que podem ser representados na forma p/q, no qual q uma potncia inteira de 2,
podem ser expressos exatamente com um nmero de bits finito. Mesmo fraes decimais comuns,
tal como o nmero decimal 0,0001 no podem ser representados exatamente em binrio (0,0001
uma frao binria repetitiva com perodo de 104 bits!).
Um programa simples de soma de nmeros decimais fracionrios, como o seguinte:
void main()
{
int i;
float soma = 0.;
for(i=1;i<=10000;i++)
soma = soma + .0001;
printf("Soma = %10.7f", soma);
}

apresentar o nmero 1.0000535 como sada ao invs do nmero exato 1. O pequeno erro de
representao do nmero decimal 0,0001 em binrio se propagar pela soma, comprometendo o
resultado da soma final.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

18

Definio de erro absoluto e erro relativo


Erro absoluto
erro absoluto = |valor verdadeiro - valor aproximado|
ex = x = |xexato - xaprox|
Podemos representar, matematicamente, xaprox = x e xverdadeiro = x, de modo que
x = |x - x |
Erro relativo
O erro relativo o erro absoluto dividido pelo valor verdadeiro:
erro relativo =

x | x x|
=
x
x

e que, frequentemente, expresso tambm como erro percentual, multiplicando-se o erro relativo
por 100:
erro percentual = erro relativo x 100

Tipos de Erros
Erro de arredondamento
Os erros de arredondamento so causados pela limitao dos dispositivos empregados no
clculo numrico como, por exemplo, uma rgua de clculo que possui uma limitao geomtrica,
uma calculadora eletrnica com nmero de dgitos limitado no display ou mesmo um
computador com o erro de representao de um nmero decimal no seu equivalente binrio.
Por exemplo, consideremos o nmero decimal exato 0,110, cujo equivalente binrio
representado pela dzima . 1111112 ... Para um computador com tamanho de
palavra de 16 bits, o nmero decimal 0,110 armazenado como:
0,110 . 11111112 = 0,09999084410
de modo que o erro de arredondamento dado por:
erro absoluto = |0,1 - 0,099990844| = 0,000009155 9.10-6
Erro por estouro de memria (Overflow) e Underflow

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

19

A varivel numrica real em preciso simples (default) pode conter no mximo o nmero
1038 e no mnimo 10-38, como visto anteriormente. O erro de overflow ocorre quando o
resultado de uma operao aritmtica excede o valor de 3,4028235.1038. Analogamente, o erro de
underflow ocorre para uma varivel real em preciso inferior a 1,1754944.10-38.
A multiplicao e a diviso podem acarretar erro de overflow como de underflow. O
caso mais extremo de overflow na diviso acontece quando ocorre uma diviso por zero, mas,
geralmente, tal tentativa provoca uma interrupo na execuo do programa com a emisso de
um aviso pelo programa de overflow.
Erro de Truncamento
O erro de truncamento um erro devido ao mtodo de aproximao empregado para o
clculo de uma funo exata. Por exemplo, considere a expanso da funo exponencial em sries
de potncia da forma:
x2 x3
+
+
2! 3!

ex = 1 + x +

Por se tratar de uma srie infinita, devemos escolher um nmero de termos limitado da
srie para que possamos computar o valor numrico da funo ex. Escolhemos aproximar a srie
infinita por uma srie contendo trs termos, isto , pela aproximao:
ex 1 + x +

x2
2!

No importa a quantidade de algarismos significativos que utilizemos no clculo de ex pela


srie truncada, o resultado ser sempre aproximado e, portanto, sempre ter um erro, que
denominado erro de truncamento.
Exemplo
Calcule o valor numrico de e1 = e (nmero de Euler) empregando a srie truncada de 2a ordem:
e1 1 + 1 +

12
= 1 + 1 + 0,5 = 2,5
2!

Sabendo-se que o valor exato do nmero de Euler com quatro algarismo significativos igual a
2,718, podemos avaliar o erro de truncamento como:
erro absoluto = |2,718 - 2,500| = 0,218
ou, em termos do erro percentual, como:
erro = (0,218/2,718) x 100 = 8,0%

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

20

Referncias Bibliogrficas Online


Bjarne Stroustrup FAQ (Frequently asked questions)
http://www.research.att.com/~bs/bs_faq.html
Tcl website
http://dev.scriptics.com/doc/scripting.html
Histria do Perl
http://www.perl.org/press/history.html
Python language
http://www.python.org
A histria do PHP e projetos relacionados
http://www.php.net/manual/pt_BR/history.php
Java
http://java.sun.com/
Notao de nmeros em ponto flutuante IEEE Standard 754
http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html
Desastres causados por erro de clculo numrico
http://www.ima.umn.edu/~arnold/disasters/

Clculo Numrico e Computacional

C.Y. Shigue

Você também pode gostar