Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de...

32
Aula 20 - 5/11/2007 1 Informática I Aula 20 http://www.ic.uff.br/~bianca/informatica1/

Transcript of Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de...

Page 1: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

Aula 20 - 5/11/2007 1

Informática I

Aula 20

http://www.ic.uff.br/~bianca/informatica1/

Page 2: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 3: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 4: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 5: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 6: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 7: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 8: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 9: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 10: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 11: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 12: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 13: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 14: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 15: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 16: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 17: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 18: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 19: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 20: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 21: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 22: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 23: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 24: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 25: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

Aula 20 - 5/11/2007 25

Ethernet

Page 26: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 27: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 28: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 29: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 30: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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

Page 31: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.

Page 32: Aula20-Inf1bianca/informatica1/index_arquivos/Aula20-Inf1.pdf · • Algoritmos e linguagens de programação • Ciência da computação como disciplina • Execução condicional

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.