Escolar Documentos
Profissional Documentos
Cultura Documentos
1 - Intro
1 - Intro
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
C.Y. Shigue
Introduo
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
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
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
C.Y. Shigue
Introduo
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.
C.Y. Shigue
Introduo
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).
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.
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
C.Y. Shigue
Introduo
C.Y. Shigue
Introduo
10
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.
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.
(1.1)
(1.2)
(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.
C.Y. Shigue
Introduo
13
(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.
11
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
C.Y. Shigue
Introduo
15
caracterstica
mantissa
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:
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.
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
15
C.Y. Shigue
Introduo
17
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.
C.Y. Shigue
Introduo
18
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
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!
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%
C.Y. Shigue
Introduo
20
C.Y. Shigue