linguagens de programação - univasf.edu.brmarcelo.linder/arquivos_iapca/aulas/aula3.pdf ·...
Post on 14-Feb-2019
222 Views
Preview:
TRANSCRIPT
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.
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;
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.
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.
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.
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.
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.)
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.
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.
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.
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.
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.: ?
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: ; {
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.
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.
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 *
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).
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.
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;
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.
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.
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.
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".
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.
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.;
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.
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.
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.
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.
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> )
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.
A sentença: O estudante estuda muito. Pertence à linguagem acima?Demonstre.
top related