PageRenderTime 121ms CodeModel.GetById 61ms app.highlight 1ms RepoModel.GetById 39ms 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
  1Slide 1
  2Introcução:
  3O que é pascal
  4
  5Pascal é 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.
  6
  7Decomposição LU
  8
  9O processo de Fatoração LU é usado para resolver sistemas
 10lineares. Consiste na decomposição da matriz A em um produto de
 11matrizes L e U, então é resolvida uma sequência de sistemas lineares de modo
 12a se obter a solução do sistema linear original.
 13
 14// 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
 15//delas (L U) chega-se na matriz original (A).
 16
 17Slide 2
 18Código:
 19
 20
 21Program MatrizLU;
 22Type matriz = Record
 23	a: array[1..100 , 1..100] of real;
 24	upper: array [1..100 , 1..100] of real;
 25	lower: array [1..100 , 1..100] of real;
 26End;
 27
 28
 29 Var mat: matriz;
 30     i,j,flag, n : integer;
 31
 32
 33	* Program
 34	* Estrutura
 35	* Variaveis Globais
 36	* Arrays
 37
 38Slide 3
 39Código 2:
 40
 41Procedure decompLU ();
 42	Var temp: real;
 43	k: integer;
 44	
 45	Begin 				
 46		For i:= 1 to n do
 47		  Begin
 48		    For j:= 1 to n do
 49		      Begin
 50
 51	*Procedimentos
 52	*Laços
 53	*Delimitadores de operação
 54
 55Slide 4
 56Código 3:
 57	if (i <= j) then
 58		Begin
 59		temp := 0;
 60		For k := 1 to i do
 61		Begin
 62		temp := temp + (mat.lower[i, k]*mat.upper[k, j]);
 63		End;
 64		mat.upper[i, j] := mat.a[i, j] - temp;	
 65	End
 66
 67	*Bloco referente a criação da matriz Upper
 68
 69// 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
 70//elemento i, j da Upper.
 71
 72Slide 5
 73Código 4:
 74
 75
 76						Else
 77							Begin
 78								temp := 0;
 79								For k := 1 to j do
 80									Begin
 81									temp := temp + (mat.lower[i, k] * mat.upper[k, j]);
 82									End;
 83								If (mat.upper[j, j] = 0) then
 84									Begin
 85										writeln('Erro... Divisao por Zero');
 86										flag:=1;
 87										exit;
 88									End
 89									Else
 90										Begin
 91											mat.lower[i, j] := (mat.a[i, j] - temp) / mat.upper [j, j];
 92										End;
 93							End;
 94
 95
 96
 97	*Bloco referente a criação da matriz lower
 98	*Determinante zero
 99
100//É 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.
101//If evitar divisão por zero e, consequentemente, matriz com determinante 
102
103
104
105Slide 6
106Código 5:
107
108 Begin
109	
110	Repeat
111		write('Tamanho da Matriz:');
112		readln(n);
113		if (n > 100) or (n <= 0) then
114			writeln('erro... valores validos entre 1 e 100.');
115			
116	Until ((n <= 100) and (n > 0)); 
117
118	* Verificação de valor válido
119
120Slide 7
121Código 6:
122
123  writeln('Matriz A: ');
124
125  For i := 1 to n do
126    Begin
127		For j := 1 to n do
128
129		Begin
130			write('A [',i, ',',j, ']: ');
131			readln(mat.a[i, j]);
132			mat.lower[i, j] := 0;
133			mat.upper[i, j] := 0;
134		End;
135    mat.lower[i, i] := 1;
136	End;
137
138	* Leitura da Matriz
139Slide 8
140Código 7:
141
142	flag:=0;
143	decompLU();
144
145	 if (flag = 1) then
146	exit;
147
148	*Chamada de procedimento
149	*Verificação da flag (determinante zero)
150Slide 9
151Código 8:
152
153
154writeln('');
155	
156  writeln('Matriz Comp: ');
157  
158  For i:= 1 to n do
159	Begin
160		writeln('');
161		For j:= 1 to n do 
162			write(mat.a[i,j]:2:1,'  ');
163	End;
164  writeln('');
165  writeln('');
166  
167  writeln('Matriz Low: ');
168
169  For i:= 1 to n do
170	Begin
171		writeln('');
172		For j:= 1 to n do
173			write(mat.lower[i,j]:2:1,'  ');
174	End;
175  
176  writeln('');
177  writeln('');
178  writeln('Matriz Up: ');
179
180   For i:= 1 to n do
181	Begin
182		writeln('');
183		For j:= 1 to n do
184			write(mat.upper[i,j]:2:1,'  ');
185	End;
186
187	*Impressão das Matrizes
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206	IF
207	;(ponto e virgula) do fim do if: Quando há 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) só será utilizado quando a condição estiver completa 
208
209Estrutura em pascal é declarada como Record
210
211falar sobre a declaração de estrutura:
2121º Type até record:
213	Palavras reservadas a uma declaração de estruturas;
214	EX:Type matriz = record
215	   end;
216	Type : Referente a tipo;
217	matriz=record : referente a declaração da estrutura;
218	Entre Record e End é a definição do corpo da estrutura;
219	ex2: a:[1..4, 1..4] of real;
220
221	Vetor e Matriz
222	
223	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;
224	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;
225	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;
226	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].
227	
2282º Procedure
229	Procedimento - Aquele que, a priori, não retorna valor( parecido com o void do c);
230	declaraçao:	Procedure nomeproc(parametros)
231	
232	Procedure: indica o procedimento
233	nomeproc: nome do procedimento
234	parametros: nomeparamet: seutipo
235	Caso haja mais de um parametro eles serão separados por ;(ponto e virgula).
236	finaliza-se a inicialização do procedimento com ;(ponto e virgula).
237
238	Variaveis Globais
239