A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro"— Transcrição da apresentação:

1 Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br

2 Linguagens de Programação definições & declarações Declaração: É um enunciado do programa que produz amarrações, possivelmente criando entidades. const float pi = 3.14 procedure S: forward typedef int inteiro var i: integer typedef struct {int d,m,a;} data; procedure S;begin... end Amarra identificador a valor! Amarra identificador a procedimento! Amarra identificador a tipo! Amarra identificador a variável! Amarra identificador a tipo! Amarra identificador a comando!

3 Linguagens de Programação definições & declarações Declaração: É um enunciado do programa que produz amarrações, possivelmente criando entidades. const float pi = 3.14 procedure S: forward typedef int inteiro var i: integer procedure S;begin... end Cria a variável i! Cria o tipo data! Cria o comando! typedef struct {int d,m,a;} data;

4 Linguagens de Programação definições & declarações Definição: É um enunciado do programa que produz amarrações, mas não cria entidades. const float pi = 3.14 procedure S: forward typedef int inteiro

5 Linguagens de Programação definições & declarações Declarações compostas: Tipos Sequenciais Declarações simples: constantes variáveis Procedimentos exceções pacotes classes Colaterais Recursivas

6 Linguagens de Programação definições & declarações Tipos Declarações simples: constantes variáveis Procedimentos exceções pacotes classes Amarram identificador a tipo! Pré existente: Criado no próprio enunciado: typedef int inteiro typedef struct {int d,m,a;} data;

7 Linguagens de Programação definições & declarações Tipos Declarações simples: constantes variáveis Procedimentos exceções pacotes classes Amarram identificador a tipo! Pré existente: Quando a criação do tipo é anterior ao o enunciado de declaração, a equivalência costuma ser estrutural typedef int inteiro1; typedef int inteiro2; main() { inteiro1 i = 2; inteiro2 j = 3; i = j; } Sem erro!!! Equivalência estrutural

8 Linguagens de Programação definições & declarações Tipos Declarações simples: constantes variáveis Procedimentos exceções pacotes classes Amarram identificador a tipo! typedef struct {int d,m,a;} data1 ; typedef struct {int d,m,a;} data2 ; main() { data1 p; data2 q; p = q; } Criado no próprio enunciado: Quando o tipo é criado no próprio enunciado de declaração, a equivalência costuma ser nominal I:\AULAS\LINGPROG\C>gcc equivnominal2.c equivnominal2.c: In function `main': equivnominal2.c:9: incompatible types in assignment

9 Linguagens de Programação definições & declarações Tipos Declarações simples: constantes variáveis Procedimentos exceções pacotes classes Amarram identificador a valor que não poderá ser alterado posteriormente #include int main (void) { const i = 6; printf ("%d \n", i); i = 3; printf("%d \n",i); } ?

10 Linguagens de Programação definições & declarações Tipos Declarações simples: Constantes dinâmicas: em C, em ADA variáveis Procedimentos exceções pacotes classes int valor(){ return(getchar()); } int main (void) { const i = valor(); printf ("%d \n", i); }

11 Linguagens de Programação definições & declarações Tipos Declarações simples: Constantes sem valor: em Java variáveis Procedimentos exceções pacotes classes final int j; constructor() { j = 1; }

12 Linguagens de Programação definições & declarações Tipos Declarações simples: variáveis Procedimentos exceções pacotes classes constantes Amarra identificador a variável normalmente criada no próprio enunciado var i: integer

13 Linguagens de Programação definições & declarações Tipos Declarações simples: variáveis Procedimentos exceções pacotes classes constantes Amarra identificador a variável pré existente Em ADA:... pop: integer renames population(state)... pop := pop+1 Em C++:... int r=10; int &j=r; j++;

14 Linguagens de Programação definições & declarações Tipos Declarações simples: variáveis Procedimentos exceções pacotes classes constantes Amarram identificador a comandos ! Em Pascal: procedure S; begin... end

15 Linguagens de Programação definições & declarações Tipos Declarações simples: variáveis Procedimentos exceções pacotes classes constantes Amarram identificador a procedimento a ser criado! Em Pascal: procedure S: forward

16 Linguagens de Programação definições & declarações Tipos Declarações simples: variáveis Procedimentos exceções pacotes classes constantes Amarração???? Em LISP: > ((lambda (x) (+ x 2)) 3) 5 ?

17 Linguagens de Programação definições & declarações Declarações compostas: Sequenciais Colaterais O efeito da segunda depende da amarração resultante da primeira O efeito da segunda independe da amarração resultante da primeira Em ML: val e = 2.7183 and pi = 3.1416; val twicepi = 2*pi

18 Linguagens de Programação definições & declarações Declarações compostas: Recursivas Usam a amarração que elas mesmas produzem Em Pascal: Type proximo = ^registro; registro = record elemento: integer; elo: proximo; end; Em C: void segunda(int); void primeira(int n){ if (n<0) return; segunda(n-1); } void segunda(int n){ if (n<0) return; primeira(n-1); } Em LISP: (define fat (lambda (n) (if (zero? n) 1(* n (fat (- n 1))))))

19 Linguagens de Programação definições & declarações Bloco: Escopo de Declarações Delimita o escopo de declarações Em LISP: (let ((a 3) (b 5)) (+ a b)) Em C: if (x > y) { int z = x; x = y; y = z; } Comandos de bloco Expressão de bloco D C As amarrações D são de uso exclusivo em C (let D E) As amarrações D são de uso exclusivo em E

20 Linguagens de Programação definições & declarações Declarações simples: Escopo de Declarações do final da declaração até o final do bloco que a engloba; Em Pascal: var num: integer; function fatorial(i:integer): integer; var fat,k: integer; begin fat := 1; for k:=1 to i do fat := fat * k; fatorial := fat; end; begin readln(num); if (num >=0) then writeln(fatorial(num)) end. Em C: main() { int a = 1; a = a+1; { int b = 2; a = a+b; }... }

21 Linguagens de Programação definições & declarações Declarações simples: Escopo de Declarações do ponto da declaração ao final do programa Em C: int impar (int n){ return n%2; } int negativo (int n) { return n < 0; } int multiplo7 (int n) { return !(n%7); } main( ) {... }

22 Linguagens de Programação definições & declarações Declarações compostas: Sequenciais Escopo de Declarações O escopo de cada subdeclaração vai do final da própria subdeclaração até o final do bloco que a engloba; Em Pascal: type sub1= 1..3; sub2= 1..5; a= array [sub1] of integer; b= array [sub2] of a; x= array [sub2,sub1] of integer;

23 Linguagens de Programação definições & declarações Declarações compostas: Colaterais Escopo de Declarações O escopo de cada subdeclaração vai do final da declaração colateral até o final do bloco que a engloba; Em ML: val e = 2.7183 and pi = 3.1416; val twicepi = 2*pi Em ML: val pi = 3.1416 and txicepi = 2*pi;

24 Linguagens de Programação definições & declarações Declarações compostas: Recursivas Escopo de Declarações O escopo de cada subdeclaração vai do início da declaração recursiva até o final do bloco que a engloba; Em C: int fatorial(int n) { if (n==0) return 1; else return n*fatorial(n-1); }

25 Linguagens de Programação definições & declarações Qualification Principle Comandos de bloco Expressão de bloco É possível incluir um bloco em qualquer categoria sintática, desde que as construções desta a categoria sintática especifiquem algum tipo de computação. Declarações de bloco É uma declaração contendo uma subdeclaração local D e subdeclarações D', de forma que as amarrações de D sejam efetivas somente em D'


Carregar ppt "Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro"

Apresentações semelhantes


Anúncios Google