Linguagens de Programação
O estudante estuda muito .
Regras: 7 9 12 14 .
<artigo><nome> <verbo><adverbio>.
Regras: 2 4
<SN> <SV> .
Regras: 1
7777
Regras: 1
<sentença>
Representar através de uma árvore de derivação.
Linguagens de Programação
O estudante estuda muito.
<artigo> <nome> <verbo> <adverbio>.
7878
<SN> <SV>.
<sentença>
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Uma linguagem de alto nível é definida naforma de um conjunto de instruções, emprincípio passíveis de execução por umamáquina.
7979
máquina.
Pode-se dizer que uma linguagem deprogramação define formalmente uma máquinade computação.
No entanto, como vimos, um computador realsó pode executar programas expressos em umalinguagem definida pelo hardware, a linguagemde máquina.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Nenhum hardware (pelo menos até omomento) incorpora instruções com grau decomplexidade de uma linguagem de alto nível.
8080
A máquina capaz de executar programas dealto nível é então virtual, só existe formalmente,e a execução de um programa de alto nívelsempre é um processo de simulação dessamaquina virtual.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
O processador de uma linguagem é umsistema de computação cuja tarefa é receberum programa escrito nessa linguagem e criarcondições para que as atividades prescritas por
8181
condições para que as atividades prescritas poreste programa sejam realizadas por umcomputador que o receber.
Dito de outra forma: um processador delinguagem resolve o problema deimplementação da máquina virtual definida pelalinguagem.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
As soluções dadas a este problema podem serconsideradas do ponto de vista do usuário dalinguagem (programador) ou do implementador doprocessador.
8282
processador.
Para o escopo de nossa disciplinas é pertinenteapenas o primeiro caso.
Quanto ao segundo, tem desenvolvimento maiorem disciplinas que objetivam a implementação delinguagens.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Modos de processamento
Há duas abordagens fundamentais quanto àimplementação de linguagens: interpretação e
8383
implementação de linguagens: interpretação etradução.
Visando distingui-las, vale uma metáforaadaptada da obra Dershem, Hebert L.; Jipping,Michael J. Programming languages: structuresand models. Belmont: Wadsworth Publishing Co.,1990.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Modos de processamento
Imagine um funcionário que fala inglês e seuchefe, que fala português.
8484
chefe, que fala português.
Todos os dias o chefe prepara uma lista, emportuguês, de tarefas a serem executas pelofuncionário.
Este usará um dicionário português-inglês paraentender a lista e executar as tarefas.
O funcionário poderá adotar dois procedimentos.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Modos de processamento
O primeiro é o que chamaremos abordageminterpretativa.
8585
interpretativa.
Na qual ele traduz a primeira instrução eexecuta a tarefa correspondente. Traduz asegunda instrução e executa a tarefa. E assim pordiante, até completar o serviço.
Linguagens de Programação
Especificação de linguagens de programação
PROCESSAMENTO (modelo de execução de linguagem)
Modos de processamento
Na segunda abordagem ― a tradução — ofuncionário primeiramente traduz todas as
8686
funcionário primeiramente traduz todas asinstruções da lista de português para inglês,registrando as instruções traduzidas. Nasequência, toma a lista de instruções traduzidas eexecuta as tarefas prescritas.
Linguagens de Programação
Interpretação
Um interpretador traduz um comando (instrução)de um programa por vez e já invoca uma rotinaque complete sua execução.
Interpretadores têm a vantagem de não traduzirinstruções que nunca serão usadas.
8787
instruções que nunca serão usadas.
Também consegue sempre relacionar ao longodo programa seus efeitos com as instruçõescorrespondentes (isto é bom para observar umprograma em funcionamento e detectar erros).
Normalmente, para uma mesma linguagem,tende a ser um programa menor que umcompilador.
Linguagens de Programação
Especificação de linguagens de programação
Tem como desvantagem principal o fato de aexecução de programas ser lenta, devido ànecessidade de retraduzir as instruções cada vezque seja necessário executar um programa. Oumesmo durante uma única execução haverá
8888
mesmo durante uma única execução haveráretradução, sempre que for necessário repetir umtrecho, seja numa repetição propriamente ou nainvocação de um procedimento, por exemplo.
Linguagens de Programação
Tradução
Um tradutor produz, a partir do programa quelhe é fornecido (programa-fonte), um programaequivalente, mas em uma linguagem executável(programa-objeto).
O programa-objeto pode ser diretamente
8989
O programa-objeto pode ser diretamenteexecutável (linguagem de máquina) ou estar emuma linguagem para a qual exista umprocessador, ao qual ainda será submetido oprograma-objeto.
Linguagens de Programação
Tradução
Conforme seja essa relação (entre linguagemfonte e linguagem objeto, os tradutores podemser:
montadores: traduzem de linguagem de baixonível (assembly) para linguagem de máquina;
9090
nível (assembly) para linguagem de máquina;
compiladores: traduzem de linguagem de altonível para linguagem de baixo nível (porexemplo, para linguagem de máquina);
pré-processadores: traduzem de umalinguagem de alto nível para outra.
Linguagens de Programação
Tradução
A grande vantagem dos tradutores é dar velocidadeà execução dos programas, pois o programa-objetoresultante pode ser armazenado para posteriorexecução, sem necessidade de retradução.
Além disso, o tradutor pode, às custas de uma
9191
Além disso, o tradutor pode, às custas de umaimplementação mais complexa que a de uminterpretador, fazer diagnósticos mais completossobre as condições dos programas-fontes, porquerepassa todo o programa durante a tradução, antes dequalquer execução.
Isto é de particular valia para o programador noprocesso de depuração de seu programas.
Linguagens de Programação
Sistemas de implementação híbridos
Alguns sistemas de implementação delinguagens são um meio-termo entre oscompiladores e interpretadores puros; elestraduzem programas em linguagem de alto nívelpara uma linguagem intermediária projetada para
9292
para uma linguagem intermediária projetada parapermitir fácil interpretação.
Este método é mais rápido do que ainterpretação pura e são chamados de sistemasde implementação híbridos.
Java possui implementações híbridas e estacaracterística permite sua adaptação às maisvariadas máquinas.
Linguagens de Programação
Estrutura básica de um processador delinguagens
Como os compiladores são os processadores delinguagens mais comuns, é a sua estrutura queserá abordada aqui.
A estrutura de outros processadores de
9393
A estrutura de outros processadores delinguagens são similares, diferindo apenas emdetalhes particulares.
De um modo geral, um processador tem seutrabalho subdividido em três fases:
Análise léxica;
Análise sintática;
Geração de código.
Linguagens de Programação
Estrutura básica de um processador delinguagens
Análise léxica - decomposição da cadeia decaracteres que entra representando umasentença, com o objetivo de separá-laadequadamente em seus constituintes
9494
importantes.
Tais elementos são exemplificados poridentificadores, palavras-chaves, constantes,operadores, delimitadores, etc. Cada símbolodesses, isolado pelo analisador léxico, éconhecido como token.
Linguagens de Programação
Estrutura básica de um processador delinguagens
Análise sintática - verificação da entradarecebida para ver se é válida, i.e., se é umasentença da linguagem.
O analisador sintático recebe do analisador
9595
O analisador sintático recebe do analisadorléxico uma sequência de símbolos primitivos(tokens) e determina se estão dispostosconforme especifica a gramática da linguagem.
Linguagens de Programação
Estrutura básica de um processador delinguagens
Geração de código – trata-se da produção deuma sequência de caracteres correspondente àtradução do programa-fonte, passível deexecução posterior.
9696
Uma forma de organizar estas fases éesquematizada na figura do slide a seguir.
Cada fase produz uma versão transformadado programa em processamento, desde algumaforma de “código intermediário” até o códigoobjeto final.
9797
Linguagens de Programação
Ambientes de programação
Um ambiente de programação é o conjunto deferramentas usadas no desenvolvimento desoftware.
Este conjunto pode se consistir em somente umsistema de arquivos, um editor de textos, um
9898
sistema de arquivos, um editor de textos, umcompilador e um linkeditor. Ou pode incluir umagrande coleção de ferramentas integradas, cadauma das quais acessada por meio de umainterface uniforme, a esta modalidade também sedá o nome de Ambiente Integrado deDesenvolvimento (IDE).
Linguagens de Programação
Ambientes de programação
Um IDE pode fornecer ainda programasauxiliares para o desenvolvimento de software,como, por exemplo, um gerador de código.
O gerador de código é uma ferramenta que
9999
O gerador de código é uma ferramenta quepossui a capacidade de gerar código a partir deum determinado modelo de software. Que pode,por exemplo, estar contido em um diagrama deblocos.
Linguagem de Programação C
100 13
Breve histórico de “C”
Criada por Dennis Ritchie;
Em 1972;
Centro de Pesquisas da Bell Laboratories;
101
Centro de Pesquisas da Bell Laboratories;
Para utilização no S.O. UNIX;
O C é uma linguagem de propósito geral.
9
Características básicas da linguagem
Case sensitive (sensível ao caso);
Tipos de dados primitivos: caractere, inteiro ereal;
Possui estruturas de controle de fluxo paraviabilizar a programação estruturada;
102
viabilizar a programação estruturada;
Operadores aritméticos, lógicos, relacionais,condicionais e bit a bit;
Funções de entrada e saída formatadas;
Todo programa tem uma função chamada main();
Todo linha do programa termina com ”;”.10
ANSI
Em 1983, o Instituto Norte-Americano dePadrões (ANSI) formou um comitê, X3j11, paraestabelecer uma especificação do padrão dalinguagem C. O padrão foi completo em 1989 eratificado como ANSI X3.159-1989 “Programming
103
ratificado como ANSI X3.159-1989 “ProgrammingLanguage C” (C ANSI).
11
Estrutura de um programa em C
Declarações e definições globais
104
main()
Outras funções
12
Conceitos Básicos – Linguagem C
13
Constantes
Exemplos:
Decimal (10, -23768)
Hexadecimal (0x12,0x1fea28)
106
Hexadecimal (0x12,0x1fea28)
Octal (0123)
Real (2.34, 2.34E+05, 2.14E-9)
Caractere (‘a’, ‘%’)
Identificadores
Identificadores são os nomes utilizados parareferenciar variáveis, funções ou vários outrosobjetos definidos pelo programador. Sendoconstituídos por:
letras, dígitos e sublinhado(_);
não podem começar com dígito;
107
não podem ser iguais a uma palavra reservada enem iguais a um nome de uma funçãodisponibilizada pelo método utilizado paraconstrução do programa.
Palavras Reservadas e Comentários
Palavras Reservadas
108
Comentários
/* ccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccc */
Tipos Primitivos
Caractere
Definido por char;
Ocupa 8 bits (1 byte)
Faixa de valores: -128 à 127
109
Declaração de variáveis
Exemplo de declaração de uma variável do tipo primitivo caractere:
char letra;
letra = ‘A’;
Operador de atribuição
Tipos Primitivos
Inteiro
Definido por int;
Ocupa 16 bits (2 bytes)
Faixa de valores: -32768 à 32767
110
Faixa de valores: -32768 à 32767
Exemplo: int num;
num = -73;
Tipos Primitivos
Ponto flutuante e ponto flutuante de precisão dupla
float 4 bytes
Seis dígitos de precisão
double 8 bytes
111
double 8 bytes
Dez dígitos de precisão
faixa mínima de um valor em ponto flutuante
1E-37 a 1E+37
Exemplo: float a,b,c=2.34;
double x=2.38,y=3.1415,z;
Top Related