Sei sulla pagina 1di 28

Nomes, Vinculaes, Verificao de

Tipos, Escopos e Subprogramas


Prof. Sofia Costa Paiva
09.06.2016

Tpicos da Aula
1.Nomes
2.Vinculaes
3.Verificao de Tipos
4.Escopo
5.Subprogramas

Introduo
Variveis
Abstrao para uma ou mais clulas de memria que
armazenam o estado de uma entidade
Uma vez que o programador tenha entendido o uso de
variveis, ele entendeu a essncia da programao E. Dijkstra
Conjunto de propriedades
Tipo de dados
Nome

1.Nomes
Toda Linguagem de Programao (LP) possui nomes com
significados pr-definidos
Atributo fundamental das variveis
Tambm conhecido como identificador
Cadeia de caracteres usado para identificar alguma entidade do
programa
FORTRAN: at 6 caracteres
C at 31 caracteres
Java e Ada no tem limites de tamanho
Caracteres de conexo so aceitveis: sublinhado (_)

1.Nomes
Distino entre maisculas e minsculas
C/C++: Identificadores - letras minsculas com sublinhado (SnakeCase)
Nomes - um ou dois sublinhados e letra maiscula
Ada: Variveis - letras maisculas e minsculas separadas por sublinhado
Java/JavaScript: Classes e interfaces - UpperCamelCase
Mtodos - lowerCamelCase
Variveis - lowerCamelCase, no devem comear com sublinhado ou $
Constantes - letras maisculas com palavras separadas por sublinhados.
Python e Ruby: Classes - UpperCamelCase
Constantes - letras maisculas separadas por sublinhados
Outros nomes - minsculas separada por sublinhados

1.Nomes
Palavras especiais: torna o programa mais legvel
usadas para nomear aes a serem executadas ou para separar
entidades sintticas dos programas.
Palavras reservadas: no pode ser usada como nome
Palavras-chave: especial em certos contextos. Em
FORTRAN:

Real a
Real = 3.4

1.1 Variveis
Abstrao de uma clula de memria
Caracterizada como um sxtuplo de atributos
Nome
Endereo
Valor
Tipo de dados
Tempo de vida
Escopo

2. Vinculao (Binding)
Vincula um identificador a uma entidade computacional
O momento da vinculao chamado de tempo de vinculao
Declarao: mecanismo que cria uma vinculao (associao)
entre um identificador e uma entidade
Ambiente de Referenciamento: conjunto de vinculaes
Todas as variveis visveis na sentena
Pode haver no mximo uma vinculao por identificador em
um ambiente
Inicializao: vinculao de uma varivel a um valor no
momento em que esta vinculada ao armazenamento.

2.1 Vinculao de Tipos


Antes de ser referenciada, uma varivel precisa ser vinculada a
um tipo de dado.
Como e quando deve ocorrer a vinculao?
Declarao explcita: instruo que lista nomes de variveis e
especifica que elas so de um tipo particular
Declarao implcita: um meio de associar variveis a tipos por
convenes padro em vez de por instrues de declarao

2.1 Vinculao de Tipos


Vinculao esttica: ocorre antes do tempo de execuo e
permanece inalterada ao longo da execuo do programa.
Geralmente linguagens implementadas usando compiladores
pois podem ser facilmente traduzidos para cdigo de mquina
de forma muito eficiente.
Vinculao dinmica: pode ser modificada no decorrer da
execuo de um programa. No feita por uma instruo de
declarao. Linguagens com esse recurso so implementadas
usando interpretadores por ser menos custoso.

2.2 Vinculao de Armazenamento e Tempo de vida


Tempo de vida: tempo durante o qual uma varivel vinculada
a uma localizao de memria especfica
Divididas em quatro categorias:
Variveis estticas: vinculadas antes da execuo do programa
Variveis dinmicas da pilha: vinculadas quando o cdigo executado
Variveis dinmicas do monte explcitas: clulas abstratas alocadas e
liberadas por instrues explcitas em tempo de execuo. Ex.: Ponteiros
Variveis dinmicas do monte implcitas: vinculadas no monte apenas quando
so atribudos valores a elas.

2.2 Vinculao de Armazenamento e Tempo de vida


Tempo de vida: tempo durante o qual uma varivel vinculada
a uma localizao de memria especfica
Divididas em quatro categorias:
Variveis estticas: vinculadas antes da execuo do programa
Variveis dinmicas da pilha: vinculadas quando o cdigo executado
Variveis dinmicas do monte explcitas: clulas abstratas alocadas e
liberadas por instrues explcitas em tempo de execuo. Ex.: Ponteiros
Variveis dinmicas do monte implcitas: vinculadas no monte apenas quando
so atribudos valores a elas.

2.2 Vinculao de Armazenamento e Tempo de vida


Tempo de vida: tempo durante o qual uma varivel vinculada
a uma localizao de memria especfica
Divididas em quatro categorias:
Variveis estticas: vinculadas antes da execuo do programa
Variveis dinmicas da pilha: vinculadas quando o cdigo executado
Variveis dinmicas do monte explcitas: clulas abstratas alocadas e
liberadas por instrues explcitas em tempo de execuo. Ex.: Ponteiros
Variveis dinmicas do monte implcitas: vinculadas no monte apenas quando
so atribudos valores a elas.

3. Verificao de Tipos
Assegura que os operandos de um operador sejam de tipos
compatveis
Tipo compatvel: vlido para o operador ou com permisso
para ser convertido pelo compilador (coero)
Erro de tipo: aplicao de operador a operando imprprio
Vinculaes estticas -> verificao de tipos esttica
Vinculaes dinmicas -> verificao de tipos dinmica

3. Verificao de Tipos
Tipificao Forte: cada nome de programa tem um nico tipo
associado a varivel.
Permite a deteco de todos os usos equivocados de variveis
que resultem em erros de tipo
Ada quase fortemente tipificada, Java similar mas no h
nenhuma maneira implcita pela qual os erros de tipo no
possam ser detectados.
C/C++ no fortemente tipificada: h funes cujos
parmetros no so verificados quanto ao tipo

3. Verificao de Tipos
Compatibilidade de Tipos: dois mtodos diferentes
Compatibilidade de nome: duas variveis com o mesmo nome
de tipo.
Compatibilidade de estrutura: duas variveis tm tipos
compatveis se tiverem estruturas idnticas. mais flexvel,
porm mais difcil de implementar

4. Escopo
Regio do programa onde uma
vinculao est definida
Bloco: delimita o escopo das
vinculaes
Varivel local: declarada em um
bloco
Varivel no-local: visvel dentro da
unidade mas no declaradas nele.

4. Escopo
Escopo esttico: definido antes da execuo, o compilador
determina o tipo de cada varivel.
Escopo dinmico: baseia-se na sequncia de chamada de
subprogramas e no nas relaes espaciais um com o outro.
Escopo global: a definio de algumas variveis pode
aparecer fora das funes - C, C++ e PHP.

4.1 Escopo e Tempo de Vida


Conceitos parecem estar relacionados
Escopo: relacionado com o espao de tempo (espacial)
Tempo de vida: perodo de tempo (temporal)
Isso no ocorre com variveis estticas (static) pois se
estende por todo o programa
Constantes nomeadas: varivel vinculada a um valor apenas
uma vez.

5. Subprogramas
Computador criado por Babbage em 1840: reso de colees de
cartes de instrues, economizando espao de memria e
tempo de codificao
Subprogramas tem as caractersticas: nico ponto de entrada

5. Subprogramas
Abstrao de processo: instrues para realizar uma tarefa
Descreve a interface e as aes da abstrao deste.
Chamada a subprogramas: requisio explcita para que seja
executado
Ativo: aps ser chamado, comeou sua execuo e ainda no
terminou
Cabealho: <tipo_unidade> <nome> (<Lista_de_parmetros>)
Perfil de parmetros: nmero, ordem e tipos dos parmetros
Protocolo: perfil de parmetros, tipo de retorno e tipo de
subprograma

5. Subprogramas
Parmetros: duas formas de
acessar os dados por
subprogramas:
Acesso direto a variveis no
locais
Passagem de parmetros:
realiza a computao em dados
que receber.

Parmetros formais: ficam


no cabealho.
Parmetros reais: colocados
nas chamadas a um
subprograma
Parmetros posicionais:
correspondncia entre os
parmetros formais e reais
pela posio

5. Subprogramas
Categorias: Exemplo

program subalgoritmos;
begin (*programa principal*)
var a,b:integer;
a:= 4; b := 2;
procedure troca(VAR x,y : integer);
troca(a,b);
var aux: integer;
b := quadrado(a);
begin
end
aux := x ; x := y ; y := aux;
end;
function quadrado(n :integer):integer;
var cont :integer;
begin
cont := n * n;
quadrado := cont; (*retorno da funo definido nesta linha*)
end

5. Subprogramas
Ada e Fortran fornecem tanto funes quanto procedimentos
Linguagens baseadas em C: apenas funes.
Podem no retornar valor: void
Mtodos de passagem de parmetros:
Por valor - parmetro real inicializa o parmetro formal - C
Por resultado - parmetro formal age como varivel local mas seu
valor transmitido de volta ao chamador - C#
Por valor-resultado - valores reais so copiados - Ada
Por referncia - transmite um caminho de acesso (ponteiros) - C/C++

5. Subprogramas
Mtodos de
passagem de
parmetros

5. Subprogramas
Confiabilidade: verificao de tipos dos parmetros formais
correspondentes. A maioria das linguagens faz a verificao.
PHP e JavaScript no fazem isto.
Sobrecarga de subprogramas: subprograma com o mesmo
nome de outro no mesmo ambiente de referenciamento, porm o
protocolo nico
Ordem, tipos dos parmetros ou tipo de retorno diferente.
Utilizado em Linguagens de Programao Orientada a
Objetos: Java, C++

5. Subprogramas
Exemplo de Sobrecarga: C++
int maximo(int x, int y) {
return x>y ? x : y;
}

double maximo(double x, double y) {


return x>y ? x : y;
}
int maximo(int x, int y, int w, int z) {
return maximo(maximo(x,y),maximo(y,z));
}

Nomes, Vinculaes, Verificao de


Tipos, Escopos e Subprogramas
Prof. Sofia Costa Paiva
sofialarissa@gmail.com

Potrebbero piacerti anche