Escolar Documentos
Profissional Documentos
Cultura Documentos
Programao Estruturada
As linguagens desse paradigma so muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas. So linguagens que reconstroem uma mquina para torn-la mais conveniente para programao. Mquinas que influenciaram fortemente a estrutura das linguagens de programao: arquitetura de von Neumann.
Controle de Fluxo Estruturado um programa dito estruturado quando o controle de fluxo evidente da estrutura sinttica do texto do programa. Invariantes uma afirmao (condio) em um ponto p do programa que vlida toda vez que o controle alcana o ponto p.
As linguagens imperativas so projetadas de acordo com o princpio do Modelo de Mquina: uma linguagem deve permitir usar diretamente uma mquina orientada por atribuies
Estruturas de Controle
Estruturas que determinam o fluxo de execuo (que comando executado depois do outro).
condio
comando
comando
Mecanismos que permitem fazer chamadas de unidades. Chamadas de unidades explcitas: funes, procedimentos. Chamadas de unidades implcitas: tratadores de exceo, corrotinas, unidades concorrentes.
condio
comando
Parmetros
Permitem a aplicao de subprogramas a dados diferentes. Melhora o reuso de cdigo Sem parmetros, a utilidade dos subprogramas se restringiria a segmentao do cdigo. Parmetro formal identificadores usados no cabealho do subprograma (definio do subprograma) Parmetro real identificadores, expresses ou valores usados na chamada do subprograma. Argumento usado como sinnimo de parmetro real ou para referir o valor passado do parmetro real para o formal.
Unidade chamadora passa para a unidade chamada o endereo do argumento. A varivel usada como argumento compartilhada e pode ser modificada.
C
void troca1(int x, int y) {int z; z =x; x = y; y = z;} a = 0; b = 0; troca1(a,b); os valores de a e b no so trocados void troca(int *px, int *py) { int z; z = *px; *px = *py; *py = z;} a = 0; b = 0; troca(&a,&b); os valores de a e b so trocados
Deve ter o mesmo efeito da passagem por referncia. Problemas que devem ser evitados:
program ...... procedure exemplo(x, y); begin i := y end; ........... begin i := 2; A[i] := 99; exemplo( i, A[i]); end. i pode ser alterado diretamente pela atribuio, ou indiretamente pela cpia do resultado Na chamada de exemplo (i, A[i]): endereos de i e A[i] so armazenados valores de i e A[i] so copiados em x e y valor de i modificado em i := y valores de x e y so copiados de volta em i e A[i], logo valor antigo de i restaurado
Escolha de Mecanismos:
Parmetros que devem retornar valores, devem ser passados por referncia Parmetros que no retornam valores podem ser passados por valor, por segurana; Eficincia da implementao: passagem por referncia cara em termos de processamento pois faz acesso indireto; passagem por cpia pode custar em termos de memria se os objetos forem grandes.
A forma do parmetro real determina o mtodo de implementao. Isto distingue a passagem por nome dos outros mtodos Se parmetro real varivel escalar: Equivale a passagem por referncia Se parmetro real uma constante: Equivale a passagem por valor
procedure BIGSUB; integer GLOBAL; integer array LIST [1:2]; procedure SUB (PARAM); integer PARAM; begin PARAM := 3; GLOBAL := GLOBAL + 1; PARAM := 5 end; begin LIST [1] := 2; LIST[2] := 2; GLOBAL := 1; SUB(LIST [GLOBAL]) end;
Tempo de amarrao
Amarrao pode ser: esttica ocorre antes da execuo do programa e no pode ser mudada dinmica ocorre em tempo de execuo e pode ser mudada, respeitando as regras da linguagem.
Amarrao : especificao da natureza exata dos atributos de uma entidade Tempo de amarrao: momento em que a amarrao ocorre importante na diferenciao de linguagens.
Variveis
Variveis so conceitos abstratos de clulas de memria. So caracterizadas por um nome e quatro atributos bsicos:
escopo, tempo de vida, valor e tipo.
Escopo
Trecho do programa onde uma varivel conhecida. Uma varivel visvel dentro do seu escopo e invisvel fora dele. Amarrao esttica a escopo: o escopo definido pela estrutura lxica do programa.
{ int i; for ( .....) { int c; if (...) { int i; ........ } ........... } } while (..........) { int i; ........ } .............. } } .............. } while (..........) { ........... { int c; if (...) { { } } int i ; int i; 2 ........ ........ { int i1; for ( .....)
Valor de varivel
As referncias a um identificador no podem ser identificadas na compilao Para a sequncia de chamadas: big - sub2 sub1
a referncia a x em sub1 ao x declarado em sub2
Representado de forma codificada na rea de memria amarrada a varivel. Pode ser uma referncia (ponteiro). Amarrao dinmica (mais comum)
atravs do comando de atribuio.
Amarrao esttica
definio de constantes PASCAL: const n = 50
Tipo de varivel
Especificao da classe de valores que podem ser associados varivel, bem como das operaes que podem ser usadas sobre eles, atravs da declarao de varivel. Amarrao de tipo esttica: definida atravs da declarao de variveis, que pode ser:
Declarao Explcita comando que lista as variveis e seus tipos; Declarao Implcita feita normalmente por convenes definidas para os nomes das variveis. Exemplo: no FORTRAN, variveis que comeam com I, J, K, L, M ou N so inteiras.
Amarrao de tipo dinmica: variveis no so declaradas, e a mesma varivel pode conter valores de tipos diferentes durante a execuo do programa.
O tipo da varivel definido quando um valor atribudo a essa varivel. Vantagem: flexibilidade de programao Desvantagens: - Diminui a capacidade de deteco de erros pelo compilador - Custo maior, verificao de tipo em tempo de execuo - Memria de tamanho varivel
Alocao esttica
Ocorre antes da execuo do programa, nos casos de: variveis globais devem ser acessveis a todo o programa variveis locais estticas so declaradas dentro de um subprograma mas devem ser reter valores entre execues separadas do subprograma (sensveis histria). Vantagem: eficincia endereamento direto, no exige custo adicional para alocao Desvantagem: pouca flexibilidade linguagens que usam apenas alocao esttica no do suporte subprogramas recursivos nem a compartilhamento de memria.
Exemplos
FORTRAN I, II, IV todas as variveis eram estticas C, C++, JAVA permitem definir uma varivel local como esttica Pascal no possui variveis estticas
Alocao dinmica
Ocorre durante a execuo do programa, nos casos de: Variveis Dinmicas de Pilha: so alocadas na pilha de execuo Variveis Dinmicas de Heap so alocadas na heap
Chamada do procedimento ativao elaborao execuo Trmino da execuo do procedimento retorno do controle unidade chamadora desalocao da memria
/* aloca uma posio de memria tipo int */ /* desaloca a posio de memria para a qual intnode aponta */
JAVA Todos os dados, exceto primitivos escalares so objetos portanto so dinmicos de heap e acessados por variveis de referncia. A desalocao no feita explicitamente, mas implicitamente pelas rotinas de coleta de lixo (garbage collection)
Verificao de Tipo
Atividade que certifica que os operandos de um operador so de tipos compatveis. So considerados operadores e operandos:
operadores usuais (aritmticos, relacionais, etc) subprogramas (operadores) e parmetros (operandos) atribuio (operador) e variavel / expresso (operandos)