Linguagens de Programação -...

35
Linguagens de Programação O estudante estuda muito . Regras: 7 9 12 14 . <artigo><nome> <verbo><adverbio>. Regras: 2 4 <SN> <SV> . Regras: 1 77 77 Regras: 1 <sentença> Representar através de uma árvore de derivação.

Transcript of Linguagens de Programação -...

Page 1: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 2: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

Linguagens de Programação

O estudante estuda muito.

<artigo> <nome> <verbo> <adverbio>.

7878

<SN> <SV>.

<sentença>

Page 3: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 4: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 5: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 6: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 7: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 8: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 9: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 10: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificaçã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.

Page 11: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 12: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 13: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 14: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 15: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 16: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 17: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 18: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 19: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 20: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 21: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

9797

Page 22: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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).

Page 23: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 24: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

Linguagem de Programação C

100 13

Page 25: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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

Page 26: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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

Page 27: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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

Page 28: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

Estrutura de um programa em C

Declarações e definições globais

104

main()

Outras funções

12

Page 29: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

Conceitos Básicos – Linguagem C

13

Page 30: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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’, ‘%’)

Page 31: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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.

Page 32: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

Palavras Reservadas e Comentários

Palavras Reservadas

108

Comentários

/* ccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccc */

Page 33: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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

Page 34: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificaçã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;

Page 35: Linguagens de Programação - univasf.edu.brunivasf.edu.br/~marcelo.linder/arquivos_iapCA/aulas/aula4.pdf · Padrões (ANSI) formou um comitê, X3j11, para estabelecer uma especificação

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;