Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # # # # # # # # # # # # # #
- # Linguagens de Programação #
- # Prof. Fernando Pereira #
- # notasdogarcia.blog.com #
- # # # # # # # # # # # # # #
- O que são blocos de código em uma linguagem de programaçào como C?
- Ou seja o que significam escopos em linguagens de programação.
- São pilhas.
- Ou seja, se voce vai buscar o significado de uma variável x, voce busca primeiro no seu escopo
- que está no topo da pilha. e então se voce não encontrar voce parte para o próximo escopo da pilha
- e assim por diante.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Um escopo é o trecho de código onde uma variável é reconhecida.
- Como denotar um escopo em SML?
- let
- val x=1;
- val y=2;
- in
- x + y
- end;
- // Assim o retorno de x+y é 3.
- e em C?
- {
- int a=3;
- int b=1;
- {
- int a=4;
- b = a+b;
- }
- }
- // Aqui temos dois escopos um deles está "empilhado" sobre o outro por assim dizer.
- // o valor final de b no caso é 5.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Outro modo de se denotar escopo é através de espaços de nomes:
- struct Point { int x, y ; };
- class Pair { int x, y ; };
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Outros modos:
- classes,
- namespace
- package`s etc..
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Em SML nós temos vários espaços de nomes.
- Um para funções,
- Um para tipos,
- Um para variáveis globais
- Um para variaveis locais etc.
- Entenda por espaço de nome um grupo de nomes referentes a um escopo especifico.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Seja o programa:
- val one = 1;
- fun inc x = x + one;
- fun foo x =
- let
- val one = 2;
- in
- inc x
- end
- foo 5;
- Nesse programa qual o valor de foo 5?
- O valor seria 6, pois o escopo é estático ou seja conhecido na hora da compilação.
- CONCEITO:
- Escopo Estático é o escopo que é definido de forma fixa para cada declaração de função.
- Assim as variáveis livres de uma função (ou seja aquelas que não são dadas como parâmetros)
- devem estar contidas no escopo onde a função foi declarada, e não no escopo onde ela foi chamada.
- Assim como foi visto no exemplo acima.
- CONCEITO:
- Escopo Dinâmico é quando as variáveis livres de uma função podem fazer referencias a escopos
- diferentes dependendo de onde a função foi chamada. Assim duas chamadas de uma mesma função com os mesmos parâmetros
- em dois escopos diferentes, pode gerar resultados diferentes, dependendo dos valores das variáveis livres no escopo de chamada.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- CONCEITO:
- Array Programming Language são linguagens de programações voltadas para arranjos.
- Um exemplo é a linguagem "J" e "R" (nome de linguagem de computação é mto besta né?)
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- CONCEITO:
- Jogo da Vida de Conway e automatos celulares o professor falou algo a respeito.
- sugeriu que pesquisassemos no site dele ou na internet.
- // lembrando site do professor: www.dcc.ufmg.br/~fpereira
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- NOTA Solta:
- Em C como acessar uma variável declarada em outro arquivo?
- É preciso de se re-declarar a variável usando a palavra chave extern int x;
- Assim voce força o compilador a buscar a declaraçào dessa variável nos outros arquivos linkados.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- NOTA Solta:
- Para se importar nomes em C++ pode-se fazer de duas formas:
- using namespace batata; // que importa todos os nomes de batata, ou
- using batata::Nome; // que importa apenas o nome Nome do namespace batata.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- structs em SML:
- structure FunSet :> SET =
- struct
- type set = int -> bool
- val new = fn x => false
- fun add f i = fn x => if x = i then true else f x
- fun remove f i = fn x => if x = i then false else f x
- fun contains f i = f i
- end;
- Outro exemplo equivalente:
- structure FunSet :> SET =
- struct
- type set = int list
- val new = []
- fun add [] i = [i]
- | add (h::t) i =
- if h > i then i::h::t else if h<i then h:: add t i else (h::t)
- fun remove f i = fn x => if x = i then false else f x
- fun contains f i = f i
- end;
- // O professor só falou brevemente sobre isso.
- // To torcendo para não cair na prova, pois copiei sem prestar atenção, pode ter algo errado.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // fim da aula
Advertisement
Add Comment
Please, Sign In to add comment