Informática I Aula 20 http://www.ic.uff.br/~bianca/informatica1/ Aula 20-5/11/2007 1
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 2
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 3
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 4
Á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 5
Temas em Ciência da Computação componentes físicos dos computadores Ciência da Computação programas que executam nos computadores Teoria capacidades e limitações dos computadores Aula 20-5/11/2007 6
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 7
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 8
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 9
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 10
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 11
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 12
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 13
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 14
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 15
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 16
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 17
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 18
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 19
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 20
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 21
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 22
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 23
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 24
Ethernet Aula 20-5/11/2007 25
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 26
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 27
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 28
Etapas do Processo de Desenvolvimento de Software 1. Análise e Especificação de Requerimentos 2. Projeto 3. Implementação 4. Teste 5. Operação e Manutenção Aula 20-5/11/2007 29
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 30
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 31
Inteligência Artificial e Robótica Exemplo: aspirador inteligente Tem sensores para ver os obstáculos e se mover pela casa. Aula 20-5/11/2007 32