bc-0505 processamento da informação

75
BC & T BC & T Universidade Federal do ABC Universidade Federal do ABC

Upload: thomas-mclaughlin

Post on 02-Jan-2016

39 views

Category:

Documents


1 download

DESCRIPTION

BC-0505 Processamento da Informação. BC & T Universidade Federal do ABC. Hardware Versus Software. Hardware está associado à parte física do sistema (os circuitos e dispositivos) que suporta o processamento da informação. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: BC-0505                        Processamento da Informação

BC & TBC & TUniversidade Federal do ABCUniversidade Federal do ABC

Page 2: BC-0505                        Processamento da Informação

Hardware está associado à parte física do sistema (os circuitos e dispositivos) que suporta o processamento da informação

Software corresponde ao conjunto de programas responsáveis pelo controle do sistema para a execução das tarefas consideradas

Page 3: BC-0505                        Processamento da Informação

•Tipos de software:• Software de sistema, ou sistema operacional• Software aplicativo

•Editores de texto: Word, WordPerfect, etc•Planilhas eletrônicas: Excel, Lotus 123, QuatroPro, etc•Apresentação: PowerPoint, etc•Desenho: CorelDraw, etc

Page 4: BC-0505                        Processamento da Informação

Um Sistema Operacional (SO) é uma camada de software colocada entre o hardware e os programas aplicativos e o usuário. Sua função principal é controlar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema

Sistema Operacional

Hardware

Editor de TextoPlanilha

EletrônicaJogos

Compiladores

Page 5: BC-0505                        Processamento da Informação

• Funções Básicas de um Sistema Operacional:• Comunicação usuário x computador• Gerenciamento do hardware• Manutenção e gerenciamento dos sistemas de arquivos

• Exemplos de SOs:• Windows • Linux• MS-DOS• Unix• Macintosh, Solaris, OS/2

Page 6: BC-0505                        Processamento da Informação

• Software aplicativo: programas desenvolvidos ou adquiridos pelos usuários para algum fim específico.Podem ser de natureza:

• profissional, • educacional ou • mesmo de lazer;

Page 7: BC-0505                        Processamento da Informação

E como são construídos/desenvolvidos

softwares?

Software corresponde ao conjunto de programas responsáveis pelo controle do sistema para a execução das tarefas consideradas

No dia-a-dia os termos software e programa são

usados como sinônimos

Page 8: BC-0505                        Processamento da Informação

• Linguagem de Programação pode ser definida como:

• conjunto limitado de símbolos e comandos, utilizados para criar programas,• por meio dela se estabelece uma comunicação com o computador, fazendo com que ele compreenda e execute o que o programador determinar;

Linguagens de programação são utilizadas para a construção de programas em computadores

Page 9: BC-0505                        Processamento da Informação

• Uma linguagem (natural ou de programação) é formada por:

• Sintaxe

• Semântica

Page 10: BC-0505                        Processamento da Informação

Sintaxe determina regras de como se escreve de forma correta em uma linguagem (regras de escrita)

Os seguintes países fazem parte do Mercosul: Brasil,

Argentina, Paraguai, Uruguai e Venezuela

Frase sintaticament

e correta

O Brasil está localizado na América Central

Frase sintaticament

e correta

Page 11: BC-0505                        Processamento da Informação

Os serguintes países faz parte do Mercosul: Brasil,

Argentina, Paraguai, Uruguai e Venezuela

Se você escrever a palavra “seguintes" com a letra "r" (serguintes), este é um erro sintático Se você não conjugar o verbo com o sujeito em uma frase, terá um outro erro sintático

Frase sintaticamente incorreta

Em linguagem natural a sintaxe é conhecida como

Gramática

Page 12: BC-0505                        Processamento da Informação

• Considere o comando para a criação e declaração de uma variável, em Java

int idade;

idade

• Considere o comando para a atribuição de valor à uma variável, em Java

• idade = 10;

10

idade

Estes comandos estão sintaticamente corretos, na

linguagem de programação Java

Page 13: BC-0505                        Processamento da Informação

Considere o comando para a criação e declaração de uma variável, em Java

Int idade; Erro: Int

int idade Erro: Falta ;• Considere o comando para a atribuição de valor à uma variável, em Java

•idade := 10; Erro: :=•idade = 10 Erro: Falta ;

Estes comandos estão sintaticamente incorretos, na linguagem de

programação Java

Page 14: BC-0505                        Processamento da Informação

• Durante o início do aprendizado de uma linguagem de programação, é natural demorar muito tempo procurando erros de sintaxe,• Conforme o programador ganhar experiência, entretanto, cometerá menos erros e os encontrará mais rapidamente;

Page 15: BC-0505                        Processamento da Informação

Semântica estuda o significado das palavras ou frases Considere as frases:

- Tem dia que de noite é assim mesmo

- Pá daqui, pá dali

- O Sol é uma estrela- Na Física Quântica há o conceito de superposição

- Aquela manga é azul

- Vi uma pessoa no

parque com binóculo

Semanticamente corretas

Depende...Semanticame

nte incorretas

Page 16: BC-0505                        Processamento da Informação

• Considere os comandos, em Java•int idade;•idade = 10;

Comandos sintática e

semanticamente corretos

• Considere os comandos, em Java•int idade;•idade = 10.7;

Comando de atribuição

semanticamente incorreto

Page 17: BC-0505                        Processamento da Informação

• Há erros de semântica relacionados ao raciocínio/lógica do programa,

• Para este tipo de erro, o programa vai executar com sucesso, no sentido de que o computador não irá gerar quaisquer mensagens de erro,

• Mas ele não fará a coisa certa. Fará exatamente o que o programador mandar

Page 18: BC-0505                        Processamento da Informação

• A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível):

• Linguagem de máquina (primeira geração) • Linguagem assembly - de montagem (segunda geração)• Linguagem de alto nível (terceira geração)• Linguagem de muito alto nível (quarta geração)

Page 19: BC-0505                        Processamento da Informação

• Linguagem de máquina é o código que o computador executa diretamente,• É composta de 0´s e 1´s, e neste caso é conhecida como linguagem binária,• A linguagem de máquina é escrita de acordo com as características de um determinado processador,• Por isto é totalmente dependente do hardware, e do fabricante do processador;

Page 20: BC-0505                        Processamento da Informação

• Instruções de linguagem de máquina são representadas por códigos na forma de palavras binárias. Por exemplo:•0100010100011101010101000010010101...

Page 21: BC-0505                        Processamento da Informação

Exemplo de programa em hexadecimal

LINGUAGEM DE MÁQUINA – HEXADECIMAL

Page 22: BC-0505                        Processamento da Informação

Execução direta pela máquina, sem

tradução

Page 23: BC-0505                        Processamento da Informação

• Linguagem Hexadecimal: seqüência de bits pode ser representada por números hexadecimais•Notação em hexadecimal

• 1011000000000001b = B001h

Programação impraticável para escrita e leitura (mesmo com hexadecimal)... O que fazer??

Page 24: BC-0505                        Processamento da Informação

• A linguagem assembly (linguagem de montagem) permite que o programador utilize nomes (chamados mnemônicos) e símbolos em lugar dos números,• Utiliza palavras abreviadas (mnemônicos) indicando operações•MOV R1, R2• mnemônico MOV (abreviação de MOVE)• dois registradores como parâmetros: R1 e R2• processador comanda o movimento do conteúdo de R2 para R1• equivalente à instrução Java R1 = R2;

Page 25: BC-0505                        Processamento da Informação

ADD R1, R2• mnemônico ADD (abreviação de ADDITION)• dois registradores como parâmetros: R1 e R2• processador comanda a adição do conteúdo de R1 ao conteúdo de R2 e o resultado é armazenado em R1• equivalente à instrução em Java R1=R1+R2;•Simplificações da linguagem assembly:• escolhe nomes descritivos para as posições de memória,• usa mnemônicos para representar códigos de operação;

Page 26: BC-0505                        Processamento da Informação

• A conversão da linguagem assembly para a linguagem de máquina se chama montagem• E é feita por um programa chamado montador (ou assembler)

Linguagem de

Montagem(Assembly)

Linguagem de

Máquina

Programa Montador

(Assembler)

Page 27: BC-0505                        Processamento da Informação

• A linguagem assembly é também única para cada tipo de CPU (processador),• Utiliza instruções de baixo nível que operam com registros e memórias diretamente,• Não pode ser reutilizada em famílias de processadores diferentes,• Famílias geralmente mantém um certo nível de interoperabilidade

•Família x86 processador Pentium suporta o assembly do 80486, que suporta o do 80386...;

Page 28: BC-0505                        Processamento da Informação

• Aplicações para a linguagem assembly:• Controle de processos com resposta em tempo real

• devido à possibilidade de gerar programas mais eficientes

• Comunicação/transferência de dados:• devido à possibilidade de acessar diretamente o hardware

• Otimização de sub-tarefas da programação de alto nível

• um programa não precisa somente ser escrito em linguagem assembly ou linguagem de alto nível

Page 29: BC-0505                        Processamento da Informação

• Linguagens de alto nível apresentam uma sintaxe mais próxima da linguagem natural ,

• Usam palavras reservadas extraídas do vocabulário corrente (int, public, if, ...)

class HelloWorld {

public static void main (String[] args) { System.out.println (“HelloWorld”); }}

Page 30: BC-0505                        Processamento da Informação

• Permitem a manipulação dos dados nas mais diversas formas:

• números inteiros, •reais, •matrizes, etc...

• A linguagem assembly trabalha com bits e bytes, armazenados em memória;

Page 31: BC-0505                        Processamento da Informação

• Algumas linguagens de programação, e o ano em que foram desenvolvidas:

Page 32: BC-0505                        Processamento da Informação
Page 33: BC-0505                        Processamento da Informação

• Os programas escritos nessas linguagens são convertidos para a linguagem de máquina através de um programa compilador, ou de um interpretador

Linguagem de Alto Nível

Linguagem de

Máquina

Compilador ou interpretador

Page 34: BC-0505                        Processamento da Informação

• As linguagens de quarta geração têm uma estrutura mais próxima da linguagem humana do que as linguagens de programação de alto nível• Definem “o que” deve ser feito, e não “como” deve ser feito• Como exemplo de linguagens de quarta geração tem-se:

• linguagens de consulta a banco de dados,• linguagens de prototipação (ferramentas case);

Page 35: BC-0505                        Processamento da Informação

As linguagens de consulta foram desenvolvidas para manipular bases de dados. Exemplo: linguagem SQL

Linguagens de Consulta

Apresenta os dados dos campos nome e telefone da tabela Funcionario:

select nome, telefone FROM Funcionario;

Page 36: BC-0505                        Processamento da Informação

Computadores atuais são capazes de executar somente programas em uma linguagem de nível baixo, a linguagem de máquinaLinguagem

de Alto Nível (Código Fonte)

Análise sintática e semântica

Linguagem de Máquina

(Código Executável)

Execuçãoclass HelloWorld {

public static void main(String[]args) {

System.out.println(“HelloWorld”); }}

Page 37: BC-0505                        Processamento da Informação

Como fazer esta tradução? Do código fonte para o código

executável?Linguagem

de Alto Nível (Código Fonte)

class HelloWorld {

public static void main(String[]args) {

System.out.println(“HelloWorld”); }}

Análise sintática e semântica

Linguagem de Máquina

(Código Executável)

Execução

Page 38: BC-0505                        Processamento da Informação

Há ainda a possibilidade de uma mescla das duas (em um sistema híbrido), como é o caso da linguagem Java;

Compilação e interpretação são os processos pelos quais o

código fonte é traduzido em código de máquina

Page 39: BC-0505                        Processamento da Informação

Código Fonte Análise sintática e semântica

Código Executável

Zeros e uns...

Estas análises são feitas em cada linha por vez

1. class HelloWorld{ Execução linha 1

2. public static void main(String[] args) {

Execução linha 2

Page 40: BC-0505                        Processamento da Informação

1. class HelloWorld{ Execução linha 1

2. public static void main(String[] args) { Execução linha 2

• As ações indicadas pelos comandos da linguagem são diretamente executadas• Existe, para executar cada ação possível, um subprograma (escrito na linguagem de máquina do computador hospedeiro)

Page 41: BC-0505                        Processamento da Informação

• Um interpretador é um programa que executa repetidamente a seguinte seqüência:• Obter o próximo comando do

programa• Determinar que ações devem ser

executadas• Executar estas ações

Page 42: BC-0505                        Processamento da Informação

• Características do processo de interpretação:• Não gera um arquivo de código

executável• Toda a vez que for executar o programa,

terá que ler o código fonte• É necessário ter o interpretador na

máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado

• É independente de plataforma

Page 43: BC-0505                        Processamento da Informação

Estas análises são feitas em todo o código fonte, para depois gerar o código executável

class HelloWorld {

public static void main(String[]args) {

System.out.println(“HelloWorld”); }}

Page 44: BC-0505                        Processamento da Informação

Código Fonte Análise sintática e semântica

Código Executável

Zeros e uns...

Programas escritos em linguagem de alto nível são compilados para versões equivalentes em linguagem de máquina, antes de serem executados

Page 45: BC-0505                        Processamento da Informação

INTERPRETAÇÃO

Toda vez que for executar o programa, terá que ler o código fonte.

Não gera um arquivo de código executável; é comum que gere bytecode

É necessário ter o interpretador na máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado

Quando comparada com a compilação, a primeira vez da execução de uma interpretação é mais rápida. Mas as demais execuções serão mais lentas

É independente de plataforma (desde que o próprio interpretador tenha sido portado)

DesvantagensVantagens

Page 46: BC-0505                        Processamento da Informação

• Características do processo de compilação:• A primeira vez que for executar um

programa será relativamente demorado, pois será necessário compilá-lo,

• Mas nas próximas execuções, será mais rápido

• Gera código executável,• Como gera o executável, não é

necessário recompilar novamente para executar o programa;

Page 47: BC-0505                        Processamento da Informação

• Características do processo de compilação (cont):• É preciso ter um compilador na

máquina onde se desenvolve o programa, mas não onde ele é executado

• É dependente de plataforma, pois o código fonte gerado é preparado para rodar em uma plataforma específica (Windows, Linux, Apple, etc)

Page 48: BC-0505                        Processamento da Informação

COMPILAÇÃO

É dependente de plataforma, pois o código de máquina gerado é preparado para rodar em uma plataforma específica

Como gera o executável, não é necessário recompilar novamente para executar o programa

Gera código executável

A primeira vez que for executar um programa será relativamente demorado, pois será necessário compilá-lo. Mas nas próximas execuções, será mais rápido

DesvantagensVantagens

Page 49: BC-0505                        Processamento da Informação

COMPILAÇÃO

É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado

DesvantagensVantagens

Page 50: BC-0505                        Processamento da Informação

A linguagem HTML(HyperText Markup Language)

é compilada ou interpretada?

Page 51: BC-0505                        Processamento da Informação

Java é uma linguagem compilada e interpretada

Código Fonte HelloWorld.java

Compilador javac.exe

Arquivo em bytecode

HelloWorld.class

Java Virtual Machine

(java.exe)

Interpretador

Windows

Linux

Unix

.....

EXECUÇÃO

Page 52: BC-0505                        Processamento da Informação

Código Fonte HelloWorld.ja

va

Compilador javac.exe

Arquivo em bytecode

HelloWorld.class

O Bytecode gerado pode ser transportado entre plataformas distintas que suportam Java (Solaris, Linux, Windows, etc)

Esta portabilidade é importante, por exemplo, para a criação de aplicações para a Internet

Bytecode existe para garantir a portabilidade

na linguagem Java

BYTECODE (*.CLASS)

Page 53: BC-0505                        Processamento da Informação

Código Fonte HelloWorld.ja

va

Compilador javac.exe

Arquivo em bytecode

HelloWorld.class

A compilação ocorre apenas uma vez

Javaplatform for Unix

JavaBytecode

Plataforma Java para

Unix

Unix Workstation

Javaplatform for Unix

JavaBytecode

Plataforma Java para Macintosh

Macintosh

Javaplatform for Unix

JavaBytecode

Plataforma Java para Windows

PC RodandoWindows

Javaplatform for Unix

JavaBytecode

Plataforma Java para

OS/2

PC RodandoOS/2

. . .. . .

BYTECODE (*.CLASS)

Page 54: BC-0505                        Processamento da Informação

JAVA – INTERPRETAÇÃO

Page 55: BC-0505                        Processamento da Informação

JAVA – COMPILAÇÃO E INTERPRETAÇÃO

Page 56: BC-0505                        Processamento da Informação

As primeiras JVM apenas interpretavam. E por isto eram lentas

Um programa Java típico era 10 vezes mais lento do que um programa compilado em código nativo

Foram criados compiladores que rodam em tempo de execução (em conjunto com a JVM),

denominados Just-In-Time (JIT)Os JITs traduzem/compilam partes de

Bytecodes em código de máquina

JAVA – COMPILADORES JIT

Page 57: BC-0505                        Processamento da Informação

As JVMs atuais analisam os Bytecodes à medida que são interpretados

Procuram trechos que são executados com maior freqüência (hot spots)

Um compilador JIT traduz os hot spots para linguagem de máquina nativa

Quando a JVM encontra estas partes compiladas (hot spots), a execução é mais rápida

JAVA – COMPILADORES JIT

Page 58: BC-0505                        Processamento da Informação

Paradigmas de programação são maneiras de pensar utilizados pelos programadores para conceber um programa.

Um paradigma é um padrão conceitual que orienta soluções de projeto e implementação, direcionando a resposta a questões tais como:

O que é um programa?

Como são modelados e escritos?

PARADIGMAS DE PROGRAMAÇÃO

Page 59: BC-0505                        Processamento da Informação

• Um paradigma determina a visão que o programador tem da execução de um programa

• Os paradigmas mais conhecidos são:• Paradigma estruturado, ou imperativo• Paradigma funcional• Paradigma declarativo, ou lógico• Paradigma orientado a objetos

Page 60: BC-0505                        Processamento da Informação

Primeiro paradigma a surgir, e ainda é o dominante Implementado com base na máquina de Von Neumann

PARADIGMA ESTRUTURADO, IMPERATIVO

Unidades de

Entrada

Unidades de SaídaDados

Resultados

- Memória-Processamento

de Dados

Entrada Programa Saída

Estado

Page 61: BC-0505                        Processamento da Informação

(1) Busca próxima

instrução (2) Decodifica a instrução

(3) Executa a ação inicialmente solicitada

PARADIGMA ESTRUTURADO, IMPERATIVO

Entrada Programa Saída

Estado

Page 62: BC-0505                        Processamento da Informação

O programador descreve a resolução de um problema através de uma série de tarefas elementares (comandos), que o computador pode compreender e executar

leia (num1)

leia (num2)

se (num1 > num2)

então

imprima (num1)

senão

imprima (num2 é igual ou maior a num1)

PARADIGMA ESTRUTURADO, IMPERATIVO

Page 63: BC-0505                        Processamento da Informação

Ao final, a seqüência de comandos define a resolução do problema

A programação é dada por uma seqüência de comandos que manipula um volume de dados

leia (num1)

leia (num2)

se (num1 > num2)

então

imprima (num1)

senão

imprima (num2 é igual ou maior a num1)

PARADIGMA ESTRUTURADO, IMPERATIVO

Page 64: BC-0505                        Processamento da Informação

Vantagens do paradigma imperativo:• Modelagem “natural” de aplicações do mundo real• Paradigma dominante e bem estabelecido

Desvantagens do paradigma imperativo:• o gap semântico é maior;• Freqüentemente gera sistemas difíceis de seremmantidos:

• As funções têm que conhecer a estrutura dos dados;• Mudanças na estrutura dos dados acarreta alteração em todas as funções relacionadas.

PARADIGMA ESTRUTURADO, IMPERATIVO

Page 65: BC-0505                        Processamento da Informação

Exemplos de linguagens que suportam o paradigma imperativo: Fortran C Perl (*) Python (*) Pascal Lisp (*)

(*) Também suportam outros paradigmas

PARADIGMA ESTRUTURADO, IMPERATIVO

Page 66: BC-0505                        Processamento da Informação

Qualquer computação é formulada em termos de funções

n1 + n2 (+ n1 n2)

Funções são aplicadas aos parâmetros, e retornam um valor

As variáveis são os parâmetros formais das funções

PARADIGMA FUNCIONAL

Page 67: BC-0505                        Processamento da Informação

Divide( Soma(Numeros), Conta(Numeros) )

PARADIGMA FUNCIONAL

Exemplo da média de uma sequência de números:

Page 68: BC-0505                        Processamento da Informação

Exemplos de linguagens que suportam o paradigma funcional: LISP (*) Haskell Miranda ML – Meta Language Ocaml Erlang

(*) Lisp suporta vários paradigmas

PARADIGMA FUNCIONAL

Page 69: BC-0505                        Processamento da Informação

• No paradigma declarativo são declarados os resultados desejados, e não os procedimentos para se chegar ao resultado,

• A partir disto o sistema deve encontrar o caminho para chegar até o resultado esperado,

• Programar é fornecer dados da seguinte natureza:• axiomas (fatos incondicionais)• regras para derivação de outros fatos,

para fazer perguntas ao computador

Page 70: BC-0505                        Processamento da Informação

Cenário: Um computador que responda perguntas como se fosse um ser inteligente

Perspectiva de um paradigma baseado no raciocínio: o que se quer, em vez de como atingi-lo

No paradigma lógico, programar é fornecer dados da seguinte natureza: axiomas, que indicam alguns fatos sobre o

mundo regras para derivação de outros fatos

(inferência)

PARADIGMA LÓGICO

Page 71: BC-0505                        Processamento da Informação

No modo de programaçãohomem(socrates). %Socrates é um homem

mortal(X):-homem(X). % Todos os homens são

% mortais

No modo de pergunta (execução)?- mortal(socrates).

Yes

O programa deve ter um grande volume de informações, denominados de fatos, para que o sistema chegue à solução

PARADIGMA LÓGICO

Page 72: BC-0505                        Processamento da Informação

Exemplos de linguagens que suportam o paradigma lógico: Prolog GPSS Mercury (*)

(*) Mercury também suporta programação funcional

PARADIGMA LÓGICO

Page 73: BC-0505                        Processamento da Informação

• O programa é organizado em função de objetos,

• Objeto é uma entidade independente com uma identidade e certas características próprias,

• Um objeto contém não só as estruturas de dados, mas também as funções que sobre eles agem;

nome idadelingua

andar() respirar() alimentar(

) falar()

nomeidadelingua

andar() respirar() alimentar(

) falar()

Page 74: BC-0505                        Processamento da Informação

A comunicação entre objetos é feita através de troca de mensagens

nome=Ita idade=39

lingua=Tupi/Port.

andar() respirar() alimentar(

) falar()

Nome=Joaoidade=37

lingua=Port.

andar() respirar() alimentar(

) falar()

Ola João!! Como você está?

Page 75: BC-0505                        Processamento da Informação

LISP ML Scheme FUNCIONAIS

Linguagem FORTRAN BASIC C ADA

de Máquina COBOL ALGOL APL PASCALIMPERATIVAS

GPSS Prolog DECLARATIVAS OU LÓGICAS

SIMULA C++ Ada 95

Smaltalk JavaORIENTADAS A OBJETOS