Linguagens de Programa - PowerPoint PPT Presentation

About This Presentation
Title:

Linguagens de Programa

Description:

Linguagens de Programa o Roberto Willrich INE- CTC-UFSC E-Mail: willrich_at_inf.ufsc.br URL: http://www.inf.ufsc.br/~willrich – PowerPoint PPT presentation

Number of Views:126
Avg rating:3.0/5.0
Slides: 58
Provided by: Robert2610
Category:

less

Transcript and Presenter's Notes

Title: Linguagens de Programa


1
Linguagens de Programação
  • Roberto Willrich
  • INE- CTC-UFSC
  • E-Mail willrich_at_inf.ufsc.br
  • URL http//www.inf.ufsc.br/willrich

2
Linguagens de Programação
  • Conteúdo
  • Software e Hardware
  • Tipos de Softwares
  • Níveis de Linguagem de Programação
  • Etapas para Geração de um Programa
  • Paradigmas de programação
  • Linguagens Interpretadas e Compiladas
  • Exemplos de Linguagens de Programação

3
Programação de Computadores
  • Sistema Computacional
  • Termo mais abrangente que computador
  • Inclui qualquer máquina baseada em processador
  • Características diferentes tanto a nível de
    arquitetura e linguagem de programação
  • Visto como uma associação de
  • 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
    pela pilotagem do sistema para a execução das
    tarefas consideradas

4
Programação de Computadores
  • Classificação dos softwares quanto ao tipo de
    serviço por ele realizado
  • software de sistema (ou sistema operacional)
  • capaz de oferecer ao usuário, ou a outros
    softwares, facilidades de acesso aos recursos do
    computador
  • através de comandos ou serviços especiais a nível
    de um programa
  • administra os arquivos, controla periféricos e
    executa utilitários.
  • software utilitário
  • programas desenvolvidos por especialistas ou
    mesmo por usuários experimentados
  • tem por objetivo facilitar a realização de
    determinadas atividades correntes no uso dos
    computadores
  • detecção e eliminação de vírus, programas de
    comunicação em redes de computadores, compressão
    de arquivos, etc...
  • software aplicativo
  • programas desenvolvidos ou adquiridos pelos
    usuários para algum fim específico
  • de natureza profissional, educacional ou mesmo de
    lazer (jogos)

5
Programação de Computadores
  • Linguagem de Programação
  • Definida como sendo um
  • conjunto limitado de instruções (vocabulário)
  • associado a um conjunto de regras (sintaxe)
  • define como as instruções podem ser associadas
  • como se pode compor os programas para a resolução
    de um determinado problema
  • Existem várias linguagens de programação
  • algumas de uso mais geral
  • outras concebidas para áreas de aplicação
    específicas

6
Níveis de Linguagens de Programação
  • Classificação das linguagens de programação
  • Podem ser classificadas em níveis de linguagens
  • Sendo que os níveis mais baixos são mais próximos
    da linguagem interpretada pelo processador e mais
    distante das linguagens naturais
  • Níveis
  • Linguagem de Máquina
  • Linguagem Hexadecimal
  • Linguagem Assembly
  • Linguagem de Alto nível

7
Linguagem de Máquina
  • Computador
  • Corresponde basicamente a um conjunto de
    circuitos
  • Sua operação é controlada através de programas
    escritos numa forma bastante primitiva
  • baseada no sistema binário de numeração tanto
    para a representação dos dados quanto das
    operações
  • Linguagem de Máquina
  • Forma básica (em linguagem binária) de
    representação dos programas
  • É a forma compreendida e executada pelo hardware
    do sistema

8
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 cuja extensão pode variar de 8 a 64 bits
  • 01000101000111010101010000100101010100010111101101
    ...
  • Contém instruções elementares, como transferência
    de dados da memória para registros internos da
    CPU, adição de valores, etc.
  • 1011000000000001 significa colocar valor 1 no
    registro interno AL
  • 1111111011000000 incrementa de 1 o valor do
    registro AL
  • Programação impraticável para escrita e leitura

9
Linguagem Hexadecimal
  • Linguagem Hexadecimal
  • Simplifica a compreensão e a programação de
    computadores
  • seqüência de bits é representada por números
    hexadecimais
  • Notação em hexadecimal
  • 1011000000000001b B001h significa colocar valor
    1 em AL
  • 1111111011000000b FEC0h incrementa de 1 AL
  • Programação de aplicações diretamente em
    linguagem de máquina é impraticável
  • mesmo representada na notação hexadecimal

10
Linguagem Assembly
  • Linguagem Assembly (linguagem de montagem)
  • linguagem de máquina de cada processador é
    acompanhada de uma versão legível da linguagem
    de máquina
  • Uma linguagem simbólica
  • Pois não é composta de números binários/hexadecima
    is
  • Utiliza palavras abreviadas, chamadas de
    mnemônicos, indicando a operação
  • 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 a instrução Pascal R1R2
  • 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 a instrução Pascal R1R1R2

11
Linguagem Assembly
  • Simplifica a programação em código de máquina
  • Escolhendo nomes descritivos para as posições de
    memória e usando mnemônicos para representar
    códigos de operação
  • Exemplo operação de dois números inteiros
    v1v2v3
  • se associarmos o nome v2 à posição de memória
    200h, v3 à posição 202h e v1 à posição 204h
  • em notação hexadecimal ficaria
    A1000203060202A30402
  • usando a técnica mnemônica
  • MOV AX,v2 AX recebe o valor de memória
    associada a B
  • ADD AX,v3 AX recebe a soma de AX (B) com o
    valor de C
  • MOV v1,AX variável A recebe valor de AX

12
Linguagem Assembly
  • Linguagem Assembly apresenta certas dificuldades
  • Necessidade de definição de um conjunto
    relativamente grande de instruções para a
    realização de tarefas que seriam relativamente
    simples
  • Exigência do conhecimento de detalhes do hardware
    do sistema
  • arquitetura interna do processador, endereços e
    modos de operação de dispositivos de hardware,
    etc...
  • Tem vantagens
  • Utilização da linguagem Assembly proporciona um
    maior controle sobre os recursos do computador
  • permitindo também obter-se bons resultados em
    termos de otimização de código

13
Linguagem Assembly
  • Geração do código de máquina
  • Assembly é uma versão legível da linguagem de
    máquina
  • passagem de um programa escrito em Assembly para
    a linguagem de máquina é quase sempre direta
  • não envolvendo muito processamento
  • Passagem de um programa Assembly para linguagem
    de máquina é chamada de Montagem
  • programa que realiza esta operação é chamado de
    montador (Assembler).

14
Linguagem Assembly
  • Linguagem Assembly é orientada para máquina
    (processador)
  • É necessário conhecer a estrutura do processador
    para poder programar em Assembly
  • Utiliza instruções de baixo nível que operam com
    registros e memórias diretamente
  • é muito orientada às instruções que são
    diretamente executadas pelo processador
  • Não pode ser reutilizado 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...
  • Na seqüência da evolução
  • Procurou-se aproximar mais a linguagem de
    programação à linguagem natural que utilizamos no
    dia-a-dia
  • surgiram então as linguagens de alto nível, tipo
    Pascal, C, C, etc

15
Linguagem Assembly
  • Desvantagens com relação as linguagens de alto
    nível
  • Assembly apresenta um número muito reduzido de
    instruções
  • do tipo operações de movimentação de dados em
    memória, para registros e para memórias, e
    operações lógicas e aritméticas bem simples
  • instruções assembly são de baixa expressividade
  • elas são de baixo nível
  • programador deve programar num nível de
    detalhamento muito maior para fazer a mesma coisa
    que em um programa escrito em linguagem de alto
    nível
  • Programador utiliza diretamente os recursos do
    processador e memória
  • ele deve conhecer muito bem a máquina onde ele
    está programando
  • Programa escrito em linguagem Assembly não é
    muito legível
  • por isso ele deve ser muito bem documentado

16
Linguagem Assembly
  • Desvantagens com relação as linguagens de alto
    nível
  • Programa Assembly não é muito portável
  • portável apenas dentro de uma família de
    processadores
  • Assembly tem um custo de desenvolvimento maior
  • devido a sua baixa expressividade, ilegibilidade
    e exigência do conhecimento sobre a máquina faz a
    programação
  • requerendo um maior número de homens/hora
    comparado com a programação utilizando linguagens
    de alto nível

17
Linguagem Assembly
  • Vantagens com relação as linguagens de alto
    nível
  • Permite o acesso direto ao programa de máquina
  • utilizando uma linguagem de alto nível não tem-se
    o controle do código de máquina gerado pelo
    compilador
  • programador pode gerar um programa mais compacto
    e eficiente que o código gerado pelo compilador
  • pode ser 0 ou 300 menor e mais rápido que um
    programa compilado
  • Assembly permite o controle total do hardware
  • por exemplo, permitindo a programação de portas
    seriais e paralela de um PC

18
Linguagem Assembly
  • Aplicações da Linguagem Assembly
  • Controle de processos com resposta em tempo real
  • devido a possibilidade de gerar programas mais
    eficientes
  • Aplicação tempo-real
  • processador deve executar um conjunto de
    instruções em um tempo limitado
  • exemplo a cada 10 ms processador deve ler um
    dado, processá-lo e emitir um resultado
  • Comunicação/transferência de dados
  • devido a possibilidade de acessar diretamente o
    hardware
  • linguagem Assembly é utilizada para a
    implementação de programas de comunicação ou
    transferência de dados
  • 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
  • existem programas de alto nível com sub-tarefas
    escritas em linguagem Assembly
  • pode-se otimizar partes de programas, no caso de
    tarefas tempo-real
  • para a programação do hardware do computador

19
Linguagem de Alto Nível
  • Linguagem de Alto Nível
  • Assim denominadas por apresentarem uma sintaxe
    mais próxima da linguagem natural
  • Fazem uso de palavras reservadas extraídas do
    vocabulário corrente (como READ, WRITE, TYPE,
    etc...)
  • Permitem a manipulação dos dados nas mais
    diversas formas
  • números inteiros, reais, vetores, listas, etc...
  • enquanto a linguagem Assembly trabalha com bits,
    bytes, palavras, armazenados em memória.
  • Origem e Exemplos
  • Surgiram entre o final da década de 50 e início
    dos anos 60
  • Fortran, Cobol, Algol e Basic
  • Algumas delas têm resistido ao tempo e às
    críticas
  • Fortran ainda é visto como uma linguagem de
    implementação para muitas aplicações de
    engenharia
  • Cobol é uma linguagem bastante utilizada no
    desenvolvimento de aplicações comerciais

20
Linguagem de Alto Nível
  • Linguagem de Alto Nível para linguagem de máquina
  • Passagem é bem mais complexa
  • são utilizados compiladores e linkadores

21
Linguagem de Alto Nível
  • Permitiria Interoperabilidade
  • Dado que os comandos das linguagens de alto nível
    não referenciam os atributos de uma dada máquina
  • podem ser facilmente compilados tanto em uma
    máquina como em outra
  • Programa escrito em linguagem de alto nível
    poderia, teoricamente, ser usado em qualquer
    máquina
  • bastando escolher o compilador correspondente
  • Interoperabilidade não é tão simples
  • Quando um compilador é projetado
  • certas restrições impostas pela máquina são
    refletidas como características da linguagem a
    ser traduzida
  • Exemplo
  • tamanho do registrador e as células de memória de
    uma máquina limitam o tamanho máximo dos inteiros
    que nela podem ser convenientemente manipulados
  • Em diferentes máquinas uma mesma linguagem pode
    apresentar diferentes características, ou
    dialetos
  • é necessário fazer ao menos pequenas modificações
    no programa antes de move-lo de uma máquina para
    outra

22
Linguagem de Alto Nível
  • Problema da Interoperabilidade
  • Para auxiliar a interoperabilidade
  • American National Standards Institute (ANSI) e a
    International Organization for Standardization
    (ISO) adotaram e publicaram padrões para muitas
    das linguagens mais populares
  • também surgiram padrões informais
  • devido à popularidade de um dados dialeto de uma
    linguagem e ao desejo oferecerem produtos
    compatíveis

23
Linguagens de Alto Nível
  • Classificação quanto ao uso
  • Linguagens de uso geral
  • podem ser utilizadas para implementação de
    programas com as mais diversas características e
    independente da área de aplicação
  • Pascal, Modula-2 e C
  • Linguagens especializadas
  • são orientadas ao desenvolvimento de aplicações
    específicas
  • Prolog, Lisp e Forth
  • Linguagens orientadas a objeto
  • oferecem mecanismos sintáticos e semânticos de
    suporte aos conceitos da programação orientada a
    objetos
  • Smalltalk, Eiffel, C e Delphi

24
Desenvolvimento de Programas
  • Ambiente de desenvolvimento
  • Desenvolvimento de programas é associado ao uso
    de ferramentas ou ambientes de desenvolvimento
  • que acompanham o programador desde a etapa de
    codificação propriamente dita até a geração e
    teste do código executável
  • Principais etapas de geração de um programa
  • Codificação do código fonte
  • Tradução do código fonte
  • Linkagem
  • Depuração
  • Engenharia de Software
  • Metodologias mais completas que definem os passos
    para o desenvolvimento de programas

25
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Compreende três atividades análise léxica,
    análise sintática e geração de código
  • são processadas pelos módulos do tradutor
    analisadores léxico, sintático e gerador de
    código
  • Análise léxica
  • É o processo de reconhecer quais cadeias de
    símbolos do programa-fonte representam entidades
    indivisíveis
  • Exemplos
  • três símbolos 153 não devem ser interpretados
    como 1, seguido por 5, seguido por 3, mas são
    reconhecidos como um valor numérico apenas
  • palavras que aparecem no programa, embora
    compostas de caracteres individuas, devem ser
    interpretadas cada qual como uma unidade
    inseparável

26
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Análise léxica
  • Analisador léxico identifica um grupo de símbolos
    que representam uma única entidade
  • classifica como sendo um valor numérico, ou uma
    palavra, ou um operador aritmético, e assim por
    diante
  • gera um padrão de bits conhecido como átomo
    (token), indicativo da classe do elemento
  • Átomos são os dados de entrada do analisador
    sintático

27
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Análise sintática
  • Processo de identificação da estrutura gramatical
    do programa, e de reconhecimento do papel de cada
    um dos seus componentes
  • Processo de análise sintática é feito com base em
    um conjunto de regras sintáticas que definem a
    sintaxe da linguagem de programação
  • Uma forma de expressar regras sintáticas é
    através de diagramas de sintaxe

28
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Diagramas de Sintaxe
  • Representações gráficas da estrutura gramatical
    de um programa
  • Terminais são identificados por elipses
  • Não-Terminais são identificados por retângulos

29
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Árvore sintática
  • Processo de análise sintática de um programa
    consiste em construir uma árvore de sintaxe para
    o programa-fonte
  • Por isso as regras de sintaxe que descrevem a
    estrutura gramatical de um programa não devem
    propiciar que duas ou mais árvores de sintaxe
    distintas possam ser construídas para a mesma
    cadeia
  • dado que isto levaria a ambigüidades no
    analisador sintático
  • Esta falha pode ser bastante sutil
  • A própria regra de if-then-else apresentada
    contém esse defeito
  • If B1 then if B2 then S1 else S2
  • aceita duas árvores de sintaxe

30
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Árvore sintática

Comando
then
Expressão booleana
Comando
if
B1
else
Comando
then
Expressão booleana
Comando
if
S1
S2
B2
31
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Árvore sintática

Comando
then
Expressão booleana
Comando
if
else
Comando
B1
S2
then
Expressão booleana
Comando
if
S1
B2
32
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Em muitas linguagens, evita-se tais problemas
    usando chaves, ou então Begin-End
  • If B1 then
  • Begin
  • if B2 then S1
  • End
  • else S2
  • e
  • If B1 then
  • Begin
  • if B2 then S1
  • else S2
  • End

33
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • À medida que um analisador sintático recebe
    átomos do analisador léxico, ele vai analisando
    os comandos e ignorando os comentários
  • As informações extraídas das declarações são
    tabeladas em uma estrutura conhecida como tabela
    de símbolos
  • guarda informações sobre as variáveis declaradas,
    os tipos de dados e as estruturas de dados
    associadas a tais variáveis
  • Analisador sintático utiliza como base estas
    informações ao analisar comandos tais como
  • TotalCustoImposto

34
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • TotalCustoImposto
  • para determinar o significado do símbolo
  • analisador deverá saber qual o tipo de dados
    associados às variáveis Custo e Imposto
  • Se Custo for do tipo real e Imposto for do tipo
    caractere
  • estão somar Custo e Imposto faz pouco sentido e
    deverá ser considerado um erro
  • Se Custo e Imposto forem ambos de tipo inteiro
  • analisador solicitará ao gerador de código a
    construção de uma instrução em linguagem de
    máquina que utilize o código de operação
    correspondente à adição de inteiros
  • Se ambos forem de tipo real
  • analisador solicitará o uso do código de operação
    correspondente à adição de valores em ponto
    flutuante

35
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • TotalCustoImposto
  • Também tem sentido quando os dados envolvidos não
    forem do mesmo tipo
  • Por exemplo, se Custo for inteiro e Imposto for
    real, o conceito de adição ainda será aplicável
  • Analisador sintático poderá decidir que o gerador
    de código construa as instruções necessárias para
    converter um dado de um tipo para outro, antes de
    executar a adição
  • Tal conversão implícita entre tipos é denominada
    coerção.
  • As operações de coerção são mal-vistas por muitos
    projetistas de linguagens
  • argumentam que a necessidade da coerção é um
    sintoma de falha no projeto do programa, não
    devendo, pois, ser contornada pelo analisador
    sintático
  • a maioria das linguagens modernas são fortemente
    tipadas
  • todas as ações solicitadas por um programa devem
    envolver dados de tipos compatíveis, sem coerção
  • analisadores sintáticos consideram como erros
    quaisquer incompatibilidade de tipo

36
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • processo de construção das instruções em
    linguagem de máquina envolve numerosos problemas
  • um dos quais é o da construção de um código
    eficiente
  • Por exemplo, consideremos a tarefa de traduzir a
    seguinte seqüência de dois comandos
  • xyz
  • wxz
  • Estes comandos poderiam ser traduzidos como
    comandos independentes
  • esta interpretação tende a não produzir um código
    eficiente.
  • gerador de código deve ser construído de tal
    forma que seja capaz de identificar que, ao ser
    completado o primeiro comando, os valores de x e
    de z já se encontram em registradores de
    propósito geral do processador
  • não necessitando serem carregados a partir da
    memória para o cálculo de w
  • Melhorias como essa constituem a otimização de
    código
  • cuja realização constitui importante tarefa do
    gerador de código

37
Desenvolvimento de Programas
  • Tradução do Código Fonte (código objeto)
  • Análises léxica e sintática e a geração de código
    não são efetuadas em ordem estritamente
    seqüencial, mas de forma intercalada
  • Analisador léxico começa identificando o primeiro
    átomo e fornecendo-o ao analisador sintático
  • com esta pista sobre a estrutura que vem a
    seguir, o analisador sintático solicita ao
    analisador léxico o próximo átomo
  • À medida que o analisador sintático reconhece
    sentenças ou comandos completos
  • vai ativando o gerador de código
  • para que este possa produzir as correspondentes
    instruções de máquina

38
Desenvolvimento de Programas
  • Editores de ligação (linker)
  • Objetivo rearranjar o código do programa
    incorporando a ele todas as partes referenciadas
    no código original
  • resultando num código executável pelo processador
  • Tarefa é feita pelos ligadores (linkadores)

39
Desenvolvimento de Programas
  • Depuradores ou debuggers
  • Auxilia o programador a eliminar (ou reduzir) a
    quantidade de bugs (erros) de execução no seu
    programa
  • Executam o programa gerado através de uma
    interface apropriada que possibilita uma análise
    efetiva do código do programa
  • Graças à
  • execução passo-a-passo (ou instrução por
    instrução) de partes do programa
  • visualização do estado do programa através das
    variáveis e eventualmente dos conteúdos dos
    registros internos do processador
  • alteração em tempo de execução de conteúdos de
    memória ou de variáveis ou de instruções do
    programa
  • etc...

40
Paradigmas de programação
  • Existem vários paradigmas de programação
  • que são estilos utilizados pelos programadores
    para conceber um programa
  • os mais conhecidos são
  • Programação não-estruturada
  • Programação Procedural
  • Programação Modular
  • Programação Orientada a Objetos

41
Paradigmas de programação
  • Programação não-estruturada
  • Pessoas aprendem a programação escrevendo
    programas pequenos e simples
  • consistindo apenas de um programa principal
  • uma seqüência de comandos ou declarações que
    modificam dados que são acessível a todos os
    pontos do programa
  • Técnica de programação não estruturada
  • tem várias desvantagens no caso de programas
    grandes
  • se a mesma seqüência é necessária em localizações
    diferentes ela deve ser copiada
  • não permite a organização do programa

42
Programação não estruturada
  • PROGRAM MaiorN
  • VAR
  • Num1,Num2,Num3,Maior integer
  • BEGIN
  • ( Leitura dos numeros )
  • write(Entre com o primeiro numero -gt )
    readln(Num1)
  • write(Entre com o segundo numero -gt )
    readln(Num2)
  • write(Entre com o terceiro numero -gt
    )readln(Num3)
  • ( Determinacao do maior numero )
  • Maior Num1
  • IF Maior lt Num2
  • THEN Maior Num2
  • IF Maior lt Num3
  • THEN Maior Num3
  • ( Impressao do maior numero )
  • writeln(Programa de Determinacao do Maior
    Numero)
  • writeln
  • writeln(gtgt O maior numero eh o -gt ,Maior)
  • END.

43
Paradigmas de programação
  • Programação Procedural
  • Programa é visto como uma seqüência de chamadas
    de procedimentos
  • exemplo de procedimento clássico é o cálculo de
    uma raiz quadrada
  • Uma chamada de procedimento é usado para invocar
    o procedimento
  • podendo ser passado alguns parâmetros
  • Após a seqüência ser executada
  • controle retorna justo após o ponto de chamada do
    procedimento
  • Programas podem ser escritos mais estruturados e
    livres de erro
  • introduzindo parâmetros tão bem quanto
    procedimentos de procedimentos (sub-procedimentos)
  • Por exemplo, se um procedimento é correto, toda
    vez que ele é usado ele produz um resultado
    correto
  • no caso de erros pode-se direcionar a busca
    àqueles lugares que não são livres de erros

44
Programação Procedural
  • PROGRAM MaiorN1
  • VAR
  • Num1,Num2,Num3,Maior Integer
  • PROCEDURE LeNum(VAR N1 Integer VAR N2
    Integer VAR N3 Integer)
  • BEGIN
  • write(Entre com o primeiro numero -gt )
    readln(N1)
  • write(Entre com o segundo numero -gt )
    readln(N2)
  • write(Entre com o terceiro numero -gt )
    readln(N3)
  • END ( LeNum )
  • FUNCTION DetMaior(N1IntegerN2IntegerN3Inte
    ger) Integer
  • var M Integer
  • BEGIN
  • M Num1
  • IF M lt Num2 THEN M Num2
  • IF M lt Num3 THEN M Num3
  • DetMaiorM
  • END ( DetMaior )
  • BEGIN ( Programa Principal )
  • LeNum(Num1,Num2,Num3)

45
Paradigmas de programação
  • Programação Modular
  • No passar dos anos
  • ênfase no projeto de programas passou do projeto
    de procedimentos para a organização dos dados
  • surgindo a programação modular
  • Procedimentos relacionados e dados que eles
    utilizam são agrupados em módulos separados
  • por exemplo, todas as funções de manipulação de
    uma pilha (empilhar, desempilhar, etc.) e a pilha
    em si podem ser agrupadas em um módulo
  • Cada módulo tem seus próprios dados
  • permite que cada módulo gerencie um estado
    interno que é modificado por chamadas a
    procedimentos deste módulo

46
Programação Modular
Unit PilhaCar Interface Function PilhaVazia
Boolean Procedure Empilha ( X Char )
Function Retira Char Implementation Const
TamPilha 100 Type Indice 1..TamPilha
VetorChar Array Indice Of Char Var
Pilha VetorChar Topo 0..TamPilha
Function PilhaVazia Boolean Begin
PilhaVazia (Topo 0) End Procedure
Empilha ( X Char ) Begin Topo Topo 1
Pilha Topo X End Function Retira
Char Begin Retira Pilha Topo
Topo Topo - 1 End Begin Topo 0 End.
Program InverteNome Uses PilhaCar Var Tam , i
Integer Nome , Inverso
String Begin Write ( 'Entre um nome ' )
Readln ( Nome ) Tam Length ( Nome )
For i 1 To Tam Do Empilha ( Nome i
) Inverso '' While Not PilhaVazia Do
Inverso Inverso Retira Writeln (
Inverso ) End.
47
Paradigmas de programação
  • Programação Orientada a Objetos
  • Temos uma malha de objetos que interagem
  • cada um mantendo seu próprio estado
  • Essência da programação orientada a objetos
  • consiste em tratar os dados e os procedimentos
    que atuam sobre os dados como um único objeto
  • Objeto
  • entidade independente com uma identidade e certas
    características próprias

48
Paradigmas de programação
  • Linguagens de programação e seus paradigmas
  • Uma linguagem de programação fornece o suporte a
    um estilo ou paradigma de programação se ela
    fornece funcionalidades que a tornam conveniente
    para usar determinado estilo
  • Uma linguagem não suporta uma técnica se é
    necessário esforços excepcionais ou destreza para
    escrever tal programa
  • ela meramente habilita a técnica a ser usada
  • Por exemplo, pode-se escrever programas
    estruturados em Fortran e programas orientados a
    objetos em C
  • mas isto é desnecessariamente difícil de fazer
    porque estas linguagens não suportam diretamente
    estas técnicas
  • É de responsabilidade do programador aplicar
    certa técnica de programação

49
Linguagens Interpretadas
  • Linguagens de programação compiladas
  • Etapas de desenvolvimento anteriores consideram
    que o uso de linguagens de programação compiladas
  • aquelas que produzirão um programa na forma da
    linguagem de máquina do processador
  • instruções definidas pelo programador usando uma
    linguagem de alto nível serão traduzidas para as
    instrução na linguagens de máquina
  • Linguagens de programação interpretadas
  • Interpretação do programa usando outro programa,
    chamado interpretador
  • Linguagem interpretada mais conhecida a
    linguagem Java
  • interpretada por uma máquina virtual chamada JVM
    (Java Virtual Machine)
  • Interpretador
  • Programa que executa as instruções escritas em
    linguagem de alto nível
  • Geralmente translada as instruções de alto nível
    em uma forma intermediária que é executada

50
Linguagens Interpretadas
51
Linguagens Interpretadas
  • Compilador Versus Interpretador
  • Programa compilado executa mais rapidamente que
    um programa interpretado
  • Vantagem do interpretador é que ele não necessita
    passar por um estágio de compilação durante a
    qual as instruções de máquina são gerados
  • Processo de tradução pode consumir muito tempo se
    o programa é longo
  • Interpretador pode executar imediatamente os
    programas de alto-nível
  • Interpretadores são algumas vezes usados durante
    o desenvolvimento de um programa
  • quando um programador deseja testar rapidamente
    seu programa
  • Interpretadores são com freqüência usados na
    educação
  • pois eles permitem que o estudante programe
    interativamente.

52
Linguagens Interpretadas
  • Compilador Versus Interpretador
  • Tanto os interpretadores como os compiladores são
    disponíveis para muitas linguagens de alto nível
  • Java, Basic e LISP são especialmente projetadas
    para serem executadas por um interpretador
  • Linguagens interpretadas podem possibilitar a
    portabilidade
  • Como não é gerado um código de máquina, e sim um
    código intermediário que será interpretado por
    uma máquina virtual
  • Pode-se obter a portabilidade do código se esta
    máquina virtual for desenvolvida para várias
    plataformas
  • este é o caso da linguagem Java

53
Linguagens Interpretadas
  • Máquina Virtual
  • É um ambiente operacional
  • ambiente onde os usuários executam o programa
  • auto-contido que se comporta como se fosse um
    computador separado
  • Exemplo applet Java executa em uma Máquina
    Virtual Java que não acessa ao sistema
    operacional do computador hospedeiro
  • Este projeto tem duas vantagens
  • Independência de sistema
  • uma aplicação poderá ser executada em qualquer
    máquina virtual, sem se preocupar com o hardware
    e software dando suporte ao sistema
  • Segurança
  • como a máquina virtual não tem contato com o
    sistema operacional, existem poucas possibilidade
    de um programa interpretado danifique outros
    arquivos ou aplicações
  • Esta vantagem trás consigo uma limitação os
    programas executando em uma máquina virtual não
    pode tomar vantagem das funcionalidades do
    sistema operacional

54
Linguagens Interpretadas
  • Java
  • Uma das linguagens interpretadas mais conhecidas
    no momento
  • Linguagem de programação de alto nível,
    desenvolvida pela Sun Microsystems.
  • uma linguagem orientada a objetos similar ao C,
    mas simplificada para eliminar características
    que causam erros comuns de programação

55
Linguagens Interpretadas
  • Java
  • Códigos fontes de Java (arquivos com a extensão
    .java) são traduzidos na forma de um código
    intermediário chamado bytecode (arquivos com a
    extensão .class)
  • que podem ser executados por um interpretador
    Java.
  • Bytecode pode ser transferido através de uma rede
    e executada por uma Máquina Virtual Java (JVM)

56
Linguagens Interpretadas
  • Java
  • Existem várias implementações de JVMs para
    diversos sistemas operacionais, incluindo UNIX,
    Macintosh OS e Windows

57
Linguagens Interpretadas
  • Java
  • Bytecode pode ser convertido diretamente em
    instruções de linguagem de máquina
  • usando o compilador JIT (Just-In-time Compiler)
  • Java é uma linguagem de programação de propósito
    geral
  • com um número de características que fazer ela
    muito interessante para ser usada na World Wide
    Web
  • Aplicações Java menores, chamadas applets, podem
    ser baixadas de um servidor Web e executar no seu
    navegador por um navegador compatível com o Java
  • tal como o Netscape Navigator ou o Microsoft
    Internet Explorer
Write a Comment
User Comments (0)
About PowerShow.com