bc-0505 processamento da informação
Post on 02-Jan-2016
38 Views
Preview:
DESCRIPTION
TRANSCRIPT
BC & TBC & TUniversidade Federal do ABCUniversidade Federal do ABC
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
•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
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
• 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
• Software aplicativo: programas desenvolvidos ou adquiridos pelos usuários para algum fim específico.Podem ser de natureza:
• profissional, • educacional ou • mesmo de lazer;
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
• 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
• Uma linguagem (natural ou de programação) é formada por:
• Sintaxe
• Semântica
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
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
• 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
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
• 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;
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
• 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
• 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
• 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)
• 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;
• Instruções de linguagem de máquina são representadas por códigos na forma de palavras binárias. Por exemplo:•0100010100011101010101000010010101...
Exemplo de programa em hexadecimal
LINGUAGEM DE MÁQUINA – HEXADECIMAL
Execução direta pela máquina, sem
traduçã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??
• 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;
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;
• 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)
• 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...;
• 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
• 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”); }}
• 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;
• Algumas linguagens de programação, e o ano em que foram desenvolvidas:
• 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
• 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);
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;
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”); }}
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
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
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
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)
• 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
• 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
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”); }}
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
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
• 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;
• 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)
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
COMPILAÇÃO
É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado
DesvantagensVantagens
A linguagem HTML(HyperText Markup Language)
é compilada ou interpretada?
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
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)
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)
JAVA – INTERPRETAÇÃO
JAVA – COMPILAÇÃO E INTERPRETAÇÃ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
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
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
• 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
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
(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
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
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
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
Exemplos de linguagens que suportam o paradigma imperativo: Fortran C Perl (*) Python (*) Pascal Lisp (*)
(*) Também suportam outros paradigmas
PARADIGMA ESTRUTURADO, IMPERATIVO
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
Divide( Soma(Numeros), Conta(Numeros) )
PARADIGMA FUNCIONAL
Exemplo da média de uma sequência de números:
Exemplos de linguagens que suportam o paradigma funcional: LISP (*) Haskell Miranda ML – Meta Language Ocaml Erlang
(*) Lisp suporta vários paradigmas
PARADIGMA FUNCIONAL
• 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
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
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
Exemplos de linguagens que suportam o paradigma lógico: Prolog GPSS Mercury (*)
(*) Mercury também suporta programação funcional
PARADIGMA LÓGICO
• 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()
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á?
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
top related