Post on 01-Jul-2015
description
3/31/11
1
Algoritmos e Estruturas de Dados I (AEDS I)
Prof. Olga N. Goussevskaia olga@dcc.ufmg.br
Aula 1: Introdução
• Modelo de computador simplificado • Instruções • Dados • Memória
• Linguagens de programação
Obs: Alguns slides por Profa Mirella M. Moro
Por que computação? Por que computação?
Por que computação? Por que computação?
3/31/11
2
Por que computação?
8
Computador
• Máquina que processa dados em menos tempo e com mais segurança – “Processamento eletrônico de dados.”
• Funções básicas do computador: – Entrada de dados – Processamento de dados
– Saída de informações – Armazenamento de informações
• Informá(ca (Informação Automá(ca) – Ciência que abrange todas as aWvidades relacionadas com o
processamento automáWco de informações
9
Terminologia
• Dado – Informação que será trabalhada durante o processamento
• Exemplos
– 10 (idade), 12 x 8 (pressão arterial), 1.99 (altura em metros)
• Instrução – Operação elementar que o computador tem a capacidade de processar
– Conjunto básico, comum à maioria das linguagens: • Entrada e saída (E/S) de dados • Movimentação de dados (transferência) • AritméWca: adição, mulWplicação, etc. • Testes: verificação de certas condições (comparação) • RepeWção de ações, em geral, com algumas variações
10
Terminologia
• Programa – roteiro que orienta o computador, mostrando-‐lhe a seqüência de
operações necessárias para executar uma determinada tarefa
– seqüência de instruções que dirigem a CPU (Central Processing Unit) na execução de alguma tarefa
– composto por uma série de comandos ou instruções
• Hardware – conjunto de componentes mecânicos, elétricos e eletrônicos com os
quais são construídos os computadores e equipamentos periféricos
• Soiware – conjunto de programas e procedimentos que permitem usufruir da
capacidade de processamento fornecida pelo hardware
11
Organização funcional
• Sistema Central – Unidade Central de Processamento (UCP/CPU/microprocessador)
• Unidade de Controle • Unidade AritméWca e Lógica
– Clock – Memória Principal – Interfaces
• Unidades de Entrada e Saída (E/S)
12
Organização funcional
3/31/11
3
13
Sistema central
• CPU/microprocessador – Unidade de Controle
• Controla o fluxo de informações entre todas as unidades do computador e executa as instruções na seqüência correta
– Unidade Aritmé(ca e Lógica (UAL) • Realiza operações aritmé(cas (cálculos) e lógicas (decisões), comandada por instruções
armazenadas na memória
– Fica em uma placa de circuitos chamada placa-‐mãe (“motherboard”)
• Clock (relógio) – Os microprocessadores trabalham regidos por um padrão de tempo
• determinado por um clock
– Gera pulsos a intervalos regulares – A cada pulso uma ou mais instruções internas são realizadas
14
Sistema central
• Memória principal – Armazena temporariamente as informações (instruções e dados)
– Dados ficam disponíveis ao processamento (pela ULA) e para transferência para os equipamentos de saída
– Organizada em porções de armazenamento, cada qual com um endereço
– Dois Wpos de circuito: ROM e RAM
15
Sistema central Memória principal • ROM (Read Only Memory)
– Tipicamente menor que a RAM – Não depende de energia para manter o seu conteúdo – Memória permanente – Informações não podem ser apagadas (casos especiais) – Geralmente vem gravada do fabricante – Apenas de leitura – Programas em memória ROM
• RoWna de inicialização do computador, reconhecimento do hardware, idenWficação do sistema operacional, contagem de memória
• Orientar o computador nas primeiras operações
16
Sistema central Memória principal
• RAM (Random Access Memory) – Memória temporária – UWlizada pelo usuário para desenvolver seus programas
– Uso restringe-‐se ao período em que o equipamento está em funcionamento
– Memória é voláWl (seu conteúdo pode ser apagado) • Armazenar programas e dados
• Guardar resultados intermediários do processamento
– Podem ser lidas ou gravadas informações
17
Sistema central Barramentos
• Transportam sinais de dados, endereço e controle
18
Sistemas de E/S (I/O) Periféricos (ou Unidades de Entrada e Saída, (Input/Output))
• DisposiWvos conectados a um computador que possibilitam a comunicação do computador com o mundo externo
• Unidades de entrada – Permitem que informações sejam introduzidas na memória do
computador
– Exemplo: mouse – Forma armazenável internamente (bits)
• Unidades de saída – Transformam a codificação interna dos dados em uma forma legível
pelo usuário
– Exemplo: Impressora
3/31/11
4
19
Instruções
• Programa – seqüência de instruções
• Computador analisa e executa uma a uma
• Execução ocorre na ULA, sob coordenação da UC
• Na execução: – instruções e dados estão na memória
– são trazidos da memória para a CPU – UC analisa a instrução
20
Instruções • Uma instrução é consWtuída basicamente de:
– código de operação – endereço dos operandos
– Da seção de controle, seguem para a memória os endereços dos operandos
– Operandos são localizados e transferidos para a ULA – A úlWma etapa consiste em transferir o conteúdo do registrador que
contém o resultado para a memória
0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1 Cód. de operação End. do 1º operando End. do 2º operando
21
Instruções Categorias de Instruções
• Instruções de E/S – leituras de fita, disco magnéWco, gravação etc
• Instruções de transferência – da memória pra CPU, de um registrador para outro
• Instruções AritméWcas – adição, subtração, mulWplicação, divisão
• Instruções Lógicas – E (AND), OU (OR), NÃO (NOT)
22
Representação dos dados • Bit
– BInary digiT – Componente básico da memória – É a menor unidade de informação – Pode assumir dois valores ou senWdos
• 1 = ligado • 0 = desligado
• Byte – Agrupamento de 8 bits – Normalmente corresponde a um caractere: letra, dígito numérico, caractere
de pontuação,... – Com um byte é possível representar-‐se até 256 símbolos diferentes
• Palavra de memória – número de bits que o computador lê ou grava em uma única operação (tanto
dados como instruções) – tamanho da palavra de memória pode variar de computador para
computador: 32 ou 64 bits
23
Representação dos dados • Códigos de representação de dados
– Caractere é a unidade básica de armazenamento na maioria dos sistemas – Armazenamento de caracteres (letras, números e outros símbolos) é feito através de um
esquema de codificação • certos conjuntos de bits representam certos caracteres
– Bastante uWlizados: ASCII, EBCDIC, UNICODE • ASCII (American Standard Code for Informa6on Interchange)
– Código uWlizado pela maioria dos microcomputadores
• Unidades de Medida – QuanWficar a memória principal do equipamento – Indicar a capacidade de armazenamento (disco, CD-‐ROM, fita, etc.)
24
Representação de Dados • Kilobyte (Kb): 1024 (210) bytes.
– Capacidade de memória dos computadores pessoais mais anWgos.
• Megabyte (Mb): aproximadamente, um milhão (220) de bytes.
– Memória de computadores pessoais. – DisposiWvos de armazenamento portáteis (disquetes, CD-‐ROMs).
• Gigabyte (Gb): aproximadamente, um bilhão (230) de bytes.
– DisposiWvos de armazenamento (discos rígidos). – Memória de mainframes e servidores de rede.
• Terabyte (Tb): aproximadamente, um trilhão (240) de bytes.
– DisposiWvos de armazenamento para sistemas muito grandes.
3/31/11
5
25
Representação de Dados • 1 página txt ASCII : 2 Kbytes • 1 página Word : 28 Kbytes
• 100 páginas Word : 300 Kbytes
• 1 disquete : 1,44 Mbytes
• Dicionário completo : 24 Mbytes
• 1 CD : 700 Mbytes
• 1 DVD : 4 Gbytes • 1 HD : 80 Gbytes
26
Níveis de memória
• Diferentes velocidades de acesso
27
Níveis de memória
• Memória Cache – Alyssima velocidade de acesso
– Acelerar o processo de busca de informações na memória
– Localizada logicamente entre o processador e a memória principal
– Pode tanto integrar o microprocessador (cache interna), como consisWr de chips adicionais instalados na placa-‐mãe do micro (cache externa)
– Tamanho Wpicamente pequeno: cache interna: até 512K; cache externa: até 2Mb
• Memórias Auxiliar e Auxiliar-‐Backup – Discos, CDs e fitas
28
Soiware • Soiware básico
– Conjunto de soiwares que permite ao usuário criar, depurar e modificar as aplicações criadas por ele
• Sistema operacional, linguagens de programação, compiladores, uWlitários
• Soiware aplicaWvo – Aplicações criadas para solucionar problemas específicos
• Exemplos: web browser, mp3 player, video player, contabilidade, folha de pagamento, correção de provas
29
Soiware Básico – Sistema Operacional
SISTEMA OPERACIONAL • Conjunto de programas supervisores que gerenciam os
recursos (hw e sw) de um sistema de computação • Funções:
– Gerência de memória – Gerência de processador – Gerência de arquivos – Gerência de disposiWvos de E/S (periféricos)
• Tarefas específicas: – Ler a tecla pressionada no teclado – Transferir um arquivo do disquete para a memória principal, etc
• Ex.: MS-‐DOS, Windows, Linux, MacOS, Unix, ...
30
Soiware Básico – Sistema Operacional
S.O.
3/31/11
6
31
Soiware Básico – Ling. de Programação
LINGUAGENS DE PROGRAMAÇÃO • Conjunto de convenções e regras que especificam como instruir o computador a executar determinadas tarefas
• Serve como meio de comunicação entre o indivíduo que deseja resolver um determinado problema e o computador
32
Soiware Básico – Ling. de Programação
VISÃO GLOBAL 1a geração -‐ Linguagens de máquina
– 0010 0001 0110 1100 2a geração -‐ Linguagens de montagem (assembly)
– ADD R1, TOTAL 3a geração -‐ Linguagens orientadas ao usuário
– LET SOMA = VAR1 + TOTAL – IF SOMA > 3 THEN EXIT
4a geração -‐ Linguagens orientadas à aplicação – LIST ALL NOME, ENDERECO, TELEFONE – FOR CIDADE = “PORTO ALEGRE”
5a geração -‐ Linguagens de conhecimento (IA)
BAIXO NÍVEL ALTO NÍVEL
33
1a geração -‐ Linguagens de Máquina
• Linguagem de máquina escrita em notação binária – Exemplo:
0010 0001 0110 1100
– soma do dados armazenado no registrador 0001 com o dado armazenado na posição de memória 0110 1100
• Programa = seqüência de zeros e uns – Programação trabalhosa, cansaWva e fortemente sujeita a erros
Endereço da posição de memória que contém o dado
Endereço do registrador
Código da operação: Adição
34
2a geração -‐ Linguagens de Montagem
• Linguagem de baixo nível
• Minimizar as dificuldades da programação em notação binária – Assemblers (montadores)
• Usam códigos mnemônicos com letras e números para representar os comandos, por exemplo: – LOAD B: carrega no registrador o dado que está no endereço B – ADD A: adiciona ao registrador o dado que está no endereço A – ADD R1, TOTAL: R1 representa o registrador 1 e TOTAL é o nome
atribuído ao endereço de memória 108
• Processamento requer tradução para linguagem de máquina
35
3a geração – Lings. Orientadas ao Usuário
• Linguagem genérica de alto nível
• Usam comandos com nomes geralmente auto-‐explanaWvos – Exemplo: read, write, if, open…
• Principais linguagens – Fortran (1954) – Cobol (1959) – Basic (1965) – Pascal (1975) – C (1980)
Exemplo em Pascal program Exemplo; var a,b: integer; begin write ('Digite um número para A'); readln (a); write ('Digite o número para B'); readln (b); if (a > b) then writeln ('A é maior que B') else writeln ('B é maior que A'); end.
36
4a geração – Lings. Orientadas à Aplicação
• Linguagem orientada à aplicação
• Gera código a parWr de expressões de alto nível • Facilita o uso da linguagem
• Exemplo: DBASE, SQL
Exemplo em DBASE List All Nome, Endereco, Telefone For Cidade = “Porto Alegre”
Lê todos os registros que compõem um arquivo e, para cada lido, seleciona aqueles cuja cidade = “Porto Alegre”.
3/31/11
7
37
5a geração – Linguagens de Conhecimento
• Mecanismos da área de Inteligência ArWficial – São criadas bases de conhecimentos, obWdas a parWr de especialistas,
e as linguagens fazem deduções, inferências e Wram conclusões baseadas nas bases de conhecimento.
• Exemplos: Prolog, Lisp, Art
PS: no site http://www2.latech.edu/~acm/HelloWorld.shtml você pode encontrar o programa ‘Hello World’ implementado em dezenas de linguagens
Linguagens de programação
C: uma linguagem de programação de alto nível Outros exemplos: Java, Pascal, C++ Vantagens: simplifica muuito o trabalho do programador; código mais curto, mais simples de ler; independente de plataforma (HW, SO)
Linguagens de baixo nível: Linguagem de máquina, de montagem (assemply)
Linguagens de programação
A grande maioria de programas são escritos em linguagens de alto nível
Mas computadores só podem executar programas escritos em linguagem de baixo nível!
Programas escritos em linguagem de alto nível deve ser traduzido por um: Interpretador ou Compilador
40
Tradutores de linguagens de programação
UCP
41
Tradutores de linguagens de programação
• Tradutor – Recebe como entrada um programa escrito em uma linguagem de
programação (dita linguagem fonte)
– Produz como resultado as instruções deste programa traduzidas para linguagem de máquina (i.e. linguagem objeto)
• Se a linguagem do programa fonte é uma linguagem de montagem (Assembly) – Tradutor é chamado de Montador (Assembler)
• Tradutores que traduzem os programas escritos em linguagem de alto nível – Compiladores e os interpretadores
42
Tradutores de linguagens de programação
• Compilador – Traduz um programa escrito em linguagem de alto nível – Produz um programa em linguagem objeto (linguagem executável, ou seja,
linguagem de máquina) • Pode ser executado uma ou mais vezes no futuro • Enquanto o código fonte do programa não for alterado, ele poderá ser executado sucessivas vezes, sem necessidade de nova compilação
• Interpretador – Traduz um programa escrito em linguagem fonte, instrução a instrução,
enquanto ele vai sendo executado – Cada vez que um programa interpretado Wver que ser re-‐executado, todo o
processo de interpretação deverá ser refeito, independentemente de ter havido ou não modificações no código fonte do programa desde sua úlWma execução
• Programas compilados tendem a ser executados mais rapidamente que seus correspondentes interpretados
3/31/11
8
43
Tradutores de linguagens de programação
Linguagens de programação
Exemplos de linguagens interpretadas: MATLAB, Javascript, Python, Perl, PHP (scripts)
Exemplos de linguagens compiladas: Pascal, C, C++, C#, Java (JVM bytecode)
Próxima aula: Lógica de Programação