Home

Apostila de Organização de Computadores e Programação

image

Contents

1. Figura 125 Um registrador da biblioteca Mem ria do Logisim com largura de 8 bits Registradores 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 Circuitos Sequenciais 87 Figura 126 Dois diagramas de um mesmo circuito No circuito de cima fios e registradores t m 1 bit de largura no de baixo 4 bits Na Figura 126 n s vemos dois diagramas para um mesmo circuito com dois registradores de 4 bits conectados O diagrama 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 Bits de Dados no painel de atributos como na Figura 125 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 a pa CT e Largura em bits saida gt aixo 2 Embaixo 2 Embaixo Figura 127 Uma bifurca o de um cabo de 8 bits em um de 2 bits e outros dois de 2 bits de largura O
2. ccsssccccsseccccseccccesecceceusecesseeceseegeeeeteneeeeees 75 2 9 Compara o de bin rios SEM SiMal cccccccsssccccessececeeseccccesseceeeeseceeeeeceeeeusecetseneess 77 2 10 Multiplexadores Demultiplexadores e Decodificadores cceccccsssececeeseceeeeeseeeees 81 3 Circuitos SCO UICINCISIS raio E EATON 84 3 1 DOD ER E Ur AO E E ES 84 3 2 Barramentos e Controle de Fluxo de Dados ssssssssseneessssssereressssssserrreessssreerreeesss 88 3 3 MINORIAS paid A T A A E E E 89 3 4 Acumuhdon cio e LOOD eeren nen en ERR 91 3 5 Uma ANC Uad A eean cob caictee E E 92 3 6 OCK a T E a Sa eueceweyenecs 94 E Proe AOS a E E E E 98 4 1 Programa ArMazeNddO sura asia a AE EAE eee re 98 4 2 CPU 0 Um Primeiro Processador ccccssssseccccceesecccceseesecccesseeeeceeesaeueeeeeesaueseeeeeas 101 4 3 CPU 1 Processador com Instru es de DOSVIO ceecccssseceseceeeseeeeesceseeeceeeueeeeens 106 4 4 CPU 2 Processador com Instru es de Desvio CONCICIONAlL ccccceeeeeeeeeeeeeeeeees 109 4 5 CPUs Reais Instru es e Programa o em Assembler csccccessecceeeseceeeeeceeeeees 111 Conteudo S Prop alas CAD saga ani DOSES A ES eae 118 5 1 Compiladores Interpretadores e Sistemas Operacionals cccccecscseesceeeesseeneeeeees 118 5 2 SCG a regras a DE a a OR ees 121 5 3 Vari veis e Comandos de AtriDUICAO cceesccccesseccceesececcescccceesececeenecesseenecetsuneess 122 5 4 Usan
3. sciport 3 0 pdf Acessado 7 de mar o de 2011 http www dca ufrn br pmotta sciport 3 0 pdf Sosa Carlos e Knudson Brant IBM System Blue Gene Solution Blue Gene P Application Development IBM Redbooks SG24 7287 03 Acessado 14 de fevereiro de 2012 http www redbooks ibm com redbooks pdfs sg247287 pdf Sound Transducer Acessado 2 de agosto de 2011 http www electronics tutorials ws io io 8 html Steve Hollasch IEEE Standard 754 Floating Point Acessado 7 de mar o de 2011 http steve hollasch net cgindex coding ieeefloat html The History of Programming Languages O Reilly Media Acessado 7 de marco de 2011 http oreilly com news languageposter_0504 html The Prime Pages prime number research records and resources Acessado 7 de mar o de 2011 http primes utm edu index html Travelling salesman problem Wikipedia the free encyclopedia Acessado 11 de dezembro de 2012 http en wikipedia org wiki Travelling salesman_problem Computational_co mplexity Unicode Wikipedia the free encyclopedia Acessado 19 de agosto de 2011 http en wikipedia org wiki Unicode Ap ndice A A CPU Pipoca 271 Ap ndice A A CPU Pipoca Neste Ap ndice nos apresentamos a CPU Pipoca em um nivel de profundidade destinado a professores e a alunos avancados O circuito da Figura 135 tem os mesmos elementos basicos de uma CPU veja tamb m a Figura 434 com memoria barramentos e reg
4. Figura 139 Um registrador circular A Figura 139 mostra um registrador circular formado por tr s flip flops tipo D alimentados por um clock O cabeamento tal que a sa da do FF t0 est ligada a entrada D do FF t1 a sa da do FF tl entrada do FF t2 e a sa da do FF t2 est ligada a entrada do FF t0 em um arranjo circular 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 FF t0 passe para o FF t1 depois para o t2 retornando ent o ao FF tO Circuitos Sequenciais 96 Figura 140 Carta de tempo para o registrador circular da Figura 139 A Figura 140 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 conseguimos obter sinais distribu dos no tempo na forma como desejarmos Temos agora todos os ingredientes necess rios para a constru o de um processador o que faremos no pr ximo modulo 4 Processadores 98 4 Processadores 4 1 Programa Armazenado Um processador um circuito digital com comportamento flex vel comandado por uma coisa que chamamos de programa Um programa produzido por um ser humano que deseja resolver um problema de transforma o de informa o Trocando se o programa troca se o comportamento do processador Isso n o deve envolver modi
5. Figura 310 Primeiras linhas de um arquivo em formato CSV Na Figura 310 n s vemos as mesmas informa es do arquivo da Figura 310 em um outro formato muito utilizado onde os campos encontram se separados pelo caractere Este formato conhecido como formato CSV de Comma Separated Values mesmo quando o separador n o uma v rgula function Ano Inscr Nome LeAnoInscrNomesCSV arg d arq mopen arg r k 0 while meof d arg linha mgetl d_arq 1 k k 1 tks tokens linha Ano k eval tks 1 Inscr k tks 2 Nome k stripblanks tks 3 end mclose d_arq endfunction Figura 311 Fun o para leitura de um arquivo com o formato CSV da Figura 310 A Figura 311 mostra uma fun o que l um arquivo com o formato da Figura 311 Aqui tamb m o arquivo lido linha por linha com a fun o tokens sendo utilizada para obter os campos de uma linha como elementos de um vetor de strings 8 Fun es 193 function GravaAnoInscrNomesCSV Ano Inscricoes Nomes arq n size Ano d arq mopen argq w for i 1 n mfprintf d arq 4d 8s 40s n Ano 1 Inscricoes 1 Nomes 1 end mclose d arg endfunction Figura 312 Fun o para grava o de um arquivo em formato CSV A grava o de um arquivo com o formato CSV pode ser feita facilmente com o comando mfprintf como mostra a Figura 312 8 5 Fun es e Desenvolvimento Top down Uma t cnica
6. Examinando o arquivo de entrada n s vemos que ele tem um formato adequado para leitura com fscanfMat pois tem uma linha de cabe alho e os dados restantes s o todos num ricos e dispostos em um formato tabular 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 MaxMed MinMed MaxRec MinRec xtitle Temperaturas Mensais em BH M s Graus C Figura 286 O programa ClimaBHZ sce A Figura 286 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 7 Loops 181 e o par metro extra de plot2d leg MaxMed MinMed MaxRec 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 25 20 Graus C 0 2 4 6 8 10 12 MaxMed M MinRec MinMed di MaxRec Figura 287 Gr fico gerado pelo programa da Figura 286
7. Iniciando 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 320 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 Fat 2 IOD Fat 2 COD Fat 3 Ev OM LEE Fat 3 EOD ILLOD ILLOD ILLOD ILLOD LEG Fat 5 Fat 5 Fat 5 Fat 5 Fat 5 Prog Prog Prog Prog Prog Figura 321 Pilha de execu o de FatorialR Fat 4 Fat 5 Prog Fat 5 Prog Fat 5 Prog Fat 5 Prog 8 Fun es 197 A Figura 321 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 esta 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
8. Sin Clicks Equivalentes Efeito Endere o CC Clear 1 CC Clear 0 In Bus 1 AR Clk 1 Bus 0 MAR Clk 0 DR Bus 1 AM Clk 1 gt ooo ollubtract gt o o ofMompare Clk Figura 141 Codifica o de sinais de controle em micro instru es A Figura 141 mostra como podemos especificar micro instru es por meio de uma tabela onde cada coluna da parte mais esquerda corresponde a um dos sinais de controle do circuito da 4 Processadores 99 Figura 135 Cada linha da tabela corresponde a uma micro instru o e as micro instru es ser o executadas sequencialmente pela unidade de controle As duas colunas mais direita t m informa es para consumo humano os clicks que o operador Logisim deveria realizar e o efeito sobre o estado do circuito Repare que desta forma poss vel ligar ou desligar mais de um bot o ao mesmo tempo OOOO AAAA 0001 001000 OOO 001400 ooo 000080 Figura 142 Circuito para gera o autom tica de sinais de controle segundo um programa armazenado em uma mem ria RAM N s vamos agora mostrar um circuito que gera automaticamente sinais de controle ignorando por enquanto o problema do fornecimento de literais No circuito da Figura 142 n s vemos e uma mem ria RAM onde fica armazenado um programa n s veremos mais tarde como colocar um programa na mem ria e sa das de sinais de controle ligadas diretamente sa da da mem r
9. carregado executado a Nic na pela rara O Po pags a 2 e composto Instru es passam Montagem de Instru es o i i a COM por mi mal gt por P um Assanbler por gt l te gera pceermi f ae J Hin rias Pea Figura 438 Montagem de um programa A 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 cpu repetidamente seguida por Figura 439 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 Ap ndice A A CPU Pipoca 273 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 R 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 440 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
10. e tem sinais opostos nos extremos do intervalo 2 4 e portanto este intervalo cont m uma raiz e e essa raiz 7 A Figura 387 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 sin x endfunction Figura 387 A fun o exp sin 11 Algoritmos Num ricos 236 O gr fico da Figura 386 pode ser obtido na console do Scilab com os comandos mostrados na Figura 388 A diretiva axesflag 5 faz com que os eixos sejam tra ados no ponto 0 0 gt exec exp sin sci gt x linspace 0 2 pi 101 gt y exp sin x gt plot2d x y axesflag 5 Figura 388 Comandos para obter o gr fico da Figura 386 na console do Scilab Com isso n s j podemos construir um programa testador para a fun o bissecao conforme mostra a Figura 389 O programa permite experimentar com diversos valores de toler ncia comparando a raiz calculada com o valor de z com 10 casas decimais Clear exec exp sin sci exec bissecao sci tolerancia input inToler ncia while tolerancia gt 0 raiz bissecao exp sin 2 4 tolerancia printf Raiz 12 10f An Pi 12 10fin raiz pi tolerancia input inToler ncia end Figura 389 O programa bissecao teste sce Um primeiro refinamento da fun o bissecao sci o loop que a cada passo reduz
11. 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 iMin 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 348 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 obi nem 2 2 comp 1 2 n 1 o f l Para n suficientemente grande o n mero de compara es se aproximara 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 349 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 10 Ordenacao 215 Sele o e Troca 90 20 70 BO JE 50 E a JE gd 20 E E S00 1000 1500 2000 2
12. o Portanto a qualidade da digitaliza o depende e da frequ ncia da amostragem e e da precis o com que feita cada amostragem Podemos sempre tentar aumentar a o n mero de bits e a frequ ncia de amostragem mas isso tem custos Dependendo da utiliza o final do sinal reconstru do os custos com a melhoria de qualidade nem sempre s o compensat rios 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 ou sonora Um CD musical amostrado com frequ ncia de 44 1 kHz e 16 bits de precis o o que propicia uma qualidade bastante satisfat ria um sistema de udio sofisticado utiliza amostras com 96 kHz e 24 bits de profundidade o que satisfaz ouvidos exigentes de m sicos profissionais Como conclus o importante observar que a convers o de informa o em qualquer dos dois sentidos A D ou D A nunca perfeita mas em muitos casos pode ser t o boa quanto se necessite 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 a escrevem executam Y s o compostos por Instru es e Comandos l m transformam registram Informa o Digital Figura 26 Computadores programas e informa o digital r Programa
13. o poss vel de valores das vari veis de entrada A Figura 81 mostra a tabela da verdade para a soma de duas vari veis de 1 bit Figura 81 Tabela da Verdade para soma de duas vari veis de 1 bit Circuitos Combinatorios 63 Nessa tabela nos temos e duas vari veis de entrada a e b e duas fun es de sa da s e so 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 2 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 na Se o 2 2 Dada uma express o l gica n s podemos construir sua tabela da verdade efetuando as opera es da express o A Figura 82 mostra a tabela da verdade para a express o a b c contendo valores intermedi rios usados no c lculo do valor da express o q b cla bre ate 1 0 0 Figura 82 Tabela da verdade para a express o a b c Mas nosso problema n o bem esse N s temos uma tabela da verdade e 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 d
14. D D Par 1 0 0 0 0 1 2 0 1 0 0 0 0 2 0 Finish P Key Table 28 29 TableEnd Figura 480 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 480 Aqui devem ser Ap ndice A A CPU Pipoca 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 481 Para obter os endere os 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 1 a ReadLoop searchloop EndSearch Figura 481 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 Somax 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 res
15. Endere o 00000000 00001110 Figura 154 O contador de programa da CPU 1 com possibilidade de imposi o de um novo endere o arbitr rio A Figura 154 mostra o novo contador de programa onde voc deve reparar que a entrada do registrador de endere o est conectada sa da de um multiplexador Este multiplexador encaminha para a entrada ou bem o valor corrente do PC acrescido de 1 fornecido pela sa da do somador quando a entrada Desvio igual a 0 ou ent o o valor da entrada D quando a entrada Desvio igual a 1 Micro instru o aU CECE OR OOROEOo Efeito o Sinais T T E a z q Da micro a cae Acumulado Instru o pr q ACC O0 Literal 1 Bus Literal 4CC A4CC Bus Literal 1 Bus Literal Soma Tao acumulador ACC 4CC Bus Desvia para 4 Carega no acumulador Figura 155 Um programa para a CPU 1 4 Processadores 109 Na Figura 155 n s vemos uma tabela com um programa para a CPU 1 cujo efeito muito simples o programa usa o acumulador para contar 1 2 3 indefinidamente Para executar este programa no Logisim as etapas s o as mesmas as micro instru es devem ser gravadas em um arquivo codificadas em hexadecimal uma em cada linha Este arquivo deve ser carregado na memoria de programa na unidade de controle da CPU 1 4 4 CPU 2 Processador com Instru es de Desvio Condicional Com a micro instru o de desvio da CPU 1 n s con
16. Wolffdata n d Wolffdata Retrieved 2008 from ScilabStarter http www wolffdata se scilab ScilabStarter pdf Refer ncias Zotero Alan M Turing On Computable Numbers with an Application to the Entscheidungsproblem Proceedings of the London Mathematical Society s2 42 n 1 1937 230 265 Alan Turing Wikipedia the free encyclopedia Acessado 11 de marco de 2011 http en wikipedia org wiki Alan Turing An investigation of the laws of thought microform on which are founded the mathematical theories of logic and probabilities Boole George 1815 1864 Free Download amp Streaming Internet Archive Acessado 19 de agosto de 2011 http www archive org details investigationofl0Oboolrich Applications with Scilab Maxima Geogebra Acessado 28 de setembro de 2011 http www wolffdata se ASCII Wikipedia the free encyclopedia Acessado 18 de agosto de 2011 http en wikipedia org wiki ASCII Barbara Blackburn the World s Fastest Typist Acessado 15 de setembro de 2012 http rcranger mysite syr edu famhist blackburn htm Barret Lyon The Opte Project Acessado 7 de mar o de 2011 http opte org bigbluesky2002 YouTube Swiss Antique Music Box Acessado 1 de abril de 2011 http www youtube com watch v tzWt1X300g amp p 66A384A130BODCE4 Bill McKeeman MATLAB 101 A talk for the MIT Computer Science Department novembro de 2005 http www
17. en wikipedia org wiki File Pdp 11 70 panel jpg 4 Processadores 106 arquivo um mapa da memoria para ter acesso a essas opera es clique com o bot o direito do mouse sobre a mem ria A Figura 150 mostra o formato de um arquivo com a codifica o em hexadecimal do programa da Figura 148 e a mem ria de programa Logisim ap s a carga deste arquivo No site do curso voc ir encontrar planilhas que auxiliam na produ o de arquivos programas em hexadecimal 4 3 CPU 1 Processador com Instru es de Desvio Suponha agora que queremos construir para a CPU 0 um programa que some os conte dos das posi es 1 2 3 4e 5 da mem ria principal e coloque o resultado na posi o 6 N o dif cil basta acrescentar ao programa mais passos de somas ao acumulador como ilustra a Figura 151 Soma de 2 parcelas Soma de 5 parcelas Sinais Operando Oper gt Bus FREE GERE GORE GERE FOGE GERE DEZ Oper gt Bus In gt Dbus RAM_Bus RAM Clk DR gt Bus DR Clk Subtract Out Clk Compare Clk ACC gt Bus Compare CIk ACC gt Bus ACC Clear ACC Clear asia siis sisa asia seen Em Figura 151 Programas para a CPU 0 que somam 2 e 5 parcelas N s sab amos que era poss vel realizar computa es arbitrariamente complicadas com a nossa calculadora aplicando manualmente sinais de controle e entrando tamb m manualmente com os operandos necess rios Com a CPU 0 n s mostramos q
18. 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 chamadas 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 eos 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 mclose mgetl 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
19. gt 2 3 4 ans 32 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 ans 14 Figura 176 Prioridades e par nteses influenciando o valor de uma express o aritm tica Na Figura 176 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 ordem em que o programador deseja que as opera es de uma express o sejam realizadas Em Scilab como em Fortran C Java e praticamente todas as linguagens de programa o n o se usam chaves ou colchetes somente par nteses s o usados e a cada par nteses aberto deve corresponder um par nteses fechado Toda express o deve ser escrita de forma linear por exemplo Programas Scilab 127 b Vb 4ac 2a em Scilab assume a forma b sqrt b 2 4 a c 2 a onde usamos cores para ressaltar a correspond ncia entre par nteses abertos e fechados 5 4 Usando o Scilab como Calculadora Para mostrar a utilidade de um programa vamos primeiramente resolver com a console Scilab uma equa o de segundo grau com a forma que conhecemos desde a escola secund ria ax bx c 0 N s queremos calcular as ra zes para a 534 2765 b 9987 3431 ec 225 7690 N s sabemos que as ra zes s o encontradas pelas f rmulas _ b VA n 2a e b vVA n 2a onde A b
20. 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 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 Computadores e Informacao 40 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 69 24 50 42 28 8 62 34 70 52 A 39 24 50 42 28 8 62 34 70 52 A 39 69 50 42 28 8 62 34 70 52 A 39 4 50 42 28 8 62 34 70 52 A E so 39 24 50 42 28 m A 39 24 50 42 28 8 62 34 70 52 Figura 46 Seis primeiros passos do algoritmo que encontra o menor valor presente em um vetor 62 34 70 52 Um algoritmo dito correto quando atende a sua especifica o Dois algoritmos corretos podem satisfazer uma mesma espe
21. 3B 59 STORE jsr GetOperand 1 Resolve enderecamento operando efetivo no DR 3c 60 Eos Sa da do DR vai para Dbus 3D 61 o MAR copia o Dbus sa da do MAR vai para o Abus 3E 62 Sa da do ACC vai para Dbus 3F 63 w E RAM copia o Dbus 40 64 jmp Fetch Fetch da pr xima instru o Figura 476 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 476 e n o apresenta novidades Comments Addr HEX 45 69 HALT jmp HALT 1 Loop infinito parada final Figura 477 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 Ap ndice A A CPU Pipoca 295 9 A Planilha Pipoca xls Para funcionar a Pipoca depende de ter preenchidas suas memorias RAM e ROM o que pode ser feito no Logisim atrav s da carga de arquivos com mapas de memoria Mas como fazer para obter mapas que correspondem a uma inten o do projetista de instru es ou do programador Sua codifica o direta bit por bit tarefa insana O arquivo Pipoca xls 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 478 e cont m
22. 4ac Temos aqui um problema de transforma o de informa o dos valores de a b e c queremos obter valores para r e r Em todo problema de transforma o de informa o mesmo antes de tentar resolv lo temos que pensar em testes que verifiquem a corre o do que consideramos ser uma solu o No caso dispomos de um teste simples valores r e r que venham a ser encontrados devem ser tais que o valor calculado de f x ax bx c seja igual a zero nesses pontos A primeira coisa que faremos inicializar vari veis a b e c conforme mostrado na Figura 177 Programas Scilab 128 gt a 534 2765 534 2765 gt b 9987 3431 9987 3431 gt C 225 7690 C 225 769 tes de uma equa o de 20 grau Figura 177 Inicializa o do Depois calculamos A e as ra zes como mostrado na Figura 178 Programas Scilab 129 gt delta b 2 4 a c delta 99264530 gt rl b sqrt delta 2 a ri 0 0226329 gt r2 D sqrt delta 2 a r2 18 670578 Figura 178 C lculo das ra zes da equa o de 20 grau Repare que usamos vari veis delta rl e r2 com nomes aceit veis para o Scilab e principalmente 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 Scila
23. Exatas e pelo Centro de Recursos Computacionais do Departamento de Ci ncia da Computa o A figura da capa foi retirada do fac s mile do manuscrito Dixit algorizmi tradu o do rabe para latim do trabalho de al Khwarizmi 2 Muhammad ibn Musa al Khwarizmi Wikipedia the free encyclopedia acessado 21 de agosto de 2012 http en wikipedia org wiki Mu E1 B8 ADammad ibn M C5 ABS C4 81_al Khw C4 8 1rizm C4 AB Computadores e Informa o 12 1 Computadores e Informa o 1 1 Computadores Computadores eletr nicos program veis surgiram na d cada de 1940 Pouco mais de 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 ensina e se aprende como se faz com rcio medicina engenharia ci ncia economia como se namora como governar e como exercer a 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 ainda seja similar mostrada na Figura 1 BE j 4 Figura 1 Um IBM PC lan ado em 198110 Este foi o primeiro computador pessoal lan ado pela IBM Apesar de ter sido precedido desde Os primeiros anos 70 por diversos outros micro computadores o lan amento em 1981 do IBM PC foi um marco a IBM era ent
24. Figura 421 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 422 mostra uma solu o para o problema proposto na Figura 421 100 0 1 1 100 oe en 1 100 E 100 1 0 0 00 1 1 00 100 100 1001100100100 Figura 422 Uma solu o com 7 domin s Vamos representar uma sequ ncia de domin s por um vetor de ndices como 131132 2 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 12 Complexidade de Problemas 254 de dominos as primeiras sequ ncias geradas sao 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 algarismo 3 exec ReadPostProblem sci exec Sucessor
25. No segundo experimento fizemos o programa Fatora sce fatorar por diversas vezes se o n mero 131101 que primo Veja os resultados na Figura 327 n 131101 Tempo 2 984375s 131101 divis vel por 131101 PRIMO n 131101 Tempo 3 078125s 131101 divis vel por 131101 PRIMO n 131101 Tempo 3 015625s 131101 divis vel por 131101 PRIMO Figura 327 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 A fun o timer procura calcular o tempo efetivo de processamento de um programa mas com imprecis es que voc j p de apreciar por isso que uma mesma fun o chamada com os mesmos par metros pode apresentar diferen as de desempenho a cada execu o 48 The Prime Pages prime number research records and resources acessado 7 de mar o de 2011 http primes utm edu index html 9 Algoritmos Pesquisa Tabela 4
26. 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 H muito o que se aprender em computa o pura ou aplicada s ci ncias e s 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 cient
27. Scilab me 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 frequentes e tamb m da viabilidade de aplica o de provas online A Regina j aplicava estas t cnicas com enorme sucesso em C lculo Num rico 6 sciport 3 0 pdf acessado 7 de marco de 2011 http www dca ufrn br pmotta sciport 3 0 pdf Scilab Consortium Home Scilab WebSite acessado 7 de mar o de 2011 http www scilab org 8 Jack Chizmar The Effective Teaching and Learning Network training course and information for teachers TAM and Classroom Research acessado 7 de mar o de 2011 http www etIn org uk resources page16 html Prefacio Os monitores que trabalharam na disciplina em sua primeira oferta em 2007 foram Maxstaley Neves e Henrique Chevreux Sem eles eu nao teria conseguido enfrentar a miriade 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 integra competente e criativa postura que souberam transmitir aos outros monitores 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 fica pelo Laborat rio de Recursos Computacionais do Instituto de Ci ncias
28. Tempos segundos gastos com a fun o MenorFator em um notebook e em um desktop Outro experimento procura capturar o impacto do valor do n mero primo recebido como Notebook 4099 524309 1048583 2097169 Desktop 0 0312 0 0156 0 0468 0 0156 0 0625 0 2187 0 2968 0 7656 1 5312 2 9375 6 2968 11 2187 24 5468 49 6093 par metro sobre o tempo de execu o da fun o MenorFator A Tabela 4 mostra os resultados obtidos com diversos n meros primos em experimentos realizados com dois computadores com velocidades distintas O gr fico da Figura 328 resulta desta tabela e ele 202 torna clara a rela o de linearidade entre o valor do n mero primo e o tempo consumido pela fun o MenorFator 100 ai S0 T 60 50 Figura 328 Tempo para fatora o em fun o do valor de n meros primos em dois computadores o S00000 1o00000 1500000 ZO00000 2500000 9 Algoritmos Pesquisa 203 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 naturalmente ajudam a formar uma intui o Um exame da fun o MenorFator Figura 316 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 e
29. ab onde V designa a sa da Vai um Isto n o um erro pois esta express o equivalente express o V a bv ab v abv abv encontrada pelo m todo de cobertura de 1s o que voc pode verificar construindo uma tabela da verdade para as duas express es Pelo contr rio a simplifica o da express o leva a um circuito mais simples e funcionalmente equivalente Percebemos que o Logisim n o somente realiza automaticamente o nosso m todo de cobertura dos 1s como tamb m capaz de simplificar a express o resultante Vamos agora refazer o somador de 4 bits desta vez usando m dulos importante voc reparar que o Logisim criou o circuito Soma Completa como um sub circuito o que indicado no painel de componentes veja a seta na Figura 99 Para isto d um duplo clique sobre o sub circuito main Voc ver o circuito main vazio Agora d um clique sobre o sub circuito Soma Completa no painel de componentes dirija o mouse para o painel de desenho e d outro clique na posi o onde voc deseja colocar o primeiro sub circuito de Soma Completa Este sub circuito aparece agora como um bloquinho sem detalhes internos com pequenos pontos marcando seus pinos de entrada e sa da Passe com o mouse sobre essas entradas e sa das o Logisim indica o nome de cada uma delas Circuitos Combinatorios 73 Figura 100 Colocando um sub circuito de Soma Completa como um bloco no circuito principal Esta tela foi capturada com o
30. m na entrada A da RAM MAR Clk O Zerar o clock do registrador MAR Input 9 Colocar 9 em bin rio 1001 na entrada Input In Clk 1 Copiar no registrador In a entrada Input In Clk 0 Z erar o clock do registrador In Colocar o valor de In no barramento 1 Copiar o valor do barramento no endere o A da RAM _Clk 0 Zerar o clock da mem ria In Bus 0 iberar o barramento Figura 131 Um fluxo de dados realiz vel pelo circuito da Figura 130 ao LOS 7 JmBus 0 liberarobarramento o 8 LOSS Exemplos de fluxos de dados realiz veis com o circuito da Figura 130 s o mostrados na Figura 131 e na Figura 132 Circuitos Sequenciais 3 91 Colocar 15 em bin rio 1111 na entrada Input C Opiar no registrador In a entrada Input n_Clk 0 Zerar o clock do registrador In Colocar o valor de In no barramento Copiar o valor do barramento no registrador MAR e tamb m na entrada A da RAM MAR Clk O Zerar o clock do registrador MAR In Bus 0 Liberar o barramento Colocar o valor da posi o A da mem ria no RAM Bus 1 E barramento Out Clk 1 Copiar o valor do barramento no registrador Out Out Clk 0O Zerar valor do clock do registrador Out RAM Bus 0 Figura 132 Outro exemplo de fluxo de dados realiz vel com o circuito da Figura 130 3 4 Acumuladores e Loops Figura 133 Um registrador acumulador Um registrador pode ser usado como um acumulador como mostrado na Figura 133 Neste arranjo e a entr
31. metade o intervalo que cont m a raiz No c digo mostrado na Figura 390 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 bissecao f a b tol se f continua 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 390 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 391 Repare que e quando f a f m lt 0 afuncaofazb m e quando f b f m lt O afun ofaza m e quando f m 0O afun ofaza meb m 11 Algoritmos Num ricos 237 function r bissecao f a b tol se f continua 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 391 A fun o bissecao A Figura 392 mostra o resultado de um teste da fun o bissecao onde podemos ver o efeito da toler ncia forne
32. nimo do n mero de compara es necess rio para ordenar n elementos v lido para qualquer algoritmo de ordena o por compara es precisamos estabelecer uma rela o entre o n mero de folhas e a profundidade m xima de uma rvore bin ria Figura 406 Uma rvore bin ria de profundidade p tem no maximo2 folhas N o dif cil acreditar que uma rvore bin ria de profundidade p tem no maximo 2 elementos fato ilustrado pela Figura 406 A menor profundidade m xima de uma rvore de decis es associada a um algoritmo de ordena o dada portanto por 2P gt n ou p gt logo n logo 1 log 2 log n Mas gt 4 log gt i uma aproxima o a soma de Riemann pela esquerda com intervalos iguais a 1 para a rea sob a curva da fun o log x entre x 1 ex n como mostra a Figura 407 12 Complexidade de Problemas 246 fog n Figura 407 A soma dos logaritmos dos inteiros de 1 a n a soma de Riemann pela esquerda para log n Podemos ent o escrever n n p gt gt logz i logz x dx xlogz x x nlogo n n 1 i 1 1 Isso prova que o limite inferior para a complexidade de qualquer algoritmo de ordena o por compara es O nlogan 12 2 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 e retornando sua cidade de
33. 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 Erro Fonte de refer ncia n o encontrada n s n o demos um tratamento 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 0 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 de um programa 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 procuraremo
34. 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 exec MenorFator sci n input n while n gt 2 timer p MenorFator n tempoGasto timer Imprime o resultado printf nTempo 8 6fs 6d divis vel por 6d tempoGasto n p if n p then printf PRIMO end n input n end Figura 324 O programa Fatora sce Na Figura 324 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 316 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 325 Tempos para fatorar n meros primos e n o primos Na Figura 325 n s vemos o resultado do experimento Encontrar o menor fator de um n mero primo tomou mais de 3 segundos en
35. ricos n s veremos em seguida express es com outros tipos de valores existem varios outros c digos de formato como d f e ou Ss que iremos explorar em exercicios e em outros exemplos neste texto 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 os valores resultantes das express es na lista s o mapeadas um a um 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 ea express o r2 mapeada no segundo g A Figura 199 mostra uma sa da do programa Eq2g3 sce onde se pode ver o efeito da execu o deste comando Programas Scilab 143 Digite o valor de a 3 Digite o valor de b 4 Digite o valor de c l delta 4 rl 0 3333333 r2 1 As ra zes s o 0 333333 e 1 Figura 199 Uma sa da do programa Eq2g3 sce Vamos agora exercitar nossas novas habilidades fazendo um programa que e Leiao nome do aluno que responde por exemplo Jos e Leiatamb 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 obt
36. s vamos mostrar como calcular um fatorial fazendo uma multiplica o de cada vez o que provavelmente feito pela implementa o da fun o factorial N s sabemos que n 1 x 2 x X n k e que portanto teremos que realizar repetidas multiplica es para obter o fatorial Sabemos tamb m que 0 1 e que k k 1 xk 7 Loops 165 kagi fata 1 Eat while k lt n fat fat k k 1 k k k 1 fat k 1 end fat k 1 e k ntl portanto fat n Figura 250 C lculo de fatorial utilizando o comando while J temos condi es de compreender o c digo mostrado na Figura 250 que utiliza duas vari veis fat e k O objetivo obter fat tal que fat n O racioc nio empregado se baseia essencialmente no fato de que como poss vel obter o fatorial de k multiplicando por k o fatorial de k 1 e como o fatorial de O igual a 1 podemos obter o fatorial de n por multiplica es sucessivas de 1 por 1 2 n e Como prepara o para a execu o do loop as vari veis k e fat s o inicializadas com o valor 1 e O loop constru do explorando a propriedade fat k 1 que estabelecida pela prepara o do loop dado que k 1 e k 1 0 1 e restabelecida ao t rmino de cada execu o do corpo do loop A vari vel k incrementada de 1 a cada passagem do loop Quando o loop termina temos k n 1 ecomo fat k 1 temosem fat o v
37. strPost Strs seg s ene for 1 1 length seq s s Strs seq i end endfunction Figura 427 A funcao strPost 12 Complexidade de Problemas 256 A Figura 427 mostra a fun o strPost que constr i a concatena o dos strings em uma sequ ncia de domin s function s Sucessor r nTypes retorna o sucessor da sequ ncia r VaiUm 1 for i length r 1 1 1f VaiUm gt O then 1f r i lt nTypes then r i r i 1 VaiUm O else r i 1 end end end if VaiUm 1 then s 1 r else S r end endfunction Figura 428 A fun o Sucessor A fun o Sucessor Figura 428 gera a partir de uma seq 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 seq ncia A Figura 429 mostra alguns exemplos de uso desta fun o gt Sucessor 3 1 gt Sucessor 2 3 1 3 ans 2 3 e gt Sucessor 3 3 3 3 ans 1 La 1 L Figura 429 Exemplos de uso da fun o Sucessor Finalmente temos a fun o WritePostSolution Figura 430 que imprime na tela a solu o encontrada em um formato tabular 12 Complexidade de Problemas 257 function WritePostSolution seq Up Down printf inSolu o s n strPost Up seq for i 1 length seq printf 35d seq 1 end printf n for 1 1 length seq printf 35s Up seq i end printf n for
38. x for i 1 length x for j 1 length y z 1 j sin x 1 cos y J end end curFig scf 3 plot3dl x y z cmap curFig color map curFig color map autumncolormap 64 xtitle f x y seno x cos y Eixo x Eixo y Eixo z Figura 237 Exemplo de uso de plot3d1 com mapa de cores 6 Matrizes 159 Ty senok cos iv Figura 238 f x y seno x cos y com plot3d1 e mapa de cores Al m do autumncolormap o Scilab oferece v rios outros mapas que associam valores a cores Para descobri los bata help colormap na console do Scilab A janela gr fica permite tamb m que voc gire o gr fico com o mouse conseguindo outras vis es de seus dados O gr fico abaixo foi obtido utilizando este recurso de rota o fixa seno cost Eixo z Figura 239 Rota o do gr fico da Figura 238 Estes s o exemplos simples mas que podem ser teis em c lculo e outras disciplinas Existem infinitas combina es de muitos e muitos par metros que alteram a forma dos gr ficos que voc pode pesquisar e experimentar no Scilab 6 6 Matrizes de Strings Matrizes podem ter strings como valores de seus elementos como mostram os exemplos na Figura 240 6 Matrizes 160 s1 s2 Isl s2 1 gt b s1 Es 21 b Isl Is2 Figura 240 Exemplos de matrizes de strings Diversas fun es oferecidas pelo Scilab t m vetores de strings como resultado como a fun o toke
39. 0 0 o 000000 8768 004130 Ss 6 2 oOo oo oo 0 0 0 0 0 0 0 0 0 0 0 000 00060 640 UA ale z2 E lo o 0 0 0 0 0 0 0 o o 0 0 0 0 0 00 00 ofajo wea2 oeme ov 2B setun Be 5 0 00 0 0 0 0 0 q 0 0 6 0 0 o 0600 000606 nowise AGUDO 3 w a ADO a 1 16 6 0 0 9 0 0 0 0 q 0 0 0 0 0 00 000 00000 11534941 600005 ms 25 E 0 0 0 0 0 o 0 0 0 o 0 o 0 o 0 o o 000000 0 1 1 000001 NAS EX jo 0 oo 0 9 o o 0 0 0 o 6 0 0 o e 6 6 6 6 6 1 65 mone 2 6 2 p Fetch T vo 0 0 o 0 0 0 0 0 0 0 0 0 60 FO 0006 631486 DOG JM Mm COMPAPE per Geperand 1 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000 1594941 800005 Da E jo o 0 0 0 0 0 0 0 o 0 o 0 0 0 o 0 000000 0 1 1 000001 s Em go jo o 0 0 o 0 0 0 0 0 0 o 0 0 0 o 0 0000 gogr 20005 BEN Fetch rT vo 0 0 0 o 0 0 o q 0 o 0 o 0 o 0 00000 o jesse 000000 320 RI ZEE je 5 o 0 0 o 0 0 0 o 0 0 0 o 0 o 0 00000000 11534941 G00005 w232 9 op 1 EEE o 0 0 0 0 0 0 0 0 0 000 000006 155009 D00021 3 2 u jo o 0 0 0 o 0 o 0 J o o o 0 o 0 0 200000 0 1 1 0001 020 6 0 jo o 0 0 0 o 0 0 0 0 0 0 0 0 0 20000 0 1 35 000 1 4 EX jo o0 0 0 0 0 HEHA 072 0 0 0 o 0 o 0 0 00000009 S472 060m0 42 25 37 0 0 00 o TE 0 nw 0 E 0 o 0 0 0 0 E 100000 384 04800 EB Fetch EE vo 0 0 0 0 0 0 0 0 0 0 o 0 0 0 0000000090 363438 O00009 7 34 nd 1 je 5 0 0 0 0 0 0 0 o 0 o o 0 0 0 000000060 1534341 B00006 45 m 4 E o o oo 0 0 0 0 0 0 0 0 0 0 0 0600 6006 611 wes wom em 4 0 jo 0 0 0 0 0 0 0 0 o 0 0 o o 0 0 00 000 0 1 3073
40. 000 47 2A 42 Ferch Ga vo 100 0 9 0 0 0 0 0 0 o 0 0 0 0 000 000006 DENSE DONO 92494 JMP 1 17 Bit 100 0 0 0 0 0 0 0 0 o 0 0 0 000 00000 12059653 44 O 4 Fetch Bo Off 10 0 0 0 0 6 0 0 0 0 0 6 6 0 0600600 de ers es O O 45 JMP EE 8 BU oo 0 0 0 0 0 0 0 0 0 0 000 000600 8795 5 4 Fetch ER vo Jo 0 0 0 0 0 0 0 0 0 0 6 0 000 60006 0 de _ E aes ne QF 4 UMP 1 3 10 0 0 0 0 0 0 0 0 0 0 0 0 0 660060086 27 Sw 4 Fetch Ba ivo Jo 0 0 E 0 o 0 0 0 0 o 0 6 0 6 0 60086 d khali GOGO0O an 4 oo 0 0 0 0 0 0 0 0 0 0 0 0 0 o o o o of je 00o 2 000020 SB rw Gepeng 1 jle of jo o 0 0 0 0 0 0 o 0 0 0 o0 0 0000000 o ns uai a sm s Io o 0 0 o 0 0 0 0 0 o 0 0 0 o o 000000 0 1 0001 su R 0 jo o 0 0 0 0 0 0 0 0 0 0 o 0 o 06 0000 OLY o rose 459 ch Ba OTF 10 0 0 0 0 0 0 0 q 0 0 0 0 6060606000680 3486 O00000 4 3 amp OUTPUT etOperana 1 6 5 10 0 0 0 0 0 0 0 o 0 o 0 q 0 00000 00 154941 800005 QutLoop meu ull TA HH eos 1 0 0 9 0 0 o o o o 0 o 0 0 000 00006 9 MESDIIS E00037 e d A A D A da d f a i D as Microinstructions 4 Microprogram Instructions SumX ReadX SearchX Aux 99 i m Figura 479 A planilha MicroProgram O valor em decimal da micro instru o igual soma e do campo Type multiplicado por 27 Ap ndice A A CPU Pipoca 297 e do campo OpCode DEC multiplicado por 2 e docampo mOperand e das pot ncias de 2 correspondentes a cada sinal igual a 1 na microinstru o De
41. 103 CS aos Sinais 0000000 D0100100 0 0 0 0 0 0 0 0 ACC Clear h ACC Clk 0006 800002 j l r 0007 002000 a ACC_Bus 0008 Compare_Clk 0009 Out Clk Subtract DR Clk Literal Literal E 0002 0000000 aon 00000040 E Literal DR Bus RAM _ Clk RAM Bus MAR _ Clk In_Clk In_Bus Literal_ Bus Figura 147 Unidade de controle da CPU 0 A Figura 147 mostra os detalhes internos da unidade de controle da CPU 0 Voc deve reparar que a unidade de controle possui registradores de sinais e de literal que armazenam os bits fornecidos pelas sa das de mesmo nome uma mem ria que armazena o programa a micro instru o corrente o conte do da posi o de endere o PC que colocada na sa da D da mem ria um circuito de temporiza o T similar ao que j vimos na Figura 139 e que ao longo do tempo fornece os sinais t0 e tl conforme mostrado na Figura 140 alguns LEDs sem participa o na l gica do circuito mas que ajudam no acompanhamento visual da simula o atrav s dos sinais fornecidos pelo circuito de temporiza o que o ciclo de execu o de micro instru es implantado na CPU 0 o sinal t0 atualiza o valor do PC o sinal tl faz com que ou o registrador Sinais ou o registrador Oper copie sua entrada com a escolha dentre estes dois sendo determinada pelo bit 23 da micro instru o corrente Muito bem j temos um circuito que exe
42. 118 Um multiplexador de 2 bits obtido usando multiplexadores de 1 bit A Figura 119 mostra o circuito demultiplexador de 1 bit obtido a partir da tabela da verdade da Figura 116 Circuitos Combinatorios 83 Figura 119 Circuito demultiplexador de 1 bit Demultiplexadores com uma largura de endereco numero de bits de endereco maior tamb m podem ser obtidos com arranjos hier rquicos similares como mostra a Figura 120 Figura 120 Circuito demultiplexador de 2 bits obtido a partir de demultiplexadores de 1 bit Um decodificador um circuito com n entradas de 1 bit e 2 sa das de 1 bit Destas uma e apenas uma ter o valor 1 aquela cujo endere o a decodifica o do valor codificado como bin rio sem sinal nas entradas Um decodificador pode ser obtido usando um demultiplexador como mostra a Figura 121 Figura 121 Decodificador de 3 bits Circuitos Sequenciais 84 3 Circuitos Sequenciais N s vimos que circuitos combinat rios podem com arranjos adequados fazer opera es aritm ticas ou compara es com operandos de 32 ou 64 bits Mas seria poss vel construir um circuito combinat rio para realizar a soma de digamos um milh o de parcelas de 32 bits cada Teoricamente sim mas na pr tica isso n o feito n o somente por dificuldades t cnicas mas tamb m porque muito mais simples realizar esta soma parcela por parcela acumulando resultados parciais em alguma mem ria Para isso s o ut
43. 24 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 352 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 00 N ta No 5 6 60 82 85 92 5 55 56 57 81 10 5 6 55 56 57 60 81 82 85 92 Figura 352 Exemplo de ordena o por intercala o com n 10 O c digo da fun o MergeSort est mostrado na Figura 353 Voc deve reparar que o 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 10 Ordena o 217 function sA MergeSort A if length A lt 1 then sA A else m int 1 length A 2 sA Merge MergeSort A l m MergeSort A m 1 length A end endfunction Figura 353 A fun o MergeSort A codifica o da fun o Merge Figura 354 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
44. 37 1 lt 2 2 37 1 lt 3 gt 3 2 3 lt 2 3 2 2 lt 3 gt E 2 3 Figura 401 rvore de decis es para o algoritmo da bolha 2 gt 3 2 2 gt 2 lt 2 gt 2 2 gt 222 Ez AA a A 1 lt 3 gt 1 1 gt 1 gt 1 a 2 lt 3 gt 2 2 gt 2 gt 2 gt 1 1 gt 1 lt 1 91 35 1 gt 3 2 1 2 3 1 1 lt 3 gt 1 1 1 gt 1 L 3 2 2 gt 3 lil 1 lt 1 gt 13 4 2 gt 1 gt 2 2 gt 2 lt 2 997 1 gt 3 ___________ 32 2 lt 3 2 22 2 gt ofr 28 Figura 402 rvore de decis es para o Quicksort 12 Complexidade de Problemas 244 A Figura 401 mostra uma rvore de decis es para o algoritmo da Bolha e a Figura 402 para o Quicksort N s podemos ver que o algoritmo da Bolha faz no m nimo 2 e no m ximo 4 compara es para ordenar 3 elementos e que o Quicksort faz no m nimo 4 e no m ximo 6 compara es para ordenar os mesmos 3 elementos isso mesmo o Quicksort tem um comportamento sofr vel para a ordena o de vetores pequenos n elementos Figura 403 rvore de decis es para um algoritmo arbitr rio de ordena o por compara es O termo rvore usado em Ci ncia da Computa o para designar estruturas hier rquicas rvores s o compostas por n s o n no ponto mais alto da hierarquia a raiz da rvore Parentescos s o usados para designar rela es definidas por uma rvore os n s imediatamente abaixo de um dado n s o s
45. 86 Flip flops podem ser agrupados formando registradores que sao conjuntos de flip flops com alguma miss o em comum A Figura 124 mostra um registrador de 4 bits cuja fun o similar de um nico flip flop mas com capacidade para armazenamento de 4 bits Ele composto por flip flops do tipo D e podemos reparar na figura 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 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 Mem ria a esa z LI J gt Logisim main de Sem titulo Arquivo Editar Projeto Simular Janela Ajuda bik A S gt DD As io m Mem ria A 7 D Flip Flop tipo D Flip Flop tipo T Flip Flop tipo JK Flip Flop tipo SR Registrador HE Contador a gt gt gt Registrador de deslocamento tia Gerador de valor aleat rio Pad RAM ROM Gb Entradalca da ax A o Registrador Bits de dados 8 Gatilho Borda de subida R tulo Fonte do r tulo SansSerif Normal 12
46. EA ad dea 210 TO Selecao e O asea ad Dada aa a 210 10 2 Intercal cao MEerseSOR ausiasatissnea na a a A alien as Iate 215 103 Pari cao QUICK S ONE assadas saga a SS Sp atalino 219 104 Dimo r para Conquistar sussa ss Si a oa 225 105 Ordenacao por Radical aspas saia nescas aa a O OS de 225 11 AlSoORtmos NUMEROS ranea ac sas casniotvaieninsua ANA 228 LI Integra o pot Trapezios uia sos RaR Gia OLA ONDA GU REGE NO DADE SA GRECO LADEN EDS aaa 228 112 IBISSE O sis Ss LO SOS ee Sd 232 11 3 S rie de Taylor para exp x e Cancelamento Catastr fico ccesccccceeeeseeeeeeeeeees 237 12 Complexidade de ProblemMaS sesesesessrsesereressrrerereressrrerereressrrerereressererereresserersreresseeee 242 121 Complexidade da ORdCNA O sis casi gatas nn ieee idea ase aS aS 242 12 2 Problemas NP completos O Problema do Caixeiro Viajante ccccceesecceeeseeeeeeees 246 12 3 Problemas indecidiveis O Problema da Correspond ncia de Post 253 13 Proximos Pass O innne a E E a E a 260 indice Rem SS IVO oscar N 264 REFERENCIAS CIO Apa AO O O A ARS A ia 267 Apendi cCA A CPU PIPOCA denni a espero ut ss dna e O e esa Di 271 A 1 CICIO COINS Ul WCAC psi do andas Dad DO das ad a dA eae 272 NASI sists ati hhc aaah aes eel pa nares te gta Narn a 274 2 Programacao em AssembICr as alsigas Lana lada Sp 276 3 Montagem do Programa Executavel usinas a R ES 278 4 O Circuito Principal da CPU Pipoca
47. Entscheidungsproblem Proceedings of the London Mathematical Society s2 42 n 1 1937 230 265 Computadores e Informa o 16 armazenamento externo suficiente capaz de rodar um programa de previs o meteorol gica para saber como estar o tempo no dia seguinte mas poss vel que ele gaste mais do que um dia nessa tarefa o que anularia completamente o valor da informa o produzida Da mesma forma se um computador deve produzir informa o para ser exibida como um filme uma velocidade abaixo da necess ria torna inaceit vel o seu emprego W United States EE China F Japan E United Kingdom B France E Germany E Canada WW Russia Figura 6 Participa o de pa ses em pot ncia computacional na lista dos 500 maiores extra do de Top500 A rela o entre velocidade de produ o de informa o e seu valor se manifesta com bastante clareza na lista dos pa ses com maior pot ncia computacional instalada mostrada na Figura 6 System 64 Racks 64x32x32 Node Card 32 chips 4x4x2 16 compute 0 2 10 cards 180 360 TF s 32 TB 2 8 5 6 TFis 512 GB Compute Card chips 1x2x1 ade 90 180 GFis Chip 16 GB 2 processors lt gt 5 6 11 2 GFis 1 0 GB 2 8 5 6 GFis 4 MB Figura 7 O Blue Gene e seus modulos sub m dulos sub sub m dulos A Figura 7 nos permite entender melhor a estrutura do Blue Gene e O sistema completo tem 64 racks pequenas torres que
48. KERNEL D CONS PHY ADRS PP CPU DISPLAY REGISTER ENADLE SIN LOAD exam DEP con s s HALT E 10 9 8 7 6 5 4 3 2 1 0 ADAS Wwe E vo on ud 2 20 19 8 ty en DS Mm n a Figura 149 Painel de um PDP11 70 de 1975 Nem sempre foi assim Quando ainda n o existiam mem rias ROM o loader primitivo era carregado palavra por palavra atrav s do painel do computador Como voc pode ver na Figura 149 o painel continha uma s rie de chaves cujo posicionamento ligava ou desligava um bit e bot es para carregar o registrador de endere o ou o conte do de uma posi o de mem ria com os bits definidos pelas chaves N o era necess rio fazer isso a cada vez que se ligava o computador a mem ria principal daquele tempo utilizava n cleos de ferrite e n o era vol til Reservavam se algumas posi es de mem ria para conter o loader e a carga atrav s do painel s era necess ria quando por um erro de programa o algu m escrevia sobre essas posi es da mem ria E cpu o n DER File Edit Format View Help BDO001 OAO O O02400 cod calo Figura 150 Arquivo com mapa de mem ria usado pelo Logisim Aqui n s n o trabalhamos com mem rias reais e sim com mem rias simuladas pelo Logisim Isso nos permite escrever diretamente valores para posi es de mem ria ou ler de um 39 File Pdp 11 70 panel jpg Wikipedia the free encyclopedia acessado 2 de setembro de 2011 http
49. 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 utilizando 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 Fetch 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 gt w mn e ol Address Figura 471 Micro c digo para fetch de instru o A Figura 471 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 Ap ndice A A CPU Pipoca 293 Comments Sa da do DR vai para Dbus ACC copia sa da da ALU Fetch da pr xima instru o sx Lu EE o D ne 19 1A 1B 41 65 SUB jsr GetOperand Resolve ender
50. N A 7 ee ao IE g zis Ec lies g amp s a9 88 amp E E i zna Ez Sis Ss S 3 A HE BE DE 22 E ie 4 Elo o lt z 5 0 0 0 0 0 E 0 00200 su 0 lo o o 0 0 5 E o o o ODLO Bla 2 0 0 0 0 0 0 0 0 o o of 0 0 0 00 25088 00620 803 70 0 0 0 0 0 0 o o ows o 0 0 o 20 vo 2048 09030 5 ww 4 1 0 0 0 0 0 0 0 o 0 0 0 0 0 00600606 o Hews do 10 0 5 GrtOperand ER emede 11 13 0 0 0 0 0 0 0 q 0 0 0 0 00 000 00006 892905 80000 06 6 pOFEC Dire ER 2 2 0 0 0 o 0 o 0 o o 0 o 0 o 09 00000000 9497136 so000c mm meta IRI ac T hdrest ER 3 N o 0 q 0 0 0 0 0 0 0 0 0 0 000000600 9961489 30001 5 q 8 Ge ope and T j 5 0 0 0 0 0 0 0 0 0 0 000 6 00 6 0 1468575 ANOS a 3a oo 0 0 0 o 0 o o 0 0 o 0 0 0 00000000 4096 001000 5 04 w EX lo o 0 0 o 0 0 0 0 0 0 0 0 o o 000 0 0 of o 4098 oime EO TO sem Ba 5 0 o 0 0 0 0 0 0 0 0 0 0 0 060060066 O RE I7 0C t Quest E jo o 0 0 0 0 0 0 0 0 0 0 0 o 09 000000604 4036 001000 tf 00 13 lo 0 0 0 0 0 0 0 o o o o 0 0 2000000 4430 aoned ceu 0 oo oo 0 0 0 0 0 0 i 0 0 0 0 0 000 00000 1640 04 Dif 6 E 0 o0 0 0 0 9 0 0 o o LE J o 0 0 q 00000 oE o Hes 04K E S setum T 6 0 00 9 0 0 0 0 q 0 0 0 000 0005606 NONO Aswi Zn OW iniret o jo o 0 0 0 0 0 0 0 0 0 E o 0 0 0 00000000 4036 00 a nv 8 jo 0 0 0 0 o 0 o 0 o o o 0 q 2000000 4430 aoned a ve E o o 00 0 0 0 0 0 0 0 0 0 0 0 00000060 640 04m0 sum 0 jo o 0 0 0 0 0 0 0 J o o
51. Na Figura 287 voc pode ver o efeito destas t cnicas sobre o gr fico 7 13 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 executar plot 2d x y Por exemplo a sequ ncia de comandos executados na console do Scilab gt x 123421 gt y 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 288 7 Loops 182 0 1 2 3 4 5 6 Figura 288 Um pol gono Se quisermos acrescentar outro pol gono podemos fazer gt w 4 5 5 4 0 5 0 5 1 5 0 512 gt plot2d w z V N ll obtendo o grafico mostrado na Figura 289 A 0 1 2 3 4 5 6 Figura 289 Dois poligonos Repare que foram utilizados dois pares de vetores um para cada poligono 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 com a exibi o feita por um nico comando plot2d preciso entretanto encontrar um meio de informar ao Scilab quais s o os pontos que separam dois pol gonos Isto porque se fizermos gt X x w gt Y y z gt plot2d X Y rect 0 0 6 6 vamos obter o desenho da Figura 290 onde o ponto final do prime
52. a 1 a micro instru o de desvio A pr xima micro instru o a ser executada aquela armazenada no endere o codificado nos 16 bits menos significativos e Seo bit 22 for iguala 1 a micro instru o cont m um valor literal codificado como na CPU 0 nos 16 bits menos significativos e Seos bits 22 e 23 forem iguais a zero temos uma micro instru o de sinais e Os bits 22 e 23 nunca devem ser ambos iguais a 1 em uma micro instru o Sinais Mem ria de Programa 0000 0001 800001 0002 002000 Figura 153 Unidade de controle da CPU 1 com destaque para a conex o do registrador de operando com o contador de programa e para a decis o de desvio indicada pelo bit 22 da micro instru o corrente 4 Processadores 108 Para alterar o ciclo de micro instru o n s temos que modificar a unidade de controle e o contador de programa da CPU 0 Na Figura 153 n s vemos a unidade de controle da CPU 1 onde voc deve atentar para as seguintes modifica es e O contador de programa tem duas entradas adicionais Uma delas est conectada ao registrador Oper e recebe o endere o para um poss vel desvio A outra entrada est conectada ao bit 23 do registrador de micro instru o que como vimos indica se a micro instru o corrente de desvio e O registrador Oper usado para armazenar o endere o de desvio e O registrador Sinais zerado se o bit 22 ou o bit 23 da micro instru o corrente for igual a O
53. 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 40 John W Backus et al Preliminary Report Specifications for the IBM Mathematical FORmula TRANSlating System FORTRAN Computer History Museum 1954 http www computerhistory org collections accession 102679231 Ibidem Programas Scilab 119 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 i k al gat i 14 as i 0 Le i Fs Er Tj PrE 7 mar i rafy F l MY 6 hi HE kl aT F H r LP Tam m ine Teseoren Urg j 5 T an pn m um i 3 a Ee pis LEA GIP OVI So 7 Ex Ki i z a F Ens E gs z a PFU ag a ii h eti wee us reaS Machines LOFrTOFATLH at a PETI ae is LB ph n i soeciilestions tor LA p 7 TRF ha ae Pa a mr a PTE Ae ag lps p i E SON alttematica Formula Saas E DE ap SLOT Fo i qt Lr iae k ee ae La ESA im a eee Figura 166 Fac s mile do relat rio de especifica o da linguagem FORTRAN Outras linguagens importantes que s o sucessoras diretas de Fortran s o e Cobol usada em aplica es comerciais desde 1959 e alinguagem C de 1971 que pode produzir programas extremamente eficientes e C suced nea de Ce que orientada a objetos isto permite a defini o de
54. 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 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 354 A fun o Merge 10 Ordenacao 218 f cil ver que o numero 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 355 JHAAAACA HAACAANE 0 12 23597 73 9 2 1183036 02 M2 26 30 33 54 9 Nn 2 Figura 355 Passos para ordena o por intercala o 16 passos 16 passos 16 16 passos fl 6 16 passos i Ali vemos o processo ilustrado para um vetor cujo taman
55. c at tb c a b c ab a b a Voc pode demonstrar as propriedades acima simplesmente calculando as express es para todos os valores poss veis para as vari veis envolvidas Duas express es equivalentes podem levar a circuitos equivalentes funcionalmente mas com custos e desempenho distintos como mostra a Figura 59 A simplifica o de express es booleanas portanto uma rea da mais alta import ncia mas que foge do nosso escopo Circuitos Combinatorios 50 Figura 59 Dois circuitos funcionalmente equivalentes Repare na conven o utilizada nos diagramas de circuito Dois fios que se cruzam est o em contato el trico somente se sua interse o for uma bolinha sem esta bolinha os fios se cruzam no desenho mas n o est o em contato 2 3 Portas L gicas e Transistores Portas l gicas podem ser implantadas usando transistores que s o a base para a constru o de circuitos compactos e r pidos Por um lado a tecnologia de 2011 permite colocar 2 6 bilh es de transistores em um chip de 1 6 mm de lado e por outro o tempo de rea o de um desses transistores a mudan as em suas entradas muito pequeno da ordem de nano segundos 107 segundos ou mesmo de pico segundos 10712 segundos Circuitos Combinatorios 2 600 000 000 1 000 000 000 100 000 000 curve shows transistor S 10 000 000 count doubling every two years i J 2 1 000 000 PV Cc Fa w awaa 100 000 aa ARIO0 Fi ff BE ROBES
56. 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 gr ficos 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 nos limites de cada sub intervalo cono mostrado na Figura 377 11 Algoritmos Num ricos 231 rea do sub intervalo A FX T x 4 2 0 9 0 38 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 0 0 0 4 0 2 0 3 0 4 0 5 0 6 0 7 i 0 8 0 9 1 0 Xin Figura 377 Aproxima o por trap zios A soma das reas dos trap zios dada por fe IC fO2d fO Cn DIC FG f Cnet y 2 2 x 2 2 dio f x2 f 3 ee f Xn ES FED fen rao A A Ax Uma fun o que calcula uma integral por trap zios est mostrada na Figura 378 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 Os comandos abaixo desenham um grafico 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 378 Fun o para aprox
57. cada coluna de M 6 Matrizes 157 gt x linspace 0 3 pi 101 gt plot2d x sin x sin 2 x sin 3 x Figura 233 Grafico com varias curvas obtido com plot2d A Figura 233 mostra um gr fico obtido dessa forma Repare que o vetor x um vetor coluna e que como na Figura 227 a matriz cujas colunas s o mostradas no gr fico constru da por justaposi o dos vetores coluna sin x sin 2 x esin 3 x 6 5 Gr ficos 3D Gr ficos tridimensionais podem ser produzidos no Scilab de muitas maneiras o comando mais b sico o plot3d Em sua forma mais simples preciso gerar um vetor x outro vetor y e um valor para z para cada par x i y i Por exemplo a execu o do programa da Figura 234 gera o gr fico da Figura 235 x linspace 2 pi 2 pi 90 y X for i 1 length x for j 1 length y z i sin x i cos y j end end plot3d x y Z Figura 234 Exemplo de uso de plot3d Figura 235 f x y seno x cos y Se substituirmos a fun o por z i j 10 x i 2 y 4 2 por exemplo vamos obter o grafico da Figura 236 6 Matrizes 158 Figura 236 f x y 10 x y Graficos mais coloridos s o obtidos com a fun o plot3d1 que permite tamb m a altera o do mapa de cores Veja o exemplo do programa da Figura 237 que voc n o precisa entender em detalhes para modific lo conforme seu interesse clear x linspace 2 pi 2 pi 60 yY
58. calculadora ou em destaque entradas de valores literais necess rios para essa computa o Na nota o utilizada ACC Clear 1 por exemplo significa fazer a entrada ACC Clear igual a 1 Input 3 significa colocar 3 em bin rio 11 na entrada Input Essas tabelas de a es funcionam como um programa a ser executado por uma pessoa utilizando a calculadora Circuitos Sequenciais 94 Sinal Coment rios ACC Clear 1 ACC Clear 0 1 Input 1 In Clk 1 In Clk 0 RE DESA Carrega no acumulador o conte do da posi o 1 da RAM MAR Clk 0 Soma ao acumulador o conte do da posi o 2 da RAM Figura 136 Sinais de controle e em destaque entrada dos valores literais 1 e 2 para as etapas 1 e 2 Armazena o conte do do MAR Clk 0 acumulador na posi o 3 da RAM Figura 137 Sinais de controle e entrada de valor literal 3 para a etapa 3 O momento de escrita do programa diferente do momento de sua execu o e podemos distinguir entre valores que s o conhecidos no momento da programa o como os endere os 1 2 e 3 e valores que s ser o conhecidos no momento da execu o do programa como os conte dos das posi es 1 e 2 da mem ria N s chamamos valores j conhecidos no momento da programa o de valores literais ou simplesmente literais 3 6 Clocks N s vamos agora introduzir um novo tipo de circuito digital completando os ingredientes que como veremos no pr ximo m dulo nos permitir o transforma
59. ccccsssccsosssscscossvecconsvsctessscnecsssessousvestenessenenes 279 5 JO Contador de PROCLAMA aoea EE EEA 283 6 AUnidade qe CONtrOle ceiien E A 283 7 JO Cielo de MICro INSIRU O xs acata sinais ees as ad SUA ana cutee Rd Soak 287 o OVICKO PrOSl Ani as passa ii rea eia Sao TO eai ECA Ega D a CD Cb ea 292 9 A Platte PIpPoca Sesi AS ag Sab praia 295 Conteudo Prefacio Prefacio 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 alguns anos antes da cria o do departamento Seu c digo DCC001 o que da uma ideia 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 dado 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 v deos e outros materiais O enfoque adotado apresenta algumas caracter sticas que o distinguem da forma tradicional como 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
60. com isso fornece um c digo para cada uma delas o campo OpCode2 cont m os mesmos valores de OpCode10 mas codificados em bin rio de 4 bits destinados ao uso por computadores O campo BranchTable16 ser explicado mais tarde Voltando Figura 444 os dois bits do modo de endere amento modificam a interpreta o do campo de operando conforme a Tabela 6 Ap ndice A A CPU Pipoca 276 Tabela 6 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 Soma 7 ao ADD Imediato 7 acumulador Soma 23 ao acumulador Soma 41 ao ADD Indireto 7 acumulador ADD Direto Figura 445 Modos de endere amento Supondo que em um dado instante a posi 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 c
61. comum de programa o a utiliza o da chamada de uma fun o antes do desenvolvimento da pr pria fun o t cnica conhecida como desenvolvimento top down Em alguns momentos 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 Construir um programa que leia uma s rie de dados fa a alguma coisa com eles e termine conforme o desejo do usu rio uma id ia 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 313 n input n use n lt 2 se quiser parar while n gt 2 Encontra o menor primo gt n e imprime o resultado
62. concluir que p primo function p MenorFator2 n limite int sgrt n p 2 while modulo n p lt gt O amp p lt limite p p 1 end if modulo n p lt gt 0 then p Nn end endfunction Figura 330 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 primo 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 9 Algoritmos Pesquisa 205 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 segund
63. cs dartmouth edu mckeeman references matlab101 matlab101 html Bryant R E K Sutner e M J Stehlik Introductory Computer Science Education at Carnegie Mellon University A Deans Perspective Tech Report CMU CS 10 140 Carnegie Mellon University Pittsburgh 2010 http link cs cmu edu article php 2010 Burch Carl Logisim Acessado 20 de agosto de 2011 http ozark hendrix edu burch logisim Logisim a graphical tool for designing and simulating logic circuits Acessado 7 de marco de 2011 http ozark hendrix edu burch logisim Chizmar Jack The Effective Teaching and Learning Network training course and information for teachers TQM and Classroom Research Acessado 7 de marco de 2011 http www etin org uk resources page16 html Claude Shannon Wikipedia the free encyclopedia Acessado 19 de agosto de 2011 http en wikipedia org wiki Claude_Shannon Computer History Museum Timeline of Computer History Acessado 16 de fevereiro de 2012 http www computerhistory org timeline year 1946 Refer ncias 269 Download PSPad free unicode developer editor handles near any syntax like HTML PHP XHTML JavaScript ASP Perl C and many other languages with HEX editor multilanguage interface Acessado 6 de marco de 2013 http www pspad com en download php ENIAC Wikipedia the free encyclopedia Acessado 16 de fevereiro de 2012 http en wikiped
64. cuja sa da uma das parcelas de um circuito de soma cuja sa da realimenta a entrada do registrador A outra parcela da soma sempre igual a 1 o que produz o efeito que desejamos para a execu o das micro instru es em sequ ncia a cada subida do clock o valor do PC incrementado de 1 O circuito possui tamb m uma entrada Reset que zera o PC 38 bigbluesky2002 YouTube Swiss Antique Music Box acessado 1 de abril de 2011 http www youtube com watch v tZWt1X300g8 amp p 66A384A130BODCE4 4 Processadores 101 4 2 CPU 0 Um Primeiro Processador Dominado o problema da emiss o dos sinais de controle vamos agora ver como eliminar a necessidade de interven o do operador Logisim tamb m na entrada de valores literais endere os da mem ria valores a serem adicionados ou carregados no acumulador etc N s queremos agora permitir que literais possam ser especificados no programa e que seus valores sejam fornecidos pela unidade de controle ex calculadora nos momentos adequados Figura 145 Codifica o de operandos em micro instru es A Figura 145 mostra uma forma de se codificar valores literais em micro instru es Por motivos de ordem pr tica n s adotamos micro instru es de 24 bits Para indicar que uma micro instru o codifica um valor literal n s vamos utilizar o bit 23 o mais significativo Se este bit for igual a O os bits restantes s o interpretados como sinais de controle se for ig
65. de 10712 para r1 e 10713 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 Programas Scilab gt a r1 2 b rl Programas Scilab 132 Muito bem conseguimos usar o Scilab para resolver uma equa o de 22 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 178 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 ocasi o para erros com pouco aproveitamento do trabalho j feito A solu o para isso usar o Scilab como um interpretador de programas 5 5 Programas Scilab Um programa fonte Scilab um arquivo texto cujo nome tem a termina o sce Um arquivo programa cont m comandos Scilab e constru do usando o editor SciNotes veja na Figura 181 como o editor aberto no Scilab 5 1 A execu o interpreta o de um programa se faz seguindo o menu Executar da console do SciNotes essa execu o equivale digita o na console dos comandos presentes no arquivo Arquivo Editar Controle Aplicat
66. digital Flexible Diaphram Diaphram NS Support Moving Coil wound onto a former Sound Waves Electrical Leads Electrical Signal Output Figura 15 Um microfone converte ondas de press o do ar em impulsos el tricos Um exemplo destes dispositivos um microfone que transforma sons em impulsos el tricos Como mostra o esquema na Figura 15 as ondas de press o no ar que constituem o som fazem o diafragma vibrar arrastando consigo um cabo enrolado em solen ide Este cabo se move em um campo magn tico gerando sinais el tricos proporcionais deforma o do diafragma O sinal el trico produzido pelo microfone pode ent o ser acoplado a um dispositivo de convers o an logo digital Um alto falante tem funcionamento similar um impulso el trico de entrada aplicado sobre um cabo enrolado em solenoide o que gera um campo magn tico que faz mover uma membrana que gera ondas de press o no ar que constituem o som emitido 22 Sound Transducer acessado 2 de agosto de 2011 http www electronics tutorials ws io io 8 html Computadores e Informacao 24 Figura 16 Um segundo de um sinal analdgico Para digitalizar um sinal de entrada como o da Figura 16 preciso obter amostras de sua amplitude em instantes discretos no tempo e digitalizar obter um valor num rico cada amostra a TAM V Figura 17 Sinal original e amostras feitas 4 vezes por segundo com precis o de 2 bits A Figur
67. e e Efeito que cont m informa es para consumo humano indicando tanto o efeito de cada micro instru o como o efeito acumulado de grupos de micro instru es Os bits marcados no agrupamento de micro instru es constituem uma imagem que deve ser carregada na mem ria de programa da CPU 0 O programa da Figura 148 corresponde exatamente aos sinais de controle e entradas de operandos mostrados na Figura 136 e na Figura 137 sua execu o tem portanto o mesmo efeito somar os conte dos das posi es 1 e 2 da mem ria e colocar o resultado na posi o 3 Constru da a tabela programa os bits das micro instru es devem ser armazenados em alguma m dia e carregados na mem ria de programa do processador Nos computadores atuais a carga de programas feita por um outro programa chamado de carregador ou loader Sim mas como que um loader vai parar na mem ria do computador Nos computadores atuais um loader primitivo gravado pelo fabricante em uma mem ria ROM Read Only Memory e executado no momento em que o computador ligado constituindo a primeira etapa de um procedimento que tem o nome de bootstrap Usando um disco magn tico tipicamente o loader primitivo carrega um outro loader mais sofisticado que por sua vez carrega outro mais sofisticado ainda e isso termina com a carga do sistema operacional O uso normal de programas utiliza um loader do sistema operacional 4 Processadores 105 USER D SUPER D
68. elemento n s j desenvolvemos um loop com fun o parecida veja a Figura 254 que encontra o menor valor presente em um vetor Podemos aproveitar o seu c digo adaptando o aos requisitos que temos agora Precisamos de uma 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 10 Ordena o 213 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 k lowtl high if m gt A k m A k im k end end endfunction Figura 345 A fun o SelecionaMenor Como voc pode reparar na Figura 345 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 grande vantagem de simplificar o contexto de uso da fun o MinimoPos P
69. else m minRight end end endfunction Figura 322 Fun o Minimor recursiva 9 Algoritmos Pesquisa 198 9 Algoritmos Pesquisa 9 1 Defini o e Caracter sticas Um problema de transforma o de informa o descreve uma entrada de informa o e propriedades requeridas de uma informa o de sa da Um algoritmo resolve um problema de transforma o de informa 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 N s lidamos com algoritmos desde o in cio deste texto mas agora vamos dar um tratamento mais formal a este conceito Tr s quest es s o b sicas para a caracteriza o de problemas de transforma o de informa o 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 Especifica es surgem de um processo de an lise de uma necessidade de transforma o de informa
70. 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 Desvia para a micro instru o inicial da jmpNext 0000 hi instru o no registrador IR da CPU Desvia para o operando se o modo de endere amento for Imediato Desvia para o operando se o modo de jmpDIRECT 2 0010 nn 4 enderecamento for Direto A Desvia para o operando se o modo de ImpINDIRECT 3 0011 e 5 endere amento for Indireto Situa o inesperada n o deveria error 0100 6 acontecer Acende um led Desvia para a micro instrucao apontada return 5 0101 i 7 pelo registrador Return Addr Desvia para o operando e armazena o jsr 0110 8 endere o consecutivo no Return Addr Desvia para o operando se D ACC for jmpEQ 7 0111 9 igual al oo Desvia para o operando se D gt ACC for jmpGT 8 1000 10 iguala 1 no ___ Desvia para o operando se D lt ACC for mplT 1002 11 igual a 1 Desvia para o operando mp 10 1010 a l 12 incondicionalmente E ImplnEmpty 1011 Desvia para o operando se InEmpty 1 jmpOutFull 1100 Desvia para o operando se OutFull 1 14 13 1101 15 14 1110 16 15 1111 1 18 E E EES o W MH Microinstructions Microprogram z Ready Figura 478 A planilha Mic
71. entradas de 32 bits cada valores para as entradas a serem testadas o que claramente inexequivel Uma argumenta o baseada na estrutura do somador o que nos prov a convic o de sua corre o Se estamos convencidos da corre o de um circuito de soma completa como o mostrado na Figura 92 e estamos pela forma de desenvolvimento a partir da tabela da verdade e se compreendemos a l gica do arranjo em cascata 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 atingivel N o poss vel testar completamente um programa grande 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 100 linhas A convic o de corre o ser fornecida tanto com argumentos estruturais como por testes Para atender a uma mesma especifica o possivel 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 u
72. escrever comandadas por computador eram um perif rico essencial para os operadores Figura 48 Dennis Ritchie em p e Ken Thompson fotografados durante o desenvolvimento do sistema operacional Unix o Linux uma vers o do Unix re escrita por Linus Torvalds e da linguagem C usando um teletipo como terminal de um PDP 11 em 197228 Tendo sido proposto por norte americanos no in cio da era dos computadores n o de se estranhar que no c digo ASCII n o haja provis o para caracteres acentuados ou cedilhas Estes s o contemplados no c digo ASCII estendido que usa 8 bits um byte para representar 256 caracteres O sucessor moderno do c digo ASCII o Unicode um padr o de codifica o capaz de representar caracteres chineses rabes tailandeses enfim de praticamente qualquer conjunto de caracteres das l nguas vivas e mortas do mundo Unicode permite diversas codifica es em bits A codifica o mais importante a mais utilizada na Internet a UTF 8 que utiliza entre 1 e 4 bytes para a representa o de caracteres Os caracteres representados 27 ASCII Wikipedia the free encyclopedia acessado 18 de agosto de 2011 http en wikipedia org wiki ASCII 28 Ken amp Den picture acessado 24 de setembro de 2012 http cm bell labs com cm cs who dmr picture html 29 Unicode Wikipedia the free encyclopedia acessado 19 de agosto de 2011 http en wikipedia org wiki Unicode Circu
73. gt d atx error 4 Undefined variable Figura 172 Usos e erros em comandos de atribui o Conforme ilustrado na Figura 172 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 contera lt vari vel alvo gt em um arranjo similar ao utilizado nos registradores acumuladores a gt a spi a 3 1415927 cos a sqrt b 1 5066283 Figura 173 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 Spi ou e e uma enorme variedade de fun es pr definidas veja a Figura 174 Valores num ricos s o representados no Scilab em ponto flutuante de 64 bits pi forma que temos para em um programa nos referirmos a melhor aproxima o de 7 nessa representa o o mesmo vale para Se e outras constantes 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 Programas Scilab 125 LESTE o Navegador da ajuda 88 A lt lt Equa es Diferenciais Ajuda Scilab Algebra Linear gt gt 4 Po Ajuda Scilab gt gt Fun es Elementares Fun es Elementares Bitwise op
74. indefinidamente seguida _ por boa eee Microinstru o compreende p Microinstru o Microinstru o seguida por Figura 459 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 Ap ndice A A CPU Pipoca 288 l uma microinstru o p da p USA O endere o b mec ED armazenado no i coloca a microinstru o lida no Figura 460 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 d determina novo valor mec para l pode atualizar Signals Figura 461 Execu o de uma micro instru o O mIR tem a interpreta o de sua sa da dependente do tipo da micro instru o or Desvio informa se o tipo for Signals e informa Figura 462 Sa da do registrador mIR O ciclo de micro instru o comandado pelos sinais emitidos pelo circuito Timing Ap ndice A A CPU Pipoca 289 i Ciclo de k conduz Pl Microinstru o CO Clock gt alimenta produz gt G
75. 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 Figura 29 23 Barbara Blackburn the World s Fastest Typist acessado 15 de setembro de 2012 http rcranger mysite syr edu famhist blackburn htm Computadores e Informa o 30 Estamos nos permitindo essa digress o para calcular a velocidade de produ o de informa o por um teclado Considerando que cada toque produz 8 bits um byte a Barbara Blackburn produzia informa o a uma taxa m xima de 160 bps bps bits por segundo Figura 30 Uma camcorder de alta defini o um sensor que produz bits a uma taxa de 24 Mbps Uma c mera de v deo produz bits a taxas muito mais altas Uma camcorder de alta defini o pode gerar 24Mbps ou 24 milh es de bits por segundo Figura 31 Sensores especiais um r dio telesc pio e um acelerador de part culas A ci ncia faz uso de sensores que produzem informa o ainda muito mais rapidamente R dio telesc pios ou aceleradores de part culas podem produzir informa o a taxas de Gbps ou seja bilh es de bits por segundo milh es literalmente de vezes mais r pido do que o recorde mundial de digita o Figura 32 Um atuador especial um bra o mec nico Atuadores comuns s o monitores impr
76. lculo das ra zes de diversas equa es de 20 grau continua St 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 248 Programa para c lculo das ra zes de diversas equa es de 20 grau 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 249 O while s seria interrompido quando x for maior que 10 o que nunca acontecer porque x vale O inicialmente e a cada passo fica ainda menor no Scilab voc pode interromper a execu o de um programa que aparenta estar em loop infinito atrav s do menu Controle Abortar x 0 while x lt 10 printf nx x x 0 2 end Figura 249 Um loop infinito 7 2 Loop para o Calculo de Fatorial Como um segundo exemplo de uso do comando while vamos atacar o problema do 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
77. livre produzido por um cons rcio de organiza es francesas que sem tentar ser um clone segue a mesma filosofia do MatLab A compatibilidade das duas 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 Paulo S rgio da Mota Pires da UFRN Links para esses materiais podem ser encontrados no site Scilab Consortium s d O objetivo da inclus o de conceitos mais sofisticados dar ao aluno no es intuitivas de complexidade e indecidibilidade tornando o capaz de caracterizar a efici ncia de um programa de forma independente da velocidade de processadores e aprendendo a reconhecer problemas cuja solu o por computadores pode demorar muito tempo ou mesmo demorar um tempo n o limitado A abordagem claro muito introdut ria mas falamos de conceitos que constituem pilares da Ci ncia da Computa o N o podemos perder o que frequentemente nossa nica oportunidade de um contato maior com estudantes que n o ter o outras disciplinas da Ci ncia da Computa o Quanto as avalia es frequentes a sua contribui o para a experi ncia de aprendizado consensual Dentre as principais caracter sticas de cursos altamente respeitados levantadas pelo projeto Har
78. mostra o resultado de testes de desempenho realizados com a fun o MergeSort comparado com o desempenho da fun o SelectSort A superioridade do MergeSort gritante e se acentua com o aumento do tamanho do vetor ordenado IdergeSor 60 d s50 o 40 6 da a E an O a E o 20 o o 10 a O 20000 30000 40000 50000 ooog 70000 s0000 s0000 100000 Tamanho Figura 357 Gr fico de desempenho para a fun o MergeSort Na Figura 357 n s vemos n meros de desempenho para o MergeSort obtidos com a ordena o de vetores bem maiores para os quais esperar pelo SelectSort exigiria bastante paci ncia 10 3 Parti o QuickSort Considere um vetor como o da Figura 358 N s dizemos que este vetor est particionado porque sua parte esquerda com ndices de 1 a 4 s cont m valores menores ou iguais a 100 e 10 Ordena o 220 sua parte direita com ndices de 5 a 9 s cont m valores maiores ou iguais a 100 Se ordenarmos cada uma das partes de forma independente o vetor completo estar ordenado pois n o h possibilidade de serem necess rias invers es de ordem entre elementos de diferentes parti es A Figura 359 mostra uma ilustra o gr fica de um vetor particionado 1 2 3 4 5 6 7 8 9 Figura 358 Um vetor particionado Figura 359 Visualiza o de um vetor particionado O m todo que veremos agora para se ordenar um vetor utiliza uma opera o de parti o do vetor segundo um piv que um val
79. mouse sobre a entrada b do sub circuito Para obter exatamente o que est mostrado na Figura 100 ainda ser necess rio usar o painel de atributos para e mudar a posi o do sub circuito para Oeste fazendo com que suas entradas fiquem a direita do bloco e as sa das esquerda o que mais conveniente para o desenho do somador de 4 bits e colocar SC como r tulo compartilhado dos sub circuitos de Soma Completa Circuitos Combinatorios 74 Damme DD ED TT sm Arquivo Editar Projeto Simular Janela Ajuda bJalmo gt DD gt Ponta de prova T nel Resistor para ajuste Figura 101 Iniciando o circuito somador de 4 bits com os componentes de soma completa entradas e sa das e a constante O na entrada v do bit menos significativo Como voc pode ver subimos de n vel No projeto do circuito somador de 4 bits detalhes do sub circuito Soma Completa importantes para o seu projeto interno podem ser esquecidos o que interessa agora somente sua funcionalidade Dem DE DD DD O a Arquivo Editar Projeto Simular Janela Ajuda ols salmo gt D D As Bo i C Ponta de prova O T nel Resistor para ajuste Bos Figura 102 Somador de 4 bits completo utilizando sub circuitos de soma completa A Figura 102 mostra o circuito completo do somador de 4 bits Compreender este circuito certamente muito mais f cil do que entender o somador da Figura 93 Circuitos Combinatorios 75
80. 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 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 empregada para a vari vel inf 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 Os piores casos do quicksort s o geralmente pouco prov veis e seu desempenho em casos como
81. o a empresa dominante na ind stria da computa o provavelmente a nica capaz de lan ar padr es A evolu o dos computadores foi enorme e se deu em dire es de dif cil previs o O sistema operacional do IBM PC que se afirmou sobre seus concorrentes foi o MS DOS fornecido pela Microsoft ent o uma pequena empresa que produzia compiladores para microcomputadores O MS DOS foi na verdade desenvolvido por Tim Patterson da Seattle Computer Products que por 50 000 d lares vendeu os direitos do sistema operacional que transformou a Microsoft no gigante atual Faltou vis o ao Tim Patterson Sim sem d vida Um erro entretanto mais perdo vel do que o da IBM que na poca era maior n cleo de compet ncia mundial em computa o A IBM permitiu que o contrato com a Microsoft fosse feito sem exclusividade liberando a venda do MS DOS aos fabricantes de clones do IBM PC Poucos anos depois a Microsoft se tornou uma empresa maior do que a IBM 10 IBM Archives IBM Personal Computer acessado 7 de marco de 2011 http www 03 ibm com ibm history exhibits pc pc_1 html Computadores e Informa o 13 Existem computadores que n o se assemelham a PCs Ali s os computadores existentes em maior n mero s o simples e pequenos e ficam escondidos em telefones celulares iPods eletrodom sticos e autom veis Figura 2 A maioria dos computadores existentes est embarcada em carros eletrodom sticos telefones Outros s o eno
82. o de comportamentos repetitivos Vamos inicialmente mostrar o valor de fun es como ferramenta de modulariza o o que permite o reaproveitamento de c digo a divis o de tarefas em projetos maiores de programa o e torna programas mais leg veis 8 1 Fun es e Reaproveitamento de C digo 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 elementos tomados k a k dado pela f rmula l Q 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 292 Figura 292 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 293 onde cada c lculo de fatorial est destacado e onde o comando de sa da foi omitido n input n k input k C lculo do fatorial den on fat n i 1 Calculo do fatorial de n k n k fat nk i gt C lculo do fatorial de k ck fat k i fat n fat_nk fat k Figura 293 Programa para c lculo do n mero de combina es de n k a k 8 Fun es 186 Voc deve reparar que foram feitas tr s adapta es do c digo uma para cada fatorial a ser calculado N s vamos procurar mostrar que com o uso de fun es este programa se torn
83. o de um nico argumento e simplesmente inverte o valor de entrada e A opera o OR uma fun o de 2 argumentos e 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 0 como resultado se qualquer uma das entradas for igual a O e s igual a 1 quando todas as entradas forem iguais a 1 Express es booleanas ou express es l gicas s o composi es dessas opera es b sicas geralmente escritas utilizando uma nota o mais compacta e a denota NOT a 33 George Boole Wikipedia the free encyclopedia acessado 23 de fevereiro de 2012 http en wikipedia org wiki George Boole 34 Claude Shannon Wikipedia the free encyclopedia Circuitos Combinatorios 49 e a bdenota aOR b e a bouab denotaa 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 s o ab a b e a bY Figura 58 Portas l gicas entradas e sa das em um diagrama de circuito Circuitos digitais que implementam opera es booleanas s o conhecidos como portas l gicas A Figura 58 mostra um diagrama de circuito contendo desenhos adotados por conven o para entradas sa das e portas NOT AND e OR e suas conex es Na lgebra de Boole diversas express es s o equivalentes por exemplo a aat a a aa a at 1 1 a 0 a al a a0 0 a b
84. o njo gt 5 o o 5 o m 5 0 5 o opcodeio Jil MES HM ES MES na ES MES Ji HM ES EO HM ES MES MES xa MES li MES XEND 1 aE No No Es un ee m No m Pa 3 Montagem do Programa Execut vel 1 sum 0000010100 10000100 0001 0109 8414 Figura 447 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 447 e Na Tabela 5 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 7 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 Ap ndice A A CPU Pipoca 279 Como voc pode ter percebido a tradu o da tabela programa para bin rio uma tarefa 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 p
85. 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 7 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 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 SumX tem e Uma 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 e
86. o resultado Figura 414 Primeira vers o do programa CaixeiroViajante sce Vamos atacar inicialmente a leitura da matriz de dist ncias Queremos utilizar a fun o fscanfMat 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 afuncao fscanfMat s l 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 415 Distancias Notepad Sox File Edit Format View Help 0 3 6 E 2 0 4 t l 1 4 0 7 3 l 3 3 7 0 a E 1 3 3o O Figura 415 Arquivo Distancias txt com dist ncias entre as cidades mostradas na Figura 408 Este arquivo pode ser lido diretamente com fscanfMat Ap s a leitura os elementos com valor 1 devem ser substitu dos por inf Voc pode ver este c digo na Figura 416 onde est destacado o comando que faz as substitui es 12 Complexidade de Problemas 250 L a matriz de distancias Dist fscanfMat uigetfile txt pwd Distancias Substitui 1 por inf Dist Dist 1 inf Figura 416 Leitura do arquivo com distancias Para gerar as rotas e calcular seus custos vamos usar a fun o permutations da Figura 413 e tamb m uma fun o cost que recebe como par metros de entrada uma matriz D de dist ncias e um
87. os nossos testes com vetores aleat rios significativamente superior ao do mergesort Sele o x MergeSon x QuickSon 14 12 10 Em Tempo s 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Tamanho Figura 365 Compara o entre SelectSort MergeSort e QuickSort 10 Ordenacao 224 Merge Sontkx QuickSort 18 oo MergeSort E DD quicksor 16 14 12 T 10 E Tempo s 10000 15000 20000 25000 30000 35000 40000 45000 s0000 Tamanho Figura 366 Compara o entre MergeSort e QuickSort Quicksort Desempenho 200 Tempa 100 50 o 400000 2oo0000 s00000 400000 Ssoo000 so0o0000 Foooood Tamanho Figura 367 Teste de desempenho do quicksort Na Figura 367 n s mostramos os resultados obtidos com vetores rand micos de at 700 000 elementos que j atingem o limite de mem ria dispon vel no Scilab Repare que em 60 segundos o MergeSort foi capaz de ordenar 50 000 elementos e que neste mesmo tempo o Quicksort ordena 200 000 elementos Os resultados s o t o bons que o crescimento da curva de tempo parece linear Como sabemos que no melhor caso o tempo deveria crescer com n log n fizemos outra curva para nos certificarmos da corre o do nosso experimento mostrada na Figura 368 10 Ordenacao 225 Quichksort Desempenho x Tamanho 4100 4000 3900 3300 Tamanho Tempo 3700 3600 2500 3400 a 100000 200000 300000 400000 SO0000 BoO0000 DDD Tamanho Figura 368 Elementos
88. 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 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 Com rela o ao conte do os pontos que provavelmente necessitam de maiores justificativas s o 1 o estudo de organiza o de computadores 2 a ado o de Scilab e 3 a inclus o de material sobre complexidade e indecidibilidade Q
89. parti o Assim como o algoritmo de intercala o a implanta o do quicksort por meio de uma fun o recursiva uma express o direta do algoritmo como mostra a Figura 362 10 Ordena o 222 Figura 363 Elementos a serem trocados de posi o durante o processo de parti o A barra horizontal mostra o valor do piv As parti es s o feitas pela fun o partition mostrada na Figura 364 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 l end while A sup gt pivot sup sup 1 end 1f sup gt inf then temp A inf A inf A sup A sup temp inf inf 1 sup sup 1 end end left A 1 sup middle A suptl inf 1 right A inf length A endfunction Figura 364 A funcao partition 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 avan a sempre para a direita e sup para a esquerda o loop principal p ra 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 10 Ordenacao 223 e
90. programa um arquivo como o mostrado na Figura 283 Exemplo fprintfMat 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 Figura 283 Arquivo gerado pelo programa da Figura 282 Se agora executarmos o programa da Figura 284 escolhendo como entrada o arquivo da Figura 283 iremos obter uma matriz m id ntica matriz a gravada anteriormente 7 Loops 180 arquivo uigetfile m fscanfMat arquivo Figura 284 Leitura de uma matriz com o comand fscanfMat Vamos agora ver um exemplo de aplica o de matrizes e arquivos A Figura 285 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 File Edit Format View H Maxima Media Minima Media Maxima Record Minima Precipitacao 188 4 163 5 61 2 27 8 14 1 15 7 13 7 40 5 123 1 227 6 ves 1 2 3 4 3 6 Fj 8 b bos goe b we mw un H de PI PI fm H an o co y H 9 10 11 12 Figura 285 O arquivo TempoBHZ txt N s queremos fazer um programa que e Leia os dados desse arquivo e Extraia desses dados vetores correspondentes a cada uma das colunas conforme a Figura 285 e Gere um gr fico que exiba simultaneamente as curvas de m xima m dia minima m dia m xima record e m nima record
91. protesta A le agora Jos Figura 281 Arquivo fonte visto com o Bloco de Notas e vetor de strings obtido com o comando megetl Na Figura 281 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 7 12 Matrizes Num ricas e Arquivos O Scilab oferece os comandos fscanfMat e fprintfMat que permitem a leitura e a grava o de matrizes em arquivos Estes comandos s podem ser usados para arquivos que cont m ou conter o 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 arg M 5 2 Cabecalho grava a matriz num rica M no arquivo cujo nome o valor string de arg Esse arquivo 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 2 O vetor Cabecalho normalmente usado para uma explica o sobre os campos presentes no arquivo 1 2 3 4 5 6 789 arg uigetfile Cabecalho Meus Dados Coll Col2 Col3 fprintfMat arg a 5 2 Cabecalho Figura 282 Grava o de uma matriz em um arquivo com fprintfMat Na Figura 282 n s vemos um exemplo de uso do comando fprintfMat O resultado deste
92. que especifica um campo ocupando 3 colunas ao todo na impress o com 1 casa decimal e Paraa formata o de sin x o c digo 7 4f especifica um campo com um total de 7 colunas com 4 casas decimais Todo comando for pode ser substitu do por um comando while a Figura 270 mostra outro exemplo dessa substitui o O inverso n o verdadeiro nem todo loop com while pode ser substitu do com facilidade por um loop com o comando for como o caso do algoritmo de Euclides x 0 for x 0 0 2 2 3pi while x lt 2 pi printf n 3 1f 7 4 printf n 3 1 7 4 x Sin x x Sin x end x 0 2 Figura 270 Mesmo loop obtido com comandos for e while 7 Loops 173 7 8 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 uso de ifs aninhados vamos agora desenvolver um programa que Leia o nome do aluno que responde por exemplo Paulo Leia tamb m o total de pontos obtidos pelo aluno Imprima conforme o caso a frase lt aluno gt com lt pontos gt voc obteve o conceito X onde X determinado pela Tabela 3 Exemplos seriam Paulo com 81 pontos voc obteve o conceitoB ou Paulo com 90 pontos voc obteve o conceito A Tabela 3 P
93. recuperacao de valores armazenados Figura 208 Atribuindo um valor a uma parte de uma matriz Se x cont m 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 208 x 40 58 38 135 53 4 58 87 68 92 26 Ei 67 48 11 89 94 49 22 20 22 19 50 34 26 62 ae 84 56 34 37 52 76 83 12 gt x 3 4 4 5 1 2 3 4 58 38 68 89 50 34 4 58 Figura 209 Atribuindo os valores de uma matriz a uma parte de outra matriz A Figura 209 mostra outro exemplo de utiliza o desta nota o 21 62 56 23 30 29 50 15 84 66 23 e ER 56 43 0 68 72 21 21 48 26 cee 87 L9 88 SLs 33 63 66 6 54 65 36 39 40 gt a x 2 Figura 210 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 da matriz poss vel usar uma nota o simplificada com A Figura 210 mostra um exemplo de uso desta nota o para obter todos os elementos em uma linha de uma matriz 6 Matrizes 148 Figura 211 Obtendo os elementos de todas as linhas nas colunas de 3 a5 Outro exemplo est mostrado na Figura 211 onde x 3 5 designa a parte de x formada pelos elementos em todas as linhas e nas colunas de 3 a 5 6 2 Aritm tica matricial No Scilab as vari veis
94. 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 quase sempre formatada em arquivos e diret rios que prov m uma abstra o essencial para o seu uso Figura 36 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 armazenam 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 Computadores e Informacao 34 Figura 37 Armazenamento terci rio com uma grande cole o de fitas magn ticas manipuladas por um bra o rob tico Na Figura 38 n s vemos uma forma de se escrever os s mbolos O e 1 em um meio magn tico atrav s de sequ ncias de revers es ou n o revers es de polariza o de pequenas regi es gravadas em discos ou fitas Magnetic Field lines strong field and field reversal near boundary E grain magnetic region R reverse state R R M ge R N no reverse Binary Value Encoded 1 O Figura 38 Escrevendo zeros e uns em meio magn tico 25 NCAR s MSS exceeds 2 petabytes acessado 12 de agosto de 2011 http www cisl ucar edu news 04 fotoweek 0729 mss2pb html 26 File MagneticMedia png Wikip
95. ricos l gicos 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 realizar opera es de 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 Computadores e Informa o 37 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 constru o de programas consideremos o seguinte problema Temos um arquivo ondas txt fonte StatLib 1989 qgue cont m dados obtidos em um laborat rio de observa o de ondas marinhas Figura 41 File Edit Format View Help 67 66 64 03 62 61 Figura 41 O arquivo ondas1 txt visto com o Bloco de Notas Cada linha do arquivo cont m uma medida do n vel do mar a aparelh
96. s cont m um string em um formato num rico o que inclui strings como 2 3D 23 o comando x eval s coloca em x o valor de s convertido para um n mero codificado em ponto flutuante A fun o isnum s pode ser usada para verificar se s cont m um string v lido para a convers o Se x cont m um valor em ponto flutuante a fun o string x pode ser usada para obter sua convers o para um string com algarismos sinais e expoentes de um n mero decimal com valor aproximadamente igual ao valor de c O comando printf que veremos a seguir permite converter um valor em ponto flutuante com um maior controle sobre seu formato 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 seu nome 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 Seu nome string Seu nome Jose Nome Jose Figura 194 Exemplos de uso do comando input na console do Scilab Programas Scilab 141 5 7 Os comandos if then else eprintf Para enriquecer nosso repertorio de comandos Scilab vamos agora construir um terceiro programa que resol
97. seu micro programa modificando ou acrescentando novas instru es Programas Scilab 118 5 Programas Scilab It is felt that FORTRAN offers as convenient a language for stating problems for machine solution as is now known J W Backus H Herrick e 1 Ziller 5 1 Compiladores Interpretadores e Sistemas Operacionais N s vimos como programar um processador usando micro instru es o que uma tarefa rdua mesmo para transforma es de informa o extremamente simples como somar dois n meros Vimos tamb m sem entrar em maiores detalhes que podemos programar um computador usando instru es o que efetivamente representa um progresso com rela o programa o direta por sinais de controle codificados em micro instru es Mas isto n o nem de longe uma tarefa confort vel para quem tem um problema de tranforma o de informa o mais ambicioso Ao construir um programa usando instru es 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 Al m disso um programa feito para um computador n o pode ser executado por um outro com um repert rio distinto de instru es 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
98. supercomputadores denomina o que a ind stria d a computadores como o Blue Gene Tianhe 1A ou Titan Com a r pida evolu o da eletr nica super hoje normal amanh fraco depois de amanh Para ter alguma utilidade o termo supercomputador for osamente relativo poca um supercomputador um computador que figura dentre os mais poderosos do mundo em sua gera o Figura 4 O supercomputador Eniac constru do em 194613 12 Home TOP500 Supercomputing Sites acessado 7 de mar o de 2011 http www top500 org 13 Computer History Museum Timeline of Computer History acessado 16 de fevereiro de 2012 http www computerhistory org timeline year 1946 Computadores e Informa o 15 Neste sentido o Eniac constru do em 1946 e que conseguia fazer 385 multiplica es em um segundo era mais super que o Blue Gene ou que o K Computer pois era mil vezes mais potente que seus predecessores guisa de compara o o K Computer foi apenas 4 vezes mais r pido que seus predecessores fator que hoje considerado muito alto O Eniac foi ainda mais do que mais veloz que seus predecessores foi o primeiro computador com programa armazenado capaz de resolver problemas gen ricos Figura 5 Alan Turing 1 Computadores transformam informa o de entrada em informa o de sa da Um fato muito importante sobre computadores que desde que meios de armazenamento externo de informa o discos
99. uma matriz com y abaixo de x como mostrado na Figura 227 gt sqrt 4 9 16 25 ans l N 2 3 4 5 Figura 228 Gerando um vetor como resultado da aplica o de uma fun o elementar Scilab a um vetor A Figura 228 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 6 4 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 xe 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 6 Matrizes 155 gt x 1 4711 y 12 6 15 7 gt plot2d x y 1 2 3 4 5 6 7 8 9 10 11 Figura 229 Exemplo de grafico obtido com plot2d A Figura 229 mostra um exemplo de gr fico obtido com o comando plot2d outro exemplo est na Figura 230 que mostra que poligonais arbitr rias podem ser tra adas 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 coma
100. voltagem alta Como mostrado na Figura 64 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 Figura 64 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 Figura 65 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 Circuitos Combinatorios 54 Fonte O a b O Terra Figura 66 Uma porta NOR constru da com dois transistores Uma porta NOR constru da com o arranjo de transistores mostrado na Figura 66 n o dif cil ver que o ponto a b s ter o valor 1 voltagem alta quando os dois transistores do arranjo estiverem funcionando como isolantes o que s ocorre quando a 0eb 0 Fonte ab Terra Figura 67 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 67 Aqui a sa da a b s ser igual a z
101. 0 Negativos fotogr ficos 21 Um filme fotogr fico revelado objeto em extin o nos dias de hoje registra informa o sobre a cena fotografada Uma cena fotografada com uma m quina tradicional gera informa o anal gica sobre o material foto sens vel que cobre o filme A mesma cena fotografada com uma m quina digital gera n meros que registram a intensidade de luz para cada um de muitos pontos pequeninos que comp em a imagem n meros que s o s mbolos ou seja s o informa o digital pode ser Informa o Informa o Anal gica DILLE Figura 11 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 pessoa pois fen menos de dilata o fazem com que a altura da coluna de merc rio cres a com a temperatura medida N s dizemos que a informa o obtida por um exame direto do term metro uma informa o anal gica 21 Photographic film image acessado 7 de mar o de 2011 http farm4 static flickr com 3444 3348244651_fef16ef641 jpg Computadores e Informacao 20 Ponto de ebuli o da agua __ Corpo humano Ponto de fusao do gelo Figura 12 Um term metro 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 os n mer
102. 1 1 length seq printf 5s Down seq 1 end endfunction Figura 430 A fun o WritePostSolution J podemos testar o nosso programa para ver se encontramos a solu o da Figura 422 Escolhendo como entrada o arquivo ProblemaPost txt vemos que o programa Post sce efetivamente resolve este problema produzindo a sa da mostrada na Figura 431 Problema de Post 100 0 1 1 100 00 Solu o 1001100100100 1 3 1 1 3 2 2 100 1 100 100 1 0 0 1 00 1 1 00 100 100 Figura 431 Sa da do programa Post sce alimentado com o arquivo da Figura 424 Como voc j deve esperar inferir desse primeiro sucesso que o nosso algoritmo resolve qualquer problema de Post ingenuidade 10 00 01 1 019 0 0 101 001 Figura 432 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 432 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 amos 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 bus
103. 11111111111 72272222227000000222220222222222222222222222222222222222222222222222222222222222 333333030033003333333033032200330022322233233333333333333333333332333333333333333 SIACO Ne 16 Tee Ce Cee Cee cece CeCe CeCe eee Tee eee ee eee a wa ee ee ee ee ee ee ee 55555555555555555055555550055555555505555555555555555555555555555555555555555555 BEGEEESEEEEEESSESEEEEEGESEEESEEEGESEEECEESESBEEECESEGEEEBECESESEECEGEGSEGGGEEGES 777727777777777777777727777777007272007727277277227727777777277177727277777777272777777 sescssescsssecsceMecebcsesebess fcseHs2s28888888888888888888888828688888E8888BRE B 9 1 NIN 14 15 16 1 3 35 3637 3639408147 2344 G5 45 47 48 45 50 1 5 5354 55 SE S 56 59 60 Gi 6 G3 G4 65 65 67 68 6970 7 72 72 78 7578 TT 78 99999959999M99999599999959999955959595599999999999599999999999995999995595999E98 Figura 369 Um cart o perfurado Sorting Feed Hopper EEE a STE a p cai Selection Switches Ad dad 4 dd Aa Start ond pa fafa eb far a a Ue Ue ae Main Line Switch Figura 370 A classificadora de cart es IBM Type 82 de 1949 Todos os algoritmos de ordena o que vimos na Se o 10 s o algoritmos de ordena o por compara o isto algoritmos que usam compara es entre os elementos a serem ordenados para efetuar seu trabalho Em algumas situa es poss vel obter algoritmos de outro tipo utilizando caracter sticas particulares dos elementos a serem ordenados Por exemplo se os elementos a sere
104. 2 8 S ntese de um display hexadecimal Como um exemplo mais detalhado de s ntese autom tica de circuitos combinat rios a partir de sua tabela da verdade 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 algarismos decimais e de algumas letras que voc certamente j viu em rel gios elevadores ou sintonizadores de TV a cabo s Figura 103 Uma l mpada de 7 segmentos com todos os filamentos acesos O Logisim oferece este componente na biblioteca Entrada Sa da 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 104 Nomes dos pinos em uma l mpada de 7 segmentos A Figura 104 mostra os r tulos dos pinos de entrada de uma l mpada de 7 segmentos e na Figura 105 n s vemos o arranjo de entradas e sa das do circuito que iremos sintetizar o display hexadecimal j existe tamb m pronto no Logisim mas vamos reconstru lo Circuitos Combinatorios 76 Figura 105 Arranjo de entradas e saidas de circuito de controle de um display hexadecimal Para isso abrimos a janela Andlise Combinacional do Logisim e construimos 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
105. 21 28 35 42 49 56 63 16 24 32 40 48 56 64 72 18 27 36 45 54 63 72 81 Figura 274 Tabuada de Multiplica o on A N O CON DM RAUN e 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 275 Tabuada de multiplica o for linha 1 9 for coluna 1 9 printf g linha coluna end end Figura 275 O programa Tabuadal sce Ao executar este programa verificamos entretanto que sua sa da est inintelig vel 12345678924681012141618369121518212 formando uma longa sequ ncia de algarismos sem separacao todos em uma Unica 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 3g linha coluna end printf n end Figura 276 O programa Tabuada2 sce O programa Tabuada2 sce resolve estes problemas com a inser o de um printf An executado ao t rmino da impress o de cada linha e com o c digo de formato 33g que fixa 3 colunas para a impress o de cada produto 7 10 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
106. 255 255 0 is yellow 0 255 255 is cyan 255 0 255 is magenta blue 0 0 255 magenta 255 0 0 255 0 255 Figura 52 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 al Sinal e Magnitude 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 e magnitude bastante natural Basta tomar o bit mais esquerda e interpret lo como o sinal do numero 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 Os inteiros entre 127 e 127 Repare que zero tem duas representa es 10000000 e 00000000 para Codifica o com Deslocamento Uma outra possibilidade para representar n meros negativos est ilustrada na Figura 53 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 Decimal Bin rio N mero Figura 53 Representa o de n meros nega
107. 264658e 004 7 27595761e 30 1 06864746e 013 1 06864746e 013 3 90625000e Figura 396 Resultados de testes da fun o expTaylor com x positivo Mas o teste com valores negativos nos reserva surpresas desagradaveis como mostra a Figura 397 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 negativo sendo que e uma fun o estritamente positiva 1 0e 40 1 3 67879441e 001 3 67879441e 001 1 11022302e 10 4 53999298e 005 4 53999296e 005 1 39453573e 20 2 06115362e 009 5 62188447e 009 3 56073085e 30 9 35762297e 014 3 06681236e 005 3 06681237e Figura 397 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 formula com pouca possibilidade de erros 1 0e 23 1 0e23 Figura 398 Exemplo de cancelamento catastrofico A origem dos maus resultados esta na aritm tica de ponto flutuante que usa um numero 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 func
108. 29 541 658 688 719 784 792 Os cart es eram ent o recolhidos para formar uma nova pilha respeitando a sequ ncia dos escaninhos de tal forma que os cart es na nova pilha estavam ordenados pelo algarismo menos significativo O mesmo procedimento realizado regulando a classificadora para distribuir pelo segundo algarismo menos significativo depois com o terceiro menos significativo at se atingir o k simo algarismo quando o vetor estar ordenado A Figura 371 mostra as tr s distribui es necess rias para a ordena o completa de um conjunto de cart es 11 Algoritmos Num ricos 228 11 Algoritmos Num ricos Nesta se o n s apresentamos alguns 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 de e utilizando s rie de Taylor c lculo que est sujeito a problemas que podem resultar de opera es de truncamento e de arredondamento que decorrem do uso de um n mero fixo de bits na representa o de ponto flutuante Mais uma vez estaremos desenvolvendo fun es que j existem no Scilab integrate e intg calculam integrais definidas fsolve resolve sistemas de equa es n o lineares e exp calcula e Os m todos num ricos utilizados nas fun es Scilab s o muito mais sofi
109. 500 S000 3500 4000 4500 S000 Tamanho Figura 349 Tempos medidos para ordena o por sele o e troca de vetores aleat rios em um notebook e em um desktop 10 2 Intercala o MergeSort Figura 350 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 350 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 quando a recurs o termina pois a parte j est trivialmente ordenada A Figura 351 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 10 Ordena o 216 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 73 0 59 30 25 62 11 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 22 73 98 Figura 351 Exemplo de ordena o por intercala o com n 16
110. Boole em um curso de filosofia Essa lgebra chamada hoje de lgebra de Boole 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 3 Steve Hollasch IEEE Standard 754 Floating Point acessado 7 de mar o de 2011 http steve hollasch net cgindex coding ieeefloat html 31 An investigation of the laws of thought microform on which are founded the mathematical theories of logic and probabilities Boole George 1815 1864 Free Download amp Streaming Internet Archive acessado 19 de agosto de 2011 http www archive org details investigationofl0Oboolrich 32 Claude Shannon Wikipedia the free encyclopedia acessado 19 de agosto de 2011 http en wikipedia org wiki Claude Shannon Circuitos Combinatorios 48 Figura 56 George Boole 1820 189833 e Claude Shannon 1916 200134 As opera es fundamentais da Algebra de Boole s o NAO 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 bits a nota Figura 57 Defini o das opera es NOT OR e AND A Figura 57 mostra as defini es dessas opera es O que se v nas tabelas bastante intuitivo e A opera o de nega o NOT uma fun
111. Computadores Figura 190 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 191 Erro ao tentar representar um string contendo aspas Programas Scilab 140 Aspas s o usadas para marcar o in cio e o fim de strings e isto pode provocar um pequeno problema ao se tentar representar strings que cont m aspas como mostrado na Figura 191 Para conseguir isso basta colocar duas aspas consecutivas na posi o desejada como na Figura 192 gt x String com aspas duplas String com aspas duplas gt x String com aspas simples String com aspas simples Figura 192 Strings contendo aspas Strings formados 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 ou UTF 8 3 2 17 04 etc e n o como um n mero de ponto flutuante como mostrado na Figura 55 Se tentarmos realizar opera es aritm ticas com strings de algarismos o Scilab ir emitir uma mensagem de erro apropriada gt 2 3 1415926 error 144 Undefiled operation for the given operands Figura 193 Strings formados por algarismos n o s o n meros para o Scilab Se uma vari vel
112. D ciclicamente Figura 463 Sinais do ciclo de micro instru o O circuito Timing est mostrado na Figura 464 sendo similar ao circuito da Figura 139 Figura 464 O circuito Timing As observa es abaixo podem ajudar a compreender o funcionamento da unidade de controle e O circuito Timing gera ciclicamente os sinais tO tl e t2 e Quanto tO passa de O para 1 veja o destaque em vermelho na Figura 458 a microinstru o no endere o apontado por mPC carregada no mIR Leitura de Microinstru o 10 ocasiona gt Figura 465 A es em t0 e Quando t1 passa de O para 1 destaque em verde na Figura 458 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 Ap ndice A A CPU Pipoca 290 Circuito usa a Soma 1 Carga do p saida do Registrador Return Address gt atualiza se a microinstru o for do tipo Desvio e se o mMOpCode for jsr ocasiona gt ad a se a microinstru o Carga do for do tipo Signals Registrador ocasiona Signals Figura 466 A es em t1 e Quando t2 passa de O para 1 destaque em azul na Figura 458 o clock do mPC acionado atualizando seu conte do o que determina a pr xima micro instru o a s
113. E PR Pe era 201092916908 ROMULO CAVALCANTI REIS 201212078661 LAIS LUZ LARANJEIRA HENRIQUE 200219665183 DEBORAH CARSALADE MAGALHAES 201157086079 GUSTAVO SILVA PENA LELIS 201262618478 PEDRO PEREIRA MAURELLI 200929106821 BERNARDO VIEGAS SANTOS CARSALADE Figura 306 Primeiras linhas de um arquivo com formato de colunas fixas 8 Fun es 191 A Figura 306 mostra um exemplo t pico de arquivo com formato de colunas fixas descrito na Figura 307 E 4 Ano de registro 12 Figura 307 Descri o do arquivo da Figura 306 A Figura 308 mostra uma fun o para ler um arquivo com este formato colocando seu conte do em vetores Ano Inscr e Nome function Ano Inscr Nome LeAnoInscrNomes arg k 0 d arq mopen arg r while meof d arg linha mgetl d arg 1 k k 1 Ano k eval part linha 1 4 Inscr k part linha 5 12 Nome k stripblanks part linha 14 50 end mclose d arg endfunction Figura 308 Fun o para leitura do arquivo da Figura 306 Temos aqui diversas observa es e novidades a vari vel k usada como um contador de linhas tem inicialmente o valor 0 e incrementada a cada linha lida a fun o meof lt descritor de arquivo gt retorna um booleano que indica se o fim do arquivo j foi alcan ado eof vem de end of file o m inexplic vel a fun o mget 1 n s j conhecemos mas aqui temos uma nova forma de uso No comando linha mgetl d arq 1 uma lin
114. INTRODUCAO A ORGANIZACAO EA PROGRAMACAO DE COMPUTADORES USANDO LOGISIM E SCILAB OSVALDO CARVALHO DEPARTAMENTO DE CIENCIA DA COMPUTACAO UFMG 12 SEMESTRE DE 2014 Conteudo Conte do 1 Computadores STOMA CAG saias dao Sds sa IS AD dida 12 1 1 COMPU AOTEA A ee ee ee eer eee 12 1 2 Informa o Anal gica e Digital cccccccsssccccsssecccesececeeeceeeeescceeeuseeeseeeceeseneceeeeees 18 1 3 Computadores e Informa o ccccesseccceseccccessccecausececeeecceceeseceesuseceseuaeceeseeseeetsuaeses 21 1 4 Convers es analogo digital e digital anal gica esseseseensssresesrrrssrrererrrrssrrererrrressne 23 1 5 Sensores SAU CONS eers 28 1 6 Meman r a a E E T E E R 31 1 7 Organizacao do CONML CU CO seriernes 35 2 Circuitos CombiNat riOSsssriirsine Tise ninr a i E TN 42 2 1 PR COO a T A A 42 2 2 Algebrade Boole ooo eccessescesssesscesesecceecceseceseceeceaseesecenecceearesaeseseceneeaeeeaeseneeeneeaseeatens 47 2 3 Portas L gicas e Transistores ccccccessececceseccccescccceusececeuececeeueceeseueeessunecetseneceesanes 50 2 4 PURO CMC AOS ROS SI q PRESA RE REPARE SR CPAD OR ES anaes 55 2 5 Soma de d as parcelas de 1 DL asa sines oasis dei dd oa duda ds danosa 61 2 6 Soma de dois inteiros com v rios bits eeeereeee ee eerererrrrereneeena serra 65 2 7 Modulariza o e S ntese Automatica de Circuitos Combinatorios no Logisim 69 2 8 S ntese de um display hexadecimal
115. Input x16 16b p E oR bet ail Compare f JBus GT ACE In_ Clk lh Bus req reg 16h ah Bus EQ ACC Main Memory pus EE Bus LT ACC DR CIk Compare Clk B4KB RAM ACC sel a ld clr RAI CE RAM Eus Figura 135 Uma calculadora Circuitos Sequenciais 93 A Figura 135 mostra um circuito uma calculadora com diversos componentes 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 32K palavras de 16 bits tamb m com 16 bits de endere o 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 entradas Outras opera es que uma ALU poderia fazer incluem opera es l gicas AND OR e NOT e de deslocamento shift de bits e Um registrador acumulador ACC alimentado pela sa da de resultado de opera o da unidade l gico aritm tica e Um registrador de resultado de compara o Compare tamb m alimentado pela ALU Este registrador armazena 3 bits e sua sa da est ligada a leds com os r tulos Bus GT ACC Bus EQ ACCe Bus LT ACC GT vem de Greater Than EQ de EQual e LT de Less Than Temos ainda o registrador MAR que alimenta a entrada de endere o da mem ria principal e que alimentado pelo ba
116. PU 2 Este programa inicia armazenando o valor encontrado na entrada Input e que deve ser colocado ali antes do in cio da simula o na posi o 3 da memoria Em seguida acumulador inicializado com o valor 1 Segue se um loop de soma e de compara o que inclui uma micro instru o de desvio condicional 4 5 CPUs Reais Instru es e Programa o em Assembler Com a CPU 2 n s conseguimos construir programas que prescrevem opera es repetitivas para execu o por um processador e conseguimos tamb m com desvios condicionais interromper em momentos adequados essas repeti es Isto o suficiente para que com meios de armazenamento externo suficientes se consiga fazer qualquer computa o mesmo aquelas realizadas por supercomputadores Entretanto a forma de se programar que na verdade se reduz a acender e apagar diretamente sinais de controle torna dificil a constru o de programas para a solu o de problemas mais complexos de transforma o de informa o AS CPUs reais t m caracter sticas que as distinguem das que vimos aqui que foram projetadas com prop sitos pedag gicos 4 Processadores 112 e programas em sua forma de carga na mem ria do processador s o formados por instru es e o efeito de cada instru o obtido pela execu o de v rias micro instru es e correspondem aproximadamente aos textos nas colunas Efeito Acumulado dos programas que fizemos para as CPUs anteriores e v
117. 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 106 D gt An lise Combinacional og leia Arquivo Editar Projeto Simular Janela Ajuda Entradas Sa das Tabela Express o Minimizada a3 a2 al ad UL U C UR LL P L o w 0 ali ii oo a a mi U Dom moil n m i o D f o To mo ai mim i ioon ag myo To mmo aoimo a m o Co UR vi mm mli m ao ai mo na ooa m alai ai Rs Do Ao a a a a DES o wo aoo Ne ala a w a w o to omo wo a a MR E ty ee RN a ey E Feces ears E Pues RR TR fy es ones coe ee P oD ao ala mo o oo ed DR fee err OI LR o t 0 lm r DS so let V 1 1 1 1 1 1 1 0 1 0 0 lt Figura 106 A tabela da verdade completa para o display hexadecimal com destaque para a determinacao das sa das para formar um F Feito isso basta apertar Construir circuito para obter o circuito da Figura 107 O circuito 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 105 Circuitos Combinatorios 77 Figura 107 Circuito gerado automaticament
118. SS FINISH I Na Figura 161 nos vemos um exemplo de um programa escrito em assembler de uma CPU muito simples quando comparada com CPUs reais mas muito complicada para os nossos propositos a CPU Pipoca descrita em detalhes no Ap ndice A A CPU Pipoca Este programa soma os conte dos das posi es de mem ria com endere os entre 15 e 19 usando os nomes os labels endere os entre X e XEND e coloca o resultado na sa da do processador Vamos explicar somente alguns aspectos deste programa n o se preocupe em entende lo em detalhe 4 Processadores 114 ana O em SUM Carrega o endere o X no acumulador Coloca o endere o X em P Carrega o conte do de SUM no acumulador Soma o conte do da posi o de mem ria cujo endere o E or A ologa gt WN e d Addressi0O STORE P Coloca o resultado em P COMPARE XEND Compara XEND com o acumulador JMPLT FINISH Se for menor desvia para FINISH JMP LOOP Sen o volta para LOOP OUTPUT SUM Coloca o resultado na sa da 1 1 1 1 1 1 1 1 FINISH 3142 4542 Da d IS a serem somados O Figura 162 Um programa descreve a ocupa o da nica mem ria por instru es e por dados A primeira coisa a ser percebida que o programa descreve tanto instru es como dados como mostra a Figura 162 A cada linha do programa corresponde uma palavra na mem ria No campo de instru o o programador coloca o mnem nico e n o o c digo bin rio de cada instru o A colun
119. Verdadeiro quando uma e somente uma das vari veis ae 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 Vamos come ar colocando duas portas AND clicando sobre o s mbolo correspondente na barra de componentes de uso frequente e posicionando as portas na rea de desenho como mostrado na Figura 70 Repare na tabela de atributos que exibe e permite a edi o de dados relativos ao elemento selecionado no caso a porta AND inferior Circuitos Combinatorios 57 bhale o gt D D As Eg Figura 70 Duas portas AND Depois usando ainda a barra de ferramentas vamos colocar uma porta OR e duas NOT posicionando as conforme a Figura 71 Figura 71 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 72 Circuitos Combinatorios 58 Figura 72 Acrescentando entradas e saidas Para colocar fios ligando entradas portas e saidas utilize a ferramenta de selecao em destaque na Figura 73 Fios sempre seguem caminhos que s o composi es de segmentos horizontais ou verticais chamados caminhos Manhattan gt Logisim main d je Sem t tu Arquivo Editar Projeto Si Fore ub cmp brota Figura 73 Acrescentando o cabeamento Circuitos Combinatorios 59 Neste ponto voc j pode notar conven es de cores u
120. a Outro subcircuito da CPU Pipoca o contador de programa mostrado na Figura 453 01 Address New Address 0 0 10 1 0 1 1 Clock Force New Address Figura 453 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 6 A Unidade de Controle Eo SEE alimentam t produz Y Sinais de Controle da CPU Figura 454 O papel da Unidade de Controle A Figura 454 ilustra a fun o da unidade de controle que pode ser vista com mais detalhes no circuito da Figura 450 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 Ap ndice A A CPU Pipoca 284 e uma outra ROM que abriga o microprograma e e registradores da unidade de controle Figura 455 Componentes da Unidade de Controle Os registradores da un
121. a es depende dos resultados das compara es efetuadas 12 Complexidade de Problemas 243 Figura 400 rvore de decis es para o SelectSort Uma rvore de decis es uma forma compacta de descrever o comportamento de um algoritmo de ordena o por compara es quando submetido a diversos vetores de entrada A Figura 400 mostra uma rvore de decis es gerada pelo SelectSort quando submetido a todas as permuta es de um vetor a b c onde a be c s o valores distintos A rvore de decis es deve ser lida da seguinte forma e a primeira compara o sempre feita entre os elementos que est o nas posi es iniciais 1 e 2 e a segunda compara o depende do resultado da primeira o seo elemento de posi o inicial 1 for maior que o elemento de posi o inicial 2 a segunda compara o feita entre os elementos de posi es iniciais 2 e 3 o seo elemento de posi o inicial 1 for menor que o elemento de posi o inicial 2 a segunda compara o feita entre os elementos de posi es iniciais 1 e 3 E assim por diante Toda rota na rvore de decis es termina em uma permuta o com as posi es no vetor inicial dos elementos do vetor ordenado N s vemos que o algoritmo de Sele o e Troca faz no sempre 3 compara es para ordenar um vetor de 3 elementos es Ea ad 1 gt 2 R M i gt 3 1 3 lt 1 gt i gt 3 gt E Ed Dos ez e lt gt EEE is2 o uz ce gt EEE 2 gt 3 1
122. a 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 A constru 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 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
123. 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 M dulo Comparador de 1 bit E bMaior Figura 110 Entradas e sa das para um m dulo comparador de 1 bit Vemos na Figura 110 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 Circuitos Combinatorios 79 ja feita com bits mais significativos que o bit em questao v m as entradas aMaior bMaior e ablguais A Figura 111 mostra o arranjo de m dulos que comp em um comparador de 4 bits Figura 111 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 sao os bits das entradas da coluna correspondente ao m dulo e As tr s outras s o designadas por aMaior bMaior e abIguais 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 pode
124. a muito mais claro Para isso vamos dividir o programa em duas partes o programa principal e a fun o function fat fatorial v fat 1 for i l v fat fat i end endfunction Figura 294 C digo da fun o fatorial Combina es de nk ak exec fatorial sci n input n k input k fat n fatorial n fat k fatorial k fat n k fatorial n k Comb n k fat n fat k fat_n_k printf Comb d d td n k Comb n k Figura 295 C digo do programa principal para c lculo do n mero de combina es de n k a k O comando exec um detalhe t cnico serve para indicar ao Scilab que a fun o fatorial ser utilizada pelo programa O programa da Figura 295 faz a mesma coisa que o da Figura 293 mas ao inv s de conter tr s trechos de c digo para o c lculo dos fatoriais cont m tr s chamadas da fun o fatorial e um nico c digo para esta fun o mostrado na Figura 296 O c digo na Figura 295 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 O efeito das adapta es usadas para os diferentes fatoriais obtido pelo uso de diferentes par metros da fun o a cada chamada o que propicia um reaprovei
125. a 17 ilustra esse processo de digitaliza o de um sinal que varia ao longo do tempo O resultado da digitaliza o uma tabela um conjunto de s mbolos com a informa o mostrada na Figura 18 Computadores e Informa o 25 0 00 00 0 0 33 10 2 0 66 10 2 1 00 00 0 Figura 18 Resultado da digitaliza o com 4 amostras s e 2 bits de precis o Ap s a digitaliza o a informa o anal gica perdida e somente os s mbolos resultantes da digitaliza o est o dispon veis Para tentar reconstruir o sinal original a partir dos dados digitalizados um primeiro passo poderia ser utilizar interpola o linear para obter dados intermedi rios entre os vazios existentes entre as amostras como mostra a Figura 19 Figura 19 Reconstru o do sinal por interpola o linear Se compararmos com o sinal original veremos que para a nossa acuidade visual o resultado n o nada bom como mostra a Figura 20 Figura 20 Sinal original e sinal reconstru do por interpola o linear a partir de digitaliza o com 4 amostras s e 2 bits de precis o Se tentarmos reconstruir o sinal com m todos mais sofisticados de interpola o como splines veremos mais tarde como utilizar splines o resultado tamb m n o ser bom como mostra a Figura 21 Computadores e Informa o 26 Figura 21 Sinal original e sinal reconstru do por interpola o por spline a partir de digitaliza o com 4 amostras s e 2 bits de preci
126. a 329 Tempos para fatora o em fun o do numero de bits de um numero 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 O 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 9 Algoritmos Pesquisa 204 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 9 3 Melhorando a Fatora o Vamos agora considerar a fun o MenorFator2 mostrada na Figura 330 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 d x d p Sed d d Jp e p um quadrado perfeito sed d oubemd lt p ou bem d lt JP Isto significa que sO precisamos testar a divisibilidade para os inteiros menores ou iguais a raiz quadrada de p se neste intervalo nao encontrarmos nenhum divisor ja poderemos
127. a 91 Circuitos Combinatorios 71 a b 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 Figura 97 Entrando com a tabela da verdade para a soma completa no Logisim A Figura 97 mostra a tabela j com todos os valores inseridos Isso feito clicando uma ou mais vezes sobre cada ponto nas colunas de sa da da tabela a cada clique o valor trocado indo de x para O de O para 1 ou de 1 para x Projeto alvo Sem t tulo m Nome do circuito Soma Completal Usar apenas portas com duas entradas Usar apenas portas NAND Figura 98 Escolha do nome do novo circuito no Logisim Quando a tabela estiver pronta clique sobre o bot o Construir Circuito e d ao novo circuito o nome de Soma Completa como mostrado na Figura 98 Circuitos Combinatorios 72 gt Logisim Soma Completa de Sem t tulo Arquivo Editar Projeto Simular Janela Ajuda F Distribuidor z Pino Ponta de prova be J T nel T Resistor para ajuste uk Clock 0 Constante T Fonte i he Terra Fonte do r tulo comp SansSerif Normal 12 Figura 99 Circuito de soma completa gerado automaticamente pelo Logisim a partir da tabela da verdade Aperte o bot o OK e como mostra a Figura 99 nosso circuito de soma completa est pronto Mas est um pouco diferente do circuito que j constru mos mostrado na Figura 92 No circuito sintetizado automaticamente pelo Logisim a sa da vai um dada pela express o V bv av
128. a Label usada pelo programador para dar nomes a endere os de mem ria estes labels podem ser usados na coluna Operando do programa fonte tornando muito mais f cil modificar um programa quando se quer alterar a ocupa o da mem ria Na Figura 163 e na Figura 164 voc pode ver em destaque dois exemplos do uso de labels no programa fonte 4 Processadores No Y N U x lt 0 00 OAD Erao acumulador O SSS orfsrore to SUM Coloca 0em SUMP o 02 LoaDn 0 X Carrega o endere o X no acumulador P Coloca o endere o X em P E f B325 N meros a serem somados o ee m34 XYD 8786 Guva zoal jo Co o P majs d do o Figura 163 Um exemplo de uso de labels como operandos no c digo fonte ddress10 ddress16 L lt Loop 1 4 o4jLoaD 1 SUM_ Carrega o conte do de SUM no acumulador _ slope fale lenser spsoacumusor n cujo endere o P ao acumulador _ 1 6 os store o sum_ Coloca o resultado na posi o SUM __ at7iforjtoan 1 p Carregaoconteidodep Cd JilefoaDD J oli Ismar S Jifoosjstore ofp Icolocaoresultadoemp _ _ 1 10 0A COMPARE O XEND ComparaXENDcomoacumulador Ji 12 08 mpct__ 0 FINISH Se for menor desviaparaFINISH 1 12 ocgivp o LOOPY senao volta para LOOP __ FINISH 1 13 OD OUTPUT TT SUM Colocaoresultadonasaida Figura 164 Outro exemplo de uso de labels como operandos Cada instru o no programa fonte deve ser codifi
129. a a lt condi o gt do lt bloco ent o gt lt bloco ent o gt e lt bloco sen o gt s o conjuntos arbitr rios de comandos Scilab else marcaofimdo lt bloco ent o gt eoin ciodo lt bloco sen o gt end a palavra chave que fecha o comando if na execu o do comando if o lt bloco ent o 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 Programas Scilab 142 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 197 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 197 Duas formas equivalentes do comando if a da direita sem a cl usula else A Figura 198 mostra os blocos de comandos e a condi o do comando if do programa Eq2g3 sce b sqrt delta 2 a b sgrt delta 2 a Figura 198 Partes do comando if do programa Eq2g3 sce O comando printf tem a forma onde printf lt frase gt lt lista de express es gt lt frase gt a senten a que se quer imprimir na tela e um string que pode estar entremeado por c digos de formato como g g um c digo de formato geral para express es com valores num
130. a leitura se o segundo par metro de mopen for w o arquivo ser aberto para escrita Aqui a vari vel nomeArg deve conter um string com o nome completo de um arquivo provavelmente obtido com uigetfile Avari veld arq recebe como valor um descritor de arquivo que deve ser usado em todas as opera es de leitura ou de escrita no arquivo e tamb m para o seu fechamento O comando mclose d arg fecha um arquivo Opera es de leitura ou de escrita em arquivos devem ser feitas com arquivos abertos e um programa correto fecha todos os arquivos que abriu a forma mclose all pode ser til para isso Tipicamente o tratamento de arquivos feito como mostrado na Figura 305 d mopen arquivo opera es de leitura ou de escrita mclose d Figura 305 Uso tipico de abertura e fechamento de arquivos Abertura e fechamento de arquivos s o opera es necess rias pelo seguinte motivo Quando n o est em uso um arquivo tem toda a sua informa o gravada em disco ou em outra m dia n o vol til Para utilizar um arquivo o sistema operacional deve trazer para a mem ria principal informa es sobre o arquivo como seu tamanho as posi es que fisicamente ocupa no disco ou em outra m dia e v rias outras Isso corresponde abertura do arquivo Nem todas as altera es sobre a informa o do arquivo mantida na mem ria s o imediatamente refletidas no disco o fechamento do arquivo garante essa atualiza o EY EPL
131. a 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 Por exemplo a fun o f x y definida pela tabela mostrada na Figura 83 equivalente express o f x y x y xy Px y f x y 1 e e O oO 0 1 0 0 0 1 1 Figura 83 Tabela da verdade para a fun o f x y 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 Circuitos Combinatorios 64 EEEE 0 0 1 1 hal 0 0 xa xy 1 0 0 1 1 1 Figura 84 Cobertura dos 1s de uma fun o booleana Na Figura 84 f x y 1 somente na primeira linha quando x 0 e y 0 e na ltima linha quando x 1 ey 1 N s temos e x y 1seesomentesex 0 e y 0 para qualquer outra combina o de valores dexey xy 0 e xy 1seesomente se x 1ey 1 para qualquer outra combina o de valores dexey xy 0 Portanto o OR destes dois termos f x y x y xy cobre exatamente os 1s da tabela e uma express o l gica equivalente fun o desejada A express o assim obtida chamada de soma can nica associada fu
132. ada 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 Ap ndice A A CPU Pipoca 282 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 Logisim 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 regist
133. ada de 1 a cada passagem do loop Quando o loop termina k n 1 ecomos sum A 1 k 1 temos s sum A 1 n como quer amos A SPPE Figura 253 Exemplo de c lculo da soma dos elementos de um vetor pelo loop da Figura 252 7 4 Loop para encontrar o Menor Valor presente em um Vetor Como mais um exemplo vamos mostrar um loop que atribui a uma vari vel m o menor valor presente em um vetor A de n elementos o que poderia ser feito no Scilab com o comando m min A 7 Loops 167 end m min A 1 k 1 e k I portanto M manta 1 in Figura 254 Loop para encontrar o menor valor presente em um vetor Nosso objetivo obter m tal quem min A a l gica empregada na constru o do loop a seguinte e Como prepara o para o loop fazemosm A l ek 2 e O loop explora o invariantem min A 1 k 1 que estabelecido pela prepara o do loop pois A 1 min A 1 1 e restabelecido ao t rmino de cada execu o do corpo do loop e Avariavel k incrementada de 1 a cada passagem do loop e Quando o loop termina k n 1 ecomom min A 1 k 1 temosm min A 1 n como quer amos Um exemplo de execucao deste loop esta na Figura 255 k 3 4 Ww Figura 255 Exemplo de determina o do menor valor presente em um vetor usando o loop da Figura 254 7 5 Loop para encontrar o M ximo Divisor Comum usando o Algoritmo de Euclides Como ainda outro exemplo de uso do comando while
134. ada 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 n meros sequenciando as somas ao longo do tempo Permitiria tamb m a uma pessoa que vivesse o tempo suficiente somar um milh o de parcelas Circuitos Sequenciais 92 ACC_Clr 1 Zerar o acumulador ACC_Clr 0 Colocar 2 em binario 10 na entrada In Colocar o valor de In no barramento a outra entrada In Bus 1 z do somador tem o valor do acumulador que 0 ACC Clk 1 Copiar o valor da sa da do somador no acumulador ACC Clk 0 Zerar o clock do acumulador Colocar 7 em bin rio 111 na entrada In e tamb m In no barramento A sa da do somador cont m a soma do valor no barramento com o valor no acumulador 6 8 JACCCIk 1 Copiar o valor da sa da do somador no acumulador 9 ACCCIk O Zerar o clock do acumulador ACC Bus 1 Colocar o valor do acumulador no barramento Out Clk 1 Copiar o valor do barramento no registrador Out Out Clk 0 Zeraro clock do registrador Out ACC Bus 0 Figura 134 Exemplo de fluxo de dados realiz vel pelo circuito da Figura 133 A Figura 134 mostra um exemplo de uso de um acumulador para a soma de tr s parcelas 3 5 Uma Calculadora Out reg Bri In req DR Bus Out Clk
135. ado t roa e Figura 338 Ordenacao de um vetor 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 338 Uma outra forma de se ver o efeito de uma opera o de ordena o est ilustrada na Figura 339 Figura 339 Gr fico dos valores de um conjunto desordenado e ap s sua ordena o Existem muitos algoritmos para ordena o n s veremos tr s deles aqui conhecidos por algoritmos de ordena o por sele o e troca por intercala o e por intercala o 10 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 que iremos desenvolver para implantar esse algoritmo mostrado na Figura 340 function sA SelectSort A Constr i o vetor sA com os mesmos elementos do vetor A dispostos em ordem crescente endfunction Figura 340 Cabe alho de uma fun o de ordena o Isso j nos permite desenvolver um programa para testar a fun o mostrado na Figura 341 10 Ordenacao 211 exec 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 341 O pro
136. ados produz wee Sinais de Controle da CPU Figura 443 Uma unidade de controle e um clock s o necess rios para a execu o de programas 1 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 Ap ndice A A CPU Pipoca 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 444 Formato de uma instru o da Pipoca N s vimos que instru es devem ser codificadas tamb m em bits A Figura 444 mostra o formato que escolhemos para as instru es da Pipoca Cada instru o tem 16 bits sendo 4 275 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
137. agem 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 Computadores e Informa o 38 Programa da Onda Figura 42 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 42 mostra um programa Scilab que faz isso utilizando dois m dulos as fun es Maximo e Minimo mostradas na Figura 43 GF SciPad 6 157 Maximo sci e eee Mini E Hid CI Maxi E E function m Minimo A 11 function m Maximo X m Xl for i 2 length x if X i gt m then m X ij end end endfunction for i 2 length A if A i lt m then m Ali end iD Co 0 On da do Bo Figura 43 As fun es Maximo e Minimo vistas no editor SciNotes Para entender melhor essas fun es veja o algoritmo descrito a seguir nesta se o O programa produz o gr fico da Figura 44 e a sa da Min 0 86 Max 0 36 mostrada na console do Scilab Computadores e Informacao 39 o 500 1000 1500 2000 2500 3000 3500 4000 4500 Figura 44 Gr fico com os pontos no arquivo ondas1 txt Na parte III Algoritmos nosso foco se afasta um pouco de especificidades da linguagem Scilab para abordar aspectos da pro
138. alor de n como quer amos Em um loop uma propriedade que v lida ao in cio e ao t rmino de cada execu o de seu corpo chamada de invariante do loop Na Figura 250 a propriedade fat k 1 um invariante do loop Um exemplo de execu o deste loop est na Figura 251 Figura 251 Exemplo de c lculo do fatorial usando o loop da Figura 250 7 3 Loop para o C lculo da Soma dos Elementos de um Vetor Como mais um exemplo vamos explorar invariantes de loop para obter em uma vari vel s a soma de todos os elementos de um vetor A com n elementos No Scilab isso pode ser feito diretamente pelo comando s sum A a Figura 252 mostra como faz lo utilizando um loop fazendo uma soma de cada vez como provavelmente implementada a fun o sum 7 Loops 166 s 0 s sum A 1 k 1 lembrando que A 1 0 while k lt n s s A k s sum A 1 k k 1 s sum A 1 k 1 end s sum A 1 k 1 e k n 1 portanto s sum A 1 n Figura 252 Loop para soma dos elementos de um vetor O objetivo obter s tal que s sum A eo racioc cinio empregado na constru o do loop o seguinte Como prepara o para o loop fazemos s Oek 1 O loop explora o invariante s sum A 1 k 1 que estabelecido pela prepara o do loop lembrando que A 1 0 a matriz vazia e restabelecido ao t rmino de cada execu o do corpo do loop A vari vel k increment
139. alores literais s o codificados nas instru es e n o existe uma mem ria para programas e outra para dados uma nica mem ria RAM abriga dados e programa e existem circuitos para sincroniza o de opera es de entrada e sa da e o processador executa um ciclo de leitura e execu o de instru es e a programa o pode ser feita em linguagem de montagem o que representa um grande avan o com rela o programa o por sinais de controle LOAD Carrega o operando no acumulador Armazena o valor do acumulador no endere o de STORE mem ria especificado pelo operando Soma o valor do operando ao valor do acumulador deixando o resultado no acumulador Compara o valor do operando com o valor do COMPARE acumulador Desvio incondicional para o endere o especificado pelo operando a Desvio para o endere o especificado pelo operando ADD JMP JMPEQ se o resultado da ltima compara o for iguais Desvio para o endere o especificado pelo operando JMPLT se o resultado da ltima compara o for menor que Figura 160 Instru es T picas de uma CPU simples A Figura 160 mostra alguns exemplos de instru es t picas de CPUs simples Como voc pode reparar comparando com a Figura 159 cada instru o corresponde aproximadamente ao efeito acumulado de uma sequ ncia de micro instru es O processo de programa o em assembler consiste em preencher uma tabela usando n o os c digos das instru es mas s
140. alores na coluna Word16 da planilha com o programa e cole no Bloco de Notas a partir da segunda linha A Figura 483 mostra a janela do Bloco de Notas com o programa execut vel Salve o arquivo seu programa estar pronto para ser executado
141. ampo de operando ter como efeito 2 Se o endere amento for imediato somar 7 ao conte do do acumulador Se o endere amento for direto somar o conte do da posi o 7 da mem ria ao registrador no caso somar 23 ao acumulador Se o 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 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 memoria 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 Ap ndice A A CPU Pipoca 277 de uma imagem na memoria principal o que poss vel fazer clicando com o bot o direito do mouse sobre o componente mem ria Em computadores reais s
142. ann com 16 intervalos As f rmulas das somas de Riemann levam diretamente as implementa es em Scilab mostradas na Figura 375 e na Figura 376 11 Algoritmos Num ricos 230 function lrs LeftRiemannSum f a b n Calcula a soma de Riemann esquerda da fun o 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 Comente os comandos abaixo se voc n o quiser o grafico 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 375 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 Comente os comandos abaixo se voc n o quiser o gr fico scf plot2d2 x f x 2 n 1 b style 5 axesflag 5 plot2d3 x f x 2 n 1 b style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx axesflag 5 endfunction Figura 376 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
143. ao 18 Informa o anal gica 18 informa o digital 18 input 136 INPUT 282 instru es 274 instru es de desvio 274 instru es de m quina 272 Instruction Register 273 Integra o por Trap zios 228 Internet 17 interpretador 121 IR 273 isolante perfeito 53 Java 119 jsr 285 jump to subroutine 285 kiss principle 209 l mpada de 7 segmentos 75 largura de bits 87 leg 181 legibilidade 174 limites fisiol gicos 28 linspace 152 LISP 120 loaders 277 mantissa 46 MAR 90 Matlab 121 matriz identidade 153 matriz inversa 150 matriz transposta 150 Matrizes 145 Matrizes de Strings 159 meia soma 64 Mem rias 31 Mem rias secund rias 33 Mem rias terci rias 33 Memory Addres Register See MAR merge 215 mgetl 178 micro Instruction Register 284 micro Program Counter 284 micro assembler 292 microinstru es de desvio 285 microinstru es de sinal 284 Micro Programa 292 microprograma o 284 mIR 284 mnem nicos 276 modo de endere amento 275 montador 279 265 montagem 272 mPC 284 Multiplexadores 81 NAN 47 NAND 51 nomes de vari veis 123 NOR 51 NOT 48 ones 153 operadores relacionais 138 operando 275 OR 48 ordena o 210 ordena o por Intercala o 215 Ordena o por Sele o e Troca 210 oscilador 94 Ou Exclusivo See XOR OUTPUT 282 overflow 67 palavras 89 Par metros formais 187 par me
144. ara a leitura da pr xima instru o Comments 2 lt o E amp 20 32 INPUT jsr GetOperand 1 Resolve enderecamento operando efetivo no DR 21 33 Inloop jmpInEmpty InLoop 1 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 o 1 Zera o FF InEmpty RAM copia o Dbus 26 38 jmp Fetch 1 Fetch da pr xima instru o 36 54 OUTPUT jsr GetOperand 1 Resolve enderecamento operando efetivo no DR 37 55 OutLoop jmpOutFull OutLoop Espera OutFull O 38 56 Sa da do DR vai para Dbus 39 57 1 1 Zera o FF OutFull Out copia Dbus 3A 58 jmp Fetch Fetch da pr xima instru o Figura 475 Micro c digo para as instru es INPUT e OUTPUT Na Figura 475 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 satisfeita Comments lt fa E ES lt Oo E E j 31 49 LOAD a Zera o ACC 32 50 jsr GetOperand Resolve endere amento operando efetivo no DR 33 51 Sa da do DR vai para Dbus 34 52 0 ACC copia sua entrada 0 Dbus 35 53 jmp Fetch 1 Fetch da pr xima instru o
145. ara alterar o seu valor Explore todas as combina es poss veis de valores para a e b verificando a sa da para completar a tabela da Figura 77 Figura 77 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 Arquivo Salvar 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 Arquivo Abrir Para introduzir elementos de circuito com outras orienta es clique sobre a porta desejada e depois altere o campo Posi o na tabela de atributos conforme mostrado na Figura 78 Circuitos Combinatorios 61 D gt Logisim main de Sem titulo 2 Arquivo Editar Projeto Simular er je k 4 8 e DD Figura 78 Mudando a orienta o de um componente de circuito Se voc seguiu todos os passos deste roteiro ter assimilado os elementos b sicos para o uso do Logisim Voc pode descobrir muito mais lendo a ajuda ou explorando diretamente a ferramenta 2 5 Soma de duas parcelas de 1 bit artes Figura 79 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 exemplo a Figura 79 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
146. 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 s mbolos A palavra bit designa a unidade de informa o simb lica os dois valores poss veis para um bit s o normalmente denotados por O e 1 Dois s mbolos s Computadores fazem maravilhas exibem filmes ajudam a projetar autom veis controlam metr s e avi es oferecem jogos editores de texto correio eletr nico fazem de tudo Como somente com 0 e 1 que mesmo se cada bit 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 verde ou amarelo 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 0a 7 ou os inteiros entre 3 e 4 as letras entre A e H ou talvez 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 numero de combina es j existentes Ou seja com 1 bit 2 estados com 2 bits 2 x 2 4 estados com 3 bits 2 x 4 8 e
147. b compreenda a express o ou e escreverrl b sgrt delta 2 a o que na verdade levaria ao c lculo de nr a O que n o o que queremos O primeiro erro menos grave pois o Scilab ir detetar que existe algo de errado com o comando e ir manifestar seu estranhamento por uma mensagem como a da Figura 179 Este tipo de erro conhecido como erro de sintaxe gt delta b 2 4ac I error 276 Operador comma ou semicolon faltante Programas Scilab 130 Figura 179 Mensagem de erro de sintaxe detetado pelo Scilab O Scilab n o consegue entretanto identificar erros do segundo tipo conhecidos como erros de sem ntica A sintaxe da express o est perfeita mas seu significado sua sem ntica n o aquela que desej vamos Por isso sempre bom verificar os resultados de um c lculo ou de um programa Para a nossa equa o de segundo grau podemos tamb m usar o Scilab para a verifica o com os comandos mostrados na Figura 180 Nesta figura voc deve reparar e na apari o da vari vel ans que utilizada pelo Scilab para armazenar resultados de express es que n o fazem parte de um comando de atribui o e na nota o 3 865D 12 que a forma de se escrever o valor literal 3 865 x 10712 Ali vemos que o valor do polin mio da equa o nas raizes que calculamos n o exatamente zero Isso n o deve constituir preocupa o pois os valores s o relativamente muito pequenos da ordem
148. b como mostrado na Figura 221 gt residuo a x Db residuo O 2 220D 16 0 Figura 221 Calculando o erro num rico da solu o encontrada 6 3 Construindo matrizes Vetores com valores regularmente espa ados podem ser constru dos como mostrado na Figura 222 10 1 13 11 12 12 0 5 10 11 5 11 10 13 ig RR Figura 222 Constru o de vetores regulares A forma geral lt valor inicial gt lt incremento gt lt limite gt Repare que o incremento pode ser negativo e que pode ser omitido quando for igual a 1 como no terceiro caso da Figura 222 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 numero de pontos em que se deseja dividir o intervalo ao inv s do valor do incremento A Figura 223 mostra dois exemplos de uso da fun o linspace 6 Matrizes 153 gt x linspace 0 10 6y _ 10 a linspace 0 10 6 2 4 6 Figura 223 Usando a fun o linspace para construir vetores com valores regularmente espa ados 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 224 gt x zeros 2 3 x O 0 0 0 gt y ones 2 3 y 1 i 1 Figura 224 Matr
149. b pode conter ou n o uma raiz como mostra a Figura 381 11 Algoritmos Num ricos 233 A Figura 381 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 0 ou seja f a e f b t m sinais opostos n o exista nenhuma raiz no intervalo a b Figura 382 Se a fun o n o for cont nua sinais opostos nas extremidades de um intervalo n o garantem 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 11 Algoritmos Num ricos 234 F b Figura 383 Caso em que a raiz est esquerda do ponto m dio do intervalo Temos tr s casos poss veis No primeiro Figura 383 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 384 Caso em que a raiz est direita do ponto m dio do intervalo No segundo caso Figura 384 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 reduzi
150. ca 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 422 e da Figura 432 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 12 Complexidade de Problemas 258 10 0 001 0 001 1 Figura 433 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 433 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 13 Pr ximos Passos 260 13 Pr ximos Passos Chegamos ao fim de nosso curso onde vimos alguns dos conceitos fundamentais da ci ncia da computa o hora de rever brevemente estas id ias para obter uma vis o de conjunto e tamb m para apontar algumas dire es para pr ximos passos Computadores trabalham com informa o que pode ser digital simb lica ou anal gica Um pro
151. cada em bits para se ter uma imagem da mem ria gravada em alguma m dia que ser carregada na mem ria do processador para a execu o do programa Na Figura 165 voc pode ver um exemplo deste procedimento de codifica o em bits que chamado de montagem da instru o 0000010100 1000 0100 0001 0109 8414 Figura 165 Montagem de uma instrucao 115 4 Processadores 116 A montagem de um programa ou seja a tradu o do programa fonte para bin rio uma tarefa insana com fortes exig ncias de verifica o Mas essa tarefa s foi feita manualmente pelos pioneiros da computa o Cedo se percebeu que os computadores poderiam ser usados n o somente para os c lculos de bombas at micas que constitu am sua finalidade prim ria mas para automatizar o processo de montagem Montadores ou assemblers s o programas que l m programas escritos por um programador e geram arquivos com imagens bin rias a serem carregadas na mem ria Eles se encarregam da tarefa de substituir mnem nicos e labels pelos bits correspondentes eliminando erros e consequentemente a necessidade de verifica o da montagem Para programar a CPU Pipoca n s desenvolvemos uma planilha que se encarrega do processo de montagem de arquivos com imagens da mem ria O Ap ndice A A CPU Pipoca descreve com mais detalhes o circuito completo deste processador assim como uma planilha que pode ser usada para a sua programa o ou para modificar
152. ceito 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 Ss com g pontos voc obteve o conceito s Nome Pontos Conceito Figura 271 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 A disposi o gr fica dos comandos em um programa tem grande influ ncia em sua legibilidade Talvez voc j tenha reparado que o pr prio editor SciNotes faz com que os blocos nos comandos if e for sempre apare am ligeiramente deslocados para a 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 7 Loops 175 if delta lt 0 then printf Ra zes complexas else ri b sgrt delta 2 a r2 b sgrt delta 2 a printf rl g e r2 g rl r2 end if delta lt 0 then printf Ra zes complexas else rl b sgrt delta 2 a b sgrt de
153. cessador 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 ASCll e UTF 8 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 transforma es muito 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 extremamente 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 po
154. cia dada os strings na parte superior ou na parte inferior dos domin s 12 Complexidade de Problemas 255 ES ProblemaPost Notepz File Edit Format View Help 100 QO 1 1 100 00 Ln1 Coll Figura 424 Tela do Bloco de Notas com um arquivo de tipos de dominos para o problema de Post da Figura 421 Vamos come ar pela leitura de um conjunto de tipos de domin s A Figura 424 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 425 A fun o ReadPostProblem A fun o ReadPostProblem Figura 425 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 n nl nc size Up for i 1 nl printf 5s Up i end printf n for i 1 nl printf 35s Down 1 end endfunction Figura 426 A fun o WritePostProblem A fun o WritePostProblem Figura 426 imprime na tela um problema armazenado nos vetores de strings Up e Down function s
155. cida 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 3 1415926536 Figura 392 Teste da fun o bissecao 11 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 S E a e tata tato ou lembrando que 0 1 D i i 0 Esta s rie converge para qualquer valor de x Nos 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 quando i tende para infinito 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 393 11 Algoritmos Num ricos 238 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 endfunction Figura 393 Cabe alho da fun o expTaylor Para testar esta fun o o programa expTaylor teste mostrado na Figura 389 l um valor para a toler ncia Depois repetidamente l valores para a vari vel x calcu
156. cifica 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 de um algoritmo para a solu o de um problema A complexidade 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 algor tmica 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 Circuitos Combinatorios 42 2 Circuitos Combinatorios Computadores transformam inf
157. cional moderno e O programador produz um arquivo texto com o programa escrito em uma linguagem de alto n vel esta forma do programa conhecida como programa fonte e Dependendo do seu ambiente de desenvolvimento e de execu o o programa fonte pode ser compilado isto utilizado como entrada para um compilador que produz um c digo execut vel tamb m chamado de programa objeto armazenado como um outro arquivo ou pode ser interpretado isto utilizado como entrada para um interpretador que se encarrega de produzir diretamente o efeito do programa e Programas em linguagem de alto n vel s o compostos por comandos Compiladores examinam o programa fonte completo antes de produzir o programa objeto enquanto interpretadores podem examinar e executar comando por comando do programa fonte e Compiladores e interpretadores s o programas como quaisquer outros sendo resultado da compila o de programas fonte e Um programa objeto composto por instru es execut veis pelo processador alvo para cada arquitetura de processador necess rio adaptar o compilador ou construir um novo Com isso um mesmo programa fonte pode ser utilizado em computadores com diferentes arquiteturas desde que existam compiladores de sua linguagem para estas arquiteturas e Programas efetivamente especiais s o os sistemas operacionais como Windows Linux ou MacOS Sistemas operacionais coordenam o uso do processador cujo tempo dividido entre a e
158. circuito 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 ealguns leds que animam a festa Ap ndice A A CPU Pipoca 287 Brann Table D T a 7 au Branch Table OpCode A 16B ROM D 1 DR DBus 1 DR Clk Microprogram Control 256B ROM D C Clk pese Signal D amp El ft Subtract 64 ACC gt DBus impIMMEDIATE ACC Clear i jmpINDIRECT i ACC Clk ERROR i e MAR Clk UI MAR gt Abus 1 PC ABus 1 PC Force IPC Clk 1 Operand gt DBus IR Clk 4 RAM gt DBus Out Full IRAM Clk 1 Out Clk S D q 1 In DBus Reset CLOCK Timing a a ein Clk cee AAG 6 1 SetinEmpty prat 6 4 SetOutFull Figura 458 A unidade de controle 7 OCiclo 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
159. cohecsaicusd caviconctnninatavavicated waive dO aa a oun tatis 173 7 9 Gera o e Impress o de uma Tabuada de Multiplica o 175 PO SAPQUIVOS punido ncia Si Di e Rd oie 176 ALL Matrizes de Stines e ArquUIVOS sissssisafaas tide AA A ene aces 178 7 12 Matrizes Num ricas e ARQUIVOS neirens en acct eon R 179 PAS Desenhando MADAS pi iepsada Pops aga T Des SO PU aeano uel we edata eco latacenceaet 181 or FONC OS tai Re nn dia Saiba oo Pe aa Rida Pe ne no E aC ee N aaa 185 8 1 Fun es e Reaproveitamento de C digo cesccccseseccccessececeeseceeeuseceeseneceeeeueeetas 185 8 2 Formare FUNCIONAMENTO carenta a a aoe hie N 187 8 3 F n oes arquivos Tonte e O SCIIAD sau abs dadas a Saad salas 189 8 4 Fun es e Encapsulamento de Detalhes e mais sobre arquivos 190 8 5 Fun es e Desenvolvimento TOP COWN cccccsssececesecceceecceceesececeeeecesseneceesenesetes 193 Conteudo 8 6 PUINECOCS RECUISIV AS spp sah wears SS A PS SS 195 9 AlPOrtmos POSOUIS aasec teeters Sessacccees A A 198 9 1 pDerinic o e CaracterIStiCAS onena aa N ANAA 198 9 2 FALOLACHO aa r a able see a N a a 200 9 3 Melhorando a Fatora o 1452 08 n n einen saphaeesagtecaiewsanas tuabodoassaniaeaaeene 204 9 4 PESQUISA atas ada dora Deda Ca ED ADE Ri E 206 9 5 pesquisa Sequencial siso srs elason decido asd na ua sida Ro 206 9 6 Pesquisa BI ial aaria aoasaccuesunnts Rss O a a sadios ara d LER 207 10 ORG CNC AO asda aE E E E EE ENA E natn
160. como uma soma de pot ncias de 2 Para isso procuramos em uma tabela de pot ncias de 2 como a tabela na Figura 49 mas talvez maior pois 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 da Figura 49 a maior pot ncia de 2 que n o excede 59 32 Repetindo o racioc nio temos 59 32 59 32 32 27 Desta forma progredimos at que a parcela restante a converter como soma de pot ncias de 2 seja igual a zero Aconverter 123 59 27 11 3 1 0 Pot nciade2 64 32 16 8 2 1 Figura 51 Conversao do decimal 123 para binario 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 Circuitos Combinatorios 45 yellow green cyan 255 255 0 0 255 0 0 255 255 0 0 0 is black 255 255 255 is white 255 0 0 is red 0 255 0 is green red 0 0 255 is blue 255 0 0
161. conjunto destes dois comandos gt d uigetdir C Documents and Settings osvaldo My Doc uments My Dropbox Ensino dcc001 201 2 2 M dulo 05 gt arquivos listfiles d arquivos M dulo5 2012 2 pptx M dulo5 2012 2 pdf Modulo 05 zip Eq2g3 sce Eq2g2 sce Eq2g1 sce Eq2g sce Figura 279 Exemplo de uso dos comandos uigetdir e listfiles 7 11 Matrizes de Strings e Arquivos E possivel ler um arquivo e transformar todas as suas linhas em um vetor coluna de strings cada uma de suas linhas sendo lida em um elemento do vetor Para isso deve ser usado o comando mget1 f onde f um nome de arquivo normalmente obtido com uigetfile f uigetfile linhas mgetl f Figura 280 Leitura de um arquivo como um vetor coluna de strings usando o comando mget1 A Figura 280 mostra um uso t pico do comando mget1 precedido pela localiza o e da abertura do arquivo e seguido pelo fechamento do arquivo 7 Loops 179 gt linhas linhas _ Jos Notepad IE agora Jos File Edit Format View Help A festa acabou E agora Jos al a luz apagou festa acabou luz apagou O povo sumiu povo sumiu ta noite esfriou noite Fur le agora Jos agora Jos agora voc le agora voc voc que sem nome Ivoc que sem nome que zomba dos outros voc que faz versos que zomba dos outros que ama protesta Ivoc que faz versos e agora Jose que ama
162. cos NOT amp AND e OR definidos como voc pode esperar exatamente como na Figura 57 p gina 48 gt maior que gt maior ou igual a menor que menor ou igual a lt gt ou diferente de Figura 187 Operadores relacionais Express es l gicas frequentemente fazem uso de compara es entre valores de express es aritm ticas para obter um valor l gico A Figura 187 mostra os operadores relacionais usados no Scilab onde voc pode reparar que igual a representado por dois adjacentes uma heran a da linguagem C e que existem duas formas de representa o de diferente de Programas Scilab 139 gt b 241 Figura 188 Exemplos de express es l gicas utilizando operadores relacionais Al m de valores l gicos vari veis Scilab podem armazenar outros dados n o num ricos Na Figura 189 n s vemos exemplos de como atribuir sequ ncias de caracteres o termo usado em ingl s strings a vari veis gt a Programa o a Programa o gt b de b de gt c Computadores Q Computadores Figura 189 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 atbt ec Disciplina Programa o de
163. criado para se contrapor a hardware mais duro constitu do por circuitos concretos Software muito mais flex vel Ap ndice A A CPU Pipoca 272 executado pela EAN carregado 4 na Figura 436 Um programa deve estar codificado em bits para ser carregado em alguma 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 EN composto Instru es Figura 437 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 em princ pio l a l Programa Programador tem peca resotvide por s o diferentes Expressa ip Codifica es de Siam paluchy CUm m ta ne no
164. croinstru 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 8 Microinstru es de Desvio Desvia para a micro instru o inicial da jmpNext 0000 a instru o no registrador IR da CPU Desvia para o operando se o modo de jmpIMMEDIATE 1 0001 endere amento for Imediato Desvia para o operando se o modo de jmpDIRECT 2 0010 endere amento for Direto Desvia para o operando se o modo de impINDIRECT 3 0011 j 4 endere amento for Indireto Situa o inesperada n o deveria error 0100 i acontecer Acende um led Desvia para a micro instru o apontada return f pelo registrador Return Addr 5 0101 0110 Desvia para o operando e armazena o endere o consecutivo no Return Addr Desvia para o operando se D ACC for jmpEQ 7 0111 igual a 1 Desvia para o operando se D gt ACC for jmpGT RR igual a 1 4 1000 Desvia para o operando se D lt ACC for jmpLT 1001 igual a 1 Desvia para o operando mp 10 1010 aa 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 nu E novas microinstru es j 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 reap
165. cuta programas formados por micro instru es onde cada micro instru o codifica sinais de controle ou literais sem necessidade de interven o humana na execu o Mas temos ainda que resolver dois problemas como construir um programa e como fazer para colocar este programa na mem ria de micro instru es da CPU 0 4 Processadores 104 Micro instrucao 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 44 0 Efeito Sinais Da micro instru o Literal Acumulado In Dbus Literal Bus In Clk ACC Clear MAR Clk ACC Bus RAM Bus RAM Clk DR Bus DR Clk Out Clk Compare Clk ACC Clk ACC 0 Literal 1 Carrega no Bus Literal acumulador o MAR Bus conte do da posi o 1 Bus RAM da RAM ACC ACC Bus Soma ao acumulador o conte do da posi o 2 da RAM Armazena o conte do do acumulador na posi o 3 da RAM P 15 O DM U me LL po am es REM REM men Figura 148 Construindo um programa para a CPU 0 Para programar a CPU O n s podemos usar uma tabela como a da Figura 148 cujas colunas se dividem em 3 agrupamentos e Endere o que indica em qual posi o da memoria de programa a micro instru o deve ser armazenada e Micro instru o onde s o colocados pelo programador os 24 bits que comp em a micro instru o propriamente dita na figura posi es com valor zero est o em branco para n o poluir visualmente a tabela
166. da 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 exec Primo3 sci exec seqSearch sci argqTab uigetfile txt pwd Arquivo com Tabela tabPrimos fscanfMat arqTab n input n while n gt 2 timer eh Primo Primo3 n tabPrimos tempoGasto timer Imprime o resultado printf nTempo gasto g segundos tempoGasto if eh Primo then printf nO n mero d primo n n n else printf nO n mero d n o primo n n n end n input n end Figura 333 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 334 9 Algoritmos Pesquisa 207 function ePrimo Primo3 n tabela ePrimo seqSearch n tabela 1 endfunction Figura 334 A funcao Primo3 A fun o seqSearch mostrada na Figura 335 implanta uma pesquisa sequencial Ali podemos observar que 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
167. dados e de opera es sobre estes dados de forma muito elegante e Basic criada em 1964 e que bastante tempo depois 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 42 The History of Programming Languages O Reilly Media acessado 7 de mar o de 2011 http oreilly com news languageposter_0504 html 43 Ibidem Programas Scilab 120 Existem ainda linguagens que seguem outros paradigmas de programacao como linguagens funcionais das quais LISP provavelmente a mais importante e linguagens l gicas como Prolog p submetido 5 Compilador a Codigo Executavel composto Comando 2 S o executados __ Interpretador Programa P por Ed um a um por C digo Execut vel C digo Execut vel M o eee comando n gera utilizam s o executados controla gt Dispositivos Figura 167 Compiladores interpretadores e sistema operacional A execucao de programa feito em uma linguagem de alto nivel depende de um processo de compila o ou interpreta o A Figura 167 mostra um arranjo t pico de componentes de software em um sistema computa
168. difica o para a separa o de pol gonos 46 Applications with Scilab Maxima Geogebra acessado 28 de setembro de 2011 http www wolffdata se 47 Download PSPad free unicode developer editor handles near any syntax like HTML PHP XHTML JavaScript ASP Perl Cand many other languages with HEX editor multilanguage interface acessado 6 de marco de 2013 http www pspad com en download php 7 Loops 184 EOR Mit acces FG ala TH 47 46 46 47 5 57 6 50 55 39 Dl S999 9999 61 37 49 1 1 1326 Figura 291 Arquivo world txt aberto com o editor PSPad 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 Isso se deve a uma restri o do comando fscanfMat que s capaz de ler n meros Fa a agora um programa que 1 Leia este arquivo em uma matriz Mapas Use para isto as fun es uigetfile e fscanfMat 2 Extraia desta matriz dois vetores Lat e Long correspondendo s duas colunas da matriz lida 3 Substitua nos vetores Lat e Long os valores 9999 por Snan 4 Use plot2d para obter o desenho do mapa representado no arquivo 8 Fun es 185 8 Fun es Fun es s o e uma ferramenta de modulariza o da mais alta import ncia para a programa o e e um mecanismo lingu stico para a prescri
169. do 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 utilizando o m todo da bisse o 11 Algoritmos Num ricos 235 function r bissecao f a b tol se f continua 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 385 Cabecalho da funcao bissecao A Figura 385 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 continua 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 386 Gr fico de f x e sinx A fun o f x e sin x cujo gr fico est mostrado na Figura 386 satisfaz a estes requisitos pois e cont nua
170. do o Scilab como Calculadora ccsssssssccccccccseeesseeeccccessaeeeseeeeceeeesaueaeeeeeeees 127 5 5 Programas 5 Cll 0 ss ass ias agia ads Dada ro o ad Eni ni s 132 5 6 Valores Logics e StrINAS spas raspadas saida saias oca bind a Sd Slate d 138 5 Uscomandosar Ehenselse COLINAS rea 141 O MaE si N E SO Ra ee eee ee rere ee 145 6 1 Matrizes e Comandos de AtriDUICAO cceeccccessececeesecccceeeceeceesececeueecesseaeceeseeeeeetas 145 6 2 Aritmetica VARIG Alagados a OG S 148 6 3 CONSITUINGO Matri ZE Sapia a a aa r a Ses tnreeaaande 152 6 4 Matrizes e Grafico Sienra n E SD 154 6 5 Graficos SD sspasasatacechya Dad REA SAN EE Ra 157 6 6 Matrizes de Strings sais Soli ee E O OPA LADA 159 6 7 Matrizes e Expressoes L BICAS arcar detidas ssa l add dad a dia ade 161 de OOPS atri es eRe tn ne Roo aro er ONDE eee ee ene ee eee 163 7 1 Ocomando WNT ie sei chins eae eae ete aaa ha lynne lene ED asa ace 163 7 2 Loop para o C lculo de FatOrial sitsiccascacsisscueicopseieetbedeienssashacesiaidvassasieeesabeloasaa iaGpauent 164 7 3 Loop para o C lculo da Soma dos Elementos de um Vetor ccccceeescceeeseeeeseeenees 165 7 4 Loop para encontrar o Menor Valor presente em um VetOF cccccssecccesseeceeeeeeeees 166 75 Loop para encontrar o M ximo Divisor Comum usando o Algoritmo de Euclides 167 7 6 COIN AIO TO Eora costa ened a a a 169 7 7 GEraca0 e lmMpressa0 de Tabelas sanada canis tesserae aes eee 170 7 8 Comandos AninhadoS wasair
171. e um fen meno de sucesso entre engenheiros e cientistas O Matlab um interpretador 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 e fator importante para sua escolha gratuito O Scilab tamb m um ambiente de desenvolvimento e interpreta o de programas a vers o utilizada neste texto a 5 4 0 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 Linguagens de programa o s o linguagens formais assim chamadas por contraste com linguagens naturais como portugu s ou ingl s 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
172. e Tudo bem mas porque s 2 s mbolos Se os projetistas de computadores tivessem sido 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 Computadores e Informa o 23 equipamentos eletr nicos onde s mbolos devem ser representados por voltagens ou correntes el tricas ou por outras grandezas f sicas Se tivermos apenas dois n veis de voltagens ou de correntes a distin o dos s mbolos fica muito mais confi vel Bits s o baratos e ocupam muito pouco espa o quando anotados em suportes eletr nicos O notebook utilizado para escrever este texto em 2012 tinha 4GB 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 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 Muito frequentemente um fen meno natural usado para converter o fen meno f sico medido em impulsos el tricos e estes impulsos s o sinais de entrada usados na convers o an logo
173. e amento operando efetivo no DR 42 66 om Saida do DR vai para Dbus pino Subtract da ALU 1 43 67 oO ACC copia a sa da da ALU ACC Dbus 44 68 jmp Fetch Fetch da pr xima instru o Figura 472 Micro c digo para as instru es ADD e SUB Na Figura 472 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 473 se encarrega de resolver o modo de endere amento colocando o operando efetivo da instru o no registrador DR Comments q ZIL 3 3 E L lt 05 5 GetOperand jmpIMMEDIATE Immediate 06 6 jmpDIRECT Direct Desvia para micro instru es apropriadas 07 7 jmpINDIRECT Indirect 08 8 error GetOperand Modo de endere amento inexistente 09 9 Immediate O operando da instru o vai para o Dbus OA 10 DR copia o Dbus OB 11 return oc 12 Direct oO O operando da instru o vai para o Dbus OD 13 Ro MAR copia o Dbus sa da do MAR vai para o Abus OE 14 o Sa da da RAM vai para Dbus OF 15 0 10 16 return 11 17 Indirect ol O operando da instru o vai para o Dbus 12 18 o MAR copia o Dbus sa da do MAR vai para o Abus 13 19 Ro Sa da da RAM vai para Dbus 14 20 oO MAR copia o Dbus sa da do MAR vai para o Abus 15 21 o Sa da da RAM vai para Dbus 16 22 o DR copia o Dbus 17 23 return Retorna Figura 473 Micro c digo para a subrotina GetOperand Com exce o da instr
174. e if key table low then position low else position 1 end end endfunction Figura 337 A funcao binSearch A fun o binSearch Figura 337 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 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 9 Algoritmos Pesquisa 209 e acada 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 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 a 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 po
175. 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 Arecursividade 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 e Como dom nio de uma linguagem de programa o n s pudemos atacar problemas de transforma o de informa o muito mais elaborados 13 Pr ximos Passos 262 Problemas de transforma o de informa o s o em princ pio resolvidos por algoritmos m todos que prescrevem sequ ncias de transforma es 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
176. e do Scilab no momento em que o editor aberto Um conselho organize os seus arquivos Perde se muito tempo procurando arquivos gravados aonde mesmo O autor destas linhas cria um diret rio para cada m dulo do curso onde s o colocados todos os arquivos que ali 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 z gt Eq2g1 sce C Users Osvaldo Documents My Dropbox Ensino dec001 2011_1 Semana_06 Arquivo Editar Buscar Preferences Window Executar LGRIGBR ISB A IRGD ZE D Eq2g1 sce 4 IF indica que a linha um coment rio delta b 2 4 a c b sgrt delta 2 a b sgrt delta 2 a O on nome WN Figura 182 O SciNotes editando o programa Eq2g1 sce A Figura 182 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 Eq2g1 sce usamos um n mero no nome do arquivo porque faremos outras vers es deste mesmo programa As duas primeiras linhas do programa Eq2g1 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 leito
177. e fitas magn ticas por exemplo estejam dispon veis em quantidade suficiente todos pequenos e grandes s o capazes de realizar as mesmas transforma es de informa o As computa es nome t cnico para transforma es de informa o que micro e supercomputadores conseguem realizar s o as mesmas que um dispositivo te rico a m quina de Turing capaz de fazer Este dispositivo te rico foi constru do com a ambi o de capturar a no o de computabilidade isto da possibilidade de se resolver um problema de transforma o de informa o de forma efetiva como uma composi o de passos garantidamente realiz veis Isso foi proposto pelo matem tico ingl s Alan Turing em 1937 1 alguns anos antes do funcionamento do primeiro computador eletr nico As possibilidades de transforma es de informa o s o as mesmas para computadores pequenos e grandes r pidos e lentos mas a velocidade com que a informa o transformada pode diferir por v rias ordens de grandeza Em muitos casos a velocidade que determina em o valor da informa o obtida Qualquer computador pessoal com disponibilidade de 14 ENIAC Wikipedia the free encyclopedia acessado 16 de fevereiro de 2012 http en wikipedia org wiki ENIAC 4 Alan Turing Wikipedia the free encyclopedia acessado 11 de mar o de 2011 http en wikipedia org wiki Alan Turing 16 Alan M Turing On Computable Numbers with an Application to the
178. e 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 Operand10 a f rmula para a c lula 2 12 IF ISBLANK G2 0 1F 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 este 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 formula para a c lula J2 J2 H2 2412 F2 2410 12 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 Erro Fonte de refer ncia n o encontrada Para a coluna Word16 a f rmula para a c lula K2 H2 DEC2HEX J2 4 que converte o valor decimal para um hexadecimal com 4 digitos Ap ndice A A CPU Pipoca 300 File Edit Format View Help v2 0 raw 3012 8412 1000 5010 Figura 483 Arquivo com imagem de memoria para o programa SearchTable Para obter um arquivo com o mapa de memoria 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 v
179. e pelo Logisim para o controlador de display hexadecimal 2 9 Compara o de bin rios sem sinal Figura 108 Entradas e sa das de um circuito comparador Vimos na se o 2 5 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 de digamos 32 bits cada uma codificadas como bin rios sem sinal A sa da do circuito deve indicar sea b a lt b oua gt b como mostrado na Figura 108 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 da tabela 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 Circuitos Combinatorios 78 SSSR SSF se b te a o Re a o Figura 109 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 109 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
180. edia the free encyclopedia acessado 12 de agosto de 2011 http en wikipedia org wiki File MagneticMedia png Computadores e Informa o 35 1 7 Organiza o do Conte do 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 e da an lise 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 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 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
181. emos da intera o com o usu rio e nos preocupamos somente com a procura 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 unica 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 8 6 Fun es Recursivas Vamos agora examinar o uso de fun es para a prescri o de comportamentos repetitivos N s vimos que uma fun o pode chamar outra fun o que pode tamb m chamar outra fun o que pode ainda 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 algoritmos Como um primeiro exemplo vamos mostrar uma fun o recursiva para o c lculo do fat
182. emplo de uso do comando exec est mostrado na Figura 304 8 Fun es 190 exec fatorial sci n input n k input k nComb fatorial n fatorial n k fatorial k Figura 304 Programa principal para o c lculo de combina es com o comando exec 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 Scilab veja a Se o Erro Fonte de refer ncia n o encontrada 8 4 Fun es e Encapsulamento de Detalhes e mais sobre arquivos Fun es servem tamb m para isolar detalhes de uma aplica o em uma parte bem definida de um programa Vamos ilustrar isso mostrando mais possibilidades de tratamento de arquivos no Scilab conhecimento que em si tamb m bastante til N s j vimos na Se o 7 11 como ler e escrever todas as linhas de um arquivo com os comandos mgetl e mput1 e na Se o 7 12 como ler e escrever arquivos para e de matrizes num ricas com os comandos fscanfMat e fprintf Mat Isso n o o suficiente para o tratamento de arquivos com formatos de uso muito frequente como os que veremos aqui arquivos com campos em colunas pr fixadas e arquivos com campos separados por v rgulas ou por outros caracteres Para isso vamos precisar de outros comandos de uso um pouco mais complicado mas que permitem tratar arquivos de forma mais flex vel O comando d arq mopen nomeArg xr abre um arquivo par
183. er executada O novo conte do depende do sinal aplicado entrada Force New Address do mPC o sefor igual a O ser o endere o consecutivo ao conte do anterior o sefor iguala 1 ser o conte do da entrada New Address 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 jmpilmmediate 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 amicroinstrucao corrente jmplInFull e InFull 1 ou jmpOutEmpty e OutEmpty 1 se a microinstru o for de desvio condicional e a condi o estiver b satisfeita com o valor se a microinstru o for do tipo Signals com o valor ne se a microinstru o _ F for de desvio condicional e a condi o n o estiver O com o valor se a microinstru o ER for jmpNext com o valor _ __ h q da saida de se a microinstru o r for return com o valor Figura 467 A es em t2 Carga do ocasiona Registrador mPC 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 d
184. erations bitand AND e aplicado as representa es bin rias dos argumentos de entrada O bitor OR ou aplicado s representa es bin rias dos argumentos de entrada bitemp bitwise complement bitget bit at specified position bitset set bit at specified position O bitkor bitwise XOR Matematica discreta binomial probabilidades de distribui o binomial O factor fatora o perms retorna todas as permuta es dos componentes de um vetor O primes fun o dos primos Figura 174 Lista de fun es elementares encontrada no help do Scilab A constru o e a compreens 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 23X4 212 4096 ou o valor 2 x 4 8x 4 32 A Figura 175 mostra as prioridades empregadas pelo Scilab no c lculo de express es Ali vemos que a potencia o tem prioridade sobre a multiplica o e portanto o valor atribu do a x pelo comando acima ser 23 x 4 8 x 4 32 Figura 175 Prioridades de operadores aritm ticos Se a inten o do programador era atribuir a x o valor 23 4 212 2048 par nteses deveriam ter sido usados no comando de atribui o como em x 2 3 4 Programas Scilab 126
185. ero quando tivermos a 1 e b 1 valores que fazem com que a sa da esteja conectada ao ponto de terra Circuitos Combinatorios 55 Figura 68 Porta AND com 3 transistores Para obter uma porta AND usando transistores basta inverter a saida de uma porta NAND como mostrado na Figura 68 Uma porta OR pode tamb m ser obtida conectando a saida de uma porta NOR com a entrada de uma porta NOT 2 4 Introdu o ao Logisim O Logisim um simulador de circuitos l gicos com objetivos did ticos que voc deve baixar pela Internet e instalar em seu computador Este texto segue o tutorial que pode ser visto na ajuda do sistema Ao iniciar o Logisim voc ver uma tela como a mostrada na Figura 69 talvez diferindo em alguns detalhes Ali podemos ver uma barra de menu icons de componentes de uso frequente um card pio de componentes e um painel para o desenho efetivo de circuitos 36 Carl Burch Logisim acessado 20 de agosto de 2011 http ozark hendrix edu burch logisim Circuitos Combinatorios 56 Arquivo Editar Projeto Simular Janela Ajuda ae eo e a ma e a a a a a a aa a am Figura 69 Tela inicial do Logisim Para o nosso primeiro circuito vamos implementar 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
186. esa que vende e mant m o MatLab a linguagem teve origem na ideia de colocar c lculos matriciais em sua sintaxe ao inv s de utilizar chamadas de sub rotinas como se faz em Fortran De uma forma geral MatLab n o conhecido em departamentos de Ci ncia da Computa o a exce o dos que trabalham em reas como aprendizado de m quina ou vis o computacional 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 import ncia conceitual como linguagem de programa o Bryant et al chegam a afirmar que Matlab really is a language for manipulating matrices not a general purpose programming language Pois mesmo n o sendo uma linguagem de programa o de prop sito geral MatLab tem os construtos b sicos de atribui o decis o repeti o recursividade e modulariza o Isso largamente suficiente para os prop sitos deste curso como pode ser visto nos muitos exemplos deste texto Al m disso o sucesso pr tico do MatLab sem qualquer d vida enorme Ao apresentar a linguagem M para o MIT em 2005 McKeeman inicia dizendo as it turns out the computer science department is about the only part of MIT that does not use MatLab Ele continua MATLAB has grown over 20 years from academic research into a generalized tool for a wide variety of applications including vehicle c
187. essoras alto falantes Existem tamb m atuadores especiais como bra os mec nicos usados por rob s como mostrado na Figura 32 Computadores e Informacao 31 Digital K Na recebida enviada pelo computador de pelo computador para Y incluem incluem Entrada de Rede Sa da de Rede de Computadores de Computadores permitem a forma o de Redes de Computadores i Figura 33 Redes de computadores Entradas e saidas de rede sao particularmente importantes pois permitem a conexao 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 1 6 Mem rias Mem rias t m fun o an loga a papel e l pis 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 e 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 e 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 ar
188. esvio ele ser Ap ndice A A CPU Pipoca 291 o o conte do da mem ria Branch Table no endere o dado por OpCode se a microinstru o corrente for jmpNext o endere o na Branch Table da posi o que cont m o r informa pas oitenta endere o da primeira das microlnstru es que implementam a Instru o na Cb Carga do se a microinstru o Registrador for jmpNext com o valor mPC da saida de Figura 468 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 Micro programa Branch Table ADD COMPARE HALT INPUT JMP JMPEQ JMPGT JMPLT LOAD OUTPUT STORE SUB Micro instru es para ADD Micro instru es para COMPARE Micro instru es para HALT Figura 469 A Branch Table e o micro programa A Figura 469 mostra o relacionamento entre a Branch Table e o micro programa Ap ndice A A CPU Pipoca 292 8 OMicro Programa r constr i l composto Montagem de Microinstru es Microinstru es a Microprog rama era gravado na 1 Montagem da Branch Table Branch Table of Pra tr f E Binaria gravada na oa Figura 470 Constru o do micro programa e da Branch Table
189. eus filhos o n imediatamente acima de um n seu pai e assim por diante N s sem filhos s o chamados folhas rvores s o comumente desenhadas de cabe a para baixo com a raiz encima e as folhas embaixo A Figura 404 mostra uma rvore bin ria isto uma rvore onde cada n tem no maximo 2 filhos Figura 404 Uma rvore bin ria A profundidade de um n em uma rvore o n mero de passos necess rios para se chegar a ele partindo da raiz que consequentemente tem profundidade 0 A Figura 405 mostra as profundidades dos n s da rvore da Figura 404 12 Complexidade de Problemas 245 Figura 405 Profundidade em uma rvore Uma rvore de decis es associada a um algoritmo de ordena o por compara o claramente uma rvore bin ria onde os n s s o as compara es e folhas s o as compara es que levam ao t rmino do algoritmo e portanto a uma permuta o de ndices O n mero de compara es realizadas por um algoritmo no pior caso a maior profundidade dessas folhas Qualquer algoritmo correto de ordena o por compara o deve ser capaz de ordenar qualquer permuta o de um vetor com n elementos distintos Cada permuta o da entrada deve produzir al m do vetor ordenado uma permuta o dos ndices no vetor inicial de sa da Portanto para uma entrada de tamanho n a rvore de decis es dever ter n folhas n mero total de permuta es dos n elementos Para conseguir um limite m
190. eus mnem nicos e tamb m usando nomes labels dados a posi es de mem ria e n o os endere os efetivos Isso torna o programa muito mais f cil de se escrever e se ler Os bits de cada instru o s o depois obtidos por uma substitui o cuidadosa dos mnem nicos e dos nomes de posi es de mem ria por seus c digos em bits em um processo que chamamos de montagem da instru o 4 Processadores 113 O gt J WN N era o acumulador oloca O em SUM arrega o endere o X no acumulador oloca o endere o X em P arrega o conte do de SUM no acumulador Soma o conte do da posi o de mem ria cujo endere o P ao acumulador oloca o resultado na posi o SUM arrega o conte do de P 72 O x o C lt O O WL 1 O i Q n C lt gt Q w SUM 5 9 wale WN TORE MPARE MPLT P UTPUT O oloca o resultado em P E ompara XEND com o acumulador INISH Se for menor desvia para FINISH OOP en o volta para LOOP UM oloca o resultado na sa da of pm ifsho 4542 Co fafaa 48325 N meros a serem somados a Ee fra XEND 1 19 13 8736 sumj 1 20fs4 S Jo Soo Pjijajis jo S Figura 161 C digo fonte de um programa para uma CPU simples Z O O gt lt pa J a O 3 fe pa O pa TI WN lt mm WN E O pa WN O L gt 4 O gt w a pa T gt E gt I LOOP SS DD o o o Do
191. executada A instru o lida da mem ria no endere o dado pelo conte do do registrador PC e colocada no registrador IR l uma usa o endere o coloca a instru o instru o da armazenado no lida no rc Ur Figura 441 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 Ap ndice A A CPU Pipoca 274 pode _ modificar determina now valor gt BB para Figura 442 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 alimenta E 72 j F s o control
192. fica es no circuito pois a id ia que essa troca de programa seja uma opera o de f cil realiza o Se isso o que queremos um programa s pode ser em seu formato final informa o codificada em bits que deve ser carregada em alguma mem ria para sua execu o Para eliminar a necessidade de interven o humana durante a execu o do programa uma unidade de controle deve ser adicionada calculadora Ao executar um programa a unidade de controle deve se encarregar das tarefas executadas na calculadora pelo operador Logisim que s o e emitir sinais de controle e e fornecer valores literais Vamos construir uma primeira unidade de controle usando as seguintes id ias e para sua execu o o programa deve ficar armazenado como uma sequ ncia de palavras em uma mem ria RAM por raz es que veremos depois chamamos cada palavra desses programas de micro instru o e acada sinal de controle da calculadora deve corresponder um bit nas micro instru es e a unidade de controle implementa um ciclo de leitura em sequ ncia de micro instru es da mem ria com o programa manipulando adequadamente a entrada de endere o da mem ria e em cada ciclo os bits de cada palavra lida s o encaminhados para as sa das da unidade de controle que s o ligadas aos pontos de controle da ex calculadora Micro instru o 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 e 7 6 5 4 3 2J17o ais
193. 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 chips de circuitos integrados e Cada chip abriga dois processadores que s o os circuitos que efetivamente realizam c lculos computacionais 17 Home TOP500 Supercomputing Sites 18 SciDAC Review SIMULATION SCALE In HPC Simulations How Much is ENOUGH acessado 2 de agosto de 2011 http www scidacreview org 0801 html scale html Computadores e Informa o 17 Na Figura 7 as sucessivas decomposi es param por aqui mas na verdade um processador ainda uma estrutura bastante complexa Memory Controller Core Core Core Core Core Core cy o uw 4 MISC HO and UP Shared 3 Cache Shared L3 Cache Queue andiUritore Figura 8 Chip do processador Intel Core i7 980X Olhando para a imagem Figura 8 de um chip do processador Intel Core i7 980X este n o o chip usado no Blue Gene lan ado em 2010 n s podemos visualmente distinguir ali diversos sub modulos Se pud ssemos olhar ainda mais de perto veriamos que este chip cont m nada menos que 1 17 bilh es de transistores espremidos em uma rea de apenas 248 mil metros quadrados Fazendo agora um zoom na dire o contr ria temos a Internet a rede mund
194. file O usuario pode escolher um entre os nomes de arquivos listados na janela ou optar por um novo nome para um arquivo ainda n o existente 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 a vari vel na Figura 278 gt f uigetfile title Escolha um arquivo Cc Users Osvaldo Documents dcc Ensino dcc001 Scilab Dados ConstrCivil txt Figura 278 String com rota completa obtido com uigetfile Outras formas de uso do comando uigetfile sao e Arg uigetfile o Mais simples para programar mas nem t o bom para o usu rio e Arg uigetfile txt pwd Escolha um arquivo o Um pouco mais complicado por m pode oferecer mais conforto para o usu rio pois o S s o mostrados os arquivos selecionados por um filtro no caso o filtro txt que seleciona somente arquivos com termina o txt e 7 Loops 178 o a janela de escolha do arquivo tem o t tulo Escolha um arquivo o eexibe 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 Outros comandos teis s o o uigetdir que serve para a localiza o de diret rios e o listfiles que retorna um vetor de strings com os nomes de todos os arquivos em um diret rio A Figura 279 um exemplo de uso
195. gica Mas podemos fazer circuitos l gicos que fazem contas Ora como o nome indica computadores Circuitos Combinatorios 62 computam isto fazem contas e sabemos portanto que a resposta afirmativa Mas como o que veremos nesta se o 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 dez 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 ser 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 ou computar uma fun o qualquer significa transformar a representa o de seus argumentos na representa o do valor da fun o coisa que j fazemos ao seguir as regras da aritm tica que aprendemos no ensino prim rio A Figura 80 mostra as entradas e sa das do circuito que pretendemos construir Figura 80 Entradas e sa das de um somador de 1 bit Para especificar exatamente qual a transforma o de informa o que esperamos deste circuito vamos utilizar uma tabela da verdade Uma tabela da verdade apresenta o valor de uma ou mais fun es l gicas as sa das do circuito correspondendo a cada combina
196. grama 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 entrada 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 45 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 45 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 que pela aplica o de uma sequ ncia de opera es produza 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
197. grama 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 oom Repare na aus ncia dos em quase todos os comandos queremos 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 vetor 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 342 n s vemos uma ilustra o deste m todo e No primeiro passo o menor elemento entre 1 iguala 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 temo 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 fo
198. ha do arquivo de descritor d arg atribu da vari vel Linha o comando linha mgetl d arg 3 colocaria em linha 3 linhas do arquivo para extrair as informa es contidas em cada linha a fun o part de extrema valia pois com ela podemos obter strings que correspondem a uma parte de um outro string a fun o eval utilizada para obter o valor num rico de um string com algarismos pontos e sinais decimais a fun o stripblanks serve para retirar brancos das extremidades de um string gt length ans 11 gt length stripblanks ans 3 8 Fun es 192 A Figura 309 mostra uma fun o que faz a opera o inversa isto grava um arquivo com o formato da Figura 306 a partir de dados presentes em tr s vetores function GravaAnoInscrNomes Ano Inscricoes Nomes arq n size Ano d arq mopen arg w for i 1 n mfprintf d arq 4d 8s 40s n Ano 1 Inscricoes 1 Nomes i end mclose d_arq endfunction Figura 309 Fun o para gravar um arquivo em formato de colunas fixas Aqui n s utilizamos a fun o mfprintf que a vers o de printf para gravar em um arquivos usando seu descritor a Pe ARO TSE A A A PR E E E 2010 92916906 ROMULO CAVALCANTI REIS 2012 12076661 LAIS LUA LARANJEIRA HENRIQUE 2002 15665183 DEBORAH CARSALADE MAGALHAES 2011 57086079 GUSTAVO SILVA PENA LELIS 2012 62618478 PEDRO PEREIRA MAURELLI 2009 29106821 BERNARDO VIEGAS SANTOS CARSALADE
199. hamada da fun o Uma fun o pode ter mais de um par metro formal de sa da a Figura 301 mostra um exemplo de defini o e de chamada de uma fun o com dois par metros formais de sa da function rl r2 eg2g a b c delta b 2 4 a c b sydt delta 2 a b endfunction Chamada da fun o eg2 raizl raiz2 eg2g x y z Figura 301 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 criadas pela execu o do corpo de uma fun o s o chamadas vari veis locais Na fun o da Figura 295 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 ou em outra fun o 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 em escolher nomes de vari veis que n o fossem utilizados por seus colegas Par metros de entrada de uma fun o podem ser valores num ricos strings valores l gicos matrizes de qualquer tipo e at mesmo uma outra fun o A Figura 302 mostra um exemplo de uma fun o que recebe uma fun o como par metro e que faz o
200. ho 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 para a 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 non opera es e para cada intercala 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 nlog2n Para se ter uma id ia da diferen a de desempenho entre o algoritmo de sele o e troca e o algoritmo de intercala o quando n 10 n 100 e nlogzn 31 22 quando n 1000 n 1 000 000 e nlog n 9965 e por a vai 10 Ordenacao 219 Sele o x MergeSort 2 0 4 Select N ERA 40 3 5 3 0 2 5 Tempos 2 0 1 5 1 0 l 500 1000 1500 2000 2500 3000 Tamanho Figura 356 Compara o de desempenho SelectSort vs MergeSort A Figura 356
201. html M R Garey e D S Johnson Computers and Intractability A Guide to the Theory of NP Completeness First Edition W H Freeman s d Magnetic core memory Wikipedia the free encyclopedia Acessado 12 de marco de 2011 http en wikipedia org wiki Magnetic_core_memory Mathworks MathWorks MATLAB and Simulink for Technical Computing Acessado 7 de marco de 2011 http www mathworks com Moore s law Wikipedia the free encyclopedia Acessado 3 de marco de 2013 http en wikipedia org wiki Moore_Law Muhammad ibn Musa al Khwarizmt Wikipedia the free encyclopedia Acessado 21 de agosto de 2012 http en wikipedia org wiki Mu E1 B8 ADammad ibn M C5 ABs C4 81 _al Khw C4 81rizm C4 AB Refer ncias 270 NCAR s MSS exceeds 2 petabytes Acessado 12 de agosto de 2011 http www cisl ucar edu news 04 fotoweek 0729 mss2 pb html Photographic film image Acessado 7 de mar o de 2011 http farm4 static flickr com 3444 3348244651 fefl6ef641 jpg Punched card jpg imagem JPEG 2406x1160 pixels Redimensionada 29 Acessado 22 de junho de 2013 https upload wikimedia org wikipedia commons f f3 Punched card jpg SciDAC Review SIMULATION SCALE In HPC Simulations How Much is ENOUGH Acessado 2 de agosto de 2011 http www scidacreview org 0801 html scale html Scilab Consortium Home Scilab WebSite Acessado 7 de mar o de 2011 http www scilab org
202. ia de programa e e um contador de programa denomina o que se d a registradores com a fun o de controlar o endere o aplicado a mem rias de programa e que cont m ou o endere o da instru o em execu o ou o endere o da pr xima instru o a ser executada Por uma quest o de uniformidade com os outros processadores que examinaremos aqui a mem ria de programa tem palavras de 24 bits o que faz com que os bits de 12 a 23 n o estejam sendo utilizados O contador de programa PC Program Counter tem o seu valor incrementado de 1 a cada subida do clock o que faz com que a sa da de dados da mem ria exponha em sucess o as micro instru es Como cada micro instru o determina o valor dos sinais de sa da n s temos o que quer amos a gera o autom tica de sinais de controle guiada por um programa carregado na mem ria 4 Processadores 100 Figura 143 Uma caixa de musica 28 o cilindro tem o papel da mem ria com um programa as sali ncias no cilindro t m papel an logo ao dos bits ligados em uma micro instru o O comportamento deste circuito lembra o de uma caixa de m sica como a que mostra a Figura 143 n o deixe de ver tamb m o v deo no YouTube muito bom onde o cilindro tem o papel de uma mem ria onde est gravado um programa Endere o DO 0 0 DO 0 0 Figura 144 Um contador de programa simples A Figura 144 mostra o circuito do contador de programa que um registrador
203. ia org wiki ENIAC Euclidean algorithm Wikipedia the free encyclopedia Acessado 8 de marco de 2011 http en wikipedia org wiki Euclidean_algorithm cite_note 2 File MagneticMedia png Wikipedia the free encyclopedia Acessado 12 de agosto de 2011 http en wikipedia org wiki File MagneticMedia png File Pdp 11 70 panel jpg Wikipedia the free encyclopedia Acessado 2 de setembro de 2011 http en wikipedia org wiki File Pdp 11 70 panel jpg George Boole Wikipedia the free encyclopedia Acessado 23 de fevereiro de 2012 http en wikipedia org wiki George Boole Home TOP500 Supercomputing Sites Acessado 7 de mar o de 2011 http www top500 org IBM Archives IBM Personal Computer Acessado 7 de marco de 2011 http www 03 ibm com ibm history exhibits pc pc_1 html IBM Card Sorters Acessado 22 de fevereiro de 2012 http www columbia edu cu computinghistory sorter html references John W Backus et al Preliminary Report Specifications for the IBM Mathematical FORmula TRANSlating System FORTRAN Computer History Museum 1954 http www computerhistory org collections accession 102679231 Ken amp Den picture Acessado 24 de setembro de 2012 http cm bell labs com cm cs who dmr picture html Lawrence Livermore National Laboratory BlueGene L Photo Gallery Acessado 11 de marco de 2011 https asc lInl gov computing resources bluegenel photogallery
204. ial que conecta quase todos os computadores do mundo A imagem da Figura 9 propositalmente lembra uma gal xia S o centenas de milh es de computadores na Internet todos interligados 19 Carlos Sosa e Knudson Brant IBM System Blue Gene Solution Blue Gene P Application Development IBM Redbooks SG24 7287 03 acessado 14 de fevereiro de 2012 http www redbooks ibm com redbooks pdfs sg247287 pdf Computadores e Informa o 18 Figura 9 Uma visualiza o da Internet pelo produzida pelo Projeto Opte 2 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 imenso e complexo arranjo envolvendo sat lites de telecomunica es cabos submarinos redes com e sem fios fibras ticas computadores telefones celulares circuitos integrados incrivelmente tudo isso funciona com algumas falhas verdade mas que n o 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 que comp em os computadores do mundo e suas redes mas que s o desenvolvidas de forma a permitir que para utilizar um m dulo seja preciso saber apenas o que esse m dulo faz e n o como ele realiza a sua fun o M dulos permitem a divis o de compet ncias Um programador profissional normalme
205. ica de Circuitos Combinat rios no Logisim A extra o de uma express o l gica e do circuito correspondente a partir de uma tabela da verdade um processo que pode ser automatizado e o Logisim oferece esta possibilidade Vamos aqui reconstruir o circuito de soma completa a partir de sua tabela da verdade usando o Logisim e vamos aproveitar para aprender como construir e utilizar m dulos neste sistema gt Logisim main de Sem t tulo Arquivo Editar Projeto Simular Ajuda bo x A D Minimizar Ctrl M Maximizar Close Ctrl W Analise Combinacional Prefer ncias SomaCompleta Sem titulo B B B B B B Figura 94 Abrindo a janela de an lise combinacional do Logisim Abra o Logisim e siga o menu Janela An lise Combinacional como mostrado na Figura 94 Na janela An lise Combinacional na aba Entradas insira os nomes a b e v que correspondem s entradas de um circuito de soma completa como mostra a Figura 95 Circuitos Combinatorios 70 Arquivo Editar Projeto Simular Janela Ajuda Figura 95 Definindo no Logisim as entradas do circuito Na aba Sa das insira os nomes VaiUm e Soma conforme mostra a Figura 96 Arquivo Editar Projeto Simular Janela Ajuda VaiUm Figura 96 Definindo no Logisim as sa das de um circuito Depois clique sobre a aba Tabela e entre com a tabela da verdade para o circuito de soma completa com os valores mostrados na Figur
206. icantes aproveitar para fazer subtra es usando 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 6 02 x 1023 e o di metro de um tomo de hidrog nio de 1 0 x 1078 metros Para o n mero de Avogadro n s dizemos que a mantissa ou significando 6 02 e o expoente 23 Este mesmo n mero poderia ser escrito como 602 x 1071 ou como 0 000602 x 102 mas costume adotar a forma normalizada isto com um nico algarismo n o nulo antes da v rgula 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 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 A codifica o por deslocamento que acabamos de ver utilizada para permitir a representa o de expoentes negativos Para n mero de 32 bits o deslocamento do expoente de 127 para n meros de 64 bits de 1023 A
207. idade de controle da Pipoca s o e omPC 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 456 Registradores da Unidade de Controle A unidade de controle utiliza uma t cnica conhecida como microprograma o para produzir os sinais de controle que emitidos nos momentos adequados para barramentos registradores e mem ria executam efetivamente os fluxos de dados que correspondem as instru es mOpCode Ep 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 21 1 0 0 Signals Figura 457 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 457 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 Ap ndice A A CPU Pipoca 285 e mi
208. ido 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 200 O programa PassouNaoPassou sce A Figura 200 mostra o programa PassouNaoPassou sce que atende a esta especifica o Seu nome por favor Maria Maria quantos pontos voc conseguiu 90 Maria com 90 pontos voc passou Seu nome por favor Jose Jose quantos pontos voc conseguiu 47 Jose com 47 pontos voc n o passou Figura 201 Duas execu es do programa PassouNaoPassou sce Dois exemplos de execu es deste programa est o na Figura 201 Neste programa importante observar e A frase 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 Programas Scilab 144 6 Matrizes 145 6 Matrize
209. ilizados circuitos sequenciais que diferem dos circuitos combinat rios por serem capazes de armazenar dados Em um dado instante as sa das de um circuito sequencial 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 em suas mem rias 3 1 Flip flops e Registradores Figura 122 Flip flop tipo D O circuito sequencial mais b sico conhecido pelo nome em ingl s de flip flop e como sempre come amos pelos casos mais simples um flip flop capaz de armazenar um nico bit Existem v rios tipos de flip flop mas aqui n s s veremos flip flops do tipo D A Figura 122 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 de entrada 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 aplicado 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 Pi
210. ima o de integrais por trap zios Tt 4 Para testar esta fun o vamos calcular o sin x dx cujo valor exato n s sabemos TT sinx dx cosm cos0 2 0 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 11 Algoritmos Num ricos 232 11 2 Bissecao N s sabemos que as ra zes de fun es ou zeros de fun es como um polin mio de 2 grau 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 gt 0 como mostrado na Figura 379 Figura 379 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 a fun o ser obrigada a cruzar o eixo dos x onde f r 0 E poss vel que o intervalo a b contenha mais de uma raiz como na Figura 380 Figura 380 Intervalo contendo mais de uma raiz de uma fun o Se f a e f b t m o mesmo sinal o intervalo a
211. ionam corretamente como mostra a Figura 398 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 11 Algoritmos Num ricos 240 4 5e 007 N 3e007 sen 15 ordens de 3 5e 007 g ra nd eza ma Tolg 3 0e 007 que o resultado 2 5e 007 correto 2 0e 007 1 5e 007 1 0e 007 0e 006 0 0e 000 Figura 399 Grafico com valores absolutos dos termos da s rie de Taylor para x 20 A Figura 399 mostra um grafico 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 7 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 Programas num rico
212. iro pol gono e o ponto inicial do segundo pol gono foram naturalmente emendados pelo Scilab 7 Loops 183 0 0 1 2 3 4 5 6 Figura 290 Efeito n o desejado ao tra ar dois pol gonos Este problema resolvido inserindo se pares de pontos com coordenadas iguais a nan representa o de not a number 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 nan w gt Y y tnan z gt cle gt plot2d X Y rect 0 0 6 6 e voc obter a figura desejada com pol gonos separados O comando cl1f 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 voc pode encontrar o arquivo world txt que obtivemos na refer ncia e de onde retiramos grande parte desta se o Se voc abrir este arquivo com um editor de arquivos texto como o PSPad o Bloco de Notas serviria mas para trabalhar com arquivos texto n s preferimos o PSPad porque ele possibilita um maior controle sobre formatos e codifica es UTF 8 Windows etc voc ver que o valor 9999 foi utilizado como co
213. istas 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 11 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 dos aspectos relacionados a 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 e depois explorada com Smalltalk Estas duas linguagens ainda sobrevivem mas o uso de C e de Java hoje muito maior 13 Pr ximos Passos 263 e Bancos de Dados Bancos de dados s o sistemas de armazenamento que extendem muito o conceito de ar
214. istradores 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 sinais 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 pt s o controlados Output Sinais de Controle da CPL Figura 434 Elementos b sicos para processamento e registradores da CPU Pipoca A id ia central de um computador a automa o da emiss o de sequ ncias de sinais de controle segundo o desejo de uma pessoa desejo este expresso por um programa Queremos 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 esse roma Figura 435 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 memoria ao inv s de implementa los com circuitos O termo software com o prefixo soft macio foi um neologismo
215. ito 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 449 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 450 Ap ndice A A CPU Pipoca 281 Figura 450 Entradas e saidas 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 um programa se interrompa ao t rmino de cada instru o executada In Full SetnEmpty Figura 451 Circuito para sincroniza o da CPU com dispositivo de entrada O circuito mostrado na Figura 451 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 entr
216. itos Combinatorios 44 por um nico byte t m a mesma representa o em UTF 8 e em ASCII uma compatibilidade essencial para o bom funcionamento de programas que contavam com codifica o ASCII 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 pode ser representado pela sequ ncia de 24 bits 00110001 00110010 00110011 colocamos espa os para facilitar a leitura Esta uma codifica o muito boa para a impress o de n meros por dispositivos que permitem leitura por humanos e tamb m para a codifica o da entrada produzida por teclados Mas para opera es aritm ticas a interpreta o de um conjunto de bits como um n mero em nota o posicional na base 2 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 Figura 49 Tabela com pot ncias de 2 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 22 0 22 1 21 1 2 Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Figura 50 Representa o dos n meros de 0 a 15 como bin rios sem sinal de 4 bits A convers o de 1234 para 1111011 pode ser feita com o seguinte m todo para convers o bin rio decimal e N s precisamos expressar 123
217. iva de multiplica o de matrizes com dimens es incompat veis com a opera o A Figura 214 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 215 Multiplicando uma matriz por um escalar Uma matriz pode ser multiplicada por um escalar caso em que os operadores e s o equivalentes como mostrado na Figura 215 6 Matrizes 150 gt x 1 2 3 4 gt 02 ans 7 10 L5 22 gt x J 2 ans 1 9 16 Figura 216 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 Jax 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 216 mostra um exemplo da diferen a entre as duas opera es gt a 1 2 3 4 5 6 Figura 217 Transpondo uma matriz Se a uma matriz a designa a matriz transposta de a como mostrado na Figura 217 Wis E E V gt IA In A IA ego LO SSL De toa 0 3333333 0 5454545 0 2424242 Us 09091 Veloiole2 Figura 218 A fun o inv que produz a matriz inversa A fun o inv produz a matriz in
218. ivos E E A E E EGA SciNotes Navegador de arquivos box Ensino doc o ACOS Tradutor de Matlab para Scilab Gerenciador de m duos ATOMS Navegador de vari veis a Calend rios Hist rico de comandos a Monitores E 7 M dulo 03 Navegador de arquivos m M dulo 04 H M dulo 05 Figura 181 Abrindo o editor SciNotes 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 bits de informa o de formata o o que perturba completamente a interpreta o do programa pelo Scilab No editor SciNotes voc pode e Criar um novo programa atrav s do menu Arquivo Novo e Abrir para edi o um programa j existente atrav s do menu Arquivo Abrir e Editar um programa e Salvar o programa editado atrav s do menu Arquivo Salvar e Executar um programa atrav s do menu Executar e v rias outras coisas que voc ir aprendendo aos poucos Programas Scilab 133 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 Arquivo Alterar o Diret rio Atual ou clicando duas vezes sobre um diret rio no painel de navega o de arquivos que sempre mostra o diret rio corrente no ponto mais alto da hierarquia exibida O diret rio corrente do SciNotes o diret rio corrent
219. izes com todos os elementos iguais a O ou iguais a 1 Outra matriz que se pode obter a matriz identidade atrav s da fun o eye como vemos na Figura 225 gt I eye 4 4 I Figura 225 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 226 mostra dois exemplos de uso desta fun o 6 Matrizes 154 gt m rand 2 3 m 0 2113249 0 0002211 0 6653811 0 7560439 0 33032 0 6283918 gt n rand 2 3 n 0 8497452 0 8782165 0 5608486 0 6857310 0 0683740 0 6623569 Figura 226 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 round 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 round retorna o inteiro mais pr ximo de seu argumento 1 2 3 4 10 20 30 40 x y 2 10 20 4 30 40 Figura 227 Construindo matrizes por justaposi o de matrizes j existentes poss vel construir matrizes a partir de matrizes j existentes Se x e y s o matrizes x y denota uma nova matriz com y ao lado de x e x y denota
220. ki Moore_Law Circuitos Combinatorios 52 Figura 61 Simbolos para portas NAND e NOR A Figura 62 mostra caracter sticas que distinguem as opera es AND OR NAND e NOR _AND ayb _ NAND ab S igual a 1 quando S igual a O quando a e b s o iguais a 1 ae b s o iguais a 1 S igual a O quando S igual a 1 quando a e b s o iguais a O ae b sao iguais a O Figura 62 Caracter sticas de AND NAND OR e NOR Transistores podem ser e s o utilizados para amplificar sinais mas em circuitos digitais funcionam essencialmente como interruptores trabalhando ora como condutores perfeitos ora como isolantes perfeitos Figura 63 S mbolo de um transistor usado em diagramas de circuitos 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 Circuitos Combinatorios 53 e quando a voltagem aplicada ao controle alta para algumas tecnologias 5 volts o transistor um condutor perfeito o que faz com que as voltagens na entrada e na sa da sejam iguais e quando a voltagem aplicada ao controle baixa 0 volts digamos 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
221. la 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 cnicas muito sofisticadas de c lculo num rico exec expTaylor sci tol input ntol x input nx while x 999 expCalc expTaylor x tol printf in x exp x expTaylor x Erro printf in 12g 15 8e 15 8e 15 8e n x exp x expCalc exp x expCalc input nx Figura 394 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 co x x ee FE zti i G 1 i i Com isso n s chegamos a forma final da fun o expTaylor mostrada na Figura 395 ti 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 itl endfunction Figura 395 A fun o expTaylor Vamos primeiramente testar a fun o para alguns valores positivos de x Podemos ver na Figura 396 que os resultados s o muito bons com diferen as 16 ordens de grandeza menores que os valores calculados pelas duas fun es 11 Algoritmos Num ricos 239 1 2 71828183e 000 2 71828183e 000 4 44089210e 10 2 20264658e 004 2 20
222. lta 2 a printf rl g e r2 g rl r2 end Menos leg vel Figura 272 Ifs equivalentes para o Scilab mas com diferen as de legibilidade devido indentacao Indenta o o termo empregado para esta pr tica 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 272 e a Figura 273 mostram compara es entre comandos digitados com e sem o emprego de indenta o if Nota gt 90 then Conceito A if Nota gt 90 then Conceito A else if Nota gt 80 then Conceito B else 1f Nota gt 70 then Conceito C else if Nota gt 60 then Conceito D else if Nota gt 40 then Conceito E else Conceito F end end end end end else if Nota gt Conceito else if Nota gt Conceito else 1f Nota gt Conceito else if Nota gt Conceito else Conceito end end end end end 80 then B 70 then es 60 then o 3 40 then Figura 273 Outro exemplo da influ ncia da indenta o na legibilidade de um comando 7 9 Gera o e Impress o de uma Tabuada de Multiplica o Vamos agora desenvolver um programa que produza uma tabuada de multiplica o como mostrado na Figura 274 7 Loops 176 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
223. lue Gene 13 bootstrap 104 bps 30 C 119 C 119 Carta de tempo 85 chamadas da fun o 186 ciclo de instru o 272 Ciclo de Micro Instru o 287 Circuito para sincroniza o 281 circuito principal da CPU Pipoca 279 Cleve Moler 121 clock 94 Cobertura dos 1s 64 Cobol 119 Codifica o com Deslocamento 45 c digo da instru o 275 Comandos Aninhados 173 coment rios 133 compara o de bin rios sem sinal 78 comparador de 1 bit 78 compilador 118 Complemento de 2 45 complexidade computacional 199 complexidade linear 207 condutor perfeito 53 console do Scilab 122 Construindo matrizes 152 controlled buffer 88 convers o bin rio decimal 44 convers es A D 23 convers es D A 23 Corre o 198 data width 87 DBus 282 Debug 282 Demultiplexadores 81 desenvolvimento top down 193 diret rio corrente 133 dividir para conquistar 225 Dvorak 29 eco 123 supress o do eco 124 Efici ncia 198 else 141 endere o 89 endfunction 18 escopo de vari veis 188 Especifica o 198 estouro 67 Express es booleanas 48 express es l gicas 138 eye 153 fatora o de n meros inteiros 200 fetch 292 flip flop tipo D 84 Flip flops 84 folhas 244 Fortran 118 fprintfMat 1 9 fscanfMat 1 9 fun o recursiva 195 Fun es 185 function 187 George Boole 47 get f 189 GetOperand 293 IBM PC 12 IEEE 754 46 if 141 Indenta o 175 Indice Remissivo Informac
224. m 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 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 9 Algoritmos Pesquisa 200 9 2 Fatoracao 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
225. m 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 a p 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 independente 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 para o pior caso da execu o de MenorFator o tempo cresce linearmente com o valor do primo fatorado que pr ximo de 2 onden 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 90 30 T 60 50 pas Segundos 30 20 Bits Figur
226. m ordenados s o todos n meros decimais com k algarismos o algoritmo de ordena o por radical radix sort em ingl s pode ser utilizado Para explicar o algoritmo de ordena o por radical o melhor mostrar como uma classificadora de cart es perfurados veja a foto na Figura 370 era utilizada para ordenar um conjunto de cart es segundo valores presentes em digamos tr s colunas dos cart es Uma pilha de cart es n o ordenados era colocada no alimentador da classificadora cujos controles gt Punched card jpg imagem JPEG 2406x1160 pixels Redimensionada 29 acessado 22 de junho de 2013 https upload wikimedia org wikipedia commons f f3 Punched card jpg 2 IBM Card Sorters acessado 22 de fevereiro de 2012 http www columbia edu cu computinghistory sorter html references 10 Ordenacao 227 eram ativados para distribuir os cart es nos escaninhos segundo o valor perfurado na coluna menos significativa 50 02 68 11 48 52 54 65 01 71 50 78 79 N uP uno unrernNN OO WO WO O UO o o oo oun BRNN FF EA 021 01 784 115 50 68 541 79 65 50 EA EM 506 012 021 541 658 784 792 508 115 15529 688 719 489 Ui Es EM 12 115 89 506 1658 7719 21 08 688 1784 29 92 41 Figura 371 Etapas para ordena o por radical 021 541 012 792 784 115 506 688 658 508 489 529 719 506 508 012 1s 719 021 529 541 658 784 688 489 792 012 021 115 489 506 508 5
227. ma o que existe um outro comando o for que substitui o comando while com vantagens em alguns casos Na Figura 258 n s vemos um programa que tamb m calcula o fatorial de um n mero utilizando o comando for C lculo do fatorial de um n mero Leitura do n mero n input n Calculo do fatorial fat 1 Ls Seat Impress o do resultado printf O fatorial de d d n fat Figura 258 C lculo de fatorial utilizando o comando for A simplifica o com rela o vers o com while vem da inicializa o da vari vel k com o valor 1 e da condi o de parada impl citas no comando for k 1 n Tamb m impl cito neste for est o comando k k 1 A forma geral de um comando for est mostrada na Figura 259 for lt vari vel gt lt vetor gt lt bloco for gt End Figura 259 Forma geral de um comando for Aqui lt vetor gt cont m os valores atribu dos vari vel indexadora lt variavel gt a cada itera o do loop 7 Loops 170 for 1 1 2 10 printf Nai end Figura 260 Exemplo de comando for com passo diferente de 1 No exemplo da Figura 260 e Avariavel indexadora i e Ovetordevaloresl 2 10 iguala 1 3 5 7 9 s o estes os valores que i assumir a cada execu o do corpo do loop e O An na frase do comando printf uma sequ ncia de escape isto uma codifica o em caracteres imprim veis de um caracter n o imprim vel
228. ma outra escala de temperaturas 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 S mbolos 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 es 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 e microfones digitais entradas de rede telas sens veis ao toque s o tamb m chamados de dispositivos de entrada e trazem informa o para o processador Computadores e Informacao 22 e Atuadores s o impressoras monitores de video 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
229. mantissa normalizada isto tem um nico algarismo n o nulo antes da v rgula que como sempre igual a 1 no sistema bin rio n o necessita ser representado Circuitos Combinatorios 47 Figura 55 Um numero em ponto flutuante com 32 bits A Figura 55 mostra um numero em ponto flutuante de 32 bits Voc deve reparar que os bits do expoente codificam 159 se interpretados como um binario sem sinal com o deslocamento o expoente de 2 igual a 159 127 32 O numero ali codificado portanto igual a 1 x 1 27t 273 27 x 232 1 65625 x 23 7113539584 O padr o IEEE 754 define interpreta es especiais para expoentes s com 1s e s com Os incluindo o pr prio zero com expoente e mantissa iguais a zero valores especiais como 00 ou NAN Not A Number que s o utilizados para a comunica o de resultados de certas opera es ou do c lculo de algumas fun es A refer ncia tem um bom resumo do padr o IEEE 754 2 2 Algebra de Boole Em 1854 o matem tico ingl s George Boole prop s uma algebra para o c lculo da validade de express es formadas por proposi es l gicas Quase um s culo depois Claude Shannon ent o com 21 anos em sua disserta o de mestrado defendida no MIT em 1937 demonstrou que o projeto de circuitos l gicos que viriam a constituir a base dos computadores poderia se beneficiar diretamente destes resultados Shannon tinha tomado conhecimento dos trabalhos de
230. mazenados na memoria 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 memoria principal vol til 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 Ha 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 Computadores e Informa o 32 PPA r ri Af k a LL AL LLAILLDV WN Figura 35 Memoria de nucleos de ferrite2 usada em 1964 pelo supercomputador CDC 6600 com 64 palavras de 64 bits em 11x11 cm 24 Magnetic core memory Wikipedia the free encyclopedia acessado 12 de marco de 2011 http en wikipedia org wiki Magnetic_core_memory Computadores e Informa o 33 e 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
231. mente existem solu es melhores com t cnicas mais sofisticadas que reduzem significativamente o n mero de roteiros a serem examinados Mas n o reduzem tanto A melhor solu o j encontrada tem complexidade O n 2 o que para n suficientemente grande cresce mais rapidamente do que qualquer pot ncia de n ou do que qualquer polin mio em n Sen o podemos provar que n o existe tal solu o Infelizmente n o temos uma boa resposta para estas duas quest es Ap s d cadas de intensa pesquisa n o se conhecem algoritmos com complexidade polinomial para este problema mas ningu m conseguiu uma prova de que n o existem Cientistas da computa o classificam problemas e algoritmos conforme sua ordem de complexidade e Problemas com complexidade polinomial cujo tempo cresce com alguma pot ncia de n s o enquadrados na classe P e s o considerados educados e Problemas cuja complexidade cresce com o tamanho da entrada mais rapidamente do que qualquer polin mio s o chamados intrat veis e Dentre os intrat veis a classe NP compreende os problemas onde dada uma resposta pode se verificar se ela ou n o uma solu o em tempo polinomial Este o caso do problema do caixeiro viajante pois se algu m afirma ter encontrado uma rota com custo C esta afirmativa pode ser verificada com facilidade somando se os custos das etapas na rota proposta NP n o significa N o Polinomial mas N o deterministico Polin
232. multiplexadores que s o circuitos que conectam entradas e sa das de acordo com um endere o e o endere o tamb m uma entrada Endere o Endere o Figura 114 Multiplexadores MUX e Demultiplexadores DMX Como mostra a Figura 114 e Um multiplexador conecta uma nica entre v rias entradas de dados a um destino a entrada escolhida designada por um endere o e Um demultiplexador conecta uma entrada de dados a um dentre v rios destinos o destino escolhido designado por um endere o e e e TOO Lhe gt Se ee SoS es ea Ss Figura 115 Tabela da verdade para um multiplexador de 1 bit A Figura 115 mostra uma tabela da verdade para um multiplexador de 1 bit de endereco Esse circuito tem tr s entradas InO e In1 que s o as vari veis fonte de informa o e o endere o a que decide qual dentre In0 e In1 ser conectada a sa da out Circuitos Combinatorios 82 Figura 116 Tabela da verdade para um demultiplexador de 1 bit Na Figura 116 nos 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 Ind Figura 117 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 118 Figura
233. n o s0 ab ab a b sl so 0 O 0 l 0 1 1 1 o sl e Figura 85 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 85 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 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 Sy a b ab es ab A Figura 86 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 Circuitos Combinatorios 65 Figura 86 Circuito logico para soma binaria de 1 bit ou circuito meia soma Temos aqui um resultado important ssimo construimos 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 Como prometemos conseguimos fazer contas com as fun es l gicas NOT AND e OR 2 6 Soma de dois inteiros com v rios bits Tudo bem conseguimos fazer um circuito que realiza a soma de duas vari veis de 1 bit Uma fa anha mas em termos pr ticos muit
234. n 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 tantos m dulos quantos forem os bits das parcelas 37 Muhammad ibn Musa al Khwarizmi Wikipedia the free encyclopedia Circuitos Combinatorios 67 Figura 89 Entradas e saidas de um circuito de soma completa Este modulo esquematizado na Figura 89 tera 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 sera ligado a entrada vem um da coluna esquerda Um circuito que implemente esse m dulo conhecido como circuito soma completa Figura 90 Arranjo em cascata de m dulos para um somador de 4 bits A Figura 90 mostra um arranjo em cascata de circuitos de soma completa capaz de somar duas vari veis de 4 bits O m dulo SC Soma Completa mais direita faz a soma dos bits menos significativos de cada parcela aq e bo 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 aj b e de sua en
235. na Tabela 5 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 que podem vir a ser implementadas em novas vers es Tabela 5 Conjunto de instru es da Pipoca Adiciona o operando a ACC deixando o resultado em ACC ompara o operando com ACC e coloca o resultado em Compare COMPARE ara a execu o do programa ALT Espera InFull 1 e transfere o valor de Input para a palavra apontada pelo operando faz InFull O INPUT 0011 Desvia para a palavra apontada pelo operando E Ti Desvia para a palavra apontada pelo operando se D ACC 1 JMPEQ GAI Desvia para a palavra apontada pelo operando se D gt ACC 1 JMPGT 6 0110 2D Desvia para a palavra apontada pelo operando se D lt ACC 1 JMPLT 7 0111 2F Carrega o operando no acumulador LOAD 8 1000 31 Espera OutEmpty 1 e transfere o operando para o registrador Output faz OutEmpty O OUTPUT 1001 36 Transfere o valor de ACC para a palavra apontada pelo operando STORE 1010 Subtrai o operando de ACC deixando o resultado em ACC 1011 1100 Estes c digos podem ser usados para novas instru es ST unuj 2 o EE alae e lala e brna Nessa tabela o campo Description descreve o efeito da instru o o campo Mnemonic cont m c digos para cada instru o que s o empregados por um programador ao construir um programa o campo OpCode10 enumera as instru es e
236. na verdade matrizes com uma Unica 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 A fun o size retorna dois par metros o n mero de linhas e o n mero de colunas da matriz A Figura 205 mostra dois exemplos de uso da fun o size gt A 1 2 3 4 5 6 gt nl nc size A nc cm gt k 0 gt L C size k C 1 L 1 Figura 205 Matrizes e a fun o size Uma matriz cresce quando atribu mos valores a elementos com ndices superiores aos indices 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 x 3 e os elementos n o referenciados recebem o valor zero como mostrado na Figura 206 gt x 7 matriz 1x1 Figura 206 Expans o de uma matriz Vetores s o matrizes de uma nica linha ou de uma nica coluna A Figura 207 mostra a cria o na console do Scilab de um vetor linha e de um vetor coluna Para referenciar o elemento X 1 1 de um vetor coluna ou para referenciar o elemento X 1 i de um vetor linha o Scilab permite a utiliza o da nota o X i deixando o ndice 1 impl cito em ambos OS Casos Figura 207 Um vetor linha e um vetor coluna 6 Matrizes 147 O Scilab permite que uma parte de uma matriz seja referenciada tanto para a atribui o de valores como para a
237. ndos b sicos voc pode usar o help do Scilab para saber mais e obter um gr fico com um acabamento melhor gt x 2 53 4 y 31 4 7 gt plot2d x y Figura 230 Outro exemplo de grafico obtido com plot2d Para se obter um gr fico da fun o seno podemos fazer como mostrado na Figura 231 Primeiramente gerado o vetor x de abscissas e depois o vetor y obtido pela aplica o da fun o sin ao vetor x O comando plot2d x y gera o gr fico 6 Matrizes 156 gt x 0 0 8 3 pi 0 1 2 3 4 5 6 7 8 9 Figura 231 Gr fico da fun o seno com espa amento excessivo A curva obtida est toda quebrada com cotovelos vis veis que ao construirmos um gr fico a partir de valores em vetores estamos fazendo uma transforma o digital anal gica adequada para consumo humano No caso 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 232 gt x linspace 0 3 pi 101 gt y sin x gt bplot2d x y Figura 232 Gr fico da fun o seno com um espa amento agrad vel A fun o plot 2d 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 numero de linhas de x faz um gr fico de x versus
238. no caso Line Feed que produz uma nova linha na sa da for i 20 2 16 printf ni g i end 1 13 i 18 1 16 Figura 261 Exemplo de for com passo negativo O passo de um for pode ser negativo como mostrado na Figura 261 e a vari vel de controle pode assumir valores n o inteiros como na Figura 262 for x 0 0 3 0 7 printf Nnx g x end Figura 262 Exemplo de for com a variavel de controle assumindo valores nao inteiros 7 7 Gera o e Impress o de Tabelas 7 Loops 171 0 0 0 0000 0 6 0 5646 0 8 0 8415 Figura 263 Tabela de Senos Vamos agora usar o comando for para a constru o de uma tabela como a da Figura 263 com x variando de 0 a 27 de 0 2 em 0 2 e vamos aproveitar a oportunidade para aprender mais sobre o controle de sa da com o comando printf Tabela da fun o Seno for x 0 0 2 2 3pi printf Sg g x sin x end Figura 264 O programa Tabela de Senos 1 sce O programa da Figura 264 parece atender especifica o mas quando executado pelo Scilab produz uma sa da de dif cil compreens o como mostrado na Figura 265 Figura 265 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 a sequ ncia de escape An na frase do comando printf Com isso n s chegamos ao programa Tabela de Senos 2 sce mostrado na Figu
239. nos 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 Circuitos Sequenciais 85 e Pino Enable uma entrada auxiliar que serve para habilitar ou inibir o comportamento do flip flop Tempo Figura 123 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 123 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 reage copiando fotografando a entrada 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 9 a 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 124 Um registrador de 4 bits formado por flip flops tipo D Circuitos Sequenciais
240. ns utilizada para obter partes de um strings separadas por um delimitador Um exemplo de uso desta fun o est na Figura 241 gt tokens C Users Osvaldo Dropbox Ensino dcc001 2012 2 M dulo 06 IC Users Osvaldo Dropbox Ensino dcec001 12012 2 1 Modulo 06 Figura 241 Exemplo de uso da fun o tokens com delimitador Quando o caractere delimitador dos tokens o espa o em branco ele pode ser omitido na chamada como mostra a Figura 242 gt t tokens Ouviram do Ipiranga as margens placidas Ouviram ido Ipiranga las margens placidas Figura 242 Exemplo de uso da fun o tokens usando espa o como separador O ligeiro desalinhamento presente nos dois exemplos se deve a um bug do Scilab que ocorre na exibi o de strings com caracteres acentuados 6 Matrizes 161 6 7 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 das matrizes como mostram os exemplos na Figura 243 Figura 243 Express es relacionais gerando matrizes booleanas Uma express o relacional envolvendo matrizes pode ser empregada em um comando i 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 244 mostra um e
241. nte n o tem a menor id ia sobre a f sica de semicondutores dos chips e uma vaga id ia de como funcionam internamente os protocolos 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 estruturas maiores Veremos ao longo desse curso que 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 Digital Computadores trabalham com informa o e por isso que a palavra inform tica sin nimo de ci ncia da computa o 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 que pode ser uma grandeza f sica ou um evento localizado no tempo ou qualquer aspecto de interesse no objeto alvo Quando a maneira de registro da informa o no meio suporte tem uma rela o f sica direta com o alvo da informa o como a deforma o produzida em uma mola por um peso 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 20 Barret Lyon The Opte Project acessado 7 de mar o de 2011 http opte org Computadores e Informa o 19 Figura 1
242. ntes de equa es de segundo grau e calcule suas ra zes A cada equa o processada O programa deve interrogar o usu rio sobre seu desejo de resolver mais uma equa o O processamento de cada equa o deve ser igual ao produzido pelo programa da Figura 195 Um comportamento repetitivo pode ser obtido com o uso do comando while que tem a seguinte forma while lt condi o gt lt bloco de comandos gt end Sua execu o resulta em repetidas execu es dos comandos no lt bloco de comandos gt que chamamos de corpo do loop repeti o que s se interrompe quando a express o l gica lt condi o gt n o se verificar Para transformarmos o programa n o repetitivo em repetitivo muitas vezes poss vel seguir um padr o como mostrado na Figura 247 continua ST while continua Processamento de um item Decis o decisao input Continua s n string continua decisao s end printf nObrigado Figura 247 Padr o de programa com loop controlado por uma a o do usu rio Aqui a lt condi o gt do while uma express o l gica dada pelo valor de uma nica vari vel a que demos o nome de continua Seu valor inicial t o que garante uma primeira execu o do corpo do loop Ao fim de cada execu o do corpo do loop o usu rio deve digitar s se desejar processar outro item e n sen o na verdade qualquer string diferente de s serviria 7 Loops 164 C
243. ntos do vetor Como exemplo considere o processo de gerar todas as permuta es do vetor 2 3 4 N s devemos 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 s permuta es obtidas e Finalmente separar o elemento 4 e gerar todas as permuta es de 2 3 e depois concatenar 4 as permuta es obtidas A fun o permutations mostrada na Figura 413 uma implementa o direta deste algoritmo 12 Complexidade de Problemas 249 function p permutations A if length A 1 then p 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 1 endfunction Figura 413 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 6 7 p g 161 J podemos dar in cio ao desenvolvimento do programa principal A Figura 414 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
244. num ricas s o sempre matrizes e em consequ ncia as opera es aritm ticas usuais s o entendidas pelo Scilab como opera es matriciais da algebra linear 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 uU m ser utilizados precedidos por um como ou 4 5 Gl 20 20 420 30 pOT Figura 212 Adi o e subtra o de matrizes A Figura 212 mostra exemplos de adi o e subtra o de matrizes Como estas opera es s o sempre feitas elemento a elemento os operadores e n o s o necess rios e n o existem no Scilab 6 Matrizes 149 gt x 1 2 3 4 5 6 x Ea 2 Ee 4 5 6 gt y 10 20 30 40 50 60 Y 10 20 30 40 50 60 gt x y ans 220 490 Figura 213 Exemplo de produto matricial Na Figura 213 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 X p resultando em uma matriz z de dimens es m x p onde Zij Vieni XikYki gt x 1 2 3 4 10 20 30 40 V K Figura 214 Produto matricial versus produto elemento a elemento de duas matrizes O Scilab emite uma mensagem de erro quando ocorre uma tentat
245. o par metro real 1 Com o par metro real iguala 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 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 o 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 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 322 function m MinimoR x if length x 1 then m x 1 else half int length x 2 minLeft MinimoR x 1 half minRight MinimoR x half 1 length x 1f minLeft lt minRight then m minLeft
246. o algumas regras e O primeiro caractere do nome deve ser uma letra ou qualquer caractere dentre COR Soe e Os outros podem ser letras ou d gitos ou qualquer caractere dentre S e e Mesmo sendo um produto 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 Console do Scilab a 10 Figura 170 Vari veis e comandos de atribui o Ap s a execu o dos comandos na Figura 170 o painel de navega o de vari veis teria o formato mostrado na Figura 171 com as vari veis a b e c criadas Navegador de vari veis 7 7K Dimens es Tipo 1x Real local xi Bb a Rea hai Be m Rea hai Figura 171 Navegador de vari veis ap s a execu o dos comandos na Figura 170 Programas Scilab 124 Um comando de atribui o tem o formato lt vari vel alvo gt lt express o gt onde e A lt variavel alvo gt se n o existia passa a existir e Se existia o valor anterior perdido e Na execu o do comando a lt expressdo gt calculada e o resultado atribu do a lt vari vel alvo gt
247. o pouco Para fazer qualquer coisa mais s ria precisamos ser capazes de somar vari veis de digamos 32 bits como s o representados inteiros em boa 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 as 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 26 ou aproximadamente 10 4 33 107 linhas Para entender considere a equa o on 10 2 092 10 2xlog2 10 ou n n n X opa 3 Vamos nos situar Um ano tem somente 3 1536 x 101 nano segundos e um nano segundo a ordem de grandeza do tempo de rea o de portas l gicas na tecnologia atual Se considerarmos que a an lise de cada linha da tabela tomaria 1 nano segundo o que de um enorme otimismo a obten o da express o para a soma tomaria no m nimo 3 000 anos Ou seja mesmo se teoricamente conseguiriamos 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 N meros bin rios ado
248. 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 itl end if i lt length table then endfunction Figura 335 A fun o seqSearch para pesquisa sequencial Quanto complexidade da pesquisa seq encial n o dif cil ver que se n o tamanho da 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 seq encial O n ou seja da ordem de n ou ainda dizemos que a pesquisa sequencial tem complexidade linear 9 6 Pesquisa Bin ria Quando uma 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 elemen
249. olva 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 e 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 k N s iniciamos este texto enumerando reas do conhecimento que foram ajudadas pela computa o mas vamos terminar com uma confiss o A rea que mais se beneficia com os resultados da Ci ncia da Computa o a pr pria computa o Computadores auxiliam a programar computadores a construir circuitos que s o usados por computadores a projetar novas linguagens de programa o e tamb m a construir programas que auxiliam o aprendizado de computa o como voc experimentou ao longo deste curso este poderoso processo de auto ajuda faz da computa o o impulsor das mudan as de imenso impacto em nossas vidas Indice Remissivo 264 Indice Remissivo seps 124 Spi 124 sce 132 ABus 282 acumulador 91 Algebra Booleana 47 algoritmo 198 ALU 93 ambiente Scilab 121 AND 48 Aritm tica matricial 148 arquivo programa 132 rvore bin ria 244 ASCII 42 Assembler 272 assembly 272 atuadores 29 barramento 88 Basic 119 Binarios sem Sinal 44 bit 22 bloco ent o 141 bloco sen o 141 B
250. omial A id ia que os problemas em NP s o resolvidos em tempo polinomial por uma algoritmo n o determin stico que em uma fase inicial adivinha uma solu o que depois testada e Um subconjunto de NP a classe dos problemas NP completos que s o tais que qualquer problema em NP pode ser transformado em uma de suas inst ncias 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 3 Travelling salesman problem Wikipedia the free encyclopedia acessado 11 de dezembro de 2012 http en wikipedia org wiki Travelling salesman_problem Computational_ complexity 12 Complexidade de Problemas 253 Figura 420 Quais objetos devem ser colocados na mochila para se obter o maior peso total sem ultrapassar a capacidade da mochila 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 e ganhar um pr mio de um milh o de d lares 12 3 Problemas indecid veis O Problema da Correspond ncia de Post Vamos agora estudar um problema proposto pelo matem tico Emil Post em 1946 Considere um estoque ilimitado de domin s de um n mero finito de tipos E 1 2 3
251. ompara es entre os elementos do vetor de entrada N s vamos aqui modificar ligeiramente alguns algoritmos de ordena o fazendo com que eles mantenham durante toda a sua execu o um registro das posi es que cada elemento ocupava no vetor original Essencialmente essa modifica o consiste em adicionar um vetor de indices com valores iniciais 12 3 n e a cada troca efetuada com o vetor a ser ordenado trocar tamb m os elementos correspondentes no vetor de ndices Assim como a ordena o de 321 12 609 produz o vetor 12 321 609 o vetor de ndices ao final da execu o do algoritmo dever neste caso conter 2 1 3 significando que o primeiro elemento no vetor ordenado tinha a posi o 2 no vetor original o segundo elemento no vetor ordenado tinha a posi o 1 no vetor original e que o terceiro elemento no vetor ordenado tinha a posi o 3 no vetor original N s vamos tamb m fazer com que os algoritmos de ordena o registrem as posi es no vetor original dos elementos envolvidos em cada compara o feita durante sua execu o Todo algoritmo de ordena o por compara es faz altera es em suas vari veis depois uma compara o entre elementos do vetor a ser ordenado alguma a o seja sobre este vetor como uma troca de posi es entre dois elementos seja sobre outras das vari veis que utiliza depois outra compara o e outra a o at que o algoritmo termine A sequ ncia de compara es e de
252. ontos e Conceitos E Pontos do 90 lt Pontos lt 100 80 lt Pontos lt 90 70 lt Pontos lt 80 60 lt Pontos lt 70 40 lt Pontos lt 60 O lt Pontos lt 40 O programa PontosConceito sce apresentado na Figura 271 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 A leitura do nome e dos pontos do aluno id ntica utilizada no programa PassouNaoPassou sce Se o 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 Se o 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 O mesmo racioc nio se aplica aos outros ifs at o mais interno onde o lt bloco sen o gt n o necessita de mais testes para concluir que o conceito F 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 7 Loops 174 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 Con
253. ontrolados ligados a um mesmo barramento esteja aberto Circuitos Sequenciais 89 4 ACik 0 ZeraroclockdoregistradorA __ 5 in Bus OJliberarobarramento _ Colocar 3 em bin rio 11 na entrada In 4 Bclk 0 ZeraroclockdoregistradorB A 5 in Bus O liberarobarramento 4 ABus 0 liberarobarramento _ Figura 129 Exemplos de fluxos de dados realiz veis pelo circuito da Figura 128 O circuito da Figura 128 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 buffers controlados Dados s o transferidos de um ponto para outro ligando e desligando esses sinais em uma sequ ncia apropriada para a transfer ncia desejada A Figura 129 mostra exemplos de sequ ncias de sinais que devem ser aplicados ao circuito para que ocorram transfer ncias de dados espec ficas Os sinais devem ser aplicados na sequ ncia dos passos Na figura usamos a nota o por exemplo B Clk 1 para indicar que o valor 1 deve ser aplicado entrada B_Clk pelo operador Logisim e In 3 para dizer que o valor 3 em bin rio 11 deve ser aplicado entrada In 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 arma
254. or igual a um dos elementos do vetor i gt sup gt A i gt piv Figura 360 In cio de uma opera o de parti o A parti o opera 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 10 Ordenacao 221 E possivel que algumas das partes resultantes seja vazia O m todo prossegue aplicando se recursivamente as 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 14 O 11 6 5 12 2 12 13 6 2 O 5 owt i234 1236 576 11 12 6 12 13114 Esquerda Meio 516 11 12 6412 13114 E _ Direita x Piv 5 6b 6 na 13 14 E 5 61 6 11112 12113 14 5 16 16 11 12 12113 14 Figura 361 Exemplo de ordena o por parti o quicksort A Figura 361 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 l m quicksort r end endfunction Figura 362 A fun o quicksort que implementa o algoritmo de ordena o por
255. ordenados por unidade de tempo em fun o do tamanho do vetor 10 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 ou mais subproblemas cada um de tamanho estritamente menor que n 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 10 5 Ordena o por Radical 10 Ordena o 226 CALL RUCLASBS Cane clei Pao rR Hi EE HORA aid ii 1 i i 90000000000000085000080080008080505000000000000000000000000000000000000000000000 23 45 6 7 8 3 10 W 12 93 4 16 IB 17 18 19 20 21 22 73 28 75 76 27 28279301 32333 353637383980 4i 47 63 44 AS 66 4 48 4950 51 575354555 S8 59 60 6 62 63 66 65 65 6 66 69 70 7 77 7374 75 76 77 7B 798e 11111110 112111011100 11 11111121111111111111111111111111111111111111
256. orial de um n mero N s sabemos que ral e que paran gt 1 n n n 1 A fun o fatorialR na Figura 317 calcula o fatorial de um n mero usando de forma muito natural essas equa es function fat fatorialR n if n gt 0 then fat n fatorialR n 1 else fat end endfunction Figura 317 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 318 8 Fun es 196 Teste de FatorialR exec FatorialR sci n input n while n gt 0 do printf ntd d n FatorialR n n input n end Figura 318 Programa TestaFatorialR sce Considere tamb m a vers o de fatorialR da Figura 319 onde tamb m colocamos comandos printf envolvendo a chamada recursiva da fun o 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 319 A fun o fatorialR instrumentada para acompanhamento de sua execu o A execu o deste programa pode gerar a sa da mostrada na Figura 320 onde acrescentamos chaves para indicar a correspond ncia entre chamadas e retornos da fun o n 5 Iniciando FatorialR 5 Iniciando FatorialR 4 Iniciando FatorialR 3 Iniciando FatorialR 2
257. origem Ele conhece a dist ncia entre duas cidades quaisquer de seu roteiro um exemplo est mostrado na Figura 408 N o existem estradas entre as cidades sem liga o no grafo f Figura 408 Dist ncias entre cidades a serem visitadas pelo caixeiro viajante Qual o melhor roteiro isto qual o roteiro com a menor dist ncia total partindo da cidade 1 Na Figura 409 voc pode ver como a escolha de um roteiro influencia a dist ncia total HEIN 12 Complexidade de Problemas 247 D 19 D 22 D 15 Figura 409 Algumas alternativas de roteiros para o caixeiro viajante Um exame atento nos faz perceber que o roteiro mais direita na Figura 409 dentre todos o de menor custo Descobrir o roteiro timo fica bem mais complicado quando temos mais cidades como na Figura 410 Figura 410 Um problema com 8 cidades Temos muito mais alternativas a examinar tr s exemplos est o na Figura 411 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 D 81 D 98 D 64 Figura 411 Algumas alternativas de roteiros para o problema da Figura 410 Vamos tentar uma solu o direta Devemos 1 Gerar todas as alternativa
258. orma o de entrada em informa o de sa da Entradas e sa das podem lidar com informa o anal gica mas um processador o principal componente dos computadores transforma informa o exclusivamente simb lica de entrada em informa o simb lica de sa da Isto feito por composi es de transforma es b sicas extremamente simples sobre os s mbolos O e 1 Neste m dulo n s veremos quais s o essas transforma es b sicas e como essas transforma es b sicas s o implantadas com transistores o que permite a sua implementa o em semicondutores com dimens es f sicas muito reduzidas Veremos tamb m como combinar essas transforma es para obter circuitos que realizam a soma ou a compara o de dois n meros ou o estabelecimento de conex es flex veis guiadas por informa es de endere o para o transporte de informa o em um circuito l gico 2 1 Bits e c digos Para ter utilidade 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 e programadores com frequ ncia escolhem codifica es que atendem as suas pr prias necessidades sem outras preocupa es Mas quando se quer enviar ou receber dados de outras pessoas ou utilizar circuitos j constru dos para a realiza o de opera es aritm ticas a escolha de um c digo com maior aceita o praticamente uma imposi o N s veremos a seguir alguns dos c digos mais u
259. os 24 3 1 7 5 2 13 0 Pen ae segundos minutos minutos minutos 0 001 17 9 12 7 35 7 segundos erate segundos dias anos rae 0 059 6 5 3855 2x 10 1 3x10 segundos minutos anos s culos s culos s culos Figura 331 Quadro comparativo de fun es de complexidade A Figura 331 extra da do livro de Garey e Johnson nos ajuda a formar uma id ia do que esperar do desempenho de algoritmos com fun es de complexidade exponencial quando aplicados a problemas grandes Maior inst ncia que um computador resolve em 1 hora Computador Computador 100x mais 1000x mais r pido 1000 N 31 6M Fun o de Computador complexidade Figura 332 Efeito do aumento da velocidade de computadores sobre o tamanho dos problemas resolv veis 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 332 que tamb m foi retirada da refer ncia Ali vemos que se hoje um computador resolve em uma hora um problema de tamanho digamos 200 usando um algoritmo O 2 com um computador 1000 vezes mais r pido conseguiremos resolver um problema de tamanho 210 49 M R Garey e D S Johnson Computers and Intractability A Guide to the Theory of NP Completeness First Edi
260. os anotados pelo m dico E Ponto de ebuli o 100 qt r B da agua 80 to 60 50 ae lt Corpo humano 20 10 O Ponto de fus o do gelo Figura 13 Um term metro com escala Existem perdas nessa transforma o O m dico ir anotar o n mero correspondente ao tracinho mais pr ximo extremidade da coluna talvez com uma aproxima o entre valores de dois tracinhos mas n o a sua altura exata Para o m dico essa perda pode ser perfeitamente toler vel temperaturas do corpo humano medidas com uma casa decimal provavelmente atendem a todas as necessidades cl nicas Mas existe tamb m um grande ganho a temperatura anotada informa o simb lica que pode ser comunicada por telefone ou copiada em outro papel ou digitada em um computador Computadores e Informacao 21 d Ponto de ebuli o 100 212 _ r ao ae da agua DO e tee 70 158 60 140 60 _ 122 49 f 19 e Corpo humano 30 86 20 68 RGD coe a o i Pontode fus o do gelo Figura 14 Term metro com escalas Celsius e Farenheit O uso de informa o simb lica requer conven es de interpreta o A qual temperatura a qual altura da coluna de merc rio corresponde o s mbolo 50 A Figura 14 mostra escalas comumente utilizadas para temperaturas Ou seja ao dizer 50 graus devemos esclarecer se estamos falando de graus cent grados ou graus Farenheit ou de algu
261. plos 1 then end end Seleciona a de menor custo Melhor SelecionaMenor Custo 1 Imprime a melhor rota printf nA melhor rota PrintMatrix Rota 1 Rotas Melhor 1 printf com custo total d Custo Melhor Figura 418 O programa CaixeiroViajante sce A Figura 418 mostra o programa completo que tamb m usa as fun es SelecionaMenor Figura 345 p gina 213 e PrintMatrix Figura 346 p gina 213 Executando este programa com o arquivo Distancias txt Figura 415 n s vemos que a melhor rota 1 2 3 5 4 1 com custo total 15 mostrada na Figura 409 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 107 permuta es a serem examinadas 12 Complexidade de Problemas 252 Figura 419 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 Repetindo a pergunta feita para os algoritmos de ordena o seria poss vel construir um algoritmo com complexidade polinomial para o caixeiro viajante Efetiva
262. por um programa e pode ser lido e modificado por outros programas programas que muitas vezes s o executados em outros computadores Arquivos s o imprescind veis para o tratamento de grandes volumes de dados Opera es fundamentais com arquivos que podem ser realizadas por programas s o 7 Loops 177 e a leitura que consiste na atribui o a vari veis de valores presentes no arquivo e e a escrita que consiste na grava o no arquivo de valores de vari veis Existem muitos tipos de arquivos que podem ser manipulados por programas Scilab mas neste curso iremos aprender somente a trabalhar com arquivos de texto isto arquivos que normalmente s o leg veis por humanos e que podem ser editados usando programas como o Bloco de Notas do Windows Um comando muito util para localiza o de arquivos no Scilab o uigetfile que permite ao usu rio selecionar um arquivo navegando nos diret rios do sistema operacional A Figura 277 mostra a janela de navega o para escolha de um arquivo aberta no Windows Vista ap s a execu o de um comando uigetfile Look in fm Dados i On E Out Eg2g eli ba outeg2g Recentitems enega Portuguesingles E egg Er tabela custos eg2g100 gt tabelaComTexto E In Eg2g InglesPortugues Ei Ingl s Portugu s E Jos E Mat E mfprintt File name ConstrCivil txt Files of type All Files Figura 277 Janela de navegacao e escolha de arquivos produzida com 0 comando uiget
263. printf O menor primo gt d d n MenorPrimoMaiorOulgualaA n L n n input n use n lt 2 se quiser parar end Figura 313 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 MenorPrimoMaiorOuIgualA 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 usuario e A fun o deve retornar o n mero primo que desejamos 8 Fun es 194 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 314 function p MenorPrimoMaiorOulgualA n p n while Primo p p ptl end endfunction Figura 314 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 oresultado do teste o par metro formal de sa da que deve
264. quanto o tempo tomado para encontrar o menor fator de um n mero divis vel por 3 foi t o pequeno que a fun o timer retornou zero Isso nos leva 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 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 9 Algoritmos Pesquisa 201 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 8 cont m arquivos com n meros primos ou programas que geram n meros primos A Figura 326 mostra as primeiras e ltimas linhas deste arquivo 200000primos Notepad 200000primos Notepad a 2 49921 a 2749991 5 2750021 7 2720029 11 2750053 13 2750071 17 12750123 119 2750131 o 12750159 Figura 326 Primeiros e ltimos n meros primos no arquivo 200000primos txt
265. que a micro instru o cont m um valor literal e os bits 21 20 e 19 s o usados nas micro instru es de desvio e especificam as condi es em que o desvio deve ser efetivamente realizado em fun o do valor corrente do registrador de compara o Se por exemplo tivermos uma micro 4 Processadores 110 instru o de desvio com os bits 21 e 20 iguais a 1 e o bit 19 igual a zero na execu o desta micro instru o o desvio ocorrer somente se o registrador de compara o estiver seja com a sa da D lt ACC ligada seja com a sa da D ACC ligada Um desvio incondicional pode ser obtido colocando estes 3 bits iguais a 1 D gt ACC i Compare ep0 eno 00 0 E 0000 0001 0000 0002 0000 28 E a al T D I IU Figura 157 Parte da CPU 1 destacando a alimenta o da sa da do registrador de compara o como entrada adicional da unidade de controle Na Figura 157 voc pode ver que a Saida do registrador de comparacao alimenta agora a unidade de controle fornecendo a informa o necess ria para as decis es de desvio condicional Sinais E 100 0000 000000 0 0 441 boo00000 Condi es de desvio TUR 0000 0001 800003 0002 002000 E m 002400 Literal 00 0000 00 00000000 Figura 158 A unidade de controle da CPU 2 com destaque para a l gica de desvio 4 Processadores 111 Quanto unidade de controle as novidades
266. 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 Produzir programas que facilitam a programa o na verdade uma id ia central na ci ncia e na ind stria da computa o Em 1954 a linguagem Fortran de Formula Translating foi proposta por um grupo 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 mostrado na Figura 166 Fortran sem qualquer d vida a m e de todas as linguagens Tendo passado por diversas atualiza es Fortran ainda uma linguagem muito utilizada por cientistas e engenheiros e isso n o deve mudar em um futuro breve Um compilador um programa que tem como entrada um outro programa escrito em uma linguagem de alto n vel e que normalmente produz um programa equivalente ao que recebeu como entrada escrito em linguagem de m quina para uma arquitetura espec fica O primeiro compilador Fortran foi escrito em
267. quivos 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 e Sistemas Reativos S o sistemas que reagem a diversos est mulos de forma a por exemplo controlar um alto forno aumentando a 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 e 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 e Qualquer que seja a linguagem escolhida procure usar bibliotecas de fun es desenvolvidas por profissionais S desenv
268. r ter o valor 1 Para o m dulo mais esquerda que corresponde ao bit mais significativo n s impomos o valor 1 para a entrada ablguais e O para aMaior e bMaior A Figura 112 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 Bmaior ablguais e ABiguais Combina es onde mais de uma dentre as vari veis aMaior bMaior e abIguais 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 Circuitos Combinatorios 80 SSS aS SS iS iS E GS SSS a er ar E D o nn O DO ae B N Oe Ma ep re T FF e D O ee KS ee ee diodo Figura 112 Tabela da verdade para um comparador de 1 bit A Figura 113 mostra o circuito comparador de 1 bit obtido dessa tabela da verdade Figura 113 Circuito comparador de 1 bit Circuitos Combinatorios 81 2 10 Multiplexadores Demultiplexadores e Decodificadores Conduzir bits de um lugar para outro essencial para o funcionamento de um computador para conduzir dados a circuitos capazes de por exemplo efetuar opera es aritm ticas N s veremos agora multiplexadores e de
269. r 2 e o algoritmo termina quando o tamanho desta parte igual a 1 Se a tabela tem n elementos teremos no pior caso log 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 armazenada no arquivo 200000primos txt temos no pior caso log 200 000 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 10 Ordenacao 210 10 Ordena o Vetor n o orden
270. r esta calculadora em um processador isto em um circuito digital capaz de automaticamente executar as opera es prescritas em um programa O ponto a resolver o clicar automatizado de bot es isto a emiss o de sinais de controle sequenciados no tempo sem interven o humana para isso vamos precisar de um novo tipo de circuito O motor o propulsor de qualquer circuito digital um oscilador ou clock Um clock um dispositivo cuja sa da oscila entre O e 1 em uma frequ ncia conhecida Um computador de 1 GHz 1 Giga Hertz utiliza um clock cuja sa da varia entre O e 1 um bilh o de vezes por segundo O Logisim oferece clocks simulados para os quais o usu rio pode escolher a frequ ncia de oscila o como mostra a Figura 138 Circuitos Sequenciais 95 J gt Logisim main de Sem titulo Arquivo Editar Projeto Janela Ajuda k A v Habilitarsimulac o Ctrl E Desabilitar simula o Ctrl R Simula o passo a passo Ctrl I Ir ao estado Continuar do estado Pulso unit rio Ctrl T O Pontadeprova Pulso habilitado Ctrl K C T nel x Resistor para aj Clock Frequ ncia de pulso Registrar Figura 138 Um clock no Logisim com o menu de escolha de frequ ncia A partir do sinal b sico fornecido por um clock circuitos como registradores circulares podem fornecer outros sinais que podem ser usados para coordenar ao longo do tempo o fluxo de dados em um circuito
271. r humano Programas Scilab 134 Arquivo Editar Buscar Preferences Window Executar file with no echo Ctrl Shift file with echo Ctrt L Semnome 1 JO Ea2gl sce SO until the caret with echo Ctri E C lculo das raises de uma equa o de segundo grau ad mw Figura 183 Executando um programa a partir do editor SciNotes Para executar o programa voc pode usar o menu Executar file with no echo ou Executar file with echo conforme mostra a Figura 183 Experimente as duas possibilidades e veja os resultados na console do Scilab 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 o trabalho e 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 exequivel 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 Programas Scilab 135 C lculo das ra zes de uma equa o de 20 grau input Digite valor de a input Digite valor de b C input Digite o valor de c delta b 2 4 a c ri b sqrt delta 2 a r2 b sq
272. ra 266 Tabela da fun o Seno for x 0 0 2 2 pi printf in g g x sin x end Figura 266 O programa Tabela de Senos 2 sceFigura 263 A sa da do Tabela de Senos 2 sce cujas primeiras linhas est o mostradas na Figura 267 melhorou mas ainda n o est satisfat ria 0 0 0 198669 0 4 0 389418 0 6 0 564642 0 1 1 2 0 717356 841471 0 932039 Figura 267 Saida do programa Tabela_de_Senos_2 sce Os problemas de alinhamento sao causados pelo uso do codigo de formato g que nao especifica o numero de colunas que um numero ira ocupar O numero de colunas igual ao numero de caracteres com a fonte tipografica nao proporcional usada pelo Scilab onde todas as letras ocupam o mesmo espa o Com uma fonte proporcional como esta que voc est 7 Loops 172 lendo um i ocupa um espa o menor do que um m o que bem vis vel quando comparamos lili com mmmm Tabela da fun o Seno Impress o do cabe alho printf n x seno x Impress o das linhas da tabela for x 0 0 2 2 Spi printf n 3 1 7 4 x sin x end Figura 268 O programa Tabela de Senos 3 sce A Figura 268 mostra o programa Tabela de Senos 3 sce que produz a sa da mostrada parcialmente na Figura 269 Figura 269 Primeiras linhas da sa da do programa Tabela de Senos 3 sce Nessa ltima vers o e Eimpressa uma linha com cabe alhos para a tabela e Paraa formata o de x usado o c digo 3 1 f
273. ra o encadeamento das chamadas neste programa Programa Principal Fun o Fatorial Figura 298 Encadeamento de chamadas 8 2 Forma e Funcionamento Eunctiomfat fatorial n fat 1 for i 1 n fat fat i end Figura 299 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 fat 1 for 1 fat end endfunc en at 1 Figura 300 Par metros formais de entrada e de sa da da fun o A fun o fatorial possui um par metro formal de entrada n e um par metro formal de sa da fat Par metros formais s o definidos no cabe alho da fun o onde s o utilizados como vari veis normais Entretanto par metros formais s ganham exist ncia durante a 8 Fun es 188 execu o da fun o valores assumidos por par metros formais em execu es anteriores n o t m qualquer significado Por contraste os par metros usados em chamadas de uma fun o s o chamados de par metros reais s o express es que produzem valores 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 A execu o da fun o deve calcular um valor para o par metro formal de sa da este valor utilizado na express o que cont m a c
274. rador 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 452 Comparando com o circuito da Figura 135 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 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 DR gt DBus Output Input bo et Out Clik in Clk in gt DBus Decd O JMPLT Main Memory LOAD JOUTPUT STORE suB Operand FE Operand gt DBus immediate a Ge Direct 7 K TS Indirect ACC dE Clk tt oad El D gt ACC Fa Do Lo D lt ACC Subtract Compare Clik Figura 452 Rotas de dados na CPU Pipoca Ap ndice A A CPU Pipoca 283 5 O Contador de Program
275. rash 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 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 Mathworks MathWorks MATLAB and Simulink for Technical Computing acessado 7 de marco de 2011 http www mathworks com 3 Bill McKeeman MATLAB 101 A talk for the MIT Computer Science Department novembro de 2005 http www cs dartmouth edu mckeeman references matlab101 matlab101 html R E Bryant K Sutner e M J Stehlik Introductory Computer Science Education at Carnegie Mellon University A Deans Perspective Tech Report CMU CS 10 140 Carnegie Mellon University Pittsburgh 2010 http link cs cmu edu article php 2010 gt Bill McKeeman MATLAB 101 A talk for the MIT Computer Science Department Prefacio O Scilab um sistema
276. 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 127 Circuitos Sequenciais 88 3 2 Barramentos e Controle de Fluxo de Dados bonoolil Figura 128 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 buffer controlado 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 buffer controlado Este cabo compartilhado recebe o nome de barramento Todo buffer controlado tem como o pr prio nome indica um pino de controle que abre ou fecha a conex o com o barramento O projetista de um circuito deve cuidar para que a qualquer instante no m ximo um dentre todos os buffer c
277. rico ou um n vel de vermelho em uma imagem ou o que quer que se convencione 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 fz Logisim main of Somado File Edit Project Simulate Window Help blk alme DDD ny Somador4bits main soma completa Base Gates E Input Output Unchanged bi North Figura 39 Circuito combinat rio simulado no Logisim que realiza a soma de duas parcelas bin rias de 4 bits Computadores e Informacao 36 Circuitos sequenciais 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 O
278. rma 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 Figura 342 Ordena o por Sele o e Troca 10 Ordena o 212 Figura 343 Sele o de elementos para troca de posi o em azul o elemento na primeira posi o da parte ainda n o ordenada e em vermelho o menor elemento na parte n o ordenada J temos condi es de dar um primeiro refinamento fun o SelectSort que mostramos na Figura 344 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 end sA A endfunction Figura 344 Primeiro refinamento da fun o OrdenaPorSelecao 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 Sefizermosx y y x o valor antigo de x que quer amos armazenar em y perdido Sefizermosy x 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
279. rmes ocupando vastos sal es como o Blue Gene mostrado na Figura 3 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 Em 2008 j n o era o RoadRunner que como o Blue Gene foi produzido pela IBM atingiu 1 petaflops isto mil trilh es ou 101 opera es aritm ticas por segundo A t tulo de compara o em 2012 a pot ncia de um PC de topo da ordem de gigaflops ou 10 opera es aritm ticas por segundo Como curiosidade o RoadRunner utiliza chips circuitos integrados usados na PlayStation 3 da Sony e 7 wh O o Figura 3 O supercomputador Blue Gene 14 11 Lawrence Livermore National Laboratory BlueGene L Photo Gallery acessado 11 de mar o de 2011 https asc lInl gov computing resources bluegenel photogallery html Computadores e Informa o 14 A cada seis meses uma lista com os maiores computadores do mundo publicada no site da organiza o Top500 2 Na lista de novembro de 2010 pela primeira vez o topo da lista foi ocupado por um computador chin s o Tianhe 1A com um desempenho de 2 6 petaflops Na lista de novembro de 2012 o primeiro lugar do computador Titan Cray XK7 que atingiu 17 petaflops em novembro de 2013 a China retomou o primeiro lugar com o Tiahne 2 que atinge 33 petaflops Vale a pena visitar este site que cont m dados e an lises interessantes sobre a evolu o dos
280. rocesso ilustrado na Figura 447 File Edit Format View Help Main Memory 7 Figura 448 O programa SumX como um arquivo de imagem de memoria do Logisim e carregado na memoria 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 448 Arquivos como esse podem ser produzidos usando a planilha Pipoca xls dispon vel no site do curso e aqui utilizada como um assembler 4 O Circuito Principal da CPU Pipoca J temos agora condi es de apresentar o circuito principal da CPU Pipoca mostrado na Figura 449 Ap ndice A A CPU Pipoca 280 In Full In Full oe Out Empty ut Empty gt HO AG O SetinFull xX gt y SetOutEmpty R V Immediate In Clk e i me Di irect In gt DBus e Indirect A 256BRAM D a sai di Lo O RAM gt DBus G iD ADD COMPARE Operand x10 Pperana Cj HALT Sa DJ JMP ee JMPGT JMPLT Decd Its pile OUTPUT STORE SUB ALU Operand gt DB ii i Running Figura 449 O circuito principal da CPU Pipoca Complicado Sem duvida 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 circu
281. rograma que testa a fun o MinimoPos exec MinimoPos sci exec PrintMatrix sci int 100 rand 1 10 PrintMatrix A a inicio input Inicio fim input Fim while inicio gt 0 m im MinimoPos a inicio fim printf Menor valor entre 3d e d d na posi o d inicio fim m im 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 346 O programa MinimoPos teste e a funcao PrintMatrix A Figura 346 mostra o programa MinimoPos teste sce juntamente com uma fun o auxiliar PrintMatrix cuja utilidade simplesmente a impress o de um vetor em um formato mais agrad vel do que o padr o do Scilab Este programa gera um vetor com 10 10 Ordenacao 214 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 347 mostra uma sa da deste programa 95 12 73 8 80 2 65 74 21 97 Inicio 1 Fim Menor valor entre 1 e 3 12 na posi o 2 Inicio 2 Fim Menor valor entre 2 e 10 2 na posi o 6 Inicio 0 Fim Figura 347 Uma saida 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 348
282. roinstruction 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 457 A a A qu f 1 1 Compatibility Mode Microsoft Exce E Lar iss Insert Page Layout For pulas Dats Rewiew Views e x N p R yi Pa Kca Calibri Jun gt Busta General dE H roma Bad Good Neutral cm x in Zanu SP da r Copy r db F i De For am So Fin laste ag 4 A Conditiona ormat Checkcell x Followed Hy Insert o ete ae t Find amp F Format Painter SE EB jam E E MR A Merge amp Center 3 9 8 Formatting as Table Do C Clear Filter Select Clipboard ls Font Alignment J Number Fa Stytes Cells Editing AD7 X f IR copia o Dbus y HEALS c F G lo Piga RIS VIW K YIIZ AN AE AF AG AHAU AJ AM AN AO AP AQ AR AS AT AU AV AWA AY AZBABEBCEC EE EF 2 mOpCode j ve n and Bin2Dec Com i 2 ja pes IO E E e
283. roinstructions A planilha Microprogram mostrada na Figura 479 de longe a mais complicada no arquivo Pipoca xls 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 Ap ndice A A CPU Pipoca 296 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 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 Mic
284. roveitado 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 O circuito da unidade de controle pode ser visto na Figura 458 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 Ap ndice A A CPU Pipoca 286 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 oregistrador Return Addr de 8 bits que armazena o endere o de retorno para uma micro instru o jsr e o
285. rramento A biblioteca Entrada Sa da do 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 As rotas de dados de uma calculadora como a da Figura 135 permitem controlar diversos fluxos de dados diversas computa es envolvendo a mem ria RAM as entradas e sa das O acumulador e os registradores de dados e de endere os O controle do fluxo de dados feito pelo usu rio Logisim que se encarrega de e mudar de O para 1 ou de 1 para O os sinais de controle de posse de barramentos e de c pia de registradores na sequ ncia adequada ao efeito desejado e de e fornecer valores atrav s do registrador Input Vamos usar a calculadora para resolver um problema simples de transforma o de informa o queremos somar os conte dos das posi es 1 e 2 da mem ria e colocar o resultado na posi o 3 Podemos fazer isso atrav s das etapas 1 Carregar no acumulador o conte do da posi o 1 da RAM 2 Somar ao acumulador o conte do da posi o 2 da RAM 3 Armazenar o conte do do acumulador na posi o 3 da RAM Na Figura 136 e na Figura 137 est o mostradas tabelas com uma sequ ncia de a es a serem executadas por um operador Logisim Essas a es s o sinais de controle a serem aplicados
286. rt delta 2 a Figura 184 O programa Eq2g2 sce com os comandos de dialogo em destaque Programas Scilab 136 O comando input permite essa intera o com o usu rio em tempo de execu o Como vemos na Figura 184 este comando recebe como par metro uma frase a ser exibida para o usu rio que normalmente usada para solicitar o valor a ser digitado Programas Scilab 137 Digite o valor de a l Digite o valor de b 2 Digite o valor de c 3 1 1 41421361 r2 1 41421361 Figura 185 Execu o do programa Eq2g2 sce A Figura 185 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 para os coeficientes a b e c foram respectivamente 1 2 e 3 Estes valores levam a um A Programas Scilab 138 negativo e o exemplo serve tamb m para ilustrar a naturalidade com que o Scilab trata n meros complexos 5 6 Valores L gicos e Strings Uma vari vel Scilab pode armazenar tamb m valores l gicos correspondentes a verdadeiro e falso denotados pelos literais Scilab t e f true e false ou T e F A Figura 186 mostra um exemplo de atribui o de valores l gicos a vari veis usando a console do Scilab Figura 186 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 gi
287. rtas 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 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 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 13 Pr ximos Passos 261 e Trocando o programa trocamos a transform
288. s 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 6 1 Matrizes e Comandos de Atribui o gt A 1 2 3 4 5 6 A 2 d 4 J 6 Figura 202 Atribuindo valores literais a uma matriz A Figura 202 mostra uma maneira simples de se criar uma matriz atrav s de um comando de atribui o na console do Scilab Os valores dos elementos da matriz s o dispostos entre un colchetes Espa os poderiam ser v rgulas separam elementos e separa linhas poss vel extrair o valor de um elemento espec fico da matriz designado por seus ndices entre par nteses como mostrado na Figura 203 e tamb m podemos atribuir um valor a um elemento espec fico de uma matriz como mostrado na Figura 204 gt A 1 2 3 4 5 6 gt e A 2 3 e Figura 203 Obtendo o valor de um elemento de uma matriz 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 fy UI W W Figura 204 Atribuindo um valor a um elemento de uma matriz 6 Matrizes 146 O Scilab tao orientado para matrizes que todas as variaveis Scilab sao matrizes As variaveis simples com que temos trabalhado sao
289. s 188 Vari veis L gicas 143 vari vel 122 vem um 67 Vetores 146 vol til 31 volatilidade 31 Von Neumann 272 XOR 56 xtitle 181 zeros 153 Refer ncias 267 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 3444 3348244651 fef1l6ef641 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 EEE Standard 754 Floating Point Numbers Retrieved August 25 2009 from http steve hollasch net cgindex coding ieeefloat html 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 Previ ew 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 Retrie
290. s o Para tentar melhorar a situa o vamos primeiramente aumentar a frequ ncia de amostragem do sinal para 40 amostras s mantendo os 2 bits de precis o A Figura 22 mostra as amostras obtidas pelo processo de digitaliza o e a Figura 23 sua reconstru o por interpola o linear e spline 22 4 Figura 22 Sinal original e amostras feitas 40 vezes por segundo com precis o de 2 bits Computadores e Informa o 27 aaa e mp 2 J Figura 23 Sinal original e sinal reconstru do por interpola o linear e spline com 40 amostras s e 2 bits de precis o N s vemos que a reconstru o se aproximou mais do sinal original mas o resultado ainda n o bom f cil ver que o problema agora est na precis o com que os valores s o amostrados pois com 2 bits s temos 4 possibilidades de atribui o de valores para as amostras 26 64 Figura 24 Sinal original e amostras feitas 40 vezes por segundo com precis o de 6 bits Se utilizarmos 6 bits de precis o ou 6 bits de profundidade teremos 2 64 valores poss veis para cada amostra e a qualidade da digitaliza o claramente superior como mostra a Figura 24 Figura 25 Sinal original e sinal reconstru do por interpola o linear e spline com 40 amostras s e 6 bits de precis o Computadores e Informacao 28 Na reconstru o do sinal como mostra a Figura 25 os resultados s o muito bons com os dois m todos de interpola
291. s o veja a Figura 158 e temos uma entrada adicional que como j dissemos alimentada pelos tr s bits do registrador de compara o da calculadora e esses tr s bits que v m do registrador de compara o s o confrontados com os tr s bits bits 21 20 e 19 da micro instru o que conforme a Figura 156 especificam a condi o de desvio Essa confronta o dada pela express o booleana Desvio b21 D lt ACC b20 D ACC b19 D gt ACC que coloca o valor 1 na entrada Desvio do PC isto determina a realiza o do desvio quando pelo menos uma das condi es de desvio atendida pelo estado do registrador de compara o Usando estas micro instru es de desvio condicional n s pudemos desenvolver o programa da Figura 159 que tamb m ir usar o acumulador para contar 1 2 3 mas que interrompe a contagem quando o valor do acumulador atingir um valor colocado antes do in cio da simula o na entrada In Micro instru o Rcc Efeito Sinais Endere o Da micro z 1 a a M Acumulado E Instru o E 6 E RAM Bus 6 ACC 0 a ae Carrega 1 no acumulador E E Bus Literal ACC ACC Bus 10 Literal 1 E ae ACC ACC Bus 13 Literal 3 14 Bus Literal Compara o conte do da 15 MAR Bus posi o 3 da mem ria com 16 E Bus RAM o acumulador 17 Compare Bus ACC 18 zz 1 se Bus GT ACC PC 10 Se Bus ACC desvio para 10 Figura 159 Um programa para a C
292. 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 Como acontece com as linguagens naturais a flu ncia vem com o uso e com a flu ncia vem a percep o da riqueza da linguagem Como dissemos 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 programas o SciNotes 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 44 Mathworks MathWorks MATLAB and Simulink for Technical Computing Programas Scilab Console do Scilab Arquivo Editar Controle Aplicativos 122 26 X00 8 BB SK amp 0 Navegador de arquivos J 2011 2 E 2012 1 2012 2 D AdConversion D Apostila EB Artefatos D Business Plan D Dados EB Divulga o E Fontes D Imagens E Logisim D Monitores gt Pipoca FS Professores E Roteiros d EE EE FE BE BEBE Diferenciar mai sculas de mind gt A X Eis LG y Dropbox Ensnoi amp _ de inicia o carregando o ambiente inicial JA cd Navegador de vari veis Tipo Hist rico de comandos ff 20 11 2012 09 51 45 Fig
293. s 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 XEND SUM P Figura 446 Uso das vari veis SUM e P no programa SumxX As quatro ultimas colunas na Tabela 7 resultam de um processo de montagem que descrevemos a seguir Ap ndice A A CPU Pipoca 278 Tabela 7 O programa SumX Bons Zera o acumulador SS UM ColocademsuM Carrega o endere o X no acumulador Coloca oenderesoXemP Carrega o conte do de SUM no acumulador Soma o conte do da posi o de mem ria cujo Camegaoconte dodeP ma 1 Coloca oresultadoemP H Se for menor desvia para FINISH P Para Ww ars J Lid Lid Y Word10 oS S amp E 3 Jf nary ja E a of Se x Wp A Pa alo ar tr Va to tm Ww Cc A O S a Ww Cc O e I UJ T R O N meros a serem somados Lo No pd ND No No No gt tem 0o fon 2 o ES TE lt o EX 3 EI 6 8 9 21 BsjnjsjEs e s e s e s s s 2 amp 8 2 8 2 8 addressi6_ dE elsjalejola amp 1518161316 SSRI SIR O RSR E relelelele e Iefele e elele e o o
294. s 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 cidades as rotas a serem examinadas s o lembrando que a cidade 1 o ponto inicial e final e portanto faz parte de qualquer circuito Ww Ww N N gt N A W N A UU A 12 Complexidade de Problemas 248 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 O Scilab j oferece a fun o perms para isso mas vamos aqui desenvolver uma fun o equivalente Vamos primeiramente definir um cabe alho para uma fun o permutations Figura 412 Function p permutations A gera uma matriz p onde cada linha uma permuta o de A Endfunction Figura 412 Cabe alho da fun o permutations Precisamos agora de um algoritmo para gerar essas permuta es O racioc nio mais uma Vez recursivo e Seovetor 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 eleme
295. s funcionam como esperado na maior parte dos casos 12 Complexidade de Problemas 242 12 Complexidade de Problemas Para o problema da fatora o vimos um primeiro algoritmo com complexidade 0 2 e um outro superior com complexidade 0 27 2 Para o problema da ordena o vimos o algoritmo de Sele o com complexidade O n e o MergeSort com complexidade O n log n bem superior Criatividade e estudo de propriedades de um problema podem levar a melhores algoritmos mas isto seria sempre poss vel Esta a quest o central deste m dulo que leva a conceitos fundamentais da Ci ncia da Computa o 12 1 Complexidade da Ordena o f cil ver que a complexidade do algoritmo de ordena o por radical O n superior complexidade no pior caso do melhor algoritmo de ordena o por compara o que vimos o MergeSort que O nlogn Mas o algoritmo de ordena o por radical menos gen rico Se considerarmos apenas algoritmos de ordena o que s utilizam compara es a situa o diferente N s vamos agora ao objetivo central desta se o que demonstrar que n o existe nenhum algoritmo de ordena o por compara es que tenha complexidade melhor que O nlogn Um algoritmo de ordena o por compara es pode receber como entrada um vetor com elementos dispostos em qualquer ordem e produz uma permuta o destes elementos disposta em ordem crescente Durante a sua execu o o algoritmo faz diversas c
296. s 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 mais avan ados de programa o ou de engenharia de software 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 pr tica uma prova formal de corre o s vi vel para algoritmos muito pequenos O que se faz produzir uma argumenta o informal da corre o de um algoritmo 9 Algoritmos Pesquisa 199 Al m desta argumenta o testes 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 nfima fra o dessas possibilidades scH T Ysch_ Figura 323 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 323 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
297. s s o escritos por pessoas e executados por computadores Programas s o compostos por instru es e comandos que l m transformam e registram informa o digital Computadores e Informa o 29 Digital K a recebida enviada pelo computador de pelo computador para ii Entradas Figura 27 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 ii incluem Microfones C meras Digitais Figura 28 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 quase toda 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 Uma pessoa com dificuldades na digita o tende a abandonar os computadores em uma atitude que provavelmente lhe trar consequ ncias profissionais negativas F j PP RPP PPE R Win Key fur Alt Gr Koy Manu Cirl Figura 29 Barbara Blackburn recordista mundial de velocidade de digita o e um teclado Dvorak projetado para maximizar a velocidade de digita o em
298. sadas pelo Logisim preto usado para cabos com valor 0 verde para 1 e azul para cabos ainda sem valor determinado Termine agora o cabeamento para obter o circuito da Figura 74 que implementa o Ou Exclusivo Figura 74 Circuito OU Exclusivo Seu diagrama ficar mais f cil de ser compreendido se voc acrescentar textos usando a ferramenta A em destaque na Figura 75 Voc pode alterar as caracter sticas da fonte tamanho negrito ou it lico etc editando os atributos do texto selecionado J gt Logisim main de Sem t tulo Arquivo Editar Projeto Simular Janela Ajuda laMalme DD Figura 75 Acrescentando textos a um circuito Circuitos Combinatorios 60 Textos podem ser colocados em qualquer posi o na area de desenho mas muitas vezes melhor coloc los como r tulos de elementos de circuito como entradas portas l gicas e sa das O r tulo acompanha o elemento de circuito quando este movido para outra posi o Para isto selecione o elemento e preencha o campo R tulo na tabela de atributos como mostrado na Figura 75 gt Logisim main de Sem titula Arquivo Editar Projeto Simular Janela Ajuda ele Ale 60 D D qa RN Portas Plexers Aritm tica Mem ria Entrada Saida Base Figura 76 Ferramenta de simula o Para testar o seu circuito use a ferramenta de simula o a m ozinha em destaque na Figura 76 Utilize a clicando sobre as entradas do circuito p
299. sci exec StrPost sci exec WritePostSolution sci exec WritePostProblem sci Leitura do problema de Post nTypes Up Down ReadPostProblem WritePostProblem Up Down found f seq while found seq Sucessor seq nTypes upString strPost Up seq dnString strPost Down seg found upString dnString 1f found then WritePostSolution seq Up Down end end Figura 423 O programa Post sce A Figura 423 mostra o programa Post sce aonde e Afuncao 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 Avariavel 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 Afun o WritePostSolution usada para imprimir na tela uma solu o eventualmente encontrada e Afuncao strPost constr i um string concatenando segundo uma sequ n
300. sciladores e registradores circulares s o introduzidos como elementos para controle da evolu o temporal de um circuito Logisim main of Acumulador File Edit Project Simulate Window Help Acumulador d main Base Gates ria ho h he Figura 40 Circuito sequencial simulado no Logisim que acumula a soma das entradas A primeira parte culmina com a apresenta o de processadores que s o circuitos que transformam informa o de forma flex vel determinada por um programa que por ser carregado em uma mem ria pode ser substitu do com facilidade 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 as dificuldades da programa o a n vel de instru es de m quina de um computador A Parte II Linguagem e Ambiente Scilab tem como objetivos principais e a introdu o de uma linguagem de alto n vel Scilab Scilab Consortium s d que facilita imensamente a tarefa de programa o de computadores atrav s da oferta de 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
301. seguimos construir programas que prescrevem a repeti o de a es por um processador e com isso desvincular o tamanho de um programa do n mero de opera es realizadas em sua execu o Este um resultado muito importante pois programas s o feitos por n s humanos que queremos trabalhar pouco e s o executados por computadores que n o se importam de trabalhar muito Mas como fazer para interromper as repeti es Afinal um loop precisa parar N s queremos poder construir programas que resolvam problemas como somar os conte dos das posi es de mem ria com endere os entre 100 e 200 ou encontrar o menor valor entre os conte dos das posi es de mem ria com endere os entre 1000 e 1 000 000 que certamente envolvem loops mas que devem ser interrompidos ao se atingir os limites das opera es desejadas Este problema resolvido por micro instru es de desvio condicional que provocam desvios no fluxo de execu o somente quando o resultado de compara es satisfizer uma condi o maior igual menor maior ou igual etc Micro instru o E E Sinais Endere Literal Bus ACE Clear Figura 156 Codifica o de micro instru es de desvio condicional Na Figura 156 voc pode ver a codifica o de micro instru es que iremos adotar para um novo processador a CPU 2 Nessa codifica o e o bit 22 indica se a micro instru o de desvio e obit 23 como na CPU 1 indica
302. ser t se o numero 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 sao 1eo proprio n A fun o Primo pode ent o ser escrita como mostrado na Figura 315 function ehPrimo Primo n ehPrimo n MenorFator n endfunction Figura 315 A fun o Primo 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 ptti end endfunction Figura 316 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 8 Fun es 195 e Ao desenvolver a fun o MenorPrimoMaiorOulIgualA n s esquec
303. seu gr fico para um vetor x 8 Fun es 189 function PlotaPontos f x y f x plot2d x y style 1 endfunction function y MinhaFunc x y exp x 2 endfunction Testador PlotaPontos exec PlotaPontos sci exec MinhaFunc sci 0 0 1 2 pi PlotaPontos sin x PlotaPontos MinhaFunc x Figura 302 Uma fun o que faz o gr fico de outra fun o recebida como par metro 8 3 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 a l E o j fatonal sci C Users Osvaldo Documents My Dropbox s Arquivo Editar Buscar Preferences Window Executar DEBlBR a s e xgo g gt fateris oni eC sersiOsvaldoiDocuments My DrogboxiEnsinoidec0012011 _2M dulo_ 6lendfunction Figura 303 Um arquivo com uma fun o aberto no SciNotes A Figura 303 mostra um arquivo com a fun o fatorial aberto no SciNotes 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 presen a em seu computador de um arquivo com uma fun o n o basta para que o Scilab saiba de sua exist ncia necess rio incorporar a fun o ao Scilab o que pode ser feito com o comando exec lt nome do arquivo com a fun o gt que deve ser colocado no programa principal Um ex
304. stados Generalizando com n bits temos 2 combina es e 2 cresce muito rapidamente quando o valor de n aumenta e Um conjunto de 8 bits chamado de byte 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 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 coisas 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 2 1024 gt 10 1 000 2 1 048 576 gt 10 1 000 000 2 1 073 741 824 gt 10 1 000 000 000 2 1099 511 627 776 gt 10 1 000 000 000 000 2 1 125 899 906 842 624 gt 10 1 000 000 000 000 000 12 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 lt Ni m O Podemos ver que o uso de apenas 2 s mbolos n o traz limita o alguma de representatividad
305. sticados do que os que apresentamos aqui 11 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 subintervalos iguais Com isso n s vamos obter n 1 pontos regularmente espa ados que vamos chamar de x Xx5 Xn 1 N stemos x 4 Xn 1 be Xj41 X A b a n para todo 1 lt i lt n O lado direito de cada ret ngulo coincide com a O lado esquerdo de cada ret ngulo coincide com a curva curva Xi Xi 1 a Figura 372 reas cobertas pelas somas de Riemann pela esquerda e pela direita para f x 1 x no intervalo 0 1 A Figura 372 e a Figura 373mostram 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 11 Algoritmos Num ricos 229 Figura 373 Somas de Riemman pela esquerda e pela direita para a fun o seno no intervalo 1 3 Podemos ver que a rea definida pela soma de Riemann pela esquerda dada por Aesq f X1 Ay f 02 Ag ee fn A Oe FG i 1 enquanto a rea definida pela soma de Riemann pela direita dada por n 1 Agir 10h SGA t FO Ay D FC t 2 A medida em que o numero 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 374 Figura 374 Somas de Riem
306. stoen BIBS 10 000 6800 g eaen anao L e B00R 4 MOS E502 2 300 4004 e Rca 1802 51 16 Care SPARC Ta Siz Gore Gare ir Six Gore Mean T400 CualeSore Itanium 2 66 AMO E10 POWERS Haniurm 2 wilh SMB cached AMD Ki ow hy o fi Cora Xeon Viasimera EM E corE pag i Quad 0 qi ada Tanium Tukia at Before Zeon Wehen EX Si Core Opleran 2400 Cora 7 Quad ltaritum 2 A E ETE 2 Duo Je AMO KA Fal amp Earion Pantium 4 g AMD KT SR AMD KEHII AMD KE Fa A amp Pentium Il Pentin Il e AMD KS A Pentium Atom Figura 60 Lei de Moore o n mero de transistores por rea dobra a cada dois anos Duas opera es booleanas que podem ser derivadas das opera es b sicas s o NAND e NOR cuja import ncia vem do fato de que sua constru o com transistores mais simples como veremos a seguir Estas opera es s o definidas por e aNANDb a b 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 Figura 61 mostra os s mbolos utilizados no desenho de circuitos l gicos para as portas NAND e NOR Repare que o s mbolo para NAND quase igual ao s mbolo usado para AND diferenciando se somente por um pequeno c rculo em sua sa da o mesmo vale para o s mbolo usado para NOR 33 Moore s law Wikipedia the free encyclopedia acessado 3 de mar o de 2013 http en wikipedia org wi
307. tam a nota o posicional a mesma adotada no sistema decimal que usamos no dia a dia cujo imenso sucesso se deve exatamente a facilidade com que opera es aritm ticas s o feitas Uma soma de n meros bin rios similar soma decimal que aprendemos na escola prim ria um algoritmo vener vel difundido no Ocidente por ningu m Circuitos Combinatorios 66 menos que Muhammad ibn Misa al Khwarizmi matem tico rabe que viveu entre 780 e 850 em Bagd e cujo nome traduzido para o latim deu origem a palavra algoritmo Para entender o sucesso do ent o novo m todo que concorria com n meros romanos responda r bido quanto vale LIII XXVIII E pior quanto vale LII x XX VIII 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 seu d gito mais significativo e acrescentamos 1 o vai um na soma da coluna seguinte Figura 87 Naum iji Figura 87 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 88 mostra o processo do c lculo de 1011101 1001110 Figura 88 Exemplo de soma de bi
308. tamento de c digo muito mais elegante A leitura do programa principal tamb m muito mais f cil pois a inten o do programador se torna mais clara Para algu m que n o tivesse constru do o programa da Figura 293 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 293 s o uma fonte de enganos 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 304 em uma fun o o que resulta no c digo mostrado na Figura 296 function nComb Combinacoes n k nComb fatorial n fatorial n k fatorial k endfunction Figura 296 Uma fun o para o c lculo do n mero de combina es de nka k 8 Fun es 187 Um programa equivalente ao da Figura 304 esta mostrado na Figura 297 Voc deve reparar no encadeamento de chamadas o programa principal chama a fun o Combinacoes que por sua vez cont m tr s chamadas para a fun o fatorial exec Combinacoes sci exec fatorial sci n input n k input k printf nComb d d d n k Combinacoes n k Figura 297 Um programa principal que usa a fun o Combinacoes A Figura 298 ilust
309. tantes nestas colunas para obter a planilha completa Finish P key TableEnd mostrada na Figura 482 INPUT LOAD JOIMPARE COMPARE JMPGT LOAD ADD STORE COMPARE D JMPGT OUTPUT F IMP HALT Key Key o Finish Table P Key F EndSearch P P TableEnd Searchloop IP ReadLoop Ap ndice A A CPU Pipoca 299 16 EndSearch 29 TableEnd Instruction a 1 i a 2 ReadLoop 1 3 1 1 1 a LOAD COMPARE JMPEQ LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE COMPARE JMPGT OUTPUT IMP HALT gju fo im 1 1 1 a ke Bo ISA R FBS E S Addess HEX o 1 1 1 EB eo so in b wo e O Address DEC o 5 P So mn oo H ca 1 1 1 z TableEnd SearchLoop P ReadLoop 1 Se ee min E bo eee amp o mm Smoaoogogcroanmroaoaocr olMMnode oo FP Key Table do da 5 JEENE 1 1 1 1 1 1 1 1 1 1 1 1 1 ha ha nm oo Seoeae eoaeoeue e882 02h amp HOU ma Fe Ee 1 pa aj 1B MAH SearchTable Aux J Figura 482 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 d
310. tilizados em computa o ASCII e UNICODE Para a comunica o com humanos a linguagem escrita essencial Seres humanos l m e escrevem usando algum alfabeto algarismos s mbolos de pontua o e esta uma parte essencial de nossa comunica o 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 e que tem como objetivo a codifica o de s mbolos teis chamados caracteres para a comunica o por escrito com humanos End of Transmission 0000100 4 Space 0100000 32 0101000 4 0110000 4 0110001 4 0110010 0110011 0 3 8 9 0 1 1000001 5 1000010 6 1000011 7 7 8 9 1100001 1100010 1100011 9 Figura 47 Exemplos de codifica o ASCII 5 5 6 6 6 9 9 0 1 2 3 A B C a b Circuitos Combinatorios 43 A Figura 47 mostra partes do c digo ASCII cuja primeira vers o foi proposta em 19637 O c digo foi projetado para a representa o de caracteres como A a etc para O espa o em branco sim o espa o tamb m 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 Destas 33 representam caracteres de controle como Line Feed ou Carriage Return muito teis especialmente nos tempos em que teletipos m quinas de
311. tion W H Freeman s d Ibidem 9 Algoritmos Pesquisa 206 9 4 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 sequencial e a pesquisa bin ria Como um exemplo n s vamos 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 numero primo pesquisando por ele na tabela e O programa deve parar quando o n mero lido for O zero 9 5 Pesquisa Sequencial A Figura 333 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 deixa
312. tivos por deslocamento Complemento de 2 A absoluta maioria dos computadores utiliza uma codifica o conhecida como complemento de 2 para a representa o de n meros inteiros negativos A Figura 54 mostra a codifica o em 3 bits dos inteiros entre 4 e 3 usando complemento de 2 Circuitos Combinatorios 46 Figura 54 Codifica o em complemento de 2 com 3 bits O valor representado pela sequ ncia de bits bb by dado pela f rmula V 4b 2b bo N s adotaremos neste texto a conven o de designar sempre por by o bit menos significativo e por b 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 muito mais simples e intuitivas A motiva o simples e decisiva para todos os fabricantes de computadores custo A representa o em complemento de 2 tem propriedades que permitem uma grande economia na constru o de circuitos Para se obter o negativo 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 Ao inverter todos os bits de 000 obtemos 111 somando 1 obtemos 1000 caso em que s os tr s bits menos significativos devem ser aproveitados Isso permite aos fabr
313. tos 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 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 O situa o em que podemos 9 Algoritmos Pesquisa 208 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 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 p mM else if 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 336 A fun o recursiva BinarySearch A Figura 336 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 els
314. trada 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 Circuitos Combinatorios 68 vai um a ab v abv abv Figura 91 Tabela da verdade para um circuito de soma completa A Figura 91 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 a LE Titty o oa Beigi a Gov Vai Um O es o Figura 92 Circuito Soma Completa constru do diretamente a partir das express es obtidas da tabela da verdade A Figura 92 mostra um circuito de soma completa constru do com a utiliza o destas express es l gicas Circuitos Combinatorios 69 Figura 93 Somador de 4 bits usando 4 circuitos de Soma Completa Podemos agora obter somadores de n bits compondo n circuitos de Soma Completa seguindo o arranjo proposto na Figura 90 A Figura 93 mostra um somador de 4 bits obtido com este desenho 2 7 Modulariza o e S ntese Automat
315. tros reais 188 Pascal 119 PC 273 Pesquisa Bin ria 207 Pesquisa Sequencial 207 PHP 119 pilha 196 Planilha Pipoca xls 295 plot2d 154 poligono 181 Ponto Flutuante 46 printf 141 problema de transformacao de informacao 198 processador 21 produto elemento a elemento 149 produto matricial 149 profundidade 244 Program Counter 273 programa 271 Programa em Execu o 277 programa execut vel 276 Programa Execut vel 277 Programa Fonte 277 programa principal 186 Prolog 120 prova formal 198 pwd 178 Python 119 raiz da rvore 244 RAM 31 Indice Remissivo rand 153 rect 181 registrador 86 registrador circular 95 Registradores 31 retorno da fun o 186 return 285 Return Address 284 RGB 44 RoadRunner 13 ROM 89 sci 189 Scilab 121 SciPad 132 selecao e troca 211 Select Sort 210 sensores 29 SetInEmpty 281 SetInFull 281 Signals 284 Sinal e Amplitude 45 S ntese de Circuitos Combinat rios 69 size 146 software 271 soma can nica 64 soma de Riemann 228 soma completa 67 somador den bits 67 266 splitters 87 Strings 139 sub circuito 72 SumX 277 supercomputador 14 tabela da verdade 62 teclado Dvorak 29 testes 199 then 141 timer 200 Transistores 50 Trocar os valores de duas vari veis 212 uigetfile 177 unidade de controle 274 unidade l gico aritm tica 93 vai um 66 Vari veis 123 vari veis locai
316. u 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 hve pl Comments o i o OD o DO lt lt 27 3 GetOperand Resolve endere amento operando efetivo no DR 28 40 Sa da do DR vai para Dbus for a desvio no PC 29 41 K PC copia Dbus 2A 42 Fetch Fetch da pr xima instru o 2B 43 JMPEQ jmpEQ JMP Desvio condicional para JMP 2C 4 Fetch Fetch da pr xima instru o 2D 45 JMPGT jmpGT JMP Desvio condicional para JMP 2E 46 jmp Fetch Fetch da pr xima instru o 2F 47 JMPLT jmpLT JMP Desvio condicional para JMP 30 48 jmp Fetch Fetch da pr xima instru o Figura 474 Micro c digo para as instru es JMP JMPEQ JMPGT e JMPLT Ap ndice A A CPU Pipoca 294 O micro c digo para as instru es de desvio esta mostrado na Figura 474 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 p
317. ual a 1 os 16 bits menos significativos s o a codifica o em bin rio de um valor literal o barramento da calculadora tem 16 bits de largura A unidade de controle dever ter uma sa da com o valor do literal ligada ao barramento da calculadora e utilizando como todas as outras liga es de sa da para o barramento um buffer controlado para evitar conflitos Este buffer controlado comandado por um sinal que deve ser adicionado aos sinais j emitidos pela unidade de controle 4 Processadores 102 Compare Bus GT ACC Bus FO ACC Bus LT ACC ACC Clear E acct Clk MAR Clk Figura 146 CPU 0 nosso primeiro processador J temos agora condi es de mostrar o nosso primeiro processador capaz de executar micro instru es em sequ ncia com sinais de controle e valores literais fornecidos por uma unidade de controle A Figura 146 mostra o circuito principal da CPU 0 nome que demos a este processador Para compreend lo voc deve primeiramente reparar que podemos dividi lo em duas partes Na metade superior voc deve reconhecer a nossa calculadora onde todos os sinais de controle foram ligados sa da da unidade de controle o bloquinho escrito Ctrl que fica na metade inferior do circuito Voc deve ainda reparar que a unidade de controle tamb m tem uma sa da ligada ao barramento da calculadora por esta sa da que passam os literais especificados nas micro instru es 4 Processadores
318. ualquer curso introdut rio de Programa o de Computadores tem que falar alguma coisa sobre computadores n s tomamos a decis o de falar um pouco mais do que o tradicional A nosso ver o estudo de organiza o de computadores abre oportunidades para a introdu o de diversos conceitos fundamentais para a programa o de computadores O aluno tem contato com bits com opera es l gicas com c digos importantes como ASCII inteiros sem sinal e ponto flutuante Acumuladores s o o primeiro contato com loops e somadores s o um 1 Carl Burch Logisim a graphical tool for designing and simulating logic circuits acessado 7 de marco de 2011 http ozark hendrix edu burch logisim Prefacio excelente exemplo de modulariza o A execu o sequencial de instru es e instru es de desvios s o tamb m elementos para a forma o na mente do aluno de um mecanismo de execu o de programas E talvez mais importante o primeiro contato com a programa o se d sem a necessidade de abstra es com rela o possibilidade de execu o de opera es b sicas 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 um dos pioneiros do Computer Science Department de Stanford hoje professor de Dartmouth e desenvolvedor da MathWorks2 empr
319. ue poss vel automatizar essas opera es com o uso de uma unidade de controle impulsionada por um clock Mas o exemplo da soma de 5 parcelas nos mostra um problema na CPU 0 um programa cresce de tamanho com o n mero de opera es que realiza Qual seria o tamanho de um programa que soma um milh o de parcelas Para conseguir escrever programas cujo tamanho n o cres a com o n mero de opera es que sua execu o realiza precisamos alterar nosso modelo de execu o sequencial de micro instru es N s vamos agora apresentar um outro processador a CPU 1 que possui uma micro instru o especial que desvia o fluxo de execu o para um endere o designado na mem ria de programa O ciclo de leitura e execu o de micro instru es deve ser modificado em fun o disso pois a pr xima micro instru o a ser executada nem sempre a que est armazenada no endere o consecutivo da mem ria de programa 4 Processadores 107 EREDOL Sinais Tl Endere o MIS Da micro ee ae i Acumulado aia l E instru o Ele of ACCO 1 0 Literal 1 T Pl ENTER crer Carrega no acumulador J O 3 ACC ACC Bus 4 Es a i Literal 1 E DIES i Bus Literal Soma Tao acumulador 6 a ACC ACC Bus _ TTT A 4 Figura 152 Formato de micro instru es que contempla instru es de desvio A Figura 152 mostra como as micro instru es s o codificadas na CPU 1 e Seo bit 23 o mais significativo for igual
320. ura 168 cone e tela inicial com a console do Scilab A Figura 168 mostra a tela obtida ao clicar sobre o cone do Scilab uma tela com quatro pain is uma barra de menus e uma barra de ferramentas A janela central sobre a qual iremos inicialmente concentrar nossa aten o a console com um prompt de comandos indicado pela setinha gt nesse prompt que s o digitados comandos a serem interpretados pelo Scilab 5 3 Vari veis e Comandos de Atribui o Navegador de vari veis Hist rico de comandos El 21 10 2012 07 19 05 ig a 2 Figura 169 Um comando de atribui o O principal comando que transforma informa o chamado comando de atribui o Um primeiro exemplo est na Figura 169 que mostra o efeito no Scilab da digita o na console do comando a 2 2 seguida de lt enter gt Aqui a uma vari vel que passa a existir no Programas Scilab 123 interpretador e que recebe e armazena um valor no caso 4 A exist ncia dessa vari vel confirmada pelo painel de navega o de vari veis no canto superior direito da tela Ap s executar um comando de atribui o o Scilab ecoa o seu valor isto imprime na console o valor recebido pela vari vel 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 segund
321. vamos apresentar o algoritmo de Euclides proposto em 300 A C e que utilizado at hoje Este algoritmo encontra o m ximo divisor comum de dois inteiros positivos Por defini o mdc m n ondem en s o inteiros positivos o maior dentre todos os divisores comuns a m e n O algoritmo se baseia no fato de que se substituirmos o maior dentre m e n pela diferen a entrem en o m ximo divisor comum n o se altera A prova desta propriedade n o dif cil Queremos mostrar quesed mdc m n em gt n ent o d mdc m n n Parte 1 Se d mdc m n ent o d tamb m dividem n Se d um divisor de m ent o m d x onde x gt 1 um inteiro Mas d tamb m um divisor de n e portanto n d y 4 Euclidean algorithm Wikipedia the free encyclopedia acessado 8 de mar o de 2011 http en wikipedia org wiki Euclidean_algorithm cite_note 2 7 Loops 168 onde y 1 um inteiro Temos ent o m n d x y supondo quem gt n ou x gt y Ou seja se d um divisor dem e den m tamb m um divisor dem n Parte 2 Sed mdc m n ent o d o maior dentre os divisores de m n en Suponhamos que exista D gt d tal que m n D z en D w teremos m D w D z ou m D w 2 D seria portanto divisor de m e de n e como D gt d por hip tese e seria maior que mdc m n o que contradiz a defini o de maximo divisor comum Sabemos tamb m que mdc a a a para qualquer a inteiro positi
322. vard Asssesssment Seminars est o e High demands and standards placed upon students but with plentiful opportunities to revise and improve their work before it receives a grade thereby learning from their mistakes in the process e Frequent checkpoints such as quizzes tests brief papers or oral exams The key idea is that most students feel they learn best when they receive frequent evaluations combined with the opportunity to revise their work and improve it over time Entretanto avalia es exigem corre es e com a atual press o por produtividade medida pela rela o alunos professor o trabalho de corre o pode se tornar insustent vel preciso equilibrar o uso de quest es fechadas corrigidas automaticamente com o de quest es abertas imprescind veis em um curso de programa o de computadores mas que exigem corre o manual Mesmo controlando o uso de quest es fechadas o aux lio dado por uma equipe de monitores pode ser essencial para se manter avalia es semanais Este texto est organizado em 12 m dulos que correspondem a 12 aulas expositivas com conte do novo Isso se adapta bem a um semestre na UFMG que tem aproximadamente 15 semanas Com uma aula expositiva por semana as tr s semanas de folga podem ser completadas com revis es ou outras atividades Agradecimentos A metodologia adotada para Programa o de Computadores uma aula expositiva e uma aula pr tica por semana e a nova linguagem
323. ve equa es do 22 grau mas com as seguintes altera es na especifica o o programa s dever calcular as ra zes quando elas forem reais a sa da do programa dever ser uma frase como As ra zes s o xxxx e xxxx quando as ra zes forem reais e sen o As ra zes s o complexas input Valor de a input Valor de b input Valor de c delta b 2 4 a c if delta gt 0 then rl b sqrt delta 2 a r2 b sqrt delta 2 a printf As ra zes s o 6 3f e 6 3f rl r2 else printf Ra zes complexas end Figura 195 O programa Eq2g3 sce A Figura 195 mostra o programa Eq2g3 sce que atende a essas especifica es Repare que on estamos usando ap s varios dos comandos de atribui o o que suprime o eco do Scilab e torna a sa da mais limpa 1f lt condi o gt then lt bloco ent o gt else lt bloco senao gt end Figura 196 O comando if Este programa introduz dois novos comandos if e printf O comando if usado para prescrever comportamentos condicionais na execu o do programa Sua forma geral est mostrada na Figura 196 onde if then else e end s o as palavras chave que o Scilab usa para reconhecer o comando if marca o in cio do comando 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 then separ
324. ve 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 5 na p gina 275 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 1 1 1 1 Programando a Pipoca As planilhas SumX 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 Address HEX Operand1o Instruction INPUT LOAD COMPARE JMPEQ LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE COMPARE JMPGT OUTPUT JMF HALT ReadLoop P Key F EndSearch Pp searchloop e e ee HA nISize P TableEnd Searchloop P ReadLoop EndSearch
325. ved 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 html Lyon B 2005 The Opte Project Retrieved August 2009 from http opte org Mathworks n d Retrieved Fevereiro 2010 from http www mathworks com McJones 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 mckeeman references matlab101 matlab101 html 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 Marco 2010 from http qss 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 Refer ncias 268
326. versa da matriz dada como argumento A Figura 218 mostra um exemplo de sua utiliza o Quando multiplicamos uma matriz por sua inversa esperamos obter a matriz identidade mas n o exatamente isso o que mostra a Figura 219 6 Matrizes 151 gt A IA i 4 441D 16 LoLiQb 1s Lo LIUD Io Ds Ly La gt A A Dra aa DeL L Ja Figura 219 O produto de uma matriz por sua inversa calculada pelo Scilab pode ser 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 o Relembrando podemos resolver a equa o multiplicando os dois lados por a alax Ix x ab onde I a matriz identidade Usando a console do Scilab o sistema pode ser resolvido com a sequ ncia de opera es mostrada na Figura 220 6 Matrizes 152 gt b 4 0 1 inv a b Figura 220 Resolvendo um sistema de equa es lineares A precis o do resultado pode ser avaliada calculando ax b o que pode ser feito no Scila
327. 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 1 1 NL Custo i cost Dist 1 Rotas i 1 End function c cost D path c 0 for i 1 length path 1 c c D path i path itl end endfunction Figura 417 Obtencao de todas as rotas e calculo dos custos Nos trechos de codigo mostrados na Figura 417 voc deve reparar que o vetor Rotas recebe todas as permuta es das cidades de 2 an e nao de 1 an pois a cidade 1 sempre o ponto de partida e de chegada 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 12 Complexidade de Problemas 251 Resolve o problema do caixeiro viajante clear exec permutations sci exec cost sci exec OneOut sci exec SelecionaMenor sci exec PrintMatrix sci L a matriz de dist ncias Dist fscanfMat uigetfile txt pwd Dist ncias PrintMatrix Dist ncias Dist Substitui 1 por inf Dist Dist 1 inf 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 i cost Dist 1 Rotas i 1 if Custo i lt gt Exem
328. vo Com isso podemos construir o programa da Figura 256 m input m n input n a m b n a b inteiros a gt 0 b gt 0 mdc a b mdc m n while a b if a gt b then a a b else b b a end mdc a b mdc m n a b inteiros a gt 0 b gt 0 end mdc a b mdc m n a b inteiros a gt 0 b gt 0 Como a b mdc a b a b mdc m n printf MDC d d d m n a Figura 256 Programa para c lculo do m ximo divisor comum pelo algoritmo de Euclides A constru o deste loop emprega a seguinte l gica na prepara o do loop os comandosa meb n estabelecem trivialmente o invariante do loop mdc a b mdc m n a gt Oeb gt 0 supondo que m gt Oen gt 0 a cada passo se a for maior que b seu valor substitu do pora b eseb for maior do que a seu valor substitu do porb a Nos dois casos o invariante mantido em vista do que demonstramos acima e do fato de estarmos subtraindo de um n mero um valor positivo menor que ele quando o loop termina temos a b e portanto a ou b claro cont m o valor desejado do mdc m n A Figura 257 mostra um exemplo de execu o deste loop 7 Loops 169 56 n 12 a Es IN 7N S WANN CeCe PO ANY 2 12 4 ra Z Z Figura 257 Exemplo de loop para c lculo do m ximo divisor comum 7 6 O comando for Loops como o da Figura 250 s o t o frequentes em progra
329. xecu o de c digos objeto de diversos programas e tamb m do pr prio sistema operacional e Programas objeto normais n o t m instru es para acesso direto a equipamentos de entrada e sa da como discos ou o monitor Opera es de entrada e sa da s o Programas Scilab 121 realizadas exclusivamente pelo sistema operacional que oferece estas opera es como servi os utilizados pelos programas comuns Com isso o sistema operacional consegue administrar conflitos no uso dos dispositivos de E S e tamb m permitir que programas normais possam desfrutar de abstra es confort veis como arquivos e diret rios ao inv s de terem que lidar com detalhes de cada unidade de disco e Isso faz com que compiladores tenham tamb m que ter adapta es para cada sistema operacional Por exemplo um compilador C deve ter uma vers o para Windows e outra para Linux e Uma mesma linguagem pode ser implantada por compila o ou por interpreta o Mesmo se tradicionalmente Ce Fortran s o linguagens implantadas por compila o nada impede que interpretadores sejam constru dos para estas linguagens e que compiladores sejam constru dos para linguagens tradicionalmente interpretadas como Scilab e Matlab das quais falaremos a seguir 5 2 Scilab Nos fins dos anos 70 Cleve Moler criou uma linguagem Matlab voltada para o tratamento de matrizes que em 1984 foi lan ada comercialmente pela empresa MathWorks Matlab vem de Matrix Laboratory
330. xemplo 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 gt a 3 9 12 1 gt x 0 y 0 gt if a gt 5 then x 10000 end gt if a gt 0 then y 10000 end gt x y ans O 10000 Figura 244 Exemplos 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 St 3 9 12 1 Figura 245 Uso de matriz booleana para sele o de elementos de uma matriz Isso nos permite selecionar elementos de uma forma elegante como mostra a Figura 246 6 Matrizes 162 gt a 3 ba a gt 5 Figura 246 Exemplo de sele o de elementos de uma matriz por uma matriz booleana 7 Loops 163 7 Loops Loops s o constru es que voc pode colocar em um programa para prescrever comportamentos repetitivos em sua execu o Loops s o a ess ncia da programa o n s programadores trabalhamos pouco para constru los computadores podem trabalhar muito para execut los Veremos neste m dulo dois comandos para a programa o de loops os comandos while e for que com algumas varia es existem em praticamente todas as linguagens de programa o 7 1 O comando while Como um primeiro exemplo vamos fazer um programa que repetidamente leia coeficie
331. zenam informa es como conjuntos de bits chamados palavras cada palavra possui um endere o na mem 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 uma mem ria de n bits de endere o tem exatamente 2 palavras Circuitos Sequenciais 90 mig DO OO Figura 130 Uma mem ria RAM do Logisim em um arranjo com registradores e barramento A Figura 130 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 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 130 o valor armazenado no registrador MAR o Memory Addres Register para leituras o sinal RAM Bus funciona como um buffer controlado conectado sa da de um registrador enquando seu valor for 1 a mem ria coloca no barramento o conte do da palavra endere ada pela entrada A Copiar no registrador In a entrada Input Zerar o clock do registrador In MAR clk 1 Copiar o valor do barramento no registrador MAR e tamb

Download Pdf Manuals

image

Related Search

Related Contents

Dimplex DCU18LCD Fan User Manual  Chamberlain LW3000 User's Manual  説明書  Urban Multi    GP2000/PS シリーズ用 バス変換ユニット 取扱説明書 - Pro-face  Dossier de pré-candidature : MODE D`EMPLOI  Manual de instruções - Clube dos Carrinhos  エバーフィットマットレス取扱説明書PDF(272KB)  RCA PC7330 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file