Home
Introdução à Organização e à Programação de Computadores
Contents
1. Figura 99 Uma bifurca o de um cabo de 8 bits em um de 5 bits outro de 2 e um terceiro de 1 bit de largura O ret ngulo esquerda uma amplia o do painel de atributos da bifurca o O Logisim oferece ainda bifurca es splitters que permitem dirigir os bits de um cabo com largura maior para outros de largura menor como mostrado na Figura 99 2 3 2 Barramentos e Controle de Fluxo de Dados D Bus de cd ow mo GO SE IS a re e e T S o 1 ERR cia EO EEEE mii T a BUS Cc NET mm lin Bus o Figura 100 Um barramento conectando uma entrada de 8 bits e tr s registradores Nos circuitos que vimos at agora um cabo s pode ser usado para conectar uma sa da de um componente a uma ou mais entradas de outros componentes Essa restri o vem por um lado da falta de sentido l gico nesse tipo de conex o se uma das sa das tem 0 e outra 1 qual valor fica no barramento Por outro lado vem tamb m dos circuitos reais se uma de duas sa das conectadas a um cabo tem o valor O e outra tem o valor 1 temos uma voltagem alta ligada diretamente a uma voltagem baixa ou seja um curto circuito Um componente especial o controlled buffer permite fazer esse tipo de liga o o que simplifica muito o desenho de circuitos Diversas sa das podem ser conectadas a um nico cabo se essas conex es passarem por um controlled buffer Este cabo compartilhado recebe o nome de barramento Todo controlled buffer tem como o
2. Figura 245 Obtendo uma matriz identidade com a fun o eye Matrizes com elementos rand micos s o muito teis para programas que fazem simula es de eventos aleat rios como a chegada de um carro em uma fila A fun o rand gera matrizes onde cada elemento um n mero entre 0 e 1 sorteado a cada chamada da fun o A Figura 246 mostra dois exemplos de uso desta fun o gt m rand 2 3 m 00 2113249 0 00022 0 6653811 0 7560439 0 3303 0 6283918 gt n rand 2 3 n 0 8497452 0 8782165 0 5608486 0 6857310 0 0683740 0 6623569 Figura 246 Matrizes rand micas Algumas vezes conveniente gerar matrizes aleat rias com valores inteiros entre digamos O e 100 Isto se faz com um comando como m int rand 2 3 100 muito til para quem como o autor destas linhas necessita com frequ ncia de exemplos de matrizes com valores inteiros A fun o int retorna a parte inteira de seu argumento Figura 247 Construindo matrizes por justaposi o de matrizes j existentes poss vel construir matrizes a partir de matrizes j existentes Se xe y s o matrizes x y denota uma nova matriz com y ao lado de x e x y denota uma matriz com y abaixo de x como mostrado na Figura 247 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 133 0 7173561 0 9995736 0 6754632 Figura 248 Gerando um vetor como resultado da aplica o de um
3. y Figura 253 Gr fico com v rias curvas obtido com plot2d 0 1 9 10 A Figura 253 mostra um gr fico obtido dessa forma Repare que o vetor x um vetor coluna e que como na Figura 247 a matriz cujas colunas s o mostradas no gr fico construida por justaposi o dos vetores coluna sin x sin 2 x esin 3 x 3 2 7 Matrizes de Strings e Arquivos Matrizes podem ter strings como valores de seus elementos como mostram os exemplos na Figura 254 Rich agr el 52 gt b g1 waa b s1 1S2 Figura 254 Exemplos de matrizes de strings Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 136 poss vel ler um arquivo e transformar cada uma de suas linhas em um elemento de um vetor coluna de strings Para isso deve ser usado o comando mget 1 da onde da um descritor de arquivo j aberto fpath uigetfile da mopen fpath r linhas mgetl da mclose da Figura 255 Leitura de um arquivo como um vetor coluna de strings usando o comando mgetl A Figura 255 mostra um uso t pico do comando mget 1 precedido pela localiza o e da abertura do arquivo e seguido pelo fechamento do arquivo gt linhas linhas IE agora Jos IA festa acabou ta luz apagou lo povo sumiu ta noite esfriou le agora Jos le agora voc Ivoc que sem nome que zomba dos outros Ivoc que fa
4. Figura 74 Tabela da verdade pronta Agora s clicar sobre Build Circuit e o circuito SomaUm est pronto Confira com a tela da Figura 75 o circuito que voc construiu Logisim Somalm of Untitled Edk Project Samulste Window Help e ale e gt D titled a2 H jGates Fang East pR No Bit width 1 Thres state No aul Behavior Unchanged Label ao abel Loca North abel Font SansSer Figura 75 Circuito SomaUm obtido automaticamente Teste o seu circuito com os valores bin rios correspondentes aos valores decimais 2 5 e 7 verificando se as sa das interpretadas como bin rios sem sinal correspondem a 3 2 1 6 5 1 e O pois ho 1115 importante voc reparar que o Logisim criou o circuito SomaUm como um sub circuito o que indicado no painel de navega o veja a seta na Figura 75 N s vamos agora utilizar o SomaUm como um componente para construir o circuito SomaTr s o que pode ser feito ligando tr s circuitos SomaUm em cascata Para isto clique com o bot o direito do mouse sobre o sub circuito main e escolha View Circuit Voc ver um circuito vazio Agora clique com o bot o esquerdo do mouse sobre o sub circuito SomaUm e coloque no painel de desenho 3 bloquinhos conforme a figura abaixo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 46 O bloquinho o circuito SomaUm representado aqui como um m
5. Mas a parte central do programa o loop destacado em vermelho na figura A vari vel fat inicializada com o valor 1 Na primeira passagem pelo loop i igual a 1 e fat recebe o valor 1 1 Na segunda passagem i iguala 2 e fat recebe o valor 1 2 igual a 2 na terceira passagem fat recebe o valor 2 3 igual a 6 na quarta passagem o valor 6 4 igual a 24 na quinta 24 5 e assim por diante Ou seja pelo fato de a cada passagem fat receber como valor seu valor anterior multiplicado por i na i sima execu o do corpo do for fat passa a conter o fatorial de i Como o loop termina com i igual a n o valor de fat na sa da do loop o fatorial de n Tabela 18 Tabela de Senos Vamos agora usar o comando for para a constru o de uma tabela como a Tabela 18 com x variando de Oa 27 de 0 2 em 0 2 Antes por m vamos aprender mais sobre o comando for cuja forma geral est mostrada na Figura 184 for lt vari vel gt lt inicial gt lt passo gt lt limite gt lt bloco for gt end Figura 184 Forma geral de um comando for Aqui lt inicial gt lt passo gt e lt limite gt s o express es que controlam os valores atribu dos vari vel indexadora lt vari vel gt a cada itera o do loop e tamb m a condi o de parada do loop Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 109 for i 1 2 10 printf Nai end 1
6. gin sc Figura 285 O programa TestaSoma sce agora com getf importante notar que os arquivos TestaSoma sce e Soma sci devem estar em um mesmo diret rio e este deve ser o diret rio corrente do Scilab A tela abaixo mostra uma poss vel sa da deste programa gt exec C Documents and SettingslusuariolDesktopiScilablTestaSoma sce disp exec done Figura 286 Uma poss vel sa da do programa TestaSoma sce 3 3 3 2 Menor Valor Presente em um Vetor Neste exemplo n s iremos desenvolver uma fun o que encontra o menor valor presente em um vetor O primeiro passo tamb m a escrita do cabe alho da fun o que pode ser visto na Figura 287 function m Minimo A Encontra o menor valor presente no vetor A endfunction Figura 287 Cabe alho da fun o Minimo Nossa fun o tem portanto e um nome significativo Minimo e um par metro formal de entrada A que deve ser um vetor do qual se quer saber o valor do menor elemento e eum par metro formal de sa da m que deve receber na execu o da fun o este valor do menor elemento de A Feche o Scipad se ele j tiver arquivos abertos e o abra novamente para construir esta fun o Salve a fun o em um arquivo Minimo sci em seu diret rio de trabalho Precisamos tamb m desenvolver um programa testador para a fun o e podemos faz lo a partir do programa TestaSoma sce Para isto use o Scipad para abrir o programa TestaSoma sce e us
7. A execu o da fun o deve calcular um valor para o par metro formal de sa da este valor substitu do na express o que cont m a chamada da fun o Altera es feitas pela fun o sobre par metros formais n o afetam os par metros reais Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 142 function rl r2 eg2g a b c delta b 2 4 a tc b s nt delta 2 a b sqrt Chamada da fun o eq2g raizl raiz2 eq2g x y z Figura 272 Fun o com dois par metros formais de sa da Uma fun o pode ter mais de um par metro formal de sa da a Figura 272 mostra um exemplo de defini o e de chamada de uma fun o com dois par metros formais de sa da Uma fun o cria um espa o novo para vari veis que podem ter nomes iguais aos de vari veis j definidas no programa principal Vari veis definidas por uma fun o s o chamadas vari veis locais Na fun o da Figura 269 a vari vel i uma vari vel local o programador desta fun o n o precisa se preocupar com qualquer outra vari vel de mesmo nome definida no programa principal Essa delimita o de escopo de vari veis uma propriedade essencial para permitir o desenvolvimento de fun es por programadores independentes se n o existisse todos os programadores participantes de um projeto de maior vulto teriam que se preocupar com a escolha de nomes de vari v
8. Figura 221 O programa Eqg2g5 sce Introdu o Organiza o e Programa o de Computadores saida IOPC 2010 2 3 Ambiente e Linguagem Scilab 124 A Figura 221 mostra o programa Eq2g5 sce que atende a esta especifica o Neste programa voc deve reparar que e A localiza o dos arquivos de entrada e sa da feita com a vers o do comando uigetfile que facilita a navega o na rvore de diret rios para o usu rio e Os arquivos de entrada e de sa da s o abertos no in cio do programa e fechados no fim e Oloopwhile controlado pela fun o meof daE que testa se o fim do arquivo de entrada foi encontrado Seria poss vel usar por exemplo o Bloco de Notas para descobrir o n mero de linhas do arquivo de entrada e controlar o loop por um comando for mas esta n o uma boa pr tica pois o programa deveria ser alterado para cada tamanho de arquivo de entrada 3 2 Matrizes Matrizes no Scilab s o vari veis que cont m um n mero potencialmente grande de valores na manipula o de matrizes que o Scilab seguindo o Matlab mostra uma grande superioridade sobre linguagens como C ou Fortran gt A 12 3 4 5 6 A L 2 3 4 J 6 Figura 222 Atribuindo uma matriz a uma vari vel A Figura 222 mostra uma maneira simples de se criar uma matriz atrav s de um comando de atribui o na console do Scilab Os elementos da matriz s o dispostos entre colchetes Espa os u n p
9. Vari veis s o nomes para espa os de mem ria gerenciados pelo Scilab um programador n o precisa ter qualquer id ia de como esse gerenciamento feito Vari veis t m seus nomes escolhidos pelo programador segundo algumas regras e O primeiro caractere do nome deve ser uma letra ou qualquer caractere dentre CORES e e Os outros podem ser letras ou d gitos ou qualquer caractere dentre _ S e e Mesmo sendo franc s o Scilab n o permite o uso de letras acentuadas ou de cedilhas em nomes de vari veis Exemplos de nomes de vari veis v lidos s o a A jose total de alunos tfuncionarios O Scilab distingue entre mai sculas e min sculas e portanto a e A seriam vari veis diferentes Nomes n o v lidos s o 1Aluno porque o primeiro caractere um algarismo total de alunos porque tem espa os ou jos porque acentuado Um comando de atribui o tem o formato lt vari vel alvo gt lt express o gt onde e A lt vari vel alvo gt se n o existia passa a existir e Se existia o valor anterior perdido e Na execu o do comando a lt express o gt calculada e o resultado atribu do lt vari vel alvo gt Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 99 gt d a x I error 4 Undefined variable Figura 167 Usos e erros em comandos de atribui o Conforme ilustrado na Figura
10. Dada uma express o l gica n s podemos construir sua tabela da verdade efetuando as opera es da express o Mas para obter um circuito l gico para uma das fun es de sa da a partir de uma tabela da verdade preciso e conseguir uma express o l gica equivalente tabela da verdade e e construir o circuito equivalente express o l gica Uma express o l gica e uma fun o definida por uma tabela da verdade s o equivalentes quando para qualquer combina o de valores das vari veis de entrada os valores da fun o e os valores da express o s o iguais Tabela 11 Tabela da verdade para a fun o f x y Xv o foy 0 1 0 1 e e O oO e OI O IE Por exemplo a fun o f x y definida pela Tabela 11 equivalente express o f x y xy xy Um m todo gen rico para se obter uma express o l gica para uma fun o definida por uma tabela da verdade consiste em fazer um OR de termos que s t m o valor 1 para cada combina o das vari veis de entrada para a qual o valor da fun o igual a 1 ENNNESI 0 0 1 0 1 0 A Xy Xy 1 0 0 1 1 1 Figura 60 Cobertura dos 1s de uma fun o booleana Na Figura 60 f x y 1 somente na primeira linha quando x 0 e y 0 e na ltima linha quando x 1 e y 1 N s temos e x y 1seesomentesex 0ey 0 e xy iseesomentesex 1ley 1 Portanto f x y x y xy cobre exatamente os 1s da tabela e uma express o l gica equivalente
11. Figura 229 Atribuindo os valores de uma matriz a uma parte de outra matriz A Figura 229 mostra outro exemplo de utiliza o desta nota o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 127 Edo 62 56 23 30 29 50 15 84 66 dido 93 56 43 0 68 l2 21 21 48 26 33 87 19 88 31 33 63 66 6 54 65 36 59 40 gt a x 2 Figura 230 Obtendo todos os valores de uma linha de uma matriz Ao se referenciar a uma parte de uma matriz que cont m seja todas as linhas seja todas as colunas poss vel usar uma nota o simplificada com A Figura 230 mostra um exemplo de uso desta nota o para obter todos os elementos em uma linha de uma matriz Figura 231 Obtendo os elementos de todas as linhas nas colunas de 3a 5 Outro exemplo est mostrado na Figura 231 onde x 3 5 designa a parte de x formada pelos elementos em todas as linhas e nas colunas de 3 a 5 3 2 4 Aritm tica matricial No Scilab as vari veis s o sempre matrizes e em consequ ncia as opera es aritm ticas usuais s o entendidas pelo Scilab como opera es matriciais Desta forma a b designa o produto matricial de uma matriz a por uma matriz b Quando o que se deseja uma opera o elemento a elemento os mesmos s mbolos devem ser utilizados precedidos por um uU m como ou Vejamos alguns exemplos A 2 Sp a bD
12. a automa o da emiss o dos sinais de controle com o uso de um programa armazenado na mem ria composto por instru es que s o interpretadas executadas por uma unidade central de processamento Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Notas Finais e Pr ximos Passos 205 e Um computador portanto um circuito que transforma informa o que entretanto difere do circuito de soma porque a transforma o realizada n o fixa mas ditada por outra informa o o programa armazenado e Trocando o programa trocamos a transforma o realizada O ganho em fllexibilidade enorme quando comparado com a constru o de um circuito Software macio hardware duro e E programas podem conter loops o que nos permite por exemplo calcular a soma de 50 000 ou mais n meros de 32 bits fa anha absolutamente impratic vel para um circuito combinat rio que para isso deveria ter 50 000 x 32 3 200 000 bits de entrada e Aconstru o de um programa mesmo pequeno em linguagem de m quina uma tarefa infernal mas uma das principais utilidades dos computadores facilitar a constru o de programas para computadores e Montadores ou assemblers s o programas que permitem o uso de mnem nicos para a designar instru es e posi es de mem ria Mesmo sendo um avan o sobre a programa o direta em linguagem de m quina a programa o que se consegue com estes sistemas ainda
13. o dos s mbolos fica muito mais confi vel Al m disso bits s o baratos e ocupam muito pouco espa o quando anotados em suportes eletr nicos O notebook utilizado para escrever este texto tem 2GB 2 Giga Bytes de mem ria principal e 300GB de capacidade de armazenamento em sua mem ria secund ria um disco magn tico 1 4 Convers es an logo digital e digital anal gica Informa o Anal gica r pode ser em convertida em NY Informa o Digital Da pode s convertid w mM Figura 12 Convers es an logo digital A D e digital anal gica D A Existem dispositivos que transformam informa o anal gica em informa o digital convers es A D e outros que fazem o contr rio convers es D A Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o Amplitude Original Signal 0 200 400 600 800 1000 Time ns Figura 13 Um sinal anal gico sinoidal Para digitalizar um sinal de entrada como o da Figura 13 preciso obter amostras de sua amplitude em instantes discretos no tempo e digitalizar obter um valor num rico cada amostra Amplitude W Original Signal Amplitude campled Signal 4 0 l 2 0 0 e00 400 KOD a00 1000 0 lt 00 400 KOD a00 1000 Time ns Time ns tsample 41 67 MHz al Fl Resolution Bit M Show Sampling Points isample 240 hs Ww Show Sampled signal Show Quantization Error Figura 14 Sinal
14. o tem prioridade sobre a multiplica o e portanto o valor atribu do a x pelo comando acima ser 22 4 84 32 Tabela 16 Prioridades entre operadores em uma express o aritm tica Prioridade Opera o Associatividade a Potencia o Da direita para a esquerda Multiplica o divis o Da esquerda para a direita 7a Adi o subtra o Da esquerda para a direita 3a Se a inten o do programador era de atribuir a x o valor 234 212 2048 par nteses deveriam ter sido usados no comando de atribui o como em x Introdu o Organiza o e Programa o de Computadores 2 3 4 IOPC 2010 2 3 Ambiente e Linguagem Scilab 101 gt 2 3 4 ans SE gt 2 3 4 ans 4096 gt 2 3 4 ans 2 418D 24 gt 2 3 4 ans 2 418D 24 gt 2 3 4 ans 4096 gt 2 3 4 ans 10 gt 2 3 4 14 Figura 170 Prioridades e par nteses influenciando o valor de uma express o aritm tica Na Figura 170 n s vemos alguns exemplos de como o Scilab interpreta express es aritm ticas De uma forma geral recomend vel o uso de par nteses para tornar clara a inten o do programador 3 1 2 Programas Scilab Para tentar tornar clara a utilidade de um programa vamos resolver com a console Scilab uma equa o de segundo grau que tem a forma ax bx c 0 N s queremos calcular as ra zes para a 534 2765 b 9987 3431 e c 22
15. H muito o que se aprender em computa o pura ou aplicada s ci ncias e as engenharias e diversas outras disciplinas podem extender o seu conhecimento nesta rea Organiza o de Computadores O projeto de sistemas digitais e de computadores uma vasta rea que normalmente estudada em disciplinas como Sistemas L gicos Organiza o de Computadores ou Arquitetura de Computadores Metodologias para o projeto e implanta o de circuitos digitais s o vistas com maior profundidade assim como aspectos te ricos C lculo Num rico Nessa disciplina s o vistos como o nome indica algoritmos para a solu o de problemas num ricos de grande import ncia para todos os cientistas e engenheiros Tipicamente s o vistos algoritmos para encontrar zeros ra zes de fun es dos quais o m todo da bisse o visto na Se o 4 4 2 um exemplo para a solu o de sistemas de equa es lineares para interpola o para solu o de equa es diferenciais para integra o num rica e v rios outros A preocupa o com erros de arredondamento e de truncamento e com a sua propaga o tratada com muito maior profundidade Algoritmos e Estruturas de Dados Esta rea trata extensamente de algoritmos para ordena o e pesquisa dos quais n s vimos alguns exemplos do uso de estruturas de dados mais flex veis que matrizes como listas rvores e grafos do casamento de padr es sempre com um tratamento bem mais rigoroso do
16. e ocampo OpCode10 enumera as instru es e com isso fornece um c digo para cada uma delas e ocampo OpCode2 cont m os mesmos valores de OpCode10 mas codificados em bin rio de 4 bits destinados ao uso por computadores e O campo BranchTable16 ser explicado mais tarde Voltando Figura 124 os dois bits do modo de endere amento modificam a interpreta o do campo de operando conforme a Tabela 13 Tabela 13 Modos de endere amento nas instru es da Pipoca 00 Endere amento imediato O valor codificado no campo operando deve ser usado diretamente para a opera o definida pela instru o 01 Endere amento direto O valor a ser usado na opera o definida pela instru o o conte do da posi o de mem ria cujo endere o est no campo operando da instru o 10 Endere amento indireto O valor a ser usado na opera o definida pela instru o o conte do da posi o de mem ria cujo endere o est na posi o de mem ria cujo endere o est no campo operando da instru o 11 Este c digo para o modo de endere amento n o utilizado na Pipoca Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 70 Soma 7 ao ADD Imediato 7 acumulador Soma 23 ao acumulador Soma 41 ao ADD Indireto 7 acumulador ADD Direto Figura 125 Modos de endere amento Supondo que em um dado instante a posi
17. o encontrada 3 2 5 Construindo matrizes Vetores com valores regularmente espa ados podem ser constru dos de forma similar utilizada no comando for como mostrado na Figura 242 Ll Le 12 0 52 10 11 9 a Figura 242 Constru o de vetores regulares Uma outra forma de se conseguir vetores com valores regularmente espa ados com o uso da fun o linspace lt valor inicial gt lt valor final gt lt n mero de pontos gt onde al m do valor inicial e do valor final fornecido o n mero de pontos em que se deseja dividir o intervalo ao inv s do valor do passo A Figura 243 mostra dois exemplos de uso da fun o linspace gt 0 gt x linspace COG o gt x linspace 0 10 6 sx O 2 6 Figura 243 Usando a fun o linspace para construir vetores com valores regularmente espa ados 4 Para se obter matrizes onde todos os elementos t m o valor O ou o valor 1 podem ser utilizadas as fun es zeros e ones como mostrado na Figura 244 gt x zeros 2 3 x 0 0 0 O O O gt y ones 2 3 y 1 1 y Figura 244 Matrizes com todos os elementos iguais a 0 ou iguais a 1 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 132 Outra matriz que se pode obter a matriz identidade atrav s da fun o eye como vemos na Figura 245 gt I eve 4 4 1 O l ia O
18. 103 sele o e troca 169 Select Sort 168 sensores 13 SetlnEmpty 75 SetInFull 75 Signals 78 Sinal e Amplitude 24 210 S ntese de Circuitos Combinat rios 42 size 125 software 65 soma de Riemann 180 soma completa 40 somador de n bits 41 SomarTr s 45 splitters 57 Strings 113 sub circuito 45 SumX 70 supercomputador 2 tabela da verdade 37 teclado Dvorak 13 testes 157 then 105 timer 159 Transistores 28 Trocar os valores de duas vari veis 170 UCP 64 uigetfile 120 unidade central de processamento 64 unidade de controle 67 unidade l gico aritm tica 61 vai um 39 Vari veis 98 vari veis locais 142 Vari veis L gicas 112 vari vel 98 vem um 40 Vetores 126 vol til 15 volatilidade 15 Von Neumann 65 XOR 33 xtitle 138 zeros 131 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Refer ncias 211 7 Refer ncias Andrews D n d Primes R US Retrieved from http www geocities com primes r us Burch C 2002 Logisim A Graphical Tool for Designing and Simulating Logic Circuits Retrieved March 2009 from http ozark hendrix edu burch logisim Dijkstra E W 1972 Chapter Notes on Structured Programming In E W O J Dahl Structured Programming Eds ACM Classic Books Series Academic Press Ltd London UK 1 82 Flickr n d Retrieved Fevereiro 2010 from http farm4 static flickr com
19. 3 1415926536 Figura 358 Teste da fun o bissecao 4 4 3 S rie de Taylor para exp x e Cancelamento Catastr fico Do c lculo sabe se que para qualquer x real e pode ser calculado por uma s rie de Taylor que uma soma de infinitos termos com a forma abaixo 2 3 e 1 0 lt x lt o 1 2 3 ou lembrando que 0 1 L 0 Esta s rie converge para qualquer valor de x N s podemos ver que a partir do termo onde i gt x i cresce mais rapidamente que xt e que o valor absoluto dos termos tende para zero Queremos aqui construir uma fun o Scilab que calcule e por esta f rmula adicionando termos at que seu valor absoluto seja menor que uma toler ncia fornecida pelo usu rio J temos como escrever o cabe alho da fun o como mostra a Figura 359 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 189 function y expTaylor x tol Calcula a soma dos termos da s rie de Taylor at o primeiro 4 termo tom valor absoluto menor J que toler ncia tol endfunction Figura 359 Cabe alho da fun o expTaylor Para testar esta fun o o programa expTaylor teste mostrado na Figura 355 l um valor para a toler ncia Depois repetidamente l valores para a vari vel x calcula e compara os valores retornados pela fun o expTaylor que n s desenvolvemos e pela fun o exp fornecida pelo Scilab que bastante confi vel pois utiliza t c
20. Como somente com 0 e 1 que mesmo se cada um s cont m um de dois s mbolos computadores usam muitos bits Com 1 bit podemos representar dois estados que podem por conven o representar O ou 1 sim ou n o verdadeiro ou falso preto ou branco o que quer que se convencione mas apenas dois estados Com dois bits j s o 4 combina es 00 01 10 e 11 Com 3 bits 8 combina es 000 001 010 011 100 101 110 e 111 J fica poss vel armazenar 8 diferentes informa es que poderiam ser os inteiros de 0 a 7 ou talvez designando 8 diferentes n veis de cinza o preto o branco e 6 nuan as intermedi rias N o dif cil ver que ao acrescentar um bit a um conjunto de bits multiplicamos por 2 0 n mero de combina es j existentes Ou seja com n bits temos 2 combina es e 2 cresce muito rapidamente Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 8 e Com 8 bits podemos representar 2 256 coisas diferentes Isso suficiente para atribuir um c digo distinto para cada letra do alfabeto distinguindo entre mai sculas e min sculas e tamb m para caracteres especiais como etc Um conjunto de 8 bits chamado de byte e Com 24 bits temos 22 16 777 216 possibilidades o suficiente para representar todas as cores com qualidade excelente para a acuidade visual humana e Com 80 bits nada menos que 28 1 208 925 819 614 629 174 706 176 coi
21. Melhor Figura 376 O programa CaixeiroViajante sce A Figura 376 mostra o programa completo que tamb m usa as fun es SelecionaMenor Figura 324 p gina 171 e PrintMatrix Figura 325 p gina 171 Executando este programa com o arquivo Distancias txt Figura 373 n s vemos que a melhor rota 1 2 3 5 4 1 com custo total 15 mostrada na Figura 367 Muito bem temos um programa que resolve o problema do caixeiro viajante Mas ser que com ele n s poderemos encontrar o melhor roteiro para visitar de avi o todas as 27 capitais brasileiras melhor nem tentar Com n cidades temos n 1 permuta es a explorar Para o exemplo com 5 cidades s o 4 24 possibilidades f cil Para 8 cidades temos 7 5040 rotas a examinar sem problemas mas para as capitais brasileiras s o 26 4 x 102 permuta es a serem examinadas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 197 Figura 377 Qual o melhor roteiro para visitar as 27 capitais brasileiras Mas isso n o seria simplesmente um defeito do nosso algoritmo cuja complexidade O n Infelizmente n o Efetivamente existem solu es melhores com t cnicas mais sofisticadas que reduzem o n mero de roteiros a serem examinados Mas n o reduzem tanto A melhor solu o j encontrada tem complexidade O n22 o que para n suficientemente grande cresce mais rapidamente do que qualquer pot ncia de n ou do que
22. c digo transcreve o algoritmo de forma bastante direta e que pressup e a exist ncia de uma fun o Merge que realiza as intercala es Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 175 function sA MergeSort A 1f length A lt 1 then sA A else m int l length A 2 sA Merge MergeSort A l m MergeSort A m 1 length A end endfunction Figura 332 A fun o MergeSort A codifica o da fun o Merge Figura 333 tamb m bastante intuitiva Voc deve reparar que e pA pB e pM s o ponteiros que indicam as posi es em foco nos vetores fonte e no vetor resultado e O primeiro loop realiza a intercala o propriamente dita a cada passo colocando em M pM o menor entre A pA e B pB e avan ando adequadamente pA ou pB este loop termina quando pA ou pB atinge o limite do seu vetor e O segundo loop s efetivamente executado quando a sa da da fase de intercala o se deu pelo esgotamento dos elementos de B e consiste em copiar os elementos restantes de A em M e Da mesma forma o terceiro loop s efetivamente executado quando a sa da da fase de intercala o se deu pelo esgotamento dos elementos de A e consiste em copiar os elementos restantes de B em M function M Merge A B pA 1 pB 1 pM 1 while pA lt length A amp pB lt length B if A pA lt B pB then M pM A pA pA pA 1 else M pM B pB pB
23. dulo sem detalhes somente com as entradas e sa das Passe com o mouse sobre essas entradas e sa das o Logisim indica o nome de cada uma delas Como voc pode ver subimos de n vel Os detalhes do circuito SomaUm podem ser esquecidos O que nos interessa agora somente sua funcionalidade de somar 1 sua entrada Logisim main of Untitled File Edit Project Simulate Window Help somar E ui Base Gates Figura 76 O circuito SomaTr s Complete agora o seu circuito principal acrescentando entradas sa das e cabeamento conforme a figura acima A disposi o de entradas e sa das foi escolhida para facilitar sua leitura como um bin rio sem sinal Para obter entradas voltadas para baixo clique sobre a ferramenta de entradas e no painel de par metros no canto inferior esquerdo da tela do Logisim e escolha South como orienta o Para obter sa das com o ponto de conex o encima clique sobre a ferramenta de sa das e escolha a orienta o North Teste o seu circuito e veja se a sa da corresponde sempre entrada mais 3 Lembre se da conven o que adotamos de ter 000 como o sucessor de 111 Como um exemplo mais detalhado vamos o usar o Logisim para construir um display hexadecimal isto um circuito que acende os filamentos correspondentes ao s mbolo hexadecimal codificado em seus 4 bits de entrada em uma l mpada de 7 segmentos Este um dispositivo simples e eficaz para a visualiza o de
24. endfunction Figura 300 A fun o MenorFator Com isso n s terminamos o desenvolvimento do nosso programa importante que voc observe os ganhos obtidos com esse enfoque e Ao desenvolver o programa principal n s nos preocupamos com a intera o com o usu rio e exceto pela defini o de funcionalidade pudemos esquecer do problema de encontrar o n mero primo que desejamos e Ao desenvolver a fun o MenorPrimoMaior0OulgualA n s esquecemos da intera o com o usu rio e nos preocupamos somente com a pesquisa sequencial por um primo a partir de um n mero dado saber se um n mero primo tamb m um problema deixado para outro momento e Ao desenvolver a fun o Primo nosso foco simplesmente descobrir um algoritmo para saber se um n mero inteiro primo ou n o todo o contexto restante pode ser esquecido Para isso o par metro de entrada n comparado com o seu menor fator e a descoberta deste menor fator deixada para depois e Ao desenvolver a fun o MenorFator a nica preocupa o encontrar o menor divisor de um n mero inteiro esta divis o de tarefas que permite o dom nio de programas mais complexos O desenvolvimento de cada fun o pode ser feito por um desenvolvedor em momentos diferentes ou por pessoas distintas em uma mesma equipe 3 3 6 Desenhando Mapas Para se desenhar um pol gono usando o Scilab basta colocar as coordenadas de seus v rtices em vetores x e y de mesmo tamanho e
25. es se aproximar de n Ou seja O n mero de compara es necess rias para a execu o do algoritmo cresce com o quadrado do tamanho do vetor e portanto o algoritmo de ordena o por sele o e troca 0 n A Figura 328 mostra um gr fico com medidas de desempenho obtidas para o m todo de sele o e troca em dois computadores Voc pode reparar que para ordenar um vetor com 5000 elementos o tempo gasto pelo computador mais r pido j significativo da ordem de 1 minuto Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 173 Sele o e Troca g0 Bio 70 E EO w 50 um E q e gg 30 T 500 1000 1500 z000 2500 3000 3500 Sono 4500 5000 Tamanho Figura 328 Tempos medidos para ordena o por sele o e troca de vetores aleat rios em um notebook e em um desktop 4 3 2 Intercala o MergeSort Figura 329 Uma opera o de intercala o Intercala o em ingl s merge o nome dado ao processo de produ o de um vetor ordenado a partir de dois outros j ordenados como mostrado na Figura 329 O algoritmo de ordena o por intercala o consiste em dividir o vetor de entrada em duas partes ordenar cada uma delas separadamente e depois obter o vetor ordenado realizando uma opera o de intercala o A ordena o por intercala o aplicada recursivamente a cada parte a n o ser que a parte a ser ordenada seja de tamanho 1 quand
26. gt executado se e somente se a lt condi o gt for verdadeira eo lt bloco sen o gt executado se e somente se a lt condi o gt for falsa Em alguns casos n o desejamos executar nenhum comando no caso da lt condi o gt ser falsa e o comando pode assumir uma forma simplificada sem a cl usula else como mostrado na Figura 180 1f lt condi o gt then lt bloco ent o gt 1f lt condi o gt then else lt bloco ent o gt Nenhum comando aqui end end Figura 180 Duas formas equivalentes do comando if a da direita sem a cl usula else A Figura 181 mostra os blocos de comandos e a condi o do comando if do programa Eq2g3 sce b sgrt delta 2 a b sqrt delta 2 a printf As ra zes s o g e g r1 r2 else printf As ra zes s o complexas end Figura 181 Partes do comando if do programa Eq2g3 sce Express es l gicas normalmente fazem uso de operadores relacionais para comparar valores de duas express es A Tabela 17 mostra os operadores relacionais usados no Scilab onde voc pode reparar que igual a representado por dois consecutivos uma heran a da linguagem C e que existem duas formas de representa o de diferente de Tabela 17 Operadores relacionais maior que maior ou igual a menor que DE irmao diferente de O comando printf tem a forma printf lt frase gt lt lista de express es gt onde Intr
27. k C lculo do fatorial de n n fat n i 1 C lculo do fatorial de n k n k fat n k i C lculo do fatorial de k ck fat k i fat n fat_n k fat k Figura 267 Programa para c lculo do n mero de combina es de nka k Voc pode reparar que foram feitas tr s adapta es do c digo uma para cada fatorial a ser calculado N s vamos mostrar que com o uso de fun es este programa se torna muito mais claro Para isso vamos dividir o programa em duas partes o programa principal e a fun o Figura 268 Programa principal para o c lculo de combina es O programa da Figura 268 faz a mesma coisa utilizando a fun o fatorial cujo c digo est na Figura 269 function fat fatorial n fat 1 for i 1 n fat fat i end endfunction Figura 269 A fun o fatorial O programa da Figura 268 cont m chamadas da fun o fatorial como usa fun es ele recebe a designa o de programa principal A execu o de um programa com fun es se inicia pelo programa principal A execu o de uma chamada transfere o controle para a fun o ao t rmino da execu o da fun o o controle devolvido para o ponto de chamada em uma opera o que chamamos de retorno da fun o A cada chamada um par metro da fun o utilizado o que permite um reaproveitamento de c digo muito mais elegante A leitura do programa principal tamb m muito mais f cil a Introdu o Organi
28. n p n while Primo p p pti end endfunction Figura 298 A fun o MenorPrimoMaiorOulgualA Como funciona a fun o Primo n o sabemos ainda mas especificamos que e a fun o tem um par metro formal de entrada n que o n mero que queremos testar se ou n o primo e o resultado do teste o par metro formal de sa da que deve ser t se o n mero for primo e f sen o Para saber se um n mero n primo vamos decomp lo como um produto de fatores inteiros satisfazendo n pq Um n mero inteiro n maior ou igual a 2 primo se seus nicos fatores s o 1 e o pr prio n A fun o Primo pode ent o ser escrita como mostrado na Figura 299 function ehPrimo Primo n ehPrimo n MenorFator n endfunction Figura 299 A fun o Primo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 153 Precisamos agora desenvolver a fun o MenorFator O algoritmo que vamos utilizar bastante direto vamos usar um inteiro p com valor inicial 2 e que iremos a cada passo de um loop incrementar e testar se ele um divisor Para este teste vamos usar a fun o Scilab modulo n p que calcula o resto da divis o de n por p O loop para ao encontrar o primeiro divisor o que sempre acontece pois n divis vel por n Ao t rmino do loop p cont m o menor divisor de n function p MenorFator n p 2 while modulo n p lt gt 0 p p a end
29. o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 81 ranh Tabie 4 ATOTFI Branch Table TERES E Ai Er Return Add eturn r re 3 a qu o 16B ROM D 1 DR DBus DDR Cik 1 Comp Cik em Subtract e Control pe o e Signal 1 ACC gt DBUs impIMMEDIATE IAC Clear impINDIRECT ACC Clk eror QJ MAR Cik return EI MAR Abus 1 PC ABus k1 PC Force IPC Clk 1 Operand gt DBus amp 1 IR Cik Out Full 1 RAM gt DBus IRAM Clk amp 1 Out CIk amp 1 In gt DBus In Cik 1 SetinEmpty 1 SetOutFull Reset CLOCK Figura 138 A unidade de controle 2 4 8 O Ciclo de Micro Instru o Um ciclo de instru o na verdade implementado por diversos ciclos de micro instru o que de forma similar aos ciclos de instru o s o compostos por etapas de leitura e de execu o de micro instru es que se alternam indefinidamente seguida a ao Tr Ss Ea E li na verdade a Exe da Instru o implementado a cu o da ES Ra por v rios A Microinstru o seguida por Figura 139 Ciclo de micro instru o Na etapa de leitura uma micro instru o lida na ROM de microprograma no endere o apontado pelo registrador mPC e a instru o lida armazenada no registrador mIR Introdu o Organiza o e Programa o de Computado
30. pB 1 end pM pM 1 end Esgota A while pA lt length A M pM A pA pM pM 1 pA pA 1 end Esgota B while pB lt length B M pM B pB pM pM 1 pB pB 1 end endfunction Figura 333 A fun o Merge Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 176 f cil ver que o n mero de opera es elementares de uma opera o de intercala o de dois vetores ordenados de tamanhos m en da ordem de m n Isso porque cada passo do algoritmo produz um elemento do vetor de sa da cujo tamanho m n A complexidade da ordena o por intercala o pode ser inferida da Figura 334 elojofajofafofaBafafafajofafafa 0 1 23 397 73 8 2 1125 303366 0 21125403A Figura 334 Passos para ordena o por intercala o 16 passos 16 passos 16 16 passos 167 16 passos Ali vemos o processo ilustrado para um vetor cujo tamanho uma pot ncia de 2 mas para outros tamanhos podemos considerar como limite superior a complexidade exigida para a menor pot ncia de 2 que supere o tamanho do vetor Vamos considerar apenas a fase de intercala o ilustrada na parte inferior da figura uma vez que as divis es s o feitas com pouco trabalho computacional Repare que e paraa ltima intercala o realizada que gera o vetor ordenado de tamanho n a partir de dois vetores ordenados de tamanho n 2 s o feitas no n opera es e para cada i
31. par metros reais distintos de entrada na primeira chamada a um vetor com 4 elementos na segunda b com 6 elementos ena terceira c com 9 elementos e com tr s par metros reais distintos de sa da sa sbe sc A cada chamada da fun o seus par metros formais s e A s o mapeados nos par metros reais correspondentes O funcionamento da fun o Soma poder ser verificado por inspe o visual dos resultados talvez com o aux lio de uma planilha ou de uma calculadora Temos agora que avan ar no desenvolvimento da fun o Soma Para isto uma boa id ia utilizar no Scipad o menu Windows Split side by side o que nos leva a uma janela como a da Figura 281 onde podemos ver simultaneamente os c digos da fun o e do programa testador e E SciPad 6 1729 BP2 TestaSoma File Edit Search Execute Debug Scheme Options Windows Help Soma sci Hide Close TestaSoma sce 1 function a Soma id 1 7 Programa que testa a fun o Soma Fa FE Calcula a soma dos elementos do vetor amp 2a int l10 rand 1 4 3 endfunction 3 aa Gcmata q print i i n Soma kg sa 5b intilo randil e 6 sb Soma Db Tprint in Soma g ab Bece int 10 rand 1 9 9 ac Goma o 10 print i in Soma g 3C 11 Line 11 Column 1 Logical line 11 Figura 281 Tela do Scipad dividida em duas janelas pelo menu Windows Split side by side Como faremos para calcular a soma de todos os elementos do vetor A Vamos avan
32. que pode ser examinado com o Bloco de Notas e cujas primeiras linhas est o mostradas na Figura 220 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab coefs2g File Edit Format View Help 0 25 LE 63 81 162 49 56 12 144 30 fa 40 Bd 12 160 36 4g 18 o 3 o 10 20 1 f q Fi 6 4 4 4 O us O ON Figura 220 Primeiras linhas do arquivo coefs2g txt 123 Nosso programa deve ler o arquivo de entrada e para cada linha lida gravar uma linha em um arquivo de sa da contendo os coeficientes lidos e as ra zes calculadas Isso deve ser feito somente para as equa es com ra zes reais linhas de entrada que formem equa es com ra zes complexas devem ser ignoradas C lculo das ra zes de diversas equa es de 20 grau com coeficientes lidos de um arquivo Localiza o dos arquivos de e s ArqE uigetfile txt pwd Arquivo de entrada ArqgqS uigetfile txt pwd Arquivo de Abertura dos arquivos daE mopen ArgE r daS mopen ArgS w Processamento do arquivo de entrada e produ o do arquivo de sa da while meof da n a b c mfscanf daE 3g g 3g delta b 2 4 a c if delta gt 0 then rl b sgrt delta 2 a b sgrt delta 2 a mfprintf daS in 8g 8g 8g 8g 8g a b c rl r2 end end Fechamento dos arquivos de e s mclose daE mclose das
33. que podem vir a ser implementadas em novas vers es Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 69 Tabela 12 Conjunto de instru es da Pipoca OpCode2 na NIN m le ls s _ e s s s s s Jals e Brancnadare Q Q Q O Adiciona o operando a ACC deixando o resultado em ACC Compara o operando com ACC e coloca o resultado em Compare OMPARE Para a execu o do programa Espera InFull 1 e transfere o valor de Input para a palavra apontada PUT pelo operando faz InFull 0 Desvia para a palavra apontada pelo operando J Desvia para a palavra apontada pelo operando se D ACC JMPEQ lt U olo olo EIS S O O EIS S H O Desvia para a palavra apontada pelo operando se D gt ACC JMPGT Desvia para a palavra apontada pelo operando se D lt ACC JMPLT Carrega o operando no acumulador LOA Espera OutEmpty 1 e transfere o operando para o registrador Output faz OutEmpty 0 OUTPUT ransfere o valor de ACC para a palavra apontada pelo operando STORE ubtrai o operando de ACC deixando o resultado em ACC SUB O O e e e e e O pa Q O pa pa O pa e e e O QOJ OJ e Estes c digos podem ser usados para novas instru es Nessa tabela e o campo Description descreve o efeito da instru o e o campo Mnemonic cont m c digos para cada instru o que s o empregados por um programador ao construir um programa
34. ria Uma mem ria tem como atributos sua largura de dados isto o n mero de bits em cada palavra da mem ria e a largura do endere o Com n bits de endere o uma mem ria tem no m ximo 2 palavras No Logisim a largura de bits do endere o determina tamb m o tamanho da mem ria que tem exatamente 2 palavras Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 59 mo 0000 J es ram Dc ren lilo dO a O Ge pus Joo o GR rea RO Dre dA PDOT OU oa gire go O RR O DM E Hips we ca Edo ah e nin dE e A Qu o Gu do cd O io EE A aaa RR RO O AI oe piaui enron Go das lO NB asso ES rasgo Dae iso aos a o a q O RS E E In Ik In DBuyso cc Figura 102 Uma mem ria RAM do Logisim em um arranjo com registradores e barramento A Figura 102 mostra um arranjo de uma mem ria RAM e de registradores em torno de um barramento As opera es de leitura e escrita se fazem com uma nica palavra da mem ria determinada pelo valor aplicado entrada A e para escritas o sinal RAM Clk funciona como o clock de um registrador na subida de O para 1 o valor presente na entrada D copiado para a posi o de mem ria endere ada pela entrada A o que no arranjo da Figura 102 o valor armazenado no registrador MAR o Memory Addres Register e para leituras o sinal RAM gt DBus funciona como um controlled buffer conectado sa da de um registrador enquando seu valor for
35. s permuta es obtidas e Finalmente separar o elemento 4 e gerar todas as permuta es de 2 3 e depois concatenar 4 s permuta es obtidas A fun o permutations mostrada na Figura 371 uma implementa o direta deste algoritmo function p permutations A 1f length A 1 then Pp A else p for i 1 length A B permutations OneOut A i nl nc size B for j 1 nl p p A i B j end end end endfunction function b OneOut A i x 1 length A b A x i endfunction Figura 371 A fun o permutations Ela faz uso da fun o OneOut que implementa a opera o de separar o i simo elemento do vetor e que um bom exemplo de uso das possibilidades oferecidas pelo Scilab para manipula o de matrizes apresentadas na Se o 3 2 9 p g 138 J podemos dar in cio ao desenvolvimento do programa principal A Figura 372 apresenta uma primeira vers o formada apenas por coment rios L a matriz de dist ncias Gera todas as rotas poss veis Calcula o custo de cada rota Seleciona a de menor custo Imprime o resultado Figura 372 Primeira vers o do programa CaixeiroViajante sce Vamos atacar inicialmente a leitura da matriz de dist ncias Queremos utilizar a fun o fscantfMat para esta leitura mas temos que levar em conta que e precisamos representar o valor infinito para dist ncias entre cidades sem conex o direta e e afun o fscanfMat s l
36. sin x endfunction Figura 353 A fun o exp_sin Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 187 O gr fico da Figura 352 pode ser obtido na console do Scilab com os comandos mostrados na Figura 354 A diretiva axesf lag 5 faz com que os eixos sejam tra ados no ponto 0 0 gt getf exp sin sci gt x linspace 0 2 pi 101 gt y exp sin x gt plot2d x y axesflag 5 Figura 354 Comandos para obter o gr fico da Figura 352 na console do Scilab Com isso n s j podemos construir um programa testador para a fun o bissecao conforme mostra a Figura 355 O programa permite experimentar com diversos valores de toler ncia comparando a raiz calculada com o valor de 7 com 10 casas decimais Clear getf exp sin sci getf bissecao sci tolerancia input inToler ncia while tolerancia gt 0 raiz bissecao exp sin 2 4 tolerancia printf Raiz 12 10 f An Pi 12 10fin raiz pi tolerancia input inToler ncia end Figura 355 O programa bissecao teste sce Um primeiro refinamento da fun o bissecao sci o loop que a cada passo reduz metade o intervalo que cont m a raiz Na Figura 356 n s podemos observar que e oloop interrompido quando o tamanho do intervalo menor ou igual toler ncia fornecida pelo usu rio e e o valor retornado como raiz o ponto m dio do intervalo function r bisse
37. 0 0 0 00 00000060 155609 06021 3 2 fo o 0 0 0 0 o 0 0 0 o o 0 0 0 o o 000000 0 1 1 c00001 CONE e 0 oo 0 o O 9 o 0 9 0 o o 0 00000 0 1 w5 000 1a 3 lo o 0 Do 0 a EE 0 o 0 o 0o 0 O cogat 000009 389472 06000 2 5 n 00 o 00 0 0 o mm o o 0o 0 0 00000000 4 nas 49 6 3 vo 0 0 0 j 0 0 5 0 o 0 o 0 00000000 3631438 D00000 273 je 5 0 0 0 o C 0 0 0 C 0 0 0 o 0o 0000000 0 153434 eow 45 3 V oo oo 0 0 0 o 0 0 0 0 0 q 0 000000 6 1 Nes Os o 6 23 4 lo o 0 Do 0 0 0 0 0 o 0 0 sets o 000 0 00 0 1 e 41 2a 42 v o e 0 0 0 o 0 0 0 O O 0 0 00000007 pans Coon 8 E 4 7 8 8888 0 0 0 o 0 0 0 0 0 0 0 0 o 0 0000000 Hu vo 10 0 0 0 i 0 o o 0 0 0 E 1600600066 NIM 06 Oo o O 4 je i Dj 0 O 9 0 0 0 0 0 0 0 0 00 000000600 pb Come SE 4 vol EO 0 0 0 0 0 0 0 0 0 0 0 0 000600060 D m 36 Esse no Wa s no 10 0 0 o o o o 0 o o o 000 00006 8 4 iv op Jo 0 0 0 0 0 0 O 0 0000006 d hdi con S ny oo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 JEA 00006 32 00002 sa w je ofi Djo 0 0 0 0 0 0 0 0 0 0 0 O 0000000 z ns l Boos n s jo o 0 0 o 0 0 o 0 0 0 0 0 O 000000 JE su R jo o 0 0 0 0 0 0 0 0 0 0 e 1000 60 1 45 5 mz vof Jo o o o 0 0 0 0 O 0700006 viciado Com 000 s 3 4 OUTPUT pm 6 5 10 0 0 0 0 0 0 0 0 0 0 0 0 o o 0000606 11534941 500005 s 37 5 Ouloop impOuFui sp iv wf Bjo 0 0 o o 0 0 o o 0 o 0 o 0000000 o wesons 600037 ma so a A fa an A a A A a e O T e mm asas frate Kaal Mebi
38. 0 0 0 o o 000 o ooko 038 00109 w t 5 0 pm 00 0 0 0 0 0 00 06060070 100s6 Addi 7 oC t 0 0 0 0 o o 0 0 ol jo 0 o 0000006006 swe 001000 Eco n fo o 0 0 0 0 o 0 0 0 o q o J o 0 0 0000000 ne somo S Au oo 0 o 0 9 0 0 0 0 LIA 0 0 0 0 000000600 Me me B o o 9 0 0 0 o 0 0 0 o 0 0 0 0 o 00 o ooko ees av x so EEE 9 0 0 J i 0 0 o 000 60005 0 Nowo asw zin v jo o 0 0 0 0 0 0 0 0 0 of Jo 0 o 0o 00000000 6 001090 agr t 0 0 0 0 0 0 o 0 o 0 0 o ol o 0 0 2000000 430 aonso ano 0 0 0 0 0 o o 0 o 0 0 000 00000 6640 00400 uam lo o 0 0 0 0 o 0 0 0 o 0 0 0 0 0000000 e 00480 ssa oo 0 oo 0 0 0 0 0 0 0 o 0 0 100000600 0 Mano als z2 lo o 0 0 0 0 o 0 0 0 0 0 0 0 0 o 00 00 of lo wes oone Ir allu so 0 0 0 O 0 0 O o 000 6 00 0 too Aww 3 1 m ADO 16 6 mrm 0 0 0 0 0 0 0 0 0 0 0 0 20 000 0000 0 153434 Sm ms 25 0 0 0 0 0 0 o 0 0 0 0 0 0 0 0 o o 000 000 0 1 000001 1 IA a lo o 0 oo 0 0 0 o 0 0 0 0 0 0 e ooo o 65 W004 Ba vo 0 0 0 0 0 0 0 0T00006 TT COMO 9 1C Mm COMPARE pe s Enn oo 0 0 0 0 0 0 0 o 0 0 0 00000000 11534941 800005 HD 3 fo o 0 0 0 0 o 0 0 0 0 0 0 0 0 o 0o 000 000 0 1 1 000001 s Em oo 0 0 0 o 0 o 0 0 0 0 0 0 o 0 0000 oi o 1 5 000005 WF N J vo 0 0 0 E C 0 0 o C 0 0 0 DO 00000 01 9EIM38 D00000 37 20 3 INPUT se Gei je 5 Ea 0 0 0 o 0 0 0 o 0 0 0 0 o o 000 0000 0 153434 ED O 2 X inkoop mpbEmpy hloop nu 10 0 0 0 0 0 0
39. 0l 40 20 307 40 DU GUJ eN ia Figura 232 Adi o e subtra o de matrizes Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 128 A Figura 232 mostra exemplos de adi o e subtra o de matrizes Com estas opera es s o sempre feitas elemento a elemento os operadores e existem no Scilab n o s o necess rios e n o gt bx 1 2 3 4 5 6 x 1 2 J 4 Fa 6 gt y 10 20 30 40 50 60 y 10 20 30 40 50 60 gt x y ans 220 280 490 640 Figura 233 Exemplo de produto matricial Na Figura 233 n s vemos um exemplo do produto matricial de duas matrizes obtido com o operador e que segue a f rmula da lgebra linear para o produto de uma matriz x de dimens es m X n por uma matriz y de dimens es n xX p resultando em uma matriz m x p p n onde XY Xik 1 XikYki 1 2 3 4 10 20 30 40 gt 7K Figura 234 Produto matricial versus produto elemento a elemento de duas matrizes O Scilab emite uma mensagem de erro quando ocorre uma tentativa de multiplica o de matrizes com dimens es incompat veis com a opera o A Figura 234 mostra a diferen a entre as opera es de produto matricial e produto elemento a elemento gt X 1 2 3 4 5 6 gt x 2 Figura 235 Multiplicando uma matriz por um escalar Introdu o Organiza o e Progr
40. 1 a mem ria coloca no barramento o conte do da palavra endere ada pela entrada A Input 15 Coloca 15 00001111 na entrada Input In Clk 1 O registrador In copia a sua entrada In Cik 0 In gt Dbus 1 mem ria j cont m o endere o desejado In Clk 1 O registrador In copia a sua entrada In Clk 0 Abaixa o clock do registrador In A mem ria copia o barramento para a posi o 15 RAM Clk 1 nda indicada pela entrada A RAM Clk O Abaixa o clock da mem ria In gt Dbus O Libera o barramento Figura 103 Um fluxo de dados realiz vel pelo circuito da Figura 102 Exemplos de fluxos de dados realiz veis com o circuito da Figura 102 s o mostrados na Figura 103 e na Figura 104 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores MAR Clk 1 O registrador MAR copia o barramento a entrada A da mem ria j cont m o endere o desejado MAR Clk O Abaixa o clock do registrador MAR A mem ria controla o barramento onde coloca o RAM gt Dbus 1 e Sl conte do da posi o indicada por sua entrada A Out Clk 1 O registrador Out copia o barramento Out Clk O Abaixa o clock do registrador Out 2 3 4 Acumuladores Out x1 Out Clk Acc Cik Acce Cir In DEBUsS Figura 105 Um registrador acumulador 60 Figura 104 Outro exemplo de fluxo de dados realiz vel com o circuito da Figura 102 Um registrador pode ser usado como um acumulador como
41. 1 i 3 i 5 i 7 i 9 Figura 185 Exemplo de comando for com passo diferente de 1 No exemplo da Figura 185 e A vari vel indexadora i que assume o valor lt inicial gt 1 na primeira itera o do loop e Aofim decada itera o soma se 2 0 lt passo gt vari vel indexadora ou seja i assume os valores 1 3 5 e Tamb m ao fim de cada itera o o novo valor da vari vel indexadora comparado com o lt limite gt eo loop termina quando o valor da vari vel indexadora tiver ultrapassado o lt limitte gt No caso o loop termina quando i tiver o valor 11 que ultrapassa o limite 10 e O An na frase do comando printf um caractere especial que produz uma nova linha na sa da for i 20 2 16 printf ni g i end i 20 i 18 Sa da 1 16 Figura 186 Exemplo de for com passo negativo O lt passo gt de um for pode ser negativo como mostrado na Figura 186 e a vari vel de controle pode assumir valores n o inteiros como na Figura 187 for x 0 0 3 0 7 printf Nnx g x end Figura 187 Exemplo de for com a vari vel de controle assumindo valores n o inteiros Com este ltimo exemplo a constru o da tabela de senos fica simples Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 110 Tabela da fun o Seno for x 0 0 2 2 pi printf Sg g x sin x end Figura 188 O pr
42. 2 a r2 b sgrt delta 2 a printf As ra zes s o g e g rl r2 else printf As ra zes s o complexas end Figura 178 O programa Eq2g3 sce A Figura 178 mostra o programa Eg2g3 sce que atende a essas especifica es Este programa introduz dois novos comandos if e printf Repare que terminamos com ap s v rios dos comandos de atribui o o que suprime o eco autom tico e torna a sa da mais limpa 1f lt condi o gt then lt bloco ent o gt else lt bloco sen o gt end Figura 179 O comando if O comando if usado para prescrever comportamentos condicionais na execu o do programa Sua forma geral est mostrada na Figura 179 onde e if then else e end s o as palavras chave que o Scilab usa para reconhecer o comando e if marca o in cio do comando e lt condi o gt uma express o l gica tipicamente uma compara o entre express es aritm ticas cujo valor avaliado como verdadeiro ou falso e then separa a lt condi o gt do lt bloco ent o gt e lt bloco ent o gt e lt bloco sen o gt s o conjuntos arbitr rios de comandos Scilab e elsemarcaofimdo lt bloco ent o gt eoin ciodo lt bloco sen o gt e end a palavra chave que fecha o comando if Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 106 e na execu o do comando if o lt bloco ent o
43. 3444 3348244651 fefl6ef641 jpg Garey M R amp Johnson D S 1979 Computers and Intractability A Guide to the Theory of NP Completeness New York USA W H Freeman amp Co Hollasch S 2005 IEEE Standard 754 Floating Point Numbers Retrieved August 25 2009 from http steve hollasch net cgindex coding ieeefloat htm l HotHardware com n d Intel Core 2 Extreme QX9770 Performance Preview Retrieved Fevereiro 2010 from http hothardware com articles Intel Core 2 Extreme QX9770 Performance Preview Ziller J B 1954 Preliminary Report Specifications for the IBM Mathematical FORmula TRANslating System FORTRAN International Business Machines Applied Science Division IBM n d IBM Archives Personal Computer Retrieved 2009 from http www 03 ibm com ibm history exhibits pc pc 1 html Lohninger H 2006 Vienna University of Technology Retrieved from http www vias org simulations simusoft adconversion htm l Lyon B 2005 The Opte Project Retrieved August 2009 from http opte org Mathworks n d Retrieved Fevereiro 2010 from http www mathworks com MclJones P n d History of FORTRAN and FORTRAN II Computer History Museum Retrieved April 2009 from Software Preservation Group http www softwarepreservation org projects FORTRAN McKeeman B n d MATLAB 101 A talk for the MIT Computer Science Department Retrieved Fevereiro 2010 from http www cs dartmouth edu mckeem
44. 4 153 Input Output Figura 53 Circuito OU Exclusivo Seu circuito ficar mais f cil de ser compreendido se voc acrescentar textos usando a ferramenta A em destaque na Figura 54 Voc pode alterar as caracter sticas da fonte tamanho negrito ou it lico etc editando os atributos do texto selecionado eo N EAE EEN le dei apam pnn om pn fe m ramenta E a 58 15 Arithmetic 115 Memory H Input Output Three state Ives Pull Behavior unchanged 100 li Figura 54 Acrescentando textos a um circuito Textos podem ser colocados em qualque posi o na rea de desenho mas muitas vezes melhor coloc los como labels de elementos de circuito como entradas portas l gicas e sa das O label acompanha o elemento quando este movido para outra posi o Para isto selecione o elemento e preencha o campo Label na tabela de atributos como mostrado na Figura 54 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 35 Plexers 415 Arithmetic 15 Memory 153 Input Output No 1 Three state No Pull Behavior Unchanged Label b Label Locat West t Label Font SansSerif Bs Figura 55 Ferramenta de toque para simula o de um circuito Para testar o seu circuito use a ferramenta de toque em destaque na Figura 55 Utilize a sobre as entradas do circuito para alterar o seu valor Explore todas as comb
45. 59 32 32 27 Desta forma progredimos at que a parcela a ser expressa como soma de pot ncias de 2 seja igual a zero Tabela 6 Convers o do decimal 123 para bin rio Aconverter 123 59 27 u 3 10 DS Pot nciade2 64 32 16 8 2 1 Um uso comum de n meros representados como bin rios sem sinal o sistema RGB Red Green Blue para a codifica o da cor associada a um pixel um ponto em um monitor com os valores dos n veis de intensidade das cores prim rias componentes vermelho verde e azul Para cada uma dessas cores utiliza se um byte 8 bits o que permite representar n veis de intensidade entre O e 255 Essa precis o considerada satisfat ria para a nossa acuidade visual yellow green cyan 255 255 0 0 255 0 0 255 255 0 0 0 is black 255 255 255 is white 255 0 O is red 0 255 O is green red blue 0 0 255 is blue 255 0 0 0 0 255 255 255 0 is yellow 0 255 255 is cyan 255 0 255 is magenta red magenta 255 0 0 255 0 255 Figura 37 Uso de bin rios sem sinal para a representa o dos n veis de intensidade das cores prim rias vermelho Red verde Green e azul Blue conhecido como RGB l Sinal e Amplitude Como computadores s usam bits n s n o podemos usar um sina indicar que um valor negativo Temos que usar bits para codificar essa informa o A codifica o para n meros negativos conhecida como sinal
46. Ambiente e Linguagem Scilab 155 0 0 1 2 3 4 5 6 Figura 303 Efeito n o desejado ao tra ar dois pol gonos Este problema resolvido inserindo se pares de pontos com coordenadas iguais a inf representa o de infinito em ponto flutuante veja a Se o 2 1 para indicar ao Scilab os pontos de separa o entre dois pol gonos Experimente agora fazer na console do Scilab gt X x inf w gt Y y Sinf z gt OLT gt plot2d X Y rect 0 0 6 6 e voc obter a figura desejada com pol gonos separados O comando c1f f limpa a janela gr fica do Scilab Um mapa simples pode ser representado por uma tabela de pares latitude longitude Em princ pio estas tabelas podem ser utilizadas diretamente para o desenho dos mapas utilizando a fun o plot2d mas como j vimos necess rio algum mecanismo para separar os pol gonos isolados representando cada ilha lago ou continente No nosso site fa a o download do arquivo world txt que obtivemos na refer ncia Wolffdata e de onde retiramos grande parte desta se o e abra o utilizando o Bloco de Notas Notepad Um pequeno exame desse arquivo basta para verificar que a separa o entre os pol gonos est ali representada pelas coordenadas com valores 9999 Fa a agora um programa que 1 Leia este arquivo em uma matriz Mapas Use para isto as fun es uigetfile e fscan fMat 2 Extraia desta matriz dois vetores Lat e Long correspondendo s duas
47. FF tO passe para o FF t1 depois para o t2 depois para o t3 retornando ent o ao FF tO Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 64 Figura 113 Carta de tempo para o registrador circular da Figura 112 A Figura 113 mostra a evolu o temporal de um registrador circular importante observar que um registrador circular pode ter quantos flip flops se queira e que com isso podemos obter sinais distribu dos no tempo na forma como desejarmos 2 4 Organiza o de uma CPU Nesta se o n s veremos como funciona uma unidade central de processamento tamb m conhecida como UCP ou mais frequentemente como CPU do ingl s Central Processing Unit Uma CPU o componente mais importante de um computador a compreens o de seu funcionamento muda a vis o que temos dessas m quinas Os conceitos que introduzimos est o aqui ilustrados pela Pipoca uma CPU pedag gica simulada no sistema Logisim O circuito da Figura 108 tem os mesmos elementos b sicos de uma CPU veja tamb m a Figura 114 com mem ria barramentos e registradores controlados por sinais e uma unidade l gico aritm tica que realiza transforma es como somas subtra es etc Um circuito assim tem teoricamente a mesma capacidade de processamento de transforma o de informa o de um computador Dizemos teoricamente porque preciso que algu m se disponha a manipular os valores de entrada e os sinai
48. Logisim oferece leds pequenas l mpadas que foram acrescentadas ao circuito somente para acompanhamento visual do registrador Compare Cada registrador assim como a mem ria principal tem um sinal de clock cada sa da para o barramento tem um sinal que controla a posse do barramento Podemos realizar diversos fluxos de dados com este arranjo como mostram os exemplos na Figura 109 na Figura 110 e na Figura 111 Introdu o Organiza o e Programa o de Computadores Sinal Coment rio AccClr 1 Zera o acumulador AccClr 0 Abaixa o clear do acumulador Input 111 cClr 1 cClr 0 O registrador ACC copia a sa da da unidade l gico aritm tica que igual soma do conte do do acumulador igual a zero com o valor colocado no barramento cClk 0 Ac AccClk 0 Abaixa o clock do registrador ACC In gt Dbus 0 O barramento liberado Figura 109 Exemplo de fluxo de dados realiz vel com o circuito da Figura 108 Input 110 Coloca 6 na entrada do registrador In In Clk 1 O registrador In copia sua entrada In Clk 0 Abaixa o clock do registrador In In gt Dbus 1 A sa da do registrador In colocada no barramento Acc Clk 1 Acc Clk O Abaixa o clock do registrador ACC In gt Dbus 0 O barramento liberado Figura 110 Outro exemplo de fluxo de dados realiz vel com o circuito da Figura 108 O registrador ACC copia a sa da da unidade l gico k aritm tica que igual soma do conte do
49. Micromstructions Microprogram Instructons SumX ReadX SearchX Aux J 0 m Ready 1208 let Figura 159 A planilha MicroProgram O valor em decimal da micro instru o igual soma e do campo Type multiplicado por 2 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 91 e do campo OpCode DEC multiplicado por 21 e docampo mOperand e das pot ncias de 2 correspondentes a cada sinal igual a 1 na microinstru o Deve se observar que quando Type 1 a microinstru o de controle e todos os sinais s o iguais a O e quando Type O o campo OpCode DEC igual a zero pois a microinstru o de sinais Nas microinstru es de controle os bits de 8 a 18 n o est o sendo utilizados Coluna Microinstruction Word HEX simplesmente a convers o para hexadecimal com 6 d gitos do valor decimal da microinstru o A planilha Instructions est mostrada na Tabela 12 na p gina 69 Al m das colunas Description Mnemonic Opcode10 e Opcode2 que j comentamos esta planilha cont m a coluna BranchTable16 que calculada pesquisando para cada mnem nico de instru o o endere o hexadecimal da micro instru o com label igual a este mem nico na planilha Microprogram esta coluna que deve ser utilizada para a produ o de uma imagem de mem ria para a ROM Branch Table da Unidade de controle 2 4 10 1 Programando a Pipoca As planilhas Sum
50. Na verdade espera se que algoritmos mais complicados tenham complexidade computacional menor do que a de algoritmos mais simples Algoritmos com complexidade maior menos eficientes e mais complicados n o t m nenhuma vantagem de uso e inevitavelmente caem no esquecimento Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 159 Para ganharmos algum sentimento de como algoritmos que satisfazem uma mesma especifica o podem diferir em efici ncia n s vamos fazer alguns experimentos de medidas de tempo gasto com a fatora o de n meros inteiros um problema de import ncia fundamental para a rea de seguran a da informa o A seguran a da criptografia da maior parte dos sistemas atuais depende da dificuldade da fatora o de n meros semi primos isto n meros que s o formados pelo produto de dois primos Estamos aqui falando de n meros grandes chaves criptogr ficas atuais t m costumeiramente 1024 ou 2048 bits que correspondem a n meros com 308 ou 616 algarismos decimais O Scilab oferece a fun o timer que permite medir o tempo gasto na execu o de trechos de um programa A primeira execu o da fun o timer zera e dispara um cron metro cada chamada subsequente da fun o timer retorna o valor em segundos do tempo decorrido desde a chamada anterior da fun o Programa para fatorar n meros inteiros getf MenorFator sci n input n while n gt 2
51. algarismo 3 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 199 getf ReadPostProblem sci getf Sucessor sci getf strPost sci getf WritePostSolution sci getf WritePostProblem sci Leitura do problema de Post nTypes Up Down ReadPostProblem WritePostProblem Up Down found f seq while found seq Sucessor seg nTypes upString strPost Up seg adnString strPost Down seg found upString dnString 1f found then WritePostSolution seq Up Down end end Figura 381 O programa Post sce A Figura 381 mostra o programa Post sce aonde e A fun o ReadPostProblem usada para ler um problema de Post um conjunto de tipos de domin s Essa fun o retorna um inteiro nTypes o n mero de tipos de domin s e os vetores de strings Up e Down que conter o respectivamente os strings da parte de cima e da parte de baixo de cada tipo de domin no problema lido e Afun o WritePostProblem imprime na tela os dados do problema lido e O programa executa um loop que explora todas as sequ ncias de domin s extra dos dos tipos lidos parando se encontrar uma sequ ncia onde as concatena es dos strings da parte superior e da parte inferior dos domin s s o iguais e A vari vel seg cont m uma sequ ncia de domin s que a cada passagem do loop substitu da por sua sucessora usando a fun o Sucessor e Afu
52. algarismos decimais e de algumas letras que voc certamente j viu em elevadores ou sintonizadores de TV a cabo E Figura 77 Uma l mpada de 7 segmentos com todos os filamentos acesos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 47 O Logisim oferece este componente na biblioteca Input Output Cada um dos pinos acente um dos filamentos com exce o de um pino que acende um ponto decimal que n o vamos usar aqui Figura 78 Nomes dos pinos em uma l mpada de 7 segmentos A Figura 78 mostra os labels dos pinos de entrada de uma l mpada de 7 segmentos e na Figura 79 n s vemos o arranjo de entradas e sa das do circuito que iremos sintetizar Figura 79 Arranjo de entradas e sa das de circuito de controle de um display hexadecimal Para isso abrimos a janela Combinational Analysis do Logisim e constru mos uma tabela da verdade com 4 entradas a3 a2 a1 e a0 e com 7 sa das UL U C UR LL P Le LR Para cada linha colocamos 1 nas sa das correspondentes aos filamentos que acesos comp em o d gito hexadecimal formado pelos bits de entrada A tabela final est mostrada na Figura 80 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 48 Combinational Analysis EI File Edit Cro simulat window Help Inputs Outputs Expression Minimized a al al a UL U
53. c c D path i path i 1 end endfunction Figura 375 Obten o de todas as rotas e c lculo dos custos Nos trechos de c digo mostrados na Figura 375 voc deve reparar que e o vetor Rotas recebe todas as permuta es das cidades de 2 a n e n o de 1 a n pois a cidade 1 sempre o ponto de partida e de chegada e a rota enviada passada como par metro real para a fun o cost o vetor formado pela cidade 1 acrescida das cidades que comp em uma linha do vetor Rotas acrescido novamente pela cidade 1 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 196 Resolve o problema do caixeiro viajante clear getf permutations sci getf cost sci getf OneOut sci getf SelecionaMenor sci getf PrintMatrix sci L a matriz de dist ncias Dist fscanfMat uigetfile txt pwd Dist ncias PrintMatrix Dist ncias Dist Substitui 1 por Sinf Dist Dist 1 Sinf Obten o das rotas nl nc size Dist nl deve ser igual a nc Rotas permutations 2 nc Calcula o custo de cada rota NL NC size Rotas for i 1 NL Custo 1 cost Dist 1 Rotas i 1 if Custo i lt gt Exemplos 1 then end end Seleciona a de menor custo Melhor SelecionaMenor Custo 1 Imprime a melhor rota printf inA melhor rota PrintMatrix Rota 1 Rotas Melhor 1 printf com custo total d Custo
54. do circuito mas nos ajudam a visualizar qual instru o est em execu o e qual o modo de endere amento empregado na instru o corrente JADD DR gt DBus J COMPARE Input T a JHALT Out CIk In Cik In gt DBus Decd HO JMPLT Main Memory i JLOAD Tt OUTPUT JSTORE JsuB Operand o poema Operand gt DBus Jimmediate I doo RS ACC Direct ALU m TS Indirect ACC gt DBus w i A ACC Cik ACC Clear a Compare o i bet Subtract Compare Clk D gt ACC D ACC Figura 132 Rotas de dados na CPU Pipoca Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 77 2 4 6 O Contador de Programa Outro subcircuito da CPU Pipoca o contador de programa mostrado na Figura 133 01 Address New Address 00 10 1011 Clock Force New Address Figura 133 O contador de programa Nesse circuito observamos que e osinal Clock faz com que o registrador copie a sua entrada que alimentada pela sa da de um multiplexador e este multiplexador escolhe segundo a entrada Force New Address entre o valor corrente do registrador acrescido de 1 resultado da opera o de soma e o valor constante na entrada New Address A unidade de controle se encarrega de colocar nessas entradas os valores adequados nos tempos corretos 2 4 7 A Unidade de Controle cD cD Em ES alimentam t produz t Sinais de Controle
55. e e permitir ao aluno perceber a dificuldade da programa o em baixo n vel e apreciar os ganhos obtidos com o uso de compiladores e interpretadores A interpreta o de conjuntos de bits estabelecida por conven es de c digos que associam a uma determinada configura o de bits um valor num rico ou um n vel de vermelho em uma imagem S o apresentados alguns dos c digos mais comumente utilizados na computa o Circuitos combinat rios isto circuitos digitais que realizam transforma es sobre um conjunto de bits de entrada produzindo outro conjunto de bits como sa da n o t m mem ria e sua sa da em um dado instante fun o apenas dos valores de entrada nesse instante Circuitos combinat rios utilizam portas l gicas que s o componentes que realizam as opera es AND OR e NOT que constituem a lgebra de Boole S o vistos circuitos combinat rios para somas compara es e para direcionamento de fluxo de dados r E Logisim main of Somador4bits File Edit Project Simulate Window Help Miriam DD os d Somador4bits main soma completa Base P Gates Input Output Unchanged bi Label Location North Label Font SansSerif Plain 12 Figura 29 Circuito combinat rio simulado no Logisim que realiza a soma de duas parcelas bin rias de 4 bits Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 18 Circuitos seq
56. em hexadecimal muito teis para acompanhar a execu o do programa pois o Logisim mostra endere os em hexadecimal basta usar a f rmula Excel DEC2HEX Ci 2 para a linha i da coluna Address HEX INPUT Key LOAD Key OMPARE O O Finish Table P Key COMPARE 2 P JMPGT EndSearch LOAD F ADD STORE JP COMPARE TableEnd JMPGT Searchloop OUTPUT 2 P JMP ReadLoop HALT _2 Readloop searchloop a ELI a 1 0 E E 3 4 5 5 T B 9 Ew NEO End earch min Finish P Key ba ba pa ba ba pa bi bi j a EE A EAE TableEnd Figura 161 C lculo dos endere os as setas destacam a c lula C3 e sua f rmula Para obter o mapa de mem ria preciso agora colocar f rmulas para calcular o valor de cada palavra neste mapa Para isso copie as colunas OpCode10 Operand10 Word10 e Word16 da primeira linha do programa SomaxX e cole somente as f rmulas nas mesmas colunas da primeira linha do seu novo programa Depois selecione as c lulas com as f rmulas no novo programa copie e cole nas linhas restantes nestas colunas para obter a planilha completa mostrada na Figura 162 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 93 IF ISBLANK E3 0 INDEX OpCode C 2 C 18 MATCH E3 0pCode B 2 8 18 0 B F Instruction O plodelo 1 2 ReadLoop 3 a 1 Operando q j Key Key D Finish Table F Key P En
57. entrar com o caractere n na verdade com qualquer string diferente de s o loop interrompido e o programa termina Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 116 C lculo das ra zes de diversas equa es de 20 grau continua t while continua Processamento de uma equa o input Digite o valor de a input Digite o valor de b input Digite o valor de c delta b 2 4 a c if delta gt 0 then rl b sgrt delta 2 a r2 b sgrt delta 2 a printf As ra zes s o g e g rl r2 else printf As ra zes s o complexas end Decis o de continua o pelo usu rio decisao input Outra equa o s n string continua decisao s end printf Obrigado e volte sempre Figura 208 O programa Eq2g4 sce que calcula ra zes de diversas equa es de 20 grau A Figura 208 mostra o programa Eg2g4 sce que resulta da aplica o deste padr o sobre o programa Eq2g3 sce O menu Edit Indent Selection do editor Scipad muito til para indentar um bloco de comandos selecionados 3 1 5 Comandos Aninhados Blocos de comandos definidos por comandos como if e for podem conter qualquer tipo de comando incluindo comandos de atribui o de entrada e ou sa da mas tamb m outros ifs e outros for Este aninhamento de comandos proporciona uma grande flexibilidade para o programador Para ilustrar o u
58. entre os pontos a e b com n intervalos x linspace a b n 1 delta x b a n lrs sum f x 1l n delta x scf plot2d2 x f x style 5 axesflag 5 plot2d3 x f x style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx endfunction Figura 341 Fun o para o c lculo da soma de Riemann esquerda function rrs RightRiemannSum f a b n Calcula a soma de Riemann direita da fun o entre os pontos a e b com n intervalos x linspace a b n 1 delta x b a n rrs sum f x 2 nt1 delta x scf plot2d2 x f x 2 n 1 f b style 5 axesflag 5 plot2d3 x f x 2 n 1 f b style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx axesflag 5 endfunction Figura 342 A fun o RightRiemannSum Nestas fun es voc pode observar que e O primeiro par metro de entrada a fun o cuja soma de Riemann ser calculada e Os par metros a e b s o os extremos do intervalo e n o n mero de sub intervalos e A fun o sum do Scilab utilizada para o c lculo da soma dos elementos de um vetor e Para o c lculo das somas somente os tr s primeiros comandos s o necess rios os comandos restantes se destinam ao desenho de um gr fico que ilustra a soma realizada N o dif cil ver que poss vel obter uma aproxima o melhor da rea sob a curva em um sub intervalo se utilizarmos o trap zio definido pelo valor da fun o em seus limites cono mostra
59. estruturas maiores Como veremos ao longo desse curso m dulos s o onipresentes na ci ncia da computa o pois s o fundamentais para o dom nio de sistemas complexos 1 2 Informa o Anal gica e Informa o Digital Computadores s trabalham com informa o e por isso que a palavra inform tica sin nimo de ci ncia da computa o Mas informa o um conceito de dif cil defini o algo em um objeto o objeto suporte que diz alguma coisa sobre outro objeto o objeto alvo ou sobre uma grandeza f sica ou sobre um evento localizado no tempo ou sobre qualquer coisa Quando o objeto suporte da informa o tem uma rela o f sica direta com o objeto alvo da informa o n s dizemos que a informa o ali armazenada informa o anal gica Quando o objeto suporte armazena s mbolos como n meros ou palavras com informa o sobre o objeto alvo n s dizemos que a informa o simb lica ou mais comumente informa o digital Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 5 Figura 7 Filmes fotogr ficos Flickr Um filme fotogr fico revelado objeto em extin o nos dias de hoje registra informa o sobre a cena fotografada Um arquivo JPEG formato comum para imagens digitais tamb m tem Uma mesma cena fotografada com uma m quina tradicional gera informa o anal gica sobre o material foto sens vel que cobre o filme fotografad
60. executar plot 2d x y Por exemplo a sequ ncia de comandos executados na console do Scilab gt x 123421 121241 gt plot2d x y rect 0 0 6 6 onde o par metro rect indica as coordenadas de um ret ngulo que determina os limites de exibi o produz o gr fico mostrado na Figura 301 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 154 0 1 2 3 4 5 6 Figura 301 Um pol gono Se quisermos acrescentar outro pol gono podemos fazer gt w 4 5 5 4 0 5 0 5 1 5 0 517 gt plot2d w z V N obtendo o gr fico mostrado na Figura 302 Pa 0 1 2 3 4 5 6 Figura 302 Dois pol gonos Repare que foram utilizados dois pares de vetores um para cada pol gono desenhado Quando temos muitos pol gonos a desenhar como o caso do mapa que faremos em seguida torna se interessante representar todos os pol gonos em um nico par de vetores com as coordenadas de todos os v rtices preciso entretanto encontrar um meio de informar ao Scilab quais s o os pontos que separam dois pol gonos Isto porque se fizermos V DS Ii x w l l V K Il y z gt plot2d X Y rect 0 0 6 6 vamos obter o desenho da Figura 303 onde o ponto final do primeiro pol gono e o ponto inicial do segundo pol gono foram naturalmente emendados pelo Scilab Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3
61. exemplo a Figura 57 mostra um circuito que corresponde express o a ca b c N o dif cil acreditar que conseguimos obter circuitos para qualquer express o l gica Mas podemos fazer circuitos l gicos que fazem contas Ora todos sabemos que computadores fazem contas e sabemos portanto que a resposta afirmativa Resta saber como 2 2 4 1 Soma de 2 inteiros de 1 bit Vamos come ar por um problema bem simples encontrar um circuito l gico que fa a a soma de dois inteiros representados como bin rios sem sinal de 1 bit cada um Na base 10 o resultado pode ser 0 1 ou 2 Portanto o resultado tamb m codificado como bin rio sem sinal pode ser 00 01 ou 10 Ou seja s o necess rios 2 bits para representar o resultado da soma de duas vari veis de 1 bit importante entender que somar significa obter a representa o como um bin rio sem sinal da soma das entradas entendidas tamb m como bin rios sem sinal Na verdade calcular uma fun o qualquer significa transformar a representa o de seus argumentos na Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 37 representa o do valor da fun o A Figura 58 mostra as entradas e sa das do circuito que pretendemos construir Figura 58 Entradas e sa das de um somador de 1 bit Para especificar exatamente o que desejamos deste circuito vamos utilizar uma tabela da verdade Uma tabela da verdade
62. igual a 1 FatorialR retorna sem outra chamada recursiva o que reduz a quatro o n mero de inst ncias em execu o Isso marca o in cio de uma sequ ncia de Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 151 retornos e de desempilhamentos at termos novamente somente o programa principal em execu o A recursividade portanto uma outra forma de se prescrever um comportamento repetitivo para um programa poss vel por exemplo formular o algoritmo de descoberta do menor valor presente em um vetor como uma fun o recursiva Uma possibilidade usa a seguinte rela o de recorr ncia e selength A 1 0 menor valor presenteem A A 1 e selength A gt 1 0 menor valor presente em o menor entre A 1 eo menor valor presente em A 2 length A o que nos leva a uma formula o recursiva do mesmo algoritmo que usamos na fun o Minimo Outra rela o de recorr ncia que pode ser usada e selength A 1 0 menor valor presenteem A A 1 e selength A gt 1 0 menor valor presente em A o menor dentre o menor valor presente na metade esquerda de A e o menor valor presente na metade direita de A A partir desta segunda rela o de recorr ncia n s podemos derivar a fun o recursiva da Figura 296 function m MinimorR x 1f length x 1 then m x 1 else half int length x 2 minLeft MinimoR x 1 half minRight Minimor x ha
63. importantes O C digo ASCII Para a comunica o de dados entre computadores a ado o de c digos com aceita o mais ampla traz diversas vantagens O c digo ASCII American Standard Code for Information Interchange uma dessas conven es de ampla aceita o em toda a ind stria da computa o A Tabela 3 mostra partes do c digo ASCII adotado desde os anos 60 para a representa o de caracteres como A a etc para o espa o em branco sim o espa o exige uma representa o e para os chamados caracteres de controle como line feed para indicar uma troca de linhas O c digo ASCII oficial usa 7 bits o que permite 2 128 combina es Tendo sido proposto por norte americanos no in cio da era dos computadores n o de se estranhar que ali n o haja provis o de c digo para caracteres acentuados ou cedilhas Estes s o contemplados no c digo ASCII estendido que usa 8 bits para representar 256 caracteres Tabela 3 Exemplos do c digo ASCII Caractere End of Transmission 0000100 Space 0100000 0101000 4 0101011 4 4 4 10 32 0 3 0110000 8 0110001 9 0110010 50 0110011 51 1000001 65 1000010 66 1000011 1100001 97 1100010 98 1100011 Bin rios sem Sinal Um outro crit rio para a escolha de um c digo a sua adequa o para opera es aritm ticas No c digo ASCII estendido o n mero decimal 123 representado pela sequ ncia de 24 bits 00110001 00
64. k lowtl high if m gt A k m A k ws k end end endfunction Figura 324 A fun o SelecionaMenor Como voc pode reparar na Figura 324 as modifica es introduzidas memorizam na vari vel im a posi o onde o m nimo corrente foi encontrado nas situa es em que m atualizada restringem o espa o da busca apenas aos elementos de A com ndices entre os par metros de entrada low e high e acrescentam um par metro de sa da Se a fun o Minimo mereceu a constru o de um programa para seu teste uma boa id ia fazer o mesmo para a fun o MinimoPos que um pouco mais complicada Voc poderia pensar que indiretamente o programa OrdenaPorSelecao teste j o faria mas construir um testador independente tem a vantagem de simplificar o contexto de uso da fun o MinimoPos Programa que testa a fun o MinimoPos getf MinimoPos sci getf PrintMatrix sci a int 10 rand 1 10 PrintMatrix A a inicio input Inicio fim input Fim while inicio gt 0 m im MinimoPos a inicio fim inicio input Inicio fim input Fim end function PrintMatrix Label M printf in s Label for i 1 length M printf 3d M i end printf endfunction Figura 325 O programa MinimoPos_teste e a fun o PrintMatrix A Figura 325 mostra o programa MinimoPos teste sce juntamente com uma fun o auxiliar PrintMatrix cuja utilidade simplesmente a
65. menu Execute Load into Scilab e v rias outras coisas que voc ir aprendendo aos poucos O Scilab trabalha com um diret rio corrente que a primeira op o de localiza o para procurar e para salvar arquivos Na console do Scilab voc pode escolher o diret rio corrente atrav s do menu File Change current directory O diret rio corrente do Scipad o diret rio corrente do Scilab no momento em que o editor aberto Um conselho organize os seus arquivos Perde se muito tempo procurando arquivos gravados n o se lembra aonde O autor destas linhas cria um diret rio para cada semana onde s o colocados todos os arquivos que s o utilizados voc pode adotar uma organiza o similar em seu computador pessoal Ao usar computadores compartilhados crie um diret rio de trabalho com o seu nome o que ir facilitar a sua limpeza posterior AP SciPad 7 18 1 Eg2gl sce File Edit Search Execute Scheme Options Windows Help Ep Bco T delta b d a c A rli b sgrt delta 2 a b sgrt delta z 2 a Line 9 Column 28 Logical line 9 Figura 175 O SciPad editando o programa Eq2g1 sce Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 104 A Figura 175 mostra um programa que tem em cada linha exatamente os mesmos comandos que utilizamos na console para resolver a equa o de 2 grau N s demos a este programa o nome Eg2g1 sce usamos u
66. n meros Isto pode ser resolvido adotando a conven o de usar no arquivo de entrada o valor 1 para representar infinito Com isto podemos construir um arquivo de dist ncias como mostra a Figura 373 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 195 Distancias a Notepad cells ES File Edit Format View Help 0 2 1 3 6 E 2 0 4 3 41 4 0 7 3 3 3 7 0 3 6 1 3 3 0 Figura 373 Arquivo Distancias txt com dist ncias entre as cidades mostradas na Figura 366 Este arquivo pode ser lido diretamente com fscantfMat Ap s a leitura os elementos com valor 1 devem ser substitu dos por inf Voc pode ver este c digo na Figura 374 onde est destacado o comando que faz as substitui es L a matriz de dist ncias Dist fscanfMat uigetfile txt pwd Dist ncias Substitui 1 por Sinf Dist Dist 1 Sinf Figura 374 Leitura do arquivo com dist ncias Para gerar as rotas e calcular seus custos vamos usar a fun o permutations da Figura 371 e tamb m uma fun o cost que recebe como par metros de entrada uma matriz D de dist ncias e um vetor path que cont m os ndices das cidades que comp em uma rota nl nc size Dist nl deve ser igual a nc Rotas permutations 2 nc NL NC size Rotas for i 1 NL Custo 1 cost Dist 1 Rotas i 1 end function c cost D path c 0 for i 1 length path 1
67. ns V Show Sampled Signal I Show Quantization Error Figura 16 A qualidade da digitaliza o melhora com a frequ ncia de amostragem Sinal amostrado com 8 bits e frequ ncia de amostragem de 200 MHz Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 11 Na Figura 16 vemos o mesmo sinal sendo digitalizado com uma frequ ncia de amostragem bem maior O sinal amostrado j est bem pr ximo do sinal original Podemos sempre tentar aumentar a frequ ncia de amostragem mas isso tem custos Se considerarmos que o sinal est sendo amostrado para aprecia o visual por humanos a partir de um certo ponto a qualidade da digitaliza o atingir os nossos limites de acuidade visual Como dissemos a precis o com que a amplitude do sinal em cada amostra digitalizada tamb m influi na qualidade da convers o Amplitude Ww Original Signal Amplitude samplec Signal 4 0 l 4 0 eni 400 bum a00 1000 0 200 400 GOO a00 1000 Time ns Time ns aj fisamplej 200 00 MHz al Poscia Bit M Show Sampling Points sample hs Ww Show Sampled signal Show Quantization Error Figura 17 Sinal amostrado com f 200 MHz mas com apenas 2 bits de resolu o Na Figura 17 n s vemos o efeito do uso de apenas dois bits para a digitaliza o da amplitude em cada amostra e na Figura 18 a digitaliza o com um nico bit Introdu o Organiza o e Programa o de Computa
68. o de Computadores IOPC 2010 2 3 Organiza o de Computadores 80 o D gt ACC D ACC D lt ACC com o resultado da ltima instru o COMPARE executada e o Reset Clock e CLOCK que servem para inicializar o circuito Timing e para dar vida CPU e assa das com sinais que controlam o fluxo de dados na CPU e a mem ria ROM Microprogram que abriga o microprograma com 256 palavras de 24 bits e a mem ria ROM Branch Table com 16 palavras de 8 bits que armazena para cada c digo de instru o Opcode o endere o da primeira microinstru o a ser executada para a execu o da instru o e oregistrador mIR micro Instruction Register com 24 bits que armazena a micro instru o corrente e ocircuito mPC micro Program Counter que funciona de forma an loga ao contador de programa da CPU e o registrador Return Addr de 8 bits que armazena o endere o de retorno para uma micro instru o jsr e ocircuito Timing inicializado pela entrada Reset Clock e alimentado pelo CLOCK que ciclicamente oferece os sinais tO t1 e t2 e o registrador Signals que armazena os sinais utilizados no controle do fluxo de dados da CPU e um splitter ligando o registrador Signals aos pinos de sa da e um decodificador de c digo de instru o e um decodificador de modo de endere amento e portas l gicas que essencialmente implementam decis es de desvio no fluxo de micro instru es e e alguns leds que animam a festa Introdu
69. original e sinal amostrado nos instantes correspondentes aos tra os verticais em vermelho usando 8 bits e frequ ncia de amostragem de 41 67 MHz A Figura 14 ilustra esse processo de digitaliza o Se reconstituirmos este sinal a partir dos valores das amostras mantendo constante o valor do sinal nos intervalos de tempo entre duas amostras iremos obter o sinal direita na figura Sem d vida o sinal reconstitu do se assemelha ao sinal original mas a m qualidade da digitaliza o evidente Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 10 a o e o 1 mu jam a ea r C ooo l ETTER E JE EE RS Sr 0 6 SDS q I I I I I I at I I I I tisample 617 MHz a J Resolution Bit W Show Sampling Points isamplej 162 0 ns W Show Sampled Signal l Show Quantization Error Figura 15 Digitaliza o com frequ ncia de amostragem insuficiente produzindo um sinal completamente distorcido Sinal amostrado com 8 bits e frequ ncia da amostragem 6 17 MHz A qualidade da digitaliza o depende e dafrequ ncia da amostragem e e da precis o com que feita cada amostragem Se diminuirmos a frequ ncia de amostragem o resultado pode ser desastroso como mostrado na Figura 15 se aumentarmos a qualidade melhora IE f sample MHz E Resolution Bit Show Sampling Points sample
70. por uma f rmula que simplesmente verifica se a coluna m Instruction da mesma linha est vazia Colunas Signals S o os sinais que a unidade de controle deve enviar CPU quando a microinstru o for do tipo Signal O micro programador deve colocar 1s nas posi es correspondentes aos sinais desejados Coluna mOpCode DEC um campo calculado que tem o valor O se o campo m Instruction estiver vazio na linha e sen o o c digo decimal da microinstru o obtida por pesquisa por seu mnem nico na planilha Microinstruction Coluna Operand DEC um campo calculado que tem o valor O se o campo Operand estiver vazio na linha e sen o o valor da coluna Address na linha onde o valor na Coluna Label igual ao campo Operand Colunas Bin2Dec Conversion Estas colunas fazem a convers o para decimal de cada bit nas colunas Type e Signals multiplicando o bit pela pot ncia de 2 correspondente sua posi o na microinstru o Coluna Microinstruction Word DEC Esta coluna cont m o valor em decimal da palavra de 24 bits contendo a microinstru o Para compreender sua f rmula de c lculo preciso examinar o formato das microinstru es mostrado na Figura 137 3 a E poca Compatibility Mode Microsoft Exce am s a g an Formulas Data Review viesy W x e xc Calibri u Aa Sm E wapen General E 7 Normal Bad Good Ea E Atosun Ad Fa ER j Copy Neuta omat Calculation ETTA Followed Hy Insert Delete Forma
71. pr prio nome indica um pino de controle que abre ou fecha a conex o com o barramento O projetista de um circuito deve Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 58 cuidar para que a qualquer instante no m ximo um dentre todos os controlled buffers ligados a um mesmo barramento esteja aberto n 7 O registrador A copia o barramento ibera o barramento In 3 Coloca 3 na entrada In In gt Dbus 1 A entrada In controla o barramento BClk 1 O registrador B copia o barramento BClk 0 Abaixa o clock do registrador B In gt Dbus 0 Figura 101 Exemplos de fluxos de dados realiz veis pelo circuito da Figura 100 O circuito da Figura 100 permite que um dado na entrada In seja copiado por qualquer dos registradores A B ou C e permite tamb m que o valor em qualquer registrador seja copiado por qualquer um dos outros registradores Estes fluxos s o controlados pelos sinais de clock dos registradores e de controle dos controlled buffers Dados s o transferidos de um ponto para outro ligando e desligando esses sinais em uma sequ ncia apropriada para a transfer ncia desejada como mostram os exemplos na Figura 101 2 3 3 Mem rias O Logisim oferece mem rias RAM Random Access Memory e ROM Read Only Memory como componentes de sua biblioteca Memory Mem rias armazenam informa es como conjuntos de bits chamados palavras Cada palavra possui um endere o na mem
72. programa Tabuada2 sce resolve estes problemas com a inser o de um printf in executado ao t rmino da impress o de cada linha e com o c digo de formato 3g que fixa 3 colunas para a impress o de cada produto 3 1 6 Arquivos Arquivos s o unidades de armazenamento de dados n o vol teis que sistemas operacionais como Windows ou Linux permitem que sejam recuperados pelo nome e pela posi o em uma organiza o hier rquica de diret rios Um arquivo criado por um programa e pode ser lido e modificado por outros programas programas que muitas vezes s o executados em outros computadores Existem muitos tipos de arquivos que podem ser manipulados por programas Scilab mas neste curso iremos aprender somente a trabalhar com arquivos ASCII isto arquivos que Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 120 normalmente s o leg veis por humanos e que podem ser editados usando programas como o Bloco de Notas do Windows Comandos b sicos para uso de arquivos no Scilab s o e uigetfile que permite ao usu rio selecionar um arquivo navegando nos diret rios do sistema operacional e mopen emclose necess rios para iniciar e para terminar a manipula o de um arquivo por um programa Scilab e mfscanf emfprintf usados para ler e para gravar valores de vari veis em arquivos abertos e meof que permite testar se o fim de um arquivo eof vem de end of fil
73. que poss vel fazer clicando com o bot o direito do mouse sobre o componente mem ria Em computadores reais s o programas chamados loaders que se incumbem de ler m dias com programas bin rios e carreg los na mem ria Um mesmo programa tem portanto tr s formas e Programa Fonte que um texto em formato tabular escrito e leg vel por humanos e Programa Execut vel que resulta da montagem do programa fonte e normalmente um arquivo com uma imagem da mem ria No Logisim um programa execut vel um arquivo ASCII onde cada linha representa uma palavra da mem ria codificada em hexadecimal e e Programa em Execu o que um conjunto de palavras na mem ria principal A Tabela 14 mostra o c digo fonte do programa SumX cuja funcionalidade consiste em somar os valores na mem ria entre o endere o X e o endere o XEND N s vemos ali que o c digo das instru es do endere o O ao endere o 14 est junto com os dados do endere o 15 ao 21 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 71 Esses dados consistem no vetor X que ocupa as posi es de 15 a 19 e em duas outras posi es SUM que ir conter a soma desejada e P que ser utilizado para endere ar a parcela de X que somada em cada passo da execu o do programa Na Pipoca o programa come a a ser executado pela instru o na posi o O da mem ria O programa SumkX tem e Uma
74. reaplicado parte restante da tabela e continua at que ou a chave encontrada ou a parte da tabela em considera o tem tamanho igual a 0 situa o em que podemos concluir que a chave n o consta da tabela A denomina o de pesquisa bin ria vem do fato da divis o do tamanho do problema por 2 a cada passo do algoritmo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 167 function p BinarySearch key table low high 1f high lt low then p 1 else m int lowt high 2 1f key table m then Pp m else 1f key lt table m then p BinarySearch key table low m 1 else p BinarySearch key table m 1 high end end end endfunction Figura 317 A fun o recursiva BinarySearch A Figura 317 mostra uma implementa o direta da pesquisa bin ria como uma fun o recursiva function position binSearch key table low 1 high length table while high low gt 1 m int high low 2 if key gt table m then low m end 1f key lt table m then high m end end if key table high then position high else 1f key table low then position low else position 1 end end endfunction Figura 318 A fun o binSearch A fun o binSearch Figura 318 uma implementa o n o recursiva em Scilab do algoritmo de pesquisa bin ria onde podemos observar que e a fun o utiliza dois ponteiros Low e high que indicam
75. recursiva uma express o direta do algoritmo como mostra a Figura 337 As parti es s o feitas pela fun o partition mostrada na Figura 338 function left middle right partition A pivot A l int length A 2 inf 1 sup length A while sup gt inf while A inf lt pivot inf inf tl end while A sup gt pivot sup sup l end if sup gt inf then temp A inf A inf A sup A sup temp inf inf 1 sup sup l end end left A 1l sup middle A supt1l inf 1 right A inf length A endfunction Figura 338 A fun o partition Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 179 Diversos pontos s o dignos de nota nesta fun o e O piv escolhido como o elemento posicionado ao meio do vetor A Isto n o um requisito do algoritmo que entretanto exige que o piv seja um dos elementos de A Algumas vers es escolhem o primeiro elemento do vetor como piv enquanto outras sorteiam a sua posi o e inf mantido de forma tal que a qualquer momento todos os elementos sua esquerda s o menores ou iguais ao piv Repare que isto v lido inicialmente pois n o existe nenhum elemento sua esquerda e que mantido v lido por todos os comandos e sup mantido de forma tal que a qualquer momento todos os elementos sua direita s o maiores ou iguais ao piv a argumenta o para esta afirmativa an loga empre
76. subintervalos iguais Com isso n s vamos obter n 1 pontos regularmente espa ados que vamos chamar de x4 X2 Xn 1 N s temos x a Xn 1 b Xi 1 X A b a n para todo 1 lt i lt n O lado esquerdo O lado direito de de cada ret ngulo cada ret ngulo coincide com a coincide com a 0 7 0 8 0 9 1 0 X Xin Xi Xi Figura 339 reas cobertas pelas somas de Riemann pela esquerda e pela direita para f x 1 x no intervalo 0 1 A Figura 339 mostra duas formas de se aproximar do valor da integral utilizando somas das reas de ret ngulos conhecidas como soma de Riemann pela esquerda e soma de Riemann pela direita Podemos ver que a rea definida pela soma de Riemann pela esquerda dada por Aesq f x1 My f x2 My f n Ma Ar D FG i 1 enquanto a rea definida pela soma de Riemann pela direita dada por n 1 Agir 100 SGA FO Ay D FC i 2 A medida em que o n mero de intervalos aumenta e o tamanho do intervalo diminui as somas de Riemann v o se aproximando da rea sob a curva como mostra a Figura 340 Somas de Riemann com 16 intervalos As f rmulas das somas de Riemann levam diretamente s suas implementa es mostradas na Figura 341 e na Figura 342 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 181 function lrs LeftRiemannSum f a b n Calcula a soma de Riemann esquerda da fun o
77. timer p MenorFator n tempoGasto timer Imprime o resultado printf i nTempo 8 6fs 6d divis vel por 6d tempoGasto n Pp if n p then printf PRIMO end n input n end Figura 305 O programa Fatora sce Na Figura 305 n s vemos o programa Fatora sce que l n meros e encontra o menor fator divisor dos n meros lidos destacando em sua sa da os n meros primos A verifica o feita pela fun o MenorFator mostrada na Figura 300 Repare como a fun o timer utilizada no programa Fatora sce para medir o tempo gasto na execu o da fun o MenorFator Nosso primeiro experimento muito simples Vamos utilizar o programa Fatora sce para encontrar o menor divisor de 131101 que primo e tamb m de 131103 que n o n 131101 Tempo 3 062500s 131101 divis vel por 131101 PRIMO n 131103 Tempo 0 000000s 131103 divis vel por Figura 306 Tempos para fatorar n meros primos e n o primos Na Figura 306 n s vemos o resultado do experimento Encontrar o menor fator de um n mero primo tomou mais de 3 segundos enquanto o tempo tomado para encontrar o menor fator de um n mero divis vel por 3 foi t o pequeno a fun o timer retornou zero Isso nos leva a importante observa o de que o tempo gasto pode variar muito com a inst ncia de um problema f cil entender o que aconteceu olhando o c digo da fun o MenorFator N meros primos s o o
78. um inteiro pequeno que ser utilizado nas opera es de leitura e de escrita Um arquivo aberto pode e deve ser fechado ao t rmino de sua utiliza o atrav s do comando mclose da onde da o descritor do arquivo obtido no momento de sua abertura Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 122 n lt lista de vari veis gt mfscanf da formato Figura 218 O comando mfscanf A leitura de dados em um arquivo feita pelo comando mfscanf cuja forma est mostrada na Figura 218 A cada execu o s o lidos dados em uma linha do arquivo Como um exemplo de sua utiliza o considere o comando n a b c mfscanf da g g 3g aplicado a um arquivo com os dados mostrados abaixo Este comando faz n 3a 8b 32ec 40 em sua primeira execu o n 3 a 7Tba 21lec 14 na segunda execu o e assim por diante mfprintf da formato lt lista de vari veis gt Figura 219 O comando mfprintf O comando mfprintf bastante similar ao nosso conhecido printf mas por ser aplicado a arquivos exige como par metro extra um descritor de arquivo aberto como mostrado na Figura 219 Para ilustrar o uso de arquivos vamos retornar s equa es de 2 grau mas agora vamos obter os coeficientes das equa es em um arquivo de entrada onde cada linha cont m os coeficientes de uma equa o Um poss vel arquivo de entrada seria o coefs2g txt
79. vetor aplicando repetidamente os passos acima at encontrarmos o limite superior do vetor Precisamos entretanto de um ponto de partida para o algoritmo Isto pode ser facilmente obtido pois claro que parak 1 A 1 o menor elemento entre os k 1 primeiros elementos de A n o Podemos agora chegar vers o final da fun o Minimo mostrada na Figura 289 function m Minimo A Encontra o menor valor presente no vetor A m A l for k 2 length A if m gt A k m A k end end endfunction Figura 289 A fun o M nimo Execute agora o programa TestaMinimo sce voc dever obter uma sa da parecida com a Figura 290 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 149 M nimo exec done Figura 290 Sa da do programa TestaMinimo sce 3 3 4 Recursividade N s vimos que uma fun o pode chamar outra fun o que pode chamar outra fun o que pode chamar outra fun o em um encadeamento de chamadas de profundidade arbitr ria Uma fun o pode tamb m chamar a si pr pria o que a torna uma fun o recursiva N s veremos ao longo desse curso que uma formula o recursiva muitas vezes a forma mais natural para a descri o de um algoritmo Como um primeiro exemplo vamos mostrar uma fun o recursiva para o c lculo do fatorial de um n mero N s sabemos que 1 1 e que paran gt 1 n n n 1 A fun o
80. 000 Este circuito corresponde tabela da verdade na Figura 69 N s veremos a seguir como f cil obter um circuito para esta ou para qualquer outra tabela da verdade de tamanho razo vel utilizando o Logisim Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 43 Figura 69 Tabela da verdade para o circuito SomaUm Janela de An lise Combinat ria O primeiro passo abrir a janela de an lise combinat ria do Logisim o que feito conforme ilustrado na Figura 70 Logisim main of Untitled P BR Fie Edk Project Smdste EINE Help dk Ae Ala a Mme Ctri M r Zoom 4 Untied a man Conmbnatona Anaiyss Base entitled E jGses Figura 70 Abrindo a janela de an lise combinat ria do Logisim No passo seguinte n s informamos ao Logisim os nomes das vari veis de entrada Devemos clicar sobre a aba Inputs se n o estiver j selecionada e para cada vari vel de entrada digitar o seu nome e clicar sobre o bot o Add conforme a Figura 71 Combinational Analysis Window Help Bputs Table Expression Minimized Figura 71 Vari veis de entrada de uma tabela da verdade no Logisim Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 44 Entre com as vari veis na ordem da esquerda para a direita em que voc deseja que elas apare am na tabela da verdade No caso primeiro a2 depois a1 e
81. 110010 00110011 onde colocamos espa os para facilitar a leitura Para n meros a interpreta o de um conjunto de bits como um n mero bin rio leva a c digos mais compactos e que como veremos permitem a realiza o de opera es de soma por circuitos mais simples mais r pidos e mais baratos Tabela 4 10 primeiras pot ncias de 2 njoj1 2 3 4 5 6 7 8 759 10 fot a 2 4 f s 16 32 64 125 256 s12 1024 O decimal 123 pode ser representado em bin rio por 1111011 utilizando apenas 7 bits Esta representa o vem do fato que 123 1 26 1 2 1 24 1 23 0 22 1 21 1 2 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 24 Tabela 5 Representa o dos n meros de 0 a 15 como bin rios sem sinal de 4 bits Decimal o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A convers o de 12349 para 1111011 pode ser feita com o seguinte m todo para convers o bin rio decimal e N s precisamos expressar 123 como uma soma de pot ncias de 2 Para isso procuramos em uma tabela de pot ncias de 2 como a Tabela 4 a tabela deve chegar at uma pot ncia de 2 maior que o n mero a ser convertido o maior valor que n o exceda 123 o que no caso 64 Temos 123 64 123 64 64 59 e Temos agora que expressar 59 como uma soma de pot ncias de 2 Na Tabela 4 a maior pot ncia de 2 que n o excede 59 32 Repetindo o racioc nio temos 59 32
82. 1101 divis vel por 131101 PRIMO n 131101 Tempo 3 015625s 131101 divis vel por 131101 PRIMO Figura 308 Varia es no tempo de execu o de um programa com os mesmos dados de entrada Voc pode ver que um mesmo programa apresenta varia es no tempo gasto para a fatora o do mesmo n mero primo Isso se deve a uma s rie de fatores o principal deles sendo o fato de que em um sistema operacional como o Windows ou o Linux um programa n o executa sozinho mas compartilha o processador e outros recursos do computador com outros programas e com o pr prio sistema operacional Esse compartilhamento coordenado pelo sistema operacional e o programador Scilab n o tem qualquer controle sobre a forma como se d este compartilhamento por isso que uma mesma fun o chamada com os mesmos par metros pode apresentar diferen as de desempenho a cada execu o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 161 Tabela 20 Tempos segundos gastos com a fun o MenorFator em um notebook e em um desktop 257 Outro experimento procura capturar o impacto do valor do n mero primo recebido como par metro sobre o tempo de execu o da fun o MenorF ator A Tabela 20 mostra os resultados obtidos com diversos n meros primos obtidos com dois computadores com velocidades distintas O gr fico da Figura 309 resulta desta tabela e ele torna clara a rela o de linearidade e
83. 167 todas as vari veis envolvidas na lt express o gt devem ter valores definidos no momento da execu o do comando Vale ainda observar que a lt express o gt pode conter a lt vari vel alvo gt em um arranjo similar ao utilizado nos registradores acumuladores gt a 3 1415927 2 8piD cos a sqrt b i V 0 Il 1 5066283 Figura 168 Exemplos de comandos de atribui o com vari veis com valor pr definido supress o de eco e fun es elementares O Scilab oferece tamb m vari veis com valores pr definidos como pi ou eps e uma enorme variedade de fun es pr definidas veja a Figura 169 Um detalhe muito til a possibilidade de supress o do eco autom tico que algumas vezes polui a tela com informa o desnecess ria e que obtido com o uso de um colocado ap s o comando de atribui o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab MM E Help Browser Help Browser lt 2 88 we To ET T E e e E eb e 8 8 2 e e e Ea E Compatibility Functions Completion Console Data Structures Development tools Differential Equations Dynamic incremental Link Elementary Functions FFTW Files Input Output functions Functions GUI Genetic Algorithms Graphics exporting and print Graphics Library History manager Teni
84. 1946 Considere um estoque ilimitado de domin s de um n mero finito de tipos E 1 E 2 3 Figura 379 Exemplo de domin s para o problema da Correspond ncia de Post Todos os domin s de um tipo t m um mesmo string de Os e 1s na parte de cima e outro na parte de baixo O problema da correspond ncia de Post resolvido se voc encontrar uma sequ ncia de domin s tal que os strings formados pela concatena o dos strings superiores e inferiores sejam iguais A Figura 380 mostra uma solu o para o problema proposto na Figura 379 100 0 1 1 100 010 Va 1 100 100 1 0 0 00 1 1 00 100 100 1001100100100 Figura 380 Uma solu o com 7 domin s Vamos representar uma sequ ncia de domin s por um vetor de ndices como 1311322 que significa um domin do tipo 1 seguido de um domin do tipo 3 seguido de dois do tipo 1 seguido de um domin do tipo 2 seguido por dois do tipo 2 Para resolver o problema de Post n s vamos novamente usar um algoritmo for a bruta que gera todas as sequ ncias poss veis de domin s come ando pelas menores Se tivermos 3 tipos de domin s as primeiras sequ ncias geradas s o 1 2 3 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 1 1 1 1 1 2 1 1 3 1 2 1 e assim por diante Voc pode ver que a gera o das sequ ncias pode ser feita por um processo equivalente contagem em um sistema de base 3 sem o algarismo O e incluindo o
85. 2 3 5 Uma Calculadora gooo ooo o oc DONO P DONO ni vo Cera NS Perca AC 0o00 gooo Loc Do A O e NC ACC CIk ACC Clear 3 do r go ca i l l x l l Subtract Figura 108 Circuito com as mesmas rotas de dados da CPU Pipoca A Figura 108 mostra um circuito com alguns dos principais componentes de uma CPU Ali vemos ligados a um barramento de 16 bits e Registradores In e Out ligados tamb m a entradas e sa das de 16 bits e Um registrador de dados o DR e Uma mem ria principal com 256 palavras e consequentemente no Logisim 8 bits de endere o de 16 bits e Uma unidade l gico aritm tica que um circuito combinat rio com duas entradas uma ligada ao barramento e outra sa da do acumulador A ALU Arithmetic and Logical Unit capaz de realizar somas subtra es e compara es entre suas duas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores entradas Outras opera es que uma ALU poderia fazer incluem opera es l gicas AND OR etc e de deslocamento shift de bits Um registrador acumulador alimentado pela sa da de resultado de opera o da unidade l gico aritm tica Um registrador de resultado de compara o tamb m alimentado pela ALU 62 Temos ainda o registrador MAR que alimenta a entrada de endere o da mem ria principal e que alimentado pelos 8 bits menos significativos do barramento A biblioteca Input Output do
86. 25 Matrizes e a fun o size Uma matriz cresce quando atribu mos valores a elementos com ndices superiores aos ndices j referenciados Por exemplo quando fazemos x 7 estamos criando uma matriz 1 x 1 se em seguida fizermos x 2 3 13 a matriz x assume as dimens es 2 x3 e os elementos n o referenciados recebem o valor zero como mostrado na Figura 226 gt x 7 matriz 1x1 7 0 0 O O Figura 226 Expans o de uma matriz Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 126 3 2 2 Vetores linha e coluna Vetores s o matrizes de uma nica linha ou de uma nica coluna A Figura 227 mostra a cria o na console do Scilab de um vetor linha e de um vetor coluna gt v 10 20 30 10 20 30 bu 10 20 30 Figura 227 Um vetor linha e um vetor coluna 3 2 3 Referenciando partes de uma matriz O Scilab permite que uma parte de uma matriz seja referenciada tanto para a atribui o de valores como para a recupera o de valores armazenados Figura 228 Atribuindo um valor a uma parte de uma matriz Se x uma matriz 7x5 x 2 4 3 5 denota a parte da matriz compreendida pela interse o das linhas de 2 a 4 e das colunas de 3 a 5 como mostrado na Figura 228 X 40 58 38 T3 e 4 58 87 68 92 26 Ed 67 48 El 89 94 49 22 20 22 19 50 34 26 62 39 84 56 34 37 52 76 83 12
87. 4b 2b bo N s adotaremos neste texto a conven o de designar sempre por b o bit menos significativo e por Db o bit mais significativo de uma sequ ncia b de n bits O valor representado por 101 portanto dado por V 4 1 2 0 1 1 3 Voc pode estar se perguntando como que algu m pode preferir usar complemento de 2 sendo que as propostas anteriores s o mais simples e intuitivas A resposta simples e decisiva para todos os fabricantes de computadores a representa o em complemento de 2 tem propriedades que permitem uma grande economia na constru o de circuitos Para se obter o complemento de um n mero basta complement lo bit a bit e somar 1 Por exemplo 2 representado por 010 complementando bit a bit obtemos 101 somando 1 chegamos a 110 que a representa o de 2 Isso permite aos fabricantes aproveitar para fazer subtra es o mesmo circuito utilizado para fazer somas com acr scimos m nimos de hardware Ponto Flutuante A representa o em um n mero limitado de bits de valores muito grandes ou muito pequenos utiliza mecanismos para sua codifica o similares aos que usamos na nota o cient fica com pot ncias de 10 O n mero de Avogadro por exemplo notado por Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 26 6 02 x 1023 e o di metro de um tomo de hidrog nio de 1 x 107 metros Para o n mero de Avo
88. 5 7690 N s sabemos que as ra zes s o encontradas pelas f rmulas b vVA ig 2a e CC b NA 2a onde A b 4ac A primeira coisa a fazer inicializar vari veis a b e c conforme mostrado na Figura 171 gt a 534 2765 a 534 2765 gt b 9987 3431 b 9987 3431 gt Cc 225 7690 cC 225 769 Figura 171 Inicializa o dos coeficientes de uma equa o de 20 grau Depois calculamos e as ra zes como mostrado na Figura 172 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 102 gt delta b 2 4 a c delta 99264530 gt brl b sgrt delta 2 a ri 0 0226329 gt br2 b sgrt delta 2 a r2 18 670578 Figura 172 C lculo das ra zes da equa o de 20 grau Repare que usamos vari veis delta r1 e r2 com nomes aceit veis para o Scilab e com significado para n s Repare tamb m nas express es usadas nos comandos de atribui o Erros comuns cometidos por iniciantes s o e escrever delta b 2 4ac omitindo os operadores de multiplica o que entretanto s o imprescind veis para que o Scilab compreenda a express o ou e escreverri b sgrt delta 2 a o que na verdade levaria ao c lculo de D o NH a O que nao e o que queremos Sempre bom verificar os resultados de um c lculo ou de um programa Para isso podemos tamb m usar o Scilab com o
89. 66 4 3 Ordena Oan E E E EE O OAN 168 4 3 1 Selecao e TROCAS N A AN 168 4 3 2 Intercalacao IMErBeSOrt aeea A 173 4 3 3 Particao QUICKSOT E aree E NO O 177 4 3 4 Dividir para Conguista anane a a Doado 179 4 4 Algoritmos NUM FICOS iesse E E da andei ca ada 179 4 4 1 Integra o por Trapezio S osnan AN A a 180 4 4 2 BISSO O urn A A TNN 183 4 4 3 S rie de Taylor para exp x e Cancelamento Catastr fico secese 188 4 5 Barreiras de Complexidade sarosa E A E 191 4 5 1 Problemas np completos O Problema do Caixeiro Viajante 191 4 5 2 Problemas indecid veis O Problema da Correspond ncia de Post 198 Notas Finais e Pr ximos PASSOS asus siinirr ra emanada nda sau sea T oia E add a o 204 Indice Remiss Onena a anda sb ESSES 208 RELCLCNCIAS aeaa E N Dr aa E Rr a 211 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Aos Professores Programa o de Computadores a disciplina mais tradicionalmente oferecida por departamentos de Ci ncia da Computa o e geralmente tamb m a de maior n mero de matr culas Na UFMG Programa o de Computadores j era oferecida para Ci ncias e Engenharias desde antes da cria o do departamento Seu c digo DCC001 o que d uma id ia de sua venerabilidade Este texto parte integrante de um conjunto de materiais pedag gicos para esta disciplina produzidos com a inten o de serem usados em um curso de 60 horas aula d
90. C UR LL P o 0 0 D l l 0 l l 0 No D l 0 0 0 1 0 D 0 D l 0 0 l l l l 0 0 0 l l 0 l l l 0 0 0 1 0 D l 0 1 l 0 0 0 l 0 1 l l l 00 0 i l l 0 l l l 0 l 0 i 1 1 l 0 l 0 l 0 D 1 0 0 0 l l 1 1 l 0 l 0 D 1 l l l i 0 i 0 i 0 1 i 1 i 0 l l l 0 l l l pod l 1 l i 1 0 0 1 1 1 0 l Build Circuit Figura 80 A tabela da verdade completa para o display hexadecimal com destaque para a determina o das sa das para formar um F Feito isso basta apertar Build Circuit para obter o circuito da Figura 81 Parece complicado Pode ser mas isso n o um problema O circuito foi constru do automaticamente a partir de uma tabela da verdade usando algoritmos do Logisim que s o melhorias do m todo que vimos para obten o de somas can nicas Isso nos garante a sua corre o E ele pode ser usado como um m dulo esquecendo completamente seus detalhes como fizemos na Figura 79 Figura 81 Circuito gerado automaticamente pelo Logisim para o controlador de display hexadecimal 2 2 6 Compara o de bin rios sem sinal Figura 82 Entradas e sa das de um circuito comparador Vimos na se o 2 2 4 que circuitos l gicos podem realizar opera es aritm ticas Vamos agora atacar o problema de construir circuitos l gicos que permitam comparar duas vari veis a e b Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 49 de digamos 32 bits cada uma A sa da do cir
91. Coloca o resultado emP_ 10 21 40981 A015 i io oa compare o rn compara XEND com o acumulador 1 19 a11s 1013 JA jajoBpmerr O FINISH _ Se for menor desvia para FINISH 7 13 28685 700D gt 1 12 oc imP___ o LOOP_ Sen o volta para LOOP a 4 16388 4004 Emsa 18 fov fourur a sum coloca resutado nasaida o 20 ayoo seia To 5143 sia2 oci6 To fasaa asa2 tape N meros a serem somados 0 3325 3325 OCFD To 1234 1234 0402 To 8786 8786 2252 0 0 c 0000 oj 0 0 00 md Li td S o OpCode10 glo Operand10 Word10 JE Word16 j um 0o 0x 0000010100 1000 0100 0001 0100 8414 o Figura 127 Montagem de uma instru o A convers o para bin rio de uma linha de c digo como LOAD 1 SUM se faz pelas etapas abaixo ilustradas na Figura 127 e Na Tabela 12 vemos que o c digo da instru o LOAD 1000 e O modo de endere amento codificado em bin rio com 2 bits 01 e Olhando o programa na Tabela 14 n s vemos que SUM o nome label dado posi o 20 de mem ria que em bin rio de 10 bits 0000010100 e A convers o completa resulta da concatena o justaposi o desses tr s bin rios resultando em 1000010000010100 ou em hexadecimal 8414 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 73 Como voc pode ter percebido a tradu o da tabela programa para bin rio uma tar
92. Conceito end end end end end Figura 211 Outro exemplo da influ ncia da indenta o na legibilidade de um comando Vamos agora desenvolver um programa que produza uma tabuada de multiplica o como mostrado na Figura 212 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 119 6 8 10 12 14 16 18 9 12 15 18 21 24 27 12 16 20 24 28 32 36 10 15 20 25 30 35 40 45 12 18 24 30 36 42 48 54 14 21 28 35 42 49 56 63 16 24 32 40 48 56 64 72 18 27 36 45 54 63 72 81 Figura 212 Tabuada de Multiplica o Oo o A N O o N OURA UWVN Be Um problema como este se resolve com dois for aninhados um externo para as linhas e um interno para as colunas de cada linha o que feito pelo programa Tabuada1 sce mostrado na Figura 213 Tabuada de multiplica o for linha 1 9 for coluna 1 9 printf g linha coluna end end Figura 213 O programa Tabuada1 sce Ao executar este programa verificamos entretanto que sua sa da est inintelig vel 12345678924681012141618369121518212 formando uma longa sequ ncia de algarismos sem separa o todos em uma nica linha O que houve Esquecemos de orientar o Scilab para mudar de linha e tamb m para dentro de cada linha separar cada coluna Tabuada de multiplica o for linha 1 9 for coluna 1 9 printf 3 39 linha coluna end printf in end Figura 214 O programa Tabuada2 sce O
93. Exemplos de uso dos operadores l gicos not amp and e or na console do Scilab Al m de valores l gicos vari veis Scilab podem armazenar dados n o num ricos Na Figura 199 n s vemos exemplos de como atribuir sequ ncias de caracteres o termo usado em ingl s strings a vari veis Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 113 gt ba Programa o a Programa o gt b de b de gt C Computadores C Computadores Figura 199 Atribuindo strings a vari veis Strings s o escritos entre aspas simples ou duplas Voc pode mesmo iniciar um string com aspas duplas e termin lo com aspas simples gt a Programa o gt b de gt c Computadores gt Disciplina at b c Disciplina Programa o de Computadores Figura 200 Concatena o de strings Uma opera o comum com strings a concatena o que consiste na justaposi o de dois strings No Scilab a concatena o utiliza o mesmo s mbolo da adi o num rica o gt x String com aspas error 276 Missing operator comma or semicolon Figura 201 Erro ao tentar representar um string contendo aspas Aspas s o usadas para marcar o in cio e o fim de strings e isto pode provocar um problema ao se tentar representar strings que cont m aspas como mostrado na Figura 201 P
94. Introdu o Organiza o e Programa o de Computadores usando Logisim e Scilab Osvaldo Carvalho Departamento de Ci ncia da Computa o UFMG osvaldo D dcc ufmg br 2 Semestre de 2010 IOPC 2010 2 3 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Conte do 1 Intro 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 7 1 1 7 2 1 7 3 2 Orga 2 1 2 2 2 2 1 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 2 7 2 3 2 3 1 2 3 2 2 3 3 2 3 4 2 3 5 2 3 6 2 4 2 4 1 2 4 2 2 4 3 2 4 4 2 4 5 O 0 TO T T ASPRDRD E 1 ON UAOO sur iacsisG dois ala E senna sind di 1 Informa o Anal gica e Informa o Digital susesseussseesssseresrrrrssreresrrerssrrresrrererreress 4 Computadores e Informa o ssssssseessseesessrresrrrresrrerssrrresrrerssreressreesserressreesseeresererserere 7 Convers es an logo digital e digital anal gica eeseseeesessrseesrrresrrererrressrreresrrrsssrere 8 Sensores e atuador S oeren dada cce a tuan has a gado ndnd do 12 MEMON Eee E E E E A E E E E E 15 Organiza o do TEXtOscercirisein n ES 17 Organiza o de Computadores ssseesseessrerssressreesrrresressrresrersseersreesseresrerseeres 17 Linguagem e Ambiente Scilab sosessesssussseenssreenssreresrresssrrresrrersrreresrrressreresrrrssene 18 Algoritmos e Programas nirsisiciisrsirees istriiseiiasn riccenn a nE E aE r Ea naasis 21 nizacao de Computadores erain iE a 23 PL CTO 24 6 e E DR ER 23 Cir
95. MAR vai para o Abus 15 21 Sa da da RAM vai para Dbus 16 22 1 DR copia o Dbus 17 23 return Retorna Figura 153 Micro c digo para a subrotina GetOperand Com exce o da instru o HALT o micro c digo de todas as outras micro instru es invoca a sub rotina GetOperand No in cio da execu o de GetOperand feito um desvio para sequ ncias micro instru es que emitem os sinais de controle necess rios para a obten o do operando segundo o modo de endere amento Essas sequ ncias t m os labels Immediate Direct e Indirect e todas as tr s terminam com uma micro instru o return que retorna para o ponto onde a GetOperand foi chamada Comments ea W v Ild o o d o o L lt 27 39 JMP jsr GetOperand 1 Resolve endere amento operando efetivo no DR 28 40 0 Sa da do DR vai para Dbus for a desvio no PC 29 41 PC copia Dbus 2A 42 jmp Fetch 1 Fetch da pr xima instru o 2B 43 JMPEQ jmpEQ JMP 1 Desvio condicional para JMP 2C 44 jmp Fetch 1 Fetch da pr xima instru o 2D 45 JMPGT jmpGT JMP 1 Desvio condicional para JMP 2E 46 jmp Fetch 1 Fetch da pr xima instru o 2F 47 JMPLT jmpLT JMP 1 Desvio condicional para JMP 30 48 jmp Fetch 1 Fetch da pr xima instru o Figura 154 Micro c digo para as instru es JMP JMPEQ JMPGT e JMPLT Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 88 O micro c dig
96. MinRec que gera legendas para cada curva em no gr fico e e ocomando xtitle que determina t tulos para o gr fico e para cada um dos eixos Temperaturas Mensais em BH 40 35 30 20 Graus C 0 2 4 6 8 10 12 MaxMed M Min Rec MinMed pa MaxRec Figura 262 Gr fico gerado pelo programa da Figura 261 Na Figura 262 voc pode ver o efeito destas t cnicas sobre o gr fico 3 2 9 Matrizes e express es l gicas O resultado de uma express o relacional envolvendo matrizes uma matriz de valores booleanos que resultam da express o aplicada elemento a elemento como mostram os exemplos na Figura 263 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 139 ba 3 7 8 2 a 3 Ta 8 Es Figura 263 Express es relacionais gerando matrizes booleanas Uma express o relacional envolvendo matrizes pode ser empregada em um comando if mas isso deve ser feito com muito cuidado pois a cl usula then s ser executada se todos os elementos da matriz booleana resultante forem iguais a t A Figura 264 mostra um exemplo onde somente o segundo if tem a sua cl usula then executada pois a matriz resultante da compara o a gt 0 tem todos os elementos iguais a St ba de Le 4 gt U y O 3 gt bijf a gt then x 10000 end gt D1if a gt U then y 10000 end gt x y ans O 10000 Figura 264 Exemplos
97. Primo then printf nO n mero d primo in in n else printf nO n mero d n o primo inin n end n input n end Figura 314 0 programa VerificaPrimos3 sci que utiliza pesquisa sequencial A fun o Primo3 apenas um envelope sobre uma fun o de pesquisa sequencial como mostra a Figura 315 function ePrimo Primo3 n tabela ePrimo segSearch n tabela 1 endfunction Figura 315 A fun o Primo3 A fun o segSearch mostrada na Figura 316 implanta uma pesquisa sequencial Ali podemos observar que Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 166 e Ovetor table examinado sequencialmente a partir de sua primeira posi o e Oloop de pesquisa p ra por um de dois motivos quando o limite superior da tabela for atingido ou quando a chave for encontrada e Ap s a sa da do loop feito um teste para se saber por qual motivo o loop while terminou e Sea chave procurada n o consta da tabela o par metro de sa da p recebe o valor 1 uma conven o til para quem chama a fun o como a fun o Primo3 function p segSearch key table i 1 while i lt length table amp table i key 1 1 end if i lt length table then p i else p 1 end endfunction Figura 316 A fun o seqSearch para pesquisa seq encial Quanto complexidade da pesquisa seq encial n o dif cil ver que se n o tamanho d
98. Seu nome string Seu nome Jose Nome Jose Figura 204 Exemplos de uso do comando input na console do Scilab Obs No Scilab 5 1 1 h um bug que impede a leitura de strings com caracteres acentuados ou cedilhas Vamos agora exercitar nossas novas habilidades fazendo um programa que LM e Leia o nome do aluno que responde por exemplo Jos e Leia tamb m o total de pontos obtidos pelo aluno e Imprima conforme o caso a frase lt aluno gt com lt pontos gt voc passou ou ent o caso o aluno n o tenha obtido um m nimo de 60 pontos a frase lt aluno gt com lt pontos gt voc n o passou Exemplos seriam Jos com 80 pontos voc passou ou Jos com 40 pontos voc n o passou Leitura do nome do aluno Nome input Seu nome por favor Leitura dos pontos obtidos Pontos input Nome quantos pontos voc conseguiu Decis o e impress o do resultado 1f Pontos gt 60 then printf s com g pontos voc passou Nome Pontos else printf s com g pontos voc n o passou Nome Pontos end Figura 205 O programa PassouNaoPassou sce A Figura 205 mostra o programa PassouNaoPassou sce que atende a esta especifica o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 115 Seu nome por favor Maria Maria quantos pontos voc conseguiu 90 Maria com 90 pontos voc passou Seu nome p
99. X e ReadX do arquivo Pipoca xls cont m programas em Assembler e produzem imagens de mem ria a serem carregadas na RAM da CPU Para explicar estas planilhas n s vamos mostrar como se constr i um novo programa Address DEC AddressiHEX nstruction INPUT LOAD COMPARE JMPEQ LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE COMPARE JMPGT OUTPUT JMF HALT ReadLoop Key Key 0 Finish Table F Key P EndSearch F emel le jSjre searchLoop a 6a em tn do jts ta rs e l P TableEnd Searchloop F ReadLoop 16 EndSearch 17 18 Finish 19 P 20 Key Table o 0 1 0 0 0 0 1 2 O 1 0 O 0 0 z 0 Hs m pai 22 23 24 25 26 EF 28 29 TableEnd Figura 160 O programa SearchX O primeiro passo consiste em copiar o cabe alho de um dos programas j existentes em uma nova planilha e ali codificar o seu programa como mostrado na Figura 160 Aqui devem ser Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 92 colocados tamb m os tamanhos de cada instru o ou vari vel todos iguais a 1 neste programa Depois calcule os endere os colocando O zero na primeira linha da coluna Address DEC e nas linhas seguintes desta coluna a f rmula que soma o endere o e o tamanho da linha anterior para obter o endere o da linha corrente como mostrado na Figura 161 Para obter os endere os
100. a Comments Sa Ls TE ra Ke lt 31 49 LOAD o Zera o ACC 32 50 jsr GetOperand 1 Resolve endere amento operando efetivo no DR 33 51 o Sa da do DR vai para Dbus OM ACC copia sua entrada O Dbus 35 53 jmp Fetch 1 Fetch da pr xima instru o 3B 59 STORE jsr GetOperand 1 Resolve endere amento operando efetivo no DR 3C 60 o Sa da do DR vai para Dbus 3D 61 MAR copia o Dbus sa da do MAR vai para o Abus 3E 62 Sa da do ACC vai para Dbus 3F 63 1 RAM copia o Dbus 40 64 jmp Fetch Fetch da pr xima instru o Figura 156 Micro c digo para as instru es LOAD e STORE O micro c digo para as instru es LOAD e STORE est mostrado na Figura 156 e n o apresenta novidades Comments 45 69 HALT jmp HALT GI O SSS S S O O O O OO If 1 Juoopinfinito parada fina Figura 157 Micro c digo para a instru o HALT A instru o HALT implantada por uma micro instru o de desvio incondicional para ela mesma o que coloca a CPU em um loop infinito e para o processamento Introdu o Organiza o e Programa o de Computadores IOPC 2010_2 3 Organiza o de Computadores 89 2 4 10 A Planilha Pipoca xls Para funcionar a Pipoca depende de ter preenchidas suas mem rias RAM e ROM o que pode ser feito no Logisim atrav s da carga de arquivos com mapas de mem ria Mas como fazer para obter mapas que correspondem a uma inten o do projetista de instr
101. a em informa o de sa da e que em boa parte independente da linguagem particular em que est descrito A transforma o desejada definida por uma especifica o que resulta de uma an lise de um problema A 39 24 50 42 28 8 62 34 70 52 Figura 35 Como encontrar o menor valor em uma cole o de n meros Como um exemplo queremos encontrar o menor valor presente em uma cole o de n meros Com 10 n meros como mostrados na Figura 35 f cil podemos faz lo por inspe o visual Mas como encontrar o menor valor entre digamos 50 000 n meros Para isso precisamos de um algoritmo isto de um m todo que tenha como informa o de entrada a cole o de n meros e como sa da o menor valor ali presente Em programa o uma cole o de n meros chamada vetor O primeiro elemento de um vetor A notado A 1 o quinto A 5 o n simo A n Queremos portanto construir um algoritmo que encontre o menor valor em um vetor de tamanho arbitr rio Para isso vamos come ar com o caso mais simples poss vel um vetor com um nico elemento que obviamente o menor elemento presente no vetor Tudo bem mas queremos trabalhar com vetores grandes de verdade Para avan ar usamos indu o Suponhamos que de alguma forma descobrimos que o menor valor entre os k primeiros elementos de um vetor de tamanho n m Podemos ent o inferir que o menor valor entre os k 1 primeiros elementos de 4 o menor entrem
102. a tabela o n mero de compara es com a chave feito em uma pesquisa por um elemento presente na tabela varia entre 1 e n pesquisas por elementos que n o constam da tabela o que constitui o pior caso consomem sempre n compara es com a chave Se considerarmos todas as chaves presentes na tabela como tendo a mesma probabilidade de serem pesquisadas o algoritmo far em m dia n 2 compara es por pesquisa por chave constante da tabela O n mero de compara es cresce portanto linearmente com o tamanho da tabela e n s dizemos que o algoritmo de pesquisa sequencial O n ou seja da ordem de n ou ainda dizemos que a pesquisa sequencial tem complexidade linear 4 2 2 Pesquisa Bin ria Quando a tabela tem suas entradas dispostas em ordem crescente ou decrescente n s podemos usar um algoritmo muito mais eficiente para a pesquisa e que se assemelha ao m todo como n s humanos procuramos palavras em um dicion rio A primeira compara o feita n o com o primeiro elemento da tabela mas com o elemento no meio da tabela Supondo que os elementos da tabela est o em ordem crescente se a chave procurada for menor que o elemento no meio da tabela podemos restringir a pesquisa metade inferior da tabela pois a parte superior s cont m elementos maiores do que a chave procurada Da mesma forma se a chave procurada for maior que o elemento no meio da tabela podemos restringir a pesquisa metade superior da tabela O m todo
103. a cada passo qual parte da tabela que pode conter a chave procurada A condi o low lt high mantida em todas as altera es de valores dessas vari veis e a cada passagem do loop o elemento comparado com a chave buscada est na posi o m int high low 2 e o ponteiro low tratado de forma a manter sempre a afirmativa se key lt table low ent o key n o consta da tabela que valida inicialmente e que permanece v lida a cada atualiza o de low Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 168 e o ponteiro high cumpre papel similar mantendo sempre v lida a afirmativa se key gt table high ent o key n o consta da tabela e quando o loop termina a parte da tabela que pode conter um elemento igual chave est entre low e high e pela condi o de t rmino do loop e pela rela o entre Low ehigh 0 lt high low lt 1 e os testes que sucedem ao loop permitem decidir se a tabela cont m ou n o um elemento igual chave procurada A an lise da complexidade do pior caso da pesquisa bin ria simples A cada passo o tamanho da parte da tabela que pode conter a chave dividido por 2 e o algoritmo termina quando o tamanho desta parte igual a 1 Se a tabela tem n elementos teremos no pior caso log gt n compara es onde x indica a fun o teto que mapeia um n mero real x no menor inteiro maior ou igual a x No caso da tabela
104. a com uma m quina digital gera s mbolos ou seja informa o digital pode ser Informa o Informa o Anal gica DILLE L Figura 8 Informa o anal gica e digital Um term metro caseiro um objeto que fornece informa o sobre a temperatura do ar ou do corpo de uma crian a pois fen menos de dilata o fazem com que a altura da coluna de merc rio seja proporcional temperatura medida N s dizemos que a informa o obtida por um exame direto do term metro uma informa o anal gica Ponto de ebuli o da gua Corpo humano Ponto de fus o do gelo Figura 9 Um term metro Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 6 Com o uso de uma escala um m dico pode anotar em um papel a temperatura de seu paciente Ao faz lo a informa o sobre a temperatura passa de anal gica a altura da coluna de merc rio para informa o digital ou simb lica o n mero anotado pelo m dico Ponto de ebuli o 100 lt r d da agua 80 60 50 E Corpo humano 20 10 Ponto de fus o do gelo Figura 10 Um term metro com escala Existe uma perda nessa transforma o o m dico ir anotar o n mero correspondente ao tracinho mais pr ximo extremidade da coluna talvez com uma proxima o entre dois tracinhos mas n o a sua altura exata Para o m dico essa perda perfeitamen
105. a fun o elementar Scilab a um vetor A Figura 248 mostra outra forma de se construir uma matriz a partir de uma matriz j existente atrav s da aplica o de uma fun o elementar do Scilab a uma matriz A matriz produzida tem as mesmas dimens es da matriz passada como argumento e cada elemento resulta da aplica o da fun o ao elemento correspondente da matriz original 3 2 6 Matrizes e Gr ficos Matrizes e vetores s o imprescind veis para a constru o de gr ficos no Scilab O comando mais simples para a gera o de um gr fico plot2d x y onde x e y s o vetores com o mesmo n mero de pontos O Scilab constr i um gr fico unindo por segmentos de reta os pontos x 1 y 1 x 2 y 2 e assim por diante at o ltimo par de pontos gt x 1 4 7 11 y 12 6 15 7 gt plot2d x y 1 2 3 4 5 6 7 8 9 10 11 Figura 249 Exemplo de gr fico obtido com plot2d A Figura 249 mostra um exemplo de gr fico obtido com o comando plot2d outro exemplo est na Figura 250 que mostra que pol gonos arbitr rios podem ser tra ados com plot2d Uma infinidade de par metros pode ser utilizada no comando plot 2d determinando cores e espessuras de linhas tracejados escalas etc Neste curso n s veremos apenas comandos b sicos voc pode usar o help do Scilab para saber mais e obter um gr fico com um acabamento melhor Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Amb
106. ab veja a Se o 3 1 Par metros de entrada e de sa da de uma fun o podem ser qualquer coisa n meros strings booleanos arrays de qualquer tipo e at mesmo outra fun o A Figura 275 mostra um exemplo de uma fun o que recebe uma fun o f como par metro e que faz o seu gr fico para um vetor x function PlotaPontos f x y f x plot2d x y style 1 endfunction Figura 275 Uma fun o que faz o gr fico de outra fun o recebida como par metro O c lculo de combina es uma opera o que pode ser aproveitada em outras ocasi es Como vimos o c digo de uma fun o mais facilmente reaproveitado do que o c digo de um programa Uma boa id ia ent o transformar o programa da Figura 274 em uma fun o o que resulta no c digo mostrado na Figura 276 function nComb Combinacoes n k nconh Eatorial n fatorial n k fatorial k endfunction Figura 276 Uma fun o para o c lculo do n mero de combina es de n k a k Um programa principal equivalente ao da Figura 268 est mostrado na Figura 277 Voc deve reparar no encadeamento de chamadas o programa principal chama a fun o Combinacoes que por sua vez chama por tr s vezes a fun o fatorial getf Combinacoes sci geti fatorial sci n input n k input k Printi ncomb 7d 30d sd n k Combinacoes n k Figura 277 Um programa principal que usa a fun o Combinacoes A Figura 278 ilustra o
107. ade de algoritmos estudada inicialmente com dois problemas cl ssicos da ci ncia da computa o a ordena o dos elementos de um vetor e a busca por um elemento de um vetor com valor igual a uma chave dada Para cada um desses problemas s o vistos algoritmos que diferem em sua complexidade Encontrar uma raiz de uma fun o ou resolver um sistema de equa es lineares s o exemplos de problemas num ricos que um cientista ou engenheiro frequentemente tem que resolver N s veremos alguns exemplos de algoritmos que resolvem problemas desse tipo e tamb m alguns cuidados que devem ser tomados ao se desenvolver programas para estas aplica es Algoritmos com melhor complexidade s o fruto de engenho e arte de seus projetistas Existem entretanto problemas cuja solu o algoritmica intrinsecamente dif cil no sentido em que n o existem boas solu es para eles A Parte Ille o curso se encerram com exemplos de problemas computacionalmente dif ceis e de problemas para os quais simplesmente n o existe nenhum algoritmo que os resolvam para todos os casos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 23 2 Organiza o de Computadores 2 1 Bits e c digos Como j dissemos informa o simb lica exige conven es de interpreta o Qualquer pessoa pode dar a um conjunto de bits a interpreta o que bem entender mas a escolha de um c digo pode ter consequ ncias
108. ades as rotas a serem examinadas s o lembrando que a cidade 1 o ponto inicial e portanto faz parte de qualquer circuito 2 3 4 2 4 3 3 2 4 3 4 2 4 2 3 4 3 2 N s iremos precisar de uma fun o que gere as permuta es de um conjunto de n meros cada n mero correspondendo a uma cidade Vamos primeiramente definir um cabe alho para uma fun o permutations Figura 370 Function p permutations A gera uma matriz p onde cada linha uma permuta o de A endfunction Figura 370 Cabe alho da fun o permutations Precisamos agora de um algoritmo para gerar essas permuta es O racioc nio mais uma vez recursivo e Se o vetor A de tamanho 1 ele j a nica permuta o poss vel e sen o devemos separar o primeiro elemento do vetor e gerar todas as permuta es dos elementos restantes mesmo problema inicial mas com um elemento a menos e fazer uma justaposi o do elemento separado com as permuta es obtidas e repetir este procedimento para os demais elementos do vetor Como exemplo considere o processo de gerar todas as permuta es do vetor 2 3 4 N s devemos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 194 e Separar o elemento 2 e gerar todas as permuta es do vetor 3 4 depois concatenar 2 s permuta es obtidas e Separar o elemento 3 e gerar todas as permuta es do vetor 2 4 depois concatenar 3
109. ado ao Clock passa de O para 1 o flip flop passa a armazenar o valor corrente do pino Input O nome clock vem do fato deste sinal frequentemente se originar de uma fonte de tempo como veremos mais tarde Click seria um nome mais adequado para a analogia com a m quina fotogr fica e Pino Q uma sa da que tem o valor armazenado no flip flop e Pino Q uma sa da que tem o complemento do valor armazenado no flip flop e Pinos Sete Reset s o entradas auxiliares que facilitam a imposi o de um valor para o flip flop Essas entradas s o normalmente usadas para inicializa o ou re inicializa o do flip flop Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 55 1 2 3 4 5 6 7 8 9 10 11 12 13 Tempo Figura 95 Carta de tempo para um flip flop tipo D As setas destacam os instantes de subida do clock quando a entrada D copiada pelo flip flop A Figura 95 mostra um gr fico uma carta de tempo que ilustra um exemplo de evolu o temporal de um flip flop tipo D onde e noinstante 1 as entradas D e Clock valem O assim como a sa da Q e nos instantes 2 3 e 4 respectivamente a entrada D muda de O para 1 de 1 para 0 e de O para 1 novamente sem que isso afete a sa da Q pois a entrada Clock permanece em O durante esse intervalo e noinstante 5 a entrada Clock sobe mudando de O para 1 a este sinal que o flip flop copia fotografa a ent
110. ado em um semestre letivo Exerc cios imprescind veis para um bom aprendizado n o est o aqui mas em um site Moodle que cont m tamb m apresenta es e outros materiais O enfoque adotado apresenta algumas caracter sticas que o distinguem da forma tradicional como a a disciplina ministrada e O curso necessita de um professor e de monitores e Em cada semana s o previstas uma aula expositiva dada pelo professor e uma aula pr tica dada pelos monitores e Aulas expositivas podem ser dadas em audit rio ou sala de aula com grande capacidade e Aulas pr ticas s o oferecidas em laborat rios com computadores melhores resultados podem ser esperados com turmas pequenas e Os procedimentos de avalia o do aluno incluem question rios semanais e provas que podem e devem ser realizados online e As aulas pr ticas t m como objetivo auxiliar os alunos nas avalia es semanais e Uma base de quest es fechadas e abertas est dispon vel no Moodle para a montagem de avalia es e Quest es fechadas m ltipla escolha associa es etc s o corrigidas automaticamente ao montar uma avalia o o professor deve dosar o uso de quest es abertas para manter o trabalho de corre o em volumes aceit veis e Conjuntos de exerc cios podem tamb m ser disponibilizados no Moodle permitindo estudos e auto avalia es pelos alunos e Alinguagem adotada o Scilab e O primeiro ter o do curso dedicado ao ensino
111. agem alta quando os dois transistores do arranjo estiverem funcionando como isolantes o que s ocorre quando a 0eb 0 Fonte ab a b Terra Figura 46 Uma porta NAND implantada com transistores Uma porta NAND constru da de forma similar mas com os transistores ligados em s rie como mostra a Figura 46 Aqui a sa da a b s ser igual a zero quando tivermos a 1 e b 1 valores que fazem com que a sa da esteja conectada ao ponto de terra Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 31 Figura 47 Porta AND com 3 transistores Para obter uma porta AND basta inverter a sa da de uma porta NAND como mostrado na Figura 47 Uma porta OR pode tamb m ser obtida conectando a sa da de uma porta NOR com a entrada de uma porta NOT 2 2 3 Introdu o ao Logisim O Logisim um simulador de circuitos l gicos que voc deve baixar pela Internet no endere o http ozark hendrix edu burch logisim um simulador com objetivos did ticos que atende muito bem s nossas necessidades Este texto segue o tutorial presente no help do sistema Ao iniciar o Logisim voc ver uma tela como a mostrada na Figura 48 talvez diferindo em alguns detalhes Ali podemos ver uma barra de menu uma barra de ferramentas um painel de explora o e um painel para o desenho efetivo de circuitos Logisim main H Uraitled File Edit Project Simflate Windo
112. ais testes para concluir que o conceito F e Detalhe mas muito til o printf no fim do programa ilustra o uso de para indicar ao Scilab que um comando se prolonga por mais uma linha Leitura do nome do aluno Nome input Seu nome por favor Leitura dos pontos obtidos Pontos input Nome quantos pontos voc conseguiu Determina o do conceito 1f Pontos gt 90 then Conceito A else 1f Pontos gt 80 then Conceito B else 1f Pontos gt 70 then Conceito C else 1f Pontos gt 60 then Conceito D else 1f Pontos gt 40 then Conceito E else Conceito F end end end end end printf s com g pontos voc obteve o conceito 3 s Nome Pontos Conceito Figura 209 O programa PontosConceito sce Como j dissemos e continuaremos a dizer ao longo desse curso programas s o feitos para serem executados por computadores mas tamb m para serem lidos por humanos Ao fazer um programa voc deve se preocupar com a sua legibilidade tanto por outras pessoas que venham a trabalhar com ele como com voc mesmo algum tempo depois de t lo escrito Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 118 A disposi o gr fica dos comandos em um programa tem grande influ ncia em sua legibilidade Talvez voc j tenha reparado que os blocos nos comandos if e for sempre apare am ligeiramente deslocados para a
113. ama o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 129 Uma matriz pode ser multiplicada por um escalar caso em que os operadores e s o equivalentes como mostrado na Figura 235 gt x 1 2 3 4 gt 2 ans Ta 10 22 15 gt X ans 1 9 16 Figura 236 Exponencia o matricial versus exponencia o elemento a elemento Quanto exponencia o o Scilab interpreta x 3 como x x x ou seja como o produto matricial triplo da matriz x por ela mesma o que s faz sentido quando x uma matriz quadrada J x 3 interpretado como x x x ouseja o produto triplo da matriz x por ela mesma feito elemento a elemento opera o que pode ser feita com matrizes de dimens es arbitr rias A Figura 236 mostra um exemplo da diferen a entre as duas opera es gt a 12 3 4 5 6 Figura 237 Transpondo uma matriz Se a uma matriz a designa a matriz transposta de a como mostrado na Figura 237 LSD IDOL Do bodas 0 3333333 0 5454545 0 24242472 i SA 0 1618182 Figura 238 A fun o inv que produz a matriz inversa A fun o inv produz a matriz inversa da matriz dada como argumento A Figura 238 mostra um exemplo de sua utiliza o Quando multiplicamos uma matriz por sua inversa esperamos obter a matriz identidade mas n o bem isso o que mostra a Figura 239 Introdu o Organiza o e Programa o de Computa
114. an references matlab101 matlab101 htm l Morris R J 2003 The Evolution of Storage Systems IBM Systems Journal 42 2 205 217 Neumann J v 1945 Michael D Godfrey home page Retrieved Mar o 2010 from http gss stanford edu godfrey vonNeumann vnedvac pdf O Reilly Media n d Language Poster Retrieved April 2009 from History of Programming Languages http oreilly com news languageposter 0504 htm l Scilab Consortium n d Scilab Home Page Retrieved from http www scilab org StatLib 1989 StatLib Datasets Archive Department of Statistics Carnegie Mellon University Retrieved March 2009 from http lib stat cmu edu datasets Top500 n d Top 500 supercomputers Retrieved from http www top500 0rg Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Refer ncias 212 Wolffdata n d Wolffdata Retrieved 2008 from ScilabStarter http www wolffdata se scilab ScilabStarter pdf Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3
115. ando aplicados a problemas grandes Maior inst ncia que um computador resolve em 1 hora Computador Computador 100x mais 1000x mais r pido Fun o de Computador complexidade X X 6 64 X 9 97 Y Y 4 19 Y 6 29 Figura 313 Efeito do aumento da velocidade de computadores sobre o tamanho dos problemas resolv veis Ca a Computadores de um mesmo pre o dobram de velocidade em menos de dois anos mas algoritmos com fun es de complexidade exponencial s o relativamente pouco afetados O efeito de termos computadores 100 ou 1000 vezes mais r pidos que os atuais sobre algoritmos com fun es de complexidade exponencial est mostrado na Figura 313 que tamb m foi retirada de Garey amp Johnson 1979 Ali vemos que se hoje um computador resolve em uma hora um problema de tamanho digamos 200 usando um algoritmo 0 2 com um computador 1000 vezes mais r pido conseguiremos resolver um problema de tamanho 210 4 2 Pesquisa Vamos agora estudar um problema cl ssico da Ci ncia da Computa o que a pesquisa para verificar se um elemento procurado existe em uma tabela Extens es deste problema fazem parte do nosso dia a dia em m quinas de busca como Google e Yahoo ou na localiza o de uma palavra em um arquivo Vamos examinar aqui dois algoritmos a pesquisa seq encial e a Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 165 pesquisa bin ria Como um exemplo n s va
116. apresenta o valor de uma ou mais fun es l gicas as sa das do circuito correspondendo a cada valor poss vel das vari veis de entrada A Figura 59 mostra a tabela da verdade para a soma de duas vari veis de 1 bit LAN Figura 59 Tabela da Verdade para soma de duas vari veis de 1 bit Nessa tabela n s temos e duas vari veis de entrada a e b e duas fun es de sa da S4 e S cada fun o corresponde a um d gito bin rio do resultado e a cada linha da tabela corresponde uma combina o das vari veis de entrada e o valor correspondente das fun es de sa da Como s o duas vari veis temos 22 4 linhas na tabela Tabelas da verdade constituem um mecanismo geral para a especifica o de fun es l gicas Elas especificam as sa das para cada combina o poss vel das vari veis de entrada N s j vimos tabelas da verdade quando introduzimos as fun es NOT AND e OR Tabela 9 Tabelas da verdade podem ser usadas para verificar a equival ncia de express es booleanas se duas express es levam a uma mesma tabela da verdade elas s o equivalentes Como exerc cio verifique se a express o bv av ab equivalente express o a bv ab v abv abv construindo uma tabela da verdade com todos os valores poss veis de a b e v e calculando para cada linha o valor de cada express o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 38
117. ar aos poucos Suponhamos que uma vari vel s contenha o valor dos primeiros k elementos de A ou seja suponhamos que de alguma forma n s conseguimos colocar em s o valor de A 1 A 2 A k N o dif cil ver que se fizermos s s A k 1 s passar a conter o valor dos primeiros k 1 elementos de A Se depois disso fizermos s s A k 2 s passar a conter o valor dos primeiros k 2 elementos de A Se repetirmos este passo at atingir o ltimo elemento de A teremos em s a soma de todos os elementos de A como desej vamos A Figura 282 ilustra um passo deste algoritmo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 146 Sabemos portanto como avan ar no c lculo da soma mas como come ar No caso simples Quando k 0 a parte do vetor com os k primeiros elementos vazia e portanto sabemos que s Oparak 0 Para k 0 Si O fofa falsfo r e o COESO EDEOEDENtEEE Para k 3 Para k 4 s 101 s 101 46 147 Figura 282 Um passo do algoritmo de soma Falta ainda saber como terminar dado que a cada chamada a fun o poder receber argumentos reais de tamanhos diferentes O problema que ao programar a fun o n o se sabe qual o tamanho do par metro formal A Para isto a fun o length de grande valia Se M uma matriz length M retorna o produto do n mero de linhas pelo n mero de colunas de M Se M um veto
118. ara isso basta colocar duas aspas consecutivas na posi o desejada como na Figura 202 gt x String com aspas duplas String com aspas duplas gt x String com aspas simples String com aspas simples Figura 202 Strings contendo aspas Strings formadas por algarismos n o s o n meros para o Scilab O string 3 1415926 na verdade armazenado como uma sequ ncia dos caracteres ASCII 3 7 1 4 etc e n o como um n mero de ponto flutuante como mostrado na Figura 38 Se tentarmos realizar opera es aritm ticas com strings de algarismos o Scilab ir emitir uma mensagem de erro apropriada Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 114 gt 2 3 1415926 I error 144 Undefiled operation for the given operands Figura 203 Strings formados por algarismos n o s o n meros para o Scilab Strings tamb m podem ser lidos pelo comando input como no exemplo Nome input Seu nome por favor Escrevendo dessa forma o comando input o usu rio deve digitar o string entre aspas poss vel eliminar a necessidade de escrita do string entre aspas usando o comando input com um par metro extra um string com o valor string como no comando input Seu nome por favor string gt Nome input Seu nome Seu nome Jose Undefined variable Jose Seu nome Jose Nome Jose gt Nome input
119. arantem que ele contenha uma raiz O m todo da bisse o exige portanto que f x seja cont nua em um intervalo a b tal que f a f b lt 0 De uma forma similar ao algoritmo de pesquisa bin ria a cada itera o a fun o f calculada no ponto m dio do intervalo m a b 2 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 185 F b Figura 349 Caso em que a raiz est esquerda do ponto m dio do intervalo Temos tr s casos poss veis No primeiro Figura 349 verificamos que f a f m lt 0 e portanto que o intervalo a m cont m pelo menos uma raiz onde o algoritmo pode ser reaplicado F b Figura 350 Caso em que a raiz est direita do ponto m dio do intervalo No segundo caso Figura 350 temos f m f b lt 0 e o intervalo m b que cont m pelo menos uma raiz A terceira possibilidade de termos tido sorte e encontrado m tal que f m 0 Ao fim de cada itera o ou bem a raiz foi encontrada ou o intervalo de busca foi reduzido metade O algoritmo consiste na aplica o repetida deste passo e termina quando o intervalo onde se encontra a raiz suficientemente pequeno para a precis o desejada Podemos agora dar in cio ao desenvolvimento de uma fun o que encontre uma raiz de uma outra fun o dada pelo m todo da bisse o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmo
120. armazenada no arquivo 200000primos txt temos no pior caso l09 gt 200000 17 60964 18 compara es para completar a pesquisa Compare isso com O pior caso da pesquisa sequencial que pode necessitar de 200 000 passos para terminar Pior se a tabela dobrar de tamanho passando a ter 400 00 elementos o algoritmo de pesquisa bin ria ir passar a necessitar de 19 compara es uma a mais enquanto que o algoritmo de pesquisa sequencial poderia necessitar de 400 000 passos Por estes argumentos algu m poderia pensar que em casos em que temos uma tabela ordenada a op o pela pesquisa bin ria em detrimento da pesquisa sequencial uma escolha bvia mas nem sempre este o caso A pesquisa sequencial mais simples mais f cil de programar e menos propensa a erros de programa o E muitas vezes trabalhamos com tabelas pequenas onde a diferen a de desempenho entre os dois algoritmos n o importante Ao programar nunca se esque a do kiss principle um acr nimo para uma frase em ingl s que todos os bons programadores dizem a si pr prios todos os dias keep it simple stupid Ou seja s complique quando inevit vel 4 3 Ordena o Outro problema cl ssico da Ci ncia da Computa o a ordena o que consiste em dado um vetor A obter outro vetor com os mesmos elementos de A dispostos em ordem crescente ou decrescente como mostra a Figura 319 Vetor n o ordenado ordenado Figura 319 Ordena o de um v
121. au podem ser encontradas por f rmulas anal ticas mas isto n o poss vel para muitas outras fun es O m todo da bisse o um algoritmo que serve para determinar numericamente uma raiz de uma equa o f x 0 onde f x uma fun o cont nua qualquer Para dar in cio ao algoritmo precisamos de dois pontos a e b sendo a lt b onde a fun o f assume sinais opostos ou seja ou bem f a gt 0e f b lt 0 ou ent o f a lt 0 e f b lt 0 como mostrado na Figura 345 Figura 345 Exemplos de intervalos adequados para o m todo da bisse o Como a fun o cont nua e como f a e f b t m sinais opostos em pelo menos um ponto r no intervalo a b n s teremos f r 0 poss vel que o intervalo a b contenha mais de uma raiz como na Figura 346 Figura 346 Intervalo contendo mais de uma raiz de uma fun o Se f a e f b t m o mesmo sinal o intervalo a b pode conter ou n o uma raiz como mostra a Figura 347 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 184 A Figura 347 Intervalos em que a fun o n o tem sinais opostos nos extremos podem conter ou n o uma raiz Se f x n o for cont nua poss vel que mesmo com f a f b lt O ou seja f a e f b t m sinais opostos n o exista nenhuma raiz no intervalo a b Figura 348 Se a fun o n o for cont nua sinais opostos nas extremidades de um intervalo n o g
122. ca pelo Laborat rio de Recursos Computacionais do Instituto de Ci ncias Exatas e pelo Centro de Recursos Computacionais do Departamento de Ci ncia da Computa o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 1 1 Introdu o 1 1 Computadores Este um texto sobre organiza o e programa o de computadores Apenas meio s culo ap s a constru o dos primeiros computadores o impacto desta tecnologia sobre nossas vidas enorme Computadores mudaram e muito a forma como se faz m sica cinema ou artes pl sticas como se escrevem textos como se faz com rcio A medicina mudou e mudaram a engenharia as ci ncias a economia Mudaram as formas de governar e as formas de exerc cio de cidadania Mas o que um computador Vamos come ar com alguns exemplos certo que voc j viu diversos computadores e prov vel que a imagem que lhe venha mente seja similar mostrada na Figura 1 BE yN o Figura 1 Um IBM PC lan ado em 1981 IBM Existem computadores que n o se assemelham a isto Ali s os computadores existentes em maior n mero s o simples e pequenos embutidos em telefones celulares iPods eletrodom sticos e autom veis Outos s o enormes ocupando vastos sal es como o Blue Gene mostrado na Figura 2 Em 2006 o Blue Gene era o computador mais poderoso do mundo sendo capaz de executar 478 trilh es de opera es aritm ticas por segundo E
123. ca a instru o instru o da armazenado no lida no y 1R Figura 121 Leitura de uma instru o A execu o da instru o pode modificar o conte do da mem ria ou dos registradores e determina um novo valor para o registrador PC o que significa determinar qual ser a pr xima instru o a ser executada pode F ap modificar determina iiv valor RB para Figura 122 Execu o de uma instru o Processadores s o constru dos de forma tal que a pr xima instru o a ser executada est normalmente no endere o na mem ria subsequente ao ocupado pela instru o em execu o Ou seja as instru es em princ pio s o executadas na mesma sequ ncia em que se encontram armazenadas na mem ria Instru es especiais chamadas instru es de desvio podem alterar essa ordem de execu o Desvios podem condicionais dependendo por exemplo do resultado de uma compara o Um circuito chamado unidade de controle recebe como entradas o c digo da instru o o status de registradores de compara es um sinal de um oscilador um clock e se incumbe da gera o correta dos sinais de controle correspondentes que comandam o ciclo de instru o na CPU Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 68 alimenta s o controlados produz a P Sinais de Controle da CPU Figura 123 Uma unidade de controle e um c
124. cao f a b tol se f cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de tol while b a gt tol Redu o do intervalo que cont m a raiz end r atb 2 endfunction Figura 356 Primeiro refinamento da fun o bissecao O refinamento da redu o do intervalo simplesmente a codifica o do m todo da bisse o como mostra a Figura 357 Repare que e quando f a f m lt 0 afun ofazhb m e quando f b f m lt O afun ofaza m e quando f m 0O afun ofaza meb m Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 188 function r bissecao f a b tol se f cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de tol while b a gt tol Redu o do intervalo que cont m a raiz atb 2 Ponto m dio if f a f m lt 0 then a m cont m uma raiz b m end if f m f b lt O then m b cont m uma raiz a m end end a b 2 endfunction Figura 357 A fun o bissecao A Figura 358 mostra o resultado de um teste da fun o bissecao onde podemos ver o efeito da toler ncia fornecida pelo usu rio sobre a precis o do c lculo da raiz Toler ncia 1 0e 3 Raiz 3 1411132813 3 1415926536 Toler ncia 1 0e 6 Raiz 3 1415925026 3 1415926536 Toler ncia 1 0e 10 Raiz 3 1415926536
125. caracteres acentuados ou cedilhas na lt frase gt do comando printf 3 1 3 Loops os comandos for e while Vamos agora atacar um outro problema o c lculo do fatorial de um n mero a ser lido em tempo de execu o O Scilab oferece diretamente a fun o factorial n que j faz este c lculo mas aqui n s estamos interessados em programar esta fun o N s sabemos que n 1 x 2 x X n e que portanto teremos que realizar repetidas multiplica es para obter o fatorial Este comportamento pode ser obtido com o uso do comando for que prescreve um loop ou seja uma repeti o de comandos A execu o do comando for j 1 5 lt bloco for gt end resulta em 5 execu es do bloco de comandos lt bloco for gt Na primeira execu o a vari vel J recebe o valor 1 na segunda o valor 2 e assim por diante at a ltima execu o onde j recebe o valor 5 Muito bem j temos condi es de compreender o programa Fatoriall sce mostrado na Figura 183 Repare no uso no printf do c digo de formato d apropriado para a convers o de vari veis com valores inteiros Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 108 C lculo do fatorial de n Leitura de n n input Valor de n C lculo do fatorial fat for i l n fat fat ai end Impress o do resultado printf O fatorial de d d n fat Figura 183 Programa Fatoriali sce
126. cata n o temos dificuldades para acreditar no bom funcionamento do somador de 32 bits A compreens o completa da estrutura de um programa grande estamos falando de milhares ou mesmo milh es de linhas de c digo produzidas por v rios desenvolvedores por sua vez dificilmente ating vel N o poss vel testar completamente um programa e nem poss vel compreender completamente sua estrutura E agora Jos Bom isso mesmo N o existe uma boa sa da A ind stria de software investe em qualidade de desenvolvimento em testes mas quase sempre vende programas sem garantia Neste curso n s iremos trabalhar com programas pequenos todos com menos de 50 linhas A convic o de corre o ser tratada tanto com argumentos estruturais como por testes 4 1 3 Efici ncia e Complexidade Computacional Para uma mesma especifica o poss vel encontrar algoritmos que apresentam enormes diferen as em sua efici ncia O temo complexidade computacional ou simplesmente complexidade usado para designar como o uso de recursos computacionais por um algoritmo varia em fun o de seus dados de entrada Complexidade temporal refere se efici ncia em tempo de execu o complexidade espacial refere se efici ncia no uso de mem rias Na Ci ncia da Computa o um algoritmo tem complexidade maior que outro quando menos eficiente e n o como se poderia pensar com o uso habitual da palavra mais complicado do que o outro
127. ciais como oo ou NAN Not a Number que s o necess rios para a comunica o de resultados de certas opera es ou do c lculo de algumas fun es A refer ncia Hollasch 2005 tem um bom resumo do padr o 2 2 Circuitos Combinat rios Vimos at agora como representar n meros caracteres cores e qualquer outra coisa utilizando bits Nesta se o n s iremos ver como que os circuitos em um computador transformam informa o como em um circuito de soma que recebe como entrada dois conjuntos de bits e produz como sa da um outro conjunto de bits com a representa o do valor da soma das entradas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 27 2 2 1 lgebra de Boole Figura 39 George Boole 1820 1898 Em 1854 o matem tico ingl s George Boole prop s uma lgebra para o c lculo da validade de express es formadas por proposi es l gicas Essa lgebra chamada hoje de lgebra Booleana e constitui a base para o projeto de circuitos digitais Ela trabalha com vari veis l gicas isto com vari veis que podem ter somente os valores verdadeiro ou falso ou 1 ou O As opera es fundamentais da lgebra de Boole s o N O E e OU mais conhecidas pelas palavras em ingl s NOT AND e OR Essas opera es fundamentais ou melhor composi es dessas opera es fundamentais constituem as nicas transforma es feitas por qualquer computador sobre b
128. colunas da matriz lida 3 Utilize uma fun o colocaInfinito para substituir nos vetores Lat e Long os valores 9999 por inf Para isto construa na sua fun o um loop que fa a uma varredura completa do vetor que receber como par metro de entrada e fazendo a substitui o quando for o caso Use a fun o length x que devolve o n mero de elementos em um vetor linha ou coluna para determinar o limite superior de seu loop 4 Use plot2d para obter o desenho do mapa representado no arquivo 5 Utilize uma fun o suaviza para construir os vetores LatS e Longs a partir dos vetores Lat e Long utilizando a regra Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 156 6 LatS i Lat i l Lat i Lat i 1 3 se Lat i 1 Lat i eLat i 1 forem diferentes de infinito e Lats i Lat i no caso contr rio Esta regra deve ser usada para os valores de i entre 2 e length Lat 1 para os extremos do vetor temos Lats 1 Lat 1 e Lats length Lat Lat length Lat A constru o de Longs similar Utilize a fun o scf 3 para abrir outra janela gr fica e fa a plot2d LatS LongS para descobrir o efeito da suaviza o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 157 4 Algoritmos 4 1 Defini o e Caracter sticas Um problema de transforma o de informa o descreve uma entrada de informa o
129. com o nome Soma sci Com isto j escrevemos o cabe alho da fun o ou seja e demos um nome significativo fun o e determinamos e demos nomes para seus par metros formais de entrada e de sa da Como vimos par metros formais s o utilizados no c digo da fun o par metros reais s o os par metros utilizados no momento da chamada da fun o Tanto para entender melhor a rela o entre par metros formais e reais como para testar a nossa fun o vamos construir um programa que ir utilizar a fun o Soma gerando e calculando a soma dos elementos de vetores aleat rios Para isto no Scipad use o menu File New digite um programa como o da Figura 280 e salve o com o nome TestaSoma sce Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 145 Programa que testa a fun o Soma int 10 rand 1 4 sa Soma a printf in Soma g sa int 10 rand 1 6 sb Soma b printf in Soma g sb int 10 rand 1 9 sc Soma c printf in Soma g sc Figura 280 O programa TestaSoma sce O programa ir gerar 3 pequenos vetores de inteiros entre O e 10 e para cada um deles ir imprimir seus valores e tamb m o valor calculado pela fun o Soma Repare que o foi omitido nos comandos de cria o dos vetores aleat rios para que o Scilab imprima automaticamente os seus valores Repare tamb m que a fun o Soma chamada com tr s
130. comandos com formato muito mais pr ximo da forma como seres humanos raciocinam e e a familiariza o do aluno com o ambiente de desenvolvimento e de execu o de programas fornecido pelo Scilab Inicialmente apresentado o Scilab como uma linguagem de alto n vel com vari veis express es aritm ticas e comandos de atribui o S o vistas vari veis que cont m valores num ricos ou cadeias de caracteres Em seguida s o apresentadas constru es de linguagem para expressar comportamentos condicionais e repetitivos Matrizes constituem o ponto forte do Scilab N s veremos como criar e modificar matrizes aritm tica matricial como construir matrizes a partir de matrizes j existentes e uma s rie de outras opera es Um uso frequente de matrizes no Scilab para a constru o de gr ficos feita por comandos muito flex veis Em seguida s o vistos comandos para a manipula o de arquivos que s o conjuntos de dados que tipicamente s o produzidos por um programa e armazenados em um disco r gido ou um pen drive e lidos posteriormente por outro programa Arquivos s o absolutamente essenciais para o tratamento de grandes volumes de dados Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 19 A Parte Il se encerra com o estudo de fun es Scilab que constituem uma ferramenta essencial para o uso de m dulos na constru o de programas Para exemplificar o uso do Scilab para a c
131. combust o ao perceber uma baixa de temperatura e diminuindo quando a temperatura do forno est alta Sistemas operacionais como o Windows ou o Linux s o tamb m exemplos de sistemas reativos controlando os est mulos recebidos pelos equipamentos de entrada e sa da Engenheiros e cientistas trabalham normalmente com sistemas reativos menores controlando m quinas e equipamentos de laborat rios Para finalizar alguns conselhos O Scilab adequado para o desenvolvimento de pequenos programas voltados para ci ncias e engenharias Para programas maiores com mais de 1000 linhas considere o uso de outras linguagens com C Fortran C ou Java Qualquer que seja a linguagem escolhida procurer usar bibliotecas de fun es desenvolvidas por profissionais S desenvolva o que for realmente necess rio Fun es de boas bibliotecas t m c digo mais robusto e mais r pido e d o tratamento adequado a erros num ricos Experimente sempre Enquanto voc n o estiver fazendo programas para uso em produ o errar n o machuca Dificilmente um sistema se estraga por um erro de programa o e a experimenta o essencial para o aprendizado k x Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 ndice Remissivo 208 6 Indice Remissivo steps 99 pi 99 SCe 103 abertura de um arquivo 121 ABus 76 acumulador 60 ADconversion 12 lgebra Booleana 27 algoritmo 157 ALU 61 ambien
132. cuito deve indicar se a b a lt b oua gt b como mostrado na Figura 82 Aqui tamb m temos problemas com o uso do m todo de cobertura de 1s na tabela da verdade que teria as mesmas 2 linhas do somador de 32 bits Vamos aplicar o mesmo enfoque que usamos na soma verificar como fazemos a compara o e procurar resolver o problema por etapas que seriam feitas por m dulos menores 1 a 1 Oo o o i 1 1 WHERE Figura 83 Casos de compara o entre as entradas a e b f cil ver que ao comparar dois bin rios de mesmo tamanho sem sinal devemos comparar bit a bit come ando com o bit mais significativo Na primeira diferen a j podemos concluir que a parcela com o bit igual a 1 definitivamente a maior e os bits restantes que s o menos significativos n o interessam para o resultado final A Figura 83 mostra tr s casos de compara o de entradas a e b cada uma com 8 bits No primeiro caso as entradas diferem no quarto bit mais significativo e a gt b No segundo caso as entradas j diferem no primeiro bit mais significativo e b gt a No terceiro caso as entradas s o iguais Para construir um circuito que fa a a compara o de bin rios sem sinal n s precisamos de um comparador de 1 bit que leve em considera o a possibilidade do resultado j ter sido estabelecido por algum bit mais significativo Breno H Comparador f bMaior 4 de 1 bit Figura 84 Entradas e sa das para um m dulo compara
133. cuitos Combinat rios erre eereererrreceea een aa rereeenenenana nr rrreeeenaaanaaoo 26 lgebra de Boole errar era era rear eae aaa era r ear cercar areaaa 27 PORtas LOBICAS sugar a DG E E N 27 Introdu o ao Logisim cc se eeereerereeeereren renan ceranacerana renan renan renancrenansea 31 Aritm tica com opera es l gicas ssesssesssseresrreesrrresrrererrrressrererrrresrrrresrrresene 36 S ntese de Circuitos Combinat rios si eeeerreeeeeereeerrreeeenanananos 42 Compara o de bin rios sem Sidi essi side para daads andas enidgaaa da da a dna 48 Multiplexadores e Demultiplexadores cieeeeeeeeeeeeerreeeasereranarerenaas 51 Circuitos SCQUERCIAIS sos teriane oniniidonsanias aiii essa ca a ie nO 54 Flip flops e Registradores essssssesesseesssreresrrrrsrreresrrrsssreresrreresreresrrressrereserressne 54 Barramentos e Controle de Fluxo de Dados ssssssssessssssssereressssssseerresssssseerreee 57 MEMON erein E E E A A E A E E E E E E 58 ACOM TIO r E E E E E E 60 Uma CPU n o Autom tica erre eeeeeerrrreeeee ANNEER ETES aE 61 Oscil dores oU COCKS insana ini 63 Organiza ao de uma CPU sensiirineiriiesnirinin tinina Eaa 64 Ciclo qe Mi UC Oa 66 gia E 6 E E IA PRP A AAN DEE OE OEA IAA A 68 Programa o em Assembler s sssosssssssensesreresrerssrreresrrrresreresrreresreresrrresrrereserressne 70 Montagem do Programa Execut vel ossssesssusesrere
134. d amp earch LOAD COMPARE JMPEQ 0 LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE eo S eladdress HEX o u ar Sc in E searchloop to do ca sm dr de to pa e o Address DEC a Dio mM E TableEnd Searchloop FP ReadLoop JMPGT OUTPUT JMF HALT SNS dgsSnatnNe AGG ae al Mode 16 Endsearch P Key Table 14 15 16 17 18 19 IA 1B Jintao oa x Ea 1 iA 1 1 1 1 1 1 1 1 1 1 1 1 1 COMPARE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 mpi DE DE pim 00 00 00 00 00 0000 DD 29 TableEnd 30 Most SearchTable Aux lt 7 Figura 162 Planilha completa com o programa SearchTable As f rmulas para as quatro colunas mais direita realizam pesquisas e c lculos Para a coluna OpCode10 OpCode em decimal a f rmula para a c lula H2 H2 IF ISBLANK E2 0 INDEX Instructions C 2 C 18 MATCH E2 Instructions B 2 B 18 0 que diz ao Excel para colocar O se o campo de c digo de instru o E2 estiver vazio e sen o efetuar uma pesquisa na coluna B da planilha Instructions procurando o c digo da instru o na coluna E2 obtendo assim seu c digo decimal que est na coluna C desta planilha Para a coluna Operand1o0 a f rmula para a c lula 2 I2 IF ISBLANK G2 0 IF ISNUMBER G2 G2 INDEX C 1 C 36 MATCH G2 A 1 A 36 0 1 dizendo ao Excel para colocar O se o campo de operando G2 estiver vazio e sen o se o operando for um n mero colocar e
135. da CPU Figura 134 O papel da Unidade de Controle A Figura 134 ilustra a fun o da unidade de controle que pode ser vista com mais detalhes no circuito da Figura 130 Para cumprir este papel a unidade de controle da Pipoca possui como principais componentes e um circuito Timing que fornece os sinais de tempo que conduzem a sequ ncia de eventos na unidade de controle e uma mem ria ROM Read Only Memory que cont m uma tabela de desvios a Branch Table cuja fun o explicaremos a seguir Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 78 e uma outra ROM que abriga o microprograma e e registradores da unidade de controle Figura 135 Componentes da Unidade de Controle Os registradores da unidade de controle da Pipoca s o e o mPC micro Program Counter que cont m o endere o da micro instru o em execu o e o mIR micro Instruction Register que armazena a micro instru o em execu o e o registrador Signals cuja sa da tamb m a sa da da unidade de controle e que fornece os sinais de controle para a CPU e eo Return Address que usado para permitir o uso de sub rotinas isto de sequ ncias de micro instru es que s o reaproveitadas como veremos a seguir Figura 136 Registradores da Unidade de Controle A unidade de controle utiliza uma t cnica conhecida como microprograma o para produzir os sinais de controle que
136. dade para um multiplexador de 1 bit Esse circuito tem tr s entradas In0 e In1 que s o as vari veis fonte de informa o e o endere o a que decide qual dentre InO e Ini ser conectada sa da out Figura 89 Tabela da verdade para um demultiplexador de 1 bit Na Figura 89 n s vemos a tabela da verdade para um demultiplexador de 1 bit Esse circuito tem as entradas a e In A entrada a um endere o de 1 bit e que designa qual das sa das outO ou out1 ser conectada entrada fonte de informa o In InQ Figura 90 Circuito multiplexador de 1 bit Multiplexadores de 1 bit tamb m podem ser usados como m dulos para a constru o de multiplexadores de mais bits com o arranjo mostrado na Figura 91 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 53 Figura 91 Um multiplexador de 2 bits obtido usando multiplexadores de 1 bit A Figura 92 mostra o circuito demultiplexador de 1 bit obtido a partir da tabela da verdade da Figura 89 Figura 92 Circuito demultiplexador de 1 bit Demultiplexadores com uma largura de entrada n mero de bits maior tamb m podem ser obtidos com arranjos hier rquicos similares como mostra a Figura 93 Figura 93 Circuito demultiplexador de 2 bits obtido a partir de demultiplexadores de 1 bit Como conclus es de nosso estudo de circuitos combinat rios n s temos e Opera es l gicas podem ser usadas para r
137. de circuitos l gicos e organiza o de computadores utilizando o software Logisim Burch 2002 e Mesmo com um enfoque eminentemente pr tico o material cobre conceitos te ricos fundamentais como complexidade de algoritmos problemas np completos e problemas indecid veis Para justificar a ado o do Scilab preciso falar um pouco sobre o fen meno MatLab MatLab de Matrix Laboratory uma linguagem chamada M e um ambiente de desenvolvimento e execu o voltado para aplica es t cnicas Segundo Bill McKeeman quase fundador do Computer Science Department de Stanford hoje professor de Dartmouth e desenvolvedor da MathWorks Mathworks empresa que vende e mant m o MatLab a linguagem teve origem na id ia de colocar c lculos matriciais na sintaxe ao inv s de utilizar chamadas de subrotinas em Fortran McKeeman Com poucas mas muito bem sucedidas exce es MatLab n o conhecido em departamentos de Ci ncia da Computa o N o s aqui no Brasil que isto acontece MatLab n o foi projetado por especialistas em linguagens ou compiladores n o tendo aos olhos de cientistas da computa o incluindo este autor qualquer import ncia conceitual como linguagem de programa o Mas seu sucesso pr tico sem qualquer d vida enorme Ao apresentar a Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 linguagem M para o MIT em 2005 McKeeman inicia dizendo as it turns out the computer scienc
138. de controle e O circuito Timing gera ciclicamente os sinais tO t1 e t2 e Quanto t0 passa de O para 1 veja o destaque em vermelho na Figura 138 a microinstru o no endere o apontado por mPC carregada no mIR Leitura de A Microinstru o Figura 145 A es em t0 e Quando t1 passa de O para 1 destaque em verde na Figura 138 se a microinstru o for do tipo signal seu operando carregado no registrador Signals cujas sa das fornecem os sinais de controle para a CPU sen o se a microinstru o for jsr jump subroutine o valor do mPC acrescido de 1 armazenado no registrador Return Address Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 84 PR AT usa a Soma 1 se a microinstru o Epi for do tipo Desvio Carga do saida do Registrador e se o m pCode for isr ocasiona Return Address JM aliza R m se a microinstru o Carga do for do tipo Signals Registrador ocasiona Signals gt Figura 146 A es em t1 e Quando t2 passa de O para 1 destaque em azul na Figura 138 o clock do mPC acionado atualizando seu conte do o que determina a pr xima micro instru o a ser executada O novo conte do depende do sinal aplicado entrada Force New Address do mPC o sefor igual a 0 ser o endere o consecutivo ao conte do anterior o sefor iguala 1 ser o conte do da entrada New Ad
139. de de digita o em ingl s Outras pessoas pelo contr rio t m grande facilidade para a digita o O recorde mundial de digita o pertence a Barbara Blackburn que atingia uma velocidade sustentada de 15 toques por segundo com picos de 20 toques por segundo usando um teclado Dvorak Estamos nos permitindo essa digress o somente para calcular a velocidade de produ o de informa o por Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 14 um teclado Considerando que cada toque produz um byte ou 8 bits a Barbara Blackburn produzia informa o a uma taxa de 160 bps bps bits por segundo Figura 23 Sensores especiais um r dio telesc pio e um acelerador de part culas A ci ncia faz uso de sensores que produzem informa o muito mais rapidamente Um r dio telesc pio ou um acelerador de part culas podem produzir informa o taxas de 1Gbps ou seja um bilh o de bits por segundo quase 7 milh es de vezes mais r pido do que o recorde mundial de digita o Figura 24 Um atuador especial um bra o mec nico Atuadores comuns s o monitores impressoras alto falantes Existem tamb m atuadores especiais como bra os mec nicos usados por rob s como mostrado na Figura 24 Digital Pd a recebida enviada pelo computador de pelo computador para v incluem Entrada de Rede de Computadores permitem a forma o de Redes de Computadores F
140. de emprego de express es relacionais matriciais em comandos if Se A for uma matriz e MB uma matriz booleana com as mesmas dimens es de A A MB designa aqueles elementos de A com correspondentes em MB iguais a t Isso nos permite selecionar elementos de uma forma elegante como mostra a Figura 265 a gt ER La Figura 265 Exemplo de sele o de elementos de uma matriz por uma matriz booleana 3 3 Fun es Fun es s o uma ferramenta de modulariza o da mais alta import ncia para a programa o em Scilab Elas permitem o reaproveitamento de c digo a divis o de tarefas em projetos maiores de programa o e tornam o c digo mais leg vel Para ilustrar o uso de fun es vamos desenvolver um programa que l dois inteiros ne k e que calcula e imprime o n mero de combina es de n tomados k a k dado pela f rmula l e Q S k Temos tr s fatoriais a calcular e para isso vamos procurar reaproveitar o c digo que conhecemos para o c lculo do fatorial mostrado na Figura 266 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 140 Figura 266 Trecho de c digo para o c lculo do fatorial A adapta o deste c digo aos tr s fatoriais necess rios para o c lculo do n mero de combina es nos leva ao programa mostrado na Figura 267 onde cada c lculo de fatorial est destacado e onde o comando de sa da foi omitido n input n k input
141. depois a0 Para as vari veis de sa da o procedimento similar Selecione a aba Outputs e entre um a um com os nomes das vari veis de sa da na ordem em que voc deseja que apare am na tabela da verdade No caso primeiro b2 depois b1 e depois bO Combinational Analysis Window Help Expresson Mrimized Figura 72 Nomeando vari veis de sa da em uma tabela da verdade no Logisim Agora preciso entrar com os valores da tabela da verdade Clique sobre a aba Table e voc ver uma tela como a da Figura 73 Combinational Analysis gt pt O Oooo so so a 0 0 0 0 MM MM DE DE DE De MME DEM ME S DE DD DE DEDE de DE DE ME Build Circuit Figura 73 Entrando com os valores da tabela da verdade Depois entre com os valores apropriados clicando uma ou mais vezes sobre cada um dos x na tabela at obter o valor desejado Se passar do ponto clique novamente Fa a isto at chegar tabela da Figura 74 onde voc pode reparar que em cada linha b2b1b0 a2a1a0 1 exceto na ltima onde seguimos a conven o j mencionada Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 45 Combinational Analysis Fie Edk Lo Selo Window Help inputs Outputs Table Expression Minimized 8 D E Oo of 0 0 0 0 1 l a a CO O a ma CO CS O a OS O oO ss a O OS ma a
142. diate o e Direct In gt DBus Indirect Running Figura 129 O circuito principal da CPU Pipoca Complicado Sem d vida mas vamos por partes mingau quente se come pelas beiradas Primeiramente voc deve reparar que neste circuito o principal complicador a unidade de controle o ret ngulo vertical na parte inferior do circuito Para ali v o muitos fios e dali saem outros tantos Isto n o de se estranhar posto que a fun o da unidade de controle como dissemos levantar os sinais de controle na sequ ncia e tempos adequados para a implanta o dos fluxos de dados que implementam as instru es de m quina Como exemplos est o destacados na Figura 129 cabeamentos para o sinal de clock do acumulador em azul para a tomada do barramento de dados pelo registrador Input em vermelho e para o campo operando da instru o em marrom O conjunto completo de entradas e sa das da unidade de controle est mostrado na Figura 130 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 75 Reset Clock Clock SetinEmpty SetOutFull Figura 130 Entradas e sa das da unidade de controle O circuito principal da CPU Pipoca tem ainda circuitos auxiliares para sincroniza o de entrada e sa da colocados na parte superior do diagrama e um circuito para depura o debug de programas no canto inferior direito que bloqueando o sinal de clock permite que a execu o de
143. direita com rela o posi o do comando que os delimita Isso porque com esse deslocamento a identifica o do come o e do fim de cada bloco fica muito facilitada e os poss veis fluxos de execu o se tornam mais claros para n s if delta lt 0 then printf Ra zes complexas else ri b sgrt delta 2 a r2 b sqrt delta 2 a printf rl g e r2 g r1 r2 end if delta lt 0 then printf Ra zes complexas else rl b sgrt delta 2 a r2 b sgrt delta 2 a printf rl 2g e r2 g rl r2 end Menos leg vel Figura 210 Ifs equivalentes para o Scilab mas com diferen as de legibilidade devido indenta o Indenta o o termo empregado para esta t cnica de deslocamento de blocos internos na disposi o gr fica de um programa Seu emprego visto como absolutamente essencial por toda a ind stria de desenvolvimento de software A Figura 210 e a Figura 211 mostram compara es entre comandos digitados com e sem o emprego de indenta o 1f Nota gt 90 then 1f Nota gt Conceito A Conceito else if Nota gt 80 then Conceito B else if Nota gt 70 then Conceito C else if Nota gt 60 then Conceito D else if Nota gt 40 then Conceito E else Conceito end end end end else 1f Nota gt Conceito else 1f Nota gt Conceito else 1f Nota gt Conceito else 1f Nota gt Conceito else
144. do acumulador com o valor colocado no barramento k IOPC 2010 2 3 Organiza o de Computadores 63 Sinal nput 1011 nCik 1 n Cik 0 n gt Dbus 1 o O registrador MAR copia o barramento que passa a g conter o valor 11 MAR Clk Abaixa o clock do registrador MAR Clk n gt Dbus Libera o barramento A sa da do registrador ACC colocada no barramento Figura 111 Mais um exemplo de fluxo de dados realiz vel com o circuito da Figura 108 2 3 6 Osciladores ou Clocks O motor o propulsor de qualquer circuito digital um oscilador ou clock Um clock um circuito cuja sa da oscila entre 0 e 1 em uma freq ncia conhecida Um computador de 1 GHz 1 Giga Hertz utiliza um clock cuja sa da varia entre O e 1 um milh o de vezes por segundo Deste sinal b sico circuitos como registradores circulares obt m outros sinais de tempo que s o usados para coreografar o fluxo de dados de um circuito Figura 112 Um registrador circular A Figura 112 mostra um registrador circular formado por quatro flip flops tipo D alimentados por um clock O cabeamento tal que a sa da do FF tO est ligada entrada D do FF t1 a sa da do FF t1 entrada do FF t2 e assim por diante A sa da do FF t3 est ligada entrada do FF tO O registrador inicializado atrav s do pino Reset que coloca 1 no flip flop t0 e O nos demais A cada subida do clock cada FF copia a sua entrada o que faz com que o 1 inicialmente armazenado no
145. do na Figura 343 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 182 rea do sub intervalo o AMX 1 x 4 2 0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 0 9 1 0 Xi Xis Figura 343 Aproxima o por trap zios A soma das reas dos trap zios dada por po EDHI y SODH y p DHO g IDES 2 2 2 2 ou A hy ER pq fa fan St ou O VOD On X A Ay en gt re Uma fun o que calcula uma integral por trap zios est mostrada na Figura 344 function area TrapezoidalSum f a b n Calcula a rea sob a curva f entre a e b utilizando n intervalos e a f rmula dos trap zios x linspace a b n 1 delta x b a n area f x 1 f x n 1 2 sum f x 2 n delta x scf plot2d x f x style 5 axesflag 5 plot2d3 x f x style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx axesflag 5 endfunction Figura 344 Fun o para aproxima o de integrais por trap zios Para testar esta fun o vamos calcular fo sin x dx cujo valor exato n s sabemos que igual a 2 Com 5 intervalos o resultado da chamada TrapezoidalSum sin 0 pi 5 foi 1 9337656 com 50 intervalos chamada TrapezoidalSum sin 0 pi 50 o valor obtido foi 1 999342 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 183 4 4 2 Bisse o N s sabemos que as ra zes ou zeros de fun es como um polin mio de 2 gr
146. dor de 1 bit Vemos na Figura 84 um esquema de entradas e sa das para o m dulo comparador de 1 bit As entradas a e b v m do bit em quest o das vari veis que estamos comparando Da compara o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 50 j feita com bits mais significativos que o bit em quest o v m as entradas aMaior bMaior e ablguais A Figura 85 mostra o arranjo de m dulos que comp em um comparador de 4 bits Figura 85 Arranjo de m dulos para um comparador de 4 bits Temos um m dulo comparador para cada bit das vari veis de entrada Cada m dulo comparador tem cinco entradas e Duas s o os bits das entradas da coluna correspondente ao m dulo e As tr s outras s o designadas por aMaior bMaior e ablguais e exceto para o m dulo mais esquerda s o produzidas pelo m dulo comparador esquerda do m dulo em quest o Elas t m o resultado da compara o j realizada com os bits mais significativos e portanto uma e somente uma dessas entradas poder ter o valor 1 Para o m dulo mais esquerda que corresponde ao bit mais significativo ablguais tem o valor 1 A Figura 86 mostra as primeiras linhas de uma tabela da verdade para o m dulo comparador de 1 bit a tabela completa tem 2 32 linhas A coluna aMaior uma entrada desse m dulo enquanto a coluna Amaior uma sa da A mesma conven o usada para bMaior Bma
147. dores IOPC 2010 2 3 Ambiente e Linguagem Scilab gt A JA Ea LoLiQb 1s Ds 130 4 441D 16 Lo LIUD Io ci gt IJA A Dra aa DeL L Ja Figura 239 O produto de uma matriz por sua inversa ligeiramente diferente da matriz identidade Ali vemos elementos n o nulos fora da diagonal principal tanto de A IA como de IA A Isso mais uma manifesta o dos erros de arredondamento que ocorrem em opera es aritm ticas de ponto flutuante No caso esses erros n o s o motivo de preocupa o pois os elementos n o nulos fora da diagonal t m valor absoluto ordens de grandeza menores que os elementos das matrizes Podemos usar a inversa de uma matriz para resolver um sistema de equa es lineares ax b onde por exemplo 2 1 3 a 2 1 1 4 1 3 i Relembrando podemos resolver a equa o multiplicando os dois lados por a 1 alax x alb Usando a console do Scilab o sistema pode ser resolvido com a sequ ncia de opera es mostrada na Figura 240 gt b 4 0 1 gt x inv a b Figura 240 Resolvendo um sistema de equa es lineares Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 131 A precis o do resultado pode ser avaliada calculando ax b o que pode ser feito no Scilab como mostrado na Figura 241 bresiduo a x Db residuo 0 2 220D 16 O Figura 241 Calculando o erro num rico da solu
148. dores IOPC 2010 2 3 Introdu o 12 Amplitude w Original Signal Amplitude samplec Signal 4 0 0 200 400 R00 ani 1000 0 e 400 EO ai 1000 Time ns Time ns aj l tsamplej 200 00 MHz 4 t Resolution Bit M Show Sampling Points sample hs W Show Sampled Signal o Show Quantization Error Figura 18 Sinal amostrado com f 200 MHz com um nico bit de precis o As ilustra es da Figura 13 Figura 18 foram obtidas com o software ADconversion que voc pode obter no site Lohninger 2006 Fa a o download brinque com os par metros da digitaliza o frequ ncia de amostragem e bits de precis o e veja os resultados importante observar que a convers o em qualquer dos dois sentidos nunca perfeita mas em muitos casos pode ser t o boa quanto se queira Em convers es D A Digital Anal gica destinadas absor o por humanos a explora o de limites fisiol gicos como a acuidade visual ou auditiva muito utilizada 1 5 Sensores e atuadores o escrevem executam PA s o compostos por Instru es e Comandos l m transformam registram y r Informa o Digital Figura 19 Computadores programas e informa o digital Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 13 Programas s o escritos por pessoas e executados por computadores Programas s o compostos por instru es e comandos que l m transfor
149. dress do mPC O circuito que decide o valor aplicado entrada Force New Address um OR de v rias cl usulas o a microinstru o corrente jmp jmpNext ou return ou jsr o a microinstru o corrente jmplmmediate e o modo de endere amento Immediate ou a microinstru o jmpDirect e o modo de endere amento Direct ou a microinstru o jmplIndirect e o modo de endere amento Indirect o a microinstru o corrente jmpGT e D gt ACC 1 ou jmpEQ e D ACC 1 ou jmpLT e D lt ADD 1 o a microinstru o corrente jmplInFull e InFull 1 ou jmpOutEmpty e OutEmpty 1 se a microinstru o for de desvio condicional e a condi o estiver gt satisfeita com o valor se a microinstru o for do tipo Signals com o valor 3 se a microinstru o FP for de desvio condicional e a condi o n o estiver Po com o valor se a microinstru o ei for jmpNext com o valor gt As da saida de Carga do ocasiona Registrador mPC gt se a microinstru o r for return com o valor Figura 147 A es em t2 Quanto ao conte do da entrada New Address do mPC isto quanto ao endere o da pr xima microinstru o a ser executada no caso de desvio ele ser Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 85 o o conte do da mem ria Branch Table no endere o dado por OpCode se a micr
150. e j foi atingido A Figura 215 mostra a janela de navega o para escolha de um arquivo aberta no Windows Vista ap s a execu o de um comando uigetfile E uigetfile E a Recent Items Out Eq2g L outeg2g Portuguesngles J tabela custos tabelaComTexto Desktop InglesPortugues f i Ingl s Portugu s E Jos E Mat mfprintf File name ConstrCivil txt Files of type All Files Figura 215 O comando uigetfile O comando uigetfile retorna um string com a rota completa isto desde o diret rio raiz do arquivo escolhido Isso pode resultar em strings longos como o atribu do vari vel na Figura 216 gt f uigetfile title Escolha um arquivo f C Users Osvaldo Documents dcec Ensino dcc001 Scilab Dados ConstrCivil txt Figura 216 String com rota completa obtido com uigetfile O string obtido pode ser usado para abrir com mopen o arquivo correspondente O nome de arquivo escolhido pode ser novo ou j existir no sistema de arquivos do operacional Outras formas de uso do comando uigetfile s o e Arq uigetfile o Mais simples sem t tulo na janela de escolha do arquivo e Arq uigetfile txt pwd Escolha um arquivo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 121 o Um pouco mais complicado por m pode oferecer mais conforto para o usu rio pois o S s o mostrados os arquivos selecio
151. e propriedades requeridas de uma informa o de sa da Um algoritmo resolve um problema de transforma o sendo constitu do por uma prescri o de passos que transformam uma informa o de entrada em outra informa o de sa da Cada passo prescrito deve ser uma opera o garantidamente realiz vel seja por opera es elementares seja por outro algoritmo Um programa a concretiza o de um algoritmo em uma linguagem execut vel Tr s quest es s o b sicas para a caracteriza o de problemas e algoritmos e Especifica o qual exatamente o problema de transforma o de informa o que queremos resolver e Corre o um dado algoritmo resolve mesmo o problema proposto em sua especifica o e Efici ncia com qual consumo de recursos computacionais essencialmente tempo e mem ria o algoritmo executa a sua fun o N s iremos a seguir detalhar um pouco mais cada uma dessas quest es 4 1 1 Especifica o Especifica es surgem de um processo de an lise de uma necessidade de transforma o de informa o Uma especifica o n o est tica muitas vezes uma especifica o modificada durante e mesmo ap s o processo de desenvolvimento de um programa Uma condi o n o prevista muitas vezes a causa de uma altera o em uma especifica o Como um exemplo no programa que vimos para a solu o de muitas equa es de 2 grau com coeficientes em um arquivo Figura 221 n s n o demos um tratamento
152. e A k 1 Como j sabemos encontrar o m nimo em um vetor de 1 elemento k 1 sabemos encontrar o m nimo em um vetor com 2 elementos como sabemos encontrar o m nimo em um vetor de 2 elementos sabemos encontrar o m nimo em um vetor com 3 elementos Prosseguindo com o racioc nio j temos um algoritmo para encontrar o menor valor em um vetor de tamanho arbitr rio Tendo um algoritmo n o temos mais medo do problema com 50 000 n meros Nosso trabalho ser programar o algoritmo caber ao computador a sua execu o A 89 24 50 42 28 8 62 34 70 52 A 39 09 50 42 28 8 62 34 70 52 A 39 69 50 42 28 8 62 34 70 52 A 39 RY 50 42 28 8 62 34 70 52 A 39 24 50 42 28 8 62 34 70 52 m A 39 24 50 42 28 8 62 34 70 52 Figura 36 Seis primeiros passos do algoritmo que encontra o menor valor presente em um vetor Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 22 Um algoritmo dito correto quando atende sua especifica o Dois algoritmos corretos podem satisfazer uma mesma especifica o mas diferir substancialmente na efici ncia gasto de tempo e de recursos computacionais como mem ria com que realizam a transforma o de informa o desejada O termo complexidade empregado para designar a efici ncia ou melhor o inverso da efici ncia de um algoritmo para a solu o de um problema A complexid
153. e amplitude bastante natural Basta tomar o bit mais esquerda e interpret lo como o sinal do n mero se for 0 o n mero cuja amplitude representada pelos bits restantes positivo e se for 1 negativo Portanto se tivermos 8 bits o bit mais esquerda ser usado para codificar o sinal Os 7 bits restantes nos permitem representar amplitudes entre O e 127 ou seja podemos com os 8 bits representar para Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 25 Os inteiros entre 127 e 127 Repare que zero tem duas representa es 10000000 e 00000000 Codifica o com Deslocamento Uma outra possibilidade para representar n meros negativos est ilustrada na Tabela 7 A conven o adotada de interpretar um conjunto de bits como a representa o de um valor igual ao valor de sua interpreta o como bin rio sem sinal deslocado por um fator a ser subtra do Tabela 7 Representa o de n meros negativos por deslocamento Decimal Bin rio N mero Complemento de 2 A absoluta maioria dos computadores utiliza entretanto uma codifica o conhecida como complemento de 2 para a representa o de n meros inteiros negativos A Tabela 8 mostra a codifica o em 3 bits dos inteiros entre 4 e 3 usando complemento de 2 Tabela 8 Codifica o em complemento de 2 com 3 bits O valor representado pela sequ ncia de bits b b by dado pela f rmula V
154. e department is about the only part of MIT that does not use MatLab Ele continua McKeeman MATLAB has grown over 20 years from academic research into a generalized tool for a wide variety of applications including vehicle crash simulation financial prediction genome analysis imbedded computer control aircraft design and so on More than 200 MathWorks developers are working on the next release Another 1000 people run the rest of the business in Natick and worldwide There are about a million users Some MATLAB users do not think of what they are doing as programming Some users are interested in quick and easy results Some users want to build applications that are bullet proof and reusable over decades I know of 100000 line MATLAB programs and MATLAB programs mining petabytes of data and others running 100x parallel for days at a time Some universities teach MATLAB for beginning programming On every customer contact I find new surprises MATLAB satisfies all these communities O Scilab um sistema livre produzido pelo INRIA que segue a mesma filosofia do MatLab sem tentar ser um clone A compatibilidade das linguagens de programa o grande mas n o total Segundo o verbete na Wikipedia Scilab vem conquistando cada vez mais adeptos tanto na academia como na ind stria Existem livros sobre Scilab em ingl s franc s e espanhol e est dispon vel na Internet um texto introdut rio em portugu s produzido pelo Prof Paul
155. e o menu File Save as para salv lo com o nome TestaMinimo sce Use tamb m o menu Windows Split side by side para conseguir trabalhar simultaneamente com os dois arquivos do seu programa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 148 Muito bem temos o cabe alho da fun o Minimo temos um programa testador e agora vamos desenvolver a fun o propriamente dita Vamos procurar seguir um racioc nio similar ao utilizado para o c lculo da soma dos elementos de um vetor Suponhamos que uma vari vel m contenha em um dado momento o menor valor entre os primeiros k elementos do vetor Para avan ar simples e comparamos o valor dem com o valor de A k 1 e semfor menor ou iguala A k 1 seu valor j tamb m o menor entre os primeiros k 1 elementos do vetor podem haver empates mas isto n o um problema e pode permanecer inalterado e semformaior que k 1 devemosfazerm A k 1 para que seu valor passe a ser o menor entre os primeiros k 1 elementos do vetor 1 2 3 4 5 6 7 34 56 27 45 12 44 34 Para k 83 min menor 34 27 27 Al 2l3Sl4ls Je J7ri 94 56 27 45 12 44 34 Para k 4 min menor 27 45 27 Figura 288 Dois passos do algoritmo que encontra o menor valor presente em um vetor A Figura 288 ilustra dois passos deste algoritmo N o dif cil acreditar que n s encontraremos o menor valor presente no
156. e realiza a soma de duas vari veis de 1 bit Mas isso muito pouco Para fazer qualquer coisa mais s ria precisamos ser capazes de somar vari veis de digamos 32 bits como s o representados inteiros na maior parte dos computadores atuais Em princ pio n s poder amos construir uma tabela da verdade com as entradas e sa das e depois inferir express es l gicas para as sa das usando o m todo de cobertura dos 1s Essa tabela teria 64 bits de entrada correspondendo s duas vari veis a serem somadas e 33 bits de sa da pois a soma de duas vari veis de 32 bits pode ter 33 bits O problema que essa tabela teria 24 18 446 744 073 709 551 616 linhas Ou seja mesmo se teoricamente conseguir amos construir o somador de 32 bits pelo m todo de cobertura dos 1s na pr tica isso absolutamente invi vel Temos portanto que adotar outro enfoque Primeiramente vamos examinar como n s humanos fazemos uma soma em bin rio Depois vamos construir um somador de forma modular explorando regularidades no processo de soma Uma soma de n meros bin rios similar soma decimal que aprendemos na escola prim ria Para fazer uma soma na base 10 n s somamos algarismo por algarismo da direita menos significativos para a esquerda mais significativos Quando a soma de dois algarismos excede 9 colocamos como resultado daquela coluna somente o d gito mais significativo e acrescentamos 1 o vai um na soma da coluna seguinte Fig
157. ealizar opera es aritm ticas e Circuitos combinat rios podem ser constru dos a partir de tabelas da verdade e Circuitos combinat rios tamb m podem ser constru dos como montagens de m dulos mais simples como somadores ou comparadores de n bits constru dos a partir de somadores ou comparadores de 1 bit e O fluxo de informa es em um circuito pode ser conduzido por multiplexadores ou demultiplexadores Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 54 2 3 Circuitos Sequenciais Circuitos sequenciais diferem dos circuitos combinat rios por serem capazes de armazenar dados Em um dado instante suas sa das n o dependem apenas dos valores correntes de suas entradas como nos circuitos combinat rios mas s o tamb m fun es de valores armazenados 2 3 1 Flip flops e Registradores Figura 94 Um flip flop tipo D O circuito sequencial mais b sico conhecido pelo nome em ingl s de flip flop Como pod amos esperar um flip flop capaz de armazenar um nico bit Existem v rios tipos de flip flop mas aqui n s s veremos flip flops ditos do tipo D A Figura 94 mostra um flip flop tipo D dispon vel no Logisim e que possui 5 pinos e Pino D onde fica a informa o o Dado que pode vir a ser armazenada no flip flop e Pino Clock um pino que funciona como um obturador de uma m quina fotogr fica No exato instante em que o sinal aplic
158. eeseseessserrsesreresrreesrrerssreresereeeseerese 126 3 2 4 Artmetica matricial sis eba 127 3 2 5 CONSIruINdO MATRIZES casal cassio no ago baiano gas boni r e 131 3 2 6 Matrizes e Grali OS irrien snes E SAI S ra Sad 133 3 2 7 Matrizes de Strings AFQUIVOS siga celso isa ro passas ES sLALGas NEN 135 3 2 8 Matrizes Numericas e ARQUIVOS sadias satolo finas agia gaba LO bip nda gas 136 3 2 9 Matrizes e Expressoes JOBICAS asia a Gb a 138 3 3 FUNGOS custo Si A a E E 139 3 3 1 SAED E sacas ada EEE somando E E AN E dr a dm E Cd 141 3 3 2 Fun es arquivos fonte e 0 SCllab ess tsapsalansao a tona ae alas DO CP Ga 142 3 3 3 Fun es Matrizes Loops endua sensn nos Ra sis A 144 3 3 4 Recurs vidade sanre a GD TD a AD a E a A 149 3 3 5 Fun es e Desenvolvimento TOp dOWN ssssssssssssessssrrsssreresrrrssrreessrrreserereseeress 151 3 3 6 Desenhando Mapas js metade idas anda ada sd a a Sd 153 dE MORTOS seria Da O RO DES A A RC RCE 157 4 1 Definicad e Caracteristicas suis E E ENO U Sana dG RR 157 4 1 1 ESPECIE IO eana an AD dn A A a 157 4 1 2 CORMCCaO so pci cd DAS a TO o E SEO a io o Gar DU dO 157 4 1 3 Efici ncia e Complexidade Computacional ssesssssseeesssresesrrresrrressrrresrreeeseeress 158 4 2 PESQUISA asiaticas reside DOCA ana Sano rasa Sara aaa Rana E 164 4 2 1 Pesquisa Sequentia ssa tosa TES IO as bUO SL D DS a RS SRS 165 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 5 6 7 4 2 2 Pesda nea a a a A 1
159. efa insana Mas essa tarefa s foi feita manualmente pelos pioneiros da computa o com pelos par metros atuais enormes custos de verifica o e baix ssima produtividade dos programadores Mas cedo se percebeu que computadores eram muito bons para auxiliar a programa o de computadores Um montador um assembler um programa que l uma tabela programa e gera imagens bin rias a serem carregadas nas mem rias automatizando o processo ilustrado na Figura 127 File Edit Format View Help Main Memory T Figura 128 O programa SumX como um arquivo de imagem de mem ria do Logisim e carregado na mem ria A Pipoca um circuito simulado no Logisim onde mapas de mem ria podem ser carregados clicando sobre a mem ria com o bot o direito do mouse e escolhendo a op o Load Image que abre um di logo para escolha de um arquivo como o mostrado na Figura 128 Arquivos como esse podem ser produzidos usando a planilha Pipoca xIs dispon vel no site do curso e aqui utilizada como um assembler 2 4 5 O Circuito Principal da CPU Pipoca J temos agora condi es de apresentar o circuito principal da CPU Pipoca mostrado na Figura 129 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 74 In Full In Full EE Out Empty ut Empty Do HO PL a ro SetinFull y X gt y SetOutEmpty A R V b cad T Out Clk i In Cik pr JDR Cik m mme
160. eia os dados desse arquivo e Extraia desses dados vetores correspondentes a cada uma das colunas conforme a Figura 260 e Gere um gr fico que exiba simultaneamente as curvas de m xima m dia m nima m dia m xima record e m nima record Examinando o arquivo de entrada n s vemos que ele tem um formato adequado para leitura com fscantfMat pois tem uma linha de cabe alho e os dados restantes s o todos num ricos e dispostos em um formato tabular Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 138 arqClima uigetfile ClimaBH fscanfMat arqClima MaxMed ClimaBH 2 MaxMed 2a coluna MinMed ClimaBH 3 MinMed 3a coluna MaxRec ClimaBH 4 MaxRec 4a coluna MinRec ClimaBH 5 MinRec 5a coluna Precip ClimaBH 6 Precip 6a coluna plot2d 1 12 MaxMed MinMed MaxRec MinRec leg MaxMedQMinMedAMaxRecQAMinRec xtitle Temperaturas Mensais em BH M s Graus C Figura 261 O programa ClimaBHZ sce A Figura 261 mostra o programa ClimaBHZ sce que atende a essa especifica o Como voc pode ver o programa bastante simples com a descoberta e leitura do arquivo seguida das extra es das colunas e seguida da gera o do gr fico t o simples que aproveitamos para introduzir duas novas t cnicas que podem melhorar a apresenta o de um gr fico e o par metro extra de plot2d leg MaxMedQMinMedQAMaxRecQA
161. eis n o utilizados por seus colegas 3 3 2 Fun es arquivos fonte e o Scilab Uma fun o normalmente escrita em um arquivo com o mesmo nome da fun o e com a extens o sci distinta dos arquivos com programas principais Scilab que t m a extens o sce Eine dem Nel delta Sc 4 ri b sgrt idelta o sgr C lde lta endfuncetion Line 6 Column 1 Logical line 6 Figura 273 Um arquivo com uma fun o aberto no Scipad A Figura 273 mostra o arquivo com a fun o da Figura 272 aberto no Scipad onde voc pode reparar que o arquivo e a fun o t m o mesmo nome sendo que o arquivo tem a extens o SCI A mera exist ncia de um arquivo com uma fun o n o basta para que o Scilab saiba de sua exist ncia E necess rio incorporar a fun o ao Scilab o que pode ser feito com o comando getf lt nome do arquivo com a fun o gt que deve ser colocado no programa principal Um exemplo de uso do comando get est mostrado na Figura 274 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 143 getf fatorial sci n input n k input k nComb fatorial n fatorial n k fatorial k Figura 274 Programa principal para o c lculo de combina es com o comando getf Aten o o arquivo com a fun o deve estar no mesmo diret rio em que se encontra o programa principal e este deve ser o diret rio corrente do Scil
162. elementares e que s o convenientemente implantados por programas de computadores no nosso caso programas Scilab Usando a linguagem Scilab n s vimos diversos algoritmos para solu o de problemas como leitura processamento e escrita de dados usando inicialmente teclado e monitor para pequenos volumes de dados e depois arquivos para grandes volumes de dados Para dois problemas cl ssicos de transforma o de informa o n s vimos diversas solu es a pesquisa por um valor em um vetor e a ordena o de um vetor N s vimos que algoritmos podem diferir e muito em sua efici ncia no uso de recursos computacionais como tempo de execu o ou quantidade de mem ria O termo complexidade computacional de um algoritmo empregado para caracterizar suas exig ncias destes recursos como uma fun o do tamanho dos dados de entrada Alguns problemas de transforma o de informa o t m limites inferiores para a complexidade de qualquer algoritmo que o resolva A ordena o de um vetor por exemplo no melhor caso O n log n Acredita se que o limite inferior para uma classe de problemas conhecida como np completos como o problema do caixeiro viajante tem complexidade intr nseca crescente em taxa maior que qualquer polin mio em n Outros problemas s o ainda piores Para problemas chamados indecid veis como o da correspond ncia de Post n o existem algoritmos com um tempo limite garantido para qualquer entrada
163. emitidos nos momentos adequados para barramentos registradores e mem ria executam efetivamente os fluxos de dados que correspondem s instru es mOpCode BE 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 e s a 3j 2 1 o D Signals Figura 137 Formato de uma microinstru o Em uma CPU microprogramada uma instru o executada como uma sequ ncia de microinstru es Microinstru es da Pipoca t m 24 bits no formato mostrado na Figura 137 Temos dois tipos de microinstru es e microinstru es de sinal onde os bits de O a 22 s o valores para os sinais de controle clocks de registradores e mem rias controles de barramentos que a unidade de controle deve prover para o circuito principal da CPU ou Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 79 e microinstru es de desvio que s o utilizadas para guiar o fluxo de execu o das microinstru es O tipo da microinstru o ditado pelo bit mais significativo o bit 23 Tabela 15 Microinstru es de Desvio Desvia para a micro instru o inicial da jmpNext 0000 E instru o no registrador IR da CPU Desvia para o operando se o modo de jmpIMMEDIATE 0001 j endere amento for Imediato Desvia para o operando se o modo de jmpDIRECT 0010 j j endere amento for Direto Desvia para o operando se o modo de jmpINDIRECT 0011 endere amento for Indireto Situa o ines
164. encadeamento das chamadas neste programa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 144 Programa Principal Fun o Fatorial Figura 278 Encadeamento de chamadas 3 3 3 Fun es Matrizes Loops e Indu o Nesta se o n s apresentamos um roteiro que explora matrizes loops e id ias da indu o matem tica para desenvolver duas fun es que poder o ser aproveitadas em algoritmos mais complexos Crie um diret rio de trabalho abra o Scilab e use o menu File Change Directory para mudar para este diret rio de trabalho Depois abra o Scipad clicando sobre o menu Applications Editor no Scilab 3 3 3 1 Soma dos Elementos de um Vetor Como um primeiro exemplo vamos programar uma fun o para calcular a soma de todos os elementos de um vetor A O primeiro passo para desenvolver uma fun o a determina o de suas entradas e de suas sa das Qual a id ia Vamos fornecer fun o um vetor e esta fun o deve retornar um nico valor com a soma de todos os elementos Em outras palavras esta fun o tem um nico par metro de entrada o vetor e um nico par metro de sa da a soma Com isto podemos come ar a escrever nossa fun o usando o Scipad como mostra a Figura 279 function s Soma A Calcula a soma dos elementos do vetor A endfunction Figura 279 Cabe alho da fun o Soma Salve este arquivo no seu diret rio de trabalho
165. enor dist ncia total partindo da cidade 1 Na Figura 367 voc pode ver como a escolha de um roteiro influencia a dist ncia total 7 3 7 D 19 D 22 D 15 Figura 367 Algumas alternativas de roteiros para o caixeiro viajante Um exame atento nos faz perceber que o roteiro mais direita na Figura 367 dentre todos o de menor custo Descobrir o roteiro timo fica bem mais complicado quando temos mais cidades como na Figura 368 Figura 368 Um problema com 8 cidades Temos muito mais alternativas a examinar tr s exemplos est o na Figura 369 Aqui tamb m a alternativa mais direita a rota tima fato que n o f cil de se confirmar por um simples exame do problema Precisamos do aux lio de um computador Queremos construir um programa que dado um conjunto de cidades e suas dist ncias descubra o melhor roteiro para o caixeiro viajante Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 193 D 81 D 98 D 64 Figura 369 Algumas alternativas de roteiros para o problema da Figura 368 Vamos tentar uma solu o direta Devemos 1 Gerar todas as alternativas de roteiros 2 Para cada roteiro calcular o seu custo total 3 Escolher o roteiro com menor dist ncia total E como fazer para gerar todas as alternativas de roteiros Temos que gerar todas as permuta es das cidades a serem percorridas Para um problema com 4 cid
166. ente da velocidade de um computador espec fico e de outros fatores que afetam o tempo de execu o de um programa Um algoritmo tem a sua complexidade conhecida quando conseguimos encontrar uma fun o que descreva a ordem de crescimento de seu tempo de execu o com rela o ao tamanho de sua entrada E qual o tamanho da entrada da fun o MenorFator Seu nico par metro de entrada um n mero que para fins de an lise do algoritmo podemos supor ser representado como bin rio sem sinal com n bits N s vimos que o tempo para o pior caso da execu o de MenorFator cresce linearmente com o valor do primo fatorado que pr ximo de 2 onde n o n mero de bits necess rios para a representa o do primo Tempo para Fatora o em fun o do n mero de bits 100 ai 20 T mi 50 pas Segundos 20 z9 Bits Figura 310 Tempos para fatora o em fun o do n mero de bits de um n mero primo em dois computadores Se n o tamanho da entrada de um problema n s dizemos que uma fun o g n caracteriza a complexidade de um algoritmo quando seu tempo de execu o limitado por g n multiplicado por uma constante N s dizemos que sua complexidade da ordem de g n o que escrito T n O g n pronuncia se de g n No caso do algoritmo utilizado pela fun o MenorFator temos T n 0 2 e por isso dizemos que o algoritmo tem Introdu o Organiza o e Programa o de Computad
167. erros com pouco aproveitamento do trabalho j feito A solu o para isso usar o Scilab como um interpretador de programas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 103 Um programa fonte Scilab um arquivo ASCII isto um arquivo que s cont m textos sem formata o e que tem a termina o sce Um arquivo programa cont m comandos Scilab e constru do usando o editor SciPad veja na Figura 174 como o editor aberto no Scilab 5 1 A execu o interpreta o de um programa se faz seguindo o menu File Execute da console do Scilab essa execu o equivale digita o na console dos comandos presentes no arquivo Console File Edit Preferences Control Applications 2 BX EOBIA Editor roari rg aro T Scicos gt sx a Matlab to Scilab translator A Figura 174 Abrindo o editor SciPad Aten o nunca use o Word ou qualquer outro editor de textos sofisticado para abrir e ou editar arquivos de programas Esses editores podem introduzir bytes de informa o de formata o o que perturba completamente a interpreta o do programa pelo Scilab No editor Scipad voc pode e Criar um novo programa atrav s do menu File New e Abrir para edi o um programa j existente atrav s do menu File Open e Editar um programa e Salvar o programa editado atrav s do menu File Save e Executar um programa atrav s do
168. especial para o caso de termos o primeiro coeficiente nulo o que provoca uma divis o por zero no c lculo das raizes Se em uma linha do arquivo de coeficientes tivermos a 0 a divis o por zero provocar uma interrup o da execu o do programa sem o processamento das equa es restantes Se isso n o for um comportamento aceit vel necess rio modificar a especifica o para dar um tratamento adequado a esta situa o que poderia ser por exemplo ignorar a linha com a O ou sen o resolver a equa o de primeiro grau resultante Em problemas reais comum que a fase de especifica o seja a etapa mais demorada e a mais cara de um projeto de desenvolvimento N o existe situa o pior para uma equipe de desenvolvimento do que ao dar por terminado um sistema constatar que ele n o atende s necessidades do cliente necessidades que por defici ncias no processo de an lise n o foram explicitadas na especifica o Apesar dessa import ncia neste curso n s procuraremos lidar com problemas cuja especifica o bem simples pois nosso objetivo aqui a cria o de uma cultura algor timica para o aluno T cnicas de an lise e de especifica o de sistemas s o mat rias que voc poder depois estudar em cursos de engenharia de software 4 1 2 Corre o poss vel verificar se um algoritmo atende a uma especifica o por um exame de sua estrutura com a constru o de uma prova formal de sua corre o Na p
169. etapa de inicializa o das vari veis posi es de mem ria SUM e P formada pelas instru es nos endere os de 0 a 3 e que atribui o valor inicial O para SUM e coloca em P o endere o X e Um loop composto pelas instru es colocadas entre o endere o 4 e o endere o 12 Em cada passo deste loop uma das parcelas adicionada a SUM e o endere o armazenado em P incrementado Ao fim do passo P comparado com XEND e dependendo do resultado o loop repetido ou o programa passa para a sua fase final e Uma etapa de finaliza o onde o resultado da soma encaminhado para a sa da e o programa p ra X Lo XEND SUM P Figura 126 Uso das vari veis SUM e P no programa SumX As quatro ltimas colunas na Tabela 14 resultam de um processo de montagem que descrevemos a seguir Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 72 Tabela 14 O programa SumX L lt T ilojojoa ojo rraoaamido fafafojsor ojsum ciocacemsum ao fafa ofon ojx carrega o endere o X no acumulador 8 15 32 alsfosor ojp colocaoenderegoxeme ao 21 20981 A015 roop a a oro 1 SUM _ Carrega o conte do de SUM no acumulador 8 20 33812 8414 foel fap fessan mia imema To a moles endere o P ao acumulador E T T EET 1 7 ojloaD 1 p Carrega o conte dodeP 8 21 33813 8415 ileejo oji fem O y oa ao 1 9 o9 sTorE_ Oj P_
170. etor 4 3 1 Sele o e Troca O primeiro algoritmo que iremos estudar conhecido como o m todo de Sele o e Troca em ingl s Select Sort por motivos que se tornar o bvios Vamos come ar apresentando o cabe alho de uma fun o apresentado na Figura 320 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 169 function sA SelectSort A Constr i o vetor sA com os mesmos elementos do vetor A dispostos em ordem crescente endfunction Figura 320 Cabe alho de uma fun o de ordena o Isso j nos permite desenvolver um programa para testar a fun o mostrado na Figura 321 getf SelectSort sci a int 10 rand 1 4 aa SelectSort a int 10 rand 1 6 SelectSort b int 10 rand 1 9 SelectSort c Figura 321 O programa SelectSort teste sce O programa SelectSort teste sce bastante simples e nos permite verificar por inspe o visual a corre o da fun o por testes com pequenos vetores rand micos Ele gera 3 pequenos vetores rand micos que s o passados como par metros de entrada para a fun o om Repare na aus ncia dos em quase todos os comandos de forma a tirar proveito do eco autom tico do Scilab para a impress o dos vetores antes e depois da ordena o O algoritmo de ordena o por sele o e troca tamb m desenvolvido por um racioc nio indutivo e Suponhamos que as k 1 primeiras posi es do veto
171. fatorialR na Figura 291 calcula o fatorial de um n mero usando de forma muito natural essas equa es function fat fatorialR n if n gt 1 then fat n fatorialR n 1 else fat 1 end endfunction Figura 291 Fun o recursiva para o c lculo do fatorial Para compreender melhor o funcionamento da execu o de uma fun o recursiva considere o programa FatorialR Teste da Figura 292 Teste de FatorialR getf FatorialR sci n input n while n gt 0 do printf in d d n FatorialR n n input n end Figura 292 Programa TestaFatorialR sce Considere tamb m a vers o de fatorialR da Figura 293 onde tamb m colocamos comandos printf envolvendo a chamada recursiva da fun o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 150 function fat FatorialR n Comente os printf para n o imprimir printf inIniciando FatorialR d n if n gt 1 then fat n FatorialR n 1 else fat 1 end printf inRetornando Fatorial d d n fat endfunction Figura 293 A fun o fatorialR instrumentada para acompanhamento de sua execu o A execu o deste programa pode gerar a sa da mostrada na Figura 294 onde acrescentamos chaves para indicar a correspond ncia entre chamadas e retornos da fun o n s Iniciando FatorialR 5 Iniciando FatorialR 4 Iniciando FatorialR 3 Iniciando FatorialR 2 In
172. felt that FORTRAN offers as convenient a language for stating problems for machine solution as is now known J W Backus H Herrick e I Ziller 1954 N s vimos na Se o 2 4 como programar um computador em linguagem de m quina Ao construir um programa o programador deve pensar em composi es de instru es que refletem a arquitetura da m quina espec fica em que est trabalhando seus registradores mem rias rotas de dados A tarefa de programar se torna extremamente detalhada e propensa a erros Um programa feito para um computador n o pode ser executado por um outro com um repert rio distinto de instru es N s vimos tamb m que o processo de montagem manual dos bits das instru es de um programa escrito com mnem nicos pode ser feito com a ajuda de um assembler um programa que l outro programa escrito com mnem nicos e labels e faz automaticamente a montagem das instru es Programas montadores melhoraram muito a vida dos programadores que antes tinham que refazer todo o processo de montagem ao ter por exemplo uma posi o de mem ria modificada A montagem manual de instru es foi feita pelos primeiros programadores ainda na d cada de 40 Montadores foram introduzidos no in cio dos anos 50 A id ia de se produzir programas que facilitam a programa o foi levada adiante e na verdade uma id ia central na ci ncia da computa o Em 1954 a linguagem Fortran de Formula Translating foi proposta por um gru
173. finidas por e aNANDb ab e aNORb a b Ou seja um NAND um AND seguido de uma nega o assim como um NOR um OR seguido de uma nega o A import ncia das opera es NAND e NOR vem do fato de que sua constru o com transistores mais simples como veremos a seguir A Figura 41 mostra os s mbolos utilizados no desenho de circuitos l gicos para as portas NAND e NOR Figura 41 Portas NAND e NOR Transistores s o a base para a constru o de circuitos compactos e r pidos Por um lado a tecnologia de 2008 permite colocar 800 milh es de transistores em um chip de 244 mm e por outro o tempo de rea o de um desses transistores a mudan as em suas entradas muito pequeno Transistores podem ser e s o utilizados para amplificar sinais mas em circuitos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 29 digitais funcionam essencialmente como interruptores trabalhando ora como condutores perfeitos ora como isolantes perfeitos Figura 42 Um transistor Um transistor tem 3 pinos um controle uma entrada e uma sa da Em circuitos digitais o seu funcionamento se d somente nas seguintes situa es e quando a voltagem aplicada ao controle alta para algumas tecnologias 5 V O transistor um condutor perfeito e as voltagens na entrada e na sa da s o necessariamente iguais e quando a voltagem aplicada ao controle baixa 0 V digamo
174. fun o desejada s0 a b ab a b sl s ii i i i l i l l D i l Lai o ls ae Figura 61 Express es l gicas para um somador de duas vari veis de 1 bit Retornando ao problema do somador de 1 bit temos duas fun es para as quais queremos encontrar express es l gicas equivalentes Na Figura 61 vemos que para a fun o s4 temos apenas o 1 da ltima linha a cobrir o que feito pelo termo ab e para a fun o so temos um Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 39 1 na segunda linha coberto pelo termo a b e outro 1 na terceira linha coberto pelo termo ab Ou seja as express es l gicas que desejamos s o S a b ab es ab A Figura 62 mostra um circuito que implementa essas express es l gicas Este circuito conhecido como circuito meia soma por contraste com o circuito soma completa que veremos a seguir Figura 62 Circuito l gico para soma bin ria de 1 bit ou circuito meia soma Temos aqui um resultado important ssimo n s fomos capazes de construir um circuito l gico com duas entradas de 1 bit representando bin rios sem sinal e que produz em sua sa da dois bits representando a soma das entradas tamb m codificado como um bin rio sem sinal Ou seja conseguimos fazer contas com as fun es l gicas NOT AND e OR 2 2 4 2 Soma de bin rios com v rios bits Tudo bem conseguimos fazer um circuito qu
175. gada para a vari vel inf e inf avan a sempre para a direita e sup para a esquerda o loop principal para quando estes dois ponteiros se cruzam e no primeiro loop interno inf avan a para a direita at encontrar um elemento com valor maior ou igual ao piv e no segundo loop interno sup avan a para a esquerda at encontrar um elemento com valor menor ou igual ao piv e os elementos encontrados nestes dois loops internos s o trocados de posi o a n o ser que inf e sup j tenham se cruzado N o dif cil ver que a fun o partition realiza s compara es para dividir uma parti o de tamanho s O comportamento do algoritmo de ordena o por parti o fortemente dependente das escolhas de piv No melhor caso os piv s escolhidos s o tais que cada parti o divide o vetor ao meio e por motivos similares aos colocados na an lise da complexidade do algoritmo de ordena o por intercala o o quicksort O nlog gt n No pior caso O piv tal que cada parti o produz uma parte com um nico elemento e outra com n 1 elementos e o n mero de compara es O n t o ruim como a ordena o por sele o e troca 4 3 4 Dividir para Conquistar Os algoritmos de ordena o por intercala o e por parti o s o exemplos de emprego de uma estrat gia cl ssica em computa o chamada dividir para conquistar Dado um problema de tamanho n e o problema dividido em 2 subproblemas de tamanho n 2 o
176. gadro n s dizemos que a mantissa 6 02 e o expoente 23 A codifica o de n meros em ponto flutuante atribui a alguns dos bits do n mero o significado de um expoente n o de 10 mas de 2 como n o poderia deixar de ser Existe um padr o para ponto flutuante de aceita o total pela ind stria que o IEEE 754 Para n meros de precis o simples o IEEE 754 utiliza 32 bits sendo 1 bit para o sinal 0 positivo 1 negativo 8 para o expoente e 23 para a mantissa Para precis o dupla s o 64 bits 1 para o sinal 11 para o expoente e 52 para a mantissa Expoentes negativos s o representados pela conven o de deslocamento que j vimos Notando por s o sinal por x o valor do expoente interpretado como um bin rio sem sinal e por m o valor da mantissa tamb m interpretada como um bin rio sem sinal o valor representado por um n mero em ponto flutuante padr o IEEE 754 dado por V 1 5 x m x 2 onde D o deslocamento usado para expressar expoentes negativos valendo 127 para precis o simples e 1023 para precis o dupla A Figura 38 mostra um n mero em ponto flutuante de 32 bits 31 30 29 26 27 26 25 24 25 22 21 20 15 18 17 16 15 14 us a2 an 10 0 8 7 6 s als 2 1 o oz e s 4 3 2 1 0 2221 20 19 18 17 16 as 14J13s2 11 10 0 8 7 6 s aja 2 ifo Figura 38 Um n mero em ponto flutuante com 32 bits O padr o IEEE 754 reserva expoentes s com 1s e s com Os para a representa o de valores espe
177. i while x lt 2 pi printf n 3 1f 7 4f printf n 3 1f 7 4f x sin x x sin x end x 0 2 Figura 195 Mesmo loop obtido com comandos for e while O emprego do comando while deve ser feito com aten o pois voc pode prescrever um loop que nunca ir parar como no exemplo da Figura 196 O while s ser interrompido quando x for maior que 10 o que nunca acontecer porque x vale O inicialmente e a cada passo fica ainda menor x 0 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 112 while x lt 10 printf inx x x 0 2 end Figura 196 Um loop infinito No Scilab voc pode interromper um programa em loop infinito atrav s do menu Control Abort N s veremos a seguir diversos exemplos de utiliza o do comando while 3 1 4 Valores L gicos e Strings Uma vari vel Scilab pode armazenar tamb m valores l gicos correspondentes a verdadeiro e falso denotados pelas constantes Scilab St e Z true e false ou T e F A Figura 197 mostra um exemplo de atribui o de valores l gicos a vari veis usando a console do Scilab Figura 197 Atribuic o de valores l gicos a vari veis na console do Scilab Vari veis com valores l gicos podem ser parte de express es l gicas que usam os operadores l gicos NOT amp AND e OR definidos como voc pode esperar exatamente como na Tabela 9 p gina 27 Figura 198
178. iciando FatorialR 1 Retornando Fatorial 1l 1 Retornando Fatorial 2 2 Retornando Fatorial 3 6 Retornando Fatorial 4 24 Retornando Fatorial 5 120 5 120 Figura 294 Sa da do programa TestaFatorialR sce Chamadas e retornos de fun es seguem um mecanismo cl ssico em computa o chamado de pilha Em uma pilha de livros normalmente coloca se um novo livro encima da pilha e retira se o livro no topo da pilha Fat 1 OWD Fat 2 LELO COD Ev ELOD LELE Fat 3 CLOW Fat 4 MD Fat 4 ILLOD ILLOD Fat 4 BELG Fat 5 Fat 5 Fat 5 Fat 5 EE Prog Prog Prog Prog Prog Fat 5 Prog Fat 5 Prog Fat 5 Fat 5 A Figura 295 ilustra a evolu o da pilha de execu o do programa TestaFatorialR sce quando executado com n 5 No in cio somente o programa principal est em execu o A primeira chamada de FatorialR feita com o par metro real 5 Temos neste momento o programa principal e uma inst ncia da fun o em execu o Mas o c lculo do fatorial de 5 exige outra chamada de FatorialR desta vez com o par metro real 4 o que nos leva a ter em execu o o programa principal e duas inst ncias de FatorialR Para o c lculo do fatorial de 4 precisamos do fatorial de 3 e assim vamos at chegarmos a uma pilha com o programa principal e cinco inst ncias de FatorialR que na ltima vez ter sido chamada com o par metro real 1 Figura 295 Pilha de execu o de FatorialR Com o par metro real
179. iente e Linguagem Scilab 134 gt X 2534 y 3147 gt plot2d x y Figura 250 Outro exemplo de gr fico obtido com plot2d Para se obter um gr fico da fun o seno podemos fazer como mostrado na Figura 251 Primeiramente gerado o vetor x de abscissas depois o vetor y obtido pela aplica o da fun o sin ao vetor x e o comando plot2d x y gera o gr fico gt x 0 0 8 3 pi 0 1 2 3 4 5 6 7 8 9 Figura 251 Gr fico da fun o seno com espa amento excessivo A curva obtida n o merece bem este nome est toda quebrada com cotovelos vis veis o n mero de pontos utilizado para as abscissas foi pequeno para a nossa acuidade visual Um resultado melhor e que mostra que a gera o de um vetor pela fun o linspace mais confort vel nessas ocasi es est mostrado na Figura 252 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 135 gt x linspace 0 3 pi 101 sin x gt plot2d x y V K Il 32 Figura 252 Gr fico da fun o seno com um espa amento agrad vel A fun o plot2d pode ser usada para tra ar v rias curvas em um nico gr fico O comando plot2d x M onde x um vetor coluna e M uma matriz com o mesmo n mero de linhas de x faz um gr fico de x versus cada coluna de M gt x linspace 0 3 pi 101 gt plot2d x sin x sin 2 x sin 3 x pra 0
180. igura 25 Redes de computadores Entradas e sa das de rede s o particularmente importantes pois permitem a conex o entre computadores Um atuador de um computador emite sinais el tricos ou de r dio ou ticos que s o percebidos lidos por um sensor de outro computador Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 15 1 6 Mem rias Mem rias s o usadas por computadores para registrar informa es para recupera o posterior Um computador geralmente trabalha com diversos tipos de mem ria que seguem uma distribui o hier rquica Registradores s o mem rias muito pequenas e muito r pidas que se encontram dentro do mesmo chip do processador e que t m suas entradas e sa das ligadas diretamente a circuitos que realizam transforma es de informa o como a unidade aritm tica que como o nome indica realiza opera es aritm ticas Mem ria principal ou RAM Random Access Memory um circuito externo ao processador mas de acesso ainda bastante r pido Instru es executadas pelo processador utilizam diretamente operandos armazenados na mem ria principal Transforma es como opera es aritm ticas geralmente exigem que informa o seja previamente transferida da mem ria principal para registradores onde as opera es s o realizadas e os resultados posteriormente armazenados na mem ria principal De uma forma geral a mem ria principal vol t
181. il no sentido em que necess rio manter o computador ligado para que a informa o ali armazenada n o se perca A volatilidade n o uma necessidade mas uma caracter stica da tecnologia empregada nas mem rias principais atuais H alguns anos atr s mem rias principais utilizavam n cleos de ferrite com o registro da informa o feito por polariza es magn ticas n o vol teis a tA KLL 5 im A ua IIT a P ES ad fez seu r rr F e rr IZ dai Est Es Dr A LA R HIRA ea Figura 26 4GB de RAM montados em um computador pessoal Mem rias secund rias s o tipicamente discos r gidos onde informa es tamb m podem ser lidas e escritas mas o processador deve executar instru es especiais de entrada e sa da para isso Mem rias flash mem rias usadas em pen drives no iPod v m sendo tamb m cada vez mais utilizadas como mem rias secund rias Mem rias secund rias s o n o vol teis com a informa o armazenada permanecendo registrada mesmo sem qualquer alimenta o de energia A informa o em uma mem ria secund ria sempre formatada em arquivos e diret rios que prov m uma abstra o essencial para o seu uso Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 16 Figura 27 Um disco r gido sem a cobertura protetora mostrando o movimento da cabe a de leitura e grava o e Mem rias terci rias s o necess rias em ambientes maiores que ar
182. impress o de um vetor em um formato mais agrad vel Este programa gera um vetor com 10 elementos aleat rios e permite que o usu rio repetidamente escolha um ponto inicial para a sele o da posi o com o menor elemento a partir do ponto inicial A Figura 326 mostra uma sa da deste programa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 172 Inicio 4 Fim im m Figura 326 Uma sa da do programa MinimoPos_teste Com a confian a adquirida sobre a fun o MinimoPos n s podemos chegar ao refinamento final da fun o SelectSort mostrado na Figura 327 function sA SelectSort A for k 1 length A 1 Seleciona a posi o entre A k e A length A que cont m o menor valor Min 1Min MinimoPos A k length A Troca os valores de A k com o valor na posi o selecionada temp A k A k A iMin A iMin temp end sA A endfunction Figura 327 A fun o SelectSort Vamos agora examinar a complexidade deste algoritmo Para ordenar um vetor de tamanho n o primeiro passo do algoritmo de sele o e troca realiza n 1 compara es o segundo n 2 O terceiro n 3 e assim por diante at chegar ao ltimo passo quando feita uma nica compara o Podemos concluir que o n mero de compara es realizado dado por Mel nem comp 1 2 n 1 z gt a l Para n suficientemente grande o n mero de compara
183. ina es poss veis de valores para a e b verificando a sa da para completar a Tabela 10 Complete com os valores produzidos pelo seu circuito XOR Tabela 10 Complete com os valores produzidos pelo seu circuito XOR Circuitos podem ser salvos em arquivos para uso posterior Para salvar o seu circuito use a op o File Save do menu do Logisim escolha um nome para o arquivo e um diret rio e salve o Para voltar a trabalhar com o arquivo use File Open Para introduzir elementos de circuito com outras orienta es clique sobre a ferramenta desejada e depois altere o campo Facing na tabela de atributos conforme mostrado na figura abaixo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 36 Logisim main of Untitled File Edit Project Simulate Window Help bMjalm o DD D Untitled G main 45 Base 110 Gates 1 Plexers Arithmetic H Memory 13 Input Output E Facing South 100 i Figura 56 Mudando a orienta o de uma porta l gica Com isso n s esperamos que voc tenha adquirido os elementos b sicos para o uso do Logisim Voc pode descobrir muito mais lendo a ajuda ou explorando diretamente a ferramenta 2 2 4 Aritm tica com opera es l gicas Figura 57 Circuito correspondente express o a ca b c N s vimos como circuitos l gicos implementam express es l gicas com um mapeamento direto Por
184. ior ablguais e ABiguais Combina es onde mais de uma dentre as vari veis aMaior bMaior e ablguais t m o valor 1 ou em que todas as tr s s o iguais a O nunca devem ocorrer e o s mbolo x usado na tabela para indicar que os valores das sa das n o t m interesse nesses casos O Logisim tira proveito disso para obter circuitos mais simples Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 51 aMaior bMaior abIguaisy vc EBC G G e G ce e dDE Ss SD ESSE oe e e E me ee aa ee e ee aa e re e re D5 O H MH K H nOD pa e e e e e e DO O H MM MM N ON Om 1 Figura 86 Tabela da verdade para um comparador de 1 bit A Figura 87 mostra o circuito comparador de 1 bit obtido dessa tabela da verdade Figura 87 Circuito comparador de 1 bit 2 2 7 Multiplexadores e Demultiplexadores Circuitos l gicos s o tamb m utilizados para conduzir fluxos de dados e Ummultiplexador dirige uma nica entre v rias entradas de dados para um destino a entrada escolhida designada por um endere o Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 52 e Um demultiplexador dirige uma entrada de dados para um dentre v rios destinos o destino escolhido designado por um endere o e e O A O A i Figura 88 Tabela da verdade para um multiplexador de 1 bit A Figura 88 mostra uma tabela da ver
185. its 2 2 2 Portas L gicas Tabela 9 Defini o das opera es NOT OR e AND a nota A Tabela 9 mostra as defini es dessas opera es O que se v nas tabelas bastante intuitivo e A opera o de nega o NOT simplesmente inverte o valor de entrada e A opera o OR tem como resultado 1 se pelo menos uma das entradas for igual a 1 e s igual a O quando todas as entradas forem iguais a 0 e Inversamente a opera o AND tem O como resultado se qualquer uma das entradas for igual a O e s igual a 1 quando todas as entradas forem iguais a 1 Circuitos digitais que implementam opera es booleanas s o conhecidos como portas l gicas A Figura 40 mostra um circuito simulado no Logisim contendo entradas sa das e portas NOT AND e OR Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 28 Figura 40 Portas l gicas entradas e sa das em um circuito simulado no Logisim Express es booleanas s o composi es dessas opera es b sicas geralmente escritas utilizando uma nota o mais compacta e a denota NOT a e a b denotaa OR b e a bouab denota a AND b Par nteses s o usados em express es booleanas da mesma forma que usamos em express es aritm ticas Exemplos de express es booleanas ou express es l gicas s o ab a b e a by Duas opera es booleanas que podem ser derivadas dessas opera es b sicas s o NAND e NOR de
186. lf 1 length x 1f minLeft lt minRight then m minLeft else m minRight end end endfunction Figura 296 Fun o Minimor recursiva 3 3 5 Fun es e Desenvolvimento Top down Uma t cnica comum de programa o a utiliza o da chamada de uma fun o antes do desenvolvimento da pr pria fun o em uma t cnica conhecida como desenvolvimento top down Em um certo momento do desenvolvimento o programador capaz de especificar o que ele quer que a fun o fa a deixando para depois o trabalho de determinar como faz lo Vamos aqui ilustrar o emprego de desenvolvimento top down para construir um programa que e Leia uma s rie de n meros inteiros maiores ou iguais a 2 e Para cada n mero lido encontre o menor n mero primo que seja maior ou igual a ele Por exemplo se o n mero lido for 4 o programa deve encontrar o n mero primo 5 se for 11 o programa deve encontrar 11 que j primo Da matem tica n s sabemos que o conjunto de n meros primos infinito ou seja que sempre existe um n mero primo maior ou igual a um n mero dado e O programa deve terminar quando o usu rio entrar com um n mero menor que 2 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 152 Construir um programa que seguindo a estrutura mostrada na Figura 207 leia uma s rie de dados fa a alguma coisa com eles e termine conforme o desejo do usu rio uma id ia
187. lock s o necess rios para a execu o de programas 2 4 2 Instru es Para facilitar a programa o as instru es que constituem um programa n o s o estruturadas diretamente em termos de sinais de controle o que entretanto se poderia esperar visto que a emiss o destes sinais o efeito final necess rio para se produzir uma computa o A es t picas de instru es de m quina s o somar o conte do da posi o X de mem ria ao acumulador ou ler um dado em pinos de entrada e colocar na posi o de mem ria Y com mais significado para o programador A emiss o efetiva dos sinais de controle fica definida pelo que chamamos de micro instru es A execu o de uma instru o feita atrav s da execu o de v rias micro instru es como veremos a seguir OpCode Figura 124 Formato de uma instru o da Pipoca N s vimos que instru es devem ser codificadas tamb m em bits A Figura 124 mostra o formato que escolhemos para as instru es da Pipoca Cada instru o tem 16 bits sendo 4 para o c digo da instru o 2 para o modo de endere amento que explicaremos a seguir e 10 para um operando Instru es s o definidas em termos de altera es na vis o que um programador tem da CPU O conjunto completo de instru es da Pipoca est mostrado na Tabela 12 S o 11 instru es ao todo Como dispomos de 4 bits para o c digo da instru o temos ainda espa o para quatro outras instru es
188. lose mget1 fscanfMat e fprintfMat que nos permitem usar armazenamento est vel para massas de dados potencialmente grandes e Um programa Scilab formado por um programa principal e por defini es de fun es Scilab Programas e fun es Scilab s o armazenados em arquivos e Uma fun o Scilab define par metros formais de entrada e de sa da A chamada de uma fun o Scilab define par metros reais de entrada que s o express es Scilab e par metros reais de sa da que s o vari veis que recebem os valores calculados pela fun o para seus par metros formais de sa da e Fun es Scilab podem conter comandos Scilab vari veis locais e chamadas de fun es incluindo possivelmente chamadas pr pria fun o em um arranjo recursivo e N s vimos que a recursividade pode simplificar muito o desenvolvimento de algoritmos pois expressa de forma natural o seu comportamento e Fun es s o uma importante ferramenta de modulariza o Seu uso permite o desenvolvimento seja em momentos separados seja por pessoas diferentes Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Notas Finais e Pr ximos Passos 206 Com o dom nio de uma linguagem de programa o n s pudemos atacar problemas de transforma o de informa o muito mais elaborados Problemas de transforma o de informa o s o em princ pio resolvidos por algoritmos m todos que prescrevem sequ ncias de transforma es
189. m 2008 j n o era o RoadRunner que como o Blue Gene foi produzido pela IBM atingiu um petaflops isto mil trilh es de opera es aritm ticas por segundo Como curiosidade o RoadRunner utiliza chips circuitos integrados usados na PlayStation 3 da Sony A cada seis meses uma lista com os maiores computadores do mundo publicada no site Top500 Vale a pena visitar este site que cont m dados e an lises interessantes sobre a evolu o dos supercomputadores denomina o que a ind stria d a computadores como o Blue Gene ou o RoadRunner Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 2 Figura 2 Blue Gene 2006 Com a r pida evolu o da eletr nica poderoso hoje normal amanh fraco depois de amanh Para ter alguma utilidade o termo for osamente relativo poca um supercomputador um computador que figura dentre os mais poderosos do mundo em sua gera o Courtesy IBM www ibm com se Figura 3 Mark IV 1944 Neste sentido o Mark IV Figura 3 de 1944 executando apenas 3 opera es aritm ticas por segundo era mais super que o Blue Gene pois era um dos nicos computadores existentes no mundo System 64 Racks 64x32x32 o 180 360 TF s 32 TB Node Card 32 chips 4x4x2 16 compute 0 2 IO cards 2 8 5 6 TF s 512 GB Compute Card 2 chips 1x2x1 k 907 180 GF s Chip 16 GB 2 process
190. m n mero no nome do arquivo porque faremos outras vers es deste mesmo programa Se voc rodar este programa usando o menu File Execute voc obter os mesmos resultados que conseguimos com a console As duas primeiras linhas do programa Eg2g1 sce se iniciam por o que faz com que sejam ignoradas pelo Scilab no momento da execu o Essas linhas s o coment rios e t m o important ssimo objetivo de melhorar a compreens o de um programa por um leitor humano Com um programa gravado em um arquivo se quisermos resolver uma nova equa o bastar substituir no programa os valores dos novos coeficientes e execut lo novamente Comparando com o processo de resolu o via console o uso de um programa reduz consideravelmente as chances de erros de digita o Entretanto a pr tica de se alterar programas para introduzir dados que se modificam a cada execu o n o recomend vel e nem exequ vel quando o volume de dados muito grande O melhor a fazer modificar o programa para permitir que o usu rio defina os valores dos coeficientes a cada execu o C lculo das ra zes de uma equa o de 20 grau input Digite o valor de a input Digite o valor de b input Digite o valor de c 0 Um I l delta b 2 4x a c ri b sqrt delta 2 a r2 b sgrt delta 2 a Figura 176 O programa Eq2g2 sce com os comandos de di logo em destaque O comando input permite essa intera o c
191. ma o de Computadores IOPC 2010 2 3 Organiza o de Computadores 33 Bej Untitled TA main W Base H Gates W Plexers w Arithmetic H Memory 15 Input Output Figura 51 Acrescentando entradas e sa das Para colocar fios ligando entradas portas e sa das utilize a ferramenta de sele o em destaque na Figura 52 Fios sempre seguem caminhos horizontais e verticais chamado caminho Manhattan e nunca em diagonal DER ba J Untitled n Base H Gates S Plexers E Arithmetic 5 Memory H Input Output Figura 52 Acrescentando o cabeamento Uma opera o l gica importante o Ou Exclusivo escrito frequentemente como XOR exclusive or Se a e b s o vari veis booleanas isto vari veis cujos nicos valores poss veis s o Verdadeiro e Falso ou 0 e 1 a XOR b s tem o valor 1 Verdadeiro quando uma e somente uma das vari veis a e b tem o valor 1 O Ou Exclusivo n o uma opera o primitiva da lgebra booleana pois pode ser obtido atrav s da express o a XOR b ab a b Termine agora o cabeamento para obter o circuito da Figura 53 que implementa o Ou Exclusivo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 34 Logisim main of Untitled File Edit Project Simulate window Help brjalz eo DD CD Untitled O main Base Gates Plexers 4 53 Arithmetic H Memory
192. ma mem ria Alguns dos primeiros computadores tinham uma mem ria para programas e outra para dados mas na quase totalidade dos computadores atuais programas e dados s o armazenados na mesma mem ria seguindo a arquitetura chamada de Von Neumann que prop s este arranjo em 1945 Neumann 1945 Um programa tem um car ter dual pois ele deve ao mesmo tempo e expressar a forma com que uma pessoa um programador pensa em resolver um problema de transforma o de informa o e e poder ser executado pelo processador isto por um circuito digital composto Instru es Figura 117 Programa Fonte e Programa Bin rio Na pr tica estas duas demandas podem ser atendidas da seguinte maneira Um programa composto por instru es de m quina que s o escritas por um programador em uma linguagem chamada Assembler e depois traduzidas para serem executadas por uma CPU Isso feito por um processo que chamamos de montagem assembly das instru es nE p s o diferentes Expressa codifica es de Siam GOlin o o ma COME a eo na carregado executado n ing na pela a ri E Fo ON E composto Instru es passam FHorntegem de cra Insis e F n p comp em fest p r em dssembler iu q Instru es F 3 Bin rias no m Figura 118 Montagem de um programa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Orga
193. mam e registram informa o digital Digital K a recebida enviada pelo computador de pelo computador para Sensores ou Entradas Figura 20 Sensores e atuadores A informa o digital recebida pelo computador por sensores ou equipamentos de entrada e normalmente ap s alguma transforma o enviada para atuadores ou equipamentos de sa da podem receber podem transmitir informa o de informa o para ou incluem incluem Microfones C meras Digitais Figura 21 Intera o homem m quina A intera o entre humanos e computadores tamb m se d atrav s de sensores e atuadores Presente em quase todos os computadores o sensor mais comum o teclado Sua import ncia imensa atrav s de teclados que entra por exemplo a informa o que movimenta a economia mundial O teclado pode ser tamb m uma barreira pessoal para a entrada no mundo da inform tica Pessoas com dificuldades na digita o tendem a abandonar os computadores em uma atitude que provavelmente lhe trar o consequ ncias negativas E e j j x p je p he p Ella un 2 a a s le 7 e lo o r J Pirs h gt Y G L w CPPPrBeEPEL El Caps Lock T Enise a shift J V Z lahk 4 da Alt Am Gr pa Win Cirl Key Key Mania Ctrl Figura 22 Barbara Blackburn recordista mundial de velocidade de digita o BarbaraBlackburn e um teclado Dvorak projetado para maximizar a velocida
194. mazenam grandes volumes de dados Fitas magn ticas s o utilizadas com um rob que capaz de localizar a fita correta em um reposit rio e mont la em uma unidade de fita ligada ao computador Figura 28 Armazenamento terci rio com uma grande cole o de fitas magn ticas manipuladas por um bra o mec nico de um rob Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 17 1 7 Organiza o do Texto Este material destina se a disciplinas introdut rias de organiza o e programa o de computadores para alunos de ci ncias e de engenharia e tem como objetivos e introduzir no es b sicas de circuitos digitais organiza o de computadores representa o de dados e programa o e apresentar ao aluno alguns princ pios b sicos da constru o de algoritmos m todos computacionais para transforma o de informa o e de sua implementa o em um ambiente de programa o e e tornar o aluno fluente no uso de uma ferramenta computacional o Scilab de vasta aplica o nas ci ncias e engenharias O material est dividido em tr s partes e Parte Organiza o de Computadores e Parte Il Ambiente e Linguagem Scilab e Parte Ill Algoritmos e Programas 1 7 1 Organiza o de Computadores A Parte Organiza o de Computadores tem dois objetivos principais e darao aluno uma compreens o dos elementos essenciais do funcionamento interno de um computador
195. mente compacta em semi condutores e realizam as opera es booleanas muito rapidamente Portas l gicas podem teoricamente realizar qualquer transforma o de informa o colocando a informa o de entrada e a de sa da codificadas em uma tabela da verdade podemos construir um circuito que realiza a transforma o desejada Isso funciona perfeitamente para circuitos pequenos como para a constru o de um circuito de soma completa capaz de somar duas vari veis de um bit O uso direto de portas l gicas para transforma o de informa o entretanto limitado por raz es pr ticas Para a soma de dois inteiros de 32 bits ter amos uma tabela da verdade com 2 1 8 x 101 Um supercomputador que gastasse um nanosegundo 107 segundos para processar cada entrada da tabela da verdade demoraria 585 anos para terminar o processamento Por sua vez circuitos de soma completa podem ser ligados em em cascata em um arranjo que permite a soma de vari veis de digamos 32 bits cada uma Isto funciona para inteiros de 64 ou de 128 bits mas dificilmente algu m pensaria em construir um circuito para calcular a soma de 20 n meros de 32 bits cada um Com registradores barramentos unidade l gico aritm tica e mem ria dispostos em um arranjo adequado podemos usar sinais de controle para guiar o fluxo de dados e obter a soma de 20 ou mais n meros de 32 bits usando um acumulador e realizando uma soma de cada vez O pr ximo e enorme passo
196. mo presente no arquivo 2000000primos txt e o tempo gasto no desktop foi de 0 047 segundos enquanto que a fun o MenorFator gastou 88 360 segundos uma diferen a enorme de desempenho Quando n 10 a fun o modulo chamada aproximadamente 1024 vezes pela MenorFator e somente 32 vezes pela MenorFator2 Quando n 20 a fun o modulo chamada aproximadamente 22 1 048 576 vezes pela MenorFator e 1024 vezes pela MenorFator2 Ao passar o n mero de bits da entrada de 10 para 20 a MenorFator demora 1024 vezes mais enquanto a MenorFator2 demora 32 vezes mais Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 164 Tamanho da Inst ncia do Problema Fun o de complexidade 20 30 40 50 0 00001 0 00002 0 00003 0 00004 0 00005 0 00006 segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos 0 1 3 2 24 3 1 7 5 2 13 0 segundos segundos segundos minutos minutos minutos 0 001 1 0 17 9 12 7 35 7 36 segundos segundos segundos dias anos s culos 0 059 58 6 3855 2x 10 1 3x 10 segundos minutos anos s culos s culos s culos Figura 312 Quadro comparativo de fun es de complexidade A Figura 312 extra da do livro Garey amp Johnson 1979 nos ajuda a formar uma id ia do que esperar do desempenho de algoritmos com fun es de complexidade exponencial qu
197. mos utilizar algoritmos de pesquisa para testar a primalidade de um n mero a tabela sendo composta pelos n meros primos presentes no arquivo 200000primos txt Obviamente isto s funciona para n meros menores ou iguais ao maior n mero presente no arquivo 2750159 A especifica o do problema que iremos resolver de duas maneiras distintas Fa a um programa que e Leia o arquivo 200000primos txt que cont m os primeiros 200000 n meros primos e leia repetidamente n meros inteiros e para cada n mero lido verifique se o n mero primo pesquisando por ele na tabela e O programa deve parar quando o n mero lido for O zero 4 2 1 Pesquisa Sequencial A Figura 314 mostra o programa VerificaPrimos3 sci onde podemos notar que e Os primeiros comandos fazem a leitura da tabela de n meros primos e O programa apresenta a nossa velha conhecida estrutura de repeti o controlada pelo usu rio e A verifica o efetiva da primalidade foi deixada para a fun o Primo3 que tem como par metros de entrada o n mero digitado pelo usu rio e a tabela lida do arquivo Programa para dete o de n meros primos getf Primo3 sci getf segSearch sci argqTab uigetfile txt pwd Arquivo com Tabela tabPrimos fscanfMat arqgTab n input n while n gt 2 timer eh Primo Primo3 n tabPrimos tempoGasto timer Imprime o resultado printf inTempo gasto g segundos tempoGasto if eh
198. mostra a Figura 364 O valor 1 0e 23 somado a 1 0e23 n o altera o seu expoente o que natural mas tampouco altera a sua mantissa que n o possui bits suficientes para essa adi o O valor somado simplesmente perdido na opera o em um efeito que conhecido por cancelamento catastr fico Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 191 mi 4 3e007 au 15 ordens de 3ser007 grandeza maior 201007 que o resultado 2 5e 007 correto 2 0e 007 1 5e 007 1 0e 007 5 0e 008 Figura 365 Gr fico com valores absolutos dos termos da s rie de Taylor para x 20 A Figura 365 mostra um gr fico com os valores absolutos dos termos da s rie de Taylor para x 20 O maior valor absoluto de um termo da ordem de 107 e o valor correto para e da ordem de 107 Ou seja nas opera es aritm ticas realizadas com os primeiros termos da s rie os erros de truncamento podem ser bem maiores que o resultado final e isso o que ocorre com o uso da fun o expTaylor para o c lculo de exponenciais de n meros negativos Como li o a tirar destes exemplos voc deve ter muito cuidado ao operar com n meros de valores com grandes diferen as de ordem de grandeza A aritm tica de ponto flutuante melindrosa use fun es de bibliotecas desenvolvidas por profissionais de c lculo num rico sempre que poss vel Por outro lado n o se deixe levar pelo pessimismo Prog
199. mostrado na Figura 105 Neste arranjo e a entrada do acumulador alimentada por um circuito combinat rio que tipicamente realiza opera es aritm ticas ou l gicas e e a sa da do acumulador realimenta o circuito combinat rio isto a sa da do acumulador uma das entradas do circuito combinat rio Este arranjo permite por exemplo somar 10 000 n meros sequenciando as somas ao longo do tempo Acc Clr 1 Acc Clr O Abaixa o clear do acumulador Coloca 5 na entrada In In gt Dbus 1 JA entrada In controla o barramento O acumulador copia a entrada que a Acc Clk 1 ado sa da do circuito de soma sendo 5 Acc Clk 10 Abaixa o clock do acumulador In gt Dbus O Libera o barramento Figura 106 Exemplo de fluxo de dados realiz vel pelo circuito da Figura 105 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 61 Exemplos de fluxos de dados realiz veis com o circuito da Figura 105 est o mostrados na Figura 106 e na Figura 107 Coloca 7 na entrada In In gt Dbus 1 JA entrada In controla o barramento O acumulador copia a entrada que a sa da do circuito de soma sendo igual a 12 Acc Clk 1 Oc em hexa soma do valor do acumulador com o do barramento Acc Clk O Abaixa o clock do acumulador Libera o barramento Figura 107 Outro exemplo de fluxo de dados realiz vel pelo circuito da Figura 105 1 In gt Dbus 0
200. muito detalhada presa a uma arquitetura espec fica sendo propensa a erros e sem portabilidade e Compiladores e interpretadores s o tamb m programas que t m como entrada programas escritos em uma linguagem de alto n vel como Fortran C ou Scilab e que ou bem transformam estes programas em instru es de m quina a serem executados diretamente por um computador ou como o caso do Scilab t m internamente uma m quina virtual que interpreta o programa recebido como entrada e Linguagens de alto n vel oferecem abstra es que nos permitem escrever programas descri es de transforma o de informa o de uma forma muito mais pr xima do nosso racioc nio e O Scilab em particular nos permite guardar valores em vari veis com um nome que podemos escolher Esses valores podem ser num ricos caracteres ou l gicos e Vari veis Scilab s o sempre matrizes a linguagem oferece nota es para designa o de partes de uma matriz e Vari veis constantes cnamadas de fun es par nteses e operadores podem ser combinados em express es que resultam em valores Scilab e que podem ser empregados em comandos de atribui o para alterar valores de vari veis e Alinguagem Scilab oferece tamb m comandos de controle do fluxo de execu o como o comando condicional if then else e os loops while e for e Temos comandos de entrada e sa da como input e printf e comandos para o tratamento de arquivos como mopen e mc
201. n o WritePostSolution usada para imprimir na tela uma solu o eventualmente encontrada e Afun o strPost constr i um string concatenando segundo uma sequ ncia dada os strings na parte superior ou na parte inferior dos domin s ProblemaPost Notepad File Edit Format View Help 100 0 1 1 100 00 Ln 1 Coll Figura 382 Tela do Bloco de Notas com um arquivo de tipos de domin s para o problema de Post da Figura 379 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 200 Vamos come ar pela leitura de um conjunto de tipos de domin s A Figura 382 ilustra o formato que escolhemos para arquivos com tipos de domin s que descrevem um problema de Post function nTypes Up Down ReadPostProblem PostFile uigetfile txt pwd Problema de Post da mopen PostFile r Lines mgetl da Up tokens Lines 1 Down tokens Lines 2 nTypes nc size Up endfunction Figura 383 A fun o ReadPostProblem A fun o ReadPostProblem Figura 383 faz uso da fun o tokens fornecida pelo Scilab que recebe um string como par metro de entrada e produz um vetor coluna onde os elementos do vetor s o strings que no string de entrada est o separados por brancos ou tabula es function WritePostProblem Up Down printf inProblema de Post An nl nc size Up for i 1 nl printf 35s Up 1 end printf in for i 1 nl p
202. nados por um filtro no caso o filtro txt que seleciona somente arquivos com termina o txt e o a janela de escolha do arquivo tem o t tulo Escolha um arquivo o e exibe inicialmente o diret rio corrente do Scilab o que pode evitar um aborrecido trabalho de navega o na estrutura de diret rios A fun o pwd retorna o diret rio corrente do Scilab Para entender a necessidade de abertura e de fechamento de arquivos preciso saber que um arquivo fora de uso est totalmente armazenado em uma mem ria n o vol til como um disco ou um pen drive Quando em uso um arquivo tem parte de sua informa o em disco digamos e parte na mem ria principal A abertura de um arquivo traz para a mem ria principal informa es necess rias para o seu uso que s o atualizadas a cada opera o de escrita ou leitura no arquivo e que por diversas raz es nem sempre s o imediatamente gravadas na mem ria n o vol til O fechamento de um arquivo grava na mem ria n o vol til todas as informa es presentes na mem ria principal da Figura 217 Uso do comando mopen N s vemos na Figura 217 um exemplo de uso do comando mopen que recebe como par metros o um string com o nome completo do arquivo muitas vezes obtido com o comando uigetfile e o ostring r ou o string w que indicam se o arquivo ser utilizado para leitura r de read ou para escrita w de write se bem sucedido retorna um descritor de arquivo
203. nd sA A endfunction Figura 323 Primeiro refinamento da fun o OrdenaPorSele o Prosseguindo no refinamento vamos atacar inicialmente o problema da troca de valores entre duas posi es do vetor A Trocar os valores de duas vari veis x e y n o uma opera o bvia Se fizermos x y y x o valor antigo de x que quer amos armazenar em y perdido Se fizermos y t x y teremos o problema inverso A solu o o uso de uma vari vel tempor ria adjetivo empregado para vari veis cuja utilidade tem um car ter destacadamente local e auxiliar temp e fazer temp x x y y temp o que nos d a solu o desejada Muito simples depois que sabemos Para a etapa de sele o do menor elemento n s j desenvolvemos uma fun o parecida a Minimo Figura 289 p gina 148 que retorna tem como par metro de sa da o menor valor presente em um vetor Podemos aproveitar o seu c digo adaptando o aos requisitos que temos agora Precisamos de uma outra fun o que vamos chamar de MinimoPos que e procure o menor valor n o em todo o vetor de entrada mas em parte dele e e informe al m do menor valor a posi o onde foi encontrado Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 171 function m im MinimoPos A low high Encontra o menor valor presente no vetor A entre as posi es low e high e informa sua posi o no vetor m A low im low for
204. nicas muito sofisticadas de c lculo num rico getf expTaylor sci tol input ntol x input inx while x 999 expCalc expTaylor x tol printf Ain X exp x expTaylor x Erro printf in 12g 15 8e 15 8e 15 8ein x exp x expCalc exp x expCalc input inx Figura 360 O programa expTaylor teste sce Para o desenvolvimento da fun o expTaylor n s devemos reparar que poss vel obter t o i simo termo da s rie a partir do termo anterior pois x Kd gp x i l i 1 li i Com isso n s chegamos forma final da fun o expTaylor mostrada na Figura 361 ti ti 1 function y expTaylor x tol Calcula a soma dos termos da s rie de Taylor at o primeiro termo com valor absoluto menor que a toler ncia tol Termo 1 y 1 i 1 while abs Termo gt tol Termo Termo x i y y Termo 1 1 end endfunction Figura 361 A fun o expTaylor Vamos primeiramente testar a fun o para alguns valores positivos de x Podemos ver na Figura 362 que os resultados s o muito bons com diferen as 16 ordens de grandeza menores que os valores calculados pelas duas fun es Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 190 1 2 71828183e 000 2 71828183e 000 4 44089210e 016 10 2 20264658e 4004 2 20264658e 004 7 27595761e 012 30 1 06864746e 013 1 06864746e 013 3 90625000e 003 Figura 362 Res
205. niza o de Computadores 66 2 4 1 Ciclo de Instru o Tendo um programa carregado na mem ria um computador executa repetidamente incansavelmente um ciclo de instru o seguida por executa cru gt repetidamente seguida por Figura 119 Ciclo de execu o de instru es Em cada ciclo uma instru o lida da mem ria e executada A execu o da instru o e provoca altera es nos conte dos da mem ria e ou dos registradores e e determina o endere o da pr xima instru o a ser executada A coordena o do ciclo de instru o exige novos registradores na CPU Na Pipoca estes s o e PC de Program Counter que cont m o endere o da pr xima instru o a ser executada e IR de Instruction Register que cont m a instru o em execu o e Sinc Entrada e Sinc Sa da necess rios para sincronizar opera es de entrada e sa da que veremos mais tarde Figura 120 A coordena o da execu o de instru es na Pipoca exige registradores extras PC Program Counter IR Instruction Register Sinc Sa da e Sinc Entrada Um ciclo de instru o se inicia pela leitura da instru o ou instruction fetch a ser executada A instru o lida da mem ria no endere o dado pelo conte do do registrador PC e colocada no registrador IR Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 67 l uma usa o endere o colo
206. ntercala o no pen ltimo n vel que geram vetores ordenados de tamanho n 2 a partir de vetores de tamanho n 4 s o feitas no n 2 opera es como temos duas intercala es neste n vel teremos tamb m no m ximo n compara es e o mesmo vale para todos os n veis anteriores como temos log n n veis o n mero m ximo de compara es realizadas pelo algoritmo de ordena o por intercala o igual a nlog gt n e o algoritmo portanto O nlogan Para se ter uma id ia da diferen a de desempenho entre os algoritmos de sele o e troca e de intercala o quando n 10 n 100 enlog n 31 22 quando n 1000 n 1 000 000 e nlog n 9965 e por a vai Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 177 MiergeSort Tempo s 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 Tamanho Figura 335 Gr fico de desempenho para a fun o MergeSort A Figura 335 mostra o resultado de testes de desempenho realizados com a fun o MergeSort interessante comparar este gr fico com o da Figura 328 Em 20 segundos a fun o SelectSort executada em um computador com desempenho superior foi capaz de ordenar um vetor de 4000 elementos com este mesmo tempo a fun o MergeSort executada em um computador com desempenho inferior conseguiu ordenar um vetor com mais de 35000 elementos 4 3 3 Parti o QuickSort Outro m todo para se ordenar um vetor utili
207. ntre o valor do n mero primo e o tempo consumido pela fun o MenorFator 100 g0 S0 T 0 50 a O S000dj 1000000 1500000 2000 2500000 Figura 309 Tempo para fatora o em fun o do valor de n meros primos em dois computadores Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 162 A Ci ncia da Computa o se preocupa exatamente em determinar a complexidade de um algoritmo por uma an lise do algoritmo em si experimentos somente ajudam a formar uma intui o Um exame da fun o MenorF ator Figura 300 nos teria permitido prever seu comportamento Quando o n mero testado primo a fun o modulo aplicada a todos os inteiros menores ou iguais a ele Como a se encontra todo o esfor o computacional poder amos j ter previsto um crescimento linear do tempo de execu o em fun o do valor do n mero primo examinado A constante de linearidade em si depende do computador onde a fun o MenorFator executada Para o notebook o tempo gasto com um n mero primo p aproximadamente igual an X 4 49 x 107 segundos para o desktop p x 2 31 x 107 segundos ou seja O desktop aproximadamente duas vezes mais r pido do que o notebook n o tome isso como uma afirmativa gen rica estamos falando do desktop e do notebook empregados nos experimentos Para poder comparar algoritmos procura se determinar a complexidade temporal de um algoritmo de forma independ
208. o Organiza o e Programa o de Computadores IOPC 2010 2 3 Notas Finais e Pr ximos Passos 204 5 Notas Finais e Pr ximos Passos Chegamos ao fim de nosso curso onde vimos alguns dos conceitos que constituem os pilares da ci ncia da computa o E hora de rever brevemente estas id ias para obter uma vis o de conjunto e tamb m hora para apontar algumas dire es para os pr ximos passos Computadores trabalham com informa o que pode ser digital simb lica ou anal gica Um computador trabalha essencialmente com informa o simb lica usando apenas dois s mbolos comumente notados 0 e 1 equipamentos de entrada e sa da utilizam transforma es an logo digital ou digital anal gica quando conveniente Um bit a unidade de mem ria capaz de armazenar um destes s mbolos Com n bits pode se representar 2 coisas distintas Um c digo uma conven o para a interpreta o de conjuntos de bits C digos importantes incluem o ASCII para a representa o de caracteres bin rios sem sinal bin rios em complemento de 2 para incluir tamb m n meros negativos e ponto flutuante As opera es booleanas NOT AND e OR realizam as transforma es simples de bits mas tudo o que um computador faz atrav s da composi o destas opera es Transistores podem ser utilizados para implantar circuitos chamados portas l gicas que realizam as opera es booleanas Transistores s o implantados de forma extrema
209. o 41 Express es booleanas 28 express es l gicas 112 eye 132 fatora o de n meros inteiros 159 fechamento de um arquivo 121 fetch 86 flip flop tipo D 54 Flip flops 54 Fortran 95 fprintfMat 136 fscan fMat 136 fun o recursiva 149 Fun es 139 function 141 George Boole 27 getf 142 IOPC 2010 2 3 ndice Remissivo GetOperand 87 IBM PC 1 IEEE 754 26 if 105 Indenta o 118 Informa o 4 Informa o anal gica 4 informa o digital 4 input 104 INPUT 76 instru es 68 instru es de desvio 67 instru es de m quina 65 Instruction Register 66 int 132 Integra o por Trap zios 180 Internet 3 interpretador 96 IR 66 isolante perfeito 29 janela de an lise combinat ria 43 Java 96 jsr 79 jump to subroutine 79 kiss principle 168 l mpada de 7 segmentos 46 largura de bits 56 leg 138 legibilidade 117 limites fisiol gicos 12 linspace 131 LISP 96 loaders 70 Logisim 31 mantissa 26 MAR 59 Mark 2 Matlab 96 matriz identidade 132 matriz inversa 129 matriz transposta 129 Matrizes 124 Matrizes de Strings 135 mclose 120 meia soma 39 Mem rias 15 Mem rias secund rias 15 Mem rias terci rias 16 Memory Addres Register See MAR meof 120 merge 173 209 mfprintf 120 mfscanf 120 mget1 136 micro Instruction Register 78 micro Program Counter 78 micro assembler 86 microinstru es de desvio 79 micr
210. o S rgio da Mota Pires da UFRN Links para esses materiais podem ser encontrados no site Scilab Consortium Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 vi Agradecimentos A nova metodologia para Programa o de Computadores uma aula expositiva e uma aula pr tica por semana e a nova linguagem Scilab nos foram sugeridas pelos Professores Regina Helena Bastos Cabral e Ivan Moura Campos Os dois me fizeram conhecer o Matlab me convenceram da necessidade de pr ticas mais intensivas e tamb m da viabilidade de provas online A Professora Regina j aplicava estas t cnicas com enorme sucesso em C lculo Num rico Os monitores que trabalharam na disciplina em sua primeira oferta em 2007 foram Maxstaley Neves e Henrique Chevreux Sem eles eu n o teria conseguido enfrentar a mir ade de detalhes t cnicos do Logisim Moodle e Scilab todos ent o sistemas novos para mim Mas muito mais do que isso eles forjaram para a monitoria uma postura ntegra competente e criativa postura que souberam transmitir aos outros monitores Harlley Augusto de Lima Phillippe Samer Lallo Dias Rafael Bonutti Douglas Max Duarte Batista Luis Cl udio Dutra Martins Rafael Vieira Carvalho e Thiago Moreira Torres A aplica o da metodologia faz uso intenso da infra estrutura de tecnologia da informa o da UFMG competentemente administrada pelo Centro de Computa o pelo Laborat rio de Computa o Cient fi
211. o 7 da mem ria contenha o valor 23 e que a posi o 23 da mem ria contenha o valor 41 uma instru o ADD com o valor 7 codificado em seu campo de operando ter como efeito e Seo endere amento for imediato somar 7 ao conte do do acumulador e Seo endere amento for direto somar o conte do da posi o 7 da mem ria ao registrador no caso somar 23 ao acumulador e Seo endere amento for indireto somar o conte do da posi o dada pelo conte do da posi o 7 ao acumulador no caso somar 41 ao acumulador 2 4 3 Programa o em Assembler Um programa execut vel um mapa da mem ria contendo instru es e dados codificados em bin rio Entretanto nenhum ser humano com sa de mental consegue fazer um programa diretamente em bin rio O processo de programa o em Assembler consiste em e preencher uma tabela com os mnem nicos das instru es dando nomes a posi es de mem ria e usando esses nomes como operandos sendo assim mais compreens vel para humanos e e depois substituir esses mem nicos e nomes de posi es de mem ria pelos c digos bin rios correspondentes um processo a que damos o nome de montagem O programa em bin rio deve ser gravado em alguma m dia hoje em dia um arquivo antigamente fitas de papel ou cart es perfurados e no momento da execu o ser carregado na mem ria do computador Na Pipoca simulada no Logisim isso equivale carga de uma imagem na mem ria principal o
212. o a recurs o termina pois a parte j est trivialmente ordenada A Figura 330 mostra um exemplo de ordena o por intercala o de um vetor com 16 posi es Na parte superior da figura as pequenas setas indicam divis es de uma parte do vetor na parte inferior em vermelho as pequenas setas indicam opera es de intercala o de partes j ordenadas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 174 16 12 72 26 54 98 73 0 59 30 25 62 11 61 67 33 2 8 12 72 26 54 98 73 0 59 30 25 62 11 61 67 33 2 12 72 26 54 98 3 059 30 25 62 11 12 26 54 1 0 59 73 98 11 25 30 62 8 0 12 26 54 59 72 73 98 2 11 25 30 33 61 62 67 16 0 2 11 12 25 26 30 33 54 59 61 62 67 72 7 3 98 Figura 330 Exemplo de ordena o por intercala o com n 16 2 Os pequenos n meros no lado esquerdo da figura indicam o tamanho de cada parte Como 16 uma pot ncia de dois a estrutura de divis es e intercala es muito regular A Figura 331 mostra um exemplo com um vetor de tamanho 10 quando nem sempre as duas partes resultantes de uma divis o ou a serem intercaladas t m o mesmo tamanho 10 60 85 6 82 92 56 57 81 5 55 5 60 85 6 82 92 56 57 81 5 55 W N ta 5 6 60 82 85 92 5 55 56 57 81 10 5 6 55 56 57 60 81 82 85 92 Figura 331 Exemplo de ordena o por intercala o com n 10 O c digo da fun o MergeSort est mostrado na Figura 332 Voc deve reparar que o
213. o para as instru es de desvio est mostrado na Figura 154 Repare que o micro c digo das instru es de desvio condicional se inicia pelas micro instru es de desvio condicional correspondentes Se a condi o de desvio n o estiver satisfeita nada acontece e a micro instru o jmp Fetch executada para a leitura da pr xima instru o Comments Se Lu JE o lt E O O 20 32 INPUT jsr GetOperand Resolve endere amento operando efetivo no DR 21 33 InLoop jmplnEmpty InLoop Espera InEmpty 0 22 34 Sa da do DR vai para Dbus 23 35 MAR copia o Dbus sa da do MAR vai para o Abus 24 36 In copia a entrada sa da do In vai para Dbus 25 37 0 1 Zera o FF InEmpty RAM copia o Dbus 26 38 jmp Fetch Fetch da pr xima instru o 36 54 OUTPUT jsr GetOperand Resolve endere amento operando efetivo no DR 37 55 OutLoop jmpOutFull OutLoop Espera OutFull O 38 56 Non Sa da do DR vai para Dbus 39 57 o a 1 Zera o FF OutFull Out copia Dbus 3A 58 jmp Fetch 1 Fetch da pr xima instru o Figura 155 Micro c digo para as instru es INPUT e OUTPUT Na Figura 155 n s vemos o micro c digo para as instru es INPUT e OUTPUT que logo ap s a obten o do operando executam um loop de espera composto por uma nica micro instru o que executada repetidamente atrav s de um desvio condicional para ela mesma at que a condi o de sincroniza o de entrada ou de sa da esteja satisfeit
214. oderiam ser v rgulas separam elementos e separam linhas 3 2 1 Atribuindo valores a uma matriz poss vel extrair o valor de um elemento espec fico da matriz designado por seus ndices entre par nteses como mostrado na Figura 223 e tamb m podemos atribuir um valor a um elemento espec fico de uma matriz como mostrado na Figura 224 DA 12 3 4 5 6 A io as l be A 2 3 e 6 Figura 223 Obtendo o valor de um elemento de uma matriz Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 125 A 2 3 por exemplo refere se ao elemento na segunda linha e na terceira coluna A 1 2 o elemento na primeira linha e na segunda coluna gt A 1 2 33 6 U1 W JW Figura 224 Atribuindo um valor a um elemento de uma matriz O Scilab t o orientado para matrizes que todas as vari veis Scilab s o matrizes As vari veis simples com que temos trabalhado s o na verdade matrizes com uma nica linha e uma nica coluna poss vel perceber isso usando o comando nl nc size A para obter as dimens es de uma matriz A Essa fun o retorna dois par metros o n mero de linhas e o n mero de colunas da matriz A Figura 225 mostra dois exemplos de uso da fun o size gt A 1 2 3 4 5 6 gt nl nc size A ER gt k 0 gt L C size k C L Figura 2
215. odu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 107 e lt frase gt a senten a que se quer imprimir na tela e que pode estar entremeada por c digos de formato como g g um c digo de formato geral para express es com valores num ricos n s veremos em seguida express es com outros tipos de valores existem v rios outros c digos de formato como d f ou s que iremos explorar em exerc cios e em outros exemplos neste texto e lt lista de express es gt uma lista de express es separadas por v rgulas que s o calculadas no momento da execu o do comando e as express es na lista s o mapeadas uma a uma nos c digos de formato na mesma sequ ncia em que aparecem na lt frase gt e a senten a impressa obtida pela substitui o do valor da express o na posi o marcada pelo c digo de formato No comando printf As ra zes s o g e g rl r2 as duas express es na lista s o muito simples formadas por uma vari vel A express o r1 mapeada no primeiro g e a express o r2 mapeada no segundo g A Figura 182 mostra uma sa da do programa Eq2g3 sce onde se pode ver o efeito da execu o deste comando Digite o valor de a 3 Digite o valor de b 4 Digite o valor de c l delta 4 ri 0 3333333 r2 1 As ra zes s o 0 333333 e 1 Figura 182 Uma sa da do programa Eq2g3 sce Obs No Scilab 5 1 1 existe um bug que n o permite o uso de
216. ograma Tabela de Senos 1 sce O programa da Figura 188 parece atender especifica o mas quando executado pelo Scilab produz uma sa da de dif cil compreens o como mostrado na Figura 189 O 00 2 0 1986690 4 0 3894180 6 0 5646420 8 0 7173561 0 841471 Figura 189 Primeiros caracteres da sa da do programa Tabela de Senos 1 sce Um primeiro problema a corrigir a separa o em linhas o que pode ser obtido usando o s mbolo An na frase do comando printf Com isso n s chegamos ao programa Tabela de Senos 2 sce mostrado na Figura 190 Tabela da fun o Seno for x 0 0 2 2 pi printf in g g x sin x end Figura 190 O programa Tabela de Senos 2 sce A sa da do Tabela de Senos 2 sce cujas primeiras linhas est o mostradas na Figura 191 melhorou mas ainda n o est satisfat ria 0 198669 0 389418 0 564642 0 717356 841471 0 932039 91 Sa da do programa Tabela de Senos 2 sce pnjHHOOO OO Figura Os problemas de alinhamento s o causados pelo uso do c digo de formato g que n o especifica o n mero de colunas que igual ao n mero de caracteres com a fonte tipogr fica n o proporcional usada pelo Scilab onde todas as letras ocupam o mesmo espa o Com uma fonte proporcional como esta que voc est lendo um i ocupa um espa o menor do que um m o que bem vis vel quando comparamos iiii com mmmm que um n mero ir ocupar e que tentando agradar n o imprime casas decimais
217. oinstru es de sinal 78 Micro Programa 86 microprograma o 78 miIR 78 mnem nicos 70 modo de endere amento 68 montador 73 montagem 65 mopen 120 mPC 78 Multiplexadores 51 NAN 26 NAND 28 nomes de vari veis 98 NOR 28 NOT 27 ones 131 operadores relacionais 106 operando 68 OR 27 ordena o 168 ordena o por Intercala o 173 Ordena o por Sele o e Troca 168 oscilador 63 Ou Exclusivo See XOR OUTPUT 76 overflow 41 palavras 58 par metro da fun o 140 Par metros formais 141 par metros reais 141 partes de uma matriz 126 Pascal 96 PC 66 Pesquisa Bin ria 166 Pesquisa Sequencial 165 PHP 96 pilha 150 Pipoca 64 Planilha Pipoca xIs 89 plot2d 133 pol gono 153 Ponto Flutuante 25 printf 105 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 ndice Remissivo problema de transforma o de informa o 157 processador 7 produto elemento a elemento 128 produto matricial 128 Program Counter 66 programa 64 Programa em Execu o 70 programa execut vel 70 Programa Execut vel 70 Programa Fonte 70 programa principal 140 Prolog 96 prova formal 157 pwd 121 Python 96 RAM 15 rand 132 rect 153 registrador 55 registrador circular 63 Registradores 15 retorno da fun o 140 return 79 Return Address 78 RGB 24 RoadRunner 1 ROM 58 sci 142 Scilab 96 SciPad
218. oinstru o corrente for jmpNext q endere o na Branch Table da posi o que cont m 18 informa Ana de nte endere o da primeira das microinstru es que implementam a instru o na Carga do se a microinstru o Registrador for jmpNext com o valor mPC da saida de Figura 148 Efeito da micro instru o jmpnext o o conte do do registrador Return Address se a microinstru o corrente for return o o conte do do campo operando da microinstru o se esta for jmp ou jsr ou se a microinstru o for jmp lt condi o gt e lt condi o gt for igual a 1 Branch Table ADD COMPARE HALT INPUT JMP JMPEQ JMPGT JMPLT LOAD OUTPUT STORE SUB Micro programa Micro instru es para ADD Micro instru es para COMPARE Micro instru es para HALT Figura 149 A Branch Table e o micro programa A Figura 149 mostra o relacionamento entre a Branch Table e o micro programa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 86 2 4 9 O Micro Programa Montagem de Microinstru es gravado na Montagem da Branch Table Branch Table era gravada ra Figura 150 Constru o do micro programa e da Branch Table Micro programas tamb m s o feitos por humanos os projetistas do computador O processo de micro programa o consiste no preenchimento de uma tabela u
219. ol2 Col3 fporintiMat arga onmi abDecalho Figura 257 Grava o de uma matriz em um arquivo com fprintfMat Na Figura 257 n s vemos um exemplo de uso do comando fprintfMat O resultado deste programa um arquivo como o mostrado na Figura 258 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 137 Exemplo fprintfMat n File Edit Format View Help Meus Dados Coll Col Col3 1 00 2 00 3 00 4 00 5 00 6 00 7 00 8 00 9 00 Se agora executarmos o programa da Figura 259 escolhendo como entrada o arquivo da Figura 258 iremos obter uma matriz m id ntica matriz a gravada anteriormente arquivo uigetfile m fscanfMat arquivo Figura 259 Leitura de uma matriz com o comand fscanfMat Vamos agora ver um exemplo de aplica o de matrizes e arquivos A Figura 260 mostra o arquivo TempoBHZ txt exibido com o Bloco de Notas Cada linha do arquivo cont m o n mero de um m s a temperatura m dia m xima do m s a temperatura m nima m dia a m xima record a m nima record e a precipita o do m s em mil metros de chuva ETA File Edit Format View H Mes Maxima Media minima Media Maxima Record Minima Precipitacao 8 4 296 5 188 4 163 5 61 2 27 8 14 1 15 7 13 7 40 5 123 1 227 0 B 5 8 n 6 o 3 4 3 3 4 4 1 4 4 J 8 2 4 7 5 9 2 4 4 Figura 260 O arquivo TempoBHZ txt N s queremos fazer um programa que e L
220. om o usu rio Como vemos na Figura 176 este comando recebe como par metro uma frase a ser exibida para o usu rio que normalmente usada para descrever o valor a ser digitado Digite o valor de a 1 o valor de b 2 o valor de c 3 1 4142136i 1 4142136i Figura 177 Execu o do programa Eq2g2 sce A Figura 177 mostra a console do Scilab em uma execu o do programa Eq2g2 sce onde voc pode verificar o efeito da execu o dos comandos input Os valores digitados pelo usu rio Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 105 para os coeficientes a b e c foram respectivamente 1 2 e 3 Estes valores levam a um negativo e o exemplo serve tamb m para ilustrar a naturalidade com que o Scilab trata n meros complexos Para enriquecer nosso repert rio de comandos Scilab vamos agora construir um terceiro programa que resolve equa es do 2 grau mas com as seguintes altera es na especifica o e o programa s dever calcular as ra zes quando elas forem reais e asa da do programa dever ser uma frase como As raizes s o xxxx e xxxx quando as ra zes forem reais e sen o As ra zes s o complexas C lculo das ra zes de uma equa o de 20 grau a input Digite o valor de a b input Digite o valor de b c input Digite o valor de c delta b 2 4Y a c if delta gt 0 then rl b sgrt delta
221. onstru o de programas consideremos o seguinte problema Temos um arquivo ondas txt fonte StatLib 1989 Jque cont m dados obtidos em um laborat rio de observa o de ondas marinhas Figura 31 File Edit Format View Help O7 0 66 0 bd D 0 0 0 D 5 5 D 5 0 0 5 0 52 5 5 D 5 0 0 F E AU h TSE Figura 31 O arquivo ondas1 txt visto com o Bloco de Notas Cada linha do arquivo cont m uma medida do n vel do mar a aparelhagem do laborat rio permite fazer 30 medidas por segundo O arquivo completo tem 4096 linhas N s queremos um programa para obter um gr fico com os pontos do arquivo e tamb m saber os valores m ximo e m nimo presentes na amostra Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 20 Fun es utilizadas Programa da Onda getf Minimo sci getf Maximo sci Leitura do arquivo Gera o do gr fico Onda fscanfMat arg plot2d Onda E printf Min 5 2f Max 3 5 2 f arq xgetfile Minimo Onda Maximo Onda Figura 32 O programa Scilab Onda sci Cada linha um comando a n o ser que termine em Linhas que se iniciam com s o coment rios que se destinam a leitores humanos A Figura 32 mostra um programa Scilab que faz is
222. or favor Jose Jose quantos pontos voc conseguiu 47 Jose com 47 pontos voc n o passou Figura 206 Duas execu es do programa PassouNaoPassou sce Dois exemplos de execu es deste programa est o na Figura 206 Neste programa importante observar e Afrase utilizada no comando input para a vari vel Pontos o resultado de uma opera o de concatena o e Os comandos printf utilizam o c digo de convers o s apropriado para strings Estes dois truques s o exemplos de manipula o de strings que podem tornar mais simp tica a intera o de um programa com seu usu rio Um programa como o Eg2g3 sce Figura 178 que resolve uma nica equa o de 2 grau a cada execu o se torna mais til se passar a resolver tantas equa es quantas o usu rio queira Uma estrutura simples para esta repeti o controlada pelo usu rio pode ser obtida usando uma vari vel l gica para controlar um loop while conforme o modelo mostrado na Figura 207 continua t while continua Processamento de um item printf Item processado Decis o de continua o pelo usu rio decisao input Continua s n string continua decisao s end printf Obrigado por usar nosso programa Figura 207 Estrutura para repeti o controlada pelo usu rio A cada passagem do loop o usu rio interrogado sobre o seu desejo de continuar o que ele pode expressar entrando com o caractere s de sim Se ele
223. ores IOPC 2010 2 3 Algoritmos 163 complexidade exponencial A id ia aqui ter informa o til sobre o desempenho de um algoritmo que n o dependa da velocidade de computadores espec ficos A constante de multiplica o serve para isso ela absorve pequenas perturba es na execu o e pode incorporar diferen as de desempenho dos computadores Vamos agora considerar a fun o MenorFator2 mostrada na Figura 311 que implementa um algoritmo melhor para a fatora o de um n mero Este novo algoritmo se baseia na observa o de que se d um divisor de um inteiro positivo p porque existe d tal que dxd p Sed d d Jp e p um quadrado perfeito sen o ou bem d lt Jp ou bem d lt Jp Isto significa que s precisamos testar a divisibilidade para os inteiros menores ou iguais raiz quadrada de p se neste intervalo n o encontrarmos nenhum divisor j poderemos concluir que p primo function p MenorFator2 n limite int sqrt n Pp 2 while modulo n p lt gt O amp p lt limite p p t 1 end if modulo n p lt gt 0 then Pp n end endfunction Figura 311 A fun o MenorFator2 Uma an lise direta da fun o MenorFator2 mostra que s o realizadas chamadas da fun o m dulo em n mero igual raiz quadrada do valor do n mero primo sendo fatorado Portanto sua complexidade T n 0 N2 0 27 2 Experimentamos a fun o MenorFator2 para verificar fatorar 2750159 o maior pri
224. ors LG 5 6 11 2 GF s 10 GB 285 6 GFis 4 MB Figura 4 M dulos sub m dulos sub sub m dulos do Blue Gene A Figura 4 nos permite entender melhor a estrutura do Blue Gene Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 3 e O sistema completo tem 64 racks pequenas torres que ficam abrigadas nos grandes blocos do computador e Cada rack tem 32 n s computacionais e Um n computacional abriga 16 placas computacionais e em alguns casos at 2 placas de entrada e sa da de dados e Cada placa computacional tem duas pastilhas de circuitos integrados e Cada circuito integrado abriga dois processadores que s o os circuitos que efetivamente realizam c lculos computacionais Na Figura 4 as sucessivas decomposi es param por aqui mas na verdade o chip palavra em ingl s para pastilha de circuito integrado ainda uma estrutura bastante complexa EUR a mo b Roi ais Figura 5 Chip do processador Intel Core 2 Extreme QX9770 imagem retirada de HotHardware com Olhando para a foto Figura 5 de um chip do processador Intel Core 2 Extreme QX9770 n s podemos perceber visualmente diversos sub m dulos mesmo sem ter qualquer id ia de suas fun es Se pud ssemos olhar ainda mais de perto ver amos que este chip cont m 820 milh es de transistores espremidos em uma rea de apenas 240 mil metros quadrados Fazendo agora um zoom na dire o cont
225. os extremamente eficientes e C suced nea de Ce que orientada a objetos e Basic criada em 1964 e que recebeu grandes investimentos da Microsoft e Pascal de 1970 muito usada como primeira linguagem em cursos de programa o e Python de 1991 que usada na plataforma de programa o Google e Java de 1995 que certamente a linguagem que hoje em dia recebe maiores investimentos da ind stria de software e e PHP de 1995 que tem muitos adeptos na comunidade de software livre o Moodle escrito em PHP Existem ainda linguagens que seguem outros paradigmas de programa o como linguagens funcionais das quais LISP provavelmente a mais importante e linguagens l gicas como Prolog Nos fins dos anos 70 Cleve Moler inventou uma linguagem Matlab voltada para o tratamento de matrizes que em 1984 foi lan ada comercialmente pela empresa MathWorks Matlab vem de Matrix Laboratory e um fen meno entre engenheiros e cientistas O Matlab um interpretador isto um programa que executa programas por contraste com um compilador que traduz um programa em linguagem de alto n vel para linguagem de m quina Scilab a linguagem que adotamos neste curso desenvolvida desde 1990 por pesquisadores do Institut Nacional de Recherche en Informatique et Automatique o INRIA e da cole Nationale des Ponts et Chauss es duas institui es francesas muito semelhante ao Matlab Introdu o Organiza o e Prog
226. os pensar que estamos diante de um problema como o do caixeiro viajante mas mesmo isso otimismo A correspond ncia de Post pertence a uma classe de problemas chamados indecid veis Enquanto em problemas np completos o espa o de busca cresce explosivamente com o tamanho da entrada em problemas indecid veis o espa o de busca simplesmente ilimitado Traduzindo para o problema de Post o fato de n o existir nenhuma sequ ncia de tamanho n que resolva um dado problema n o quer dizer que n o existam solu es de tamanho maior que n A indecidibilidade se refere ao caso geral e n o a inst ncias particulares Para algumas inst ncias como nos casos da Figura 380 e da Figura 390 pode ser poss vel encontrar uma solu o Para outras pode ser poss vel demonstrar que n o existe nenhuma solu o como seria o caso de um problema onde em todos os domin s o string da parte superior fosse mais longo que o da parte inferior Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 203 10 0 001 0 001 1 Figura 391 Um problema de Post sem solu o conhecida Resultados te ricos provam que n o existe nenhum algoritmo que para qualquer inst ncia de um problema de Post consiga decidir se existe ou n o uma solu o A Figura 391 mostra um problema de Post para o qual n o foi poss vel at hoje nem encontrar uma solu o e nem tampouco provar que ele n o admite nenhuma solu o Introdu
227. ostra um circuito de soma completa Repare que a sa da vai um dada pela express o simplificada V bv av ab onde V designa a sa da Vai um e que equivalente express o V a bv ab v abv abv encontrada pelo m todo de cobertura de 1s Para verificar essa equival ncia voc pode construir uma tabela da verdade para as duas express es A simplifica o de express es l gicas um assunto de extrema import ncia mas que foge do escopo deste texto 2 2 5 S ntese de Circuitos Combinat rios poss vel utilizar o Logisim para construir automaticamente um circuito combinat rio a partir de sua tabela da verdade Vamos fazer isto para um circuito que tem as vari veis a2 a1 e a0 como entradas e b2 b1 e bO como sa das Aqui tamb m vamos usar opera es l gicas para implementar opera es aritm ticas no caso somar 1 a um dado valor bin rio Mais precisamente o valor expresso por b2b1b0 interpretado como bin rio sem sinal deve ser igual ao valor expresso por a2a1a0 1 tamb m interpretado como bin rio sem sinal Por exemplo para os valores de entrada a2 1 a1 0 e a0 0 ou seja o valor expresso pela entrada 1002 410 devemos ter b2 1 b1 0 e bO 1 com o valor expresso pela sa da dado por 1012 510 Temos que nos preocupar com o caso onde a2a1a0 111 pois 111 1 1000 com quatro bits um a mais do que dispomos Vamos adotar como conven o que quando a2a1a0 111 a sa da deve ser
228. perada n o deveria error 0100 acontecer Acende um led Desvia para a micro instru o apontada return 0101 pelo registrador Return Addr 0110 Desvia para o operando e armazena o endere o consecutivo no Return Addr Desvia para o operando se D ACC for impEQ 7 0111 j p igual a 1 Desvia para o operando se D gt ACC for igual a 1 Desvia para o operando se D lt ACC for jmpLT 1001 p E igual a 1 Desvia para o operando jmp 10 1010 E incondicionalmente jmplnEmpty 1011 Desvia para o operando se InEmpty 1 jmpOutFull 1100 Desvia para o operando se OutFull 1 13 1101 Estes c digos podem ser usados em 14 1110 gua s novas microinstru es Instru es podem ter etapas comuns em sua execu o como a obten o do operando conforme o modo de endere amento O micro c digo destas etapas reaproveitado usando a micro instru es jsr jump to subroutine que desvia para o endere o dado por seu operando e armazena o endere o atual acrescido de 1 no registrador Return Address e a micro instru o return que desvia para o endere o armazenado no registrador Return Address jmpGT O circuito da unidade de controle pode ser visto na Figura 138 onde se pode destacar e asentradas o Opcode com o c digo da instru o corrente o Mode com o modo de endere amento o In Empty Out Full com o estado dos registradores de sincroniza o de entrada e sa da Introdu o Organiza o e Programa
229. pior caso para a fun o MenorFator Na primeira chamada foram feitas 131103 execu es da fun o modulo e na segunda apenas 3 Com isso uma primeira Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 160 observa o algoritmos podem ter seu tempo de execu o dependente da inst ncia espec fica do problema que resolve Muitas vezes n s estamos interessados na an lise do pior caso de um algoritmo N s iremos em seguida relatar outros experimentos feitos com o programa Fatora sce Nestes experimentos n s vamos precisar de n meros primos e para isso o arquivo 200000primos txt que cont m os 200 000 primeiros n meros primos de grande utilidade Diversos sites na Internet como Andrews cont m arquivos com n meros primos ou programas que geram n meros primos A Figura 307 mostra as primeiras e ltimas linhas deste arquivo 200000primos Notepad File File Edit Format View Help 2749921 i 2 49991 2 50021 2750029 2750053 2750071 2 750123 2750131 2 50159 Edit Format View Help Ln 200000 Figura 307 Primeiros e ltimos n meros primos no arquivo 200000primos txt No segundo experimento fizemos o programa Fatora sce fatorar por diversas vezes se o n mero 131101 que primo Veja os resultados na Figura 308 n 131101 Tempo 2 984375s 131101 divis vel por 131101 PRIMO n 131101 Tempo 3 078125s 13
230. po de pesquisadores da IBM com alguma emo o que n s cientistas da computa o vemos o fac s mile do original datilografado naturalmente do relat rio t cnico Preliminary Report Specifications for the IBM Mathematical FORmula TRANslating System FORTRAN I Ziller 1954 que pode ser encontrado no site McJones Um compilador um programa que tem como entrada um outro programa escrito em uma linguagem de alto n vel e que produz um programa em linguagem de m quina para uma arquitetura espec fica O primeiro compilador foi escrito em assembler do IBM 704 uma m quina que tipicamente contava com 15K de mem ria Desta poca at hoje j foram desenvolvidas com maior ou menor grau de sucesso muitas linguagens milhares delas literalmente Um mapa cronol gico com as principais linguagens de programa o pode ser encontrado na refer ncia O Reilly Media Fortran uma linguagem que tendo passado por diversas atualiza es at hoje muito usada por cientistas e engenheiros e isso n o deve mudar em um futuro breve Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 96 Figura 164 Fac s mile do relat rio de especifica o da linguagem FORTRAN obtido na refer ncia McJones Outras linguagens importantes que s o sucessoras diretas de Fortran s o e Cobol usado em aplica es comerciais desde 1959 e a linguagemcC de 1971 que produz c dig
231. qualquer polin mio em n O caixeiro viajante um exemplo da classe de problemas conhecidos como np completos onde np significa tempo polinomial n o determin stico As raz es para esta denomina o est o acima da abrang ncia deste texto Outro exemplo de problema np completo o problema da mochila que consiste em descobrir qual a melhor escolha a de maior valor total de objetos com pesos e valores a serem colocados em uma mochila que tem uma capacidade m xima que n o pode ser ultrapassada Figura 378 Quais objetos devem ser colocados na mochila para se obter o maior valor total sem que o peso total ultrapasse a capacidade da mochila Um problema aberto da computa o a exist ncia ou n o de uma solu o com complexidade polinomial para os problemas np completos At hoje ningu m conseguiu provar que n o existe nenhuma solu o com tempo polinomial e por outro lado ningu m conseguiu um algoritmo com complexidade polinomial para resolver qualquer problema np completo Portanto se voc conseguir desenvolver um algoritmo com complexidade polinomial para resolver o problema do caixeiro viajante ou o da mochila ou provar que n o existe tal solu o voc ficar famoso Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 198 4 5 2 Problemas indecid veis O Problema da Correspond ncia de Post Vamos agora estudar um problema proposto pelo matem tico Emil Post em
232. quando o n mero a ser impresso inteiro Tabela da fun o Seno Impress o do cabe alho printf in x seno x Impress o das linhas da tabela for x 0 0 2 2 3pi printf n 3 1f 7 4f x sin x end Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 111 Figura 192 O programa Tabela de Senos 3 sce A Figura 192 mostra o programa Tabela de Senos 3 sce que produz a sa da mostrada parcialmente na Figura 193 Figura 193 Primeiras linhas da sa da do programa Tabela de Senos 3 sce Nessa ltima vers o e impressa uma linha com cabe alhos para a tabela e Paraa formata o de x usado o c digo 3 1f que especifica um campo ocupando 3 colunas ao todo na impress o com 1 casa decimal e Para a formata o de sin x o c digo 7 4f especifica um campo com um total de 7 colunas com 4 casas decimais O comando for na verdade um caso particular de outro comando repetitivo o comando while cuja forma est mostrada na Figura 194 while lt condi o gt lt bloco while gt end Figura 194 O comando while Nesse comando e lt condi o gt uma express o l gica o loop s termina quando essa express o for avaliada para falso e lt bloco while gt um bloco de comandos Todo comando for pode ser substitu do por um comando while a Figura 195 mostra um exemplo dessa substitui o x 0 for x 0 0 2 2 3p
233. que j foi explorada por diversas vezes neste curso Encontrar o menor primo maior ou igual a um n mero lido nos parece complicado mas vamos dar in cio ao desenvolvimento do programa deixando isso para depois Veja uma proposta na Figura 297 n input n use n lt 2 se quiser parar while n gt 2 Encontra o menor primo gt n e imprime o resultado printf O menor primo gt d d n MenorPrimoMaiorOulgualaA n L n n input n use n lt 2 se quiser parar end Figura 297 Programa principal para Menor Primo gt n Podemos ver que o programa principal cuida da intera o com o usu rio empurrando o problema de se encontrar o menor primo para uma fun o MenorPrimoMaiorQOulIgualaA que ainda n o existe N o existe mas j demos a ela um nome significativo e especificamos que e A fun o tem um nico par metro de entrada que o n mero digitado pelo usu rio e A fun o deve retornar o n mero primo que desejamos Ou seja j definimos o cabe alho da fun o MenorPrimoMaiorOulIgualA Muito bem vamos agora encarar o seu desenvolvimento O algoritmo simples vamos testar sequencialmente os inteiros a partir do n mero lido parando ao encontrar um n mero primo Sim mas como vamos saber se um inteiro primo N o vamos nos preocupar com isso agora Outra vez vamos especificar uma fun o e adiar o problema Veja a Figura 298 function p MenorPrimoMaiorOulgualA
234. r ou bem o n mero de linhas ou bem o n mero de colunas de M iguala 1 e portanto length M nos fornece o n mero de elementos de M Com isto chegamos vers o final da fun o Soma mostrada na Figura 283 function s Soma A Calcula a soma dos elementos do vetor A s 0 for k 1 length A s s A k end endfunction Figura 283 Vers o final da fun o Soma J podemos portanto testar o nosso programa Fazendo File Exec no Scilab e selecionando o arquivo TestaSoma sce temos entretanto uma surpresa desagrad vel uma mensagem de erro como mostra a Figura 284 sa Soma a I error 4 undefined variable Soma at line 3 of exec file called by doresiScilablTestaSoma sce disp exec done Figura 284 Erro ao tentar executar o programa TestaSoma O que aconteceu que o Scilab ao executar o programa TestaSoma n o estava ciente da exist ncia da fun o Soma Nos esquecemos de usar a fun o getf arquivo com fun o no programa principal Corrigindo isso chegamos ao formato final do programa testador mostrado na Figura 285 Programa que testa a fun o Soma getf Soma sci a int 10 rand 1 4 sa Soma a printf in Soma gin sa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 147 int 10 rand 1 6 sb Soma b printf in Soma gin sb c int 1l0 rand 1 9 sc Soma c printf in Soma
235. r ria temos a Internet a rede mundial que interliga quase todos os computadores do mundo A imagem da Figura 6 propositalmente lembra uma gal xia S o milh es de computadores na Internet todos interligados Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 4 Figura 6 Uma visualiza o da Internet pelo produzida pelo Projeto Opte Lyon 2005 Em azul est o os n s da Am rica do Norte em verde os da Europa Oriente M dio sia Central e frica e em amarelo os da Am rica Latina Todo esse arranjo envolvendo Internet computadores processadores circuitos integrados incrivelmente tudo isso funciona com algumas falhas verdade mas que de forma alguma impediram a computa o de mudar a forma de vida da humanidade Funciona como Essa proeza de organiza o se deve exatamente ao uso intenso de uma id ia central para a computa o a modulariza o S o muitas e muitas pe as mas que s o desenvolvidas conforme padr es que permitem que para utilizar um m dulo preciso saber apenas o que esse m dulo faz e n o como ele constru do M dulos permitem a divis o de compet ncias Um programador profissional normalmente n o tem a menor id ia sobre a f sica de semicondutores e nem mesmo sobre como funcionam os protocolos b sicos da Internet Toda a computa o um imenso lego onde cada pe a tem encaixes bem definidos que permitem seu acoplamento para a montagem de
236. r tica somente algoritmos muito pequenos t m uma prova formal de corre o vi vel O que se faz produzir uma argumenta o informal da corre o de um algoritmo al m desta argumenta o testes Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 158 s o usados para se ganhar convic o do bom funcionamento de um algoritmo concretizado em um programa entretanto importante ter em mente que testes podem descobrir erros mas raramente podem garantir a sua aus ncia Este problema vem do fato de que mesmo algoritmos muito simples t m tantas entradas poss veis que testes s podem cobrir uma infima fra o dessas possibilidades Figura 304 Um somador de 4 bits Usando um exemplo retirado de Dijkstra 1972 vamos considerar uma transforma o b sica de informa o feita por um somador em cascata similar ao mostrado na Figura 304 mas com largura de 32 bits Se algu m quiser considerar o somador como uma caixa preta a ser testada ter amos 2 considerando as duas entradas de 32 bits cada valores para as entradas a serem testadas o que claramente inexequ vel Uma argumenta o baseada na estrutura do somador o que nos propicia a convic o de sua corre o Se estamos convencidos da corre o de um circuito de soma completa como o mostrado na Figura 68 e estamos pela forma de desenvolvimento a partir da tabela da verdade e se compreendemos a l gica do arranjo em cas
237. r A j contenham elementos em suas posi es finais e Selecionamos o elemento de menor valor entre A k eA length A e Trocamos o valor deste menor elemento com o valor em A k Com isso teremos mais um elemento em sua posi o final e podemos fazer k k 1 O algoritmo se inicia com k igual a 1 o que torna vazia a por o do vetor com elementos em suas posi es finais Na Figura 322 n s vemos uma ilustra o deste m todo e No primeiro passo o menor elemento entre 1 igual a k e 7 comprimento do vetor tem o valor 12 e se encontra na posi o 7 Os valores nas posi es 1 e 7 s o trocados e k passa a valer 2 e No segundo passo o menor elemento entre 2 iguala k e 7 tem o valor 27 e se encontra na posi o 3 Ele trocado com o elemento na posi o 2 e k passa a valer 3 Desta forma o algoritmo progride e termina quando a pen ltima posi o do vetor recebe o seu valor final o que significa que a ltima posi o tamb m estar corretamente preenchida Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 170 Figura 322 Ordena o por Sele o e Troca J temos condi es de dar um primeiro refinamento fun o SelectSort que mostramos na Figura 323 function sA SelectSort A for k 1 length A 1 Seleciona a posi o entre A k e A length A que cont m o menor valor Troca o valor de A k com o valor na posi o selecionada e
238. ra 66 Arranjo em cascata de m dulos para um somador de 4 bits A Figura 66 mostra um arranjo em cascata de circuitos de soma completa capaz de somar vari veis de 4 bits O m dulo SC mais direita faz a soma dos bits menos significativos aq e Do Sua entrada vem um recebe o valor constante O Ele produz um bit de resultado S e o vai um da coluna que conectado entrada vem um do segundo SC da direita para a esquerda Este segundo SC faz a soma de a4 b4 e de sua entrada vem um que como dissemos o vai um do primeiro SC E esse arranjo se repete aqui para os 4 bits das parcelas mas poderia se repetir por 32 ou por 64 ou por 128 vezes Em um somador de n bits o circuito de soma completa do bit mais significativo produz um vai um que indica que a soma das parcelas s pode ser representada com n 1 bits Essa situa o designada por estouro ou mais comumente pelo termo em ingl s overflow soma ab v a bv ab v abv vai um a bv ab v abv abv Figura 67 Tabela da verdade para um circuito de soma completa A Figura 67 mostra a tabela da verdade para um circuito de soma completa e as express es encontradas pelo m todo de cobertura dos 1s para as sa das soma e vai um A vari vel v designa aqui a entrada vem um Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 42 Figura 68 Circuito Soma Completa A Figura 68 m
239. rada D Com isso o bit armazenado muda tamb m de O para 1 e noinstante 6 a entrada Clock desce mas isso n o afeta o estado do flip flop e nosinstantes 7 8 e 9a entrada D oscila novamente sem afetar o estado do flip flop e noinstante 10 o sinal do Clock sobe e a sa da Q passa para 0 copiando o valor de D nesse instante E por a vai Figura 96 Um registrador de 4 bits formado por flip flops tipo D Flip flops podem ser agrupados formando registradores A Figura 96 mostra um registrador de 4 bits composto por flip flops do tipo D onde vemos que e um mesmo sinal de clock comanda os 4 flip flops e na subida deste sinal isto quando o clock passa de O para 1 as quatro entradas D s o copiadas para os flip flops e uma entrada Reset coloca O em todos os flip flops ao receber um sinal 1 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 56 O Logisim oferece uma s rie de circuitos j prontos que encontram se armazenados em bibliotecas e que podem ser utilizados como pe as para a montagem de circuitos maiores da mesma forma como j usamos portas l gicas Flip flops tipo D outros tipos de flip flop registradores e v rios outros componentes se encontram na biblioteca Memory File Edit Project Simulate Window Help bj alee gt D Figura 97 Um registrador da biblioteca Memory do Logisim com largura de 8 bits Registradores da biblioteca Memor
240. rama o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 97 e fator essencial para sua escolha gratuito O Scilab tamb m um interpretador e encontra se atualmente na vers o 5 1 lan ada em fevereiro de 2009 Do ponto de vista da ci ncia da computa o Matlab e Scilab n o mereceriam destaque em uma galeria de linguagens de programa o Entretanto a facilidade que oferecem para a constru o de pequenos programas voltados para engenharia e ci ncia n o encontra rival nas linguagens tradicionais como Fortran C ou Java Antes de entrarmos na apresenta o do ambiente e da linguagem Scilab queremos colocar algumas observa es gerais sobre linguagens de programa o que voc deve ter em mente ao iniciar seu estudo Uma linguagem de programa o como as linguagens naturais une riqueza de express o a detalhes sint ticos e algumas arbitrariedades Detalhes e arbitrariedades frequentemente v m de escolhas feitas no passado incluindo algumas que j n o fazem mais sentido mas que s o mantidas por uma in rcia natural Seu aprendizado exige uma postura paciente pois envolve no in cio uma taxa relativamente alta de memoriza o Mas como uma linguagem natural a flu ncia vem com o uso e com a flu ncia vem a percep o da riqueza da linguagem O Scilab tamb m um ambiente que interpreta comandos e programas Ele oferece uma console para intera o com o usu rio um editor para a constru o de programa
241. ramas num ricos funcionam como esperado na maior parte dos casos 4 5 Barreiras de Complexidade N s vimos que o tempo necess rio para ordenar um vetor de tamanho n cresce com n para o algoritmo de ordena o por sele o de troca e cresce com nlog5n para o algoritmo de ordena o por intercala o Existiriam algoritmos com curvas de crescimento melhores do que o MergeSort Seria poss vel descobrir um algoritmo de ordena o que seja digamos O vn A resposta a esta pergunta negativa Resultados te ricos provam que o limite inferior para a complexidade de qualquer algoritmo de ordena o O nlog n Ou seja existem resultados de complexidade associados a problemas v lidos para qualquer algoritmo No restante desta se o n s iremos expor alguns resultados muito importantes relacionados com a complexidade de problemas 4 5 1 Problemas np completos O Problema do Caixeiro Viajante Um caixeiro viajante precisa visitar n cidades percorrendo a menor dist ncia poss vel sem passar duas vezes pela mesma cidade Ele conhece a dist ncia entre duas cidades quaisquer de seu roteiro um exemplo est mostrado na Figura 366 N o existem estradas entre as cidades sem liga o no grafo Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 192 Figura 366 Dist ncias entre cidades a serem visitadas pelo caixeiro viajante Qual o melhor roteiro isto qual o roteiro com a m
242. res IOPC 2010 2 3 Organiza o de Computadores 82 l uma ROM microinstru o pel a Micro r grarma ia icroprograma AN pisa O endere o b mec armazenado no coloca a microinstru o lida no Figura 140 Leitura de uma micro instru o A execu o da micro instru o pode alterar os valores dos registradores da unidade de controle e em particular do registrador Signals que como vimos emite os sinais de controle para a CPU e do registrador mPC determinando assim a pr xima micro instru o a ser executada pode E id determina novo valor mec para pode p atualizar Signats Figura 141 Execu o de uma micro instru o O mIR tem a interpreta o de sua sa da dependente do tipo da micro instru o F informa se o tipo for Signals e informa Figura 142 Sa da do registrador mIR O ciclo de micro instru o comandado pelos sinais emitidos pelo circuito Timing Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 83 conduz p o ea Clock alimenta al produz e ciclicamente Figura 143 Sinais do ciclo de micro instru o O circuito Timing est mostrado na Figura 144 sendo similar ao circuito da Figura 112 Figura 144 O circuito Timing As observa es abaixo podem ajudar a compreender o funcionamento da unidade
243. rintf 35s Down 1 end endfunction Figura 384 A fun o WritePostProblem A fun o WritePostProblem Figura 384 imprime na tela um problema armazenado nos vetores de strings Up e Down function s strPost Strs seg S W ad for i 1 length seg s s Strs seg i end endfunction Figura 385 A fun o strPost A Figura 385 mostra a fun o strPost que constr i a concatena o dos strings em uma sequ ncia de domin s Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 201 function s Sucessor r nTypes retorna o sucessor da sequ ncia r VaiUm 1 for i length r 1 1 if VaiUm gt 0 then if r i lt nTypes then r i r i 1 VaiUm 0 else r i 1 end end end if VaiUm 1 then s 1 r else Ss r end endfunction Figura 386 A fun o Sucessor A fun o Sucessor Figura 386 gera a partir de uma sequ ncia de domin s a seq ncia seguinte no processo de contagem Essencialmente ela soma 1 ao n mero formado pelos algarismos que comp em a sequ ncia A Figura 387 mostra alguns exemplos de uso desta fun o gt Sucessor 3 L gt Sucessor 2 3 1 3 ans 2 E 2 gt Sucessor 3 3 3 3 ans 1 1 1 1 Figura 387 Exemplos de uso da fun o Sucessor Finalmente temos a fun o WritePostSolution Figura 388 que imprime na tela a solu o encontrada em um formato tabular Int
244. rodu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 202 function WritePostSolution seg Up Down printf inSolu o sin strPost Up seg for i 1 length seg printf 35d seqg i end printf in for i 1 length seg printf 3 5s Up seq i end printf n for i 1 length seg printf 5s Down seq 1 end endfunction Figura 388 A fun o WritePostSolution J podemos testar o nosso programa para ver se encontramos a solu o da Figura 380 Escolhendo como entrada o arquivo ProblemaPost txt vemos que o programa Post sce efetivamente resolve este problema produzindo a sa da mostrada na Figura 389 Problema de Post 100 0 1 1 100 00 Solu o 1001100100100 1 3 1 1 3 2 2 100 1 100 100 1 O O 1 00 1 1 00 100 100 Figura 389 Sa da do programa Post sce alimentado com o arquivo da Figura 382 Como voc j deve esperar inferir desse primeiro sucesso que o nosso algoritmo resolve qualquer problema de Post ingenuidade 1000 01 1 00 0 0 101 001 Figura 390 A menor solu o para este problema de Post uma sequ ncia de 206 domin s Usando algoritmos mais sofisticados poss vel mostrar que a menor sequ ncia que resolve o problema da Figura 390 formada por 206 domin s Baseando se em testes feitos pelo autor destas linhas o tempo estimado para o programa Post sce resolver este problema com um notebook seria de 1011 anos Poder am
245. s o transistor um isolante perfeito e as voltagens na entrada e na sa da podem diferir Vejamos inicialmente como uma porta NOT implementada com a utiliza o de um transistor Suponhamos que estamos representando o s mbolo O por uma voltagem baixa e o s mbolo 1 por uma voltagem alta Como mostrado na Figura 43 uma fonte de voltagem alta ligada entrada do transistor atrav s de uma resist ncia enquanto a sa da do transistor ligada um ponto de terra A vari vel que desejamos negar a ligada ao controle do transistor O resultado do circuito a obtido no ponto entre a resist ncia e a entrada do transistor a Figura 43 Uma porta NOT invertendo a 0 Como a 0 o transistor funciona como isolante perfeito Quando a 0 a voltagem aplicada ao controle do transistor baixa e ele funciona como isolante perfeito e obtemos a 1 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 30 RA Figura 44 Porta NOT invertendo a 1 O transistor funciona como condutor perfeito Quando a 1 o transistor funciona como condutor perfeito e obtemos a 0 pois o contato com o ponto de terra estabelecido Fonte O 2 a b O Terra Figura 45 Uma porta NOR com transistores Uma porta NOR constru da com o arranjo de transistores mostrado na Figura 45 n o dif cil ver que o ponto a b s ter o valor 1 volt
246. s como mostra o exemplo na Tabela 1 1 3 Computadores e Informa o Computadores s o essencialmente formados por processadores mem rias sensores e atuadores e O componente mais importante o processador Um processador transforma informa o exclusivamente simb lica em informa o tamb m simb lica as transforma es que um processador realiza s o ditadas por um programa que o processador executa e Mem rias servem para registrar informa es para recupera o posterior e tamb m s trabalham com informa es simb licas e Sensores como o teclado do computador o mouse c meras digitais microfones digitais entradas de rede s o tamb m chamados de dispositivos de entrada e trazem informa o para o processador e Atuadores s o impressoras monitores de v deo alto falantes projetores sa das de rede e s o tamb m chamados de dispositivos de sa da Atuadores exportam informa o que sai do processador e Sensores e atuadores frequentemente trabalham tanto com informa o digital como com informa o anal gica e fazem uso de convers es A D e D A A informa o digital nos processadores e mem rias atuais utiliza somente dois valores b sicos para os s mbolos A palavra bit designa a unidade de informa o simb lica os dois valores de um bit s o normalmente denotados por O e 1 Dois valores s Computadores fazem maravilhas exibem filmes oferecem jogos editores de texto correio eletr nico
247. s o Scipad e tamb m emite mensagens de erros relativos tanto obedi ncia de comandos e programas s regras da linguagem como a problemas que podem ocorrer na execu o como uma divis o por zero Console File Edit Preferences Control Applications ZzElXGO B AB 6 scilab 5 1 Consortium Scilab DIGITEO Copyright c 1989 2009 INRIA Copyright c 1989 2007 ENPC Startup execution loading initial environment Figura 165 cone e tela inicial com a console do Scilab A Figura 165 mostra a tela obtida ao clicar sobre o cone do Scilab uma janela simples com uma barra de menus e uma barra de ferramentas e um painel central com um prompt de comandos indicado pela setinha gt nesse prompt que s o digitados comandos a serem interpretados pelo Scilab Esta janela a console do Scilab Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 98 3 1 1 Vari veis e Comandos de Atribui o Figura 166 Vari veis e comandos de atribui o O principal comando que transforma informa o chamado comando de atribui o Na Figura 166 n s vemos tr s comandos de atribui o simples No primeiro deles a 10 a uma vari vel que passa a existir no interpretador e que recebe e armazena um valor no caso 10 Ap s executar um comando de atribui o o Scilab ecoa isto imprime o valor recebido pela vari vel
248. s 186 function r bissecao f a b tol se f cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de tol endfunction Figura 351 Cabe alho da fun o bissecao A Figura 351 mostra uma primeira vers o da fun o bissecao contendo apenas o seu cabe alho e O primeiro par metro formal de entrada f a fun o da qual se deseja encontrar a raiz e Os par metros a e b s o os limites do intervalo e devem ser tais que f a b lt 0 e O par metro tol a toler ncia isto um valor para o tamanho do intervalo de busca onde a precis o desejada considerada satisfat ria e O par metro de sa da r a raiz encontrada Para testar a fun o bissecao n s precisamos e de uma fun o cont nua e de um intervalo onde a fun o troca de sinal e ede conhecer o valor de uma raiz nesse intervalo para que seja poss vel verificar o resultado Figura 352 Gr fico de f x e sinx A fun o f x e sinx cujo gr fico est mostrado na Figura 352 satisfaz a estes requisitos pois e cont nua e tem sinais opostos nos extremos do intervalo 2 4 e portanto este intervalo cont m uma raiz e e estaraiz rr A Figura 353 mostra uma implementa o desta fun o Repare no uso do operador de multiplica o elemento a elemento ao inv s do operador de multiplica o matricial function y exp sin x y exp x
249. s aspectos relacionados complexidade Programa o Orientada a Objetos A programa o orientada a objetos ou POO oferece estruturas lingu sticas para uma defini o elegante de dados e de formas de intera o A programa o torna se mais compacta e mais segura permitindo um intenso reaproveitamento de c digo Nenhum programador mais s rio pode se permitir desconhecer a POO que foi introduzida j em 1967 com a linguagem Simula Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Notas Finais e Pr ximos Passos 207 e depois explorada com Smalltalk Estas duas linguagens ainda sobrevivem mas o uso de C e de Java hoje muito maior Bancos de Dados Bancos de dados s o sistemas de armazenamento que extendem muito o conceito de arquivos Um SGBD Sistema de Ger ncia de Banco de Dados como Oracle PostGresSQL MySQL SQL Server e outros permite a recupera o de dados por perguntas queries em ingl s SQL quer dizer Standard Query Language como me d a lista dos alunos de engenharia civil com idade entre 18 e 20 anos que j tenham cursado Programa o de Computadores ou C lculo Num rico SGBDs tratam tamb m do controle de concorr ncia controlando o acesso simult neo a uma mesma base por diversos usu rios e garantindo a preserva o de sua integridade Sistemas Reativos S o sistemas que reagem a diversos est mulos de forma a por exemplo controlar um alto forno aumentando a
250. s comandos mostrados na Figura 173 Nesta figura voc deve reparar e na apari o da vari vel ans que utilizada pelo Scilab para armazenar resultados de express es soltas que n o fazem parte de um comando de atribui o e na nota o 3 865D 12 que a forma de se escrever a constante 3 865 x 10712 Ali vemos que o valor do polin mio da equa o nas ra zes que calculamos n o exatamente zero Isso n o deve constituir preocupa o pois os valores s o relativamente muito pequenos da ordem de 10712 para r1 e 107 para r2 N meros no Scilab s o armazenados como ponto flutuante de 64 bits veja a Se o 2 1 onde as opera es podem envolver arredondamentos gt a r1 2 b tri c ans 3 865D 12 gt ba r2 2 b tr2 c ans 2 2 74D 13 Figura 173 Verificando os resultados Muito bem conseguimos usar o Scilab para resolver uma equa o de 2 grau o que n o chega a ser uma fa anha Mas tivemos ganhos com rela o execu o dos mesmos c lculos com uma calculadora de m o e ouso de vari veis evita re digita es e poss veis erros e resultados intermedi rios s o memorizados e podem ser reaproveitados e ouso de f rmulas como na Figura 172 aumenta muito a confian a nos c lculos As limita es do uso direto da console Scilab para c lculos tornam se claras quando queremos resolver outra equa o de 2 grau F rmulas t m que ser re digitadas abrindo uma ocasi o para
251. s de controle como j fizemos nos exemplos de fluxos de dados j apresentados Ou seja usar esse circuito para fazer a soma de 500 000 n meros poss vel mas n o execut vel por um ser humano s o controlados gor Sinais de Controle da CPU Figura 114 Elementos b sicos para processamento e registradores da CPU Pipoca A id ia central de um computador a automa o da emiss o de seg ncias de sinais de controle segundo o desejo de uma pessoa desejo este expresso por um programa Queremos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 65 que este circuito transforme informa o de maneira flex vel com seu comportamento moldado por um programador Trocando se o programa troca se a transforma o de informa o produzida pelo circuito Em princ pio P a sn ramo Figura 115 Um programa resolve um problema de transforma o de informa o Considerando que queremos poder trocar com facilidade o programa que rege um computador a nica op o colocar programas em uma mem ria ao inv s de implement los com circuitos O termo software com o prefixo soft macio foi um neologismo criado para se contrapor a hardware mais duro constitu do por circuitos concretos Software muito mais flex vel executado pela EFA carregado b na Figura 116 Um programa deve estar codificado em bits para ser carregado em algu
252. s nd Mo abra sto G vs beim a E e m 100 Elementary Functions Table of Contents s absolute value magnitude cos element wise cosine inverse acosd element wise cosine inverse result in degree acot computes the element wise inverse cotangeant of the argument acotd computes the element wise inverse cotangeant of the argument result in degree acoth element wise hyperbolic cotangeant inverse acsc computes the element wise inverse cosecant of the argument acscd computes the element wise inverse cosecant of the argument results in degree acsch computes the element wise inverse hyperbolic cosecant of the argument adi 2sp converts adjacency form into sparse matrix amell Jacobi s am function asecd computes the element wise inverse secant of the argument results in degree asech computes the element wise inverse hyperbolic secant of the argument asin sine inverse Figura 169 Lista de fun es elementares encontrada no help do Scilab A constru o de express es aritm ticas mais elaboradas exige o conhecimento das regras de prioridades entre operadores e o uso de par nteses para se obter o resultado desejado Como um exemplo qual valor ser atribu do a uma vari vel x pelo comando x 2 3 4 o valor 234 212 4096 ou o valor 22 4 8 4 32 A Tabela 16 mostra as prioridades empregadas pelo Scilab no c lculo de express es Ali vemos que a potencia
253. sas podem ser representadas A Tabela 2 mostra os prefixos usados para designar pot ncias decimais e bin rias de uso corrente na computa o Tabela 2 Prefixos bin rios e decimais S mbolo Valor 20 Z 1 024 gt 10 1 000 2 1 048 576 gt 10 1 000 000 2 1 073 741 824 gt 10 1 000 000 000 12 1 099 511 627776 gt 10 1 000 000 000 000 2 1 125 899 906 842 624 gt 10 1 000 000 000 000 000 2 1 152 921 504 606 846 976 gt 10 1 000 000 000 000 000 000 2 1 180 591 620 717 411 303 424 gt 10 1 000 000 000 000 000 000 000 2 1 208 925 819 614 629 174 706 176 gt 10 1 000 000 000 000 000 000 000 000 Podemos ver que o uso de apenas 2 s mbolos n o traz limita o alguma de representatividade Tudo bem mas porque s 2 s mbolos Se os computadores fossem menos mesquinhos e usassem por exemplo os algarismos decimais como unidade b sica de informa o n o ter amos um sistema que antes de qualquer coisa seria familiar e que com n algarismos poder amos representar 10 coisas diferentes A decis o de ado o de um sistema bin rio foi tomada pelos projetistas dos primeiros computadores e se justifica principalmente pela confiabilidade Computadores s o equipamentos eletr nicos onde s mbolos devem ser representados por voltagens ou correntes el tricas Se tivermos apenas dois n veis de voltagens ou de correntes a distin
254. sim para escolher valores de entrada e tamb m para sincronizar dispositivos externos apertando convenientemente os bot es SetlnFull para avisar que um valor de entrada est pronto para ser lido e SetOutEmpty para avisar que um valor colocado anteriormente no registrador Output j foi consumido Programas podem ser executados instru o por instru o o que muito til para a depura o debug de erros Para isto preciso colocar o valor 1 na entrada Debug e apertar o bot o Run a cada vez que uma nova instru o carregada no registrador de instru o Se retirarmos a Unidade de Controle da CPU Pipoca retornando emiss o manual dos sinais de controle e se retirarmos tamb m os circuitos de sincroniz o de entrada e sa da teremos um circuito como o da Figura 132 Comparando com o circuito da Figura 108 voc pode observar que e foi acrescentado um registrador de instru es o IR Instruction Register que tem a fun o de armazenar a instru o em execu o num dado instante e temos um barramento de endere os o ABus al m do barramento de dados DBus e coma entrada ligada ao barramento de dados e com a sa da ligada ao barramento de endere os n s vemos o registrador PC Program Counter que armazena o endere o da pr xima instru o a ser executada n s veremos adiante a l gica de funcionamento do PC e temos tamb m conjuntos de leds ligados a decodificadores que n o t m fun o na l gica
255. so utilizando dois m dulos as fun es Maximo e Minimo mostradas na Figura 33 A SciPad 6 157 Maximo sci File Edit Search Execute Debug Scheme Options Windows Help 4 function m Minimo A 1 function Maximo X m A l 2 m X 1 for i 2 length A q for i 2 length X if A i lt then 4 if X i gt m then D 6 7 m A i end end a endfunction 8 endfunction m X l end end 3 Line 9 Column 1 Logical line 9 Figura 33 As fun es Maximo e Minimo vistas no editor Scipad Para entender melhor essas fun es veja o algoritmo descrito na Se o 1 7 3 O programa produz o gr fico da Figura 34 e a sa da Min 0 86 Max 0 36 mostrada na console do Scilab 0 4 0 2 0 0 0 2 0 4 0 6 0 8 1 0 o 500 1000 1500 2000 2500 3000 3500 4000 4500 Figura 34 Gr fico com os pontos no arquivo ondas1 txt Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 21 1 7 3 Algoritmos e Programas Na parte Ill Algoritmos e Programas nosso foco se afasta um pouco de especificidades da linguagem Scilab para abordar aspectos da programa o de computadores que s o independentes da linguagem utilizada N s continuamos a usar o Scilab mas o conte do dessa parte seria essencialmente o mesmo se estiv ssemos utilizando C Java Fortran ou qualquer outra linguagem N s veremos que um algoritmo um m todo para transforma o de informa o de entrad
256. so de ifs aninhados vamos agora desenvolver um programa que e lLeiao nome do aluno que responde por exemplo Paulo e lLeiatamb m o total de pontos obtidos pelo aluno e Imprima conforme o caso a frase lt aluno gt com lt pontos gt voc obteve o conceito X onde X determinado pela Tabela 19 Exemplos seriam Paulo com 81 pontos voc obteve o conceitoB ou Paulo com 90 pontos voc obteve o conceito A Tabela 19 Pontos e Conceitos Pontos Conceito 90 lt Pontos lt 100 A 80 lt Pontos lt 90 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 117 O programa PontosConceito sce apresentado na Figura 209 atende a esta especifica o acrescida da suposi o de que o usu rio ir digitar sempre valores entre O e 100 Neste programa voc deve observar que e A leitura do nome e dos pontos do aluno id ntica utilizada no programa PassouNaoPassou sce e Seo lt bloco sen o gt do primeiro if chegar a ser executado porque temos Pontos lt 90 e poristo basta verificar que Pontos gt 80 para concluir que o conceito B e Seo lt bloco sen o gt do segundo if chegar a ser executado porque temos Pontos lt 80 e por isso basta verificar que Pontos gt 70 para concluir que o conceito C e O mesmo racioc nio se aplica aos outros ifs at o mais interno onde o lt bloco sen o gt n o necessita de m
257. srrrserrrrerrrrrsrrererrrresrreresrrrsssne 72 O Circuito Principal da CPU PipOCa eessseseseesessenserrressrrresrrrrssreresrreresreresrreeeseerese 73 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 2 4 6 O Contadorae Progra a sis dpi ese a a SO ADS a 77 2 4 7 A Unidade de CONtrOlE serccinn anen n E E 77 2 4 8 O Clclode MICO TASU Ca Oasan E T OCO a ca AR ia 81 2 4 9 O Micro PrOSraAm a senine Uia OE S CIO a LO LEGO UU dos nd 86 2410 Planilha PIpPOCAMIS ace a a Add 89 3 Ambientee Linguagem SCIaD sosisini ai 95 3 1 Introdu o ao Ambiente e Linguagem Scilab ces iss eerereeerrreanrereanas 95 3 1 1 Vari veis e Comandos de Atribui o seseeeneseeserereresurrersreresurrerereresurrersreresens 98 3 1 2 Programas Silas suis anais Boss as Canin do PRA SEU SS O DD AS a SAS a 101 3 1 3 Loops os comandos for e W ile e e sessssseessressreessrersressrressrerseerserersreeseeessres 107 3 1 4 Valores L gicos e StrIneS sarado Ri pa DS ia ada 112 3 1 5 Comandos AninhadoOS cam naganaasiinac he lE papai N ano 116 3 1 6 PLOU OS para teto de e o de a DD A 119 3 2 MIQLRIZES cones spiranit ada dn og a data DL dada Ri Gs ss bai dado a a on no dani os nda alada Es 124 3 2 1 Atribuindo valores a uma MatriZ ssssssssesereesssssererrsssssssrrrresssssserrresesssseene 124 3 2 2 Vetores linha Coluna api asasssaaataa nadas asian N NEN 126 3 2 3 Referenciando partes de uma MatriZ sssss
258. ste n mero diretamente se o operando for uma refer ncia pesquisar pelo operando na coluna de labels A obtendo o valor do endere o correspondente Para a coluna Word10 a f rmula para a c lula J2 J2 H2 2112 F2 2110 2 que calcula o valor em decimal da instru o com pot ncias de 2 escolhidas segundo o posicionamento do termo na palavra de 16 bits como mostrado na Error Reference source not found Para a coluna Word16 a f rmula para a c lula K2 H2 DEC2HEX 12 4 que converte o valor decimal para um hexadecimal com 4 d gitos Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 94 File Edit Format View Help v2 0 raw 3012 Figura 163 Arquivo com imagem de mem ria para o programa SearchTable Para obter um arquivo com o mapa de mem ria que pode ser lido pelo Logisim e use o Bloco de Notas para criar um arquivo SearchTable txt e digite v2 0 raw em sua primeira linha e depois copie todos os valores na coluna Word16 da planilha com o programa e cole no Bloco de Notas a partir da segunda linha A Figura 163 mostra a janela do Bloco de Notas com o programa execut vel Salve o arquivo seu programa estar pronto para ser executado Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 95 3 Ambiente e Linguagem Scilab 3 1 Introdu o ao Ambiente e Linguagem Scilab It is
259. t Sort amp Find amp as Table i lt Clear Sel r Candin 3 o Ex mat Painter DM E SO dm O E GA erge amp Center 0 6 0 248 88 Conditions Format Chpbosrd fa Font fa Alignment J Number g Stytes Celis Editing AD7 X f IR copia o Dbus x Aa e E JF G H I J KILIMNIO PIQAIS T U viwix v ZA AE AF AG JAH A AJ ax AL AM AN AD AP AQ AR AS AT Av AW JAJ AYAZ BABEBCSC EE EF j m de Ps ml nd Bis2Dec O eos J o jaja wo aS rlolwxis miol almam nl s o Jessia Eno E gt gt m tel di JA g TE E SIS se S E 3 E JE g z r FERE 3 3 tjej amp E E E E z Ez Mm q 0 9 0 0 0 0 9 9 o 0 1 0 o H vo 000200 C 0 o0 0 0 0 0 0 0 0 0 0 Em 0 0 o EA 0 o o o Do Re odzo q 2 F copi o Diut a O 0 00 0 0 0 0 0 0 0 o 52 0 0 000 ess 00620 oa av 70 0 0 00 0 0 0 0 0 o 0 o o Bm o 0 0 0 000 0008 D 4 molis Picis a instru o df tada no ll 0 0 O 0 9 0 0 0 o i 0 0 0 0 J 0 o D 0 o006 H Eos 0000 1 65 5 GeotOperand impMMEDATE mmedirie vos 0 0 0 0 0 0 0 0 0 0 0 100 00000 5 eos e meDEECT Direct jesa para mecro nstrup es aproptisdas 2 vi jo o 0 E 0 0 0 0 0 0 0 0 0 o o 00000000 MAITO 3000C or moADIRECT E n 7 1o 0 0 o 0 o 0 0 0 o o 0 D 000 00006006 4 9000 50 8 erros GerOperan a SIE 0 0 0 E 0 o o 0 0 0 0 0 DO 000000 0 0 10665785 ADOOS q sa oo 0 00 0 0 0 0 0 0 0 o 0 0 0 0 10000000 96 001000 5 04 W Dbus Io o 0 0 0 9 E 0 0 0 0 0
260. t ACC for jmpGT 8 1000 10 iguala 1 Desvia para o operando se D lt ACC for o jmpLT 1001 11 iguala 1 i Desvia para o operando _ jmp 10 1010 ma 12 incondicionalmente jmplnEmpty 1011 Desvia para o operando se InEmpty 1 impOutFull Desvia para o operando se OutFull 1 13 1101 15 14 1110 16 DE 15 1111 17 18 a te a M 4 Microinstructions Microprogram TI Ready Figura 158 A planilha Microinstructions A planilha Microprogram mostrada na Figura 159 de longe a mais complicada no arquivo Pipoca xIs As colunas onde o microprograma definido s o aquelas com cabe alhos de cor palha as colunas com cabe alhos de cor cinza s o campos calculados Passamos agora a descrever suas colunas Colunas Addr HEX e Address A coluna Address simplesmente uma enumera o de endere os consecutivos a serem ocupados na mem ria de microprograma em decimal a Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 90 coluna Addr Hex obviamente sua convers o para hexadecimal muito teis para acompanhamento da execu o de um programa no Logisim Colunas Label m Instruction e Operand nessas colunas que a parte de controle do microprograma definida Para microinstru es de sinais estes campos devem ser mantidos vazios Coluna Type Essa coluna cont m O se a microinstru o for de controle e 1 se for de sinais valor calculado
261. te toler vel Temperaturas do corpo humano medidas com uma casa decimal provavelmente atendem a todas as necessidades cl nicas E existe tamb m um grande ganho a temperatura anotada informa o simb lica que pode ser comunicada ao telefone ou copiada em outro papel ou digitada em um computador 7 Ponto de ebuli o 100 2142 A d z ye pe a gua E A T O 70 158 60 EI 140 50 122 94 14 e Corpo humano 30 86 20 68 1O 5 Ponto de fus o do gelo Figura 11 Term metro com escalas Celsius e Farenheit O uso de informa o simb lica requer uma conven o de interpreta o A qual temperatura altura da coluna de merc rio corresponde o s mbolo 50 A Figura 11 mostra as escalas mais comumente utilizadas para temperaturas Ou seja ao dizer 50 graus devemos esclarecer se estamos falando de graus cent grados ou Farenheit ou de alguma outra escala de temperaturas Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Introdu o 7 Tabela 1 Diferentes s mbolos para os n meros inteiros de 1 a 7 Ar bico Romano Bin rio 1 1 2 Il 10 3 III 11 4 IV 100 5 V 101 6 VI 110 7 VII 111 Simbolos podem tamb m ser usados para representar outros s mbolos Assim como explicitar uma escala um requisito para se interpretar um n mero associado a uma temperatura a correspond ncia entre s mbolos deve ser estabelecida por conven e
262. te Scilab 97 AND 27 Aritm tica matricial 127 arquivo programa 103 ASCII 23 Assembler 65 assembly 65 atuadores 13 barramento 57 Basic 96 Bin rios sem Sinal 23 bit 7 bloco ent o 105 bloco sen o 105 Blue Gene 1 bps 14 C 96 C 96 cabe alho da fun o 144 Carta de tempo 55 Central Processing Unit 64 chamadas da fun o 140 ciclo de instru o 66 Ciclo de Micro Instru o 81 Circuito para sincroniza o 75 circuito principal da CPU Pipoca 73 Cleve Moler 96 clock 63 Cobertura dos 1s 38 Cobol 96 Codifica o com Deslocamento 25 c digo da instru o 68 comando de atribui o 98 Comandos Aninhados 116 coment rios 104 compara o de bin rios sem sinal 49 comparador de 1 bit 49 Introdu o Organiza o e Programa o de Computadores compilador 95 96 Complemento de 2 25 complexidade computacional 158 complexidade linear 166 condutor perfeito 29 console do Scilab 97 Construindo matrizes 131 controlled buffer 57 convers o bin rio decimal 24 convers es A D 8 convers es D A 8 Corre o 157 CPU 64 data width 56 DBus 76 Debug 76 Demultiplexadores 51 descritor de arquivo 121 desenvolvimento top down 151 diret rio corrente 103 dividir para conquistar 179 Dvorak 13 eco 98 supress o do eco 99 Efici ncia 157 else 105 endere o 58 endfunction 141 escopo de vari veis 142 Especifica o 157 estour
263. tilizando uma linguagem comumente chamada micro assembler Nesta linguagem utilizam se labels para se referir a posi es na mem ria de micro programa mnem nicos para as micro instru es de desvio e indica es expl citas de quais sinais devem ser ativados para as micro instru es de sinal A tabela obtida o micro programa fonte leg vel por humanos a partir do qual processos de montagem produzem o micro programa bin rio e tamb m a Branch Table Comments Addr HEX Sa da do PC vai para Abus Sa da da RAM vai para Dbus IR copia o Dbus PC avan a Inicia a execu o da instru o armazenada no IR a wmn e ol Address Figura 151 Micro c digo para fetch de instru o A Figura 151 mostra o micro c digo que implementa a leitura fetch de uma nova instru o Este micro c digo executado ao fim de cada instru o todas as instru es sempre terminam pela micro instru o jmp Fetch Repare que a ltima micro instru o de Fetch jmpNext que como vimos desvia para a posi o apontada pela sa da da ROM Branch Table Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 87 Comments e W v Sl a iv Q TH O Jal Z QUIZ DIa Je 2 le lL o e ISl amp l alil lel lglg zle lo lo lo I I l9 lo lo Iso e Epa q resolve endere amento ope dAGo 19 25 Sa da do DR
264. u es ou do programador Sua codifica o direta bit por bit tarefa insana O arquivo Pipoca xIs serve exatamente para isto cumprindo as fun es de assembler e de micro assembler como descrevemos nas pr ximas se es Este arquivo cont m as planilhas Microinstructions Microprogram Instructions SumX ReadX SearchX e Aux A planilha Microinstructions pode ser vista na Figura 158 e cont m em cada linha um mnem nico da micro instru o seu c digo em decimal e bin rio e uma descri o Ali tamb m pode ser vista a nica f rmula utilizada que utiliza a fun o Excel DEC2BIN para converter um n mero decimal para bin rio DEC2BIN B3 4 wr Desvia para a micro instru o inicial da jmpNext 0000 2 instru o no registrador IR da CPU Desvia para o operando se o modo de mpIMMEDIATE 1 0001 o 3 lendere amento for Imediato Desvia para o operando se o modo de jmpDIRECT 2 0010 aaa 4 endere amento for Direto j Desvia para o operando se o modo de ImpINDIRECT 3 0011 o 5 endere amento for Indireta Situa o inesperada n o deveria error 0100 6 acontecer Acende um led l Desvia para a micro instru o apontada return 5 0101 i 7 pelo registrador Return Addr Desvia para o operando e armazena o jsr 0110 i l 8 endere o consecutivo no Return Addr Desvia para o operando se D ACE for jmpEQ 7 0111 9 iguala 1 Desvia para o operando se D g
265. u 3 subproblemas de tamanho n 3 ou e cada subproblema conquistado por aplica o recursiva da mesma estrat gia a n o ser que o seu tamanho seja suficientemente pequeno para permitir uma solu o direta e assolu es dos subproblemas s o combinadas para resolver o problema original Na ordena o por intercala o a divis o em subproblemas simples mas a combina o das solu es dos subproblemas exige a intercala o Na ordena o por parti o a divis o em subproblemas exige a execu o do algoritmo de parti o mas a combina o das solu es dos subproblemas consiste apenas em sua justaposi o 4 4 Algoritmos Num ricos Nesta se o n s vemos algoritmos num ricos para o c lculo de integrais definidas e tamb m para encontrar ra zes de uma fun o f x Tais algoritmos t m utilidade para problemas cuja solu o anal tica dificilmente obtida ou n o existe N s desenvolvemos tamb m uma fun o para o c lculo da s rie de Taylor para e c lculo que est sujeito a problemas que podem Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 180 resultar de opera es de truncamento e de arredondamento que decorrem do uso de um n mero finito de bits na representa o de ponto flutuante 4 4 1 Integra o por Trap zios O primeiro passo para se obter uma aproxima o num rica de uma integral f f dx a divis o do intervalo a b em n
266. uenciais t m a sua sa da influenciada tamb m pelo valor corrente de suas mem rias O elemento b sico de mem ria o flip flop capaz de armazenar um bit Conjuntos de flip flops formam registradores que s o ligados a outros registradores e a circuitos combinat rios por meio de barramentos S o tamb m introduzidos circuitos de mem rias onde ficam armazenados dados e programas Osciladores e registradores circulares s o introduzidos como elementos para controle da evolu o temporal de um circuito File Edit Project Simulate Window Help Mk alee DD du Acumulador a main Base Gates ho hg e Figura 30 Circuito sequencial simulado no Logisim que acumula a soma das entradas A primeira parte culmina com a apresenta o da arquitetura de um processador simples com suas rotas de dados instru es e seu ciclo de execu o sua unidade de controle e tamb m software para sua programa o em linguagem Assembler 1 7 2 Linguagem e Ambiente Scilab O estudo da organiza o de computadores ter permitido ao aluno tanto conhecer melhor o funcionamento b sico de um computador como ter um contato com a desumanidade da programa o a n vel de instru es de m quina de um computador A Parte Il Linguagem e Ambiente Scilab tem como objetivos principais e a introdu o de uma linguagem de alto n vel Scilab Scilab Consortium que facilita imensamente a tarefa de programa o de computadores atrav s da oferta de
267. ultados de testes da fun o expTaylor com x positivo Mas o teste com valores negativos nos reserva surpresas desagrad veis como mostra a Figura 363 Parax 1 o erro inferior aos valores por 15 ordens de grandeza muito bom Para 10 0 erro 8 ordens de grandeza menor que os valores calculados v l J com x 20 0 erro da mesma ordem de grandeza dos valores calculados muito ruim A casa cai mesmo com x 30 quando o erro 9 ordens de grandeza maior que o valor correto e pior o valor calculado para e 2 negativo sendo que e uma fun o estritamente positiva 1 0e 40 1 3 67879441e 001 3 67879441e 001 1 11022302e 016 10 4 53999298e 005 4 53999296e 005 1 39453573e 013 20 2 06115362e 009 5 62188447e 009 3 56073085e 009 30 9 35762297e 014 3 06681236e 005 3 06681237e 005 Figura 363 Resultados de testes da fun o expTaylor com x negativo O que aconteceu A f rmula para a s rie de Taylor provada matematicamente e a fun o expTaylor uma implanta o direta da f rmula com pouca possibilidade de erros 1 0e 23 1 0e283 y eps um y x igual a y bit por bit Figura 364 Exemplo de cancelamento catastr fico A origem dos maus resultados est na aritm tica de ponto flutuante que usa um n mero fixo de bits para representa o da mantissa Opera es aritm ticas com n meros com grandes diferen as de ordem de grandeza n o funcionam corretamente como
268. um programa se interrompa ao t rmino de cada instru o executada In Full In Full SetnEmpty Figura 131 Circuito para sincroniza o da CPU com dispositivo de entrada O circuito mostrado na Figura 131 realiza a sincroniza o da CPU com o nico na Pipoca dispositivo de entrada A sincroniza o necess ria porque com a execu o autom tica e incessante de instru es pela CPU existe tanto a possibilidade de captura de dados nos pinos de entrada antes que estejam prontos como a de captura repetida de um mesmo dado de entrada como ainda a de mudan a de dados pelo dispositivo de entrada antes de serem lidos pela CPU O protocolo seguido pela CPU e pelo dispositivo prescreve as seguintes regras e Somente o dispositivo de entrada aciona o sinal SetInFull e somente a CPU aciona o sinal SetInEmpty e O dispositivo de entrada somente aciona SetInFull quando o dado de entrada est pronto e InFull 0 e a CPU atrav s da Unidade de Controle somente aciona Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 76 SetInEmpty quando InFull 1 ou InEmpty 0 o que feito ap s a leitura dos dados de entrada e O circuito inicializado com InFull O O circuito de sincroniza o com o dispositivo de sa da similar a este Na Pipoca as instru es INPUT e OUTPUT exigem interven o do usu rio que deve usar a ferramenta de manipula o do Logi
269. ura 63 Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 40 Figura 63 Soma em decimal Para somar dois n meros bin rios o procedimento an logo Somamos bit a bit da direita para a esquerda e quando a soma de uma coluna excede 1 colocamos como resultado da coluna somente o bit mais significativo de sua soma e temos um vai um para a coluna seguinte A Figura 64 mostra o processo do c lculo de 1011101 1001110 Figura 64 Exemplo de soma de bin rios N s vamos usar essa aritm tica para construir um circuito somador de v rios bits A id ia construir um m dulo que fa a a opera o de uma das colunas da soma O somador ter tantos deste m dulo quantas forem as colunas ou seja quantos forem os bits das parcelas Figura 65 Entradas e sa das de um circuito de soma completa Este m dulo esquematizado na Figura 65 ter tr s entradas e os dois bits de uma coluna das parcelas e e uma entrada que vamos chamar de vem um que vamos ligar sa da vai um da coluna direita As sa das do m dulo s o duas e um bit de resultado e um bit de vai um que ser ligado entrada vem um da coluna esquerda Um circuito que implemente esse m dulo conhecido como circuito soma completa Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 41 Figu
270. vai para Dbus 1A 26 o ACC copia sa da da ALU 1B 27 jmp Fetch 1 Fetch da pr xima instru o 41 65 SUB jsr GetOperand Resolve endere amento operando efetivo no DR 42 66 Sa da do DR vai para Dbus pino Subtract da ALU 1 43 67 1 ACC copia a sa da da ALU ACC Dbus 4 68 jmp Fetch Fetch da pr xima instru o Figura 152 Micro c digo para as instru es ADD e SUB Na Figura 152 n s vemos o micro c digo das micro instru es ADD e SUB Ele se inicia com a micro instru o jsr GetOperand o micro c digo de GetOperand Figura 153 se encarrega de resolver o modo de endere amento colocando o operando efetivo da instru o no registrador DR Comments A 2 5l I I E Z ala jE E O j Z jO Ja ja jo 2 2 lt lt lt a O jA JA 05 5 GetOperand jmpIMMEDIATE Immediate 06 6 jmpDIRECT Direct Desvia para micro instru es apropriadas 07 7 jmpINDIRECT Indirect o 8 error GetOperand Modo de endere amento inexistente 09 9 Immediate i O operando da instru o vai para o Dbus OA 10 DR copia o Dbus 0B 11 return Retorna OC 12 Direct O operando da instru o vai para o Dbus OD 13 MAR copia o Dbus sa da do MAR vai para o Abus OE 14 Sa da da RAM vai para Dbus oF 15 1 DR copia o Dbus 10 16 return Retorna 11 17 Indirect O operando da instru o vai para o Dbus 12 18 MAR copia o Dbus sa da do MAR vai para o Abus 13 19 Sa da da RAM vai para Dbus 14 20 MAR copia o Dbus sa da do
271. w Help b r Al8 0 gt D D 3 Untitled E main H Base 5 Gates H Plexers 45 Arithmetic 5 Memory 10 Input Output DEK Figura 48 Tela inicial do Logisim Para o nosso primeiro circuito vamos come ar colocando duas portas AND clicando sobre o s mbolo correspondente na barra de ferramentas e posicionando as portas na rea de Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 32 desenho como mostrado na Figura 49 Repare na tabela de atributos que exibe e permite a edi o de dados relativos ao elemento selecionado no caso a porta AND inferior Logisim main of Untitled 2 DER File Edt Project Simulate Window Help bMjAals o gt D D D Untitled 2 A main 45 Base amp 4 Gates 1 Plexers 3 Arithmetic 1 Memory 5 Input Output Figura 49 Duas portas AND Depois usando ainda a barra de ferramentas vamos colocar uma porta OR e duas NOT posicionando as conforme a Figura 50 Logisim main of Untitled File Edit Project Simulate Window Help brjalzo gt DD Untitled G main 5 Base E O Gates 6 Plexers H Arithmetic 15 Memory H E Input Output East i Wide Figura 50 Acrescentando portas NOT e OR O pr ximo passo a coloca o de entradas e sa das que s o colocadas usando os cones em destaque na Figura 51 Introdu o Organiza o e Progra
272. y do Logisim s o sempre apresentados como um nico bloco que se assemelha a um flip flop mas que capaz de armazenar um n mero de bits escolha do usu rio Um cabo conectado entrada D de um registrador de 4 bits deve tamb m ter uma largura de 4 bits Figura 98 Dois circuitos equivalentes No circuito de cima fios e registradores t m 1 bit de largura no de baixo 4 bits Na Figura 98 n s vemos dois circuitos equivalentes cada um com dois registradores de 4 bits conectados O circuito de cima utiliza somente elementos de largura de 1 bit com os quais j estamos familiarizados O de baixo utiliza entradas sa das registradores e cabos de 4 bits de largura Seu desenho por isso mesmo muito mais simples e portanto de mais f cil compreens o A largura de bits de componentes como registradores entradas e sa das controlada pelo usu rio usando o campo data width no painel de atributos como na Figura Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Organiza o de Computadores 57 97 O Logisim facilita a nossa vida dando a cabos a largura de bits dos componentes aos quais o cabo se conecta e alertando o usu rio nos casos de incompatibilidade j Logisim main of Splitter File Edit Project Simulate Window Help D e ala e gt D Splitter Plexers Arithmetic Input Output Legacy H cl Dc e a 2 Bottom
273. z versos que ama protesta le agora Jos File Edit Format View Help agora Jos festa acabou luz apagou povo sumiu noite esfriou agora Jos agora voc que ama protesta e agora Jos 4 Figura 256 Arquivo fonte visto com o Bloco de Notas e vetor de strings obtido com o comando mgetl Na Figura 256 n s vemos o efeito desses comandos quando o arquivo escolhido para leitura o mostrado na parte esquerda da figura com o famoso poema do Drummond 3 2 8 Matrizes Num ricas e Arquivos Os comandos j vistos na Se o 3 1 6 podem ser usados para a leitura de matrizes mas o Scilab oferece os comandos fscanfMat e fprintfMat que facilitam muito essa tarefa Estes comandos l m ou gravam arquivos que cont m somente n meros em formato tabular com exce o das primeiras linhas que podem conter textos Os arquivos s o lidos ou gravados com uma nica execu o desses comandos que dispensam as opera es de abertura e de fechamento de arquivos O comando fprintfMat arq M 5 2f Cabecalho grava a matriz num rica M no arquivo arq que em suas primeiras linhas ir conter os strings que s o os elementos do vetor coluna de strings chamado Cabecalho Cada elemento de M gravado com o formato 5 2f O vetor de strings Cabecalho normalmente usado para uma explica o sobre os campos presentes no arquivo 1 2 3r doc 7EY arg uigetfile Cabecalho Meus Dados Coll C
274. za o e Programa o de Computadores IOPC 2010 2 3 Ambiente e Linguagem Scilab 141 inten o do programador mais clara Para algu m que n o tivesse constru do o programa da Figura 267 a percep o da similaridade entre os trechos de c lculo do fatorial pode n o ser bvia e requer esfor o de verifica o Para o pr prio programador as substitui es utilizadas para a constru o do programa da Figura 267 s o uma fonte de enganos 3 3 1 Sintaxe CEunctioDfat fatorial n fat 1 for i 1 n fat fat i end Figura 270 Palavras chave na defini o de uma fun o Fun es s o definidas com o uso das palavras chave function e endfunction que delimitam o c digo da fun o function fat fatorial n Figura 271 Par metros formais de entrada e de sa da da fun o A fun o fatorial que escrevemos possui um par metro formal de entrada n e um par metro formal de sa da fat Par metros formais s o definidos no c digo da fun o onde s o utilizados como vari veis normais Entretanto par metros formais s existem durante a execu o da fun o Por contraste os par metros usados em chamadas de uma fun o s o chamados de par metros reais que podem ser vari veis ou express es No in cio da execu o da fun o cada par metro formal recebe o valor do par metro real correspondente a correspond ncia estabelecida pela ordem dos par metros
275. za uma opera o de parti o do vetor segundo um piv que um valor igual a um dos elementos do vetor A parti o aplic vel somente a vetores com dois ou mais elementos separa o vetor em tr s partes e a da esquerda contendo somente elementos menores ou iguais ao piv e ado meio contendo somente elementos iguais ao piv e e ada direita contendo somente elementos maiores ou iguais ao piv poss vel que algumas das partes resultantes seja vazia O m todo prossegue aplicando se recursivamente s parti es da esquerda e da direita at se conseguir parti es de tamanho 1 que est o trivialmente ordenadas Este um dos algoritmos mais famosos da ci ncia da computa o tendo recebido o nome de quicksort Introdu o Organiza o e Programa o de Computadores IOPC 2010 2 3 Algoritmos 178 Esquerda Meio Rs Direita x Piv 5 16 16 11 12 12 13 114 Figura 336 Exemplo de ordena o por parti o quicksort A Figura 336 ilustra o comportamento do algoritmo na ordena o de um vetor com 10 elementos A cada parti o o piv escolhido est sublinhado function sA quicksort A 1f length A lt 1 then SA A else l m r partition A sA quicksort 1 m quicksort r end endfunction Figura 337 A fun o quicksort que implementa o algoritmo de ordena o por parti o Assim como o algoritmo de intercala o a implanta o do quicksort por meio de uma fun o
Download Pdf Manuals
Related Search
Related Contents
Page 1 Page 2 ==== ライフコーダEX関連製品紹介 __! アクセスライン・チェッカー Handicap : de la loi aux faits certificat de produits 2. Bedienungsanleitung PreManualINCIDENCIA Visible Analyst User`s Manual Philips 32HF9385D Flat Panel Television User Manual R0192C H Pylori Ag rev A francais Manual de Utilização Copyright © All rights reserved.
Failed to retrieve file