VinBR

LP 19/09/2011

Sep 29th, 2011
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.78 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # # #
  3. # Linguagens de Programação #
  4. # Prof. Fernando Pereira #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # # #
  7.  
  8. O que são blocos de código em uma linguagem de programaçào como C?
  9. Ou seja o que significam escopos em linguagens de programação.
  10.  
  11. São pilhas.
  12. Ou seja, se voce vai buscar o significado de uma variável x, voce busca primeiro no seu escopo
  13. que está no topo da pilha. e então se voce não encontrar voce parte para o próximo escopo da pilha
  14. e assim por diante.
  15.  
  16. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  17.  
  18. Um escopo é o trecho de código onde uma variável é reconhecida.
  19.  
  20. Como denotar um escopo em SML?
  21.  
  22. let
  23. val x=1;
  24. val y=2;
  25. in
  26. x + y
  27. end;
  28. // Assim o retorno de x+y é 3.
  29.  
  30. e em C?
  31.  
  32. {
  33. int a=3;
  34. int b=1;
  35. {
  36. int a=4;
  37. b = a+b;
  38. }
  39. }
  40. // Aqui temos dois escopos um deles está "empilhado" sobre o outro por assim dizer.
  41. // o valor final de b no caso é 5.
  42.  
  43. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  44.  
  45. Outro modo de se denotar escopo é através de espaços de nomes:
  46.  
  47. struct Point { int x, y ; };
  48. class Pair { int x, y ; };
  49.  
  50. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  51.  
  52. Outros modos:
  53.  
  54. classes,
  55. namespace
  56. package`s etc..
  57.  
  58. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  59.  
  60. Em SML nós temos vários espaços de nomes.
  61. Um para funções,
  62. Um para tipos,
  63. Um para variáveis globais
  64. Um para variaveis locais etc.
  65.  
  66. Entenda por espaço de nome um grupo de nomes referentes a um escopo especifico.
  67.  
  68. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  69.  
  70. Seja o programa:
  71.  
  72. val one = 1;
  73.  
  74. fun inc x = x + one;
  75.  
  76. fun foo x =
  77. let
  78. val one = 2;
  79. in
  80. inc x
  81. end
  82.  
  83. foo 5;
  84.  
  85. Nesse programa qual o valor de foo 5?
  86.  
  87. O valor seria 6, pois o escopo é estático ou seja conhecido na hora da compilação.
  88.  
  89. CONCEITO:
  90. Escopo Estático é o escopo que é definido de forma fixa para cada declaração de função.
  91. Assim as variáveis livres de uma função (ou seja aquelas que não são dadas como parâmetros)
  92. devem estar contidas no escopo onde a função foi declarada, e não no escopo onde ela foi chamada.
  93. Assim como foi visto no exemplo acima.
  94.  
  95. CONCEITO:
  96. Escopo Dinâmico é quando as variáveis livres de uma função podem fazer referencias a escopos
  97. diferentes dependendo de onde a função foi chamada. Assim duas chamadas de uma mesma função com os mesmos parâmetros
  98. em dois escopos diferentes, pode gerar resultados diferentes, dependendo dos valores das variáveis livres no escopo de chamada.
  99.  
  100. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  101.  
  102. CONCEITO:
  103. Array Programming Language são linguagens de programações voltadas para arranjos.
  104. Um exemplo é a linguagem "J" e "R" (nome de linguagem de computação é mto besta né?)
  105.  
  106. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  107.  
  108. CONCEITO:
  109. Jogo da Vida de Conway e automatos celulares o professor falou algo a respeito.
  110. sugeriu que pesquisassemos no site dele ou na internet.
  111. // lembrando site do professor: www.dcc.ufmg.br/~fpereira
  112.  
  113. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  114.  
  115. NOTA Solta:
  116.  
  117. Em C como acessar uma variável declarada em outro arquivo?
  118.  
  119. É preciso de se re-declarar a variável usando a palavra chave extern int x;
  120.  
  121. Assim voce força o compilador a buscar a declaraçào dessa variável nos outros arquivos linkados.
  122.  
  123. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  124.  
  125. NOTA Solta:
  126.  
  127. Para se importar nomes em C++ pode-se fazer de duas formas:
  128.  
  129. using namespace batata; // que importa todos os nomes de batata, ou
  130.  
  131. using batata::Nome; // que importa apenas o nome Nome do namespace batata.
  132.  
  133. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  134.  
  135. structs em SML:
  136.  
  137. structure FunSet :> SET =
  138. struct
  139. type set = int -> bool
  140. val new = fn x => false
  141. fun add f i = fn x => if x = i then true else f x
  142. fun remove f i = fn x => if x = i then false else f x
  143. fun contains f i = f i
  144. end;
  145.  
  146. Outro exemplo equivalente:
  147.  
  148. structure FunSet :> SET =
  149. struct
  150. type set = int list
  151. val new = []
  152. fun add [] i = [i]
  153. | add (h::t) i =
  154. if h > i then i::h::t else if h<i then h:: add t i else (h::t)
  155. fun remove f i = fn x => if x = i then false else f x
  156. fun contains f i = f i
  157. end;
  158.  
  159. // O professor só falou brevemente sobre isso.
  160. // To torcendo para não cair na prova, pois copiei sem prestar atenção, pode ter algo errado.
  161.  
  162. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  163.  
  164. // fim da aula
Advertisement
Add Comment
Please, Sign In to add comment