Aula 20 - 5/11/2007 1
Informática I
Aula 20
http://www.ic.uff.br/~bianca/informatica1/
Aula 20 - 5/11/2007 2
Ementa• Noções Básicas de Computação (Hardware, Software e Internet) • HTML e Páginas Web • Internet e a Web• Javascript e páginas dinâmicas • Números e expressões em Javascript • Formulários em HTML (Programação orientada a Eventos)• Histórico dos Computadores • Abstração e Definição de Funções • Algoritmos e linguagens de programação• Ciência da computação como disciplina• Execução condicional • Representação de dados • Computação e sociedade
Aula 20 - 5/11/2007 3
Introdução
• Ciências tradicionais como física, biologia e química existem há centenas ou milhares de anos.– A Ciência da Computação é uma área de estudo
muito mais recente (anos 70 ou 80).• A ciência da computação abrange todos os
aspectos da computação.– Desde o projeto e a análise de algoritmos, até o
projeto de computadores para executar esses algoritmos.
– Também lida com questões mais teóricas como as capacidades e limitações dos algoritmos e modelos computacionais.
Aula 20 - 5/11/2007 4
Uma ciência do “artificial”
• Ciências naturais e ciências sociais lidam com fenômenos complexos que ocorrem naturalmente.– Leis que definem como a matéria se
comporta, como elementos químicos reagem, como as pessoas interagem.
• Já os sistemas que a ciência da computação investiga são artificiais.– Programas, computadores e modelos
computacionais são construídos por pessoas.
Aula 20 - 5/11/2007 5
Áreas de estudo relacionadas
• Engenharia de computação aplica princípios de ciência da computação e engenharia para desenvolver novas tecnologias de computação.
• Ciência da informação se concentra no uso efetivo de tecnologias de computação para apoiar empresas e governos.
• A divisão entre essas disciplinas nem sempre é clara.
Aula 20 - 5/11/2007 6
Temas em Ciência da Computação
capacidades e limitações dos computadores
programas que executam nos computadores
componentes físicos dos computadores
Teoria
Ciência da Computação
Aula 20 - 5/11/2007 7
Hardware
• Como vimos, o termo hardware se refere aos componentes físicos do computador.
• Exemplos de projetos de pesquisa e desenvolvimento na área de hardware.– Projeto de circuitos para conseguir colocar mais
transistores nos chips (circuitos integrados).– Estudar diferentes maneiras de se interligar
componentes para aumentar a velocidade de processamento.
– Computação paralela: projetar computadores com mais de uma CPU.
Aula 20 - 5/11/2007 8
Software
• Como vimos, software se refere aos programas que executam no hardware.
• A maioria das pessoas que trabalham com computação no mercado trabalham com projeto, desenvolvimento, teste e manutenção de software.– Programadores, analistas de sistema e engenheiros
de software.• Exemplos de projetos de pesquisa e
desenvolvimento na área de software:– Criação e análise de algoritmos– Desenvolver e extender linguagens de programação
Aula 20 - 5/11/2007 9
Teoria
• A teoria da computação é relacionada com a matemática e a lógica.
• Estuda modelos de computação e tenta entender as capacidades dos algoritmos e computadores.
• Algumas das teorias principais da computação foram desenvolvidas antes do desenvolvimento dos computadores.– Por exemplo, em 1930 Alan Turing projetou uma
máquina abstrata conhecidad como máquina de Turing.
Aula 20 - 5/11/2007 10
A máquina de Turing
• A máquina de Turing é uma unidade de processamento simples que lê e escreve dados em uma fita potencialmente infinita.
• A fita é dividida em células e serve como a memória da máquina.
• O processador pode:– Ler dados de uma célula– Escrever dados para uma célula– Mover para direita ou para esquerda– Reconhecer um certo número finito de estados
Aula 20 - 5/11/2007 11
Exemplo: Máquina de Turing
• Máquina que escreve Y se o número de letras “a” na fita é par e escreve N se o número de letras “a” na fita é ímpar.
Aula 20 - 5/11/2007 12
A máquina de Turing (cont.)
• Apesar da máquina de Turing parecer simples, pode-se provar que elas são equivalentes aos computadores atuais.– Qualquer computação que pode ser executada por um
computador atual também poderia ser executada por uma máquina de Turing.
– Claro que o programa da máquina de Turing provavelmente seria mais complexo e envolveria mais passos.
• A vantagem de um modelo simples é que ele pode ser mais facilmente estudado.– Turing usou esse modelo pra provar que certos problemas não
podem ser resolvidos usando algoritmos ou qualquer modelo computacional.
• Ex.: Problema da Parada
Aula 20 - 5/11/2007 13
Problema da Parada
• Problema da Parada: determinar se um programa qualquer vai terminar ou vai entrar em loop infinito.– Loops infinitos são introduzidos por
repetições condicionais (while) cujas condições nunca são satisfeitas.
• Turing provou matematicamente em 1930 que é impossível escrever um programa que faça isso.
Aula 20 - 5/11/2007 14
Sub-áreas da Ciência da Computação
• Algoritmos e Estruturas de Dados• Arquitetura de Computadores• Sistemas Operacionais e Redes• Engenharia de Software• Inteligência Artificial e Robótica• Linguagens de Programação• Bancos de Dados• Computação Gráfica• Interação Homem-Máquina• Ciência Computacional• Bioinformática
Aula 20 - 5/11/2007 15
Algoritmos e Estruturas de Dados
• Desenvolvimento, análise e implementação de algoritmos.
• Uma área em que o desenvolvimento de novos algoritmos teve grande impacto foi a criptografia.– Criptografia é o estudo das técnicas pelas quais a informação
pode ser transformada da sua forma original para outra ilegível.• A menos que seja conhecida uma "chave", o que a torna difícil de
ser lida por alguém não autorizado.
– Desde 100 A.C. foram desenvolvidos algoritmos de criptografia – Exemplo: substituir cada letra pela letra que vem três posições
depois no alfabeto.• Neste caso a “chave” é o conhecimento de que deve-se substituir
pela letra três posições antes.
Aula 20 - 5/11/2007 16
Criptografia de Chave Privada
• O algoritmo DES (Digital Encryption Standard) usa uma chave privada de 56 bits, o que torna praticamente impossível decifrar a mensagem sem saber a chave.
Aula 20 - 5/11/2007 17
Criptografia de Chave Pública
• A criptografia de chave privada requer que o remetente e o destinatário se comuniquem para trocar a chave.
• Em 1976, Diffie e Hellman propuseram uma nova classe de algoritmos, chamados de criptografia de chave pública.– Cada participante recebe uma chave pública e uma
chave privada.– É possível mandar uma mensagem segura sem ter
que primeiro trocar uma chave.– É possível também verificar a identidade do
remetente.
Aula 20 - 5/11/2007 18
Criptografia de Chave Pública
• O algoritmo RSA inventado em 1977 por Rivest, Shamir e Adleman no MIT foi o primeiro algoritmo de chave pública implementado na prática.– Serviu de base para permitir comunicações seguras na Internet.
Aula 20 - 5/11/2007 19
Sub-áreas da Ciência da Computação
• Algoritmos e Estruturas de Dados• Arquitetura de Computadores• Sistemas Operacionais e Redes• Engenharia de Software• Inteligência Artificial e Robótica• Linguagens de Programação• Bancos de Dados• Computação Gráfica• Interação Homem-Máquina• Ciência Computacional• Bioinformática
Aula 20 - 5/11/2007 20
Arquitetura de Computadores
• A sub-área de arquitetura trata de métodos para organizar componentes de hardware em sistemas eficientes e confiáveis.
• A maioria dos sistemas segue a arquitetura de Von Neumann, mas novas tecnologias estão sempre sendo introduzidas dentro desse paradigma.– Exemplo: relays → válvulas a vácuo → transistores → circuitos
integrados
• Mais recentemente, arquiteturas que desviam do modelo de Von Neumann estão sendo desenvolvidas e utilizadas em certas aplicações.– Exemplo: Computação Paralela
Aula 20 - 5/11/2007 21
Computação Paralela
• Computação paralela, como o nome sugere, emprega múltiplos processadores trabalhando em paralelo.
• Idealmente, dobrando-se o número de processadores, um programa poderia ser executado em metade do tempo.– Porém passos adicionais são necessários para dividir o trabalho
e nem todas as tarefas podem ser paralelizadas.• Por exemplo, se um passo depende do resultado de outro.
• Exemplos de aplicação de computação paralela:– Servidores web: tem que processar múltiplos pedidos
independentes simultaneamente.– Deep Blue: o computador que venceu Kasparov em 1997
utilizava 32 processadores de propósito geral e 512 processadores especializados em xadrez que trabalham em paralelo para avaliar jogadas.
Aula 20 - 5/11/2007 22
Sub-áreas da Ciência da Computação
• Algoritmos e Estruturas de Dados• Arquitetura de Computadores• Sistemas Operacionais e Redes• Engenharia de Software• Inteligência Artificial e Robótica• Linguagens de Programação• Bancos de Dados• Computação Gráfica• Interação Homem-Máquina• Ciência Computacional• Bioinformática
Aula 20 - 5/11/2007 23
Sistemas Operacionais e Redes
• Esta sub-área examina mecanismos para controlar o hardware e o software de sistemas de computadores.
• Na década de 60, sistemas operacionais com compartilhamento de tempo foram introduzidos.– Permitiam que múltiplos usuários utilizassem o mesmo
computador (mainframe).– O processador fazia uma “rotação” entre os programas de cada
usuário, muito rapidamente de tal forma que não se percebesse.
• Na década de 70, o conceito de compartilhamento de tempo evolui para o conceito de multi-tarefa.– O mesmo usuário poderia ter vários programas em execução.
Aula 20 - 5/11/2007 24
Sistemas Operacionais e Redes
• Computadores hoje em dia normalmente são conectados a redes, permitindo que eles se comuniquem com outros e acessem recursos.
• As redes de computadores são classificadas em:– WAN (Wide Area Network): conecta computadores a longa
distância.• Deve cuidar de roteamento e ser resistente a falhas.• O exemplo mais conhecido é a Internet
– LAN (Local Area Network): conecta computadores a curta distância, na mesma sala ou prédio.
• São mais simples e rápidas que as WANs.• A tecnologia mais comum para LAN é a Ethernet.
– Velocidades de 10M a 1000M bits por segundo.
Aula 20 - 5/11/2007 25
Ethernet
Aula 20 - 5/11/2007 26
Sub-áreas da Ciência da Computação
• Algoritmos e Estruturas de Dados• Arquitetura de Computadores• Sistemas Operacionais e Redes• Engenharia de Software• Inteligência Artificial e Robótica• Linguagens de Programação• Bancos de Dados• Computação Gráfica• Interação Homem-Máquina• Ciência Computacional• Bioinformática
Aula 20 - 5/11/2007 27
Engenharia de Software
• Engenharia de software é a sub-área que lida com a criação efetiva de sistemas de software.
• O desenvolvimento de sistemas de software grandes e confiáveis é um desafio tanto em termos técnicos quanto de gerenciamento.– Projetos grandes requerem muitas linhas de código e equipes
grandes de programadores e analistas.• Por exemplo, o Windows XP contém mais de 45 milhões de linhas
de código.
• Em projetos com equipes grandes é necessário fazer um bom planejamento e dividir o sistema em componentes que possam ser implementados e testados independentemente.
Aula 20 - 5/11/2007 28
Engenharia de Software
• Muitas ferramentas foram criadas para facilitar o projeto e a implementação de softwares grandes.– A UML (Unified Modelling Language) é uma
linguagem que serve para definir o comportamento de componentes de software.
– CVS (Concurrent Versions System) é um sistema que permite que múltiplos programadores compartilhem arquivos e integrem modificações.
– Linguagens Orientadas a Objeto como Java e C++ facilitam o re-uso.
Aula 20 - 5/11/2007 29
Etapas do Processo de Desenvolvimento de Software
1. Análise e Especificação de Requerimentos
2. Projeto3. Implementação
4. Teste5. Operação e Manutenção
Aula 20 - 5/11/2007 30
Sub-áreas da Ciência da Computação
• Algoritmos e Estruturas de Dados• Arquitetura de Computadores• Sistemas Operacionais e Redes• Engenharia de Software• Inteligência Artificial e Robótica• Linguagens de Programação• Bancos de Dados• Computação Gráfica• Interação Homem-Máquina• Ciência Computacional• Bioinformática
Aula 20 - 5/11/2007 31
Inteligência Artificial e Robótica
• A sub-área de Inteligência Artificial tem como objetivo projetar computadores que exibam inteligência no nível dos humanos ou superior.
• Em 1930, Alan Turing criou o chamado Teste de Turing para medir o grau de inteligência de um sistema.– Um juiz conversaria com um humano e com uma máquina
através de terminais de computadores. Se ele não conseguisse distinguir um do outro, a máquina seria inteligente.
– Turing previu que tal máquina existiria até o final do século XX.– Ainda não existe, mas houve avanço.
• Reconhecimento de voz, visão computacional, robótica, aprendizado de máquina.
Aula 20 - 5/11/2007 32
Inteligência Artificial e Robótica
• Exemplo: aspirador inteligente– Tem sensores para “ver” os obstáculos e se
mover pela casa.