Introdução a Algoritmos e Estruturas de Dados

575 visualizações

Publicada em

Aula 1 da professora oLGA

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
575
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Algoritmos e Estruturas de Dados

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

×