introdução a algoritmos e estruturas de dados

8
3/31/11 1 Algoritmos e Estruturas de Dados I (AEDS I) Prof. Olga N. Goussevskaia [email protected] 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?

Upload: wender-higinotsumi

Post on 01-Jul-2015

443 views

Category:

Documents


6 download

DESCRIPTION

Aula 1 da professora oLGA

TRANSCRIPT

Page 1: Introdução a Algoritmos e Estruturas de Dados

3/31/11

1

Algoritmos  e  Estruturas  de  Dados  I  (AEDS  I)  

Prof.  Olga  N.  Goussevskaia  [email protected]  

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?  

Page 2: Introdução a Algoritmos e Estruturas de Dados

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  

Page 3: Introdução a Algoritmos e Estruturas de Dados

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  

Page 4: Introdução a Algoritmos e Estruturas de Dados

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.  

Page 5: Introdução a Algoritmos e Estruturas de Dados

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.

Page 6: Introdução a Algoritmos e Estruturas de Dados

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”.

Page 7: Introdução a Algoritmos e Estruturas de Dados

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  

Page 8: Introdução a Algoritmos e Estruturas de Dados

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