Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação...

32
Linguagens de Programação O paradigma de programação imperativo está diretamente atrelado à arquitetura básica dos computadores sobre os quais os programas eram executados. Boa parte dos computadores mais populares nos últimos anos foi projetada 45 45 populares nos últimos anos foi projetada com base na arquitetura proposta por von Neumann. Onde dados e programas são armazenados na mesma memória. A unidade central de processamento (UCP), que executa realmente as instruções, é separada da memória.

Transcript of Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação...

Page 1: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

O paradigma de programação imperativoestá diretamente atrelado à arquiteturabásica dos computadores sobre os quais osprogramas eram executados.

Boa parte dos computadores maispopulares nos últimos anos foi projetada

4545

populares nos últimos anos foi projetadacom base na arquitetura proposta por vonNeumann. Onde dados e programas sãoarmazenados na mesma memória. Aunidade central de processamento (UCP),que executa realmente as instruções, éseparada da memória.

Page 2: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Esta característica faz com que os dados einstruções devam ser transferidos(canalizados-piped) entre a memória e a UCP.

4646

Devido à arquitetura de von Neumann osrecursos centrais das linguagem imperativassão:

- as variáveis, as quais modelam ascélulas de memória;

Page 3: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

- as instruções de atribuição, baseadas na

4747

- as instruções de atribuição, baseadas naoperações de canalização;

- e a forma iterativa de repetição, o métodomais eficiente desta arquitetura.

A iteração é rápida nos computadores de vonNeumann porque as instruções sãoarmazenadas em células adjacentes namemória.

Page 4: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Por fim, podemos associar o nome dadoao paradigma, ou seja, imperativo, como otempo verbal imperativo.

Pois, o programador instruirá ocomputador da seguinte forma:

- faça isso;

4848

- faça isso;

- depois isso;

- depois aquilo...

Este paradigma destaca-se pelasimplicidade, já que o ser humano, tambémbaseia-se na ideia de ações e estados aoplanejar as ações que irá executar.

Page 5: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Outro paradigma de programação quecomentaremos é o funcional, onde oprincipal meio de fazer computações éaplicando funções a determinadosparâmetros.

Ou seja, neste paradigma, basicamente

4949

Ou seja, neste paradigma, basicamentetrata-se a computação como uma avaliaçãode funções matemáticas.

Considerando que uma função pode ounão ter parâmetros (valores de entrada) egerará uma saída.

Page 6: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Com a evolução da programação, o foco,anteriormente voltado para a arquiteturaagora volta-se para os dados. Fomentandoo surgimento do paradigma de programaçãoorientado a objetos.

Onde não coloca-se em voga as

5050

Onde não coloca-se em voga asfuncionalidades do programa emdesenvolvimento e sim as categorias dedados a serem manipulados (as classesque dão origem a objetos).

A metodologia orientada a objeto inicia-secom a abstração de dados.

Page 7: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

A abstração de dados trata-se deencapsular os dados por meio deprocedimentos (métodos) que controlaram aacesso a estes.

Adiciona-se também o conceito deherança e outras características.

5151

herança e outras características.

Herança é um conceito poderoso quepotencializa a reutilização de código.

O desenvolvimento da programaçãoorientada a objeto se deu em paralelo coma linguagem que suportou seus conceitos aSmaltalk. (Hoje suportados em C++, Java, etc.)

Page 8: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

O paradigma de programação lógico é umparadigma baseado em regras.

Em uma linguagem imperativa, umalgoritmo é especificado com grandesdetalhes, e a ordem de execução específicadas instruções ou dos comandos deve ser

5252

das instruções ou dos comandos deve serincluída.

Em uma linguagem baseada em regras,estas são especificadas sem nenhuma ordemparticular, e o sistema de implementaçãodeve escolher uma ordem de execução queproduza o resultado desejado.

Page 9: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Essa abordagem ao desenvolvimento desoftware é radicalmente diferente daquelasutilizadas nos outros paradigmas vistos, e,evidentemente, exige um tipo de linguagemcompletamente diferente.

5353

completamente diferente.

O Prolog é a mais popular linguagem deprogramação lógica utilizada.

Page 10: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

MÉTODOS FORMAIS X INFORMAIS

O formalismo está associado à especificação deuma estrutura rígida e de um conjunto de regras

5454

uma estrutura rígida e de um conjunto de regrascoeso, que visam dotar o método formal dacapacidade de nortear a construção de algoritmos.

Métodos informais por sua vez denotam ainexistência das características associadas aoformalismo. Um exemplo é linguagem natural.

Page 11: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Associados aos métodos formais temos asintaxe e a semântica.

Veremos agora alguns elemento relacionadoscom a sintaxe de uma linguagem de programação.

5555

• conjunto de caracteres

• são os constituintes mais simples de uma linguagemde programação.

• a partir dele todas as sentenças – programas – sãoconstruídas, seguindo-se regras da gramática dalinguagem. Normalmente (caracteres alfabéticos, dígitos decimais

e um conjunto variável de caracteres especiais).

* Os conceitos apresentados relacionados a especificação de linguagens de programação baseiam-se na apostila sobre Linguagens de Programação elaborada pelo prof. Celso Rodrigues da Fundação Universidade Federal do Rio Grande.

Page 12: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• identificadores - sequências de caracteresusadas para se dar nomes aos objetos do usuário(ou mesmo pré-definidos) como variáveis,constantes, arquivos, tipos de dados, etc.

• operadores - símbolos especiais para certas

5656

• operadores - símbolos especiais para certasoperações (do tipo função).

Em geral recaem numa das classes:

• Aritméticos Ex.: + - * /

• relacionais Ex.: > < = <= >= !=

• lógicos Ex.: && || ! (AND OR NOT)

•Não-numéricos Ex.: ?

Page 13: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• palavras-chaves ou palavras-reservadas - sãoas partes fixas de uma construção sintáticaqualquer, na forma de sequência de caracteres.Estas não podem ser usadas comoidentificadores.

5757

identificadores.

Exemplos: IF ELSE FOR

• delimitadores - elementos usados para marcar oinício ou o fim de uma construção sintática.Podem ser palavras-chaves, mas em geral sãocaracteres especiais.

Exemplos: ; {

Page 14: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• chaves sintáticas - pares de delimitadoresconjugados, ou seja: um sempre apareceacompanhado do outro.

Servem basicamente para facilitar o processo deanálise sintática por parte do processador da

5858

análise sintática por parte do processador dalinguagem, uma vez que marcam explicitamente oalcance de uma construção, diminuindo asoportunidades de ambiguidade no significado dosprogramas.

Pelo mesmo motivo, cada vez mais sereconhece sua influência positiva na legibilidade.

Page 15: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Exemplos de chaves sintáticas:

• na linguagem C: { ... }

• em Pascal: begin ... end

repeat ... until

5959

• expressões - combinações de identificadores eoperadores especificando uma operação maiscomplexa. Admitem formas diversas deconstrução, conforme sejam os operadores.

Dois aspectos importantes dos operadoresinfluem no formato das expressões: aridade e omodo.

Page 16: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• a aridade - é o número de operandos(argumentos) de um operador.

Exemplo: + (soma) A1 + A2

- (troca de sinal) -X

• modo ou posição relativa: os operadores podem

6060

• modo ou posição relativa: os operadores podem estar num ou noutro modo, conforme sua posição em relação a seus operandos. Tais modos são:

infixado = operador entre os operandos

pré-fixado = operador antes dos operandos

pós-fixado = operador depois dos operandos

Nos exemplos abaixo, as expressões estão escritas nos três modos:

MODO EXPRESSÃO 1 EXPRESSÃO 2infixado Al + A2 (A + E) * Cpré-fixado + Al A2 * + A B Cpós-fixado Al A2 + A E + C *

Page 17: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Uma hipótese adicional é ter um operadorintermixado. Nesse caso, o operador écomposto de mais de um símbolo, devendo semisturar aos operandos. Um exemplo disto é ooperador ?: da linguagem C.

6161

operador ?: da linguagem C.

• comandos - combinações de expressões epalavras-chaves.

Estas palavras-chaves representamoperadores especiais que agem sobre o estadointerno da máquina. (principalmentemodificando valores de variáveis).

Page 18: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Os comandos são as construções maiscentrais das linguagens de programaçãotradicionais (imperativas).

Sua sintaxe influi na redigibilidade e na

6262

Sua sintaxe influi na redigibilidade e nalegibilidade da linguagem.

Page 19: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• declarações - combinações de palavras-chavese identificadores.

As declarações visam estabelecer conjuntosde informações necessárias para a execução doprograma.

6363

programa.

Elas produzem o que se denomina amarração(ou associação) entre as diversas entidades doprograma (variáveis, constantes, funções, tipos,etc.) e seus atributos, entre estes o seu nome(representado por um identificador).

Exemplo na linguagem C: int x=0;

Page 20: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

• comentários - trechos explicitamente marcadospelo programador para serem desconsideradospelo processador.

Os comentários são importantes para adocumentação dos programas.

6464

documentação dos programas.

Exemplo de um comentário em C:

/* Observação */

Em geral comentários são delimitados porchaves sintáticas.

Page 21: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

ESPECIFICAÇÃO SINTÁTICA: GRAMÁTICAS

Uma gramática é um conjunto de regras queespecificam o formato das sentenças de umalinguagem, isto é, sua sintaxe.

6565

Uma linguagem usada para se descrever outralinguagem é chamada metalinguagem.

Por exemplo: ao se descrever a língua chinesausando-se para isso o português, nossa línguafuncionaria como uma metalinguagem.

Page 22: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Para se descrever linguagens de programaçãovárias metalinguagens podem ser usadas, desdea linguagem natural até formalismos matemáticosrigorosos, passando por métodos gráficos.

6666

No nível de abordagem aqui adotadoconsideraremos a descrição formal da sintaxe e adescrição semântica será informal.

Page 23: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Por exemplo, a regra

<atribuição> : := <receptor> := <expressão>

descreve o formato de um comando deatribuição em Pascal: à esquerda do símbolo ':='deve estar uma construção caracterizada como

6767

deve estar uma construção caracterizada como'receptor', e à direita uma 'expressão'.

O significado (semântica) disso pode ser dadoinformalmente, em linguagem natural: "substituir ovalor do receptor pelo valor resultante daavaliação da expressão".

Page 24: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Frisando, a especificação formal é necessáriapara se evitar ambiguidades na descrição, o que éimprescindível para o trabalho de implementaçãode uma linguagem.

6868

BNF (Backus-Naur Form)

foi criada para a descrição sintática dalinguagem ALGOL e tornou-se umametalinguagem padrão. Com BNF pode-seespecificar gramáticas de linguagens formais ounaturais, ainda que com restrições.

Page 25: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Uma gramática é um objeto formal G = (N, T, P,S), onde:

N é o conjunto de símbolos não-terminais (oumetavariáveis). Estes representam classes oucategorias de construções sintáticas

6969

categorias de construções sintáticasintermediárias na definição das sentenças dalinguagem. Em BNF são escritos entreparêntese angulares, como por exemplo: <S>,<termo>, <comando>, etc.;

Page 26: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Uma gramática é um objeto formal G = (N, T, P,S), onde

T é o conjunto de símbolos terminais dalinguagem, i.e., básicos, considerados atômicos,os quais podem se combinar para formar todas

7070

os quais podem se combinar para formar todasas construções válidas. Podem ser caracteres,ou sequências de caracteres, como, porexemplo: A, 1, for, +, [, procedure, etc.;

P é o conjunto de produções. Uma produção éuma regra que define uma possível estrutura deum não-terminal.

Page 27: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Uma gramática é um objeto formal G = (N, T, P,S), onde

Em BNF, uma produção tem a forma seguinte:

<a> ::= <b>

onde <a> é um símbolo não-terminal e <b> é

7171

onde <a> é um símbolo não-terminal e <b> éuma sequencia de símbolos terminais ou não-terminais, que vale por uma descrição daestrutura sintática da estrutura <a>;

S é o chamado símbolo nāo-terminal inicial, que representa uma sentença.

Page 28: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Uma gramática pode ser usada para derivaçãoou redução de sentenças.

Derivação é o processo pelo qual se obtémuma sentença.

Isto se faz através da substituição sucessiva

7272

Isto se faz através da substituição sucessivade cada não-terminal pela sua definição (ladodireito da produção correspondente), a partir daprodução inicial (aquela que tem o símbolo S àesquerda), até se obter uma sequência quecontenha apenas terminais, ou seja, umasentença.

Page 29: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Redução e o processo pelo qual se verifica avalidade de uma sentença, i.e., se ela pertenceà linguagem.

Consegue-se isso pela aplicação inversa dasproduções, escolhendo-se criteriosamente

7373

produções, escolhendo-se criteriosamentetrechos da sentença a serem substituídos peloscorrespondentes não- terminais, até se atingir osímbolo inicial (nesse caso dito símboloobjetivo). Se isto não for alcançado, asequência dada não é uma sentença dalinguagem.

Page 30: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Exemplo: uma gramática simples em BNF(especifica o formato dos identificadores em umacerta linguagem):G1 = ( N = { <id>, <letra>, <digito>, <resto> },

T = { A, B, C, 0, 1 },

P = { <id> ::= <letra> "1"

<id> ::= <letra><resto> "2"

7474

<id> ::= <letra><resto> "2"

<letra> ::= A "3 "

<letra> ::= B "4"

<letra> ::= C "5"

<resto> ::= <letra> "6"

<resto> ::= <digito> "7"

<resto> ::= <letra><resto> "8"

<resto> ::= <digito><resto> "9"

<digito> ::= 0 l 1 "10" },

S = <id> )

Page 31: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

Linguagens de Programação

Especificação de linguagens de programação

Obtendo (derivando) sentenças dessalinguagem: sabendo que S é <id> (o não-terminal,inicial), começamos por ele. Pela regra 2, porexemplo (poderia ser a regra 1 também), vemosque ele pode ser substituído pela sequência

7575

que ele pode ser substituído pela sequência<letra><resto>, e escolhendo 'A' como <letra>(regra 3) ficamos com 'A'<resto>. Continuando,<resto> pode ser <digito><resto> (regra 9), porexemplo '1'<resto>, e temos 'A1'<resto>. Como<resto> pode ser apenas <letra> (regra 6),escolhemos ' B' para encerrar 'A1B' é umasentença da linguagem definida pela gramáticaG1.

Page 32: Linguagens de Programaçãomarcelo.linder/arquivos_iapCA... · Linguagens de Programação Especificação de linguagens de programação •a aridade-é o número de operandos (argumentos)

A sentença: O estudante estuda muito. Pertence à linguagem acima?Demonstre.