PageRenderTime 33ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/apresentacao.txt

http://github.com/marlonsd/Pascalzim--CLP-
Plain Text | 239 lines | 164 code | 75 blank | 0 comment | 0 complexity | a75b08563e652170e13623cc43d8411c MD5 | raw file
  1. Slide 1
  2. Introcução:
  3. O que é pascal
  4. Pascal é uma linguagem de programação estruturada, que recebeu este nome em homenagem ao matemático Blaise Pascal. Foi criada em 1970 pelo suíço Niklaus Wirth, com o intuito de ensinar programação estruturada.
  5. Decomposição LU
  6. O processo de Fatoração LU é usado para resolver sistemas
  7. lineares. Consiste na decomposição da matriz A em um produto de
  8. matrizes L e U, então é resolvida uma sequência de sistemas lineares de modo
  9. a se obter a solução do sistema linear original.
  10. // A decomposição LU consiste em dividir uma matriz original em duas trinangulares, uma superior (U) e a outra a inferior (L). E, através da multiplicação
  11. //delas (L U) chega-se na matriz original (A).
  12. Slide 2
  13. Código:
  14. Program MatrizLU;
  15. Type matriz = Record
  16. a: array[1..100 , 1..100] of real;
  17. upper: array [1..100 , 1..100] of real;
  18. lower: array [1..100 , 1..100] of real;
  19. End;
  20. Var mat: matriz;
  21. i,j,flag, n : integer;
  22. * Program
  23. * Estrutura
  24. * Variaveis Globais
  25. * Arrays
  26. Slide 3
  27. Código 2:
  28. Procedure decompLU ();
  29. Var temp: real;
  30. k: integer;
  31. Begin
  32. For i:= 1 to n do
  33. Begin
  34. For j:= 1 to n do
  35. Begin
  36. *Procedimentos
  37. *Laços
  38. *Delimitadores de operação
  39. Slide 4
  40. Código 3:
  41. if (i <= j) then
  42. Begin
  43. temp := 0;
  44. For k := 1 to i do
  45. Begin
  46. temp := temp + (mat.lower[i, k]*mat.upper[k, j]);
  47. End;
  48. mat.upper[i, j] := mat.a[i, j] - temp;
  49. End
  50. *Bloco referente a criação da matriz Upper
  51. // Laço de i e j percorre a matriz, e, logo após é utilizada um somatório entre as matrizes Lower e Upper para tirar este valor da matriz original e formar o
  52. //elemento i, j da Upper.
  53. Slide 5
  54. Código 4:
  55. Else
  56. Begin
  57. temp := 0;
  58. For k := 1 to j do
  59. Begin
  60. temp := temp + (mat.lower[i, k] * mat.upper[k, j]);
  61. End;
  62. If (mat.upper[j, j] = 0) then
  63. Begin
  64. writeln('Erro... Divisao por Zero');
  65. flag:=1;
  66. exit;
  67. End
  68. Else
  69. Begin
  70. mat.lower[i, j] := (mat.a[i, j] - temp) / mat.upper [j, j];
  71. End;
  72. End;
  73. *Bloco referente a criação da matriz lower
  74. *Determinante zero
  75. //É feito o somatório em uma variável temporária para tirar este valor do matriz A e, depois, dividir esse último pelo valor já computado da matriz upper.
  76. //If evitar divisão por zero e, consequentemente, matriz com determinante
  77. Slide 6
  78. Código 5:
  79. Begin
  80. Repeat
  81. write('Tamanho da Matriz:');
  82. readln(n);
  83. if (n > 100) or (n <= 0) then
  84. writeln('erro... valores validos entre 1 e 100.');
  85. Until ((n <= 100) and (n > 0));
  86. * Verificação de valor válido
  87. Slide 7
  88. Código 6:
  89. writeln('Matriz A: ');
  90. For i := 1 to n do
  91. Begin
  92. For j := 1 to n do
  93. Begin
  94. write('A [',i, ',',j, ']: ');
  95. readln(mat.a[i, j]);
  96. mat.lower[i, j] := 0;
  97. mat.upper[i, j] := 0;
  98. End;
  99. mat.lower[i, i] := 1;
  100. End;
  101. * Leitura da Matriz
  102. Slide 8
  103. Código 7:
  104. flag:=0;
  105. decompLU();
  106. if (flag = 1) then
  107. exit;
  108. *Chamada de procedimento
  109. *Verificação da flag (determinante zero)
  110. Slide 9
  111. Código 8:
  112. writeln('');
  113. writeln('Matriz Comp: ');
  114. For i:= 1 to n do
  115. Begin
  116. writeln('');
  117. For j:= 1 to n do
  118. write(mat.a[i,j]:2:1,' ');
  119. End;
  120. writeln('');
  121. writeln('');
  122. writeln('Matriz Low: ');
  123. For i:= 1 to n do
  124. Begin
  125. writeln('');
  126. For j:= 1 to n do
  127. write(mat.lower[i,j]:2:1,' ');
  128. End;
  129. writeln('');
  130. writeln('');
  131. writeln('Matriz Up: ');
  132. For i:= 1 to n do
  133. Begin
  134. writeln('');
  135. For j:= 1 to n do
  136. write(mat.upper[i,j]:2:1,' ');
  137. End;
  138. *Impressão das Matrizes
  139. IF
  140. ;(ponto e virgula) do fim do if: Quando if-else com o if contendo mais de 1 instrução o end não recebe ;(ponto e virgula) pois existe um else completando a condição. Isto ocorre pois o ;(ponto e virgula) será utilizado quando a condição estiver completa
  141. Estrutura em pascal é declarada como Record
  142. falar sobre a declaração de estrutura:
  143. 1º Type até record:
  144. Palavras reservadas a uma declaração de estruturas;
  145. EX:Type matriz = record
  146. end;
  147. Type : Referente a tipo;
  148. matriz=record : referente a declaração da estrutura;
  149. Entre Record e End é a definição do corpo da estrutura;
  150. ex2: a:[1..4, 1..4] of real;
  151. Vetor e Matriz
  152. Para declarar um vetor em pascal deve-se colocar o nomedavar , 2 pontos(:), array seguido do tamanho do vetor entre chaves ([1..4]), e seu tipo;
  153. EM pascal a posição inicial do vetor nao é padrão, deve-se declarar o inicio e o fim do vetor entre ".." ex: [1..4], que define um vetor de 1 até 4;
  154. Para se ter o comprimento deste vetor fazemos um calculo onde diminui-se o inicio do fim e soma-se mais 1. ex:fim=10,inicio=5 : 10-5+1=6, onde 6 é o comprimento do vetor;
  155. PAra se ter um vetor bidimensional(matriz), colocamos o tamanho do primeiro seguido de ,(virgula) e o tamanho do segundo. ex: [1..4, 1..4].
  156. 2º Procedure
  157. Procedimento - Aquele que, a priori, não retorna valor( parecido com o void do c);
  158. declaraçao: Procedure nomeproc(parametros)
  159. Procedure: indica o procedimento
  160. nomeproc: nome do procedimento
  161. parametros: nomeparamet: seutipo
  162. Caso haja mais de um parametro eles serão separados por ;(ponto e virgula).
  163. finaliza-se a inicialização do procedimento com ;(ponto e virgula).
  164. Variaveis Globais