Processamento da Informação
Processamento da Informação
Noções de Linguagens Noções de Linguagens de Programação de Programação Setembro 2009Hardware Versus Software
Hardware Versus Software
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
Classificação Geral de
Classificação Geral de
Software
Software
Tipo de Serviço Realizado
Tipo de Serviço Realizado
•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
Classificação Geral de
Classificação Geral de
Software
Software
Sistema Operacional (SO)
Sistema Operacional (SO)
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 Texto
Planilha Eletrônica Jogos Compiladores
Classificação Geral de
Classificação Geral de
Software
Software
Sistema Operacional (SO)
Sistema Operacional (SO)
• 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
Classificação Geral de
Classificação Geral de
Software
Software
Aplicativo
Aplicativo
•
Software
aplicativo: programas
desenvolvidos ou adquiridos pelos
usuários para algum fim específico.
Podem ser de natureza:
•
profissional,
•
educacional ou
•mesmo de lazer;
Software
Software
Versus
Versus
Programa
Programa
E como são construídos/desenvolvidossoftwares?
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
Definição de Programa
Definição de Programa
Programa é uma seqüência de instruções (comandos) que, a partir de dados inseridos,
obtêm um resultado que será disponibilizado por
algum dispositivo de saída
Entrada de Dados Processamento dos comandos de um programa Saída de Dados 2+5 10
Linguagens de Programação
Linguagens de Programação
Definição
Definiçã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
Linguagens de Programação
Linguagens de Programação
Sintaxe e Semântica
Sintaxe e Semântica
•
Uma linguagem (natural ou de
programação) é formada por:
•
Sintaxe
Linguagens de Programação
Linguagens de Programação
Sintaxe
Sintaxe
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
sintaticamente
correta
O Brasil está localizado na América Central
Frase
sintaticamente
Linguagens de Programação
Linguagens de Programação
Sintaxe
Sintaxe
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
Linguagens de Programação
Linguagens de Programação
Sintaxe
Sintaxe
• 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
Linguagens de Programação
Linguagens de Programação
Sintaxe
Sintaxe
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
Linguagens de Programação
Linguagens de Programação
Sintaxe
Sintaxe
•
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;
Linguagens de Programação
Linguagens de Programação
Semântica
Semântica
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... Semanticamente incorretas
Linguagens de Programação
Linguagens de Programação
Semântica
Semântica
• 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
Linguagens de Programação
Linguagens de Programação
Semântica
Semântica
• 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
Linguagens de Programação
Linguagens de Programação
Classificação
Classificaçã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
Linguagens de Programação Linguagem
Linguagens de Programação Linguagem
de Máquina-1ª Geração
de Máquina-1ª 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
Linguagens de Programação
Linguagens de Programação
Linguagem de Máquina/Representação
Linguagem de Máquina/Representação
•
Instruções de linguagem de máquina são
representadas por códigos na forma de
palavras binárias. Por exemplo:
•
01000101000111010101010000100101
01...
•
Como exemplo:
•
1011000000000001 significa colocar
Linguagens de Programação
Linguagens de Programação
Linguagem de Linguagem de Máquina/RepresentaçãoMáquina/Representação
Execução direta pela máquina, sem
Linguagens de Programação
Linguagens de Programação
Linguagem de Linguagem de Máquina/HexadecimalMáquina/Hexadecimal
•
Linguagem Hexadecimal: seqüência de bits
pode ser representada por números
hexadecimais
•
Notação em hexadecimal
•
1011000000000001
b= B001
hProgramação impraticável para escrita e leitura (mesmo com hexadecimal)...
Linguagens de Programação
Linguagens de Programação
Linguagem Assembly - 2ª Geração
Linguagem Assembly - 2ª Geraçã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
Linguagens de Programação
Linguagens de Programação
Linguagem Assembly (de Montagem)
Linguagem Assembly (de Montagem) 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
Linguagens de Programação
Linguagens de Programação
Linguagem Assembly (de Montagem)
Linguagem Assembly (de Montagem)
• 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)
Linguagens de Programação
Linguagens de Programação
Linguagem Assembly (de Montagem)
Linguagem Assembly (de Montagem)
• 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...;
Linguagens de Programação
Linguagens de Programação
Linguagem Assembly (de Montagem)
Linguagem Assembly (de Montagem)
• 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
Linguagens de Programação
Linguagens de Programação
Linguagens de Alto
Nível-Linguagens de Alto Nível-
(3ª Geração)(3ª Geração) • Linguagens de alto nível apresentam umasintaxe 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”);
} }
Linguagens de Programação
Linguagens de Programação
Linguagens de Alto Nível
Linguagens de Alto Nível
•
Permitem a manipulação dos dados nas
mais diversas formas:
•
números inteiros,
•reais,
•
matrizes, etc...
•
A linguagem assembly trabalha com bits
Linguagens de Programação
Linguagens de Programação
Linguagens de Alto Nível
Linguagens de Alto Nível
• Algumas linguagens de programação, e o ano em
Linguagens de Programação
Linguagens de Programação
Linguagens de Alto Nível
Linguagens de Alto Nível
• 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
Linguagens de Programação
Linguagens de Programação
Linguagens de Muito Alto Nível-(4ª Geração)
Linguagens de Muito Alto Nível-(4ª Geraçã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
Linguagens de Programação
Linguagens de Programação
Linguagens de Muito Alto Nível
Linguagens de Muito Alto Nível
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:
Linguagens de Programação
Linguagens de Programação
Processamento de Linguagens
Processamento de Linguagens
Computadores atuais são capazes de executar somente programas em uma linguagem de nível baixo, a linguagem de máquina
Linguagem de Alto Nível (Código Fonte) Análise sintática e semântica Linguagem de Máquina (Código Executável) Execução class HelloWorld {
public static void main (String[]args) { System.out.println(“HelloWorld”);
} }
Linguagens de Programação
Linguagens de Programação
Processamento de Linguagens
Processamento de Linguagens
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
Linguagens de Programação
Linguagens de Programação
Processamento de Linguagens
Processamento de Linguagens
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
Linguagens de Programação
Linguagens de Programação
Interpretação
Interpretaçã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
Linguagens de Programação
Linguagens de Programação
Interpretação
Interpretaçã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)
•
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
Linguagens de Programação
Linguagens de Programação
Interpretaçã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
Linguagens de Programação
Linguagens de Programação
Interpretaçã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”); } }
Linguagens de Programação
Linguagens de Programação
Interpretação
Interpretaçã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
Linguagens de Programação
Linguagens de Programação
Interpretação
Linguagens de Programação
Linguagens de Programação
Compilação
Compilaçã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;
Linguagens de Programação
Linguagens de Programação
Compilação
Compilaçã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)
A linguagem HTML(HyperText Markup
Language)
é compilada ou interpretada?
Linguagens de Programação
Linguagens de Programação
Compilação
Paradigmas de Programação
Paradigmas de Programação
Definição
Definição
• Paradigmas de programação são estilos
utilizados pelos programadores para conceber um programa
• 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
Paradigmas de Programação
Paradigmas de Programação
Paradigma Estruturado, Imperativo
Paradigma Estruturado, Imperativo
• No paradigma estruturado o programador
procura imitar as ações dos computadores em nível de linguagem de máquina
• Baseado no tradicional ciclo de máquina
(1) Busca próxima instrução (2) Decodifica a instrução (3) Executa a ação inicialmente solicitada
Paradigmas de Programação
Paradigmas de Programação
Paradigma Estruturado, Imperativo
Paradigma Estruturado, Imperativo
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
Paradigmas de Programação
Paradigmas de Programação
Paradigma Estruturado, Imperativo
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
Paradigmas de Programação
Paradigmas de Programação
Paradigma Estruturado, Imperativo
Paradigma Estruturado, Imperativo
Exemplos de linguagens que suportam o paradigma imperativo: •
Fortran
•C
•Basic
•Cobol
•Pascal
Paradigmas de Programação
Paradigmas de Programação
Paradigma Funcional
Paradigma Funcional
• No paradigma Funcional qualquer computação é
formulada em termos de funções, que transformam um estado computacional em outro
n1 + n2 (+ n1 n2)
•
O paradigma funcional é geralmente utilizado
Paradigmas de Programação
Paradigmas de Programação
Paradigma Funcional
Paradigma Funcional
•
Exemplos de linguagens que suportam o
paradigma funcional:
•
LISP
•
Haskell
•Miranda
Paradigmas de Programação
Paradigmas de Programação
Paradigma Declarativo, ou Lógico
Paradigma Declarativo, ou Lógico
• 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
Paradigmas de Programação
Paradigmas de Programação
Paradigma Declarativo, ou Lógico
Paradigma Declarativo, ou Lógico
•
Exemplos de linguagens que suportam
o paradigma declarativo (linguagens
lógicas):
•
Prolog
Paradigmas de Programação
Paradigmas de Programação
Linguagens Respectivas
Linguagens Respectivas
LISP ML Scheme FUNCIONAIS
Linguagem FORTRAN BASIC C ADA de Máquina COBOL ALGOL APL PASCAL
IMPERATIVAS GPSS Prolog DECLARATIVAS OU LÓGICAS SIMULA C++ Ada 95 Smaltalk Java ORIENTADAS A OBJETOS
Paradigmas de Programação
Paradigmas de Programação
Orientação a Objetos
Orientação a Objetos
• 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 idade lingua andar() respirar() alimentar() falar() nome idade lingua andar() respirar() alimentar() falar()
Paradigmas de Programação
Paradigmas de Programação
Orientação a Objetos
Orientação a Objetos
A comunicação entre objetos é feita através de
troca de mensagens nome=Ita idade=39 lingua=Tupi/Port. andar() respirar() alimentar() falar() Nome=Joao idade=37 lingua=Port. andar() respirar() alimentar() falar()
Ola João!! Como você está?