Execução do a calcula-se determinada solução (output) para determinado problema (input) usando um a que é executado no dados do problema (informação de entrada) a solução (informação resultante) Codificação da informação A informação manipulada pelo tem de estar representada como este é capaz de a interpretar Tecnologia actual baseia-se em circuitos electrónicos digitais binários os circuitos reconhecem e mantêm dois estados: ligado/desligado cada circuito num destes estados representa um bit de informação binary digit os circuitos podem manipular simultaneamente grupos de bits (por exemplo: 4, 8,,, etc ) ASC - /7 34 ASC - /7 35 Codificação binária Tudo no está representado por bits podemos convencionar que cada bit representa: ligado/desligado ou / ou verdade/falso ou etc quem "olha para os bits" interpreta-os como quiser! Como representar texto, imagens, sons, etc.??? Representação de inteiros positivos Começando por coisas simples Estamos habituados à representação decimal, mas podemos usar outras representações Temos de conseguir uma representação binária dois estados ou símbolos:, ASC - /7 3 ASC - /7 37 Representação de números Representação decimal: dez dígitos representados pelos símbolos:,,, 3, 4, 5,, 7, 8, 9 num número, cada algarismo representa uma potência de exemplo: 59 = x + 5 x + 9 x x + 5x + 9x centenas dezenas unidades Representação binária Representação binária: dígitos, símbolos:, cada algarismo no número representa uma potência de exemplo: em decimal: x 7 +x +x 5 +x 4 +x 3 +x +x +x = 59 ASC - /7 38 ASC - /7 39
Conversões Decompondo um número nos dígitos de determinada base decompomos no polinómio em potências da base exemplo: 59 = x + 5 x + 9 x = (( x ) + 5) x + 9 ou seja, dividimos sucessivamente pela base pretendida: 59 9 5 unidades 5 dezenas centenas ASC - /7 4 Conversões Para outras bases é idêntico binário, dividimos por : 59 79 39 9 9 4 59 = ASC - /7 4 binário bits Os números são facilmente representáveis no basta converter para a representação binária e convencionar, por exemplo, =ligado, =desligado Podemos representar qualquer informação que consigamos converter em números digitalizar Desvantagens do binário: não é natural para nós; as conversões binário decimal binário não são intuitivas a representação torna-se extensa. Outras bases Para nós pode ser mais fácil usar outras bases: representações menos extensas mais fáceis de converter para/de binário as candidatas são as bases potências de cada digito nessas bases corresponde directamente a um grupo de dígitos base (bits) ASC - /7 4 ASC - /7 43 Representação de números (cont) Representação hexadecimal: símbolos:,,, 3, 4, 5,, 7, 8, 9, A, B, C, D, E, cada algarismo no número representa uma potência de exemplo: 9 em decimal: 9 x + 5 = 59 conversão para hexadecimal: 59 5 9 9 ASC - /7 44 Relação entre representações Usando bases potências de temos uma relação directa entre os dígitos de cada base exemplo: 3 dig.bin. dig.oct. 4 dig. bin. dig.hex. 4 7 3 4 5 7 8 9 3 4 5 3 4 5 7 8 9 A B C D E 8 3 4 5 7 3 4 5 7 ASC - /7 45
Operações As operações aritméticas são independentes das bases de representação dos números Exemplos em binário: Álgebra de boole alores booleanos: verdade () e falso () Operações algébricas: e/and, ou/or, negação/not (carry) () + (3) (3) (borrow) () - (3) (7) e ou neg ASC - /7 4 ASC - /7 47 Passando a bits Para os valores booleanos podemos convencionar: verdade = e falso = Operações booleanas O pode fazer as operações boolenas sobre grupos de bits Exemplo com nibles (4 bits): e ou neg e ou neg ASC - /7 48 ASC - /7 49 Representação de texto Podemos representar as letras e outros símbolos convencionando uma codificação Numeramos todos esses caracteres! Temos de seguir a mesma convenção na introdução dos caracteres no e quando os apresentados na saída!! Exemplo: A A B B etc Codificações de caracteres Existem códigos normalizados: ASCII American Standard Code for Information Interchange (7 bits) Cada carácter tem um código de a 7 Exemplo: A = 5 % = 37 inclui códigos de controlo: TAB, RET, ISO8859 (8bits) mais 7 códigos, suportando caracteres com acentos e outros (depende da variante do código) latino, grego, hebraico, etc ISO4 ou Unicode (bits) ASC - /7 5 ASC - /7 5 3
Descodificação Exemplo: um controlador de ecrã ou de uma impressora recebem sequências de 8 bits e mostram o carácter correspondente exemplo: se receberem fazem aparecer o desenho A se receberem a sequência fazem aparecer: (muda de linha) NOTA: para escrever números temos de fazer sair os seus caracteres e não os números!! Descodificação dos bits Como interpretar o seguinte grupo de bits? o número 5? a letra A? 8 valores lógicos ()? outra?? Todas estas leituras são válidas! ASC - /7 5 ASC - /7 53 Execução de um a Como um executa um a? Mas o que é um? E um a? entrada de dados input bits a bits saída de dados output ASC - /7 54 ASC - /7 55 Definições num dicionário Computador o que faz cálculos; máquina para efectuar cálculos segundo instruções nela introduzidas; Programa projecto escrito e minucioso; conjunto de instruções numa linguagem capaz de ser interpretada por um sistema; Resolução de um problema. Dado um problema:. Descobrir/inventar um algoritmo para o resolver 3. Codificar esse algoritmo numa linguagem reconhecida pela máquina Que máquina usar? O que esta deve ser capaz de reconhecer? O que é realizável? Que linguagem usar? Mais próxima do utilizador humano? Mais próxima da máquina? ASC - /7 5 ASC - /7 57 4
Serão es? Alan Turing ábaco 35 AC? calculadora electrónica anos -7 calculadora de Pascal 5 Matemático Inglês, considerado por alguns o pai da Ciência da Computação contribuiu nos domínios da lógica, criptografia, inteligência artificial, formalização da algoritmia e da computação Máquina de Turing (define formalmente a "máquina universal") 9-954 instrumento musical controlado por papel perfurado ASC - /7 58 ASC - /7 59 John von Neumann Matemático Húngaro (nat. EUA), considerado por alguns o pai da arquitectura dos es binários modernos Contribuiu nos domínios da física quântica, economia, estatística, computação autómato celular, EDAC (Electronic Discrete ariable Automatic Computer) 93-957 Computador Equipamento com uma ou mais unidades, de processamento e periféricas, que é capaz de computar (incluindo operações aritméticas e lógicas), controlado por as internos, sem intervenção humana. ASC - /7 ASC - /7 Programas Conjunto de instruções escritas numa linguagem que alguma "máquina" é capaz de reconhecer e executar Instruções: Mais próximas do domínio de aplicação: mais complexas e específicas Mais próximas da arquitectura do : mais simples e genéricas Múltiplos níveis de linguagens Noção de interface Noção de transparência (ou opacidade) ASC - /7 Níveis nos sistemas informáticos Num sistema de computação: aplicações linguagens bibliotecas sistema de operação Podemos detalhar em mais níveis ASC - /7 3 5
Resolução de um problema Dado um problema Que algoritmo para o resolver? Que linguagens de ação? Para especificar o algoritmo Linguagens de que nível: Mais próximas do utilizador humano ou mais próximas do? Que máquinas? Para a execução do a/algoritmo Níveis nos sistemas informáticos Cada nível mais alto está mais perto das abstracções do utilizador e mais longe da máquina Cada nível faz uso das abstracções e funcionalidades oferecidas pelos níveis inferiores suporta as camadas superiores Exemplos: Aplicações Abstracções do domínio da aplicação ( ) Linguagens de ação Abstracções das linguagens e suas bibliotecas (streams, estruturas de dados, classes, ) Sistemas de operação Abstracções do sistema (ficheiros, canais, ) Arquitectura do Instruções da máquina, seus componentes e suas interacções Circuitos digitais, electrónica, ASC - /7 4 ASC - /7 5 Cada nível oferece Interface oferece um conjunto de "instruções" este define a "linguagem" e abstracções suportadas Transparência esconde do nível superior a implementação das suas instruções/abstracções oferece uma nova máquina (virtual) Resumindo Computador executa as escritos numa linguagem reconhecida: linguagem máquina Programa é um conjunto de instruções reconhecidas pelo, ou por outro a executado no ASC - /7 ASC - /7 7 Execução de as por tradução Execução de as por interpretação Programa nível N Programa nível N tradutor interpretador das instruções de nível N- Programa nível N- ASC - /7 8 o hardware do é sempre o "interpretador" final ASC - /7 9
Exemplo de execução em Java icheiro fonte Compilador a implementando a JM "java" Transformações Os as são transformados por outros as Exemplo da compilação de as em C: cc o hello hello.c icheiro "máquina-jm" Biblioteca das classes Java Interpretador Java irtual Machine executado pela máquina hello.c Source Preprocessor hello.i (cpp) Modified source Compiler (cc) hello.s Assembler hello.o (as) Assembly printf.o Relocatable object s (binary) Linker (ld) hello Executable object (binary) ASC - /7 7 ASC - /7 7 ases da compilação ase de pré-processamento: o a original é modificado de acordo com as directivas (#): exemplos: macros, inclusão de stdio.h ase de compilação: o compilador traduz o ficheiro hello.i para um ficheiro com mnemónicas em assembly ase de assembly : o assembler traduz o ficheiro hello.s para um ficheiro hello.o em que os seus bytes representam as instruções máquina correspondentes a cada mnemónica ase de ligação: o ligador inclui no ficheiro executável o código da função printf() e resolve as restantes referências printf.o hello.c Source Preprocessor hello.i (cpp) Modified source Compiler (cc) hello.s Assembler hello.o (as) Assembly Relocatable object s (binary) Linker (ld) hello Executable object (binary) Passos até termos um a em execução icheiro fonte Compilador icheiro máquina Biblioteca das funções da linguagem Compilador icheiro assembly Assembler Ligador a carregado em memória Carregador icheiro executável ASC - /7 7 ASC - /7 73 O processador lê e interpreta instruções armazenadas na memória Para executar o a hello é preciso carregá-lo para memória interagindo com uma interface e esta com SO de texto (linha de comando): prompt>./hello hello,world prompt> gráfico (interface gráfica): hello Um a em execução Instruções máquina executadas directamente pelo CPU (interpretadas pela máquina) a em memória (bibliotecas) Hardware (Processador, Memória, Discos,...) "Instruções" interpretadas pelo Sistema de Operação (por exemplo, escrita no écrã, leitura do disco...) Sistema de Operação (sempre carregado em Memória) plataforma ASC - /7 74 ASC - /7 75 7
Execução de um a O executa um a Quais os seus componentes? Como estes se organizam e interactuam? a entrada de dados processador, memória, input bits periféricos,etc bits saída de dados output ASC - /7 7 8