Home
Introdução à Organização e à Programação de Computadores
Contents
1. In Full In Full SetnEmpty Figura 394 Circuito para sincroniza o da CPU com dispositivo de entrada O circuito mostrado na Figura 394 realiza a sincroniza o da CPU com o nico na Pipoca dispositivo de entrada A sincroniza o necess ria porque com a execu o autom tica e incessante de instru es pela CPU existe tanto a possibilidade de captura de dados nos pinos de entrada antes que estejam prontos como a de captura repetida de um mesmo dado de entrada como ainda a de mudan a de dados pelo dispositivo de entrada antes de serem lidos pela CPU O protocolo seguido pela CPU e pelo dispositivo prescreve as seguintes regras e Somente o dispositivo de entrada aciona o sinal SetlnFull e somente a CPU aciona o sinal SetlnEmpty e O dispositivo de entrada somente aciona SetInFull quando o dado de entrada est pronto e InFull O e a CPU atrav s da Unidade de Controle somente aciona Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 219 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 d
2. Condi es de desvio 0000 0001 001000 0002 001040 0o00 1 Oper Oper 0000 boooooool ol poo00000 L Figura 133 A unidade de controle da CPU 2 com destaque para a l gica de desvio Quanto unidade de controle as novidades s o veja a Figura 133 e temos uma entrada adicional que como j dissemos alimentada pelos tr s bits do registrador de compara o da calculadora Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 79 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 131 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 134 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 qd Sinais Endere o Da micro D Acumulado instru o Operando ACC Clear
3. W N ta 5 6 60 82 85 92 5 55 56 57 81 10 5 6 55 56 57 60 81 82 85 92 Figura 310 Exemplo de ordena o por intercala o com n 10 O c digo da fun o MergeSort est mostrado na Figura 311 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 166 function sA MergeSort A 1f length A lt 1 then sA A else m int l length A 2 sA Merge MergeSort A l m MergeSort A m 1 length A end endfunction Figura 311 A fun o MergeSort A codifica o da fun o Merge Figura 312 tamb m bastante intuitiva Voc deve reparar que e PA pBepMs 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 eB pB e avan ando adequadamente pA ou pB este loop termina quando pA ou pB atinge o limite do seu vetor e O segundo loop s efetivamente executado quando a sa da da fase de intercala o se deu pelo esgotamento dos elementos de B e consiste em copiar os elementos restantes de A em M e Da mesma forma o terceiro loop s efetivamente executado quando a sa da da fase de intercala o se deu pelo esgotamento dos element
4. A Figura 257 ilustra o encadeamento das chamadas neste programa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 135 Programa Principal Fun o Fatorial Figura 257 Encadeamento de chamadas 3 3 3 Fun es Matrizes Loops e Indu o Nesta se o n s apresentamos um roteiro que explora matrizes loops e id ias da indu o matem tica para desenvolver duas fun es que poder o ser aproveitadas em algoritmos mais complexos Crie um diret rio de trabalho abra o Scilab e use o menu File Change Directory para mudar para este diret rio de trabalho Depois abra o Scipad clicando sobre o menu Applications Editor no Scilab 3 3 3 1 Soma dos Elementos de um Vetor Como um primeiro exemplo vamos programar uma fun o para calcular a soma de todos os elementos de um vetor A O primeiro passo para desenvolver uma fun o a determina o de suas entradas e de suas sa das Qual a id ia Vamos fornecer fun o um vetor e esta fun o deve retornar um nico valor com a soma de todos os elementos Em outras palavras esta fun o tem um nico par metro de entrada o vetor e um nico par metro de sa da a soma Com isto podemos come ar a escrever nossa fun o usando o Scipad como mostra a Figura 258 function s Soma A Calcula a soma dos elementos do vetor A endfunction Figura 258 Cabe alho da fun o Soma Salve este arqu
5. Redu o do intervalo que cont m a raiz end r a b 2 endfunction Figura 336 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 337 Repare que e quando f a f m lt O afun ofazb m e quando f b f m lt 0 a fun o faza m e quando f m O afun ofaza meb m Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 179 function r bissecao f a b tol se f cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de tol while b a gt tol Redu o do intervalo que cont m a raiz a b 2 Ponto m dio if f a f m lt O 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 r a b 2 endfunction Figura 337 A fun o bissecao A Figura 338 mostra o resultado de um teste da fun o bissecao onde podemos ver o efeito da toler ncia fornecida pelo usu rio sobre a precis o do c lculo da raiz Toler ncia 1 0e 3 Raiz 3 1411132813 3 1415926536 Toler ncia 1 0e 6 Raiz 3 1415925026 3 1415926536 Toler ncia 1 0e 10 Raiz 3 1415926536 3 1415926536 Figura 338 Teste da fun o bissecao 4 4 3 S rie de Taylor para exp x e Cancelamento Catastr fico Do c lculo sabe se que para qualq
6. Um processador deve ser um circuito digital com comportamento flex vel comandado por alguma coisa que chamamos de programa Um programa produzido por um ser humano que necessita resolver um problema de transforma o de informa o Trocando se o programa troca se o comportamento do processador isso n o deve envolver modifica es no circuito pois a id ia que essa troca de programa seja uma opera o de f cil realiza o Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 67 Se isso o que queremos um programa s pode ser ao menos 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 antes executadas pelo operador Logisim que s o e emitir sinais de controle e e fornecer operandos 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 em seguida chamamos cada palavra desses programas de micro instru o e a cada sinal de controle da calculadora deve corresponder um bit nas micro instru es e a unidade
7. a n o ser que a coluna Size seja usada para reservar mais de uma posi o de uma vez No campo de instru o o programador coloca o mnem nico e n o o c digo bin rio de cada instru o A coluna 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 139 e na Figura 140 voc pode ver em destaque dois exemplos do uso de labels no programa fonte Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 83 O m OA n U sa O O Address1i6 E lt 1 0 00 iQsbemmio mera Acumulado SSS Jafr fod o Jo sum dcolocaoemsump oS Jaf2foos o f Carrega o endere o X no acumulador 1 P 3 03 STORE O Coloca o endere o X em P DV xjifasforp Bm Jailiefio faa Po Jajaja 13325 N meros a serem somados po difesa i234 XDD lirt 8786 Cuv 1 2011 o jo Soo aea a jo oo Figura 139 Um exemplo de uso de labels como operandos no c digo fonte Address10 Address16 loop 1 4 josjioao 1 sum cujo endere o P ao acumulador J ilefos store o sum _ Coloca o resultado na posi o SUM __ 1 C XEND Compara XEND com o acumulador FINISH Se for menor desvia para FINISH Figura 140 Outro exemplo de uso de labels como ope
8. a Acc Clk 1 ado sa da do circuito de soma sendo 5 Acc Clk 10 Abaixa o clock do acumulador In gt Dbus O Libera o barramento Figura 109 Exemplo de fluxo de dados realiz vel pelo circuito da Figura 108 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 63 Exemplos de fluxos de dados realiz veis com o circuito da Figura 108 est o mostrados na Figura 109 e na Figura 110 Coloca 7 na entrada In In gt Dbus 1 JA entrada In controla o barramento O acumulador copia a entrada que a sa da do circuito de soma sendo igual a 12 Acc Clk 1 Oc em hexa soma do valor do acumulador com o do barramento 1 Acc Clk O Abaixa o clock do acumulador Acc gt Dbus 1 O acumulador controla o barramento Out Clk 1 O registrador Out copia o barramento s 0 Out Clk O Abaixa o clock do registrador Out Acc gt Db Figura 110 Outro exemplo de fluxo de dados realiz vel pelo circuito da Figura 108 Libera o barramento 2 4 Processadores 2 4 1 Uma Calculadora Out rey Er In reg DE Bus Out IE Eri ni Compare D gt ACC In CIK lr Bus g reg ri ra 16b 3h D ACC Main Memory DR eni Sai Lys et x DR Cik Compare Cik 64KB RAN AC sel a lgd clr RAM CIK RAM BUs ACC CE ACC Clear Subtract Figura 111 Uma calculadora A Figura 111 mostra um circuito uma calculadora com diversos elementos ligados a um barramen
9. bMjalm o DD J Untitled G main 45 Base 110 Gates 1 Plexers Arithmetic H Memory 13 Input Output E Facing South 100 i i Figura 58 Mudando a orienta o de uma porta l gica Com isso n s esperamos que voc tenha adquirido os elementos b sicos para o uso do Logisim Voc pode descobrir muito mais lendo a ajuda ou explorando diretamente a ferramenta 2 2 4 Aritm tica com opera es l gicas Figura 59 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 59 mostra um circuito que corresponde express o a ca b c N o dif cil acreditar que conseguimos obter circuitos para qualquer express o l gica Mas podemos fazer circuitos l gicos que fazem contas Ora todos sabemos que computadores fazem contas e sabemos portanto que a resposta afirmativa Mas como isso o que veremos nesta se o 2 2 4 1 Soma de 2 inteiros de 1 bit Vamos come ar por um problema bem simples encontrar um circuito l gico que fa a a soma de dois inteiros representados como bin rios sem sinal de 1 bit cada um Na base 10 o resultado pode ser 0 1 ou 2 Portanto o resultado tamb m codificado como bin rio sem sinal pode ser 00 01 ou 10 Ou seja s o necess rios 2 bits para representar o resultado da soma de duas vari veis de 1 bit importante entender
10. 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 find new surprises MATLAB satisfies all these communities O Scilab um sistema livre produzido pelo INRIA que segue a mesma filosofia do MatLab mas sem tentar ser um clone A compatibilidade das linguagens de programa o grande mas n o total Segundo o verbete na Wikipedia Scilab vem conquistando cada vez mais adeptos tanto na academia como na ind stria Existem livros sobre Scilab em ingl s franc s e espanhol e est dispon vel na Internet um texto introdut rio em portugu s produzido pelo Prof Paulo S rgio da Mota Pires da UFRN 4 Links para esses materiais podem ser encontrados no site 5 Scilab Consortium Quanto s avalia es frequentes a sua contribui o para a experi ncia de aprendizado consensual Dentre as principais caracter sti
11. 2 da RAM Armazena o conte do do acumulador na posi o 3 da RAM Para programar a CPU O n s podemos usar uma tabela como a da Figura 123 cujas colunas se dividem em 3 agrupamentos e Endere o que indica em qual posi o da mem ria 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 n s n o colocamos os zeros para n o poluir visualmente a tabela 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 O programa da Figura 123 corresponde exatamente aos sinais de controle e entradas de operandos mostrados na Figura 112 e na Figura 113 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 primeir
12. Compare Clk ACC gt Dbus Oper gt Dbus ACC Clk DR gt Dbus Subtract Out Clk Armazena a entrada Input na posi o 3 da mem ria Carrega 1 no acumulador ACC ACC Bus Soma 1 ao acumulador ACC ACC Bus Oper 3 Bus Oper Compara o conte do da MAR Bus posi o 3 da mem ria com o Bus RAM acumulador plhla lhlala ta m 7 Compare Bus ACC se D gt ACC PC 10 Desvia para 10 se D gt ACC m Oo 6 e EE RES o EE E 19 Figura 134 Um programa para a CPU 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 mem ria 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 2 4 6 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 A forma de se programar que inclui acender e apagar diretamente sinais de controle torna dif cil a constru o de programas para a solu o de problemas mais complexos de transforma o de informa o O ltimo processador que iremos estudar a CPU Pipoca que apresenta caracter sticas que o aproximam um pouco mais dos processadores reais mais simples Na Pip
13. E na C EE E Figura 126 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 que 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 seq encial 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 75 EIRE 5jmj i 12 1 10 9 Sinais Operando Oper gt Dbus ACC Clear Fig
14. Em computadores reais s o programas chamados loaders que se incumbem de ler m dias com programas bin rios e carreg los na mem ria Um mesmo programa tem portanto tr s formas e Programa Fonte que um texto em formato tabular escrito e leg vel por humanos e Programa Execut vel que resulta da montagem do programa fonte e normalmente um arquivo com uma imagem da mem ria No Logisim um programa execut vel um arquivo ASCII onde cada linha representa uma palavra da mem ria codificada em hexadecimal e e Programa em Execu o que um conjunto de palavras na mem ria principal A Tabela 19 mostra o c digo fonte do programa SumxX 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 SumkX 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 O a 3 e que atribui o valor inicial O para SUM e coloca em P o endere o X e Um lo
15. Jos File Edit Format View Help agora Jos festa acabou luz apagou povo sumiu noite esfriou agora Jos agora voc que ama protesta e agora Jos 4 Figura 235 Arquivo fonte visto com o Bloco de Notas e vetor de strings obtido com o comando mgetl Na Figura 235 n s vemos o efeito desses comandos quando o arquivo escolhido para leitura o mostrado na parte esquerda da figura com o famoso poema do Drummond 3 2 8 Matrizes Num ricas e Arquivos Os comandos j vistos na Se o 3 1 7 podem ser usados para a leitura de matrizes mas o Scilab oferece os comandos fscanfMat e fprintfMat que facilitam muito essa tarefa Estes comandos l m ou gravam arquivos que cont m somente n meros em formato tabular com exce o das primeiras linhas que podem conter textos Os arquivos s o lidos ou gravados com uma nica execu o desses comandos que dispensam as opera es de abertura e de fechamento de arquivos O comando fprintfMat arq M 5 2f Cabecalho grava a matriz num rica M no arquivo arq que em suas primeiras linhas ir conter os strings que s o os elementos do vetor coluna de strings chamado Cabecalho Cada elemento de M gravado com o formato 5 2f O vetor de strings Cabecalho normalmente usado para uma explica o sobre os campos presentes no arquivo 1 2 37 4 5 07 789 arq uigetfile Cabecalho Meus Dados Coll Col2 Col3 iprint iMat arg oai
16. Normal fead Good Ea E z acim Ad Fa ER j Copy Neuta omat Calculation ETTA Followed Hy Insert Delete Format Sort amp Find amp as Table i lt Clear Sel T a a 3 a Ex mutante DL UE A RT egea center EG e o 1820 condors Forma Chpbosrd fa Font fa Alignment J Number g Stytes Celis Editing AD7 X f IR copia o Dbus x EMAILS I TE IF GIH 1 J KILIMNOPIQAS TIU VIW K YIZAN AE AF AG AHAU AJ AK AL AM AN AD AP AQ AR AS AT AVI AW JAJ AYAZ BABEBCSC EE EF p qe ai m Ri nd Bin2Dec Conversion J o jaja o L a L aeaaea Jers alelo Eno gt S ep d di JA g TE E SIS se S E S I JR 8 z g BE 5 3 3 H G M EREE wW q Syds do PU va s bus oo 0 oo 0 o o o o i 0 H oo 000200 na Saida da BAM vaip lo o 0 Do 0 0 0 0 0 o Em 0 0 0 Ea 0 0 o o Do us a q 2 F copi o Diut a O 0 00 0 o 0 0 0 0 0 0 o 58 0 0 000 ess 00620 oa av 70 0 0 00 0 0 0 0 0 o 0 o o Bm o 0 0 0 000 0008 wu 4 mplves inicia instru o a nada no Dmm 00 0 o 0 0 0 0 0 00 0006006 e Woo 1 65 5 GeotOperand impMMEDIATE Immedae vos TBM 0 0 0 0 0 0 0 0 0 0 7 0 100 000006 5 eos 6 meDEECT Direct envia para micro nstrup es apropriadas 2 vi o o 0 o 0 0 o 0 0 0 0 o 0 q 0 10000000 SEE 30000C or moADIRECT E n 7 1o 0 0 o 0 o 0 D 0 o o 0 000 00006006 4 9000 50 8 eos GerOperar o 5 6S 0 0 0 0 0 0 0 0 0 0000 006 0 We575 ADOOS CR oo 0 00 0
17. PostFile r Lines mgetl da Up tokens Lines 1 Down tokens Lines 2 nTypes nc size Up endfunction Figura 368 A fun o ReadPostProblem A fun o ReadPostProblem Figura 368 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 in nl nc size Up for i 1 nl printf 35s Up 1 end printr on for i 1 nl printf 5s Down 1i end endfunction Figura 369 A fun o WritePostProblem A fun o WritePostProblem Figura 369 imprime na tela um problema armazenado nos vetores de strings Up e Down function s strPost Strs seg S W do for i 1 length seg s s Strs seg i end endfunction Figura 370 A fun o strPost Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 195 A Figura 370 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 if VaiUm gt O then 1f r i lt nTypes then r i r i 1 VaiUm 0 else r i 1 end end end if VaiUm 1 then s 1 r else S r end endfunction Figur
18. 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 82 SE Or i F SE 3i Figura 84 Circuito gerado automaticamente pelo Logisim para o controlador de display hexadecimal 2 2 6 Compara o de bin rios sem sinal Figura 85 Entradas e sa das de um circuito comparador Vimos na se o 2 2 4 que circuitos l gicos podem realizar opera es aritm ticas Vamos agora atacar o problema de construir circuitos l gicos que permitam comparar duas vari veis a e b Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 51 de digamos 32 bits cada uma A sa da do circuito deve indicar sea b a lt b oua gt b como mostrado na Figura 85 Aqui tamb m temos problemas com o uso do m todo de cobertura de 1s na tabela da verdade que teria as mesmas 2 linhas do somador de 32 bits Vamos aplicar o mesmo enfoque que usamos na soma verificar como fazemos a compara o e procurar resolver o problema por etapas que seriam feitas por m dulos menores 1 a 1 jo O o i 1 1 WHERE Figura 86 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
19. else lt bloco ent o gt Nenhum comando aqui end end Figura 158 Duas formas equivalentes do comando if a da direita sem a cl usula else A Figura 159 mostra os blocos de comandos e a condi o do comando if do programa Eg2g3 sce b sgrt delta 2 a b sqrt delta 2 a printf As ra zes s o g e g r1 r2 else printf As ra zes s o complexas end Figura 159 Partes do comando if do programa Eq2g3 sce Express es l gicas normalmente fazem uso de operadores relacionais para comparar valores de duas express es A Tabela 13 mostra os operadores relacionais usados no Scilab onde voc pode reparar que igual a representado por dois consecutivos uma heran a da linguagem C e que existem duas formas de representa o de diferente de Tabela 13 Operadores relacionais maior que maior ou igual a menor que DD Tema diferente de O comando printf tem a forma printf lt frase gt lt lista de express es gt onde Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 97 e lt frase gt a senten a que se quer imprimir na tela e que pode estar entremeada por c digos de formato como g g um c digo de formato geral para express es com valores num ricos n s veremos em seguida express es com outros tipos de valores existem v rios outros c digos de formato como d f ou s que iremos exp
20. era oferecida para Ci ncias e Engenharias alguns anos antes da cria o do departamento Seu c digo DCC001 o que d uma id ia de sua venerabilidade Este texto parte integrante de um conjunto de materiais pedag gicos para esta disciplina produzidos com a inten o de serem usados em um curso de 60 horas aula 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 a disciplina ministrada e O curso necessita de um professor e de monitores e Em cada semana s o previstas uma aula expositiva dada pelo professor e uma aula pr tica dada pelos monitores e Aulas expositivas podem ser dadas em audit rio ou sala de aula com grande capacidade e Aulas pr ticas s o oferecidas em laborat rios com computadores melhores resultados podem ser esperados com turmas pequenas e Os procedimentos de avalia o do aluno incluem question rios semanais e provas que podem e devem ser realizados online e As aulas pr ticas t m como objetivo auxiliar os alunos nas avalia es semanais e Uma base de quest es fechadas e abertas est dispon vel no Moodle para a montagem de avalia es e Quest es fechadas m ltipla escolha associa es etc s o corrigidas automaticamente ao montar uma av
21. gt inf then temp A inf A inf A sup A sup temp inf inf 1 sup sup l end end left A 1l sup middle A sup tl inf 1 right A inf length A endfunction Figura 318 A fun o partition Diversos pontos s o dignos de nota nesta fun o 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 inf avan a sempre para a direita e sup para a esquerda o loop principal para quando estes dois ponteiros se cruzam no primeiro loop interno inf avan a para a direita at encontrar um elemento com valor maior ou igual ao piv no segundo loop interno sup avan a para a esquerda at encontrar um elemento com valor menor ou igual ao piv 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 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 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 emp
22. input n while n gt 2 timer eh Primo Primo3 n tabPrimos tempoGasto timer Imprime o resultado printf inTempo gasto g segundos tempoGasto if eh Primo then printf inO n mero d primo inin n else printf inO n mero d n o primo in n n end n input n end Figura 293 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 294 function ePrimo Primo3 n tabela ePrimo segSearch n tabela 1 endfunction Figura 294 A fun o Primo3 A fun o segqSearch mostrada na Figura 295 implanta uma pesquisa sequencial Ali podemos observar que Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 157 e O vetor table examinado sequencialmente a partir de sua primeira posi o e Oloop de pesquisa p ra por um de dois motivos quando o limite superior da tabela for atingido ou quando a chave for encontrada e Ap s a sa da do loop feito um teste para se saber por qual motivo o loop while terminou e Sea chave procurada n o consta da tabela o par metro de sa da p recebe o valor 1 uma conven o til para quem chama a fun o como a fun o Primo3 function p seqSearch key table 1 L while i lt length table amp table i key i 1 end if i lt length table then P i el
23. lula I2 I2 IF ISBLANK G2 0 IF ISNUMBER G2 G2 INDEX C 1 C 36 MATCH G2 A 1 A 36 0 1 dizendo ao Excel para colocar O se o campo de operando G2 estiver vazio e sen o se o operando for um n mero colocar 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 f rmula para a c lula J2 J2 H2 2112 F2 2110 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 Error Reference source not found 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 d gitos Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 237 File Edit Format View Help v2 0 raw 3012 Figura 426 Arquivo com imagem de mem ria para o programa SearchTable Para obter um arquivo com o mapa de mem ria que pode ser lido pelo Logisim e use o Bloco de Notas para criar um arquivo SearchTable txt e digite v2 0 raw em sua primeira linha e depois copie todos os valores na coluna Word16 da planilha com o programa e cole no Bloco de Notas a partir da segunda linha A Figura 426 mostra a janela do Bloco de Notas com o programa execut vel Salve o arquivo seu programa estar pronto para s
24. 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 B9 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 RY 50 42 28 8 62 34 70 52 A 39 4 50 42 28 8 62 34 70 52 m A 39 24 50 42 28 8 62 34 70 52 Figura 38 Seis primeiros passos do algoritmo que encontra o menor valor presente em um vetor Um algoritmo dito correto quando atende sua especifica o Dois algoritmos corretos podem satisfazer uma mesma especifica o mas diferir substancialmente na efici ncia gasto de tempo e de recursos computacionais como mem ria com que realizam a transforma o de informa o desejada O termo complexidade empregado para designar a efici ncia ou melhor o inverso da efici ncia de um algoritmo para a solu o de um problema A 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 um
25. o 2 para o modo de endere amento que explicaremos a seguir e 10 para o operando O O Adiciona o operando efetivo a ACC deixando o resultado em ACC ADD o 0000 Compara o operando efetivo com ACC e coloca o resultado em a ooo COMPARE 0001 Para a execu o Para a execu o do programa programa E Espera InFull 1 e transfere o a de Input para a palavra apontada rea pelo Ja rando efetivo faz InFull 0011 Desvia para a palavra apontada pelo operando efetivo Jump 4 joio Desvia para a palavra apontada pelo operando efetivo se D ACC 1 imPea 5 0101 Desvia para a palavra apontada pelo operando efetivo se D gt ACC 1 JMPGT e 0110 Desvia para a palavra apontada pelo operando efetivo se D lt ACC 1 JMPLT 0111 Carrega o operando efetivo no acumulador LOAD 8 1000 egdor Ou as Ou D O four o Jam registrador Output faz OutEmpty O 1001 O A efetivo STORE 10 1010 Subtrai o operando efetivo de ACC deixando o resultado em ACC 1011 1100 1101 Estes c digos podem ser usados para novas instru es EVR 14 1110 Figura 136 Instru es da CPU Pipoca Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 81 A Figura 136 mostra o conjunto completo de instru es da CPU Pipoca Repare que a cada instru o corresponde um c digo de 4 bits mostrado na coluna OpCode2 e um mnem nico para o seu efeito Repare tamb m que na descri o do efeito de
26. o O 0 o 0 d 0 009000000 096 001000 5 04 W DR oop o 0 0 0 0 i 9 0 0 0 0 9 o 0 0 0 q 000 000 E 098 09109 Eos 5 0 ES 00 0 0 0 0 0 0 0 0 00 0600000706 100s6 AMO CR 0 0 0 0 0 9 0 0 0 0 0 0 01 1 0 0 0 q 100 000606 s06 001000 E ou 0 0 0 0 0 0 0 0 o 0 o 0 ol J 0 o q 2000000 sa ooma SWE H o 0 o 0 9 0 0 0 0 w394 0 0 0 0 000000600 Mr me s Io o 0 Do 0 0 0 0 0 o o D 0 o0 o 00 o oojo ees nv x 8 0 DEREE 0 0 9 0 J i 0 0 o 000 000 0 Nowo asw ant 10 o0 0 0 0 0 9 0 o 0 4 9 ol 10 0 o 9 000000090 6j 001090 ar t Abus 0 0 0 0 0 0 0 0 0 0 o 0 ol 10 0 o 2000000 430 aoned ann vo 0 o 0 0 0 o 0 o q 000 000606 HO MANO sum 5 0 0 0 0 0 0 0 0 0 0 o o o 0 0 000000 004130 ssa oo 0 oo 0 0 0 0 0 0 0 0 0 100000600 0j 40 7 wa Do 0 0 0 0 9 0 0 0 o o 0 0 0 000000 E 9 wes ne Ir H t so 00 0 0 o 0 q o 0 o 0600 600060 nowise ASOO0 3 w a ADO o 16 5 mrm 0 0 0 0 0 0 0 0 0 0 o 0 0 0 100 000606 1534941 E00005 3 L Do 0 0 0 0 0 0 0 0 0 o o 0 0 0 0 000000 0 1 00000 A IA 2 jo o 0 00 0 0 0 o o 0 i o o o 0 0 0 e 0000 6 1 65 00041 RB vo o 0 0 0 0 9 0 0 o 9 9 0 0 060 00066 1631496 D0000 9 1C Mm COMPARE pe 5 Enn oo 0 0 0 0 0 0 0 0 0 0 0 00000000 11534941 500005 0 3 0 0 0 0 0 0 0 0 0 0 0 0 o 0 0 o 0 000 000 0 1 1 000001 J E x oo Ly oo 0 0 0 0 0 0 0 o 0 0 0 0 000 6 oi 0 1 5 000005 3 F u gt v o 0 0 0 0 0 0 0 0 0 o 0 0 0 0 00000 or 163438 O00000 7 20 R INPUT ae Ge 16 5 Ea 0 0 0 0 0 0 0 0 0 o o 0 0
27. o excede 59 32 Repetindo o racioc nio temos 59 32 59 32 32 27 Desta forma progredimos at que a parcela a ser expressa como soma de pot ncias de 2 seja igual a zero Tabela 6 Convers o do decimal 123 para bin rio Aconverter 123 59 27 11 3 1 0 E Pot nciade2 64 32 16 8 2 1 Um uso comum de n meros representados como bin rios sem sinal o sistema RGB Red Green Blue para a codifica o da cor associada a um pixel um ponto em um monitor com os valores dos n veis de intensidade das cores prim rias componentes vermelho verde e azul Para cada uma dessas cores utiliza se um byte 8 bits o que permite representar n veis de intensidade entre O e 255 Essa precis o considerada satisfat ria para a nossa acuidade visual yellow green cyan 255 255 0 0 255 0 0 255 255 0 0 0 is black 255 255 255 is white 255 0 0 is red 0 255 0 is green red blue 0 0 255 is blue 255 0 0 0 0 255 255 255 0 is yellow 0 255 255 is cyan 255 0 255 is magenta red magenta 255 0 0 255 0 255 Figura 39 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 a Sinal e Amplitude Como computadores s usam bits n s n o podemos usar um sina indicar que um valor negativo Temos que usar bits para codificar essa in
28. podem receber podem transmitir informa o de informa o para y incluem incluem Microfones C meras Digitais Figura 22 Intera o homem m quina A intera o entre humanos e computadores tamb m se d atrav s de sensores e atuadores Presente em quase todos os computadores o sensor mais comum o teclado Sua import ncia imensa atrav s de teclados que entra por exemplo a informa o que movimenta a economia mundial O teclado pode ser tamb m uma barreira pessoal para a entrada no mundo da inform tica Pessoas com dificuldades na digita o tendem a abandonar os computadores em uma atitude que provavelmente lhe trar o consequ ncias negativas oo mr 3 ja kspace B 1 2 5 168 7 5 jo Il e CEFPEFEFE REI Caps Lock Enise a 4 Shift J shift A Ali Cir Eey d AlE Kay Mania Ctrl Figura 23 Barbara Blackburn recordista mundial de velocidade de digita o BarbaraBlackburn e um teclado Dvorak projetado para maximizar a velocidade de digita o em ingl s Outras pessoas pelo contr rio t m grande facilidade para a digita o O recorde mundial de digita o pertence a Barbara Blackburn que atingia uma velocidade sustentada de 15 toques por segundo com picos de 20 toques por segundo usando um teclado Dvorak Estamos nos permitindo essa digress o para calcular a velocidade de produ o de informa o por um teclado Considerando que cada toque produz um byt
29. r Cabean Figura 236 Grava o de uma matriz em um arquivo com fprintfMat Na Figura 236 n s vemos um exemplo de uso do comando fprintfMat O resultado deste programa um arquivo como o mostrado na Figura 237 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 128 5 Exemplo fprintfMat File Edit Format View Help Meus Dados Coll Col Col3 1 00 2 00 3 00 4 00 5 00 6 00 f 00 8 00 9 00 Figura 237 Arquivo gerado pelo programa da Figura 236 Se agora executarmos o programa da Figura 238 escolhendo como entrada o arquivo da Figura 237 iremos obter uma matriz m id ntica matriz a gravada anteriormente arquivo uligetfile m fscanfMat arquivo Figura 238 Leitura de uma matriz com o comand fscanfMat Vamos agora ver um exemplo de aplica o de matrizes e arquivos A Figura 239 mostra o arquivo TempoBHZ txt exibido com o Bloco de Notas Cada linha do arquivo cont m o n mero de um m s a temperatura m dia m xima do m s a temperatura m nima m dia a m xima record a m nima record e a precipita o do m s em mil metros de chuva ETA IE File Edit Format View H Wes Maxima Media minima Media Maxima Record minima Record Precipitacao 8 4 296 5 188 4 163 5 61 2 27 8 14 1 15 7 13 7 40 5 123 1 227 0 B 5 8 n 6 o 3 4 3 3 4 4 1 4 4 J 8 2 4 7 5 9 2 4 4 Figura 239 O arquivo TempoBHZ txt N s queremos
30. 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 Avari vel seg cont m uma sequ ncia de domin s que a cada passagem do loop substitu da por sua sucessora usando a fun o Sucessor e Afun o WritePostSolution usada para imprimir na tela uma solu o eventualmente encontrada e Afun o strPost constr i um string concatenando segundo uma sequ ncia dada os strings na parte superior ou na parte inferior dos domin s Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 194 ProblemaPost Notepad File Edit Format View Help 100 0 1 1 100 00 Ln 1 Coll Figura 367 Tela do Bloco de Notas com um arquivo de tipos de domin s para o problema de Post da Figura 364 Vamos come ar pela leitura de um conjunto de tipos de domin s A Figura 367 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
31. 0 009000000 1534341 500005 us BD inkoop mplsEmpey hloop 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0600000606 155009 D60021 5 2 u 0 0 0 0 0 0 0 0 o 0 0 0 o 0 0 0 by 000000 0 1 1 000001 0 e oo 0 oo 0 o O 9 9 0 9 9 o o 0 00000 0 1 w5 000 1a 3 lo o 0 Do 0 a EE 0 o 0 o 0o 0 O Copat 000009 389472 06000 2 5 n 00 o 00 q 0 o mm o o 0 0 o 00000000 ENET EB vo 0 0 0 E 0 0 0 a 0 o o 0 o 0 000 000060 363438 O00009 73 je 5 0 0 0 o 0 0 0 o 0 o 0 o o 0 00000000 1534341 500005 45 2 40 oo oo 0 0 0 0 0 0 o O 0 0 000000 6 1 Nes Os o 6 23 4 lo o 0 Do 0 0 0 0 0 o 0 0 sets o 000 0 00 0 1 e 47 2A 42 o 0 88 0 0 9 0 0 0 0 0 0 o 0 0 0 0 00000009 DE jnas como 48 E 4 Bl wej 0 0 0 0 0 0 o 0 0 o 0 0 0 0 000 00000 4 O 4 vo 10 0 0 0 o 0 q LU 0 o 0600 600606 Wide Dix o DO 4 1e nu WB 0 0 9 9 0 0 0 o 0 o 0 0 0 0 00000000 pe 582951 C000 SE 4 v of Dj 0 0 0 0 0 0 0 0 0 0 0 0 0 0000600060 D m 36 Esse no Vas 4 ml 10 0 0 J 0 0 0 0 0 0 0 0 0 0 0 00000006 5 m 4 io of 10 0 0 o 0 q o 9 000 606 H D MaS Sanoin s x 4 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 JEA 0000 32 00002 se v 6 su wej 0 0 0 0 0 o 0 0 0 o 0 0 0 00000000 ns aa Boos sos jo 0 0 0 0 0 0 0 0 0 0 o 0 0 0 000 000 H o gR 10 0 0 0 0 9 0 0 0 0 q 0 0 0 q 0 e 0000 6 1 459 mo v 01 10 0 0 0 9 0 0 0 0 0 0 0600006 DE 21465 Es o th i s 3 5 OUTPUT je 6 5 10 0 0 0 0 0 0 0 0 0 0 0 0 0 o 0000606 11594941 800005 amp 7 Osnloop impOwFui sp R wj jo 0 0 9 0 o 0 o 0 0
32. 0 25 Hz 200 5 E 4 E p Figura 114 Um clock no Logisim com o menu de escolha de freq 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 de um circuito Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 66 Figura 115 Um registrador circular A Figura 115 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 entrada D do FF tl a sa da do FF tl entrada do FF t2 e a sa da do FF t2 est ligada 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 t0 dO OJ OJ LOY o mo mMm mM Clock ULIT Reset n a T 5 10 15 29 29 Figura 116 Carta de tempo para o registrador circular da Figura 115 A Figura 116 mostra a evolu o temporal de um registrador circular importante observar que um registrador circular pode ter quantos flip flops se queira e que com isso podemos obter sinais distribu dos no tempo na forma como desejarmos 2 4 3 Micro instru es
33. 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 205 gt Xx 7 matriz 1x1 Ta 0 0 O O Figura 205 Expans o de uma matriz Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 117 3 2 2 Vetores linha e coluna Vetores s o matrizes de uma nica linha ou de uma nica coluna A Figura 206 mostra a cria o na console do Scilab de um vetor linha e de um vetor coluna gt v 10 20 30 10 20 30 bu 10 20 30 Figura 206 Um vetor linha e um vetor coluna 3 2 3 Referenciando partes de uma matriz O Scilab permite que uma parte de uma matriz seja referenciada tanto para a atribui o de valores como para a recupera o de valores armazenados Figura 207 Atribuindo um valor a uma parte de uma matriz Se x uma matriz 7x5 x 2 4 3 5 denota a parte da matriz compreendida pela interse o das linhas de 2 a 4 e das colunas de 3 a 5 como mostrado na Figura 207 X 40 58 38 T3 e 4 58 87 68 92 26 Ed 67 48 El 89 94 49 22 20 22 19 50 34 26 62 39 84 56 34 37 52 76 83 12 Figura 208 Atribuindo os valores de uma matriz a uma parte de outra matriz A Figura 208 mostra outro exemplo de utiliza o desta nota o Introdu o Organiza o e Programa o d
34. 319 reas cobertas pelas somas de Riemann pela esquerda e pela direita para f x 1 x no intervalo 0 1 A Figura 319 mostra duas formas de se aproximar do valor da integral utilizando somas das reas de ret ngulos conhecidas como soma de Riemann pela esquerda e soma de Riemann pela direita Podemos ver que a rea definida pela soma de Riemann pela esquerda dada por n Aesq f a Ay POA PO As AD fE i 1 enquanto a rea definida pela soma de Riemann pela direita dada por Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 172 n 1 Agir f x2 Ax f x3 Ax f Xn 1 Ax As gt fxi i 2 A medida em que o n mero de intervalos aumenta e o tamanho do intervalo diminui as somas de Riemann v o se aproximando da rea sob a curva como mostra a 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 Figura 320 Somas de Riemann com 16 intervalos As f rmulas das somas de Riemann levam diretamente s suas implementa es mostradas na Figura 321 e na Figura 322 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 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 321 Fun o para o c lculo da soma de Riemann esquer
35. 4 Iniciando FatorialR 3 Iniciando FatorialR 2 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 273 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 EOD Fat 2 Fat 2 VOS ILLOD ILLOD ILLOD LELE CLOW ILLOD ILLOD ILLOD ILLOD ILOW RELO Fat 5 Fat 5 Fat 5 Fat 5 EE Prog Prog Prog Prog Prog Fat 5 Prog Fat 5 Prog Fat 5 Fat 5 A Figura 274 ilustra a evolu o da pilha de execu o do programa TestaFatorialR sce quando executado com n 5 No in cio somente o programa principal est em execu o A primeira chamada de Fatorial1R 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 FatoriaJ1R Para o c lculo do fatorial de 4 precisamos do fatorial de 3 e assim vamos at chegarmos a uma pilha com o programa principal e cinco inst ncias de FatorialR que na ltima vez ter sido chamada com o par metro real 1 Figura 27
36. 7 0111 9 igual a 1 f _ Desvia para o operando se D gt ACC for Jmp6T 8 1000 10 iguala 1 Desvia para o operando se D lt ACC for impLT 1001 11 iguala 1 _ Desvia para o operando Imp 10 1010 a 12 incondicionalmente e jmplnEmpty 1011 Desvia para o operando se InEmpty 1 impOutFull 1100 Desvia para o operando se OutFull 1 14 13 1101 15 DE S 14 1110 16 15 1111 17 18 3al as E Ho MH Microinstructions Microprogram JAM qu Ready Inn Figura 421 A planilha Microinstructions A planilha Microprogram mostrada na Figura 422 de longe a mais complicada no arquivo Pipoca xIs As colunas onde o microprograma definido s o aquelas com cabe alhos de cor palha as colunas com cabe alhos de cor cinza s o campos calculados Passamos agora a descrever suas colunas Colunas Addr HEX e Address A coluna Address simplesmente uma enumera o de endere os consecutivos a serem ocupados na mem ria de microprograma em decimal a Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 233 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
37. A Figura 291 extra da do livro Garey amp Johnson 1979 nos ajuda a formar uma id ia do que esperar do desempenho de algoritmos com fun es de complexidade exponencial quando aplicados a problemas grandes Maior inst ncia que um computador resolve em 1 hora Computador Computador 100x mais 1000x mais r pido Fun o de Computador complexidade X X 6 64 X 9 97 Y Y 4 19 Y 6 29 Figura 292 Efeito do aumento da velocidade de computadores sobre o tamanho dos problemas resolv veis EA a Computadores de um mesmo pre o dobram de velocidade em menos de dois anos mas algoritmos com fun es de complexidade exponencial s o relativamente pouco afetados O efeito de termos computadores 100 ou 1000 vezes mais r pidos que os atuais sobre algoritmos com fun es de complexidade exponencial est mostrado na Figura 292 que tamb m foi retirada de Garey amp Johnson 1979 Ali vemos que se hoje um computador resolve em uma hora um problema de tamanho digamos 200 usando um algoritmo 0 2 com um computador 1000 vezes mais r pido conseguiremos resolver um problema de tamanho 210 4 2 Pesquisa Vamos agora estudar um problema cl ssico da Ci ncia da Computa o que a pesquisa para verificar se um elemento procurado existe em uma tabela Extens es deste problema fazem parte do nosso dia a dia em m quinas de busca como Google e Yahoo ou na localiza o de uma palavra em um arquivo Vamos examinar aqui dois a
38. Abus 13 19 0 Sa da da RAM vai para Dbus 14 20 Do MAR copia o Dbus sa da do MAR vai para o Abus 15 21 Sa da da RAM vai para Dbus 16 22 1 DR copia o Dbus 17 23 return 1 Retorna Figura 416 Micro c digo para a subrotina GetOperand Com exce o da instru o HALT o micro c digo de todas as outras micro instru es invoca a sub rotina GetOperand No in cio da execu o de GetOperand feito um desvio para sequ ncias micro instru es que emitem os sinais de controle necess rios para a obten o do operando segundo o modo de endere amento Essas sequ ncias t m os labels Immediate Direct e Indirect e todas as tr s terminam com uma micro instru o return que retorna para o ponto onde a GetOperand foi chamada Comments ea W v Ild o o d o o L lt 27 39 JMP jsr GetOperand 1 Resolve endere amento operando efetivo no DR 28 40 0 Sa da do DR vai para Dbus for a desvio no PC 29 41 PC copia Dbus 2A 42 jmp Fetch 1 Fetch da pr xima instru o 2B 43 JMPEQ jmpEQ JMP 1 Desvio condicional para JMP 2C 44 jmp Fetch 1 Fetch da pr xima instru o 2D 45 JMPGT jmpGT JMP 1 Desvio condicional para JMP 2E 46 jmp Fetch 1 Fetch da pr xima instru o 2F 47 JMPLT jmpLT JMP 1 Desvio condicional para JMP 30 48 jmp Fetch 1 Fetch da pr xima instru o Figura 417 Micro c digo para as instru es JMP JMPEQ JMPGT e JMPLT Introdu o Organiza o e Programa o d
39. C 2 C518 MATCH E3 0pCode B 2 B518 0 Instruction O plodelo 1 ReadLoop E a 1 Operando q j Key Key D Finish Table F Key P End amp earch LOAD COMPARE JMPEQ 0 LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE COMPARE JMPGT OUTPUT JMF HALT eo S eladdress HEX o u bo im A011 1811 600E Lam o co o oom tn ds w ta e o jAddressiDEC m to m j j om quem q S am H Pa TableEnd Searchloop FP ReadLoop p 16 EndSearch SNOoGdosGnapnNns SS SealMode P Key Table 14 15 16 17 18 19 IA 1B Jintao oa x Ea u n 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 o E DE Sim 08 Eim pim 00 00 00 00 0000 29 TableEnd 30 MA bh SearchTable Aux lt J Figura 425 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 BS2 B 18 0 que diz ao Excel para colocar O se o campo de c digo de instru o E2 estiver vazio e sen o efetuar uma pesquisa na coluna B da planilha Instructions procurando o c digo da instru o na coluna E2 obtendo assim seu c digo decimal que est na coluna C desta planilha Para a coluna Operand1o0 a f rmula para a c
40. 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 Microinstruction Coluna Operand DEC um campo calculado que tem o valor O se o campo Operand estiver vazio na linha e sen o o valor da coluna Address na linha onde o valor na Coluna Label igual ao campo Operand Colunas Bin2Dec Conversion Estas colunas fazem a convers o para decimal de cada bit nas colunas Type e Signals multiplicando o bit pela pot ncia de 2 correspondente sua posi o na microinstru o Coluna Microinstruction Word DEC Esta coluna cont m o valor em decimal da palavra de 24 bits contendo a microinstru o Para compreender sua f rmula de c lculo preciso examinar o formato das microinstru es mostrado na Figura 400 3 du aers poca Compatibility Mode Microsoft Exce 9 X nei am morns Formulas Qata Rexiew viesy Ww x Ee Pa Calibri u Aa Sm E wapen General E 7
41. Descobrir o roteiro timo fica bem mais complicado quando temos mais cidades como na Figura 353 Figura 353 Um problema com 8 cidades Temos muito mais alternativas a examinar tr s exemplos est o na Figura 354 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 354 Algumas alternativas de roteiros para o problema da Figura 353 Vamos tentar uma solu o direta Devemos 1 Gerar todas as alternativas de roteiros 2 Para cada roteiro calcular o seu custo total 3 Escolher o roteiro com menor dist ncia total Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 187 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 2 2 3 3 4 w N ENE O w N A Os 4 2 N s iremos precisar de uma fun o que gere as permuta es de um conjunto de n meros cada n mero correspondendo a uma cidade Vamos primeiramente definir um c
42. Exemplos de fluxos de dados realiz veis com o circuito da Figura 105 s o mostrados na Figura 106 e na Figura 107 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 62 MAR Clk 1 O registrador MAR copia o barramento a entrada A da mem ria j cont m o endere o desejado MAR Clk O Abaixa o clock do registrador MAR A mem ria controla o barramento onde coloca o RAM gt Dbus 1 e Sl conte do da posi o indicada por sua entrada A Out Clk 1 O registrador Out copia o barramento Out Clk O Abaixa o clock do registrador Out Figura 107 Outro exemplo de fluxo de dados realiz vel com o circuito da Figura 105 2 3 4 Acumuladores Out x1 Out Clk x1 jacc DBus Acc Cik Acce Cir In DEBUs Figura 108 Um registrador acumulador Um registrador pode ser usado como um acumulador como mostrado na Figura 108 Neste arranjo e a entrada do acumulador alimentada por um circuito combinat rio que tipicamente realiza opera es aritm ticas ou l gicas e e asa da do acumulador realimenta o circuito combinat rio isto a sa da do acumulador uma das entradas do circuito combinat rio Este arranjo permite por exemplo somar 10 000 n meros sequenciando as somas ao longo do tempo Acc Clr 1 Acc Clr O Abaixa o clear do acumulador Coloca 5 na entrada In In gt Dbus 1 JA entrada In controla o barramento O acumulador copia a entrada que
43. Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 132 inten o do programador mais clara Para algu m que n o tivesse constru do o programa da Figura 246 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 246 s o uma fonte de enganos 3 3 1 Sintaxe CEunctioDfat fatorial n fat 1 for i 1 n fat fat i end Figura 249 Palavras chave na defini o de uma fun o Fun es s o definidas com o uso das palavras chave function e endfunction que delimitam o c digo da fun o function fat fatorial n Figura 250 Par metros formais de entrada e de sa da da fun o A fun o fatorial que escrevemos possui um par metro formal de entrada n e um par metro formal de sa da fat Par metros formais s o definidos no c digo da fun o onde s o utilizados como vari veis normais Entretanto par metros formais s existem durante a execu o da fun o Por contraste os par metros usados em chamadas de uma fun o s o chamados de par metros reais que podem ser vari veis ou express es No in cio da execu o da fun o cada par metro formal recebe o valor do par metro real correspondente a correspond ncia estabelecida p
44. Vari veis L gicas 100 vari vel 86 vem um 40 Vetores 114 vol til 15 volatilidade 15 Von Neumann 205 XOR 33 xtitle 126 zeros 119 IOPC 2011 1 4 docx Refer ncias 205 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 farma4 static flickr com 3444 3348244651 fefl6ef641 jpg Garey M R amp Johnson D S 1979 Computers and Intractability A Guide to the Theory of NP Completeness New York USA W H Freeman amp Co Hollasch S 2005 IEEE Standard 754 Floating Point Numbers Retrieved August 25 2009 from http steve hollasch net cgindex coding ieeefloat htm l HotHardware com n d Intel Core 2 Extreme QX9770 Performance Preview Retrieved Fevereiro 2010 from http hothardware com articles Intel Core 2 Extreme QX9770 Performance Preview Ziller J B 1954 Preliminary Report Specifications for the IBM Mathematical FORmula TRANslating System FORTRAN International Business Machines Applied Science Division IBM n d IBM Archives Personal
45. a esta especifica o Neste programa voc deve reparar que e A localiza o dos arquivos de entrada e sa da feita com a vers o do comando uigetfile que facilita a navega o na rvore de diret rios para o usu rio e Os arquivos de entrada e de sa da s o abertos no in cio do programa e fechados no fim e Oloopwhile controlado pela fun o meof daE que testa se o fim do arquivo de entrada foi encontrado Seria poss vel usar por exemplo o Bloco de Notas para descobrir o n mero de linhas do arquivo de entrada e controlar o loop por um comando for mas esta n o uma boa pr tica pois o programa deveria ser alterado para cada tamanho de arquivo de entrada 3 2 Matrizes Matrizes no Scilab s o vari veis que cont m um n mero potencialmente grande de valores na manipula o de matrizes que o Scilab seguindo o Matlab mostra uma grande superioridade sobre linguagens como C ou Fortran gt A 12 3 4 5 6 A L 2 3 4 J 6 Figura 201 Atribuindo uma matriz a uma vari vel A Figura 201 mostra uma maneira simples de se criar uma matriz atrav s de um comando de atribui o na console do Scilab Os elementos da matriz s o dispostos entre colchetes Espa os u n poderiam ser v rgulas separam elementos e separam linhas 3 2 1 Atribuindo valores a uma matriz poss vel extrair o valor de um elemento espec fico da matriz designado por seus ndices entre par nteses c
46. al e a0 como entradas e b2 bl e b0 como sa das Aqui tamb m vamos usar opera es l gicas para implementar opera es aritm ticas no caso somar 1 a um dado valor bin rio Mais precisamente o valor expresso por b2b1b0 interpretado como bin rio sem sinal deve ser igual ao valor expresso por aZala0 1 tamb m interpretado como bin rio sem sinal Por exemplo para os valores de entrada a2 1 al 0 e a0 O ou seja o valor expresso pela entrada 1002 410 devemos ter b2 1 b1 0 e b0 1 com o valor expresso pela sa da dado por 1012 510 Temos que nos preocupar com o caso onde aZala0 111 pois 111 1 1000 com quatro bits um a mais do que dispomos Vamos adotar como conven o que quando aZala0 111 a sa da deve ser 000 Este circuito corresponde tabela da verdade na Figura 72 N s veremos a seguir como f cil obter um circuito para esta ou para qualquer outra tabela da verdade de tamanho razo vel utilizando o Logisim Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 45 Figura 72 Tabela da verdade para o circuito SomaUm Janela de An lise Combinat ria O primeiro passo abrir a janela de an lise combinat ria do Logisim o que feito conforme ilustrado na Figura 73 Logisim main of Untitled BR Fie Edk Project Smuate SODES Heip h ke A m q min Cria M r Zoom 4 Untied a man f Corbin Anay ss JBase e Lr
47. anotar em um papel a temperatura de seu paciente Ao faz lo a informa o sobre a temperatura passa de anal gica a altura da coluna de merc rio para informa o digital ou simb lica o n mero anotado pelo m dico Ponto de ebuli o da gua Ea Corpo humano 20 E Ponto de fus o do gelo Figura 11 Um term metro com escala Existe uma perda nessa transforma o o m dico ir anotar o n mero correspondente ao tracinho mais pr ximo extremidade da coluna talvez com uma aproxima o entre dois tracinhos mas n o a sua altura exata Para o m dico essa perda perfeitamente toler vel temperaturas do corpo humano medidas com uma casa decimal provavelmente atendem a todas as necessidades cl nicas E existe tamb m um grande ganho a temperatura anotada informa o simb lica que pode ser comunicada por telefone ou copiada em outro papel ou digitada em um computador Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 7 d Ponto de ebuli o 100 242 D meee d z 90 ll 194 a agua E AS A ATO TO 158 60 140 59 122 09 40 1 e Corpo humano 30 86 20 68 10 MM Ponto de fus o do gelo Figura 12 Term metro com escalas Celsius e Farenheit O uso de informa o simb lica requer conven es de interpreta o A qual temperatura altura da coluna de merc rio corresponde o
48. at que a condi o de sincroniza o de entrada ou de sa da esteja satisfeita Comments Sa Ls TE ra Ke lt 31 49 LOAD o0 Zera o ACC 32 50 jsr GetOperand 1 Resolve endere amento operando efetivo no DR 33 51 o Sa da do DR vai para Dbus o ACC copia sua entrada 0 Dbus 35 53 jmp Fetch 1 Fetch da pr xima instru o 3B 59 STORE jsr GetOperand 1 Resolve endere amento operando efetivo no DR 3C 60 o Sa da do DR vai para Dbus 3D 61 MAR copia o Dbus sa da do MAR vai para o Abus 3E 62 Sa da do ACC vai para Dbus 3F 63 1 RAM copia o Dbus 40 64 jmp Fetch Fetch da pr xima instru o Figura 419 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 419 e n o apresenta novidades Comments 45 69 HALT jmp HALT GI O OSS If O O Juoopinfinito parada fina Figura 420 Micro c digo para a instru o HALT A instru o HALT implantada por uma micro instru o de desvio incondicional para ela mesma o que coloca a CPU em um loop infinito e para o processamento Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 232 9 A Planilha Pipoca xls Para funcionar a Pipoca depende de ter preenchidas suas mem rias RAM e ROM o que pode ser feito no Logisim atrav s da carga de arquivos com mapas de mem ria Mas como fazer para
49. atts 1013 A m oBjimeir O FINISH _ Se for menor desviaparaFINISH 7 13 28685 700D Ji j22jocjmp o 100P Sen o voltaparaioor 4 4 16388 4004 ris 13 op outeur a sum Coloca o resultado nasaia 9 20 379089414 D a e EE ME O 3142 3142 046 isa To fasaa asa2 tape E N meros a serem somados 0 3325 3325 OCFD E To 1234 1234 0402 po am no glg wore E Word10 ailipe md aooaa aee p um Di Ned tm 0o 0x To 8786 8786 2252 o o of o0 o o of 0000 3 Montagem do Programa Execut vel 0000010100 10000100 0001 0109 o 8414 Figura 390 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 390 e Na Tabela 17 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 19 n s vemos que SUM o nome label dado posi o 20 de mem ria que em bin rio de 10 bits 0000010100 e Aconvers o completa resulta da concatena o justaposi o desses tr s bin rios resultando em 1000010000010100 ou em hexadecimal 8414 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 216 Como voc pode ter percebido a tradu o da tabela programa para bin rio uma tarefa insana Mas essa tarefa s foi feita manualmente p
50. bits Temos um m dulo comparador para cada bit das vari veis de entrada Cada m dulo comparador tem cinco entradas e Duas s o os bits das entradas da coluna correspondente ao m dulo e As tr s outras s o designadas por aMaior bMaior e ablguais e exceto para o m dulo mais esquerda s o produzidas pelo m dulo comparador esquerda do m dulo em quest o Elas t m o resultado da compara o j realizada com os bits mais significativos e portanto uma e somente uma dessas entradas poder ter o valor 1 Para o m dulo mais esquerda que corresponde ao bit mais significativo ablguais tem o valor 1 A Figura 89 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 ablguais t m o valor 1 ou em que todas as tr s s o iguais a O nunca devem ocorrer e o s mbolo x usado na tabela para indicar que os valores das sa das n o t m interesse nesses casos O Logisim tira proveito disso para obter circuitos mais simples Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 53 aMaior bMaior abIguaisy vc EBC G G e G ce e dDE Ss SD ESSE oe e e E me ee aa ee e e
51. 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 1 2 3 4 2 1 gt y 1 2 1 2 4 1 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 280 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 145 0 1 2 3 4 5 6 Figura 280 Um pol gono Se quisermos acrescentar outro pol gono podemos fazer gt w 4 5 5 4 0 5 0 5 1 5 0 5 gt plot2d w z a q obtendo o gr fico mostrado na Figura 281 Pa 0 1 2 3 4 5 6 Figura 281 Dois pol gonos Repare que foram utilizados dois pares de vetores um para cada pol gono desenhado Quando temos muitos pol gonos a desenhar como o caso do mapa que faremos em seguida torna se interessante representar todos os pol gonos em um nico par de vetores com as coordenadas de todos os v rtices preciso entretanto encontrar um meio de informar ao Scilab quais s o os pontos que separam dois pol gonos Isto porque se fizermos gt X x w gt Y y z gt plot2d X Y rect 0 0 6 6 vamos obter o desenho da Figura 282 onde o ponto final do primeiro pol gono e o ponto inicial do segundo pol gono foram naturalmente emendados pelo Scil
52. com 1s e s com Os para a representa o de valores especiais como ou NAN Not a Number que s o necess rios para a comunica o de resultados de certas opera es ou do c lculo de algumas fun es A refer ncia Hollasch 2005 tem um bom resumo do padr o 2 2 Circuitos Combinat rios Vimos at agora como representar n meros caracteres cores e qualquer outra coisa utilizando bits Nesta se o n s iremos ver como que os circuitos em um computador transformam informa o como em um circuito de soma que recebe como entrada dois conjuntos de bits e produz como sa da um outro conjunto de bits com a representa o do valor da soma das entradas Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 29 2 2 1 lgebra de Boole Figura 41 George Boole 1820 1898 Em 1854 o matem tico ingl s George Boole prop s uma lgebra para o c lculo da validade de express es formadas por proposi es l gicas Essa lgebra chamada hoje de lgebra Booleana e constitui a base para o projeto de circuitos digitais Ela trabalha com vari veis l gicas isto com vari veis que podem ter somente os valores verdadeiro ou falso ou 1 ou O As opera es fundamentais da lgebra de Boole s o N O E e OU mais conhecidas pelas palavras em ingl s NOT AND e OR Essas opera es fundamentais ou melhor composi es dessas opera es fundamentais constituem as
53. 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 86 mostra tr s casos de compara o de entradas a e b cada uma com 8 bits No primeiro caso as entradas diferem no quarto bit mais significativo e a gt b No segundo caso as entradas j diferem no primeiro bit mais significativo e b gt a No terceiro caso as entradas s o iguais Para construir um circuito que fa a a compara o de bin rios sem sinal n s precisamos de um comparador de 1 bit que leve em considera o a possibilidade do resultado j ter sido estabelecido por algum bit mais significativo Breno H Comparador f bMaior 4 de 1 bit Figura 87 Entradas e sa das para um m dulo comparador de 1 bit Vemos na Figura 87 um esquema de entradas e sa das para o m dulo comparador de 1 bit As entradas a e b v m do bit em quest o das vari veis que estamos comparando Da compara o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 52 j feita com bits mais significativos que o bit em quest o v m as entradas aMaior bMaior e ablguais A Figura 88 mostra o arranjo de m dulos que comp em um comparador de 4 bits Figura 88 Arranjo de m dulos para um comparador de 4
54. completo deste processador assim como uma planilha que pode ser usada para a sua programa o ou para modificar seu micro programa modificando ou acrescentando novas instru es Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 85 3 Ambiente e Linguagem Scilab 3 1 Introdu o ao Ambiente e Linguagem 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 I Ziller 1954 N s j vimos como 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 o programador deve pensar em composi es de instru es que refletem a arquitetura da m quina espec fica em que est trabalhando seus registradores mem rias rotas de dados A tarefa de programar se torna extremamente detalhada e propensa a erros Um programa feito para um computador n o pode ser executado por um outro com um repert rio distinto de instru es N s vimos tamb m que o processo de montagem manual dos bits das instru es de um programa escrito com mnem nicos pode ser feito com a ajuda de um assembler um programa que l outro prog
55. 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 O e outra 1 qual valor fica no barramento Por outro lado vem tamb m dos circuitos reais se uma de duas sa das conectadas a um cabo tem o valor O e outra tem o valor 1 temos uma voltagem alta ligada diretamente a uma voltagem baixa ou seja um curto circuito Um componente especial o controlled buffer permite fazer esse tipo de liga o o que simplifica muito o desenho de circuitos Diversas sa das podem ser conectadas a um nico cabo se essas conex es passarem por um controlled buffer Este cabo compartilhado recebe o nome de barramento Todo controlled buffer tem como o pr prio nome indica um pino de Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 60 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 controlled buffers ligados a um mesmo barramento esteja aberto n gt Dbus O Coloca 3 na entrada In In gt Dbus 1 A entrada In controla o barramento BClk 1 O registrador B copia o barramento BClk 0 Abaixa o clock do registrador B In gt Db
56. de todos os elementos do vetor A Vamos avan ar aos poucos Suponhamos que uma vari vel s contenha o valor dos primeiros k elementos de A ou seja suponhamos que de alguma forma n s conseguimos colocar em s o valor de A 1 A 2 A k N o dif cil ver que se fizermos s s A k 1 s passar a conter o valor dos primeiros k 1 elementos de A Se depois disso fizermos s s A k 2 s passar a conter o valor dos primeiros k 2 elementos de A Se repetirmos este passo at atingir o ltimo elemento de A teremos em s a soma de todos os elementos de A como desej vamos A Figura 261 ilustra um passo deste algoritmo Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 137 Sabemos portanto como avan ar no c lculo da soma mas como come ar No caso simples Quando k 0 a parte do vetor com os k primeiros elementos vazia e portanto sabemos que s Oparak 0 Para k 0 s 0 fofa falsfo r e o Go alaa Para k 3 Para k 4 s 101 s 101 46 147 Figura 261 Um passo do algoritmo de soma Falta ainda saber como terminar dado que a cada chamada a fun o poder receber argumentos reais de tamanhos diferentes O problema que ao programar a fun o n o se sabe qual o tamanho do par metro formal A Para isto a fun o length de grande valia Se M uma matriz length M retorna o produto do n mero de linhas pelo n me
57. 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 5po tita as 6 516 11 12 6 12 13114 Esquerda Meio 516 11 12 6112 13114 RE Direita x Piv 516 6112 11 131 14 Ji eD 0D pa pa pa N 12113 14 5 16 16 11 121 12 13 114 Figura 316 Exemplo de ordena o por parti o quicksort A Figura 316 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 if length A lt 1 then sA A else 1l m r partition A sA quicksort 1 m quicksort r end endfunction Figura 317 A fun o quicksort que implementa o algoritmo de ordena o por parti o Assim como o algoritmo de intercala o a implanta o do quicksort por meio de uma fun o recursiva uma express o direta do algoritmo como mostra a Figura 317 As parti es s o feitas pela fun o partition mostrada na Figura 318 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 170 function left middle right partition A pivot A l int length A 2 antas 1 sup length A while sup gt inf while A inf lt pivot inf inf l end while A sup gt pivot sup sup l end if sup
58. 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 ENEM 1 ha i i Xy Xy 1 0 0 1 1 1 Figura 63 Cobertura dos 1s de uma fun o booleana Na Figura 63 f x y 1 somente na primeira linha quando x 0 e y 0 e na ltima linha quando x 1 e y 1 N s temos e x y 1seesomentesex 0 e y 0 para qualquer outra combina o de valores de xey xy 0 e xy 1 seesomente sex 1e y 1 para qualquer outra combina o de valores de xey xy Q 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 41 s0 ab ab a bos sd D D i D l D l l 0 0 l 0 si e Figura 64 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 64 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 S 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 S a b ab es ab A Figura 65 mos
59. equa es de 2 grau com coeficientes em um arquivo Figura 200 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 O ou sen o resolver a equa o de primeiro grau resultante Em problemas reais comum que a fase de especifica o seja a etapa mais demorada e a mais cara de um projeto de desenvolvimento 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 procuraremos lidar com problemas cuja especifica o bem simples pois nosso objetivo aqui a cria o de uma cultura algor timica para o aluno T cnicas de an lise e de especifica o de sistemas s o mat rias que voc poder depois estudar em cursos de engenharia de software 4 1 2 Corre o poss vel verificar se um algoritmo atende a
60. fazer um programa que e Leia os dados desse arquivo e Extraia desses dados vetores correspondentes a cada uma das colunas conforme a Figura 239 e Gere um gr fico que exiba simultaneamente as curvas de m xima m dia m nima m dia m xima record e m nima record Examinando o arquivo de entrada n s vemos que ele tem um formato adequado para leitura com fscantfMat pois tem uma linha de cabe alho e os dados restantes s o todos num ricos e dispostos em um formato tabular Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab arqClima ClimaBH MaxMed MinMed MaxRec MinRec Precip uigetfile fscanfMat arqClima ClimaBH ClimaBEH ClimaBEH ClimaBH ClimaBH rej eE 4 9 6 MaxMed MinMed MaxRec MinRec Precip plot2d 1 12 MaxMed MinMed MaxRec MinRec leg MaxMedQAMinMedAMaxRec MinRec 2a 3a 4a 5a 6a coluna coluna coluna coluna coluna 129 xtitle Temperaturas Mensais em BH M s Graus C Figura 240 O programa ClimaBHZ sce A Figura 240 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
61. forma similar utilizada no comando for como mostrado na Figura 221 Ts LL Lz m LA UnL Elas Figura 221 Constru o de vetores regulares Uma outra forma de se conseguir vetores com valores regularmente espa ados com o uso da fun o linspace lt valor inicial gt lt valor final gt lt n mero de pontos gt onde al m do valor inicial e do valor final fornecido o n mero de pontos em que se deseja dividir o intervalo ao inv s do valor do passo A Figura 222 mostra dois exemplos de uso da fun o linspace ER linspace 0 10 6 o gt 0 gt x linspace 0 10 6 es 4 6 Figura 222 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 223 gt x zeros 2 3 X 0 O 0 O gt y ones 2 3 y 1 Ls L Figura 223 Matrizes com todos os elementos iguais a O ou iguais a 1 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 123 Outra matriz que se pode obter a matriz identidade atrav s da fun o eye como vemos na Figura 224 Figura 224 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 rio
62. id ia central para a computa o a modulariza o S o muitas e muitas pe as mas que s o desenvolvidas conforme padr es que permitem que para utilizar um m dulo seja preciso saber apenas o que esse m dulo faz e n o como ele constru do Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 5 M dulos permitem a divis o de compet ncias Um programador profissional normalmente n o tem a menor id ia sobre a f sica de semicondutores dos chips e nem mesmo sobre como funcionam os protocolos b sicos da Internet Toda a computa o um imenso lego onde cada pe a tem encaixes bem definidos que permitem seu acoplamento para a montagem de estruturas maiores Como veremos ao longo desse curso m dulos s o onipresentes na ci ncia da computa o pois s o fundamentais para o dom nio de sistemas complexos 1 2 Informa o Anal gica e Informa o Digital Computadores s trabalham com informa o e por isso que a palavra inform tica sin nimo de ci ncia da computa o Mas informa o um conceito de dif cil defini o algo em um objeto o objeto suporte que diz alguma coisa sobre outro objeto o objeto alvo ou sobre uma grandeza f sica ou sobre um evento localizado no tempo ou sobre qualquer coisa Quando a maneira de registro da informa o no meio suporte tem uma rela o f sica direta com o objeto alvo da informa o como a deforma
63. imediato somar 7 ao conte do do acumulador e Seo endere amento for direto somar o conte do da posi o 7 da mem ria ao registrador no caso somar 23 ao acumulador e Seo endere amento for indireto somar o conte do da posi o dada pelo conte do da posi o 7 ao acumulador no caso somar 41 ao acumulador 2 Programa o em Assembler Um programa execut vel um mapa da mem ria contendo instru es e dados codificados em bin rio Entretanto nenhum ser humano com sa de mental consegue fazer um programa diretamente em bin rio O processo de programa o em Assembler consiste em e preencher uma tabela com os mnem nicos das instru es dando nomes a posi es de mem ria e usando esses nomes como operandos sendo assim mais compreens vel para humanos e e depois substituir esses mem nicos e nomes de posi es de mem ria pelos c digos bin rios correspondentes um processo a que damos o nome de montagem O programa em bin rio deve ser gravado em alguma m dia hoje em dia um arquivo antigamente fitas de papel ou cart es perfurados e no momento da execu o ser carregado na mem ria do computador Na Pipoca simulada no Logisim isso equivale carga Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 214 de uma imagem na mem ria principal o que poss vel fazer clicando com o bot o direito do mouse sobre o componente mem ria
64. limita o alguma de representatividade Tudo bem mas porque s 2 s mbolos Se os computadores fossem menos mesquinhos e usassem por exemplo os algarismos decimais como unidade b sica de informa o n o ter amos um sistema que antes de qualquer coisa seria familiar e que com n algarismos poder amos representar 10 coisas diferentes A decis o de ado o de um sistema bin rio foi tomada pelos projetistas dos primeiros computadores e se justifica principalmente pela confiabilidade Computadores s o equipamentos eletr nicos onde s mbolos devem ser representados por voltagens ou Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 9 correntes el tricas 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 tem 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 Informa o Anal gica a pode ser pode ser convertida em convertida em Informa o Digital Figura 13 Convers es an logo digital A D e digital anal gica D A Existem dispositivos que transformam informa o anal gica em informa o digital convers es A D e ou
65. lt condi o gt then lt bloco ent o gt else lt bloco sen o gt end Figura 157 O comando if O comando if usado para prescrever comportamentos condicionais na execu o do programa Sua forma geral est mostrada na Figura 157 onde e if then else e end s o as palavras chave que o Scilab usa para reconhecer o comando e if marca o in cio do comando e lt condi o gt uma express o l gica tipicamente uma compara o entre express es aritm ticas cujo valor avaliado como verdadeiro ou falso e then separa a lt condi o gt do lt bloco ent o gt e lt bloco ent o gt e lt bloco sen o gt s o conjuntos arbitr rios de comandos Scilab e else marca o fim do lt bloco ent o gt eoin ciodo lt bloco sen o gt Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 96 e end a palavra chave que fecha o comando if e 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 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 158 1f lt condi o gt then lt bloco ent o gt 1f lt condi o gt then
66. manipuladas por um bra o mec nico de um rob 1 7 Organiza o do Texto Este material destina se a disciplinas introdut rias de organiza o e programa o de computadores para alunos de ci ncias e de engenharia e tem como objetivos e introduzir no es b sicas de circuitos digitais organiza o de computadores representa o de dados e programa o e apresentar ao aluno alguns princ pios b sicos da constru o de algoritmos m todos computacionais para transforma o de informa o e de sua implementa o em um ambiente de programa o e e tornar o aluno fluente no uso de uma ferramenta computacional o Scilab de vasta aplica o nas ci ncias e engenharias O material est dividido em tr s partes e Parte Organiza o de Computadores e Parte Il Ambiente e Linguagem Scilab e Parte ll Algoritmos e Programas 1 7 1 Organiza o de Computadores A Parte Organiza o de Computadores tem dois objetivos principais Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 19 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
67. minLeft MinimoR x 1 half minRight Minimor x half 1 length x if minLeft lt minRight then m minLeft else m minRight end end endfunction Figura 275 Fun o Minimor recursiva 3 3 5 Fun es e Desenvolvimento Top down Uma t cnica comum de programa o a utiliza o da chamada de uma fun o antes do desenvolvimento da pr pria fun o em uma t cnica conhecida como desenvolvimento top down Em um certo momento do desenvolvimento o programador capaz de especificar o que ele quer que a fun o fa a deixando para depois o trabalho de determinar como faz lo Vamos aqui ilustrar o emprego de desenvolvimento top down para construir um programa que e Leia uma s rie de n meros inteiros maiores ou iguais a 2 e Para cada n mero lido encontre o menor n mero primo que seja maior ou igual a ele Por exemplo se o n mero lido for 4 o programa deve encontrar o n mero primo 5 se for 11 o programa deve encontrar 11 que j primo Da matem tica n s sabemos que o conjunto de n meros primos infinito ou seja que sempre existe um n mero primo maior ou igual a um n mero dado e O programa deve terminar quando o usu rio entrar com um n mero menor que 2 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 143 Construir um programa que seguindo a estrutura mostrada na Figura 186 leia uma s rie de dados fa a alguma coisa co
68. 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 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 car
69. na Figura 401 a microinstru o no endere o apontado por mPC carregada no mIR Leitura de A Microinstru o Figura 408 A es em t0 e Quando t1 passa de O para 1 destaque em verde na Figura 401 se a microinstru o for do tipo signal seu operando carregado no registrador Signals cujas sa das fornecem os sinais de controle para a CPU sen o se a microinstru o for jsr jump subroutine o valor do mPC acrescido de 1 armazenado no registrador Return Address Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 227 PR AT usa a Soma 1 se a microinstru o Epi for do tipo Desvio Carga do saida do Registrador e se o m pCode for isr ocasiona Return Address JM aliza pum O se a microinstru o Carga do for do tipo Signals Registrador ocasiona Signals gt Figura 409 A es em t1 e Quando t2 passa de O para 1 destaque em azul na Figura 401 o clock do mPC acionado atualizando seu conte do o que determina a pr xima micro instru o a ser executada O novo conte do depende do sinal aplicado entrada Force New Address do mPC o sefor iguala 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
70. nicas transforma es feitas por qualquer computador sobre bits 2 2 2 Portas L gicas Tabela 9 Defini o das opera es NOT OR e AND a nota A Tabela 9 mostra as defini es dessas opera es O que se v nas tabelas bastante intuitivo e A opera o de nega o NOT simplesmente inverte o valor de entrada e A opera o OR tem como resultado 1 se pelo menos uma das entradas for iguala 1 e s igual a O quando todas as entradas forem iguais a O e Inversamente a opera o AND tem O como resultado se qualquer uma das entradas for igual a O e s igual a 1 quando todas as entradas forem iguais a 1 Circuitos digitais que implementam opera es booleanas s o conhecidos como portas l gicas A Figura 42 mostra um diagrama de circuito simulado no Logisim contendo desenhos adotados por conven o para entradas sa das e portas NOT AND e OR e suas conex es Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 30 Figura 42 Portas l gicas entradas e sa das em um diagrama de circuito simulado no Logisim Express es booleanas s o composi es dessas opera es b sicas geralmente escritas utilizando uma nota o mais compacta e a denotaNOT a e a b denota a OR b e a b ou ab denota a AND b Par nteses s o usados em express es booleanas da mesma forma que usamos em express es aritm ticas Exemplos de express es booleanas ou ex
71. 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 L 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 a wmn e ol Address Figura 414 Micro c digo para fetch de instru o A Figura 414 mostra o micro c digo que implementa a leitura fetch de uma nova instru o Este micro c digo executado ao fim de cada instru o todas as instru es sempre terminam pela micro instru o jmp Fetch Repare que a ltima micro instru o de Fetch jmpNext que como vimos desvia para a posi o apontada pela sa da da ROM Branch Table Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 230 Comments e W v Sl a iv Q TJ 1 O laolsisiClsSiola Je 2 e RD o e ISl amp l alil letl lg gz lelo lo lo I I l9 lo lo Iso e Epa q resolve endere amen
72. nos reserva surpresas desagrad veis como mostra a Figura 343 Parax 1 o erro inferior aos valores por 15 ordens de grandeza muito bom Para x 10 0 erro 8 ordens de grandeza menor que os valores calculados v l J com x 20 o 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 tol 1 0e 40 1 1 3 67879441e 001 3 67879441e 001 1 11022302e 016 10 10 4 53999298e 005 4 53999296e 005 1 39453573e 013 20 20 2 06115362e 009 5 62188447e 009 3 56073085e 009 30 30 9 35762297e 014 3 06681236e 005 3 06681237e 005 Figura 343 Resultados de testes da fun o expTaylor com x negativo O que aconteceu A f rmula para a s rie de Taylor provada matematicamente e a fun o expTaylor uma implanta o direta da f rmula com pouca possibilidade de erros 1 0e 23 1 0e23 y eps x igual a y bit por bit Figura 344 Exemplo de cancelamento catastr fico A origem dos maus resultados est na aritm tica de ponto flutuante que usa um n mero fixo de bits para representa o da mantissa Opera es aritm ticas com n meros com grandes diferen as de ordem de grandeza n o funcionam corretamente como mostra a Figura 344 O valor 1 0e 23 somado a 1 0e23 n o altera o seu expoe
73. o e Os comandos printf utilizam o c digo de convers o s apropriado para strings Estes dois truques s o exemplos de manipula o de strings que podem tornar mais simp tica a intera o de um programa com seu usu rio Um programa como o Eg2g3 sce Figura 156 que resolve uma nica equa o de 2 grau a cada execu o se torna mais til se passar a resolver tantas equa es quantas o usu rio queira Uma estrutura simples para esta repeti o controlada pelo usu rio pode ser obtida usando uma vari vel l gica para controlar um loop while conforme o modelo mostrado na Figura 186 continua t while continua Processamento de um item printf Item processado Decis o de continua o pelo usu rio decisao input Continua s n string continua decisao s end printf Obrigado por usar nosso programa Figura 186 Estrutura para repeti o controlada pelo usu rio A cada passagem do loop o usu rio interrogado sobre o seu desejo de continuar o que ele ll pode expressar entrando com o caractere s de sim Se ele entrar com o caractere n na verdade com qualquer string diferente de s o loop interrompido e o programa termina Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 107 C lculo das ra zes de diversas equa es de 20 grau continua bt while continua Processamento de uma eq
74. o 0 0 100 00006 H 1680119 E00037 a an e n o o a a a P a a La e e a e r a r r r PARA Mebi Micromstructions Microprogram Instructons SumX ReadX SearchX Aux J 0 m Ready ER guy Figura 422 A planilha MicroProgram O valor em decimal da micro instru o igual soma e do campo Type multiplicado por 2 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 234 e do campo OpCode DEC multiplicado por 2 e do campo mOperand e das pot ncias de 2 correspondentes a cada sinal igual a 1 na microinstru o Deve se observar que quando Type 1 a microinstru o de controle e todos os sinais s o iguais a 0 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 17 na p gina 212 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 pa
75. o de bits um valor num rico ou um n vel de vermelho em uma imagem S o apresentados alguns dos c digos mais comumente utilizados na computa o Circuitos combinat rios isto circuitos digitais que realizam transforma es sobre um conjunto de bits de entrada produzindo outro conjunto de bits como sa da n o t m mem ria e sua sa da em um dado instante fun o apenas dos valores de entrada nesse instante Circuitos combinat rios utilizam portas l gicas que s o componentes que realizam as opera es AND OR e NOT que constituem a lgebra de Boole S o vistos circuitos combinat rios para somas compara es e para direcionamento de fluxo de dados EB Logisim main of Somador4bits E X File Edit Project Simulate Window Help b gt AlE O DDD J Somador4bits main soma_completa EE Base EE Gates EE Input Output Unchanged bi Label Location North Label Font SansSerif Plain 12 Figura 31 Circuito combinat rio simulado no Logisim que realiza a soma de duas parcelas bin rias de 4 bits 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 fi
76. passo quando feita uma nica compara o Podemos concluir que o n mero de compara es realizado dado por n 1 n n n comp 1 2 n 1 z 3 s AJ 4 1 Para n suficientemente grande o n mero de compara es se aproximar de m 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 O n A Figura 307 mostra um gr fico com medidas de desempenho obtidas para o m todo de sele o e troca em dois computadores Voc pode reparar que para ordenar um vetor com 5000 elementos o tempo gasto pelo computador mais r pido j significativo da ordem de 1 minuto Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 164 Sele o e Troca g0 Bio 70 A EO w 50 um E E e gg 30 T 500 1000 1500 z000 2500 3000 3500 Sono 4500 5000 Tamanho Figura 307 Tempos medidos para ordena o por sele o e troca de vetores aleat rios em um notebook e em um desktop 4 3 2 Intercala o MergeSort Figura 308 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 308 O algoritmo de ordena o por intercala o consiste em dividir o vetor de entrada em duas partes ordenar cad
77. ranin anda gua GOALS SO DDA SON ESA 29 2 2 2 PO Sd e 2d or o PRO SD RR SRD RR SRD RR 29 2 2 3 nl go olE us o po jo d Ead c ii een RR ERRAR RAE RR RR UND O RT E 33 2 2 4 Aritm tica com opera es l gicas ceeeeerereeeere cera cerenceeaaceranceenas 38 225 Sintese de Circuitos CombinatorIos siisiresreireiiniciriiirni Eirene datar ENERE KENEEN 44 2 2 6 Compara o de bin rios sem sinal sss sseussenssessressrrsressrrssrrsrersresseresersreeseene 50 2 2 7 Multiplexadores e Demultiplexadores eceeeeeeereeerererere ceras 53 2 3 CIFCUIROS SCQUONCIDIS sas as DRAGO DDD OD a RSRSRS 56 2 3 1 Flip flops e Registradores ieeeceeeeeerererere cera cereeceeaaceran renan ceranrenan a 56 2 3 2 Barramentos e Controle de Fluxo de DadoS nesesssesssesssrssessersserssessrrsserese 59 2 3 3 MONO I AR RRE RE RE RERETRRERS E A RERS BEER RE RRREE BRT PR RR S 60 2 3 4 ACUNA OFO a E E E E E EEAO O 62 2 4 PROCESSADORES oorear EEEE 63 2 4 1 Uma Calc lddOr Jesiis 63 2 4 2 Cscladores ou OCR inatas a ER 65 2 4 3 MERO FIASERA ES ara DD Obtenha cad 66 2 4 4 DESVIOS eia oia Epa DRDS E a Srta a ata 74 2 4 5 Desvios condicionais sss ssssssesssesssessersseresersrrrsrreseresressresrrerresrresersseesrreserese 77 2 4 6 Instru es e Programa o em Assembler ssesssnssessessessersessessrrsrrsrrsressrsseese 79 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1
78. registrador Return Addr 0110 Desvia para o operando e armazena o endere o consecutivo no Return Addr Desvia para o operando se D ACC for impEQ 7 0111 j p igual a 1 Desvia para o operando se D gt ACC for igual a 1 Desvia para o operando se D lt ACC for jmpLT 1001 p E igual a 1 Desvia para o operando jmp 10 1010 E incondicionalmente jmplnEmpty 1011 Desvia para o operando se InEmpty 1 jmpOutFull 1100 Desvia para o operando se OutFull 1 13 1101 Estes c digos podem ser usados em 14 1110 gua s novas microinstru es Instru es podem ter etapas comuns em sua execu o como a obten o do operando conforme o modo de endere amento O micro c digo destas etapas reaproveitado usando a micro instru es jsr jump to subroutine que desvia para o endere o dado por seu operando e armazena o endere o atual acrescido de 1 no registrador Return Address e a micro instru o return que desvia para o endere o armazenado no registrador Return Address jmpGT O circuito da unidade de controle pode ser visto na Figura 401 onde se pode destacar e asentradas o Opcode com o c digo da instru o corrente o Mode com o modo de endere amento o In Empty Out Full com o estado dos registradores de sincroniza o de entrada e sa da Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 223 o D gt ACC D ACC D lt ACC com o resultado da
79. s mbolo 50 A Figura 12 mostra as escalas mais comumente utilizadas para temperaturas Ou seja ao dizer 50 graus devemos esclarecer se estamos falando de graus cent grados ou Farenheit ou de alguma outra escala de temperaturas 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 IIl 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 digitais microfones digitais entradas de rede s o tamb m chamados de dispositivos de entrada e trazem informa o para o processador Introdu o Organiza o e Programa o de Computadores I
80. sa das para cada combina o poss vel das vari veis de entrada N s j vimos tabelas da verdade quando introduzimos as fun es NOT AND e OR Tabela 9 Dada uma express o l gica n s podemos construir sua tabela da verdade efetuando as opera es da express o A Figura 62 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 40 Figura 62 Tabela da verdade para a express o a b c Mas o 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 da verdade e e construir o circuito equivalente express o l gica Uma express o l gica e uma fun o definida por uma tabela da verdade s o equivalentes quando para qualquer combina o de valores das vari veis de entrada os valores da fun o e os valores da express o s o iguais Por exemplo a fun o f x y definida pela Tabela 11 equivalente express o f x y x y xy Tabela 11 Tabela da verdade para a fun o f x y x L y fo e e OO 0 1 0 1 e O O e Um m todo gen rico para se obter uma express o l gica para uma fun o definida por uma tabela da verdade consiste
81. ser o diret rio corrente do Scilab veja a Se o 3 1 Par metros de entrada e de sa da de uma fun o podem ser qualquer coisa n meros strings booleanos arrays de qualquer tipo e at mesmo outra fun o A Figura 254 mostra um exemplo de uma fun o que recebe uma fun o f como par metro e que faz o seu gr fico para um vetor x function PlotaPontos f x y f x plot2d x y style 1 endfunction Figura 254 Uma fun o que faz o gr fico de outra fun o recebida como par metro O c lculo de combina es uma opera o que pode ser aproveitada em outras ocasi es Como vimos o c digo de uma fun o mais facilmente reaproveitado do que o c digo de um programa Uma boa id ia ent o transformar o programa da Figura 253 em uma fun o o que resulta no c digo mostrado na Figura 255 function nComb Combinacoes n k nComb fatorial n fatorial n k fatorial k endfunction Figura 255 Uma fun o para o c lculo do n mero de combina es de n k a k Um programa principal equivalente ao da Figura 247 est mostrado na Figura 256 Voc deve reparar no encadeamento de chamadas o programa principal chama a fun o Combinacoes que por sua vez chama por tr s vezes a fun o fatorial exec Combinacoes sci exec fatorial sci n input n k input k printf nComb d d d n k Combinacoes n k Figura 256 Um programa principal que usa a fun o Combinacoes
82. tabela custos tabelaComTexto Desktop InglesPortugues f i Ingl s Portugu s E Jos E Mat mfprintf File name ConstrCivil txt Files of type All Files Figura 194 O comando uigetfile O comando uigetfile retorna um string com a rota completa isto desde o diret rio raiz do arquivo escolhido Isso pode resultar em strings longos como o atribu do vari vel na Figura 195 gt f uigetfile title Escolha um arquivo f C YUserslOsvaldo DocumentsidcclEnsinoldcc001 ScilabiDados ConstrCivil txt Figura 195 String com rota completa obtido com uigetfile O string obtido pode ser usado para abrir com mopen o arquivo correspondente O nome de arquivo escolhido pode ser novo ou j existir no sistema de arquivos do operacional Outras formas de uso do comando uigetfile s o e Arq uigetfile o Mais simples sem t tulo na janela de escolha do arquivo e Arq uigetfile txt pwd Escolha um arquivo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 112 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 x txt que seleciona somente arquivos com termina o txt e o a janela de escolha do arquivo tem o t tulo Escolha um arquivo o e exibe inicialmente o diret rio corrente do Scilab o que po
83. um vetor de 4000 elementos com este mesmo tempo a fun o MergeSort executada em um computador com desempenho inferior conseguiu ordenar um vetor com mais de 35000 elementos 4 3 3 Parti o QuickSort Considere um vetor como o da Figura 315 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 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 1 2 3 4 5 6 7 8 9 Figura 315 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 valor igual a um dos elementos do vetor 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 adomeio contendo somente elementos iguais ao piv e e a da direita contendo somente elementos maiores ou iguais ao piv Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 169 poss vel que algumas das partes resultantes seja vazia O m todo prossegue aplicando se recursivamente s parti es da esquerda
84. uma especifica o por um exame de sua estrutura com a constru o de uma prova formal de sua corre o Na pr tica somente algoritmos muito pequenos t m uma prova formal de corre o vi vel O que se faz produzir uma argumenta o informal da corre o de um algoritmo al m desta argumenta o testes Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 149 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 eP Aero sc T Hst To Figura 283 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 283 mas com largura de 32 bits Se algu m quiser considerar o somador como uma caixa preta a ser testada ter amos 264 considerando as duas entradas de 32 bits cada valores para as entradas a serem testadas o que claramente inexequ vel Uma argumenta o baseada na estrutura do somador o que nos propicia a convic o de sua corre o Se estamos convencidos da corre o de um circuito de soma completa co
85. uso por computadores e O campo BranchTable16 ser explicado mais tarde Voltando Figura 387 os dois bits do modo de endere amento modificam a interpreta o do campo de operando conforme a Tabela 18 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 213 Tabela 18 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 ADD Direto acumulador Soma 41 ao ADD Indireto 7 acumulador Figura 388 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 campo de operando ter como efeito e Seo endere amento for
86. utilizado pela fun o MenorFator temos T n 0 2 e por isso dizemos que o algoritmo tem Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 154 complexidade exponencial A id ia aqui ter informa o til sobre o desempenho de um algoritmo que n o dependa da velocidade de computadores espec ficos A constante de multiplica o serve para isso ela absorve pequenas perturba es na execu o e pode incorporar diferen as de desempenho dos computadores Vamos agora considerar a fun o MenorFator2 mostrada na Figura 290 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 sen o ou bem d lt Jp ou bem d lt Jp Isto significa que s precisamos testar a divisibilidade para os inteiros menores ou iguais raiz quadrada de p se neste intervalo n o encontrarmos nenhum divisor j poderemos concluir que p primo function p MenorFator2 n limite int sqrt n p 2 while modulo n p lt gt 0 amp p lt limite p p t 1 end if modulo n p lt gt O then p hn end endfunction Figura 290 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
87. 1 1 4 docx Algoritmos 162 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 low l high if m gt A k m A k im k end end endfunction Figura 303 A fun o SelecionaMenor Como voc pode reparar na Figura 303 as modifica es introduzidas memorizam na vari vel im a posi o onde o m nimo corrente foi encontrado nas situa es em que m atualizada restringem o espa o da busca apenas aos elementos de A com ndices entre os par metros de entrada low e high e acrescentam um par metro de sa da Se a fun o Minimo mereceu a constru o de um programa para seu teste uma boa id ia fazer o mesmo para a fun o MinimoPos que um pouco mais complicada Voc poderia pensar que indiretamente o programa OrdenaPorSelecao teste j o faria mas construir um testador independente tem a vantagem de simplificar o contexto de uso da fun o MinimoPos Programa que testa a fun o MinimoPos exec MinimoPos sci exec PrintMatrix sci a int 10 rand 1 10 PrintMatrix A a inicio input Inicio fim input Fim while inicio gt 0 m im MinimoPos a inicio fim inicio input Inicio fim input Fim end function PrintMatrix Label M printf in s Label for i 1l length M printf 3d M i end pr
88. 10 rand 1 9 sc Soma c printf in Soma gin sc Figura 264 O programa TestaSoma sce agora com exec importante notar que os arquivos TestaSoma sce e Soma sci devem estar em um mesmo diret rio e este deve ser o diret rio corrente do Scilab A tela abaixo mostra uma poss vel sa da deste programa gt exec C Documents and SettingslusuariolDesktoplScilabNTestaSoma sce disp exec done Figura 265 Uma poss vel sa da do programa TestaSoma sce 3 3 3 2 Menor Valor Presente em um Vetor Neste exemplo n s iremos desenvolver uma fun o que encontra o menor valor presente em um vetor O primeiro passo tamb m a escrita do cabe alho da fun o que pode ser visto na Figura 266 function m Minimo A Encontra o menor valor presente no vetor A endfunction Figura 266 Cabe alho da fun o Minimo Nossa fun o tem portanto e um nome significativo Minimo e um par metro formal de entrada A que deve ser um vetor do qual se quer saber o valor do menor elemento e eum par metro formal de sa da m que deve receber na execu o da fun o este valor do menor elemento de A Feche o Scipad se ele j tiver arquivos abertos e o abra novamente para construir esta fun o Salve a fun o em um arquivo Minimo sci em seu diret rio de trabalho Precisamos tamb m desenvolver um programa testador para a fun o e podemos faz lo a partir do programa TestaSoma sce Para isto use o Sc
89. 10000 Figura 243 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 t Isso nos permite selecionar elementos de uma forma elegante como mostra a Figura 244 Figura 244 Exemplo de sele o de elementos de uma matriz por uma matriz booleana 3 3 Fun es Fun es s o uma ferramenta de modulariza o da mais alta import ncia para a programa o em Scilab Elas permitem o reaproveitamento de c digo a divis o de tarefas em projetos maiores de programa o e tornam o c digo mais leg vel Para ilustrar o uso de fun es vamos desenvolver um programa que l dois inteiros ne k e que calcula e imprime o n mero de combina es de n tomados k a k dado pela f rmula k n is 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 245 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 131 Figura 245 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 246 onde cada c lculo de fatorial est destacado e onde o comando de sa da foi omitido n inp
90. 11 1 4 docx Ambiente e Linguagem Scilab 114 coefs2g File Edit Format View Help 25 63 162 56 144 75 84 160 48 0 o 20 1 f q Fi 6 4 4 4 O us O ON Figura 199 Primeiras linhas do arquivo coefs2g txt Nosso programa deve ler o arquivo de entrada e para cada linha lida gravar uma linha em um arquivo de sa da contendo os coeficientes lidos e as ra zes calculadas Isso deve ser feito somente para as equa es com ra zes reais linhas de entrada que formem equa es com ra zes complexas devem ser ignoradas C lculo das ra zes de diversas equa es de 20 grau com coeficientes lidos de um arquivo Localiza o dos arquivos de e s ArgE uigetfile txt pwd Arquivo de entrada ArgS uigetfile txt pwd Arquivo de sa da Abertura dos arquivos daE mopen ArgE r daS mopen ArgS w Processamento do arquivo de entrada e produ o do arquivo de sa da while meof daE n a b c mfscanf daE g bg 3g delta b 2 4 a c if delta gt 0 then ri b sgrt delta 2 a b sgrt delta 2 a mfprintf daS in 8g 8g 8g 8g 8g a b c r1 r2 end end Fechamento dos arquivos de e s mclose daE mclose daS Figura 200 O programa Eqg2g5 sce Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 115 A Figura 200 mostra o programa Eq2g5 sce que atende
91. 11 1 4 docx Ap ndice A A CPU Pipoca 210 e provoca altera es nos conte dos da mem ria e ou dos registradores e e determina o endere o da pr xima instru o a ser executada A coordena o do ciclo de instru o exige novos registradores na CPU Na Pipoca estes s o e PC de Program Counter que cont m o endere o da pr xima instru o a ser executada e IR de Instruction Register que cont m a instru o em execu o e Sinc Entrada e Sinc Sa da necess rios para sincronizar opera es de entrada e sa da que veremos mais tarde Figura 383 A coordena o da execu o de instru es na Pipoca exige registradores extras PC Program Counter IR Instruction Register Sinc Sa da e Sinc Entrada Um ciclo de instru o se inicia pela leitura da instru o ou instruction fetch a ser executada A instru o lida da mem ria no endere o dado pelo conte do do registrador PC e colocada no registrador IR l uma usa o endere o coloca a instru o instru o da armazenado no lida no v G Figura 384 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 211 determina rovo val
92. 13 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 Dbatxrl 2 btri c ans 3 865D 12 gt a r2 2 btr2 c ans 2 274D 13 Figura 151 Verificando os resultados Muito bem conseguimos usar o Scilab para resolver uma equa o de 2 grau o que n o chega a ser uma fa anha Mas tivemos ganhos com rela o execu o dos mesmos c lculos com uma calculadora de m o e ouso de vari veis evita re digita es e poss veis erros e resultados intermedi rios s o memorizados e podem ser reaproveitados e ouso de f rmulas como na Figura 150 aumenta muito a confian a nos c lculos As limita es do uso direto da console Scilab para c lculos tornam se claras quando queremos resolver outra equa o de 2 grau F rmulas t m que ser re digitadas abrindo uma ocasi o para erros com pouco aproveitamento do trabalho j feito A solu o para isso usar o Scilab como um interpretador de programas Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 93 Um programa fonte Scilab um arquivo ASCII isto um arquivo que s cont m textos sem formata o e que tem a termina o sce Um arquivo programa cont m comandos Scilab e constru do usando o editor SciPad veja na Figura 152 como o editor aberto no Scilab 5 1 A execu o inte
93. 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 Figura 129 O contador de programa da CPU 1 A Figura 129 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 O ou ent o o valor da entrada D quando a entrada Desvio igual a 1 Micro instru o Ekee EEEE feito o Sinais A O la O ERIC E q Ss da micro ma o als BxiS leitos Acumulado g t la x edito S 9e 17 912 a e EEEE o Z j ig a la ja Jo jo Jx z x Carrega 1 no acumulador Soma 1 ao acumulador Figura 130 Um programa para a CPU 1 Na Figura 130 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 77 este programa no Logisim as etapas s o as mesmas as micro instru es devem ser gravadas em um arquivo codificadas em
94. 323 Aproxima o por trap zios A soma das reas dos trap zios dada por po EEDE OD y pICODEIOD y ga p DH O g EO F y ou A hy LER 4 f fa Ht fan EE ou O VOD fan N A Ay een gt rt Uma fun o que calcula uma integral por trap zios est mostrada na Figura 324 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 174 function area TrapezoidalSum f a b n Calcula a rea sob a curva f entre a e b utilizando n intervalos e a f rmula dos trap zios x linspace a b n 1 delta x b a n area f x 1 f x n 1 2 sum f x 2 n delta x scf plot2d x f x style 5 axesflag 5 plot2d3 x f x style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx axesflag 5 endfunction Figura 324 Fun o para aproxima o de integrais por trap zios Para testar esta fun o vamos calcular IN sin x dx cujo valor exato n s sabemos que igual a cost cos 0 2 Com 5 intervalos o resultado da chamada TrapezoidalSum sin 0 pi 5 foi 1 9337656 com 50 intervalos chamada TrapezoidalSum sin 0 pi 50 o valor obtido foi 1 999342 4 4 2 Bisse o N s sabemos que as ra zes 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 numeri
95. 4 Pilha de execu o de FatorialR 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 142 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 omenor valor presente em A o menor entre A 1 eo menor valor presente em A 2 length A o que nos leva a uma formula o recursiva do mesmo algoritmo que usamos na fun o Minimo Outra rela o de recorr ncia que pode ser usada e selength A 1 o menor valor presenteem A A 1 e selength A gt 1 omenor 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 275 function m Minimor x 1f length x 1 then m x 1 else half int length x 2
96. 4 Um transistor Um transistor tem 3 pinos um controle uma entrada e uma sa da Em circuitos digitais o seu funcionamento se d somente nas seguintes situa es e quando a voltagem aplicada ao controle alta para algumas tecnologias 5 volts o transistor um condutor perfeito e as voltagens na entrada e na sa da s o necessariamente iguais e quando a voltagem aplicada ao controle baixa 0 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 voltagem alta Como mostrado na Figura 45 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 45 Uma porta NOT invertendo a 0 Como a 0 o transistor funciona como isolante perfeito Quando a 0 a voltagem aplicada ao controle do transistor baixa e ele funciona como isolante perfeito e obtemos a 1 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 32 RM Figura 46 Porta NOT inv
97. 4 docx 3 Amplenteeninguagem Scla saindo baia lia AENEAS E de dadrtadatadedadadros 85 3 1 Introdu o ao Ambiente e Linguagem Scilab c e eceeeeeeerereeeerenea 85 3 1 1 Vari veis e Comandos de Atribui o eeecereeeere erre N 88 3 1 2 Programas Stila Desas atoa niosaiaNao sas da aa casada danada esa dass 91 3 1 3 Os comandos E CPrIND rennan DATE 95 3 1 4 Loops os comandos for hi Le sara nasnca casas adiadas adaiaa aaa 97 3 1 5 Valores LOBICOS E STINES asusacasasadiasduosadraiaadsad dada dedidodidodidedids ditadas 103 3 1 6 Comandos ANINNAdOS utarstan il Deaharab iso iai EEEE TT 107 3 1 7 PRN A O LD N O e R RA SS 110 3 2 Mat SS RR RE PA VA PA PA A A A 115 3 2 1 Atribuindo valores a uma matriz orii A LEELLE 115 3 2 2 Vetores linha e COUN ee e EE 117 3 2 3 Referenciando partes de uma MatriZ sseessensseeseessresressrrssrrsrersressrrssreseees 117 3 2 4 Aritm tica matricia sai E E E A 118 325 CONStUINdO Ma2 S asd da Dado aqua R 122 3 2 6 Mat ese GONEST a 124 3 2 7 Matrizes de Strings e Arquivos sssessessessersrrsrrsresressessrrserssessesserserseeseeseesee 126 3 2 8 Matrizes Num ricas e Arquivos ecereecere cera cera ceeeeceranceraaceraneenas 127 3 2 9 Matrizes e express es I BICAS assuistisancasas ioisaca do liiaa asia dalsdatsiadesa asse sais na dde 129 3 3 FUNGOS ei e 130 e Ro ai SIE ca oa dar aaa aaa nda Sacada ua dana Ra Ronan aan aaa N 132 3 3 2 Fun es arquivos fonte e o
98. 84 pilha 138 Planilha Pipoca xIs 228 plot2d 121 pol gono 141 Ponto Flutuante 25 IOPC 2011 1 4 docx ndice Remissivo printf 93 problema de transforma o de informa o 145 processador 7 produto elemento a elemento 116 produto matricial 116 profundidade 180 Program Counter 206 programa 204 Programa em Execu o 210 programa execut vel 209 Programa Execut vel 210 Programa Fonte 210 programa principal 128 Prolog 84 prova formal 145 pwd 109 Python 84 raiz da rvore 180 RAM 15 rand 120 rect 141 registrador 55 registrador circular 64 Registradores 15 retorno da fun o 128 return 218 Return Address 217 RGB 24 RoadRunner 1 ROM 58 sci 130 Scilab 84 SciPad 91 sele o e troca 157 Select Sort 156 sensores 13 SetlnEmpty 214 SetInFull 214 Introdu o Organiza o e Programa o de Computadores 204 Signals 217 Sinal e Amplitude 24 S ntese de Circuitos Combinat rios 42 size 113 software 204 soma de Riemann 168 soma completa 40 somador de n bits 41 SomarTr s 45 splitters 57 Strings 101 sub circuito 45 SumX 210 supercomputador 2 tabela da verdade 37 teclado Dvorak 13 testes 145 then 93 timer 147 Transistores 28 Trocar os valores de duas vari veis 158 uigetfile 108 unidade de controle 207 unidade l gico aritm tica 61 vai um 40 Vari veis 86 vari veis locais 130
99. Computer Retrieved 2009 from http www 03 ibm com ibm history exhibits pc pc 1 htm l Lohninger H 2006 Vienna University of Technology Retrieved from http www vias org simulations simusoft adconversion htm l Lyon B 2005 The Opte Project Retrieved August 2009 from http opte org Mathworks n d Retrieved Fevereiro 2010 from http www mathworks com McJones P n d History of FORTRAN and FORTRAN Il 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 Mar o 2010 from http gss stanford edu godfrey vonNeumann vnedvac pdf O Reilly Media n d Language Poster Retrieved April 2009 from History of Programming Languages http oreilly com news languageposter 0504 htm l Scilab Consortium n d Scilab Home Page Retrieved from http www scilab org StatLib 1989 StatLib Datasets Archive Department of Statistics Carnegie Mellon University Retrieved March 2009 from http lib stat cmu edu datasets Top500 n d Top 500 supercomputers Retrieved from http www top500
100. E Build Circuit Figura 76 Entrando com os valores da tabela da verdade Depois entre com os valores apropriados clicando uma ou mais vezes sobre cada um dos x na tabela at obter o valor desejado Se passar do ponto clique novamente Fa a isto at chegar tabela da Figura 77 onde voc pode reparar que em cada linha b2b1b0 a2ala0 1 exceto na ltima onde seguimos a conven o j mencionada Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 47 Combinational Analysis File Edk Po Selo Window Help inputs Outputs Table Expression Mnimized 8 D E Oo of 0 0 0 0 1 l a a CO O a ma CO CS O a OS O oO ss a O OS ma a Figura 77 Tabela da verdade pronta Agora s clicar sobre Build Circuit e o circuito SomaUm est pronto Confira com a tela da Figura 78 o circuito que voc construiu Logisim Somalm of Untitled Edk Project Samulste Window Help e ale e gt D Ip a H jGates Facng East pR No Bit width 11 Thres state No aul Behavior Unchanged Label ao abel Loca North abel Font SansSer Figura 78 Circuito SomaUm obtido automaticamente Teste o seu circuito com os valores bin rios correspondentes aos valores decimais 2 5 e 7 verificando se as sa das interpretadas como bin rios sem sinal correspondem a 3 2 1 6 5 1 e O pois 74 1113 importante voc r
101. Hide Close Maximo sci function m Minimo A m A l m XI for 2 length A for i 2 length if A i lt m then if X i gt m then m A ij end end I endfunction Line 9 Column 1 Logical line 9 Figura 35 As fun es Maximo e Minimo vistas no editor Scipad Para entender melhor essas fun es veja o algoritmo descrito na Se o 1 7 3 O programa produz o gr fico da Figura 36 ea sa da Min 0 86 Max 0 36 mostrada na console do Scilab 0 4 0 2 0 0 0 2 0 4 0 6 0 8 E 500 1000 1500 2000 2500 3000 3500 4000 4500 Figura 36 Gr fico com os pontos no arquivo ondas1 txt 1 7 3 Algoritmos e Programas Na parte IlI Algoritmos e Programas nosso foco se afasta um pouco de especificidades da linguagem Scilab para abordar aspectos da programa o de computadores que s o independentes da linguagem utilizada N s continuamos a usar o Scilab mas o conte do dessa parte seria essencialmente o mesmo se estiv ssemos utilizando C Java Fortran ou qualquer outra linguagem N s veremos que um algoritmo um m todo para transforma o de informa o de 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 37 Como encontrar o menor valor em uma cole o de
102. ISH LOOP Para A N meros a serem somados as o L O O O O IJ lt 0 00 4 04 5 05 6 06 3 08 2 Jos 11 08 13 oD 14 Figura 137 C digo fonte de um programa para a CPU Pipoca Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 82 Na Figura 137 n s vemos um exemplo de um programa escrito desta forma 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 aos poucos alguns aspectos deste programa d O daCUTRUtdllUl Coloca 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 P pageumulador ho RSI gp UM E vw n e dlAddressiOo STORE P Coloca o Tesultado 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 Ss a serem somados O Figura 138 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 138 A cada linha do programa corresponde uma palavra na mem ria
103. Introdu o Organiza o e Programa o de Computadores usando Logisim e Scilab Osvaldo Carvalho Departamento de Ci ncia da Computa o UFMG osvaldo Ddcc ufmg br 1 Semestre de 2011 IOPC 2011 1 4 docx Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Conte do 1 AEGIS E E o sa PS E EEEE EE E 1 1 1 ComputadoreS ssesseeseessessessersrrsrrsrrsresseesrrsrrsresseosresresressrsseeseeseesresersseeseeseesesseeseest 1 1 2 Informa o Anal gica e Informa o Digital ec eeeeeeeerereereeereraeeenaa 5 1 3 Computadores e Informa o sqssasssaidasashsaaidasanadaaidasabhdaaidasaBadadidasaLSsaEag Maisa Casas aa 7 1 4 Convers es an logo digital e digital anal gica c ee eeeereereeeereeereranea 9 1 5 Sensores e aLUANDOTeS uu caiueiiaaea hacia cndes adiar daiane nda iai dent ca aaa a 13 1 6 MENTO I araa A E E E E O EE E 15 1 7 Organizacao O TEXTO eccer E aa 18 1 7 1 Organiza o de Computadores ssssssessessesseesrrsrssersrrsresressessersersrrsressessersees 18 1 7 2 Linguagem e Ambiente Scilab e eceeereeereerere cera cee acena ceras 20 1 7 3 Algoritmos Progr ana unenian aoa nas 22 Organiza o de ComputadoreS sssessessessersersressessersresrrsressessesserserseeseesersresrensessersee 25 2 1 SELLES 6 8 PR REAR RD RA E AR RR AR RR E 25 22 CiIcuRosSCoOmbINALOROS uni ini dd AE 28 2 2 1 lgebra de BoolE saindo
104. O circuito de cima utiliza somente elementos de largura de 1 bit com os quais j estamos familiarizados O de baixo utiliza entradas sa das registradores e cabos de 4 bits de largura Seu desenho por isso mesmo muito mais simples e portanto de mais f cil compreens o A largura de bits de componentes como registradores entradas e sa das Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 59 controlada pelo usu rio usando o campo data width no painel de atributos como na Figura 100 O Logisim facilita a nossa vida dando a cabos a largura de bits dos componentes aos quais o cabo se conecta e alertando o usu rio nos casos de incompatibilidade j Logisim main of Splitter File Edit Project Simulate Window Help ebl Aala Oo gt DD d Splitter t 61 main Base Gates Memory Plexers Arithmetic Input Output Legacy e 00000A 00000000 East 2 Bottom Figura 102 Uma bifurca o de um cabo de 8 bits em um de 5 bits outro de 2 e um terceiro de 1 bit de largura O ret ngulo esquerda uma amplia o do painel de atributos da bifurca o O Logisim oferece ainda bifurca es splitters que permitem dirigir os bits de um cabo com largura maior para outros de largura menor como mostrado na Figura 102 2 3 2 Barramentos e Controle de Fluxo de Dados Figura 103 Um barramento
105. OPC 2011 1 4 docx Introdu o 8 e Atuadores s o impressoras monitores de v deo alto falantes projetores sa das de rede e s o tamb m chamados de dispositivos de sa da Atuadores exportam informa o que sai do processador e Sensores e atuadores frequentemente trabalham tanto com informa o digital como com informa o anal gica e fazem uso de convers es A D e D A A informa o digital nos processadores e mem rias atuais utiliza somente dois 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 0 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 enfim 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 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 O a 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 n
106. PC 2011 1 4 docx Algoritmos 185 4 5 4 0 3 5 32 0 1 5 0 5 0 0 Es 4 E Ea 10 tz 14 16 18 z0 H Figura 350 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 2 gt logo i log gt x dx xlog x x nloga n n 1 1 i 1 Isso prova que o limite inferior para a complexidade de qualquer algoritmo de ordena o por compara es O nlogzn 4 5 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 origem Ele conhece a dist ncia entre duas cidades quaisquer de seu roteiro um exemplo est mostrado na Figura 351 N o existem estradas entre as cidades sem liga o no grafo f Figura 351 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 352 voc pode ver como a escolha de um roteiro influencia a dist ncia total Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 186 HALAI D 22 D 15 Figura 352 Algumas alternativas de roteiros para o caixeiro viajante Um exame atento nos faz perceber que o roteiro mais direita na Figura 352 dentre todos o de menor custo
107. R e duas NOT posicionando as conforme a Figura 52 Logisim main of Untitled File Edit Project Simulate Window Help brjalzo gt DD Untitled G main 5 Base E O Gates 6 Plexers H Arithmetic 15 Memory H E Input Output East i Wide Figura 52 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 53 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 35 Bej Untitled G main W Base H Gates w Plexers w Arithmetic H Memory 15 Input Output West f Yes 1 Yes v Unchanged Figura 53 Acrescentando entradas e sa das Para colocar fios ligando entradas portas e sa das utilize a ferramenta de sele o em destaque na Figura 54 Fios sempre seguem caminhos horizontais ou verticais chamado caminho Manhattan e nunca em diagonal DER 3 Untitled S Base 5 Gates S Plexers E E Arithmetic 3 Memory H O Input Output Figura 54 Acrescentando o cabeamento Uma opera o l gica importante o Ou Exclusivo escrito frequentemente como XOR exclusive or Se a e b s o vari veis booleanas isto vari veis cujos nicos valores poss veis s o Verdadeiro e Falso ou 0 e 1 a XOR b s tem o valor 1 Verdadeiro quando uma e somente uma das vari veis
108. Ra zes complexas else ri b sgrt delta 2 a r2 b sgrt delta 2 a printf rl g e r2 g r1 r2 end if delta lt 0 then printf Ra zes complexas else rl b sgrt delta 2 a r2 b sqrt delta 2 a printf rl Sg e r2 g rl r2 end Menos leg vel Figura 189 Ifs equivalentes para o Scilab mas com diferen as de legibilidade devido indenta o Indenta o o termo empregado para esta t cnica de deslocamento de blocos internos na disposi o gr fica de um programa Seu emprego visto como absolutamente essencial por toda a ind stria de desenvolvimento de software A Figura 189 e a Figura 190 mostram compara es entre comandos digitados com e sem o emprego de indenta o if Nota gt Conceito 1f Nota gt 90 then Conceito A else if Nota gt 80 then Conceito B else if Nota gt 70 then Conceito C else if Nota gt 60 then Conceito D else if Nota gt 40 then Conceito E else Conceito E end end end end else if Nota gt Conceito else if Nota gt Conceito else if Nota gt Conceito else if Nota gt Conceito else Conceito end end end end end Figura 190 Outro exemplo da influ ncia da indenta o na legibilidade de um comando Vamos agora desenvolver um programa que produza uma tabuada de multiplica o como mostrado na Figura 191 Introdu o Organi
109. Scilab ec eeeeeerere crer ceranceeeaeenes 133 3 3 3 Fun es Matrizes LOOPS E INAU O siste state tetaan bebia ads sa 135 3 3 4 RECUESIVIGACE na RR E NOR 140 3 3 5 Fun es e Desenvolvimento Top down ssesssssesssessessessersessessersersrrsressessersee 142 3 3 6 pesennando MApaS aaa iaat io E rA AAA 144 4 AIBORMOS arei ee date dnte dao aatEni OU AU O O 148 4 1 Defini o e Caracteristicas qa sis hub chat Sel Gb LA CRU CL CL A EET 148 4 1 1 ESPECIICA O san asa ala tantas rat aiat ata o raia dad du dad bad ad 148 4 1 2 COMO ni 148 4 1 3 Efici ncia e Complexidade Computacional c e eceeereeereeeereenes 149 4 2 PESQUISA essa near ee ai E EA 155 4 2 1 PESQUISA CUECA RR T 156 4 2 2 PESdUIS a BI ata A ais So Sina den G is da 157 4 3 O go sigie 86 SAO ARO RSRSRS NR e DR RR DS ERR RD O 159 4 3 1 Selecao E TROCA cursa ticas Gean inca na ea EEEE ca 159 4 3 2 Intercalac o MES arininn en iee EEE EEEE EEEN 164 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx 4 3 3 parti o QUICKSON sas ia essa ED 168 4 3 4 Dividir para CONQUISLaR sassaspusssasasara canta asi UR SU REGGIO isentas danda 171 AA Alcolitmos NUMEROS assada das ner a Casada SR 171 4 4 1 Integra o por Trap ZioS ssa DS ESSES Ga sia 171 4 4 2 BSO CO 174 4 4 3 S rie de Taylor para exp x e Cancelamento Catastr fico 179 4 5 Complexidade de Problemas e ereere
110. Se a tabela tem n elementos teremos no pior caso log gt n compara es onde x indica a fun o teto que mapeia um n mero real x no menor inteiro maior ou igual a x No caso da tabela armazenada no arquivo 200000primos txt temos no pior caso l09 gt 200000 17 60964 18 compara es para completar a pesquisa Compare isso com O pior caso da pesquisa sequencial que pode necessitar de 200 000 passos para terminar Pior se a tabela dobrar de tamanho passando a ter 400 00 elementos o algoritmo de pesquisa bin ria ir passar a necessitar de 19 compara es uma a mais enquanto que o algoritmo de pesquisa sequencial poderia necessitar de 400 000 passos Por estes argumentos algu m poderia pensar que em casos em que temos uma tabela ordenada a op o pela pesquisa bin ria em detrimento da pesquisa sequencial uma escolha bvia mas nem sempre este o caso A pesquisa sequencial mais simples mais f cil de programar e menos propensa a erros de programa o E muitas vezes trabalhamos com tabelas pequenas onde a diferen a de desempenho entre os dois algoritmos n o importante Ao programar nunca se esque a do kiss principle um acr nimo para uma frase em ingl s que todos os bons programadores dizem a si pr prios todos os dias keep it simple stupid Ou seja s complique quando inevit vel 4 3 Ordena o Outro problema cl ssico da Ci ncia da Computa o a ordena o que consiste em dado um
111. Search Figura 297 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 e a cada passagem do loop o elemento comparado com a chave buscada est na posi o m int high low 2 e o ponteiro low tratado de forma a manter sempre a afirmativa se key lt table low ent o key n o consta da tabela que valida inicialmente e que permanece v lida a cada atualiza o de low Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 159 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 ostestes que sucedem ao loop permitem decidir se a tabela cont m ou n o um elemento igual chave procurada A an lise da complexidade do pior caso da pesquisa bin ria simples A cada passo o tamanho da parte da tabela que pode conter a chave dividido por 2 e o algoritmo termina quando o tamanho desta parte igual a 1
112. a o e programa o de computadores Apenas meio s culo ap s a constru o dos primeiros computadores o impacto desta tecnologia sobre nossas vidas enorme Computadores mudaram e muito a forma como se faz m sica cinema ou artes pl sticas como se escrevem textos como se faz com rcio A medicina mudou e mudaram a engenharia as ci ncias a economia Mudaram as formas de governar e as formas de exerc cio de cidadania Mas o que um computador Vamos come ar com alguns exemplos certo que voc j viu diversos computadores e prov vel que a imagem que lhe venha mente seja similar mostrada na Figura 1 EAN EE Figura 1 Um IBM PC lan ado em 1981 7 Este o primeiro computador pessoal lan ado pela IBM Apesar de ser precedido por diversos outros micro computadores o IBM PC foi um marco a IBM era ent o a empresa dominante na ind stria da computa o capaz de lan ar padr es Existem computadores que n o se assemelham a PCs Ali s os computadores existentes em maior n mero s o simples e pequenos embutidos em telefones celulares iPods eletrodom sticos e autom veis Outos s o enormes ocupando vastos sal es como o Blue Gene mostrado na Figura 2 Em 2006 o Blue Gene era o computador mais poderoso do mundo sendo capaz de executar 478 trilh es de opera es aritm ticas por segundo Em 2008 j n o era o RoadRunner que como o Blue Gene foi produzido pela IBM atingiu 1 p
113. a 84 jsr 218 jump to subroutine 218 kiss principle 156 l mpada de 7 segmentos 46 largura de bits 56 leg 126 legibilidade 105 limites fisiol gicos 12 linspace 119 LISP 84 loaders 210 Logisim 31 mantissa 26 MAR 59 Mark 2 Matlab 84 matriz identidade 120 matriz inversa 117 matriz transposta 117 Matrizes 112 Matrizes de Strings 123 mclose 108 meia soma 39 Mem rias 15 Mem rias secund rias 15 Mem rias terci rias 16 Memory Addres Register See MAR Introdu o Organiza o e Programa o de Computadores 203 meof 108 merge 161 mfprintf 108 mfscanf 108 mget 1 124 micro Instruction Register 217 micro Program Counter 217 micro assembler 225 microinstru es de desvio 218 microinstru es de sinal 217 Micro Programa 225 microprograma o 217 miIR 217 mnem nicos 209 modo de endere amento 208 montador 212 montagem 205 mopen 108 mPC 217 Multiplexadores 51 NAN 26 NAND 28 nomes de vari veis 86 NOR 28 NOT 27 ones 119 operadores relacionais 94 operando 208 OR 27 ordena o 156 ordena o por Intercala o 161 Ordena o por Sele o e Troca 156 oscilador 63 Ou Exclusivo See XOR OUTPUT 215 overflow 41 palavras 58 par metro da fun o 128 Par metros formais 129 par metros reais 129 partes de uma matriz 114 Pascal 84 PC 206 Pesquisa Bin ria 154 Pesquisa Sequencial 153 PHP
114. a escolha de nomes de vari veis n o utilizados por seus colegas 3 3 2 Fun es arquivos fonte e o Scilab Uma fun o normalmente escrita em um arquivo com o mesmo nome da fun o e com a extens o sci distinta dos arquivos com programas principais Scilab que t m a extens o sce Ene dem fel delta So ear ri b sgrt idelta o sgr C lde lta engfunction Line 6 Column 1 Logical line 6 Figura 252 Um arquivo com uma fun o aberto no Scipad A Figura 252 mostra o arquivo com a fun o da Figura 251 aberto no Scipad onde voc pode reparar que o arquivo e a fun o t m o mesmo nome sendo que o arquivo tem a extens o SCI A mera exist ncia de um arquivo com uma fun o n o basta para que o Scilab saiba de sua exist ncia E necess rio incorporar a fun o ao Scilab o que pode ser feito com o comando exec lt nome do arquivo com a fun o gt que deve ser colocado no programa principal Um exemplo de uso do comando exec est mostrado na Figura 253 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 134 exec fatorial sci n input n k input k nComb fatorial n fatorial n k fatorial k Figura 253 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
115. a 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 73 START Figura 124 Painel de um computador antigo Nem sempre foi assim Em computadores antigos e o autor destas linhas j chegou a utilizar um deles o loader primitivo era carregado palavra por palavra atrav s do painel do computador Como voc pode ver na Figura 124 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 cru o n 5 OX File Edit Format View 002400 000200 e jo e 000202 To ERE B00001 800002 si oo 0O20 002000 DONS Es E E 002400 o aa
116. a 371 A fun o Sucessor A fun o Sucessor Figura 371 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 372 mostra alguns exemplos de uso desta fun o gt Sucessor 3 L gt Sucessor 2 3 1 3 ans s 3 2 gt Sucessor 3 3 3 3 ans L 1 1 L Figura 372 Exemplos de uso da fun o Sucessor Finalmente temos a fun o WritePostSolution Figura 373 que imprime na tela a solu o encontrada em um formato tabular Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 196 function WritePostSolution seq Up Down printf inSolu o sin strPost Up seg for i 1 length seg printf 5d seq 1 end printf An for i 1 length seg printf 5s Up seq i end printf n for i 1 length seg printf 5s Down seg i end endfunction Figura 373 A fun o WritePostSolution J podemos testar o nosso programa para ver se encontramos a solu o da Figura 365 Escolhendo como entrada o arquivo ProblemaPost txt vemos que o programa Post sce efetivamente resolve este problema produzindo a sa da mostrada na Figura 374 Problema de Post 100 O 1 1 100 00 Solu o 1001100100100 1 3 1 1 3 2 2 100 1 100 100 1 O O 1 00 1 1 00 100 100 Figura 374 Sa da do progr
117. a apresenta o de um gr fico 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 40 35 30 Temperaturas Mensais em BH 20 Graus C O 2 MaxMed MinMed MaxRec 6 M s 8 Min Rec Figura 241 Gr fico gerado pelo programa da Figura 240 Na Figura 241 voc pode ver o efeito destas t cnicas sobre o gr fico 3 2 9 Matrizes e express es l gicas O resultado de uma express o relacional envolvendo matrizes uma matriz de valores booleanos que resultam da express o aplicada elemento a elemento como mostram os exemplos na Figura Introdu o Organiza o e Programa o de Computadores 242 IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 130 Figura 242 Express es relacionais gerando matrizes booleanas Uma express o relacional envolvendo matrizes pode ser empregada em um comando if mas isso deve ser feito com muito cuidado pois a cl usula then s ser executada se todos os elementos da matriz booleana resultante forem iguais a t A Figura 243 mostra um exemplo onde somente o segundo i tem a sua cl usula then executada pois a matriz resultante da compara o a gt O tem todos os elementos iguais a St ba J3 gt x gt y 5 10000 end gt D1if a gt O then y 10000 end mad y ans te
118. a completa do bit mais significativo produz um vai um que indica que a soma das parcelas s pode ser representada com n 1 bits Essa situa o designada por estouro ou mais comumente pelo termo em ingl s overflow soma ab v a bv ab v abv vai um a bv ab v abv abv Figura 70 Tabela da verdade para um circuito de soma completa A Figura 70 mostra a tabela da verdade para um circuito de soma completa e as express es encontradas pelo m todo de cobertura dos 1s para as sa das soma e vai um A vari vel v designa aqui a entrada vem um Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 44 Figura 71 Circuito Soma Completa A Figura 71 mostra um circuito de soma completa Repare que a sa da vai um dada pela express o simplificada V bv av ab onde V designa a sa da Vai um e que equivalente express o V a bv ab v abv abv encontrada pelo m todo de cobertura de 1s Para verificar essa equival ncia voc pode construir uma tabela da verdade para as duas express es A simplifica o de express es l gicas um assunto de extrema import ncia mas que foge do escopo deste texto 2 2 5 S ntese de Circuitos Combinat rios poss vel utilizar o Logisim para construir automaticamente um circuito combinat rio a partir de sua tabela da verdade Vamos fazer isto para um circuito que tem as vari veis a2
119. a e b tem o valor 1 O Ou Exclusivo n o uma opera o primitiva da lgebra booleana pois pode ser obtido atrav s da express o a XOR b ab a b Termine agora o cabeamento para obter o circuito da Figura 55 que implementa o Ou Exclusivo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 36 Logisim main of Untitled File Edit Project Simulate window Help brjalz eo DD CD Untitled O main Base Gates Plexers 4 53 Arithmetic H Memory 4 153 Input Output Figura 55 Circuito OU Exclusivo Seu circuito ficar mais f cil de ser compreendido se voc acrescentar textos usando a ferramenta A em destaque na Figura 56 Voc pode alterar as caracter sticas da fonte tamanho negrito ou it lico etc editando os atributos do texto selecionado pes rraman t rel ran ier ta Daa 4 o gma vi MRA pd b o te lexrTro Logisim main of Untit ca File Edit Project Srt window Help Circuito Ou Exclusivo E Arithmetic 115 Memory H Input Output Three state Ives Pull Behavior Unchanged 100 Ei Figura 56 Acrescentando textos a um circuito Textos podem ser colocados em qualque posi o na rea de desenho mas muitas vezes melhor coloc los como labels de elementos de circuito como entradas portas l gicas e sa das O label acompanha o elemento quando este mo
120. a 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 24 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 Ill e o curso se encerram com exemplos de problemas computacionalmente dif ceis e de problemas para os quais simplesmente n o existe nenhum algoritmo que os resolvam para todos os casos Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 25 2 Organiza o de Computadores 2 1 Bits e c digos Como j dissemos informa o simb lica exige conven es de interpreta o Qualquer pessoa pode dar a um conjunto de bits a interpreta o que bem entender mas a escolha de um c digo pode ter consequ ncias importantes ASCII e UNICODE Para a comunica o de dados entre computadores a ado o de c digos com aceita o mais ampla traz diversas vantagens O c digo ASCII American Standard Code for Informatio
121. a 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 309 mostra um exemplo de ordena o por intercala o de um vetor com 16 posi es Na parte superior da figura as pequenas setas indicam divis es de uma parte do vetor na parte inferior em vermelho as pequenas setas indicam opera es de intercala o de partes j ordenadas Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 165 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 4 98 3 059 30 25 62 11 12 26 54 1 0 59 73 98 11 25 30 62 8 0 12 26 54 59 72 73 98 2 11 25 30 33 61 62 67 16 0 2 11 12 25 26 30 33 54 59 61 62 67 72 73 98 Figura 309 Exemplo de ordena o por intercala o com n 16 2 Os pequenos n meros no lado esquerdo da figura indicam o tamanho de cada parte Como 16 uma pot ncia de dois a estrutura de divis es e intercala es muito regular A Figura 310 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
122. ab Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 146 0 0 1 2 3 4 5 6 Figura 282 Efeito n o desejado ao tra ar dois pol gonos Este problema resolvido inserindo se pares de pontos com coordenadas iguais a inf representa o de infinito em ponto flutuante veja a Se o 2 1 para indicar ao Scilab os pontos de separa o entre dois pol gonos Experimente agora fazer na console do Scilab gt X x Sinf w V K Il y inf z gt plot2d X Y rect 0 0 6 6 e voc obter a figura desejada com pol gonos separados O comando c1 limpa a janela gr fica do Scilab Um mapa simples pode ser representado por uma tabela de pares latitude longitude Em princ pio estas tabelas podem ser utilizadas diretamente para o desenho dos mapas utilizando a fun o plot2d mas como j vimos necess rio algum mecanismo para separar os pol gonos isolados representando cada ilha lago ou continente No nosso site fa a o download do arquivo world txt que obtivemos na refer ncia Wolffdata e de onde retiramos grande parte desta se o e abra o utilizando o Bloco de Notas Notepad Um pequeno exame desse arquivo basta para verificar que a separa o entre os pol gonos est ali representada pelas coordenadas com valores 9999 Fa a agora um programa que 1 Leia este arquivo em uma matriz Mapas Use para isto as fun es uigetfile
123. abe alho para uma fun o permutations Figura 355 Function p permutations A gera uma matriz p onde cada linha uma permuta o de A endfunction Figura 355 Cabe alho da fun o permutations Precisamos agora de um algoritmo para gerar essas permuta es O racioc nio mais uma vez recursivo e Se o vetor A de tamanho 1 ele j a nica permuta o poss vel e sen o devemos separar o primeiro elemento do vetor e gerar todas as permuta es dos elementos restantes mesmo problema inicial mas com um elemento a menos e fazer uma justaposi o do elemento separado com as permuta es obtidas e repetir este procedimento para os demais elementos do vetor Como exemplo considere o processo de gerar todas as permuta es do vetor 2 3 4 N s devemos 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 s permuta es obtidas A fun o permutations mostrada na Figura 356 uma implementa o direta deste algoritmo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 188 function p permutations A 1f length A 1 then Pp A else p for
124. abela de Senos 3 sce Nessa ltima vers o e impressa uma linha com cabe alhos para a tabela e Para a formata o de x usado o c digo 3 1f que especifica um campo ocupando 3 colunas ao todo na impress o com 1 casa decimal e Paraa formata o de sin x o c digo 7 4f especifica um campo com um total de 7 colunas com 4 casas decimais O comando for na verdade um caso particular de outro comando repetitivo o comando while cuja forma est mostrada na Figura 172 while lt condi o gt lt bloco while gt end Figura 172 O comando while Nesse comando e lt condi o gt uma express o l gica o loop s termina quando essa express o for avaliada para falso e lt bloco while gt um bloco de comandos Todo comando for pode ser substitu do por um comando while a Figura 173 mostra um exemplo dessa substitui o x 0 for x 0 0 2 2 pi while x lt 2 pi printf n 3 1f 7 4f printf n 3 1f 7 4f x sin x x sin x end x 0 2 Figura 173 Mesmo loop obtido com comandos for e while O emprego do comando while deve ser feito com aten o pois voc pode prescrever um loop que nunca ir parar como no exemplo da Figura 174 O while s ser interrompido quando x for maior que 10 o que nunca acontecer porque x vale O inicialmente e a cada passo fica ainda menor Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambient
125. acteres 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 mget1 fscanfMat e fprintfMat que nos permitem usar armazenamento est vel para massas de dados potencialmente grandes e Um programa Scilab formado por um programa principal e por defini es de fun es Scilab Programas e fun es Scilab s o armazenados em arquivos e Uma fun o Scilab define par metros formais de entrada e de sa da A chamada de uma fun o Scilab define par metros reais de entrada que s o express es Scilab e par metros reais de sa da que s o vari veis que recebem os valores calculados pela fun o para seus par metros formais de sa da e Fun es Scilab podem conter comandos Scilab vari veis locais e chamadas de fun es incluindo possivelmente chamadas pr pria fun o em um arranjo recursivo e N s vimos que a recursividade pode simplificar muito o desenvolvim
126. ade dos programas 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx 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 MathWorks 2 empresa que vende e mant m o MatLab a linguagem teve origem na id ia de colocar c lculos matriciais na sintaxe ao inv s de utilizar cnamadas de subrotinas em Fortran 3 Com poucas mas muito bem sucedidas exce es MatLab n o conhecido em departamentos de Ci ncia da Computa o N o s aqui no Brasil que isto acontece MatLab n o foi projetado por especialistas em linguagens ou compiladores n o tendo aos olhos de cientistas da computa o incluindo este autor qualquer import ncia conceitual como linguagem de programa o Mas seu sucesso pr tico sem qualquer d vida enorme Ao apresentar a 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 McKeeman MATLAB has grown over 20 years from academic research into a generalized tool for a wide variety of applications including vehicle crash simulation financial prediction
127. ado na refer ncia O Reilly Media Fortran uma linguagem que tendo passado por diversas atualiza es at hoje muito usada por cientistas e engenheiros e isso n o deve mudar em um futuro breve Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 86 Figura 142 Fac s mile do relat rio de especifica o da linguagem FORTRAN obtido na refer ncia McJones Outras linguagens importantes que s o sucessoras diretas de Fortran s o e Cobol usado em aplica es comerciais desde 1959 e alinguagemc de 1971 que pode produzir programas extremamente eficientes e C suced nea de C e que orientada a objetos isto permite a defini o de 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 Existem ainda linguagens que seguem outros paradigmas de programa o como linguagens funcionais das quais LISP provavelmente a mais importante e linguagens l gicas como Prolog Nos f
128. alia 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 1 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 dois pontos que provavelmente necessitam de maiores justificativas s o o estudo de organiza o de computadores e a ado o de Scilab 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 e ponto flutuante Acumuladores s o O primeiro contato com loops e somadores s o um 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 executabilid
129. alor representado pela sequ ncia de bits b b b dado pela f rmula V 4b T 2b bo N s adotaremos neste texto a conven o de designar sempre por b 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 mais simples e intuitivas A resposta simples e decisiva para todos os fabricantes de computadores a representa o em complemento de 2 tem propriedades que permitem uma grande economia na constru o de circuitos Para se obter o 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 28 que a representa o de 2 Isso permite aos fabricantes aproveitar para fazer subtra es o mesmo circuito utilizado para fazer somas com acr scimos m nimos de hardware Ponto Flutuante A representa o em um n mero limitado de bits de valores muito grandes ou muito pequenos utiliza mecanismos para sua codifica o similares aos que usamos na nota o cient fica com pot ncias de 10 O n mero de Avogadro por exemplo notado por 6 02 x 1023 e o d
130. ama Post sce alimentado com o arquivo da Figura 367 Como voc j deve esperar inferir desse primeiro sucesso que o nosso algoritmo resolve qualquer problema de Post ingenuidade 1000 01 1 00 0 0 101 001 Figura 375 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 375 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 10112 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 busca simplesmente ilimitado Traduzindo para o problema de Post o fato de n o existir nenhuma sequ ncia de tamanho n que resolva um dado problema n o quer dizer que n o existam solu es de tamanho maior quen A indecidibilidade se refere ao caso geral e n o a inst ncias particulares Para algumas inst ncias como nos casos da Figura 365 e da Figura 375 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 probl
131. anco de Dados como Oracle PostGresSQL MySQL SQL Server e outros permite a recupera o de dados por perguntas queries em ingl s SQL quer dizer Standard Query Language como me d a lista dos alunos de engenharia civil com idade entre 18 e 20 anos que j tenham cursado Programa o de Computadores ou C lculo Num rico SGBDs tratam tamb m do controle de concorr ncia controlando o acesso simult neo a uma mesma base por diversos usu rios e garantindo a preserva o de sua integridade Sistemas Reativos S o sistemas que reagem a diversos est mulos de forma a por exemplo controlar um alto forno aumentando a combust o ao perceber uma baixa de temperatura e diminuindo quando a temperatura do forno est alta Sistemas operacionais como o Windows ou o Linux s o tamb m exemplos de sistemas reativos controlando os est mulos recebidos pelos equipamentos de entrada e sa da Engenheiros e cientistas trabalham normalmente com sistemas reativos menores controlando m quinas e equipamentos de laborat rios Para finalizar alguns conselhos O Scilab adequado para o desenvolvimento de pequenos programas voltados para ci ncias e engenharias Para programas maiores com mais de 1000 linhas considere o uso de outras linguagens com C Fortran C ou Java Qualquer que seja a linguagem escolhida procure usar bibliotecas de fun es desenvolvidas por profissionais S desenvolva o que for realmente necess rio Fun es
132. b m que a fun o Soma chamada com tr s par metros reais distintos de entrada na primeira chamada a um vetor com 4 elementos na segunda b com 6 elementos ena terceira c com 9 elementos e com tr s par metros reais distintos de sa da sa sb e sc A cada chamada da fun o seus par metros formais s e A s o mapeados nos par metros reais correspondentes O funcionamento da fun o Soma poder ser verificado por inspe o visual dos resultados talvez com o aux lio de uma planilha ou de uma calculadora Temos agora que avan ar no desenvolvimento da fun o Soma Para isto uma boa id ia utilizar no Scipad o menu Windows Split side by side o que nos leva a uma janela como a da Figura 260 onde podemos ver simultaneamente os c digos da fun o e do programa testador T E gt SciPad 6 129 BP2 TestaSoma File Edit Search Execute Debug Scheme Options Windows Help Soma sci Hide Close TestaSoma sce 1 function a Soma id 1 7 Programa que testa a fun o Soma F Calcula a soma dos elementos do vetor Za intilO rand 1 4 3 endfunction 3 aa Somala q print i i n Soma kg sa 5b intilo randil e 6 sb Soma Db Tprint in Soma g ab Bece int 10 rand 1 9 9 ac Goma o 10 print i in Soma g 3C 11 Line 11 Column 1 Logical line 11 Figura 260 Tela do Scipad dividida em duas janelas pelo menu Windows Split side by side Como faremos para calcular a soma
133. b em ponto flutuante de 64 bits Zpi a melhor aproxima o de 7 nessa representa o e o mesmo vale para eps 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab MM un E Help Browser o hka E e e E eb e 8 8 2 e e e eb Compatibility Functions Completion Console Data Structures Development tools Differential Equations Dynamic incremental Link Elementary Functions FFTW Files Input Output functions Functions GUI Genetic Algorithms Graphics exporting and print Graphics Library History manager Tenis nd Mo abra sto G rr beim a E e m 90 Elementary Functions Table of Contents s absolute value magnitude cos element wise cosine inverse acosd element wise cosine inverse result in degree acot computes the element wise inverse cotangeant of the argument acotd computes the element wise inverse cotangeant of the argument result in degree acoth element wise hyperbolic cotangeant inverse acsc computes the element wise inverse cosecant of the argument acscd computes the el
134. bra aonde O autor destas linhas cria um diret rio para cada semana onde s o colocados todos os arquivos que s o utilizados voc pode adotar uma organiza o similar em seu computador pessoal Ao usar computadores compartilhados crie um diret rio de trabalho com o seu nome o que ir facilitar a sua limpeza posterior AP SciPad 7 18 1 Eg2gl sce File Edit Search Execute Scheme Options Windows Help Ep Bco T delta b d a c A rli b sgrt delta 2 a b sgrt delta z 2 a Line 9 Column 28 Logical line 9 Figura 153 O SciPad editando o programa Eq2g1 sce Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 94 A Figura 153 mostra um programa que tem em cada linha exatamente os mesmos comandos que utilizamos na console para resolver a equa o de 2 grau N s demos a este programa o nome Eg2g1 sce usamos um n mero no nome do arquivo porque faremos outras vers es deste mesmo programa Se voc rodar este programa usando o menu File Execute voc obter os mesmos resultados que conseguimos com a console As duas primeiras linhas do programa Eg2g1 sce se iniciam por o que faz com que sejam ignoradas pelo Scilab no momento da execu o Essas linhas s o coment rios e t m o important ssimo objetivo de melhorar a compreens o de um programa por um leitor humano Com um programa gravado em um arquivo se quisermos res
135. cada instru o n s fazemos refer ncia a um operando efetivo que o valor que resulta da aplica o do modo de endere amento ao operando codificado na instru o A id ia que efeitos como e somar2 ao acumulador ou e somaro conte do da posi o 2 da mem ria ao acumulador ou ainda e somaro conte do da posi o de mem ria cujo endere o o conte do da posi o 2 de mem ria ao acumulador sejam obtidos pela mesma instru o ADD com modos de endere amentos diferentes para cada caso Nas tr s possibilidades acima o operando codificado na instru o seria 2 Na primeira possibilidade o modo de endere amento codificado em bits seria 00 que chamamos de modo imediato na segunda 01 ou modo direto e na terceira 10 ou modo indireto Nenhum ser humano com sa de mental consegue construir um programa especificando bit a bit suas instru es O processo de programa o da CPU Pipoca consiste em preencher uma tabela usando n o os c digos das instru es mas seus 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 Soma o conte do da posi o de mem ria cujo Carrega o conte do de P FIN
136. caixeiro viajante Mas ser que com ele n s poderemos encontrar o melhor roteiro para visitar de avi o todas as 27 capitais brasileiras melhor nem tentar Com n cidades temos n 1 permuta es a explorar Para o exemplo com 5 cidades s o 4 24 possibilidades f cil Para 8 cidades temos 7 5040 rotas a examinar sem problemas mas para as capitais brasileiras s o 26 4 x 102 permuta es a serem examinadas Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 191 Figura 362 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 Efetivamente 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 n22 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 pesquisa n o se conhecem algoritmos com complexidade polinomial para este problema mas ningu m conse
137. cam armazenados dados e programas Osciladores 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 kt 4A 8 6 DD EE Memory 4 assola fer Es oua ho Three Figura 32 Circuito sequencial simulado no Logisim que acumula a soma das entradas Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 20 A primeira parte culmina com a apresenta o de processadores simples que s o circuitos que transformam informa o de forma flex vel determinada por um programa que carregado em uma mem ria e que pode ser substitu do com facilidade 1 7 2 Linguagem e Ambiente Scilab O estudo da organiza o de computadores ter permitido ao aluno tanto conhecer melhor o funcionamento b sico de um computador como ter um contato com a desumanidade da programa o a n vel de instru es de m quina de um computador A Parte Il Linguagem e Ambiente Scilab tem como objetivos principais e a introdu o de uma linguagem de alto n vel Scilab Scilab Consortium que facilita imensamente a tarefa de programa o de computadores atrav s da oferta de 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 pe
138. camente uma raiz de uma equa o f x 0 onde f x uma fun o cont nua qualquer Para dar in cio ao algoritmo precisamos de dois pontos a e b sendo a lt b onde a fun o f assume sinais opostos ou seja ou bem f a gt 0e f b lt 0 ou ent o f a lt 0 e f b lt 0 como mostrado na Figura 325 Figura 325 Exemplos de intervalos adequados para o m todo da bisse o Como a fun o cont nua e como f a e f b t m sinais opostos em pelo menos um ponto r no intervalo a b n s teremos f r 0 poss vel que o intervalo a b contenha mais de uma raiz como na Figura 326 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 175 Figura 326 Intervalo contendo mais de uma raiz de uma fun o Se f a e f b t m o mesmo sinal o intervalo a b pode conter ou n o uma raiz como mostra a Figura 327 Figura 327 Intervalos em que a fun o n o tem sinais opostos nos extremos podem conter ou n o uma raiz Se f x n o for cont nua poss vel que mesmo com f a f b lt O ou seja f a e f b t m sinais opostos n o exista nenhuma raiz no intervalo a b Figura 328 Se a fun o n o for cont nua sinais opostos nas extremidades de um intervalo n o garantem que ele contenha uma raiz Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 176 O m todo da bisse o exige portanto qu
139. cas de cursos altamente respeitados levantadas pelo projeto Harvard Asssesssment Seminars 6 est o 1 Immediate and detailed feedback on both written and oral work 2 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 3 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 inaceit 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx vi Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx vii Agradecimentos A metodologia adotada para Programa o de Computadores uma aula expositiva e uma aula pr tica por semana e a nova
140. 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 150 Para ganharmos algum sentimento de como algoritmos que satisfazem uma mesma especifica o podem diferir em efici ncia n s vamos fazer alguns experimentos de medidas de tempo gasto com a fatora o de n meros inteiros um problema de import ncia fundamental para a rea de seguran a da informa o A seguran a da criptografia da maior parte dos sistemas atuais depende da dificuldade da fatora o de n meros semi primos isto n meros que s o formados pelo produto de dois primos Estamos aqui falando de n meros grandes chaves criptogr ficas atuais t m costumeiramente 1024 ou 2048 bits que correspondem a n meros com 308 ou 616 algarismos decimais O Scilab oferece a fun o timer que permite medir o tempo gasto na execu o de trechos de um programa A primeira execu o da fun o timer zera e dispara um cron metro cada chamada subsequente da fun o timer retorna o valor em segundos do tempo de
141. controle A Figura 121 mostra o circuito principal da CPU 0 nome que demos a este processador Para compreender a CPU 0 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 operandos especificados nas micro instru es Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 71 Na ee a O o CR BD D O E Sinais a 00001 002000 002400 Figura 122 Unidade de controle da CPU O A Figura 122 mostra os detalhes internos da unidade de controle da CPU 0 Voc deve reparar que a unidade de controle possui e registradores de sinais e de operando que armazenam os bits fornecidos pelas sa das de mesmo nome e um registrador mIR que armazena a micro instru o corrente e um circuito de temporiza o T que j vimos na Figura 115 e que ao longo do tempo fornece os sinais t0 tl e t2 conforme mostrado na Figura 116 atrav s dos sinais fornecidos pelo circuito de temporiza o que o ciclo de execu o de micro instru es implantado na CPU O e osinal t atualiza o valo
142. corrido 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 Pp if n p then printf PRIMO end n input n end Figura 284 O programa Fatora sce Na Figura 284 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 279 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 131101 Tempo 3 062500s 131101 divis vel por 131101 PRIMO n 131103 Tempo 0 000000s 131103 divis vel por Figura 285 Tempos para fatorar n meros primos e n o primos Na Figura 285 n s vemos o resultado do experimento Encontrar o menor fator de um n mero primo tomou mais de 3 segundos enquanto o tempo tomado para encontrar o menor fator de um n mero divis vel por 3 foi t o pequeno a fun o timer retornou zero Isso nos leva a importante observa o de que o tempo gasto p
143. cter 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 sendo constitu do por uma prescri o de passos que transformam uma informa o de entrada em outra informa o de sa da Cada passo prescrito deve ser uma opera o garantidamente realiz vel seja por opera es elementares seja por outro algoritmo Um programa a concretiza o de um algoritmo em uma linguagem execut vel Tr s quest es s o b sicas para a caracteriza o de problemas e algoritmos e Especifica o qual exatamente o problema de transforma o de informa o que queremos resolver e Corre o um dado algoritmo resolve mesmo o problema proposto em sua especifica o e Efici ncia com qual consumo de recursos computacionais essencialmente tempo e mem ria o algoritmo executa a sua fun o N s iremos a seguir detalhar um pouco mais cada uma dessas quest es 4 1 1 Especifica o Especifica es surgem de um processo de an lise de uma necessidade de transforma o de informa o Uma especifica o n o est tica muitas vezes uma especifica o modificada durante e mesmo ap s o processo de desenvolvimento de um programa Uma condi o n o prevista muitas vezes a causa de uma altera o em uma especifica o Como um exemplo no programa que vimos para a solu o de muitas
144. d O io EE A aaa RR RO O A ID oreert enron Go das JOD vo NB ano E US eras a sois aos a o q q O RS E E O E In Ik In DBuyso cc Figura 105 Uma mem ria RAM do Logisim em um arranjo com registradores e barramento A Figura 105 mostra um arranjo de uma mem ria RAM e de registradores em torno de um barramento As opera es de leitura e escrita se fazem com uma nica palavra da mem ria determinada pelo valor aplicado entrada A e para escritas o sinal RAM Clk funciona como o clock de um registrador na subida de O para 1 o valor presente na entrada D copiado para a posi o de mem ria endere ada pela entrada A o que no arranjo da Figura 105 o valor armazenado no registrador MAR o Memory Addres Register e para leituras o sinal RAM gt DBus funciona como um controlled buffer conectado sa da de um registrador enquando seu valor for 1 a mem ria coloca no barramento o conte do da palavra endere ada pela entrada A Input 15 Coloca 15 00001111 na entrada Input In Clk 1 O registrador In copia a sua entrada In Cik 0 In gt Dbus 1 mem ria j cont m o endere o desejado In Clk 1 O registrador In copia a sua entrada In Clk 0 Abaixa o clock do registrador In A mem ria copia o barramento para a posi o 15 RAM Clk 1 E ida indicada pela entrada A RAM Clk O Abaixa o clock da mem ria In gt Dbus O Libera o barramento Figura 106 Um fluxo de dados realiz vel pelo circuito da Figura 105
145. da 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 n 1 delta x scf plot2d2 x f x 2 n 1 f b style 5 axesflag 5 plot2d3 x f x 2 n 1 f b style 5 axesflag 5 xx linspace a b 50 plot2d xx f xx axesflag 5 endfunction Figura 322 A fun o RightRiemannSum Nestas fun es voc pode observar que Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 173 e O primeiro par metro de entrada a fun o cuja soma de Riemann ser calculada e Os par metros a eb s o os extremos do intervalo e n o n mero de sub intervalos e Afun o sum do Scilab utilizada para o c lculo da soma dos elementos de um vetor e Para o c lculo das somas somente os tr s primeiros comandos s o necess rios os comandos restantes se destinam ao desenho de um gr fico que ilustra a soma realizada N o dif cil ver que poss vel obter uma aproxima o melhor da rea sob a curva em um sub intervalo se utilizarmos o trap zio definido pelo valor da fun o nos limites de cada sub intervalo cono mostrado na Figura 323 1 0 rea do sub intervalo Atx 1 x 4 2 0 9 0 0 7 0 5 0 5 0 4 0 3 0 2 0 1 0 0 0 0 0 1 0 2 0 3 0 4 0 5 0 5 0 7 Xi Kin o s 0 9 1 0 Figura
146. das para baixo clique sobre a ferramenta de entradas e no painel de par metros no canto inferior esquerdo da tela do Logisim e escolha South como orienta o Para obter sa das com o ponto de conex o encima clique sobre a ferramenta de sa das e escolha a orienta o North Teste o seu circuito e veja se a sa da corresponde sempre entrada mais 3 Lembre se da conven o que adotamos de ter 000 como o sucessor de 111 Como um exemplo mais detalhado vamos o usar o Logisim para construir um display hexadecimal isto um circuito que acende os filamentos correspondentes ao s mbolo hexadecimal codificado em seus 4 bits de entrada em uma l mpada de 7 segmentos Este um dispositivo simples e eficaz para a visualiza o de algarismos decimais e de algumas letras que voc certamente j viu em elevadores ou sintonizadores de TV a cabo E Figura 80 Uma l mpada de 7 segmentos com todos os filamentos acesos Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 49 O Logisim oferece este componente na biblioteca Input Output Cada um dos pinos acente um dos filamentos com exce o de um pino que acende um ponto decimal que n o vamos usar aqui Figura 81 Nomes dos pinos em uma l mpada de 7 segmentos A Figura 81 mostra os labels dos pinos de entrada de uma l mpada de 7 segmentos e na Figura 82 n s vemos o arranjo de entradas e sa das do circuito
147. de boas bibliotecas t m c digo mais robusto e mais r pido e d o tratamento adequado a erros num ricos Experimente sempre Enquanto voc n o estiver fazendo programas para uso em produ o errar n o machuca Dificilmente um sistema se estraga por um erro de programa o e a experimenta o essencial para o aprendizado KK K Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx ndice Remissivo 202 Indice Remissivo eps 87 pi 87 Sce 91 abertura de um arquivo 109 ABus 215 acumulador 60 ADconversion 12 lgebra Booleana 27 algoritmo 145 ALU 61 ambiente Scilab 85 AND 27 Aritm tica matricial 115 arquivo programa 91 rvore bin ria 180 rvores de decis es 180 ASCII 23 Assembler 205 assembly 205 atuadores 13 barramento 57 Basic 84 Bin rios sem Sinal 23 bit 7 bloco ent o 93 bloco sen o 93 Blue Gene 1 bootstrap 70 bps 14 C 84 C 84 cabe alho da fun o 132 Carta de tempo 55 chamadas da fun o 128 ciclo de instru o 205 Ciclo de Micro Instru o 220 Circuito para sincroniza o 214 circuito principal da CPU Pipoca 212 Cleve Moler 84 clock 63 Cobertura dos 1s 38 Cobol 84 Codifica o com Deslocamento 25 c digo da instru o 208 comando de atribui o 86 Comandos Aninhados 104 coment rios 92 Introdu o Organiza o e Programa o de Computadores c
148. 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 42 Uma soma de n meros bin rios similar soma decimal que aprendemos na escola prim ria Para fazer uma soma na base 10 n s somamos algarismo por algarismo da direita menos significativos para a esquerda mais significativos Quando a soma de dois algarismos excede 9 colocamos como resultado daquela coluna somente o seu d gito mais significativo e acrescentamos 1 o vai um na soma da coluna seguinte Figura 66 Varum fafa f oa Figura 66 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 67 mostra o processo do c lculo de 1011101 1001110 Figura 67 Exemplo de soma de bin rios N s vamos usar essa aritm tica para construir um circuito somador de v rios bits A id ia construir um m dulo que fa a a opera o de uma das colunas da soma O somador ter tantos
149. de controle implementa um ciclo de leitura em sequ ncia de micro instru es da mem ria com o programa 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 TEA Coment rios ECC 0 0 0 070 DI TE Doo DODDODO Doe Figura 117 Codifica o de sinais de controle em micro instru es Sinais gt Compare Clk CC Clea A Figura 117 mostra como podemos especificar micro instru es por meio de uma tabela onde cada coluna um dos sinais de controle do circuito da Figura 111 Cada linha da tabela corresponde a uma micro instru o e as micro instru es ser o executadas sequencialmente pela unidade de controle Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 68 EE DNS Figura 118 Circuito para gera o autom tica de sinais de controle segundo um programa N s vamos agora mostrar um circuito que gera automaticamente sinais de controle ignorando por enquanto o problema do fornecimento de operandos No circuito da Figura 118 n s vemos e uma mem ria RAM onde fica armazenado um programa e sa das de sinais de controle ligadas diretamente sa da da mem ria 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
150. de evitar um aborrecido trabalho de navega o na estrutura de diret rios A fun o pwd retorna o diret rio corrente do Scilab Para entender a necessidade de abertura e de fechamento de arquivos preciso saber que um arquivo fora de uso est totalmente armazenado em uma mem ria n o vol til como um disco ou um pen drive Quando em uso um arquivo tem parte de sua informa o em disco digamos e parte na mem ria principal A abertura de um arquivo traz para a mem ria principal informa es necess rias para o seu uso que s o atualizadas a cada opera o de escrita ou leitura no arquivo e que por diversas raz es nem sempre s o imediatamente gravadas na mem ria n o vol til O fechamento de um arquivo grava na mem ria n o vol til todas as informa es presentes na mem ria principal da mopen NomeCompletoDoArquivo r Figura 196 Uso do comando mopen N s vemos na Figura 196 um exemplo de uso do comando mopen que e recebe como par metros o um string com o nome completo do arquivo muitas vezes obtido com o comando uigetfile e o ostring r ou o string w que indicam se o arquivo ser utilizado para leitura r de read ou para escrita w de write e se bem sucedido retorna um descritor de arquivo um inteiro pequeno que ser utilizado nas opera es de leitura e de escrita Um arquivo aberto pode e deve ser fechado ao t rmino de sua utiliza o atrav s do comando mclose da
151. 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 193 de domin s as primeiras sequ ncias geradas s o 1 2 3 1 1 12 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 sci exec strPost sci exec WritePostSolution sci exec WritePostProblem sci Leitura do problema de Post nTypes Up Down ReadPostProblem WritePostProblem Up Down while found seq Sucessor seg nTypes upString strPost Up seg dnString strPost Down seg found upString dnString 1f found then WritePostSolution seq Up Down end end Figura 366 O programa Post sce A Figura 366 mostra o programa Post sce aonde e A fun o ReadPostProblem usada para ler um problema de Post um conjunto de tipos de domin s Essa fun o retorna um inteiro nTypes o n mero de tipos de domin
152. deste m dulo quantas forem as colunas ou seja quantos forem os bits das parcelas Figura 68 Entradas e sa das de um circuito de soma completa Este m dulo esquematizado na Figura 68 ter tr s entradas e os dois bits de uma coluna das parcelas e e uma entrada que vamos chamar de vem um que vamos ligar sa da vai um da coluna direita As sa das do m dulo s o duas e um bit de resultado e um bit de vai um que ser ligado entrada vem um da coluna esquerda Um circuito que implemente esse m dulo conhecido como circuito soma completa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 43 Figura 69 Arranjo em cascata de m dulos para um somador de 4 bits A Figura 69 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 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 a4 b e de sua entrada vem um que como dissemos o vai um do primeiro SC E esse arranjo se repete aqui para os 4 bits das parcelas mas poderia se repetir por 32 ou por 64 ou por 128 vezes Em um somador de n bits o circuito de som
153. divis es s o feitas com pouco trabalho computacional Repare que e paraa ltima intercala o realizada que gera o vetor ordenado de tamanho n a partir de dois vetores ordenados de tamanho n 2 s o feitas no n opera es e para cada 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 anlog gt n e o algoritmo portanto O nlo gn 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 enlog n 31 22 quando n 1000 n 1 000 000 e nlog n 9965 e por a vai Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 168 MiergeSort Tempols 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 Tamanho Figura 314 Gr fico de desempenho para a fun o MergeSort A Figura 314 mostra o resultado de testes de desempenho realizados com a fun o MergeSort interessante comparar este gr fico com o da Figura 307 Em 20 segundos a fun o SelectSort executada em um computador com desempenho superior foi capaz de ordenar
154. e lt OTOrI 1Sr er Ar Branch Table A 1 E Ai Er Return Add eturn r re o o qu o 16B ROM D 1 DR DBus DDR Cik 1 Comp Cik em Subtract e Control pe o e Signal 1 ACC gt DBUs impIMMEDIATE IAC Clear impINDIRECT ACC Clk eror QJ MAR Cik return EI MAR Abus 1 PC ABus k1 PC Force IPC Clk 1 Operand gt DBus amp 1 IR Cik Out Full 1 RAM gt DBus IRAM Clk amp 1 Out CIk amp 1 In gt DBus In Cik 1 SetinEmpty 1 SetOutFull Reset CLOCK Figura 401 A unidade de controle 7 O Ciclo de Micro Instru o Um ciclo de instru o na verdade implementado por diversos ciclos de micro instru o que de forma similar aos ciclos de instru o s o compostos por etapas de leitura e de execu o de micro instru es que se alternam indefinidamente seguida por Es ce na verdade Ss Ra Instru o p implementado pe ecu o Ee por v rios Da a seguida por Figura 402 Ciclo de micro instru o Na etapa de leitura uma micro instru o lida na ROM de microprograma no endere o apontado pelo registrador mPC e a instru o lida armazenada no registrador mIR Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 225 l uma ROM microinstru o pe a Microprograma ia icroprograma AN pisa O e
155. e comandos indicado pela setinha gt nesse prompt que s o digitados comandos a serem interpretados pelo Scilab Esta janela a console do Scilab Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 88 3 1 1 Vari veis e Comandos de Atribui o Figura 144 Vari veis e comandos de atribui o O principal comando que transforma informa o chamado comando de atribui o Na Figura 144 n s vemos tr s comandos de atribui o simples No primeiro deles a 10 a uma vari vel que passa a existir no interpretador e que recebe e armazena um valor no caso 10 Ap s executar um comando de atribui o o Scilab ecoa isto imprime o valor recebido pela vari vel Vari veis s o nomes para espa os de mem ria gerenciados pelo Scilab um programador n o precisa ter qualquer id ia de como esse gerenciamento feito Vari veis t m seus nomes escolhidos pelo programador segundo algumas regras e O primeiro caractere do nome deve ser uma letra ou qualquer caractere dentre n T S e e Os outros podem ser letras ou d gitos ou qualquer caractere dentre _ e e Mesmo sendo franc s o Scilab n o permite o uso de letras acentuadas ou de cedilhas em nomes de vari veis Exemplos de nomes de vari veis v lidos s o a A jose total de alunos tfuncionarios O Scilab distingue entre mai sculas e min sculas e portanto a e A se
156. e fscan fMat 2 Extraia desta matriz dois vetores Lat e Long correspondendo s duas colunas da matriz lida 3 Utilize uma fun o colocaInfinito para substituir nos vetores Lat e Long os valores 9999 por inf Para isto construa na sua fun o um loop que fa a uma varredura completa do vetor que receber como par metro de entrada e fazendo a substitui o quando for o caso Use a fun o length x que devolve o n mero de elementos em um vetor linha ou coluna para determinar o limite superior de seu loop 4 Useplot2d para obter o desenho do mapa representado no arquivo 5 Utilize uma fun o suaviza para construir os vetores LatS e Longs a partir dos vetores Lat e Long utilizando a regra Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 147 6 Lats i Lat i l Lat i Lat i 1l 3 se Lat i 1 Lat i eLat i 1 forem diferentes de infinito e LatS i Lat i no caso contr rio Esta regra deve ser usada para os valores de i entre2 e length Lat 1 para os extremos do vetor temos Lats 1 Lat 1 e Lats length Lat Lat length Lat A constru o de Longs similar Utilize a fun o scf 3 para abrir outra janela gr fica e fa a plot2d LatS LongsS para descobrir o efeito da suaviza o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 148 4 Algoritmos 4 1 Defini o e Cara
157. e 1 acrescida das cidades que comp em uma linha do vetor Rotas acrescido novamente pela cidade 1 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 190 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 Sinf Dist Dist 1 Sinf Obten o das rotas nl nc size Dist nl deve ser igual a nc Rotas permutations 2 nc Calcula o custo de cada rota NL NC size Rotas for i 1 NL Custo 1 cost Dist 1 Rotas i 1 if Custo i lt gt Exemplos 1 then end end Seleciona a de menor custo Melhor SelecionaMenor Custo 1 Imprime a melhor rota printf inA melhor rota PrintMatrix Rota 1 Rotas Melhor 1 printf com custo total d Custo Melhor Figura 361 O programa CaixeiroViajante sce A Figura 361 mostra o programa completo que tamb m usa as fun es SelecionaMenor Figura 303 p gina 162 e PrintMatrix Figura 304 p gina 162 Executando este programa com o arquivo Distancias txt Figura 358 n s vemos que a melhor rota 1 2 3 5 4 1 com custo total 15 mostrada na Figura 352 Muito bem temos um programa que resolve o problema do
158. e Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 118 Edo 62 56 23 30 29 50 15 84 66 dido 93 56 43 0 68 l2 21 21 48 26 33 87 19 88 31 33 63 66 6 54 65 36 59 40 gt a x 2 Figura 209 Obtendo todos os valores de uma linha de uma matriz Ao se referenciar a uma parte de uma matriz que cont m seja todas as linhas seja todas as colunas poss vel usar uma nota o simplificada com A Figura 209 mostra um exemplo de uso desta nota o para obter todos os elementos em uma linha de uma matriz Figura 210 Obtendo os elementos de todas as linhas nas colunas de 3 a 5 Outro exemplo est mostrado na Figura 210 onde x 3 5 designa a parte de x formada pelos elementos em todas as linhas e nas colunas de 3 a 5 3 2 4 Aritm tica matricial No Scilab as vari veis s o sempre matrizes e em consequ ncia as opera es aritm ticas usuais s o entendidas pelo Scilab como opera es matriciais Desta forma a b designa o produto matricial de uma matriz a por uma matriz b Quando o que se deseja uma opera o elemento a elemento os mesmos s mbolos devem ser utilizados precedidos por um uU n como ou Vejamos alguns exemplos L 2 34 4 5 0l LO 20 307 40 30 60 EAR da Figura 211 Adi o e subtra o de matrizes Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Li
159. e Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 231 O micro c digo para as instru es de desvio est mostrado na Figura 417 Repare que o micro c digo das instru es de desvio condicional se inicia pelas micro instru es de desvio condicional correspondentes Se a condi o de desvio n o estiver satisfeita nada acontece e a micro instru o jmp Fetch executada para a leitura da pr xima instru o Comments Se Lu JE o lt E O O 20 32 INPUT jsr GetOperand Resolve endere amento operando efetivo no DR 21 33 InLoop jmplnEmpty InLoop Espera InEmpty 0 22 34 Sa da do DR vai para Dbus 23 35 MAR copia o Dbus sa da do MAR vai para o Abus 24 36 In copia a entrada sa da do In vai para Dbus 25 37 0 1 Zera o FF InEmpty RAM copia o Dbus 26 38 jmp Fetch Fetch da pr xima instru o 36 54 OUTPUT jsr GetOperand Resolve endere amento operando efetivo no DR 37 55 OutLoop jmpOutFull OutLoop Espera OutFull O 38 56 D Sa da do DR vai para Dbus 39 57 o a 1 Zera o FF OutFull Out copia Dbus 3A 58 jmp Fetch 1 Fetch da pr xima instru o Figura 418 Micro c digo para as instru es INPUT e OUTPUT Na Figura 418 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
160. e aa e re e re D5 O H MH K H nOD pad e e e e e e DO O H MM MM N ON Om 1 Figura 89 Tabela da verdade para um comparador de 1 bit A Figura 90 mostra o circuito comparador de 1 bit obtido dessa tabela da verdade Figura 90 Circuito comparador de 1 bit 2 2 7 Multiplexadores e Demultiplexadores Circuitos l gicos s o tamb m utilizados para conduzir fluxos de dados e Um multiplexador dirige uma nica entre v rias entradas de dados para um destino a entrada escolhida designada por um endere o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 54 e Um demultiplexador dirige uma entrada de dados para um dentre v rios destinos o destino escolhido designado por um endere o e e O A O D i Figura 91 Tabela da verdade para um multiplexador de 1 bit A Figura 91 mostra uma tabela da verdade para um multiplexador de 1 bit Esse circuito tem tr s entradas In0 e In1 que s o as vari veis fonte de informa o e o endere o a que decide qual dentre In0O e In1 ser conectada sa da out Figura 92 Tabela da verdade para um demultiplexador de 1 bit Na Figura 92 n s vemos a tabela da verdade para um demultiplexador de 1 bit Esse circuito tem as entradas a e In A entrada a um endere o de 1 bit e que designa qual das sa das outO ou out1 ser conectada entrada fonte de informa o In InQ Figura 93 Circuito mult
161. e complexa Meiribry Corrtroller Core Core Ge p Core Core Core au j o O a 4 p7 MISC IVO and gpi Shared t3 Cache Shared t3 Cache Queue and Uritore Figura 6 Chip do processador Intel Core i7 980X 13 Olhando para a imagem Figura 6 de um chip do processador Intel Core i7 980X lan ado em 2010 n s podemos perceber diversos sub m dulos Se pud ssemos olhar ainda mais de perto ver amos que este chip cont m 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 mundial que conecta praticamente todos os computadores do mundo A imagem da Figura 7 propositalmente lembra uma gal xia S o milh es de computadores na Internet todos interligados Figura 7 Uma visualiza o da Internet pelo produzida pelo Projeto Opte 14 Em azul est o os n s da Am rica do Norte em verde os da Europa Oriente M dio sia Central e frica e em amarelo os da Am rica Latina Todo esse arranjo envolvendo 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 de forma alguma impediram a computa o de mudar a forma de vida da humanidade Funciona como Essa proeza de organiza o se deve exatamente ao uso intenso onipresente de uma
162. 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 MenorF ator Seu nico par metro de entrada um n mero que para fins de an lise do algoritmo podemos supor ser representado como bin rio sem sinal com n bits N s vimos que o tempo para o pior caso da execu o de MenorFator cresce linearmente com o valor do primo fatorado que pr ximo de 2 onde n o n mero de bits necess rios para a representa o do primo Tempo para Fatora o em fun o do n mero de bits 100 g0 20 T mi 50 pas Segundos 20 z9 Bits Figura 289 Tempos para fatora o em fun o do n mero de bits de um n mero primo em dois computadores Se n o tamanho da entrada de um problema n s dizemos que uma fun o g n caracteriza a complexidade de um algoritmo quando seu tempo de execu o limitado por g n multiplicado por uma constante N s dizemos que sua complexidade da ordem de g n o que escrito T n O g n pronuncia se de g n No caso do algoritmo
163. e e Linguagem Scilab 102 x 0 while x lt 10 printf nx x x 0 2 end Figura 174 Um loop infinito No Scilab voc pode interromper um programa em loop infinito atrav s do menu Control Abort Como um exemplo de uso do comando while em uma situa o onde o emprego do comando for seria inadequado vamos agora apresentar o algoritmo de Euclides proposto em 300 A C 17 e em uso at hoje para encontrar o m ximo divisor comum de dois inteiros positivos Por defini o mdc a b onde a e b s o inteiros positivos o maior dentre todos os divisores comuns a a e b O algoritmo se baseia no fato de que se substituirmos o maior dentre a e b pela diferen a entre a e b o m ximo divisor comum n o se altera A prova desta propriedade n o dif cil Queremos provar que sem mdc a b e a gt b ent o m mdc a b b Parte 1 Sem mdc a b ent o m tamb m divide a b Se m um divisor de a ent o a m x onde x gt 1 um inteiro Mas m tamb m um divisor de b e portanto b m y onde y gt 1 um inteiro Temos ent o a b m x y supondo que a gt b ou x gt y Ou seja se m um divisor de a e de b m tamb m um divisor dea b Parte 2 Sem mdc a b ent o m o maior dentre os divisores de a b e b Suponhamos que exista M gt m tal que a b M z e b M w teremos a M w M z ou a M w z M seria portanto divisor de a e de b e como M gt m por hip t
164. e 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 F b Figura 329 Caso em que a raiz est esquerda do ponto m dio do intervalo Temos tr s casos poss veis No primeiro Figura 329 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 330 Caso em que a raiz est direita do ponto m dio do intervalo No segundo caso Figura 330 temos f m f b lt 0 e o intervalo m b que cont m pelo menos uma raiz A terceira possibilidade de termos tido sorte e encontrado m tal que f m 0 Ao fim de cada itera o ou bem a raiz foi encontrada ou o intervalo de busca foi reduzido metade O algoritmo consiste na aplica o repetida deste passo e termina quando o intervalo onde se encontra a raiz suficientemente pequeno para a precis o desejada Podemos agora dar in cio ao desenvolvimento de uma fun o que encontre uma raiz de uma outra fun o utilizando o m todo da bisse o Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 177 function r bissecao f a b tol se f cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de t
165. e ou 8 bits a Barbara Blackburn produzia informa o a uma taxa de 160 bps bps bits por segundo Figura 24 Sensores especiais um r dio telesc pio e um acelerador de part culas A ci ncia faz uso de sensores que produzem informa o muito mais rapidamente R dio telesc pios ou aceleradores de part culas podem produzir informa o taxas de 1Gbps ou seja um bilh o de bits por segundo quase 7 milh es de vezes mais r pido do que o recorde mundial de digita o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 15 Figura 25 Um atuador especial um bra o mec nico Atuadores comuns s o monitores impressoras alto falantes Existem tamb m atuadores especiais como bra os mec nicos usados por rob s como mostrado na Figura 25 Informa o Digital recebida enviada pelo computador de pelo computador para Sensores incluem Entrada de Rede de Computadores permitem a forma o de Redes de Computadores Figura 26 Redes de computadores Entradas e sa das de rede s o particularmente importantes pois permitem a conex o entre computadores Um atuador de um computador emite sinais el tricos ou de r dio ou ticos que s o percebidos lidos por um sensor de outro computador 1 6 Mem rias Mem rias s o usadas por computadores para registrar informa es para recupera o posterior Um computador geralmente trabalha c
166. e que paran gt 1 n t n n 1 A fun o fatorialR na Figura 270 calcula o fatorial de um n mero usando de forma muito natural essas equa es function fat fatorialR n if n gt 1 then fat n fatorialR n 1 else fat 1 end endfunction Figura 270 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 271 Teste de FatorialR exec FatorialR sci n input n while n gt O do printf ingd d n FatorialR n n input n end Figura 271 Programa TestaFatorialR sce Considere tamb m a vers o de fatorialR da Figura 272 onde tamb m colocamos comandos printf envolvendo a chamada recursiva da fun o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 141 function fat FatorialR n Comente os printf para n o imprimir printf AnIniciando FatorialR d n 1f n gt 1 then fat n FatorialR n 1 else fat 1 end printf inRetornando Fatorial sd d n fat endfunction Figura 272 A fun o fatorialR instrumentada para acompanhamento de sua execu o A execu o deste programa pode gerar a sa da mostrada na Figura 273 onde acrescentamos chaves para indicar a correspond ncia entre chamadas e retornos da fun o n s Iniciando FatorialR 5 Iniciando FatorialR
167. eeeeee rrenan cera rena cera eerarenasa 182 4 5 1 Complexidade da Ordena o sausasaasaasaasss inss das isGasa a doa 182 4 5 2 Problemas NP completos O Problema do Caixeiro Viajante 185 4 5 3 Problemas indecid veis O Problema da Correspond ncia de Post 192 5 Notas Emais Proximos PASSOS aa ii dpi E E E EE E 198 6 ndice REIMS IVO grana nada Uau 202 L REPNE quit ai E CEAR CR AR AR RR RR 205 Apendice A A CPU PIpOCa asas aaS A 208 A Clio GC NStRUC O pipi nois aaa a Oo R ans E 209 L JINSU COES ado dada data dade EEE EEEE ES 211 2 Progamna oenn AS ENDIE a a A A 213 3 Montagem do Programa Execut vel s nsseessensseesrersressrrsrersrersrrssrrssersrersereressrrssee 215 4 OCircuito Principal da CPU PipOCa ssssssesssreeresecesseeresrosreseesesossessosreeresecesesreseeeseesee 216 5 O Contador de Prota dcued a a 220 o AUpdade de Conti Ole aaa aaa ia Rain aeee aeee e EEE E E T T T 220 7 QCC de Micro InStr o sree itan dis uso jusa nan Nisa Sissi Si aaa ia ainda add 224 e O MICRO PRO AMA seta aaa a a aaa a Dea SL E 229 2 A planiha Pipocas asa a e aee Ge 232 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Aos Professores Programa o de Computadores a disciplina mais tradicionalmente oferecida por departamentos de Ci ncia da Computa o e geralmente tamb m a de maior n mero de matr culas Na UFMG Programa o de Computadores j
168. ela ordem dos par metros A execu o da fun o deve calcular um valor para o par metro formal de sa da este valor substitu do na express o que cont m a chamada da fun o Altera es feitas pela fun o sobre par metros formais n o afetam os par metros reais Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 133 function rl r2 eg2g a b c delta b 2 4 a tc b sgrnt delta 2 a b sqrt Chamada da fun o eq2g raizl raiz2 eq2g x y zZ Figura 251 Fun o com dois par metros formais de sa da Uma fun o pode ter mais de um par metro formal de sa da a Figura 251 mostra um exemplo de defini o e de chamada de uma fun o com dois par metros formais de sa da Uma fun o cria um espa o novo para vari veis que podem ter nomes iguais aos de vari veis j definidas no programa principal Vari veis definidas por uma fun o s o chamadas vari veis locais Na fun o da Figura 248 a vari vel i uma vari vel local o programador desta fun o n o precisa se preocupar com qualquer outra vari vel de mesmo nome definida no programa principal Essa delimita o de escopo de vari veis uma propriedade essencial para permitir o desenvolvimento de fun es por programadores independentes se n o existisse todos os programadores participantes de um projeto de maior vulto teriam que se preocupar com
169. elos pioneiros da computa o com pelos par metros atuais enormes custos de verifica o e baix ssima produtividade dos programadores Mas cedo se percebeu que computadores eram muito bons para auxiliar a programa o de computadores Um montador um assembler um programa que l uma tabela programa e gera imagens bin rias a serem carregadas nas mem rias automatizando o processo ilustrado na Figura 390 Main Memory T Figura 391 O programa SumX como um arquivo de imagem de mem ria do Logisim e carregado na mem ria A Pipoca um circuito simulado no Logisim onde mapas de mem ria podem ser carregados clicando sobre a mem ria com o bot o direito do mouse e escolhendo a op o Load Image que abre um di logo para escolha de um arquivo como o mostrado na Figura 391 Arquivos como esse podem ser produzidos usando a planilha Pipoca xIs 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 392 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 217 In Full In Full DAE Out Empty ut Empty Do HO PL a ro SetinFull V E gt y SetOutEmpty A R V cad T Out Clk i In Cik pr JDR Cik m mmediate O n Direct In gt DBus Indirect Running Figura 392 O circ
170. ema onde em todos os domin s o string da parte superior fosse mais longo que o da parte inferior Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 197 10 0 001 0 001 1 Figura 376 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 376 mostra um problema de Post para o qual n o foi poss vel at hoje nem encontrar uma solu o e nem tampouco provar que ele n o admite nenhuma solu o Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Notas Finais e Pr ximos Passos 198 5 Notas Finais e Pr ximos Passos Chegamos ao fim de nosso curso onde vimos alguns dos conceitos que constituem pilares da ci ncia da computa o E hora de rever brevemente estas id ias para obter uma vis o de conjunto e tamb m hora para apontar algumas dire es para os pr ximos passos Computadores trabalham com informa o que pode ser digital simb lica ou anal gica Um computador trabalha essencialmente com informa o simb lica usando apenas dois s mbolos comumente notados 0 e 1 equipamentos de entrada e sa da utilizam transforma es an logo digital ou digital anal gica quando conveniente Um bit a unidade de mem ria capaz de armazenar um destes s mbolos Com n bits pode se r
171. ement wise inverse cosecant of the argument results in degree acsch computes the element wise inverse hyperbolic cosecant of the argument adi 2sp converts adjacency form into sparse matrix amell Jacobi s am function asecd computes the element wise inverse secant of the argument results in degree asech computes the element wise inverse hyperbolic secant of the argument asin sine inverse Figura 147 Lista de fun es elementares encontrada no help do Scilab A constru o de express es aritm ticas mais elaboradas exige o conhecimento das regras de prioridades entre operadores e o uso de par nteses para se obter o resultado desejado Como um exemplo qual valor ser atribu do a uma vari vel x pelo comando x 2 3 4 o valor 234 212 4096 ou o valor 23 4 8 4 32 A Tabela 12 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 22 4 84 32 Tabela 12 Prioridades entre operadores em uma express o aritm tica Prioridade Opera o Associatividade a Potencia o Da direita para a esquerda 2a Multiplica o divis o Da esquerda para a direita 3a Adi o subtra o Da esquerda para a direita Se a inten o do programador era de atribuir a x o valor 234 212 2048 par nteses deveriam ter sido usado
172. ente atrav s da aplica o de uma fun o elementar do Scilab a uma matriz A matriz produzida tem as mesmas dimens es da matriz passada como argumento e cada elemento resulta da aplica o da fun o ao elemento correspondente da matriz original 3 2 6 Matrizes e Gr ficos Matrizes e vetores s o imprescind veis para a constru o de gr ficos no Scilab O comando mais simples para a gera o de um gr fico plot2d x y onde x e y s o vetores com o mesmo n mero de pontos O Scilab constr i um gr fico unindo por segmentos de reta os pontos x 1 y 1 x 2 y 2 e assim por diante at o ltimo par de pontos gt x 1 4 7 11 y 12 6 15 7 gt plot2d x y 1 2 3 4 5 6 7 8 9 10 11 Figura 228 Exemplo de gr fico obtido com plot2d A Figura 228 mostra um exemplo de gr fico obtido com o comando plot 2d outro exemplo est na Figura 229 que mostra que pol gonos arbitr rios podem ser tra ados com plot 2d Uma infinidade de par metros pode ser utilizada no comando plot 2d determinando cores e espessuras de linhas tracejados escalas etc Neste curso n s veremos apenas comandos b sicos voc pode usar o help do Scilab para saber mais e obter um gr fico com um acabamento melhor Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 125 gt X 2534 y 3147 gt plot2d x y Figura 229 Outro exemplo de gr fico obtido co
173. ento de algoritmos pois expressa de forma natural o seu comportamento e Fun es s o uma importante ferramenta de modulariza o Seu uso permite o desenvolvimento seja em momentos separados seja por pessoas diferentes Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Notas Finais e Pr ximos Passos 200 Com o dom nio de uma linguagem de programa o n s pudemos atacar problemas de transforma o de informa o muito mais elaborados Problemas de transforma o de informa o s o em princ pio resolvidos por algoritmos m todos que prescrevem sequ ncias de transforma es elementares e que s o convenientemente implantados por programas de computadores no nosso caso programas Scilab Usando a linguagem Scilab n s vimos diversos algoritmos para solu o de problemas como leitura processamento e escrita de dados usando inicialmente teclado e monitor para pequenos volumes de dados e depois arquivos para grandes volumes de dados Para dois problemas cl ssicos de transforma o de informa o n s vimos diversas solu es a pesquisa por um valor em um vetor e a ordena o de um vetor N s vimos que algoritmos podem diferir e muito em sua efici ncia no uso de recursos computacionais como tempo de execu o ou quantidade de mem ria O termo complexidade computacional de um algoritmo empregado para caracterizar suas exig ncias destes recursos como uma fun o d
174. eparar que o Logisim criou o circuito SomaUm como um sub circuito o que indicado no painel de navega o veja a seta na Figura 78 N s vamos agora utilizar O SomaUm como um componente para construir o circuito SomaTr s o que pode ser feito ligando tr s circuitos SomaUm em cascata Para isto clique com o bot o direito do mouse sobre o sub circuito main e escolha View Circuit Voc ver um circuito vazio Agora clique com o bot o esquerdo do mouse sobre o sub circuito SomaUm e coloque no painel de desenho 3 bloquinhos conforme a figura abaixo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 48 O bloquinho o circuito SomaUm representado aqui como um m dulo sem detalhes somente com as entradas e sa das Passe com o mouse sobre essas entradas e sa das O Logisim indica o nome de cada uma delas Como voc pode ver subimos de n vel Os detalhes do circuito SomaUm podem ser esquecidos O que nos interessa agora somente sua funcionalidade de somar 1 sua entrada Logisim main of Untitled File Edit Project Simulate Window Help somar E ui Base Gates Figura 79 O circuito SomaTr s Complete agora o seu circuito principal acrescentando entradas sa das e cabeamento conforme a figura acima A disposi o de entradas e sa das foi escolhida para facilitar sua leitura como um bin rio sem sinal Para obter entradas volta
175. epresentar 2 coisas distintas Um c digo uma conven o para a interpreta o de conjuntos de bits C digos importantes incluem o ASCII para a representa o de caracteres bin rios sem sinal bin rios em complemento de 2 para incluir tamb m n meros negativos e ponto flutuante As opera es booleanas NOT AND e OR realizam as transforma es simples de bits mas tudo o que um computador faz atrav s da composi o destas opera es Transistores podem ser utilizados para implantar circuitos chamados portas l gicas que realizam as opera es booleanas Transistores s o implantados de forma 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 portas l gicas para transforma o de informa o entretanto limitado por raz es pr ticas Para a soma de dois inteiros de 32 bits ter amos uma tabela da verdade com 264 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
176. er executado Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx
177. ertendo a 1 O transistor funciona como condutor perfeito Quando a 1 o transistor funciona como condutor perfeito e obtemos a 0 pois o contato com o ponto de terra estabelecido Fonte O 2 a b O Terra Figura 47 Uma porta NOR com transistores Uma porta NOR constru da com o arranjo de transistores mostrado na Figura 47 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 0e b 0 Fonte ab a b Terra Figura 48 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 48 Aqui a sa da a b s ser igual a zero quando tivermos a 1e b 1 valores que fazem com que a sa da esteja conectada ao ponto de terra Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 33 Figura 49 Porta AND com 3 transistores Para obter uma porta AND usando transistores basta inverter a sa da de uma porta NAND como mostrado na Figura 49 Uma porta OR pode tamb m ser obtida conectando a sa da de uma porta NOR com a entrada de uma porta NOT 2 2 3 Introdu o ao Logisim O Logisim um simulador de circuitos l gicos que voc deve baixar pela Internet no endere o http ozark hendrix edu burch logisim e ins
178. es IOPC 2011 1 4 docx Algoritmos 184 Figura 348 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 as folhas s o os n s com uma nica permuta o de ndices O n mero de compara es realizadas por um algoritmo no pior caso a maior profundidade dessas folhas N s sabemos que 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 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 349 Uma rvore bin ria de profundidade p tem no m ximo2P folhas N o dif cil acreditar que uma rvore bin ria de profundidade p tem no m ximo 2 elementos fato ilustrado pela Figura 349 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 log gt n log 1 log2 2 log gt n Mas gt log2 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 e x n como mostra a Figura 350 Introdu o Organiza o e Programa o de Computadores IO
179. es 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 concluir que a chave n o consta da tabela A denomina o de pesquisa bin ria vem do fato da divis o do tamanho do problema por 2 a cada passo do algoritmo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 158 function p BinarySearch key table low high 1f high lt low then p 1 else m int low thigh 2 if key table m then p m else 1f key lt table m then p BinarySearch key table low m 1 else p BinarySearch key table m 1 high end end end endfunction Figura 296 A fun o recursiva BinarySearch A Figura 296 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 if key lt table m then high m end end if key table high then position high else if key table low then position low else position 1 end end endfunction Figura 297 A fun o binSearch A fun o bin
180. ese maior que mdc a b o que contradiz a defini o de m ximo divisor comum Sabemos tamb m que mdc a a a para qualquer a inteiro positivo Com isso podemos construir o programa da Figura 175 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 103 input a input Db m while a lt gt b if a gt b then a b else b b a end end printf mdc d d amp d m n a Figura 175 Programa para c lculo do m ximo divisor comum pelo algoritmo de Euclides 3 1 5 Valores L gicos e Strings Uma vari vel Scilab pode armazenar tamb m valores l gicos correspondentes a verdadeiro e falso denotados pelas constantes Scilab t e f true e false ou T e F A Figura 176 mostra um exemplo de atribui o de valores l gicos a vari veis usando a console do Scilab Figura 176 Atribuic o de valores l gicos a vari veis na console do Scilab Vari veis com valores l gicos podem ser parte de express es l gicas que usam os operadores l gicos NOT amp AND e OR definidos como voc pode esperar exatamente como na Tabela 9 p gina 29 Figura 177 Exemplos de uso dos operadores l gicos not amp and e or na console do Scilab Al m de valores l gicos vari veis Scilab podem armazenar dados n o num ricos Na Figura 178 n s vemos exemplos de como atribuir sequ ncias de caracteres o termo usado em ingl s st
181. etaflops isto mil trilh es de opera es aritm ticas por segundo Como curiosidade o RoadRunner utiliza chips circuitos integrados usados na PlayStation 3 da Sony A cada seis meses uma lista com os maiores computadores do mundo publicada no site da organiza o Top500 8 Na lista de novembro de 2010 pela primeira vez o computador mais possante n o era produzido nos Estados Unidos Sinal dos tempos o primeiro lugar da lista foi ocupado chin s Tianhe 1A com um desempenho de 2 6 petaflops Vale a pena visitar este site que cont m dados e an lises interessantes sobre a evolu o dos supercomputadores denomina o que a ind stria d a computadores como o Blue Gene RoadRunner ou Tianhe 1A Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Introdu o 2 Figura 2 O supercomputador Blue Gene 9 Com a r pida evolu o da eletr nica poderoso hoje normal amanh fraco depois de amanh Para ter alguma utilidade o termo for osamente relativo poca um supercomputador um computador que figura dentre os mais poderosos do mundo em sua gera o Courtesy IBM www ibm com 5 o O e SS Es ER Figura 3 O supercomputador Mark I 10 Neste sentido o Mark I Figura 3 de 1944 executando apenas 3 opera es aritm ticas por segundo era mais super que o Blue Gene ou que o Tianhe 1A pois era um dos nicos computadores
182. eve o conceitoB ou Paulo com 90 pontos voc obteve o conceito A Tabela 15 Pontos e Conceitos Pontos Conceito A 80 lt Pontos lt 90 70 lt Pontos lt 80 40 lt Pontos lt 60 0 lt Pontos lt 40 60 lt Pontos lt 70 D Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 108 O programa PontosConceito sce apresentado na Figura 188 atende a esta especifica o acrescida da suposi o de que o usu rio ir digitar sempre valores entre O e 100 Neste programa voc deve observar que e A leitura do nome e dos pontos do aluno id ntica utilizada no programa PassouNaoPassou sce e Seo lt bloco sen o gt do primeiro if chegar a ser executado porque temos Pontos lt 90 e poristo basta verificar que Pontos gt 80 para concluir que o conceito B e Seo lt bloco sen o gt do segundo i f chegar a ser executado porque temos Pontos lt 80 e por isso basta verificar que Pontos gt 70 para concluir que o conceito C e O mesmo racioc nio se aplica aos outros ifs at o mais interno onde o lt bloco sen o gt n o necessita de mais testes para concluir que o conceito F e Detalhe mas muito til o printf no fim do programa ilustra o uso de para indicar ao Scilab que um comando se prolonga por mais uma linha Leitura do nome do aluno Nome input Seu nome por favor Leitura dos pon
183. evidentes Amplitude W Original Signal Amplitude Sampled Signal 4 0 0 0 4 0 0 e00 A00 ROD agi 1000 0 e 400 ii a 1000 Time ns Time ns al tsample 612 MHz al E t Resolution Bit M Show Sampling Points isamplej 1620 ns Ww Show Sampled Signal Show Quantization Error Figura 16 Digitaliza o com frequ ncia de amostragem insuficiente produzindo um sinal completamente distorcido Sinal amostrado com 8 bits e frequ ncia da amostragem 6 17 MHz Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Introdu o 11 A qualidade da digitaliza o depende e dafrequ ncia da amostragem e e da precis o com que feita cada amostragem Se diminuirmos a frequ ncia de amostragem o resultado pode ser desastroso como mostrado na Figura 16 se aumentarmos a qualidade melhora Amplitude v Original Signal i Sampled Signal RR 0 200 400 600 800 1000 0 200 400 600 800 1000 Time ns Time ns gt l f sample 200 00 MHz a E gt l Resolution Bit 7 Show Sampling Points sample 5 0 ns MV Show Sampled Signal Show Quantization Error Figura 17 A qualidade da digitaliza o melhora com a frequ ncia de amostragem Sinal amostrado com 8 bits e frequ ncia de amostragem de 200 MHz Na Figura 17 vemos o mesmo sinal sendo digitalizado com uma frequ ncia de amostragem bem maior O sinal amostrado j est bem pr ximo do sinal original Podemos sempre te
184. evis o meteorol gica para o dia seguinte mas poss vel que ele gaste mais do que um dia nesta tarefa o que anula o valor da informa o produzida Da mesma forma se um computador tem a seu encargo produzir informa o para ser exibida como um filme uma velocidade abaixo da necess ria torna inaceit vel o seu emprego System 64 Racks 64x32x32 Rack 32 Node Cards Node Card 32 chips 4x4x2 16 compute 0 2 IO cards 180 360 TF s 32 TB 2 8 5 6 TF s 512 GB Compute Card chips 1x2x1 ge 4 3 o 907 180 GF s Chip 16 GB 2 processors Gy 5 6 11 2 GF s 10 GB 2 8 5 6 GFis 4 MB Figura 5 M dulos sub m dulos sub sub m dulos do Blue Gene A Figura 5 nos permite entender melhor a estrutura do Blue Gene e O sistema completo tem 64 racks pequenas torres que ficam abrigadas nos grandes blocos do computador e Cada rack tem 32 n s computacionais e Um n computacional abriga 16 placas computacionais e em alguns casos at 2 placas de entrada e sa da de dados e Cada placa computacional tem duas pastilhas chips de circuitos integrados e Cada circuito integrado abriga dois processadores que s o os circuitos que efetivamente realizam c lculos computacionais Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 4 Na Figura 5 as sucessivas decomposi es param por aqui mas na verdade o processador ainda uma estrutura bastant
185. existentes no mundo Seus concorrentes eram m quinas de calcular mec nicas Figura 4 Alan Turing 11 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 3 Como veremos computadores transformam informa o Um fato muito importante sobre computadores que desde que meios de armazenamento externo de informa o discos 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 realiz veis por micro e supercomputadores s o as mesmas que um dispositivo te rico a m quina de Turing capaz de fazer Este dispositivo 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 12 alguns anos antes do funcionamento do primeiro computador eletr nico O conjunto das transforma es de informa o poss veis o mesmo para computadores velozes e lentos mas a velocidade com que a informa o transformada pode diferir de ordens de grandeza e a velocidade determina em grande parte o seu valor Qualquer computador pessoal capaz de rodar um programa de pr
186. forma o A para Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 27 codifica o para n meros negativos conhecida como sinal e amplitude bastante natural Basta tomar o bit mais esquerda e interpret lo como o sinal do n mero se for O 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 Codifica o com Deslocamento Uma outra possibilidade para representar n meros negativos est ilustrada na Tabela 7 A conven o adotada de interpretar um conjunto de bits como a representa o de um valor igual ao valor de sua interpreta o como bin rio sem sinal deslocado por um fator a ser subtra do Tabela 7 Representa o de n meros negativos por deslocamento Decimal Bin rio N mero Complemento de 2 A absoluta maioria dos computadores utiliza entretanto uma codifica o conhecida como complemento de 2 para a representa o de n meros inteiros negativos A Tabela 8 mostra a codifica o em 3 bits dos inteiros entre 4 e 3 usando complemento de 2 Tabela 8 Codifica o em complemento de 2 com 3 bits O v
187. forma com que uma pessoa um programador pensa em resolver um problema de transforma o de informa o e e poder ser executado pelo processador isto por um circuito digital composto Instru es Programador constr i PRESA Quo a eer Figura 380 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 e RS l s o diferentes EXPrESSE codifica es de Siam palipat ra e COME e e carregado executado e a na pela composto Instru es PEE mo y Montagem AN era Instru es ne comporem por em Assembler ta p r a i jPa anias plie ko a nl Figura 381 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 cru repetidamente sq seguida por Figura 382 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 Introdu o Organiza o e Programa o de Computadores IOPC 20
188. gii 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 Programador Ee raso resolvido por Figura 378 Um programa resolve um problema de transforma o de informa o Considerando que queremos poder trocar com facilidade o programa que rege um computador a nica op o colocar programas em uma mem ria ao inv s de implement los com circuitos O termo software com o prefixo soft macio foi um neologismo criado para se contrapor a hardware mais duro constitu do por circuitos concretos Software muito mais flex vel Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 209 executado r pela cpu EM carregado na Figura 379 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
189. gitados pelo usu rio Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 95 para os coeficientes a b e c foram respectivamente 1 2 e 3 Estes valores levam a um negativo e o exemplo serve tamb m para ilustrar a naturalidade com que o Scilab trata n meros complexos 3 1 3 Oscomandos if eprintf Para enriquecer nosso repert rio de comandos Scilab vamos agora construir um terceiro programa que resolve equa es do 2 grau mas com as seguintes altera es na especifica o e O programa s dever calcular as ra zes quando elas forem reais e asa da do programa dever ser uma frase como As ra zes s o xxxx e xxxx quando as ra zes forem reais e sen o As ra zes s o complexas C lculo das ra zes de uma equa o de 20 grau a input Digite o valor de a b input Digite o valor de b c input Digite o valor de c delta b 2 4 a c if delta gt 0 then ri 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 Figura 156 O programa Eq2g3 sce A Figura 156 mostra o programa Eq2g3 sce que atende a essas especifica es Este programa introduz dois novos comandos if eprintf Repare que n o estamos usando ap s v rios dos comandos de atribui o o que suprime o eco autom tico e torna a sa da mais limpa 1f
190. gr fico da Figura 332 pode ser obtido na console do Scilab com os comandos mostrados na Figura 334 A diretiva axesflag 5 faz com que os eixos sejam tra ados no ponto 0 0 bexec exp sin sci gt x linspace 0 2 pi 101 gt y exp sin x gt bplot2d x y axesflag 5 Figura 334 Comandos para obter o gr fico da Figura 332 na console do Scilab Com isso n s j podemos construir um programa testador para a fun o bissecao conforme mostra a Figura 335 O programa permite experimentar com diversos valores de toler ncia comparando a raiz calculada com o valor de 7 com 10 casas decimais Clear exec exp sin sci exec bissecao sc1i tolerancia input inToler ncia while tolerancia gt 0 raiz bissecao exp sin 2 4 tolerancia printf Raiz 12 10 f An Pi 12 10fin raiz pi tolerancia input inToler ncia end Figura 335 O programa bissecao teste sce Um primeiro refinamento da fun o bissecao sci o loop que a cada passo reduz metade o intervalo que cont m a raiz Na Figura 336 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 cont nua e se f a f b lt 0 esta fun o calcula a raiz r com precis o menor ou igual ao valor de tol while b a gt tol
191. guiu 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 classeNP compreende os problemas onde dada uma resposta pode se verificar se ela 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 Determin stico Polinomial 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 ultra
192. gura 302 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 302 Primeiro refinamento da fun o OrdenaPorSele o Prosseguindo no refinamento vamos atacar inicialmente o problema da troca de valores entre duas posi es do vetor A Trocar os valores de duas vari veis x e y n o uma opera o bvia Sefizermosx y y x o0 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 elemento n s j desenvolvemos uma fun o parecida a Minimo Figura 268 p gina 139 que retorna tem como par metro de sa da o menor valor presente em um vetor Podemos aproveitar o seu c digo adaptando o aos requisitos que temos agora Precisamos de uma outra fun o que vamos chamar de MinimoPos que e procure o menor valor n o em todo o vetor de entrada mas em parte dele e e informe al m do menor valor a posi o onde foi encontrado Introdu o Organiza o e Programa o de Computadores IOPC 201
193. hexadecimal uma em cada linha Este arquivo deve ser carregado na mem ria de programa na unidade de controle da CPU 2 4 5 Desvios condicionais Com a micro instru o de desvio da CPU 1 n s conseguimos 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 dos 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 CC RAE IAN o Sinais Operando ACC Clear k Compare Clk ACC gt Dbus ACC Clk Oper gt Dbus Figura 131 Codifica o de micro instru es de desvio condici
194. i 1 length A B permutations OneOut A i nl nc size B for j 1 nl p p A i B j end end end endfunction function b OneOut A i x 1 length A b A x i endfunction Figura 356 A fun o permutations Ela faz uso da fun o OneOut que implementa a opera o de separar o i simo elemento do vetor e que um bom exemplo de uso das possibilidades oferecidas pelo Scilab para manipula o de matrizes apresentadas na Se o 3 2 9 p g 129 J podemos dar in cio ao desenvolvimento do programa principal A Figura 357 apresenta uma primeira vers o formada apenas por coment rios L a matriz de dist ncias Gera todas as rotas poss veis Calcula o custo de cada rota Seleciona a de menor custo Imprime o resultado Figura 357 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 a fun o 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 358 File Edit Format View Help D 2 4 2 Figura 358 Arquivo Distancias txt com dist ncias entre as cidades mostradas
195. i metro de um tomo de hidrog nio de 1 x 107 metros Para o n mero de Avogadro n s dizemos que a mantissa 6 02 e o expoente 23 A codifica o de n meros em ponto flutuante atribui a alguns dos bits do n mero o significado de um expoente n o de 10 mas de 2 como n o poderia deixar de ser Existe um padr o para ponto flutuante de aceita o total pela ind stria que o IEEE 754 Para n meros de precis o simples o IEEE 754 utiliza 32 bits sendo 1 bit para o sinal 0 positivo 1 negativo 8 para o expoente e 23 para a mantissa Para precis o dupla s o 64 bits 1 para o sinal 11 para o expoente e 52 para a mantissa Expoentes negativos s o representados pela conven o de deslocamento que j vimos Notando por s o sinal por x o valor do expoente interpretado como um bin rio sem sinal e por m o valor da mantissa tamb m interpretada como um bin rio sem sinal o valor representado por um n mero em ponto flutuante padr o IEEE 754 dado por V 1 xmx 2 onde D o deslocamento usado para expressar expoentes negativos valendo 127 para precis o simples e 1023 para precis o dupla A Figura 40 mostra um n mero em ponto flutuante de 32 bits 31 30 20 28 27 26 25 24 23 22 21 20 19 18 17 a6fasfiafasfaf safio 0 8 7 6 s a 3 2 1 0 BEGE po uk A e D N IanO mM o0 LN Ei LO to ANE 7822609 Figura 40 Um n mero em ponto flutuante com 32 bits O padr o IEEE 754 reserva expoentes s
196. idades de armazenamento de dados n o vol teis que sistemas operacionais como Windows ou Linux permitem que sejam recuperados pelo nome e pela posi o em uma organiza o hier rquica de diret rios Um arquivo criado por um programa e pode ser lido e modificado por outros programas programas que muitas vezes s o executados em outros computadores Existem muitos tipos de arquivos que podem ser manipulados por programas Scilab mas neste curso iremos aprender somente a trabalhar com arquivos ASCII isto arquivos que Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 111 normalmente s o leg veis por humanos e que podem ser editados usando programas como o Bloco de Notas do Windows Comandos b sicos para uso de arquivos no Scilab s o e uwigetfile que permite ao usu rio selecionar um arquivo navegando nos diret rios do sistema operacional e mopen emclose necess rios para iniciar e para terminar a manipula o de um arquivo por um programa Scilab e mfscanf emfprintf usados para ler e para gravar valores de vari veis em arquivos abertos e meof que permite testar se o fim de um arquivo eof vem de end of file j foi atingido A Figura 194 mostra a janela de navega o para escolha de um arquivo aberta no Windows Vista ap s a execu o de um comando uigetfile E uigetfile E a Recent Items Out Eq2g L outeg2g Portuguesngles J
197. ings formadas por algarismos n o s o n meros para o Scilab O string 3 1415926 na verdade armazenado como uma sequ ncia dos caracteres ASCII 3 1 4 etc e n o como um n mero de ponto flutuante como mostrado na Figura 40 Se tentarmos realizar opera es aritm ticas com strings de algarismos o Scilab ir emitir uma mensagem de erro apropriada Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 105 gt 2 3 1415926 I error 144 Undefiled operation for the given operands Figura 182 Strings formados por algarismos n o s o n meros para o Scilab Strings tamb m podem ser lidos pelo comando input como no exemplo Nome input Seu nome por favor Escrevendo dessa forma o comando input o usu rio deve digitar o string entre aspas poss vel eliminar a necessidade de escrita do string entre aspas usando o comando input com um par metro extra um string com o valor string como no comando input Seu nome por favor string gt Nome input Seu nome Seu nome Jose Undefined variable Jose Seu nome Jose Nome Jose gt Nome input Seu nome string Seu nome Jose Nome Jose Figura 183 Exemplos de uso do comando input na console do Scilab Vamos agora exercitar nossas novas habilidades fazendo um programa que e Leia o nome do aluno que responde por exemplo Jos e Leia
198. ins dos anos 70 Cleve Moler inventou uma linguagem Matlab voltada para o tratamento de matrizes que em 1984 foi lan ada comercialmente pela empresa MathWorks Matlab vem de Matrix Laboratory e um fen meno de sucesso entre engenheiros e cientistas O Matlab um interpretador isto um programa que executa programas por contraste com um compilador que traduz um programa em linguagem de alto n vel para linguagem de m quina Scilab a linguagem que adotamos neste curso desenvolvida desde 1990 por pesquisadores do Institut Nacional de Recherche en Informatique et Automatique o INRIA e da cole Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 87 Nationale des Ponts et Chauss es duas institui es francesas muito semelhante ao Matlab e fator essencial para sua escolha gratuito O Scilab tamb m um interpretador e encontra se atualmente na vers o 5 1 lan ada em fevereiro de 2009 Do ponto de vista da ci ncia da computa o Matlab e Scilab n o mereceriam destaque em uma galeria de linguagens de programa o Entretanto a facilidade que oferecem para a constru o de pequenos programas voltados para engenharia e ci ncia n o encontra rival nas linguagens tradicionais como Fortran C ou Java Antes de entrarmos na apresenta o do ambiente e da linguagem Scilab queremos colocar algumas observa es gerais sobre linguagens de programa o q
199. intf endfunction Figura 304 O programa MinimoPos teste e a fun o PrintMatrix A Figura 304 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 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 305 mostra uma sa da deste programa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 163 Figura 305 Uma sa da do programa MinimoPos teste Com a confian a adquirida sobre a fun o MinimoPos n s podemos chegar ao refinamento final da fun o SelectSort mostrado na Figura 306 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 1iMin temp end sA A endfunction Figura 306 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
200. ipad para abrir o programa TestaSoma sce e use o menu File Save as para salv lo com o nome TestaMinimo sce Use tamb m o menu Windows Split side by side para conseguir trabalhar simultaneamente com os dois arquivos do seu programa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 139 Muito bem temos o cabe alho da fun o Minimo temos um programa testador e agora vamos desenvolver a fun o propriamente dita Vamos procurar seguir um racioc nio similar ao utilizado para o c lculo da soma dos elementos de um vetor Suponhamos que uma vari vel m contenha em um dado momento o menor valor entre os primeiros k elementos do vetor Para avan ar simples e comparamos o valor dem com o valor de A k 1 e semfor menor ou iguala A k 1 seu valor j tamb m o menor entre os primeiros k 1 elementos do vetor podem haver empates mas isto n o um problema e pode permanecer inalterado e semfor maior que A k 1 devemosfazerm A k 1 para que seu valor passe a ser o menor entre os primeiros k 1 elementos do vetor 1 2 3 4 5 6 7 34 56 27 45 12 44 34 Para k 83 min menor 34 27 27 1I21 3 4 5 6 7 84 56 27 45 12 44 34 Para k 4 min menor 27 45 27 Figura 267 Dois passos do algoritmo que encontra o menor valor presente em um vetor A Figura 267 ilustra dois passos deste algoritmo N o dif cil acreditar q
201. iplexador 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 94 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 55 Figura 94 Um multiplexador de 2 bits obtido usando multiplexadores de 1 bit A Figura 95 mostra o circuito demultiplexador de 1 bit obtido a partir da tabela da verdade da Figura 92 Figura 95 Circuito demultiplexador de 1 bit Demultiplexadores com uma largura de endere o n mero de bits maior tamb m podem ser obtidos com arranjos hier rquicos similares como mostra a Figura 96 Figura 96 Circuito demultiplexador de 2 bits obtido a partir de demultiplexadores de 1 bit Como conclus es de nosso estudo de circuitos combinat rios n s temos e Opera es l gicas podem ser usadas para realizar opera es aritm ticas e Circuitos combinat rios podem ser constru dos a partir de tabelas da verdade e Circuitos combinat rios tamb m podem ser constru dos como montagens de m dulos mais simples como somadores ou comparadores den bits constru dos a partir de somadores ou comparadores de 1 bit e O fluxo de informa es em um circuito pode ser conduzido por multiplexadores ou demultiplexadores Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 56 2 3 Circui
202. ispositivos externos apertando convenientemente os bot es SetlnFull para avisar que um valor de entrada est pronto para ser lido e SetOutEmpty para avisar que um valor colocado anteriormente no registrador Output j foi consumido Programas podem ser executados instru o por instru o o que muito til para a depura o debug de erros Para isto preciso colocar o valor 1 na entrada Debug e apertar o bot o Run a cada vez que uma nova instru o carregada no registrador de instru o Se retirarmos a Unidade de Controle da CPU Pipoca retornando emiss o manual dos sinais de controle e se retirarmos tamb m os circuitos de sincroniz o de entrada e sa da teremos um circuito como o da Figura 395 Comparando com o circuito da Figura 111 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 e
203. isto na Se o 4 4 2 um exemplo para a solu o de sistemas de equa es lineares para interpola o para solu o de equa es diferenciais para integra o num rica e v rios outros A preocupa o com erros de arredondamento e de truncamento e com a sua propaga o tratada com muito maior profundidade Algoritmos e Estruturas de Dados Esta rea trata extensamente de algoritmos para ordena o e pesquisa dos quais n s vimos alguns exemplos do uso de estruturas de dados mais flex veis que matrizes como listas rvores e grafos do casamento de padr es sempre com um tratamento bem mais rigoroso dos aspectos relacionados complexidade Programa o Orientada a Objetos A programa o orientada a objetos ou POO oferece estruturas lingu sticas para uma defini o elegante de dados e de formas de intera o A programa o torna se mais compacta e mais segura permitindo um intenso reaproveitamento de c digo Nenhum programador mais s rio pode se permitir desconhecer a POO que foi introduzida j em 1967 com a linguagem Simula Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Notas Finais e Pr ximos Passos 201 e depois explorada com Smalltalk Estas duas linguagens ainda sobrevivem mas o uso de C e de Java hoje muito maior Bancos de Dados Bancos de dados s o sistemas de armazenamento que extendem muito o conceito de arquivos Um SGBD Sistema de Ger ncia de B
204. ivo no seu diret rio de trabalho com o nome Soma sci Com isto j escrevemos o cabe alho da fun o ou seja e demos um nome significativo fun o e determinamos e demos nomes para seus par metros formais de entrada e de sa da Como vimos par metros formais s o utilizados no c digo da fun o par metros reais s o os par metros utilizados no momento da chamada da fun o Tanto para entender melhor a rela o entre par metros formais e reais como para testar a nossa fun o vamos construir um programa que ir utilizar a fun o Soma gerando e calculando a soma dos elementos de vetores aleat rios Para isto no Scipad use o menu File New digite um programa como o da Figura 259 e salve o com o nome TestaSoma sce Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 136 Programa que testa a fun o Soma int 1l0 rand 1 4 sa Soma a printf in Soma g sa int 1l0 rand 1 6 sb Soma b printf in Soma g sb c int 10 rand 1 9 sc Soma c printf in Soma g sc Figura 259 O programa TestaSoma sce O programa ir gerar 3 pequenos vetores de inteiros entre O e 10 e para cada um deles ir imprimir seus valores e tamb m o valor calculado pela fun o Soma Repare que o foi omitido nos comandos de cria o dos vetores aleat rios para que o Scilab imprima automaticamente os seus valores Repare tam
205. j q j f j f i i i Figura 28 Mem ria de n cleos de ferrite usada em 1964 pelo supercomputador CDC 6600 com 64 palavras de 64 bits em 11x11 cm 16 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 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 17 mem ria secund ria quase sempre formatada em arquivos e diret rios que prov m uma abstra o essencial para o seu uso Figura 29 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 18 Figura 30 Armazenamento terci rio com uma grande cole o de fitas magn ticas
206. ja uma repeti o de comandos A execu o do comando for j 1 5 lt bloco for gt end resulta em 5 execu es do bloco de comandos lt bloco for gt Na primeira execu o a vari vel j recebe o valor 1 na segunda o valor 2 e assim por diante at a ltima execu o onde j recebe o valor 5 Muito bem j temos condi es de compreender o programa Fatoriall sce mostrado na Figura 161 Repare no uso no printf do c digo de formato d apropriado para a convers o de vari veis com valores inteiros Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 98 C lculo do fatorial de n Leitura de n n input Valor de n C lculo do fatorial fat 1 for i l n fat fat i end Impress o do resultado printf O fatorial de d d n fat Figura 161 Programa Fatoriall sce Mas a parte central do programa o loop destacado em vermelho na figura A vari vel fat inicializada com o valor 1 Na primeira passagem pelo loop i igual a 1 e fat recebe o valor 1 1 Na segunda passagem i iguala 2 e fat recebe o valor 1 2 igual a 2 na terceira passagem fat recebe o valor 2 3 igual a 6 na quarta passagem o valor 6 4 igual a 24 na quinta 24 5 e assim por diante Ou seja pelo fato de a cada passagem a vari vel fat receber como valor seu valor anterior multiplicado por i na i sima execu o do corpo do for fat pas
207. lgoritmos a pesquisa sequencial e a Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 156 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 n mero primo pesquisando por ele na tabela e O programa deve parar quando o n mero lido for O zero 4 2 1 Pesquisa Sequencial A Figura 293 mostra o programa Veri ficaPrimos3 sci onde podemos notar que e Os primeiros comandos fazem a leitura da tabela de n meros primos e O programa apresenta a nossa velha conhecida estrutura de repeti o controlada pelo usu rio e A verifica o efetiva da primalidade foi deixada para a fun o Primo3 que tem como par metros de entrada o n mero digitado pelo usu rio e a tabela lida do arquivo Programa para dete o de n meros primos exec Primo3 sci exec segSearch sci arqTab uigetfile txt pwd Arquivo com Tabela tabPrimos fscanfMat argTab n
208. linguagem Scilab nos foram sugeridas pelos Professores Regina Helena Bastos Cabral e Ivan Moura Campos Os dois me fizeram conhecer o Matlab me convenceram da necessidade de pr ticas mais intensivas e tamb m da viabilidade de provas online A Professora Regina j aplicava estas t cnicas com enorme sucesso em C lculo Num rico Os monitores que trabalharam na disciplina em sua primeira oferta em 2007 foram Maxstaley Neves e Henrique Chevreux Sem eles eu n o teria conseguido enfrentar a mir ade de detalhes t cnicos do Logisim Moodle e Scilab todos ent o sistemas novos para mim Mas muito mais do que isso eles forjaram para a monitoria uma postura ntegra competente e criativa postura que souberam transmitir aos outros monitores Harlley Augusto de Lima Phillippe Samer Lallo Dias Rafael Bonutti Douglas Max Duarte Batista Luis Cl udio Dutra Martins Rafael Vieira Carvalho e Thiago Moreira Torres A aplica o da metodologia faz uso intenso da infra estrutura de tecnologia da informa o da UFMG competentemente administrada pelo Centro de Computa o pelo Laborat rio de Computa o Cient fica pelo Laborat rio de Recursos Computacionais do Instituto de Ci ncias Exatas e pelo Centro de Recursos Computacionais do Departamento de Ci ncia da Computa o Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Introdu o 1 1 Introdu o 1 1 Computadores Este um texto sobre organiz
209. lo Scilab Inicialmente apresentado o Scilab como uma linguagem de alto n vel com vari veis express es aritm ticas e comandos de atribui o S o vistas vari veis que cont m valores num ricos 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 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 Jque cont m dados obtidos em um laborat rio de observa o de ondas marinhas Figura 33 Introdu o Organiza o e Programa
210. lorar em exerc cios e em outros exemplos neste texto e lt lista de express es gt uma lista de express es separadas por v rgulas que s o calculadas no momento da execu o do comando e as express es na lista s o mapeadas uma a uma nos c digos de formato na mesma sequ ncia em que aparecem na lt frase gt e a senten a impressa obtida pela substitui o do valor da express o na posi o marcada pelo c digo de formato No comando printf As ra zes s o g e g rl r2 as duas express es na lista s o muito simples formadas por uma vari vel A express o r1 mapeada no primeiro g e a express o r2 mapeada no segundo g A Figura 160 mostra uma sa da do programa Eqg2g3 sce onde se pode ver o efeito da execu o deste comando Digite o valor de a 3 Digite o valor de b 4 Digite o valor de c l delta 4 ri 0 3333333 r2 1 As ra zes s o 0 333333 e 1 Figura 160 Uma sa da do programa Eq2g3 sce 3 1 4 Loops os comandos for e while Vamos agora atacar um outro problema o c lculo do fatorial de um n mero a ser lido em tempo de execu o O Scilab oferece diretamente a fun o factorial n que j faz este c lculo mas aqui n s estamos interessados em programar esta fun o N s sabemos quen 1 x 2 x X n e que portanto teremos que realizar repetidas multiplica es para obter o fatorial Este comportamento pode ser obtido com o uso do comando for que prescreve um loop ou se
211. 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 o registrador 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 ocircuito Timing inicializado pela entrada Reset Clock e alimentado pelo CLOCK que ciclicamente oferece os sinais tO t1 e t2 e o registrador Signals que armazena os sinais utilizados no controle do fluxo de dados da CPU e um splitter ligando o registrador Signals aos pinos de sa da e um decodificador de c digo de instru o e um decodificador de modo de endere amento e portas l gicas que essencialmente implementam decis es de desvio no fluxo de micro instru es e e alguns leds que animam a festa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 224 ranh Tabi
212. m 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 276 n input n use n lt 2 se quiser parar while n gt 2 Encontra o menor primo gt n e imprime o resultado printf O menor primo gt amp d d n MenorPrimoMaiorOulgualaA n L n n input n use n lt 2 se quiser parar end Figura 276 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 MenorPrimoMaiorOulIgualaA que ainda n o existe N o existe mas j demos a ela um nome significativo e especificamos que e A fun o tem um nico par metro de entrada que o n mero digitado pelo usu rio e A fun o deve retornar o n mero primo que desejamos Ou seja j definimos o cabe alho da fun o Menor PrimoMaiorOulIgualA 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
213. m plot2d Para se obter um gr fico da fun o seno podemos fazer como mostrado na Figura 230 Primeiramente gerado o vetor x de abscissas depois o vetor y obtido pela aplica o da fun o sin ao vetor x eo comando plot2d x y gera o gr fico gt x 0 0 8 3 pi 0 1 2 3 4 5 6 7 8 9 Figura 230 Gr fico da fun o seno com espa amento excessivo A curva obtida n o merece bem este nome est toda quebrada com cotovelos vis veis o n mero de pontos utilizado para as abscissas foi pequeno para a nossa acuidade visual Um resultado melhor e que mostra que a gera o de um vetor pela fun o linspace mais confort vel nessas ocasi es est mostrado na Figura 231 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 126 gt x linspace 0 3 pi 101 gt y sin x gt plot2d x y 32 Figura 231 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 n mero de linhas de x faz um gr fico de x versus cada coluna de M gt x linspace 0 3 pi 101 gt plot2d x sin x sin 2 x sin 3 x O 0 8 V 0 6 0 4 0 27 0 0 0 2 0 4 0 6 2 3 4 5 6 7 8 i 0 1 9 10 Figura 232 Gr fico com v rias curva
214. mento de ndice 1 for menor que o elemento de ndice 2 somente as permuta es onde o ndice 1 precede o ndice 2 devem ser consideradas sen o somente as permuta es onde o ndice 2 precede o ndice 1 Novas compara es s o feitas e cada uma delas reduz ou melhor pode reduzir o n mero de permuta es poss veis A ordena o est pronta quando este processo reduz o conjunto de possibilidades a uma nica permuta o Diagramas como o da Figura 346 s o chamados rvores de decis 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 seus 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 346 mostra uma rvore bin ria isto uma rvore onde cada n tem no m ximo 2 filhos Figura 347 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 348 mostra as profundidades dos n s da rvore da Figura 347 Introdu o Organiza o e Programa o de Computador
215. microinstru o corrente jmp jmpNext ou return ou jsr o a microinstru o corrente jmplmmediate e o modo de endere amento Immediate ou a microinstru o jmpDirect e o modo de endere amento Direct ou a microinstru o jmplIndirect e o modo de endere amento Indirect o a microinstru o corrente jmpGT e D gt ACC 1 ou jmpEQ e D ACC 1 ou jmpLT e D lt ADD 1 o a microinstru o corrente jmplInFull e InFull 1 ou jmpOutEmpty e OutEmpty 1 se a microinstru o for de desvio condicional e a condi o estiver gt satisfeita com o valor se a microinstru o for do tipo Signals com o valor 3 se a microinstru o FP for de desvio condicional e a condi o n o estiver Po com o valor se a microinstru o m for jmp ext com o valor amp e da saida de Carga do ocasiona Registrador mPC gt se a microinstru o r for return com o valor Figura 410 A es em t2 Quanto ao conte do da entrada New Address do mPC isto quanto ao endere o da pr xima microinstru o a ser executada no caso de desvio ele ser Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 228 o o conte do da mem ria Branch Table no endere o dado por OpCode se a microinstru o corrente for jmpNext q endere o na Branch Table da posi o que cont m 18 informa A
216. mo o mostrado na Figura 71 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 ating vel N o poss vel testar completamente um programa e nem poss vel compreender completamente sua estrutura E agora Jos Bom isso mesmo N o existe uma boa sa da A ind stria de software investe em qualidade de desenvolvimento em testes mas quase sempre vende programas sem garantia Neste curso n s iremos trabalhar com programas pequenos todos com menos de 50 linhas A convic o de corre o ser tratada tanto com argumentos estruturais como por testes 4 1 3 Efici ncia e Complexidade Computacional Para uma mesma especifica o poss vel encontrar algoritmos que apresentam enormes diferen as em sua efici ncia O temo complexidade computacional ou simplesmente complexidade usado para designar como o uso de recursos computacionais por um algoritmo varia em fun o de seus dados de entrada Complexidade temporal refere se efici ncia em tempo de execu o complexidade espacial refere se efici ncia no uso de mem rias Na Ci ncia da Computa o um algoritmo tem
217. n meros Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Introdu o 23 Como um exemplo queremos encontrar o menor valor presente em uma cole o de n meros Com 10 n meros como mostrados na Figura 37 f cil podemos faz lo por inspe o visual Mas como encontrar o menor valor entre digamos 50 000 n meros Para isso precisamos de um algoritmo isto de um m todo que tenha como informa o de entrada a cole o de n meros e como sa da o menor valor ali presente Em programa o uma cole o de n meros chamada vetor O primeiro elemento de um vetor A notado A 1 o quinto A 5 o n simo A n Queremos portanto construir um algoritmo que encontre o menor valor em um vetor de tamanho arbitr rio Para isso vamos come ar com o caso mais simples poss vel um vetor com um nico elemento que obviamente o menor elemento presente no vetor Tudo bem mas queremos trabalhar com vetores grandes de verdade Para avan ar usamos indu o Suponhamos que de alguma forma descobrimos que o menor valor entre os k primeiros elementos de um vetor de tamanho n m Podemos ent o inferir que o menor valor entre os k 1 primeiros elementos de 4 o menor entrem e A k 1 Como j sabemos encontrar o m nimo em um vetor de 1 elemento k 1 sabemos encontrar o m nimo em um vetor com 2 elementos como sabemos encontrar o m nimo em um vetor de 2 elementos sabemos encontrar o m
218. n Interchange uma dessas conven es de ampla aceita o em toda a ind stria da computa o A Tabela 3 mostra partes do c digo ASCII adotado desde os anos 60 para a representa o de caracteres como A a etc para o espa o em branco sim o espa o exige uma representa o e para os chamados caracteres de controle como line feed para indicar uma troca de linhas O c digo ASCII oficial usa 7 bits o que permite 2 128 combina es Tendo sido proposto por norte americanos no in cio da era dos computadores n o de se estranhar que ali n o haja provis o de c digo para caracteres acentuados ou cedilhas Estes s o contemplados no c digo ASCII estendido que usa 8 bits para representar 256 caracteres Tabela 3 Exemplos do c digo ASCII Caractere End of Transmission 0000100 4 Space 0100000 32 0101000 0101011 ES 0110000 0110001 0110010 0110011 10 40 43 48 49 50 51 1000001 65 66 67 97 98 99 1000010 1000011 1100001 1100010 1100011 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 ativas e mortas do mundo O 1 2 3 A B C a b 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 mer
219. na Figura 214 gt x 1 2 3 4 gt 2 ans Ta 10 22 15 Ma D ans m 1 9 16 Figura 215 Exponencia o matricial versus exponencia o elemento a elemento Quanto exponencia o o Scilab interpreta x 3 como x x x ou seja como o produto matricial triplo da matriz x por ela mesma o que s faz sentido quando x uma matriz quadrada J x 3 interpretadocomox x x ou seja O produto triplo da matrizx por ela mesma feito elemento a elemento opera o que pode ser feita com matrizes de dimens es arbitr rias A Figura 215 mostra um exemplo da diferen a entre as duas opera es gt a 1 2 3 4 5 6 Figura 216 Transpondo uma matriz Se a uma matriz a designa a matriz transposta de a como mostrado na Figura 216 Ta Za La LAY DIA inv A IA CE RERASE Ls tuga De Lo Latas 0 53333353 0 5454545 0 2424242 a DdoU SUA 0 16818182 Figura 217 A fun o inv que produz a matriz inversa A fun o inv produz a matriz inversa da matriz dada como argumento A Figura 217 mostra um exemplo de sua utiliza o Quando multiplicamos uma matriz por sua inversa esperamos obter a matriz identidade mas n o bem isso o que mostra a Figura 218 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 121 gt A IA La i 4 441D 16 Le LIOD L6 Lelio Lo a e
220. na Figura 351 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 359 onde est destacado o comando que faz as substitui es Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 189 L a matriz de dist ncias Dist fscanfMat uigetfile txt pwd Dist ncias Substitui 1 por inf Dist Dist 1 inf Figura 359 Leitura do arquivo com dist ncias Para gerar as rotas e calcular seus custos vamos usar a fun o permutations da Figura 356 e tamb m uma fun o cost que recebe como par metros de entrada uma matriz D de dist ncias e um vetor path que cont m os ndices das cidades que comp em uma rota nl nc size Dist nl deve ser igual a nc Rotas permutations 2 nc NL NC size Rotas for i 1 NL Custo 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 i 1 end endfunction Figura 360 Obten o de todas as rotas e c lculo dos custos Nos trechos de c digo mostrados na Figura 360 voc deve reparar que e o vetor Rotas recebe todas as permuta es das cidades de 2 an e n o de 1 an pois a cidade 1 sempre o ponto de partida e de chegada e a rota enviada passada como par metro real para a fun o cost o vetor formado pela cidad
221. na de nte endere o da primeira das microinstru es que implementam a instru o na Carga do se a microinstru o Registrador for jmpNext com o valor mPC da saida de Figura 411 Efeito da micro instru o jmpnext o o conte do do registrador Return Address se a microinstru o corrente for return o o conte do do campo operando da microinstru o se esta for jmp ou jsr ou se a microinstru o for jmp lt condi o gt e lt condi o gt for igual a 1 Branch Table ADD COMPARE HALT INPUT JMP JMPEQ JMPGT JMPLT LOAD OUTPUT STORE SUB Micro programa Micro instru es para ADD Micro instru es para COMPARE Micro instru es para HALT Figura 412 A Branch Table e o micro programa A Figura 412 mostra o relacionamento entre a Branch Table e o micro programa Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 229 8 O Micro Programa constr i v pi t composto par Microinstru es em microAssembler passam p Montagem de pin Microinstru es Microprograma Bin rio gravado na 1 Montagem da Branch Table Branch Table era je 3 gravada m ER Figura 413 Constru o do micro programa e da Branch Table Micro programas tamb m s o feitos por humanos os projetistas do computador O processo de micro programa o consiste
222. ndere o b mec armazenado no coloca a microinstru o lida no Figura 403 Leitura de uma micro instru o A execu o da micro instru o pode alterar os valores dos registradores da unidade de controle e em particular do registrador Signals que como vimos emite os sinais de controle para a CPU e do registrador mPC determinando assim a pr xima micro instru o a ser executada pode E id determina novo valor mec para pode p atualizar Signais Figura 404 Execu o de uma micro instru o O mIR tem a interpreta o de sua sa da dependente do tipo da micro instru o F informa se o tipo for Signals e informa Figura 405 Sa da do registrador mIR O ciclo de micro instru o comandado pelos sinais emitidos pelo circuito Timing Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 226 Cidode conduz Pk Microinstru o Clock gt alimenta e al produz e ciclicamente Figura 406 Sinais do ciclo de micro instru o O circuito Timing est mostrado na Figura 407 sendo similar ao circuito da Figura 115 Figura 407 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 t1 e t2 e Quanto tO passa de O para 1 veja o destaque em vermelho
223. ndo Desvia para a palavra apontada pelo operando se D ACC 1 Desvia para a palavra apontada pelo operando se D gt ACC 1 Desvia para a palavra apontada pelo operando se D lt ACC 1 Carrega o operando no acumulador Espera OutEmpty 1 e transfere o operando para o registrador Output faz OutEmpty O ransfere o valor de ACC para a palavra apontada pelo operando ubtrai o operando de ACC deixando o resultado em ACC VIOIDL o O O 5 D O O Ko I a o O fat D g O a D x v 5 a O O 5 D 04 c o Q O D 3 D 0 o O ALT PEQ MPGT PLT Cm N C go Estes c digos podem ser usados para novas instru es Nessa tabela e o campo Description descreve o efeito da instru o OMPARE 04 i O gJ O q O O O EI Desvia para a palavra apontada pelooperando tj ER Desvia para a palavra apontada pelo operando se D ACC 1 _ IMPEQ 5 Ea M OQO E OpCode2 O Ww w W MIN pa alels Julnfsjsjsls a s 5 Branchadarie Q Q pa Q O pa O O O elle O O HIS e e e o OJO Ole IO Om OIm Oe eje palha OIO eO e o campo Mnemonic cont m c digos para cada instru o que s o empregados por um programador ao construir um programa e ocampo OpCode10 enumera as instru es e com isso fornece um c digo para cada uma delas e ocampo OpCode2 cont m os mesmos valores de OpCode10 mas codificados em bin rio de 4 bits destinados ao
224. ndos sejam fornecidos pela unidade de controle ex calculadora nos momentos adequados 23 2 2 s 17 16 1s 14 u3 12 as 10 Es E Operando Oper gt Bus Figura 120 Codifica o de operandos em micro instru es A Figura 120 mostra uma forma de se codificar operandos 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 operando n s vamos utilizar o bit mais significativo o bit 23 Se este bit for igual a O os bits restantes s o interpretados como sinais de controle se for igual a 1 os 16 bits menos significativos s o a codifica o em bin rio de um operando o barramento da calculadora tem 16 bits de largura A unidade de controle dever ter uma sa da com o valor do operando ligada ao barramento da calculadora e utilizando como todas as outras liga es de sa da para o barramento um controlled buffer para evitar conflitos Este controlled buffer comandado por um sinal que deve ser adicionado aos sinais j emitidos pela unidade de controle Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 70 0011 Figura 121 CPU O 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 operandos fornecidos por uma unidade de
225. nguagem Scilab 119 A Figura 211 mostra exemplos de adi o e subtra o de matrizes Com 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 gt bx 1 2 3 4 5 6 x 1 2 3 4 Fa 6 gt y 10 20 30 40 50 60 y 10 20 30 40 50 60 gt x y ans 220 280 490 640 Figura 212 Exemplo de produto matricial Na Figura 212 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 m X p n onde xyij X k 1 XikYki 1 2 3 4 10 20 30 40 gt 7K Figura 213 Produto matricial versus produto elemento a elemento de duas matrizes O Scilab emite uma mensagem de erro quando ocorre uma tentativa de multiplica o de matrizes com dimens es incompat veis com a opera o A Figura 213 mostra a diferen a entre as opera es de produto matricial e produto elemento a elemento gt 1 2 3 4 5 6 gt Dx 2 Figura 214 Multiplicando uma matriz por um escalar Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 120 Uma matriz pode ser multiplicada por um escalar caso em que os operadores e s o equivalentes como mostrado
226. ntar aumentar a frequ ncia de amostragem mas isso tem custos Se considerarmos que o sinal est sendo amostrado para aprecia o visual por humanos a partir de um certo ponto a qualidade da digitaliza o atingir os nossos limites de acuidade visual Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 12 Amplitude w Original Signal Amplitude samplec Signal 4 0 4 0 0 eni 400 pog a00 1000 0 200 400 p00 a00 1000 Time ns Time ns aj fisample 200 00 MHz E Elo Escola Bit M Show Sampling Points sample ns W Show Sampled Signal Show Quantization Error Figura 18 Sinal amostrado com f 200 MHz mas com apenas 2 bits de resolu o Como dissemos a precis o com que a amplitude do sinal em cada amostra digitalizada tamb m influi na qualidade da convers o Na Figura 18 n s vemos o efeito do uso de apenas dois bits para a digitaliza o da amplitude em cada amostra e na Figura 19 a digitaliza o com um nico bit Amplitude w Original Signal Amplitude samplec Signal 4 0 0 e00 400 KOD af 1000 0 e 400 Ef a00 1000 Time ns Time ns ET l flsamplej 200 00 MHz 1 Resolution Bit M Show Sampling Points sample hs W Show Sampled Signal DC Show Quantization Error Figura 19 Sinal amostrado com f 200 MHz com um nico bit de precis o As ilustra es da Figura 14 Figura 19 foram obtidas com o software ADconve
227. nte o que natural mas tampouco altera a sua mantissa que n o possui bits suficientes para essa adi o O valor somado simplesmente perdido na opera o em um efeito que conhecido por cancelamento catastr fico Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 182 mi 4 3e007 au 15 ordens de 3ser007 grandeza maior 201007 que o resultado 2 5e 007 correto 2 0e 007 1 5e 007 1 0e 007 5 0e 008 0 0e 000 Figura 345 Gr fico com valores absolutos dos termos da s rie de Taylor para x 20 A Figura 345 mostra um gr fico com os valores absolutos dos termos da s rie de Taylor para x 20 0 maior valor absoluto de um termo da ordem de 107 e o valor correto para e72 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 ricos funcionam como esperado na maior parte dos ca
228. nx while x 999 expCalc expTaylor x tol printf in x exp x expTaylor x printf n 12g 15 8e 15 8e 15 8ein x exp x expCalc exp x expCalc input nx Figura 340 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 xt x x i i 1 i i Com isso n s chegamos forma final da fun o expTay lor mostrada na Figura 341 ti ti 1 function y expTaylor x tol Calcula a soma dos termos da s rie de Taylor at o primeiro termo com valor absoluto menor que a toler ncia tol Termo 1 y 1 i 1 while abs Termo gt tol Termo Termo x i y y Termo 141 end endfunction Figura 341 A fun o expTaylor Vamos primeiramente testar a fun o para alguns valores positivos de x Podemos ver na Figura 342 que os resultados s o muito bons com diferen as 16 ordens de grandeza menores que os valores calculados pelas duas fun es Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 181 tol 1 0e 40 1 1 2 71828183e 000 2 71828183e 000 4 44089210e 016 10 10 2 20264658e 004 2 20264658e 004 7 27595761e 012 30 30 1 06864746e 013 1 06864746e 013 3 90625000e 003 Figura 342 Resultados de testes da fun o expTaylor com x positivo Mas o teste com valores negativos
229. o de Computadores IOPC 2011 1 4 docx Introdu o 21 File Edit Format View Help 0 7 0 66 0 bd 0 03 0 62 0 61 a O 61 0 1 0 0 0 0 i O 0 D 0 0 D 0 0 0 0 0 0 0 0 i 0 0 0 H 0 0 0 Figura 33 O arquivo ondas1 txt visto com o Bloco de Notas Cada linha do arquivo cont m uma medida do n vel do mar a aparelhagem do laborat rio permite fazer 30 medidas por segundo O arquivo completo tem 4096 linhas N s queremos um programa para obter um gr fico com os pontos do arquivo e tamb m saber os valores m ximo e m nimo presentes na amostra Fun es utilizadas Programa da Onda getf Minimo 2 sci 4 r Leitura do arquivo getf Maximo sci arq xgetfile r Gera o do gr fico Onda fscanfMat arg 7 plot2d Onda printf Min 5 2f Max 3 5 2 f Minimo Onda Maximo Onda Figura 34 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 34 mostra um programa Scilab que faz isso utilizando dois m dulos as fun es Maximo e Minimo mostradas na Figura 35 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 22 P SciPad 6 157 Maximo sci File Edit Search Execute Debug Scheme Options Windows Help Minimo sci
230. o decimal 123 representado pela sequ ncia de 24 bits 00110001 00110010 00110011 onde colocamos espa os para facilitar a leitura Para n meros a interpreta o de um conjunto de bits como um n mero bin rio leva a c digos mais compactos e que como veremos permitem a realiza o de opera es de soma por circuitos mais simples mais r pidos e mais baratos Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 26 Tabela 4 10 primeiras pot ncias de 2 njo 1 2 3 4 5 6 7 81 59 10 a 2 4 16 32 64 125 256 si2 1024 O decimal 123 pode ser representado em bin rio por 1111011 utilizando apenas 7 bits Esta representa o vem do fato que 123 1 24 1 2 1 24 1 23 0 2 1 21 1 22 Tabela 5 Representa o dos n meros de 0 a 15 como bin rios sem sinal de 4 bits Decimal o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A convers o de 1234o para 11110115 pode ser feita com o seguinte m todo para convers o bin rio decimal e N s precisamos expressar 123 como uma soma de pot ncias de 2 Para isso procuramos em uma tabela de pot ncias de 2 como a Tabela 4 a tabela deve chegar at uma pot ncia de 2 maior que o n mero a ser convertido o maior valor que n o exceda 123 o que no caso 64 Temos 123 64 123 64 64 59 e Temos agora que expressar 59 como uma soma de pot ncias de 2 Na Tabela 4 a maior pot ncia de 2 que n
231. o loop termina quando i tiver o valor 11 que ultrapassa o limite 10 e O An na frase do comando printf um caractere especial que produz uma nova linha na sa da for i 20 2 16 printf Ani g i end i 20 1 18 Sa da 1 16 Figura 164 Exemplo de for com passo negativo O lt passo gt de um for pode ser negativo como mostrado na Figura 164 e a vari vel de controle pode assumir valores n o inteiros como na Figura 165 for x 0 0 3 0 7 printf Nnx g x end Figura 165 Exemplo de for com a vari vel de controle assumindo valores n o inteiros Com este ltimo exemplo a constru o da tabela de senos fica simples Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 100 Tabela da fun o Seno for x 0 0 2 2 pi printf g g x sin x end Figura 166 O programa Tabela de Senos 1 sce O programa da Figura 166 parece atender especifica o mas quando executado pelo Scilab produz uma sa da de dif cil compreens o como mostrado na Figura 167 O 00 2 0 1986690 4 0 3894180 6 0 5646420 8 0 7173561 0 841471 Figura 167 Primeiros caracteres da sa da do programa Tabela de Senos 1 sce Um primeiro problema a corrigir a separa o em linhas o que pode ser obtido usando o s mbolo An na frase do comando printf Com isso n s chegamos ao programa Tabela de Senos 2 sce mostrad
232. o na Figura 168 Tabela da fun o Seno for x 0 0 2 2 pi printf in g g x sin x end Figura 168 O programa Tabela de Senos 2 sce A sa da do Tabela de Senos 2 sce cujas primeiras linhas est o mostradas na Figura 169 melhorou mas ainda n o est satisfat ria 0 198669 0 389418 0 564642 0 717356 841471 0 932039 Figura 169 Sa da do programa Tabela_de_Senos_2 sce Os problemas de alinhamento s o causados pelo uso do c digo de formato g que n o especifica o n mero de colunas que igual ao n mero de caracteres com a fonte tipogr fica n o proporcional usada pelo Scilab onde todas as letras ocupam o mesmo espa o Com uma fonte proporcional como esta que voc est lendo um i ocupa um espa o menor do que um m o que bem vis vel quando comparamos iiii com mmmm que um n mero ir ocupar e que tentando agradar n o imprime casas decimais quando o n mero a ser impresso inteiro Tabela da fun o Seno Impress o do cabe alho printf in x seno x Impress o das linhas da tabela for x 0 0 2 2 3pi printf n 3 1f 7 4f x sin x end Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 101 Figura 170 O programa Tabela de Senos 3 sce A Figura 170 mostra o programa Tabela de Senos 3 sce que produz a sa da mostrada parcialmente na Figura 171 Figura 171 Primeiras linhas da sa da do programa T
233. 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Notas Finais e Pr ximos Passos 199 e Um computador portanto um circuito que transforma informa o que entretanto difere do circuito de soma porque a transforma o realizada n o fixa mas ditada por outra informa o o programa armazenado e Trocando o programa trocamos a transforma o realizada O ganho em fllexibilidade enorme quando comparado com a constru o de um circuito Software macio hardware duro e E programas podem conter loops o que nos permite por exemplo calcular a soma de 50 000 ou mais
234. 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 Figura 8 Filmes fotogr ficos Flickr Um filme fotogr fico revelado objeto em extin o nos dias de hoje registra informa o sobre a cena fotografada Um arquivo JPEG formato comum para imagens digitais tamb m tem Uma mesma cena fotografada com uma m quina tradicional gera informa o anal gica sobre o material foto sens vel que cobre o filme fotografada com uma m quina digital gera s mbolos ou seja informa o digital pode ser Informa o Informa o Anal gica DILE Figura 9 Informa o anal gica e digital Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Introdu o 6 Um term metro caseiro um objeto que fornece informa o sobre a temperatura do ar ou do corpo de uma crian a pois fen menos de dilata o fazem com que a altura da coluna de merc rio seja proporcional temperatura medida N s dizemos que a informa o obtida por um exame direto do term metro uma informa o anal gica Ponto de ebuli o da gua Corpo humano Ponto de fus o do gelo Figura 10 Um term metro Com o uso de uma escala um m dico pode
235. o 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 nlog 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 cientistas e engenheiros Tipicamente s o vistos algoritmos para encontrar zeros ra zes de fun es dos quais o m todo da bisse o v
236. 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 xIs serve exatamente para isto cumprindo as fun es de assembler e de micro assembler como descrevemos nas pr ximas se es Este arquivo cont m as planilhas Microinstructions Microprogram Instructions SumX ReadX SearchX e Aux A planilha Microinstructions pode ser vista na Figura 421 e cont m em cada linha um mnem nico da micro instru o seu c digo em decimal e bin rio e uma descri o Ali tamb m pode ser vista a nica f rmula utilizada que utiliza a fun o Excel DEC2BIN para converter um n mero decimal para bin rio DEC2BIN B3 4 Es Desvia para a micro instru o inicial da jmpNext 0000 2 a MPIMMEDIATE i re jmpDIRECT 2 0010 Paes 4 endere amento for Direto l Desvia para o operando se o modo de jmpINDIRECT 3 0011 5 endere amento for Indireto Situa o inesperada n o deveria _ error 0100 6 acontecer Acende um led 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 l Desvia para a micro instru o apontada return gt 0101 Mr T pelo registrador Return Addr Desvia para o operando e armazena o jsr 0110 l 3 endere o consecutivo no Return Addr f ___ Desvia para o operando se D ACC for jmpEQ
237. oca e programas 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 80 e operandos s o codificados nas instru es e n o existe mais 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 como veremos representa um grande avan o com rela o programa o por sinais de controle O controle do ciclo de instru o exige circuitos adicionais e o registrador PC Program Counter que o contador de programa e que cont m o endere o da instru o a ser executads temos tamb m um contador para as micro instru es que passaremos a chamar de mPC micro Program Counter e o registrador IR Instruction Register que cont m a instru o em execu o OpCode Figura 135 Formato de uma instru o da CPU Pipoca As instru es da CPU Pipoca t m 16 bits e s o codificadas segundo o formato mostrado na Figura 135 S o 4 bits para o c digo da instru
238. ode 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 151 observa o algoritmos podem ter seu tempo de execu o dependente da inst ncia espec fica do problema que resolve Muitas vezes n s estamos interessados na an lise do pior caso de um algoritmo N s iremos em seguida relatar outros experimentos feitos com o programa Fatora sce Nestes experimentos n s vamos precisar de n meros primos e para isso o arquivo 200000primos txt que cont m os 200 000 primeiros n meros primos de grande utilidade Diversos sites na Internet como Andrews cont m arquivos com n meros primos ou programas que geram n meros primos A Figura 286 mostra as primeiras e ltimas linhas deste arquivo 200000primos Notepad File Edit Format View Help 2 49921 f 2749991 2750021 2750029 2750053 2750071 2 750123 2750131 2 50159 Ln 200000 File Edit Format View Help Figura 286 Primeiros e ltimos n meros primos no arquivo 200000primos txt No segundo experimento fizemos o programa Fatora sce fatorar por diversas vezes se o n mero 131101 que
239. ol endfunction Figura 331 Cabe alho da fun o bissecao A Figura 331 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 eb s o os limites do intervalo e devem ser tais que f a b lt 0 e O par metro tol a toler ncia isto um valor para o tamanho do intervalo de busca onde a precis o desejada considerada satisfat ria e O par metro de sa da r a raiz encontrada Para testar a fun o bissecao n s precisamos e de uma fun o cont nua e de um intervalo onde a fun o troca de sinal e ede conhecer o valor de uma raiz nesse intervalo para que seja poss vel verificar o resultado Figura 332 Gr fico de f x e sin x A fun o f x e sin x cujo gr fico est mostrado na Figura 332 satisfaz a estes requisitos pois e cont nua e tem sinais opostos nos extremos do intervalo 2 4 e portanto este intervalo cont m uma raiz e e estaraiz rr A Figura 333 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 333 A fun o exp_sin Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 178 O
240. olver uma nova equa o bastar substituir no programa os valores dos novos coeficientes e execut lo novamente Comparando com o processo de resolu o via console o uso de um programa reduz consideravelmente as chances de erros de digita o Entretanto a pr tica de se alterar programas para introduzir dados que se modificam a cada execu o n o recomend vel e nem exeq vel quando o volume de dados muito grande O melhor a fazer modificar o programa para permitir que o usu rio defina os valores dos coeficientes a cada execu o C lculo das ra zes de uma equa o de 20 grau input Digite o valor de input Digite o valor de c input Digite o valor de delta b 2 4 a c ri b sgrt delta 2 a b sqrt delta 2 a Figura 154 O programa Eq2g2 sce com os comandos de di logo em destaque O comando input permite essa intera o com o usu rio Como vemos na Figura 154 este comando recebe como par metro uma frase a ser exibida para o usu rio que normalmente usada para descrever o valor a ser digitado Digite o valor de a 1 a u EM Digite o valor de b 2 b AR Digite o valor de c 3 o E RR delta 8 ri dy 1 01421361 r2 1 1 4142136i Figura 155 Execu o do programa Eq2g2 sce A Figura 155 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 di
241. om diversos tipos de mem ria que seguem uma distribui o hier rquica Registradores s o mem rias muito pequenas e muito r pidas que se encontram dentro do mesmo chip do processador e que t m suas entradas e sa das ligadas diretamente a circuitos que realizam transforma es de informa o como a unidade aritm tica que como o nome indica realiza opera es aritm ticas Mem ria principal ou RAM Random Access Memory um circuito externo ao processador mas de acesso ainda bastante r pido Instru es executadas pelo processador utilizam diretamente operandos armazenados na mem ria principal Transforma es como opera es aritm ticas geralmente exigem que informa o seja previamente transferida da mem ria principal para registradores onde as opera es s o realizadas e os resultados posteriormente armazenados na mem ria principal De uma forma geral a mem ria principal vol 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 H alguns anos atr s mem rias principais utilizavam Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 16 n cleos de ferrite com o registro da informa o feito por polariza es magn ticas n o vol teis a E PDP S p ACAM LS AMA MTNh i o
242. omo mostrado na Figura 202 e tamb m podemos atribuir um valor a um elemento espec fico de uma matriz como mostrado na Figura 203 DA 12 3 4 5 6 A io as l be A 2 3 e 6 Figura 202 Obtendo o valor de um elemento de uma matriz Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 116 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 na 6 U1 W e JW Figura 203 Atribuindo um valor a um elemento de uma matriz O Scilab t o orientado para matrizes que todas as vari veis Scilab s o matrizes As vari veis simples com que temos trabalhado s o na verdade matrizes com uma nica linha e uma nica coluna poss vel perceber isso usando o comando nl nc size A para obter as dimens es de uma matriz A Essa fun o retorna dois par metros o n mero de linhas e o n mero de colunas da matriz A Figura 204 mostra dois exemplos de uso da fun o size gt A 1 2 3 4 5 6 gt nl nc size A nc 3 gt k 0 gt L C size k C L Figura 204 Matrizes e a fun o size Uma matriz cresce quando atribu mos valores a elementos com ndices superiores aos ndices j referenciados Por exemplo quando fazemos x 7 estamos criando uma matriz
243. ompara o de bin rios sem sinal 49 comparador de 1 bit 49 compilador 83 84 Complemento de 2 25 complexidade computacional 146 complexidade linear 154 condutor perfeito 29 console do Scilab 85 Construindo matrizes 119 controlled buffer 57 convers o bin rio decimal 24 convers es A D 8 convers es D A 8 Corre o 145 data width 57 DBus 215 Debug 215 Demultiplexadores 51 descritor de arquivo 109 desenvolvimento top down 139 diret rio corrente 91 dividir para conquistar 168 Dvorak 13 eco 86 supress o do eco 87 Efici ncia 145 else 93 endere o 58 endfunction 129 escopo de vari veis 130 Especifica o 145 estouro 41 Express es booleanas 28 express es l gicas 100 eye 120 fatora o de n meros inteiros 147 fechamento de um arquivo 109 fetch 225 flip flop tipo D 54 Flip flops 54 folhas 180 Fortran 83 fprint fMat 124 fscanfMat 124 fun o recursiva 137 Fun es 127 function 129 IOPC 2011 1 4 docx ndice Remissivo George Boole 27 getf 130 GetOperand 226 IBM PC 1 IEEE 754 26 i 93 Indenta o 106 Informa o 4 Informa o anal gica 4 informa o digital 4 input 92 INPUT 215 instru es 207 instru es de desvio 207 instru es de m quina 205 Instruction Register 206 int 120 Integra o por Trap zios 168 Internet 3 interpretador 84 IR 206 isolante perfeito 29 janela de an lise combinat ria 43 Jav
244. onal Na Figura 131 voc pode ver a codifica o de micro instru es que iremos adotar para um novo processador a CPU 2 Nessa codifica o e obit23 indica se a micro instru o de desvio e obit22 como na CPU 1 indica que a micro instru o cont m um operando e os bits 21 20 e 19 s o usados nas micro instru es de desvio e especificam as condi e 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 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 78 Yy Main Memory Al 0000 0000 0001 0000 pe 0002 0000 0003 0000 Q 7 A O mr E q E RR p E Figura 132 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 132 voc pode ver que a sa da do registrador de compara o alimenta agora a unidade de controle fornecendo a informa o necess ria para as decis es de desvio condicional
245. onde da o descritor do arquivo obtido no momento de sua abertura Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 113 n lt lista de vari veis gt mfscanf da formato Figura 197 O comando mfscanf A leitura de dados em um arquivo feita pelo comando mfscanf cuja forma est mostrada na Figura 197 A cada execu o s o lidos dados em uma linha do arquivo Como um exemplo de sua utiliza o considere o comando n a b c mfscanf da g g bg aplicado a um arquivo com os dados mostrados abaixo 8b 32ec 40 em sua primeira execu o n 3 Este comando faz n 3 a 14 na segunda execu o e assim por diante a 7 b 21ec mfprintf da formato lt lista de vari veis gt Figura 198 O comando mfprintf O comando mfprintf bastante similar ao nosso conhecido printf mas por ser aplicado a arquivos exige como par metro extra um descritor de arquivo aberto como mostrado na Figura 198 Para ilustrar o uso de arquivos vamos retornar s equa es de 2 grau mas agora vamos obter os coeficientes das equa es em um arquivo de entrada onde cada linha cont m os coeficientes de uma equa o Um poss vel arquivo de entrada seria o coefs2g txt que pode ser examinado com o Bloco de Notas e cujas primeiras linhas est o mostradas na Figura 199 Introdu o Organiza o e Programa o de Computadores IOPC 20
246. onte do do acumulador na posi o 3 da RAM Figura 113 Sinais de controle e entrada de operandos para a etapa 3 N s vamos agora adicionar circuitos que ir o transformar esta calculadora em um processador isto em um circuito digital capaz de automaticamente executar um programa 2 4 2 Osciladores ou Clocks O primeiro ponto a resolver a emiss o de sinais 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 circuito 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 milh 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 114 L amp j Logisim main of Untitled o e Ea File Edit Project Window Help t k A M vV Simulation Enabled Ctrl E do Untited Reset Simulation Ctrl R a main Step Simulation Ctrl I Base Gates Go Out To State k Plexers p E Arithmetic Soin To Siate Memory E 4 Input Outpu Tick Once Ctrl T Ticks Enabled O Tick Frequency 4096 Hz Logging ci 1024 Hz 512 Hz 256 Hz Facing East ati High Duration 1 Tick Erro Low Duration 1 Tick 16 Hz Label 8 Hz Label Location West 4 Hz Label Font SansSerif Plain 12 2 Hz o 1Hz 0 5 Hz
247. op composto pelas instru es colocadas entre o endere o 4 e o endere o 12 Em cada passo deste loop uma das parcelas adicionada a SUM e o endere o armazenado em P incrementado Ao fim do passo P comparado com XEND e dependendo do resultado o loop repetido ou o programa passa para a sua fase final e Uma etapa de finaliza o onde o resultado da soma encaminhado para a sa da e o programa p ra X O l XEND suM __ P Figura 389 Uso das vari veis SUM e P no programa SumX As quatro ltimas colunas na Tabela 19 resultam de um processo de montagem que descrevemos a seguir Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 215 Tabela 19 O programa SumX L lt T ilojojoa ojo rraoaamido fafafojsor ojsum ciocacemsum ao fafa ofon ojx carrega o endere o X no acumulador 8 15 alsfosor ojp colocaoenderegoxeme ao 21 20981 A015 roop a a oro 1 SUM _ Carrega o conte do de SUM no acumulador 8 20 33812 8414 lepo ofp ineme aanmaaer o 0 2t zo owas 1 21 0815 endere o P ao acumulador 1 e6 o strorE 0 sum __ Coloca o resultado na posi o SUM _ 10 20 40980 A014 Jji rjojo 1 p Carregaoconte dodep 8 21 33813 8415 ilele oj fom O Soa aoo 1 9 o9 store ojP____ Coloca o resultadoemP_ 10 21 40981 A015 i ao oa compare o pano Compara XEND com o acumulador 1 19
248. or rc pari Figura 385 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 subseq ente 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 RE 2 rr j F s o controlados produz ame Sinais de Controle da CPU Figura 386 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 o
249. org Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Refer ncias 206 Wolffdata n d Wolffdata Retrieved 2008 from ScilabStarter http www wolffdata se scilab ScilabStarter pdf Refer ncias Zotero 1 Logisim a graphical tool for designing and simulating logic circuits Internet date unknown cited 2011 Mar 7 Available from http ozark hendrix edu burch logisim 2 MathWorks MATLAB and Simulink for Technical Computing Internet date unknownl cited 2011 Mar 7 Available from http www mathworks com 3 Bill McKeeman MATLAB 101 A talk for the MIT Computer Science Department Internet 2005 cited 2011 Mar 7 Available from http www cs dartmouth edu mckeeman references matlab101 matlab101 htm l 4 sciport 3 0 pdf Internet date unknownl cited 2011 Mar 7 Available from http www dca ufrn br pmotta sciport 3 0 pdf 5 Home Scilab WebSite Internet date unknown cited 2011 Mar 7 Available from http www scilab org 6 The Effective Teaching and Learning Network training course and information for teachers TAM and Classroom Research Internet date unknown cited 2011 Mar 7 Available from http www etln org uk resources page16 htm 7 IBM Archives IBM Personal Computer Internet date unknown cited 2011 Mar 7 Available from http www 03 ibm com ibm history exhibits pc pc 1 html 8 Home TOP500 Supercomputing Sites Interne
250. os 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 312 A fun o Merge Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 167 f cil ver que o n mero de opera es elementares de uma opera o de intercala o de dois vetores ordenados de tamanhos m e n da ordem dem 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 313 a af po pop bo pj e 16 passos 16 passos ER 16 passos 0 1 23 397 73 8 2 1125 303366 0 21125403A Figura 313 Passos para ordena o por intercala o 167 16 passos Ali vemos o processo ilustrado para um vetor cujo tamanho uma pot ncia de 2 mas para outros tamanhos podemos considerar como limite superior a complexidade exigida para a menor pot ncia de 2 que supere o tamanho do vetor Vamos considerar apenas a fase de intercala o ilustrada na parte inferior da figura uma vez que as
251. ou o endere o da instru o em execu o ou o endere o da pr xima instru o a ser executada 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 Endere o DO 0 0 DO 0 0 cin dyt Figura 119 Um contador de programa simples A Figura 119 mostra o circuito do contador de programa que um registrador cuja sa da est ligada a um circuito de soma cuja sa da realimenta a entrada do registrador A outra parcela Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 69 da soma sempre igual a 1 o que produz o efeito que desejamos a cada subida do clock o valor do PC incrementado de 1 O circuito possui tamb m uma entrada Reset que zera o PC 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 dos operandos endere os da mem ria valores a serem adicionados ou carregados no acumulador etc N s queremos agora permitir que operandos j possam ser especificados no programa e que estes opera
252. passada Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 192 Figura 363 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 4 5 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 1 2 3 Figura 364 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 365 mostra uma solu o para o problema proposto na Figura 364 100 0 1 1 100 00 a 4 1 100 100 1 0 0 010 1 1 00 100 100 1001100100100 Figura 365 Uma solu o com 7 domin s Vamos representar uma sequ ncia de domin s por um vetor de ndices como 1311322 que significa um domin do tipo 1 seguido
253. press es l gicas s o ab a b e A a b Duas opera es booleanas que podem ser derivadas dessas opera es b sicas s o NAND e NOR definidas por e aNANDb ab e aNORb a b Ou seja um NAND um AND seguido de uma nega o assim como um NOR um OR seguido de uma nega o A import ncia das opera es NAND e NOR vem do fato de que sua constru o com transistores mais simples como veremos a seguir A Figura 43 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 Figura 43 Portas NAND e NOR Transistores s o a base para a constru o de circuitos compactos e r pidos Por um lado a i ePi 2 tecnologia de 2008 permite colocar 800 milh es de transistores em um chip de 244 mm e por outro o tempo de rea o de um desses transistores a mudan as em suas entradas muito Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 31 pequeno da ordem de nanosegundos um nanosegundo igual a 107 segundos 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 4
254. primo Veja os resultados na Figura 287 131101 Tempo 2 984375s 131101 divis vel por 131101 PRIMO n 131101 Tempo 3 078125s 131101 divis vel por 131101 PRIMO 131101 Tempo 3 015625s 131101 divis vel por 131101 PRIMO Figura 287 Varia es no tempo de execu o de um programa com os mesmos dados de entrada Voc pode ver que um mesmo programa apresenta varia es no tempo gasto para a fatora o do mesmo n mero primo Isso se deve a uma s rie de fatores o principal deles sendo o fato de que em um sistema operacional como o Windows ou o Linux um programa n o executa sozinho mas compartilha o processador e outros recursos do computador com outros programas e com o pr prio sistema operacional Esse compartilhamento coordenado pelo sistema operacional e o programador Scilab n o tem qualquer controle sobre a forma como se d este compartilhamento por isso que uma mesma fun o chamada com os mesmos par metros pode apresentar diferen as de desempenho a cada execu o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 152 Tabela 16 Tempos segundos gastos com a fun o MenorFator em um notebook e em um desktop 257 Outro experimento procura capturar o impacto do valor do n mero primo recebido como par metro sobre o tempo de execu o da fun o MenorFator A Tabela 16 mostra os resultados obtidos com diversos n meros primo
255. problema Veja a Figura 277 function p MenorPrimoMaiorOulgualA n p hn while Primo p p ptl end endfunction Figura 277 A fun o MenorPrimoMaiorOulgualA Como funciona a fun o Primo n o sabemos ainda mas especificamos que e a fun o tem um par metro formal de entrada n que o n mero que queremos testar se ou n o primo e o resultado do teste o par metro formal de sa da que deve ser t se o n mero for primo e f sen o Para saber se um n mero n primo vamos decomp lo como um produto de fatores inteiros satisfazendo n pq Um n mero inteiro n maior ou igual a 2 primo se seus nicos fatores s o 1 e o pr prio n A fun o Primo pode ent o ser escrita como mostrado na Figura 278 function ehPrimo Primo n ehPrimo n MenorFator n endfunction Figura 278 A fun o Primo Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 144 Precisamos agora desenvolver a fun o MenorF ator 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 func
256. que iremos sintetizar o display hexadecimal j existe tamb m pronto no Logisim mas vamos reconstru lo Figura 82 Arranjo de entradas e sa das de circuito de controle de um display hexadecimal Para isso abrimos a janela Combinational Analysis do Logisim e constru mos uma tabela da verdade com 4 entradas a3 a2 a1 e a0 e com 7 sa das UL U C UR LL P Le LR Para cada linha colocamos 1 nas sa das correspondentes aos filamentos que acesos comp em o d gito hexadecimal formado pelos bits de entrada A tabela final est mostrada na Figura 83 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 50 Combinational Analysis EI File Edit Cro simulat window Help Inputs Outputs Expression Minimized a al al a UL U C UR LL P o 0 0 D l l 0 l l 0 No D l 0 0 0 1 0 D 0 D l 0 0 l l l l 0 0 0 l l 0 l l l 0 0 0 1 0 D l 0 1 l 0 0 0 l 0 1 l l l 00 0 i l l 0 l l l 0 l 0 i 1 1 l 0 l 0 l 0 D 1 0 0 0 l l 1 1 l 0 l 0 D 1 l l l i 0 i 0 i 0 1 i 1 i 0 l l l 0 l l l pod l 1 l i 1 0 D0 1 1 1 0 l Build Circuit Figura 83 A tabela da verdade completa para o display hexadecimal com destaque para a determina o das sa das para formar um F Feito isso basta apertar Build Circuit para obter o circuito da Figura 84 O circuito parece complicado Pode ser mas isso n o um problema O circuito foi constru do
257. 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 39 computar uma fun o qualquer significa transformar a representa o de seus argumentos na representa o do valor da fun o A Figura 60 mostra as entradas e sa das do circuito que pretendemos construir Figura 60 Entradas e sa das de um somador de 1 bit Para especificar exatamente o que desejamos deste circuito vamos utilizar uma tabela da verdade Uma tabela da verdade apresenta o valor de uma ou mais fun es l gicas as sa das do circuito correspondendo a cada combina o poss vel de valores das vari veis de entrada A Figura 61 mostra a tabela da verdade para a soma de duas vari veis de 1 bit EEN Figura 61 Tabela da Verdade para soma de duas vari veis de 1 bit Nessa tabela n s temos e duas vari veis de entrada a e b e duas fun es de sa da 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 22 4 linhas na tabela Tabelas da verdade constituem um mecanismo geral para a especifica o de fun es l gicas Elas especificam as
258. r do PC e osinal tl coloca no mIR a micro instru o cujo endere o fornecido pelo PC e osinal t2 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 executa programas formados por micro instru es onde cada micro instru o codifica sinais de controle ou operandos 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores Micro instru o 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 s5 4 3 2 17o Sinais RAM Bus RAM Clk DR gt Bus MAR Clk mo Em Oper gt Bus In gt Dbus DR Clk Subtract Out Clk Compare Clk ACC gt Bus ndere o K Operando In_Clk EFI E ACC Clk ACC Clear 72 Efeito Da micro instru o ACC 0 Oper 1 Bus Oper MAR Bus Bus RAM ACC ACC Bus Oper 2 Bus Oper MAR Bus Bus RAM ACC ACC Bus Oper 3 Bus Oper MAR Bus Bus ACC RAM Bus Figura 123 Construindo um programa para a CPU O Acumulado Carrega no acumulador o conte do da posi o 1 da RAM Soma ao acumulador o conte do da posi o
259. r para obter o endere o da linha corrente como mostrado na Figura 424 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 INPUT Key LOAD Key OMPARE O O Finish Table P Key COMPARE 2 P JMPGT EndSearch LOAD F ADD STORE JP COMPARE TableEnd JMPGT Searchloop OUTPUT 2 P JMP ReadLoop HALT Z _2 Readloop ej searchloop FEZ EL z 1 0 Cl E 3 4 5 B 7 B q p ca Pt EndSearch min Finish P Key 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 JS EIEE RERHHRHHnRRa ah EE ta E kan TableEnd Figura 424 C lculo dos endere os as setas destacam a c lula C3 e sua f rmula Para obter o mapa de mem ria preciso agora colocar f rmulas para calcular o valor de cada palavra neste mapa Para isso copie as colunas OpCode10 Operand10 Word10 e Word16 da primeira linha do programa SomaxX e cole somente as f rmulas nas mesmas colunas da primeira linha do seu novo programa Depois selecione as c lulas com as f rmulas no novo programa copie e cole nas linhas restantes nestas colunas para obter a planilha completa mostrada na Figura 425 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 236 f IF ISBLANK E3 0 INDEX OpCode
260. ra a ROM Branch Table da Unidade de controle 1 1 1 1 Programando a Pipoca As planilhas SumX e ReadX do arquivo Pipoca xIs cont m programas em Assembler e produzem imagens de mem ria a serem carregadas na RAM da CPU Para explicar estas planilhas n s vamos mostrar como se constr i um novo programa Address DEC AddressiHEX nstruction INPUT LOAD COMPARE JMPEQ LOAD STORE LOAD COMPARE JMPGT LOAD ADD STORE COMPARE JMPGT OUTPUT JMF HALT ReadLoop Key Key 0 Finish Table F Key P EndSearch F emel le jSjre searchLoop a 6a em tn do jts ta rs e l P TableEnd Searchloop F ReadLoop 16 EndSearch 17 18 Finish 19 P 20 Key Table o 0 1 0 0 0 0 1 2 O 1 0 O 0 0 z 0 Hs m pai 22 23 24 25 26 EF 28 29 TableEnd Figura 423 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 423 Aqui devem ser Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ap ndice A A CPU Pipoca 235 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 anterio
261. rama 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 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 I Ziller 1954 que pode ser encontrado no site McJones Um compilador um programa que tem como entrada um outro programa escrito em uma linguagem de alto n vel e que produz um programa em linguagem de m quina para uma arquitetura espec fica O primeiro compilador foi escrito em assembler do IBM 704 uma m quina que tipicamente contava com 15K de mem ria Desta poca at hoje j foram desenvolvidas com maior ou menor grau de sucesso muitas linguagens milhares delas literalmente Um mapa cronol gico com as principais linguagens de programa o pode ser encontr
262. randos Cada instru o no programa fonte deve ser codificada 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 141 voc pode ver um exemplo deste procedimento de codifica o em bits que chamado de montagem da instru o Figura 141 Montagem de uma instru o Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 84 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 fonte tal como 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
263. rar 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 fazerk 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 301 n s vemos uma ilustra o deste m todo e No primeiro passo o menor elemento entre 1 igual a k e 7 comprimento do vetor tem o valor 12 e se encontra na posi o 7 Os valores nas posi es 1 e 7 s o trocados e k passa a valer 2 e No segundo passo o menor elemento entre 2 iguala k e 7 tem o valor 27 ese encontra na posi o 3 Ele trocado com o elemento na posi o 2 e k passa a valer 3 Desta forma o algoritmo progride e termina quando a pen ltima posi o do vetor recebe o seu valor final o que significa que a ltima posi o tamb m estar corretamente preenchida Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 161 J temos condi es de dar um primeiro refinamento fun o SelectSort que mostramos na Fi
264. regada 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 nlo gn 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 171 4 3 4 Dividir para Conquistar Os algoritmos de ordena o por intercala o e por parti o s o exemplos de emprego de uma estrat gia cl ssica em computa o chamada dividir para conquistar Dado um problema de tamanhon e o problema dividido em 2 subproblemas de tamanho n 2 ou 3 subproblemas de tamanho n 3 ou e cada subproblema conquistado por aplica o recursiva da mesma estrat gia a n o ser que o seu tamanho seja suficientemente pequeno para permitir uma solu o direta e as solu es dos subproblemas s o combinadas para resolver o problema original Na ordena o por intercala o a divis o em subproblemas simples ma
265. riam vari veis diferentes Nomes n o v lidos s o 1Aluno porque o primeiro caractere um algarismo total de alunos porque tem espa os ou jos porque acentuado Um comando de atribui o tem o formato lt vari vel alvo gt lt express o gt onde e A lt vari vel alvo gt se n o existia passa a existir e Se existia o valor anterior perdido e Na execu o do comando a lt express o gt calculada e o resultado atribu do lt vari vel alvo gt Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 89 Er atx I error 4 Undefined variable Figura 145 Usos e erros em comandos de atribui o Conforme ilustrado na Figura 145 todas as vari veis envolvidas na lt express o gt devem ter valores definidos no momento da execu o do comando Vale ainda observar que a lt express o gt pode conter a lt vari vel alvo gt em um arranjo similar ao utilizado nos registradores acumuladores gt a 3 1415927 2 8piD cos a sqrt b i V 0 Il 1 5066283 Figura 146 Exemplos de comandos de atribui o com vari veis com valor pr definido supress o de eco e fun es elementares O Scilab oferece tamb m vari veis com valores pr definidos como pi ou eps e uma enorme variedade de fun es pr definidas veja a Figura 147 Valores num ricos s o representados no Scila
266. rings a vari veis Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 104 gt ba Programa o a Programa o gt b de b de gt C Computadores C Computadores Figura 178 Atribuindo strings a vari veis Strings s o escritos entre aspas simples ou duplas Voc pode mesmo iniciar um string com aspas duplas e termin lo com aspas simples gt a Programa o gt b de gt c Computadores gt Disciplina at b c Disciplina Programa o de Computadores Figura 179 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 180 Erro ao tentar representar um string contendo aspas Aspas s o usadas para marcar o in cio e o fim de strings e isto pode provocar um problema ao se tentar representar strings que cont m aspas como mostrado na Figura 180 Para isso basta colocar duas aspas consecutivas na posi o desejada como na Figura 181 gt x String com aspas duplas X String com aspas duplas gt x String com aspas simples x String com aspas simples Figura 181 Strings contendo aspas Str
267. ro de colunas de M Se M um vetor ou bem o n mero de linhas ou bem o n mero de colunas de M igual a 1 e portanto length M nos fornece o n mero de elementos de M Com isto chegamos vers o final da fun o Soma mostrada na Figura 262 function s Soma A Calcula a soma dos elementos do vetor A s 0 for k 1 length A s s A k end endfunction Figura 262 Vers o final da fun o Soma J podemos portanto testar o nosso programa Fazendo File Exec no Scilab e selecionando o arquivo TestaSoma sce temos entretanto uma surpresa desagrad vel uma mensagem de erro como mostra a Figura 263 sa Soma a error 4 undefined variable Soma at line 3 of exec file called by doresiScilabYTestaSoma sce disp exec done Figura 263 Erro ao tentar executar o programa TestaSoma O que aconteceu que o Scilab ao executar o programa TestaSoma n o estava ciente da exist ncia da fun o Soma Nos esquecemos de usar a fun o exec arquivo com fun o no programa principal Corrigindo isso chegamos ao formato final do programa testador mostrado na Figura 264 Programa que testa a fun o Soma exec Soma sci a int 10 rand 1 4 sa Soma a printf in Soma gin sa Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 138 b int 10 rand 1 6 sb Soma b printf in Soma gin sb c int
268. rpreta o de um programa se faz seguindo o menu File Execute da console do Scilab essa execu o equivale digita o na console dos comandos presentes no arquivo Console File Edit Preferences Control Applications 2B X X EO BIA Editor romar an z Scicos gt sx a Matlab to Scilab translator A Figura 152 Abrindo o editor SciPad Aten o nunca use o Word ou qualquer outro editor de textos sofisticado para abrir e ou editar arquivos de programas Esses editores podem introduzir bytes de informa o de formata o o que perturba completamente a interpreta o do programa pelo Scilab No editor Scipad voc pode e Criar um novo programa atrav s do menu File New e Abrir para edi o um programa j existente atrav s do menu File Open e Editar um programa e Salvar o programa editado atrav s do menu File Save e Executar um programa atrav s do menu Execute Load into Scilab e v rias outras coisas que voc ir aprendendo aos poucos O Scilab trabalha com um diret rio corrente que a primeira op o de localiza o para procurar e para salvar arquivos Na console do Scilab voc pode escolher o diret rio corrente atrav s do menu File Change current directory O diret rio corrente do Scipad o diret rio corrente do Scilab no momento em que o editor aberto Um conselho organize os seus arquivos Perde se muito tempo procurando arquivos gravados n o se lem
269. rsion que voc pode obter no site 15 Fa a o download brinque com os par metros da digitaliza o frequ ncia de amostragem e bits de precis o e veja os resultados Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 13 importante observar que a convers o em qualquer dos dois sentidos nunca perfeita mas em muitos casos pode ser t o boa quanto se necessita 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 escrevem executam 44 v s o compostos por Instru es e Comandos l m transformam registram y Informa o Digital Figura 20 Computadores programas e informa o digital Programas 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 Informa o Digital rd a recebida enviada pelo computador de pelo computador para Atuadores Figura 21 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 14
270. s como a chegada de um carro em uma fila A fun o rand gera matrizes onde cada elemento um n mero entre O e 1 sorteado a cada chamada da fun o A Figura 225 mostra dois exemplos de uso desta fun o gt m rand 2 3 m 0 2113249 0 00022 0 6653811 0 7560439 0 3303 0 6283918 gt n rand 2 3 n 0 8497452 0 8782165 0 5608486 0 6857310 0 0683740 0 6623569 Figura 225 Matrizes rand micas Algumas vezes conveniente gerar matrizes aleat rias com valores inteiros entre digamos O e 100 Isto se faz com um comando como m int rand 2 3 100 muito til para quem como o autor destas linhas necessita com frequ ncia de exemplos de matrizes com valores inteiros A fun o int retorna a parte inteira de seu argumento Ade cd d 10 207 30 Ab x y Figura 226 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 uma matriz com y abaixo de x como mostrado na Figura 226 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 124 0 7173561 0 9995736 0 6754632 Figura 227 Gerando um vetor como resultado da aplica o de uma fun o elementar Scilab a um vetor A Figura 227 mostra outra forma de se construir uma matriz a partir de uma matriz j exist
271. s obtidos com dois computadores com velocidades distintas O gr fico da Figura 288 resulta desta tabela e ele torna clara a rela o de linearidade entre o valor do n mero primo e o tempo consumido pela fun o MenorFator 100 g0 S0 T 0 50 a O S000dj 1000000 1500000 20000 2500000 Figura 288 Tempo para fatora o em fun o do valor de n meros primos em dois computadores Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Algoritmos 153 A Ci ncia da Computa o se preocupa exatamente em determinar a complexidade de um algoritmo por uma an lise do algoritmo em si experimentos somente ajudam a formar uma intui o Um exame da fun o MenorFator Figura 279 nos teria permitido prever seu comportamento Quando o n mero testado primo a fun o modulo aplicada a todos os inteiros menores ou iguais a ele Como a se encontra todo o esfor o computacional poder amos j ter previsto um crescimento linear do tempo de execu o em fun o do valor do n mero primo examinado A constante de linearidade em si depende do computador onde a fun o MenorFator executada Para o notebook o tempo gasto com um n mero primo p aproximadamente igual an x 4 49 x 107 segundos para o desktop p x 2 31 x 107 segundos ou seja o desktop aproximadamente duas vezes mais r pido do que o notebook n o tome isso como uma afirmativa gen rica estamos falando do desktop
272. s 002400 000200 000202 Figura 125 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 arquivo um mapa da mem ria para ter acesso a essas opera es clique com o bot o direito do mouse sobre a mem ria A Figura 125 mostra o formato de um arquivo com a codifica o em hexadecimal do programa da Figura 123 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 74 2 4 4 Desvios Suponha agora que queremos construir para a CPU 0 um programa que some os conte dos das posi es 1 2 3 4 e 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 126 Soma de 2 parcelas Soma de 5 parcelas RAM Clk DR gt Bus ACC Clear Compare Clk ACC gt Bus Compare Clk Oper gt Bus RAM Bus DR Clk Subtract ACC gt Bus ACC CIk Oper gt Bus DR Clk Subtract Out Clk ACC Clear FERE FAAN GEE GORE ROO DEDE ECZA E E EE e A O ES ej Es EE E E EE Ei ES
273. s a combina o das solu es dos subproblemas exige a intercala o Na ordena o por parti o a divis o em subproblemas exige a execu o do algoritmo de parti o mas a combina o das solu es dos subproblemas consiste apenas em sua justaposi o 4 4 Algoritmos Num ricos Nesta se o n s 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 dif cilmente 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 finito de bits na representa o de ponto flutuante 4 4 1 Integra o por Trap zios O primeiro passo para se obter uma aproxima o num rica de uma integral f fG 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 X5 Xn4 1 N s temos x a Xn 1 b Xi 1 xi A b a n paratodol lt i lt n 10 O lado esquerdo O lado direito de o9 de cada ret ngulo cada ret ngulo coincide com a coincide com a curva o euro 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 Xim 0 8 0 9 1 0 Xi l Xi 1 Figura
274. s no comando de atribui o como em x 2 3 4 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 91 gt 2 3 4 ans EA gt 2 3 4 4096 gt 2 3 4 ans 2 418D 24 gt 2 3 4 ans 2 418D 24 gt 2 3 4 4096 gt 2 3 4 ans 10 gt 2 3 4 ans 14 Figura 148 Prioridades e par nteses influenciando o valor de uma express o aritm tica Na Figura 148 n s vemos alguns exemplos de como o Scilab interpreta express es aritm ticas De uma forma geral recomend vel o uso de par nteses para tornar clara a inten o do programador 3 1 2 Programas Scilab Para tentar tornar clara a utilidade de um programa vamos resolver com a console Scilab uma equa o de segundo grau que tem a forma ax bx c 0 N s queremos calcular as ra zes para a 534 2765 b 9987 3431 e c 225 7690 N s sabemos que as ra zes s o encontradas pelas f rmulas b vVA na 2a e b VA DGI 2a onde A b 4ac A primeira coisa a fazer inicializar vari veis a b e c conforme mostrado na Figura 149 gt ba 534 2765 a 534 2765 gt b 9987 3431 b 9987 3431 gt c 225 7690 co 229 769 Figura 149 Inicializa o dos coeficientes de uma equa o de 20 grau Depois calculamos e as ra zes como mostrado na Figura 150 Introdu o Organiza o e Programa o de Compu
275. s obtido com plot2d A Figura 232 mostra um gr fico obtido dessa forma Repare que o vetor x um vetor coluna e que como na Figura 226 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 3 2 7 Matrizes de Strings e Arquivos Matrizes podem ter strings como valores de seus elementos como mostram os exemplos na Figura 233 Introdu o Orga gt ba a1 wag a ts SA 4 gt b Z mgn maa b Isl l lsa e Figura 233 Exemplos de matrizes de strings niza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 127 poss vel ler um arquivo e transformar cada uma de suas linhas em um elemento de um vetor coluna de strings Para isso deve ser usado o comando mget 1 da onde da um descritor de arquivo j aberto fpath uigetfile da mopen fpath pr linhas mgetl da mclose da Figura 234 Leitura de um arquivo como um vetor coluna de strings usando o comando mgetl A Figura 234 mostra um uso t pico do comando mget 1 precedido pela localiza o e da abertura do arquivo e seguido pelo fechamento do arquivo gt linhas linhas IE agora Jos IA festa acabou ta luz apagou lo povo sumiu ta noite esfriou le agora Jos le agora voc Ivoc que sem nome que zomba dos outros Ivoc que faz versos que ama protesta le agora
276. sa a conter o fatorial de i Como o loop termina com i igual a n o valor de fat na sa da do loop o fatorial de n Tabela 14 Tabela de Senos Vamos agora usar o comando for para a constru o de uma tabela como a Tabela 14 com x variando de 0 a 27 de 0 2 em 0 2 Antes por m vamos aprender mais sobre o comando for cuja forma geral est mostrada na Figura 162 for lt vari vel gt lt inicial gt lt passo gt lt limite gt lt bloco for gt End Figura 162 Forma geral de um comando for Aqui lt inicial gt lt passo gt e lt limite gt s o express es que controlam os valores atribu dos vari vel indexadora lt vari vel gt a cada itera o do loop e tamb m a condi o de parada do loop Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 99 for i 1 2 10 printf Nai end 1 1 i 3 i 5 i 7 i 9 Figura 163 Exemplo de comando for com passo diferente de 1 No exemplo da Figura 163 e A vari vel indexadora i que assume o valor lt inicial gt 1 na primeira itera o do loop e Aofim de cada itera o soma se 2 0 lt passo gt vari vel indexadora ou seja i assume os valores 1 3 5 e Tamb m ao fim de cada itera o o novo valor da vari vel indexadora comparado com o lt limite gt eo loop termina quando o valor da vari vel indexadora tiver ultrapassado o lt limite gt No caso
277. sas entradas s o normalmente usadas para inicializa o ou re inicializa o do flip flop Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 57 1 2 3 4 5 6 7 8 9 10 11 12 13 Tempo Figura 98 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 98 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 0 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 99 Um registrador de 4 bits formado por flip flops tipo D Flip flops podem ser agrupados formando registradores A Figura 99 mostra um registrador de 4 bits compo
278. sd 7 f s gt lA A Dada pus Es J Figura 218 O produto de uma matriz por sua inversa ligeiramente diferente da matriz identidade Ali vemos elementos n o nulos fora da diagonal principal tanto de A IA como de IA A Isso mais uma manifesta o dos erros de arredondamento que ocorrem em opera es aritm ticas de ponto flutuante No caso esses erros n o s o motivo de preocupa o pois os elementos n o nulos fora da diagonal t m valor absoluto ordens de grandeza menores que os elementos das matrizes Podemos usar a inversa de uma matriz para resolver um sistema de equa es lineares ax b onde por exemplo 2 1 3 a 2 1 1 4 1 3 i Relembrando podemos resolver a equa o multiplicando os dois lados por a t alax x a b Usando a console do Scilab o sistema pode ser resolvido com a sequ ncia de opera es mostrada na Figura 219 gt b 4 0 1 inv a b Figura 219 Resolvendo um sistema de equa es lineares Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 122 A precis o do resultado pode ser avaliada calculando ax b o que pode ser feito no Scilab como mostrado na Figura 220 bresiduo a x D residuo O 2 220D 16 O Figura 220 Calculando o erro num rico da solu o encontrada 3 2 5 Construindo matrizes Vetores com valores regularmente espa ados podem ser constru dos de
279. se p 1 end endfunction Figura 295 A fun o seqSearch para pesquisa seq encial 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 sequencial O n ou seja da ordem den ou ainda dizemos que a pesquisa sequencial tem complexidade linear 4 2 2 Pesquisa Bin ria Quando a tabela tem suas entradas dispostas em ordem crescente ou decrescente n s podemos usar um algoritmo muito mais eficiente para a pesquisa e que se assemelha ao m todo como n s humanos procuramos palavras em um dicion rio A primeira compara o feita n o com o primeiro elemento da tabela mas com o elemento no meio da tabela Supondo que os elementos da tabela est o em ordem crescente se a chave procurada for menor que o elemento no meio da tabela podemos restringir a pesquisa metade inferior da tabela pois a parte superior s cont m elementos maior
280. sos 4 5 Complexidade de Problemas 4 5 1 Complexidade da Ordena o N s vimos que o tempo necess rio para ordenar um vetor de tamanho n cresce com n para o algoritmo de ordena o por sele o de troca e cresce com nlogan para o algoritmo de ordena o por intercala o Existiriam algoritmos com curvas de crescimento melhores do que o MergeSort Seria poss vel descobrir um algoritmo de ordena o que seja digamos O n Se consideramos somente algoritmos de ordena o baseados em compara es a resposta a esta pergunta negativa como veremos Um algoritmo de ordena o pode receber como entrada um vetor com elementos dispostos em qualquer ordem e deve produzir uma permuta o destes elementos disposta em ordem crescente N s vamos notar a permuta o ordenada pelos ndices dos elementos na permuta o de entrada Ao receber a entrada todas as permuta es s o poss veis fazer uma compara o permite reduzir o conjunto de permuta es quelas que obedecem ao resultado da compara o feita Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 183 Figura 346 Uma rvore de decis es para ordena o de 3 elementos A Figura 346 mostra um arranjo poss vel de compara es para a ordena o de 3 elementos Cada caixa mostra as permuta es que ainda devem ser consideradas ap s uma compara o Inicialmente todas as 3 6 permuta es s o poss veis Se o ele
281. spondem s instru es mOpCode Eg 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6e s a 3 2 1 o D Signals Figura 400 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 400 Temos dois tipos de microinstru es e microinstru es de sinal onde os bits de O a 22 s o valores para os sinais de controle clocks de registradores e mem rias controles de barramentos que a unidade de controle deve prover para o circuito principal da CPU ou Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 222 e microinstru es de desvio que s o utilizadas para guiar o fluxo de execu o das microinstru es O tipo da microinstru o ditado pelo bit mais significativo o bit 23 Tabela 20 Microinstru es de Desvio Desvia para a micro instru o inicial da jmpNext 0000 E instru o no registrador IR da CPU Desvia para o operando se o modo de jmpIMMEDIATE 0001 j endere amento for Imediato Desvia para o operando se o modo de jmpDIRECT 0010 j j endere amento for Direto Desvia para o operando se o modo de jmpINDIRECT 0011 endere amento for Indireto Situa o inesperada n o deveria error 0100 acontecer Acende um led Desvia para a micro instru o apontada return 0101 pelo
282. sto por flip flops do tipo D onde vemos que e um mesmo sinal de clock comanda os 4 flip flops e na subida deste sinal isto quando o clock passa de O para 1 as quatro entradas D s o copiadas para os flip flops Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 58 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 Memory File Edit Project Simulate Window Help Data Bit Width BO Figura 100 Um registrador da biblioteca Memory do Logisim com largura de 8 bits Registradores da biblioteca Memory do Logisim s o sempre apresentados como um nico bloco que se assemelha a um flip flop mas que capaz de armazenar um n mero de bits escolha do usu rio Um cabo conectado entrada D de um registrador de 4 bits deve tamb m ter uma largura de 4 bits Figura 101 Dois circuitos equivalentes No circuito de cima fios e registradores t m 1 bit de largura no de baixo 4 bits Na Figura 101 n s vemos dois circuitos equivalentes cada um com dois registradores de 4 bits conectados
283. t date unknown cited 2011 Mar 7 Available from http www top500 org 9 Lawrence Livermore National Laboratory BlueGene L Photo Gallery Internet date unknownl cited 2011 Mar 11 Available from https asc lInl gov computing resources bluegenel photogallery htm l 10 DIY Calculator Heath Robinson Rube Goldberg HRRG Computer Internet date unknown cited 2011 Mar 11 Available from http www diycalculator com popup m hrrgcomp shtml 11 Alan Turing Wikipedia the free encyclopedia Internet date unknown cited 2011 Mar 11 Available from http en wikipedia org wiki Alan Turing 12 Alan M Turing On Computable Numbers with an Application to the Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Refer ncias 207 13 14 15 16 17 Entscheidungsproblem Proceedings of the London Mathematical Society 1937 s2 42 1 230 265 Legit Reviews Intel Core i7 980X Six Core Processor Extreme Edition Review Internet date unknownl cited 2011 Mar 11 Available from http www legitreviews com article 1245 1 Barret Lyon The Opte Project Internet date unknown cited 2011 Mar 7 Available from http opte org Hans Lohninger Learning by Simulations A D Conversion Internet date unknownl cited 2011 Mar 7 Available from http www vias org simulations simusoft adconversion htm l Magnetic core memory Wikipedia the free encyclopedia In
284. tadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 92 gt delta b 2 4 a c delta 99264530 gt brl b sgrt delta 2 a ri 0 0226329 gt br2 b sgrt delta 2 a r2 LO BrUOSDTD Figura 150 C lculo das ra zes da equa o de 20 grau Repare que usamos vari veis delta r1 er2 com nomes aceit veis para o Scilab e com significado para n s Repare tamb m nas express es usadas nos comandos de atribui o Erros comuns cometidos por iniciantes s o e escrever delta b 2 4ac omitindo os operadores de multiplica o que entretanto s o imprescind veis para que o Scilab compreenda a express o ou e escreverrl b sgrt delta 2 a o que na verdade levaria ao c lculo de b 4 es z n ER a O que Nao e o que queremos Sempre bom verificar os resultados de um c lculo ou de um programa Para isso podemos tamb m usar o Scilab com os comandos mostrados na Figura 151 Nesta figura voc deve reparar e na apari o da vari vel ans que utilizada pelo Scilab para armazenar resultados de express es soltas que n o fazem parte de um comando de atribui o e na nota o 3 865D 12 que a forma de se escrever a constante 3 865 x 10712 Ali vemos que o valor do polin mio da equa o nas ra zes que calculamos n o exatamente zero Isso n o deve constituir preocupa o pois os valores s o relativamente muito pequenos da ordem de 10712 para r1 e 107
285. talar em seu computador um simulador com objetivos did ticos que atende muito bem s nossas necessidades Este texto segue o tutorial presente no help do sistema Ao iniciar o Logisim voc ver uma tela como a mostrada na Figura 50 talvez diferindo em alguns detalhes Ali podemos ver uma barra de menu uma barra de ferramentas um painel de explora o e um painel para o desenho efetivo de circuitos Logisim main if Uraitled File Edit Project Simflate Window Help b r Al8 0 gt D D 3 Untitled E main H Base 5 Gates H Plexers 45 Arithmetic 5 Memory 10 Input Output DER Figura 50 Tela inicial do Logisim Para o nosso primeiro circuito vamos come ar colocando duas portas AND clicando sobre o s mbolo correspondente na barra de ferramentas e posicionando as portas na rea de Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 34 desenho como mostrado na Figura 51 Repare na tabela de atributos que exibe e permite a edi o de dados relativos ao elemento selecionado no caso a porta AND inferior Logisim main of Untitled 2 DER Fie Edt Project Simulate Window Help bMjAals o gt D D D Untitled 2 A main 45 Base amp 4 Gates 1 Plexers 3 Arithmetic 1 Memory 5 Input Output Figura 51 Duas portas AND Depois usando ainda a barra de ferramentas vamos colocar uma porta O
286. tamb m o total de pontos obtidos pelo aluno e Imprima conforme o caso a frase lt aluno gt com lt pontos gt voc passou ou ent o caso o aluno n o tenha obtido um m nimo de 60 pontos a frase lt aluno gt com lt pontos gt voc n o passou Exemplos seriam Jos com 80 pontos voc passou ou Jos com 40 pontos voc n o passou Leitura do nome do aluno Nome input Seu nome por favor Leitura dos pontos obtidos Pontos input Nome quantos pontos voc conseguiu Decis o e impress o do resultado 1f Pontos gt 60 then printf s com g pontos voc passou Nome Pontos else printf s com g pontos voc n o passou Nome Pontos end Figura 184 O programa PassouNaoPassou sce A Figura 184 mostra o programa PassouNaoPassou sce que atende a esta especifica o Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 106 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 185 Duas execu es do programa PassouNaoPassou sce Dois exemplos de execu es deste programa est o na Figura 185 Neste programa importante observar e Afrase utilizada no comando input para a vari vel Pontos o resultado de uma opera o de concatena
287. ternet date unknown cited 2011 Mar 12 Available from http en wikipedia org wiki Magnetic core memory Euclidean algorithm Wikipedia the free encyclopedia Internet date unknown cited 2011 Mar 8 Available from http en wikipedia org wiki Euclidean algorithmicite note 2 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 208 Ap ndice A A CPU Pipoca Neste Ap ndice n s apresentamos a CPU Pipoca em um n vel de profundidade destinado a professores e a alunos avan ados O circuito da Figura 111 tem os mesmos elementos b sicos de uma CPU veja tamb m a Figura 377 com mem ria barramentos e registradores controlados por sinais e uma unidade l gico aritm tica que realiza transforma es como somas subtra es etc Um circuito assim tem teoricamente a mesma capacidade de processamento de transforma o de informa o de um computador Dizemos teoricamente porque preciso que algu m se disponha a manipular os valores de entrada e os 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 s o controlados por Y Sinais de Controle da CPU Figura 377 Elementos b sicos para processamento e registradores da CPU Pipoca A id ia central de um computador a automa o da emiss o de se
288. tion p MenorFator n p 2 while modulo n p lt gt 0 p p t 1 end endfunction Figura 279 A fun o MenorFator Com isso n s terminamos o desenvolvimento do nosso programa importante que voc observe os ganhos obtidos com esse enfoque e Ao desenvolver o programa principal n s nos preocupamos com a intera o com o usu rio e exceto pela defini o de funcionalidade pudemos esquecer do problema de encontrar o n mero primo que desejamos e Ao desenvolver a fun o MenorPrimoMaiorOuIguala n s esquecemos da intera o com o usu rio e nos preocupamos somente com a pesquisa seq encial por um primo a partir de um n mero dado saber se um n mero primo tamb m um problema deixado para outro momento e Ao desenvolver a fun o Primo nosso foco simplesmente descobrir um algoritmo para saber se um n mero inteiro primo ou n o todo o contexto restante pode ser esquecido Para isso o par metro de entrada n comparado com o seu menor fator e a descoberta deste menor fator deixada para depois e Ao desenvolver a fun o MenorFator a nica preocupa o encontrar o menor divisor de um n mero inteiro esta divis o de tarefas que permite o dom nio de programas mais complexos O desenvolvimento de cada fun o pode ser feito por um desenvolvedor em momentos diferentes ou por pessoas distintas em uma mesma equipe 3 3 6 Desenhando Mapas Para se desenhar um pol gono usando o Scilab basta
289. to 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 64 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 etc 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 Temos ainda o registrador MAR que alimenta a entrada de endere o da mem ria principal e que alimentado pelo barramento 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 111 permitem controlar diversos flu
290. to ope dAGo 19 25 Sa da do DR vai para Dbus 1A 26 o ACC copia sa da da ALU 1B 27 jmp Fetch 1 Fetch da pr xima instru o 41 65 SUB jsr GetOperand 1 Resolve endere amento operando efetivo no DR 42 66 o Sa da do DR vai para Dbus pino Subtract da ALU 1 43 67 1 ACC copia a sa da da ALU ACC Dbus 4 68 jmp Fetch 1 Fetch da pr xima instru o Figura 415 Micro c digo para as instru es ADD e SUB Na Figura 415 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 416 se encarrega de resolver o modo de endere amento colocando o operando efetivo da instru o no registrador DR Comments A 5l I I E Z ala jE E O j Z jO Ja ja ja 2 2 lt lt lt a O jA JA 05 5 GetOperand jmpIMMEDIATE Immediate 1 06 6 jmpDIRECT Direct 1 Desvia para micro instru es apropriadas 07 7 jmpINDIRECT Indirect 1 o 8 error GetOperand 1 Modo de endere amento inexistente 09 9 Immediate O operando da instru o vai para o Dbus OA 10 DR copia o Dbus 0B 11 return Retorna OC 12 Direct O operando da instru o vai para o Dbus OD 13 MAR copia o Dbus sa da do MAR vai para o Abus OE 14 o Sa da da RAM vai para Dbus oF 15 o 1 DR copia o Dbus 10 16 return 1 Retorna 11 17 Indirect on O operando da instru o vai para o Dbus 12 18 o MAR copia o Dbus sa da do MAR vai para o
291. tos Sequenciais Circuitos sequenciais diferem dos circuitos combinat rios por serem capazes de armazenar dados Em um dado instante suas sa das n o dependem apenas dos valores correntes de suas entradas como nos circuitos combinat rios mas s o tamb m fun es de valores armazenados 2 3 1 Flip flops e Registradores Figura 97 Um flip flop tipo D O circuito sequencial mais b sico conhecido pelo nome em ingl s de flip flop Como pod amos esperar um flip flop capaz de armazenar um nico bit Existem v rios tipos de flip flop mas aqui n s s veremos flip flops ditos do tipo D A Figura 97 mostra um flip flop tipo D dispon vel no Logisim e que possui 5 pinos e Pino D onde fica a informa o o Dado que pode vir a ser armazenada no flip flop e Pino Clock um pino que funciona como um obturador de uma m quina fotogr fica No exato instante em que o sinal 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 Pinos Sete Reset s o entradas auxiliares que facilitam a imposi o de um valor para o flip flop Es
292. tos obtidos Pontos input Nome quantos pontos voc conseguiu Determina o do conceito 1f Pontos gt 90 then Conceito A else 1f Pontos gt 80 then Conceito B else 1f Pontos gt 70 then Conceito C else if Pontos gt 60 then Conceito D else 1f Pontos gt 40 then Conceito E else Conceito F end end end end end printf 3s com g pontos voc obteve o conceito s Nome Pontos Conceito Figura 188 O programa PontosConceito sce Como j dissemos e continuaremos a dizer ao longo desse curso programas s o feitos para serem executados por computadores mas tamb m para serem lidos por humanos Ao fazer um programa voc deve se preocupar com a sua legibilidade tanto por outras pessoas que venham a trabalhar com ele como com voc mesmo algum tempo depois de t lo escrito Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 109 A disposi o gr fica dos comandos em um programa tem grande influ ncia em sua legibilidade Talvez voc j tenha reparado que os blocos nos comandos if e for sempre apare am ligeiramente deslocados para a direita com rela o posi o do comando que os delimita Isso porque com esse deslocamento a identifica o do come o e do fim de cada bloco fica muito facilitada e os poss veis fluxos de execu o se tornam mais claros para n s if delta lt 0 then printf
293. tra um circuito que implementa essas express es l gicas Este circuito conhecido como circuito meia soma por contraste com o circuito soma completa que veremos a seguir Figura 65 Circuito l gico para soma bin ria de 1 bit ou circuito meia soma Temos aqui um resultado important ssimo n s fomos capazes de construir um circuito l gico com duas entradas de 1 bit representando bin rios sem sinal e que produz em sua sa da dois bits representando a soma das entradas tamb m codificado como um bin rio sem sinal Ou seja conseguimos fazer contas com as fun es l gicas NOT AND e OR 2 2 4 2 Soma de bin rios com v rios bits Tudo bem conseguimos fazer um circuito que realiza a soma de duas vari veis de 1 bit Mas isso muito pouco Para fazer qualquer coisa mais s ria precisamos ser capazes de somar vari veis de digamos 32 bits como s o representados inteiros 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 s duas vari veis a serem somadas e 33 bits de sa da pois a soma de duas vari veis de 32 bits pode ter 33 bits O problema que essa tabela teria 2 4 18 446 744 073 709 551 616 linhas Ou seja mesmo se teoricamente conseguir amos construir o somador de 32 bits pelo m todo
294. tros 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 digital anal gica Amplitude Original Signal 0 200 400 600 800 1000 Time ns Figura 14 Um sinal anal gico senoidal Para digitalizar um sinal de entrada como o da Figura 14 preciso obter amostras de sua amplitude em instantes discretos no tempo e digitalizar obter um valor num rico cada amostra Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Introdu o 10 Amplitude w Original Signal Amplitude samplec Signal 4 0 4 0 0 DI 400 RO agi 1000 0 e 40i GOO agi 1000 Time ns Time ns al flsamplej 41 67 MHz al E t Resolution Bit M Show Sampling Points sample cd ns W Show Sampled Signal Show Quantization Error Figura 15 Sinal original e sinal amostrado nos instantes correspondentes aos tra os verticais em vermelho usando 8 bits e frequ ncia de amostragem de 41 67 MHz A Figura 15 ilustra esse processo de digitaliza o Se reconstituirmos este sinal a partir dos valores das amostras mantendo constante o valor do sinal nos intervalos de tempo entre duas amostras iremos obter o sinal direita na figura Sem d vida o sinal reconstitu do se assemelha ao sinal original mas as perdas decorrentes da digitaliza o s o
295. ttled Jose Figura 73 Abrindo a janela de an lise combinat ria do Logisim No passo seguinte n s informamos ao Logisim os nomes das vari veis de entrada Devemos clicar sobre a aba Inputs se n o estiver j selecionada e para cada vari vel de entrada digitar o seu nome e clicar sobre o bot o Add conforme a Figura 74 Combinational Analysis Window Help Bputs Table Expression Minimized Figura 74 Vari veis de entrada de uma tabela da verdade no Logisim Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 46 Entre com as vari veis na ordem da esquerda para a direita em que voc deseja que elas apare am na tabela da verdade No caso primeiro a2 depois al e depois aQ Para as vari veis de sa da o procedimento similar Selecione a aba Outputs e entre um a um com os nomes das vari veis de sa da na ordem em que voc deseja que apare am na tabela da verdade No caso primeiro b2 depois bl e depois bO Combinational Analysis Window Help Expresson Mrimized Figura 75 Nomeando vari veis de sa da em uma tabela da verdade no Logisim Agora preciso entrar com os valores da tabela da verdade Clique sobre a aba Table e voc ver uma tela como a da Figura 76 Combinational Analysis O Oooo so so a 0 l 0 0 0 MM MM DM DE DE De MM MM MM DEDE DEDE DE de D DE
296. u 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 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 212 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 387 Formato de uma instru o da Pipoca N s vimos que instru es devem ser codificadas tamb m em bits A Figura 387 mostra o formato que escolhemos para as instru es da Pipoca Cada instru o tem 16 bits sendo 4 para o c digo da instru o 2 para o modo de endere amento que explicaremos a seguir e 10 para um operando Instru es s o definidas em termos de altera es na vis o que um programador tem da CPU O conjunto completo de instru es da Pipoca est mostrado na Tabela 17 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 17 Conjunto de instru es da Pipoca y ADD ompara o operando com ACC e coloca o resultado em Compare ara a execu o do programa Espera InFull 1 e transfere o valor de Input para a palavra apontada pelo operando faz InFull 0 INPUT Desvia para a palavra apontada pelo opera
297. ua o a input Digite o valor de a b input Digite o valor de b c input Digite o valor de c delta b 2 4 a c if delta gt 0 then rl b sqrt 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 187 O programa Eq2g4 sce que calcula ra zes de diversas equa es de 20 grau A Figura 187 mostra o programa Eq2g4 sce que resulta da aplica o deste padr o sobre o programa Eq2g3 sce O menu Edit Indent Selection do editor Scipad muito til para indentar um bloco de comandos selecionados 3 1 6 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 i fs aninhados vamos agora desenvolver um programa que e Leia o nome do aluno que responde por exemplo Paulo e Leia tamb m o total de pontos obtidos pelo aluno e Imprima conforme o caso a frase lt aluno gt com lt pontos gt voc obteve o conceito X onde X determinado pela Tabela 15 Exemplos seriam Paulo com 81 pontos voc obt
298. uan as intermedi rias N o dif cil ver que ao acrescentar um bit a um conjunto de bits multiplicamos por 2 o n mero de combina es j existentes Ou seja com n bits temos 2 combina es e 2 cresce muito rapidamente quando o valor den aumenta e Com 8 bits podemos representar 2 256 coisas diferentes Isso suficiente para atribuir um c digo distinto para cada letra do alfabeto distinguindo entre mai sculas e min sculas e tamb m para caracteres especiais como etc Um conjunto de 8 bits chamado de byte e Com24 bits temos 2 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 gt 10 1 000 048 576 gt 10 1 000 000 073 741 824 gt 10 1 000 000 000 099 511 627 776 gt 10 1 000 000 000 000 125 899 906 842 624 gt 10 1 000 000 000 000 000 152 921 504 606 846 976 gt 10 1 000 000 000 000 000 000 180 591 620 717 411 303 424 gt 10 1 000 000 000 000 000 000 000 208 925 819 614 629 174 706 176 gt 10 1 000 000 000 000 000 000 000 000 Podemos ver que o uso de apenas 2 s mbolos n o traz
299. ue n s encontraremos o menor valor presente no vetor aplicando repetidamente os passos acima at encontrarmos o limite superior do vetor Precisamos entretanto de um ponto de partida para o algoritmo Isto pode ser facilmente obtido pois claro que parak 1 A 1 o menor elemento entre os k 1 primeiros elementos de A n o Podemos agora chegar vers o final da fun o Minimo mostrada na Figura 268 function m Minimo A Encontra o menor valor presente no vetor A m A 1 for k 2 length A if m gt A k m A k end end endfunction Figura 268 A fun o M nimo Execute agora o programa TestaMinimo sce voc dever obter uma sa da parecida com a Figura 269 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Ambiente e Linguagem Scilab 140 M nimo exec done Figura 269 Sa da do programa TestaMinimo sce 3 3 4 Recursividade N s vimos que uma fun o pode chamar outra fun o que pode chamar outra fun o que pode chamar outra fun o em um encadeamento de chamadas de profundidade arbitr ria Uma fun o pode tamb m chamar a si pr pria o que a torna uma fun o recursiva N s veremos ao longo desse curso que uma formula o recursiva muitas vezes a forma mais natural para a descri o de um algoritmo Como um primeiro exemplo vamos mostrar uma fun o recursiva para o c lculo do fatorial de um n mero N s sabemos que 1 1
300. ue voc deve ter em mente ao iniciar seu estudo Uma linguagem de programa o como as linguagens naturais une riqueza de express o a detalhes sint ticos e algumas arbitrariedades Detalhes e arbitrariedades frequentemente v m de escolhas feitas no passado incluindo algumas que j n o fazem mais sentido mas que s o mantidas por uma in rcia natural Seu aprendizado exige uma postura paciente pois envolve no in cio uma taxa relativamente alta de memoriza o Mas como uma linguagem natural a flu ncia vem com o uso e com a flu ncia vem a percep o da riqueza da linguagem O Scilab tamb m um ambiente que interpreta comandos e programas Ele oferece uma console para intera o com o usu rio um editor para a constru o de programas o Scipad e tamb m emite mensagens de erros relativos tanto obedi ncia de comandos e programas s regras da linguagem como a problemas que podem ocorrer na execu o como uma divis o por zero Console File Edit Preferences Control Applications ZzElXGO B AB 6 scilab 5 1 Consortium Scilab DIGITEO Copyright c 1989 2009 INRIA Copyright c 1989 2007 ENPC Startup execution loading initial environment Figura 143 cone e tela inicial com a console do Scilab A Figura 143 mostra a tela obtida ao clicar sobre o cone do Scilab uma janela simples com uma barra de menus e uma barra de ferramentas e um painel central com um prompt d
301. uer x real e pode ser calculado por uma s rie de Taylor que uma soma de infinitos termos com a forma abaixo 2 3 eE 1 0 lt x lt o 1 2 3 ou lembrando que 0 1 0 6 x ER i 0 Esta s rie converge para qualquer valor de x N s podemos ver que a partir do termo onde i gt x il cresce mais rapidamente que x 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 339 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 180 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 339 Cabe alho da fun o expTaylor Para testar esta fun o o programa expTaylor teste mostrado na Figura 335 l um valor para a toler ncia Depois repetidamente l valores para a vari vel x calcula e compara os valores retornados pela fun o expTaylor que n s desenvolvemos e pela fun o exp fornecida pelo Scilab que bastante confi vel pois utiliza t cnicas muito sofisticadas de c lculo num rico exec expTaylor sci tol input ntol x input i
302. uito principal da CPU Pipoca Complicado Sem d vida mas vamos por partes mingau quente se come pelas beiradas Primeiramente voc deve reparar que neste circuito o principal complicador a unidade de controle o ret ngulo vertical na parte inferior do circuito Para ali v o muitos fios e dali saem outros tantos Isto n o de se estranhar posto que a fun o da unidade de controle como dissemos levantar os sinais de controle na sequ ncia e tempos adequados para a implanta o dos fluxos de dados que implementam as instru es de m quina Como exemplos est o destacados na Figura 392 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 393 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 218 Reset Clock Clock SetinEmpty SetOutFull Figura 393 Entradas e sa das da unidade de controle O circuito principal da CPU Pipoca tem ainda circuitos auxiliares para sincroniza o de entrada e sa da colocados na parte superior do diagrama e um circuito para depura o debug de programas no canto inferior direito que bloqueando o sinal de clock permite que a execu o de um programa se interrompa ao t rmino de cada instru o executada
303. ura 127 Formato de micro instru es que contempla instru es de desvio A Figura 127 mostra como as micro instru es s o codificadas na CPU 1 e Seo bit 23 o mais significativo for igual 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 de operando codificado como na CPU 0 nos 16 bits menos significativos e Se os 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 000001 400001 002000 002002 Oper 20000000 10000000 Figura 128 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 23 da micro instru o corrente Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 76 Para alterar o ciclo de micro instru o n s temos que modificar a unidade de controle e o contador de programa da CPU O Na Figura 128 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
304. us 0 Figura 104 Exemplos de fluxos de dados realiz veis pelo circuito da Figura 103 O circuito da Figura 103 permite que um dado na entrada In seja copiado por qualquer dos registradores A B ou C e permite tamb m que o valor em qualquer registrador seja copiado por qualquer um dos outros registradores Estes fluxos s o controlados pelos sinais de clock dos registradores e de controle dos controlled buffers Dados s o transferidos de um ponto para outro ligando e desligando esses sinais em uma sequ ncia apropriada para a transfer ncia desejada como mostram os exemplos na Figura 104 2 3 3 Mem rias O Logisim oferece mem rias RAM Random Access Memory e ROM Read Only Memory como componentes de sua biblioteca Memory Mem rias armazenam informa es como conjuntos de bits chamados palavras Cada palavra possui um endere o na mem ria Uma mem ria tem como atributos sua largura de dados isto o n mero de bits em cada palavra da mem ria e a largura do endere o Com n bits de endere o uma mem ria tem no m ximo 2 palavras No Logisim a largura de bits do endere o determina tamb m o tamanho da mem ria que tem exatamente 2 palavras Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 61 mo 0000 J a DR Tr DADA E o a O Ge pus Joo o GR rea RO Dre dA PDOT OU oa gire go O RR O DM E Hips we ca Edo ah e nin dE e A Qu o Gu do c
305. ut n k input k C lculo do fatorial de n n fat n i 1 C lculo do fatorial de n k n k fat n k i C lculo do fatorial de k ck fat k i fat n fat_n k fat k Figura 246 Programa para c lculo do n mero de combina es de n ka k Voc pode reparar que foram feitas tr s adapta es do c digo uma para cada fatorial a ser calculado N s vamos mostrar que com o uso de fun es este programa se torna muito mais claro Para isso vamos dividir o programa em duas partes o programa principal e a fun o Figura 247 Programa principal para o c lculo de combina es O programa da Figura 247 faz a mesma coisa utilizando a fun o fatorial cujo c digo est na Figura 248 function fat fatorial n fat 1 for 1 1 n fat fat i end endfunction Figura 248 A fun o fatorial O programa da Figura 247 cont m chamadas da fun o fatorial como usa fun es ele recebe a designa o de programa principal A execu o de um programa com fun es se inicia pelo programa principal A execu o de uma chamada transfere o controle para a fun o ao t rmino da execu o da fun o o controle devolvido para o ponto de chamada em uma opera o que chamamos de retorno da fun o A cada chamada um par metro da fun o utilizado o que permite um reaproveitamento de c digo muito mais elegante A leitura do programa principal tamb m muito mais f cil a
306. valor do n mero primo sendo fatorado Portanto sua complexidade T n O N2 0 2 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 Quandon 20 a fun o modulo chamada aproximadamente 22 1 048 576 vezes pela MenorFator e 1024 vezes pela MenorFator2 Ao passar o n mero de bits da entrada de 10 para 20 a MenorFator demora 1024 vezes mais enquanto a MenorFator2 demora 32 vezes mais Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 155 Tamanho da Inst ncia do Problema Fun o de complexidade 20 30 40 50 0 00001 0 00002 0 00003 0 00004 0 00005 0 00006 segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos 0 1 3 2 24 3 1 7 5 2 13 0 segundos segundos segundos minutos minutos minutos 0 001 1 0 17 9 12 7 35 7 36 segundos segundos segundos dias anos s culos 0 059 58 6 3855 2x 10 1 3x 10 segundos minutos anos s culos s culos s culos Figura 291 Quadro comparativo de fun es de complexidade
307. vetor A obter outro vetor com os mesmos elementos de A dispostos em ordem crescente ou decrescente como mostra a Figura 298 Vetor n o ordenado ordenado Figura 298 Ordena o de um vetor 4 3 1 Sele o e Troca O primeiro algoritmo que iremos estudar conhecido como o m todo de Sele o e Troca em ingl s Select Sort por motivos que se tornar o bvios Vamos come ar apresentando o cabe alho de uma fun o que iremos desenvolver para implantar esse algoritmo mostrado na Figura 299 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Algoritmos 160 function sA SelectSort A Constr i o vetor sA com os mesmos elementos do vetor A dispostos em ordem crescente endfunction Figura 299 Cabe alho de uma fun o de ordena o Isso j nos permite desenvolver um programa para testar a fun o mostrado na Figura 300 exec SelectSort sci a int 10 rand 1 4 aa SelectSort a int 10 rand 1 6 bb SelectSort b c int 10 rand 1 9 cc SelectSort c Figura 300 O programa SelectSort teste sce O programa SelectSort teste sce bastante simples e nos permite verificar por inspe o visual a corre o da fun o por testes com pequenos vetores rand micos Ele gera 3 pequenos vetores rand micos que s o passados como par metros de entrada para a fun o un Repare na aus ncia dos em quase todos os comandos queremos ti
308. vido para outra posi o Para isto selecione o elemento e preencha o campo Label na tabela de atributos como mostrado na Figura 56 Introdu o Organiza o e Programa o de Computadores IOPC 2011_1 4 docx Organiza o de Computadores 37 Plexers 415 Arithmetic 15 Memory E 153 Input Output No 1 Three state No Pull Behavior Unchanged Label b Label Locat West Label Font ISansSerif Ps Figura 57 Ferramenta de toque para simula o de um circuito Para testar o seu circuito use a ferramenta de simula o a m ozinha em destaque na Figura 57 Utilize a sobre as entradas do circuito para 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 10 Tabela 10 Complete com os valores produzidos pelo seu circuito XOR Circuitos podem ser salvos em arquivos para uso posterior Para salvar o seu circuito use a op o File Save do menu do Logisim escolha um nome para o arquivo e um diret rio e salve o Para voltar a trabalhar com o arquivo use File Open Para introduzir elementos de circuito com outras orienta es clique sobre a porta desejada e depois altere o campo Facing na tabela de atributos conforme mostrado na Figura 58 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 38 Logisim main of Untitled File Edit Project Simulate Window Help
309. vista com mais detalhes no circuito da Figura 393 Para cumprir este papel a unidade de controle da Pipoca possui como principais componentes e um circuito Timing que fornece os sinais de tempo que conduzem a sequ ncia de eventos na unidade de controle e uma mem ria ROM Read Only Memory que cont m uma tabela de desvios a Branch Table cuja fun o explicaremos a seguir Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 221 e uma outra ROM que abriga o microprograma e e registradores da unidade de controle Figura 398 Componentes da Unidade de Controle Os registradores da unidade de controle da Pipoca s o e o mPC micro Program Counter que cont m o endere o da micro instru o em execu o e omIR 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 399 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 corre
310. xecu o e qual o modo de endere amento empregado na instru o corrente JADD DR gt DBus COMPARE Input T a JHALT Out CIk In Cik In gt DBus Decd HO JMPLT Main Memory i JLOAD Tt OUTPUT JSTORE JsuB Operand so fope Operand gt DBus Jimmediate ALU Jindirect ACC gt DBus w bs x ACC Cik ACC Clear e Compare o i bet Subtract Compare Clk D gt ACC D ACC Figura 395 Rotas de dados na CPU Pipoca Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Ap ndice A A CPU Pipoca 220 5 O Contador de Programa Outro subcircuito da CPU Pipoca o contador de programa mostrado na Figura 396 01 Address New Address Clock Force New Address Figura 396 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 o em a ES alimentam 4 produz t Sinais de Controle da CPU Figura 397 O papel da Unidade de Controle A Figura 397 ilustra a fun o da unidade de controle que pode ser
311. xos 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 deO 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 operandos 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 112 e na Figura 113 est o mostrados os sinais de controle e em destaque as entradas de operandos necess rias para essa computa o Carrega no acumulador o conte do da posi o 1 da RAM Soma ao acumulador o MAR Clk 0 MAR CIk si A conte do da posi o 2 da RAM RAM gt Bus 1 RAM gt Bus 1 ACC Clk 1 ACC Clk 1 ACC Clk 0 ACC Clk 0 RAM gt Bus 0 RAM gt Bus 0 Figura 112 Sinais de controle e entrada de operandos para as etapas 1 e 2 Introdu o Organiza o e Programa o de Computadores IOPC 2011 1 4 docx Organiza o de Computadores 65 Armazena o c
312. za o e Programa o de Computadores IOPC 2011 1 4 docx Ambiente e Linguagem Scilab 110 6 8 10 12 14 16 18 9 12 15 18 21 24 27 12 16 20 24 28 32 36 10 15 20 25 30 35 40 45 12 18 24 30 36 42 48 54 14 21 28 35 42 49 56 63 16 24 32 40 48 56 64 72 18 27 36 45 54 63 72 81 Figura 191 Tabuada de Multiplica o Oo o A N O o N OURA UWVN Be Um problema como este se resolve com dois for aninhados um externo para as linhas e um interno para as colunas de cada linha o que feito pelo programa Tabuada1 sce mostrado na Figura 192 Tabuada de multiplica o for linha 1 9 for coluna 1 9 printf g linha coluna end end Figura 192 O programa Tabuada1 sce Ao executar este programa verificamos entretanto que sua sa da est inintelig vel 12345678924681012141618369121518212 formando uma longa sequ ncia de algarismos sem separa o todos em uma nica linha O que houve Esquecemos de orientar o Scilab para mudar de linha e tamb m para dentro de cada linha separar cada coluna Tabuada de multiplica o for linha 1 9 for coluna 1 9 printf 39 linha coluna end printf in end Figura 193 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 3g que fixa 3 colunas para a impress o de cada produto 3 1 7 Arquivos Arquivos s o un
Download Pdf Manuals
Related Search
Related Contents
Impex IGS-411 Owner's Manual usER Manual siRius - Amazon Web Services Service Manual Une séance type pour un runner qui court 1 à 2 カタログPDFダウンロード RIELLO 7200/2 READY - Scheda tecnica Manual do utilizador R-61FBST/62FBST Operation-Manual/Cook Book DE FR NL DABCDABC 1 2 1 2 Copyright © All rights reserved.
Failed to retrieve file