Skip to content

Commit 7fad51b

Browse files
committed
feat: Pascal - Métodos de ordenação, fatorial, pilha e busca binária
1 parent 7bc47b4 commit 7fad51b

File tree

9 files changed

+643
-66
lines changed

9 files changed

+643
-66
lines changed

Pascal/busca-binaria.pas

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
program buscabinaria;
2+
3+
const
4+
MAX = 30000;
5+
6+
type
7+
Tdado = integer;
8+
Tvetor = array[1..MAX]of integer;
9+
Tarq = text;
10+
var
11+
vetor : Tvetor;
12+
valor: Tdado;
13+
14+
procedure preencher(var vetor : Tvetor);
15+
var
16+
i : integer;
17+
begin
18+
for i:= 1 to MAX do
19+
begin
20+
vetor[i] := i;
21+
end;
22+
end;
23+
24+
procedure buscaBinariarec(vetor:Tvetor; valor:Tdado; inicio:integer; fim:integer);
25+
var
26+
meio : integer;
27+
begin
28+
meio := (inicio+fim) div 2;
29+
30+
{
31+
writeln;
32+
writeln('--------------------------------');
33+
writeln('Passo a Passo');
34+
writeln('valor ',vetor[meio]);
35+
writeln('posicao ',meio);
36+
writeln('--------------------------------');
37+
writeln;
38+
}
39+
40+
if(valor = vetor[meio]) then
41+
begin
42+
writeln('Achou!!');
43+
//writeln('valor ',vetor[meio]);
44+
writeln('posicao ',meio);
45+
end else
46+
if(meio=inicio) then write('error 404') else
47+
begin
48+
if((valor > vetor[meio]) and (meio <> inicio)) then
49+
begin
50+
//writeln('DIREITA');
51+
buscaBinariarec(vetor, valor, meio, MAX);
52+
end;
53+
54+
if((valor < vetor[meio]) and (meio <> inicio)) then
55+
begin
56+
//writeln('ESQUERDA');
57+
buscaBinariarec(vetor, valor, inicio, meio);
58+
end;
59+
end;
60+
end;
61+
62+
begin
63+
valor := 21054;
64+
preencher(vetor);
65+
buscaBinariarec(vetor, valor, 0, MAX);
66+
end.

Pascal/fatorial-recusiva.pas

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
program fatorial_recursiva;
2+
var
3+
num : longint;
4+
5+
function fatorial (number : longint): longint;
6+
begin
7+
if (number = 1) then
8+
fatorial := 1
9+
else
10+
fatorial := number * fatorial(number-1)
11+
end;
12+
13+
function fatorialb(n:integer): integer;
14+
begin
15+
if n > 1 then
16+
fatorial := fatorial(n-1) * n
17+
else fatorial := 1;
18+
end;
19+
20+
begin
21+
writeln('Informe um numero');
22+
readln(num);
23+
writeln(' ');
24+
25+
writeln(num,'! = ',fatorial(num));
26+
end.

Pascal/fatorial.pas

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
program fatorial_pascal;
2+
var
3+
num, cont, soma : longint;
4+
begin
5+
soma := 1;
6+
cont := 0;
7+
writeln('Informe um numero');
8+
readln(num);
9+
writeln(' ');
10+
11+
for cont := num downto 2 do
12+
begin
13+
//writeln(num*num-1);
14+
writeln(soma);
15+
soma := soma*cont;
16+
writeln(soma);
17+
end;
18+
writeln(num,'! = ',soma);
19+
end.

Pascal/pilha.pas

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
program exe_pilha;
2+
const
3+
MAX = 3;
4+
type
5+
Tvetor = array[1..MAX] of integer;
6+
var
7+
pilha : Tvetor;
8+
condicao : char;
9+
posicao, valor : integer;
10+
11+
procedure push (valor : integer);
12+
begin
13+
if(posicao>MAX) then writeln('OverFlow') else
14+
begin
15+
posicao := posicao + 1;
16+
pilha[posicao] := valor;
17+
end;
18+
end;
19+
20+
function pop : integer;
21+
begin
22+
if(posicao<1) then writeln('UnderFlow') else
23+
begin
24+
pop := pilha[posicao];
25+
posicao := posicao - 1;
26+
end;
27+
end;
28+
29+
procedure exibir;
30+
begin
31+
writeln('___________________________________ ');
32+
33+
writeln('Posicao na pilha :');
34+
for posicao:=1 to MAX do
35+
begin
36+
writeln('Indice: ',posicao, ' = ',pilha[posicao]);
37+
end;
38+
writeln('___________________________________ ');
39+
40+
writeln('Posicao na pilha a se retirada :');
41+
for posicao:=MAX downto 1 do
42+
begin
43+
writeln('Indice: ',posicao, ' = ',pilha[posicao]);
44+
end;
45+
end;
46+
47+
begin
48+
posicao := 0;
49+
50+
repeat
51+
writeln('Deseja [A]dicionar , [R]etirar ou [S]air ?');
52+
readln(condicao);
53+
54+
case condicao of
55+
'A','a' : begin
56+
writeln('Valor ');
57+
readln(valor);
58+
push(valor);
59+
end;
60+
61+
'r','R' : begin
62+
writeln('O valor = ',pop);
63+
end;
64+
end;
65+
until(condicao = 's') or (condicao = 'S');
66+
67+
exibir;
68+
end.

Pascal/sort/bubble-sort.pas

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
program selection_sort;
2+
3+
{dia 06/05
4+
Version: 0.5
5+
Nome: Wellington De Souza Silva
6+
Método : Selection Sort}
7+
8+
// bug com dois valores altos ???
9+
10+
uses crt;
11+
12+
const
13+
MAX = 10;
14+
15+
type
16+
Tdado = integer;
17+
18+
Tvetor = array[1..MAX] of Tdado;
19+
20+
var
21+
vetor : Tvetor;
22+
23+
//usado para tester
24+
procedure preencher(var vetor : Tvetor);
25+
begin
26+
vetor[1] := 4;
27+
vetor[2] := 3;
28+
vetor[3] := 500;
29+
vetor[4] := 7;
30+
vetor[5] := 10;
31+
vetor[6] := 1309;
32+
vetor[7] := 8;
33+
vetor[8] := 9;
34+
vetor[9] := 2;
35+
vetor[10] := 6;
36+
end;
37+
38+
procedure manual(var vetor:Tvetor);
39+
var
40+
i : integer;
41+
begin
42+
for i := 1 to MAX do
43+
begin
44+
writeln('informe o valor ',i);
45+
readln(vetor[i]);
46+
end;
47+
end;
48+
// acha o menor, nucleo do programa
49+
procedure kernel(var vetor : Tvetor);
50+
var
51+
j: integer;
52+
temp : integer;
53+
begin
54+
for j:= 1 to MAX do
55+
begin
56+
if vetor[j] > vetor[j+1] then
57+
begin
58+
temp := vetor[j];
59+
vetor[j] := vetor[j+1];
60+
vetor[j+1] := temp;
61+
end;
62+
end;
63+
end;
64+
65+
//////////////////////////////
66+
procedure exibir(vetor: Tvetor);
67+
var
68+
i : integer;
69+
begin
70+
writeln;
71+
write(' | ');
72+
for i:=1 to MAX do
73+
begin
74+
write(vetor[i]);
75+
write(' | ');
76+
end;
77+
writeln;
78+
end;
79+
80+
procedure repetir();
81+
var
82+
i: integer;
83+
begin
84+
for i:=MAX downto 1 do
85+
begin
86+
kernel(vetor);
87+
exibir(vetor);
88+
end;
89+
end;
90+
91+
begin
92+
preencher(vetor);
93+
writeln('Vetor Original');
94+
exibir(vetor);
95+
repetir();
96+
writeln;
97+
writeln('Vetor Ordenado');
98+
exibir(vetor);
99+
end.

Pascal/sort/heapsort.pas

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
program HeapSort240616;
2+
3+
const
4+
MAX = 10;
5+
6+
type
7+
Tgiven = integer;
8+
Tvector = array[0..MAX] of Tgiven;
9+
10+
var
11+
vector : Tvector;
12+
13+
procedure auto(var vector:Tvector);
14+
var
15+
i : integer;
16+
begin
17+
for i := 0 to MAX-1 do
18+
begin
19+
vector[i]:=random(150);
20+
end;
21+
end;
22+
23+
procedure display( vector: Tvector );
24+
var
25+
i: integer;
26+
begin
27+
writeln;
28+
write('=> | ');
29+
for i := 0 to MAX-1 do write(vector[i],' | ');
30+
writeln;
31+
end;
32+
33+
procedure swap( var a, b: integer );
34+
var
35+
temp: integer;
36+
begin
37+
temp := a;
38+
a := b;
39+
b := temp;
40+
end;
41+
42+
procedure sink( var vector : Tvector; start, last: integer );
43+
var
44+
root, child: integer;
45+
begin
46+
root := start;
47+
while ( root * 2 + 1 <= last ) do begin
48+
child := root * 2 + 1;
49+
if ( child < last ) and ( vector[child] < vector[child + 1] ) then
50+
child := child + 1;
51+
if ( vector[root] < vector[child] ) then begin
52+
swap ( vector[root], vector[child] );
53+
root := child;
54+
end else
55+
break;
56+
end;
57+
end;
58+
59+
procedure heighten( var vector : Tvector; count: integer );
60+
var
61+
start: integer;
62+
begin
63+
start := (count - 1) div 2;
64+
while ( start >= 0 ) do
65+
begin
66+
sink (vector, start, count-1);
67+
start := start - 1;
68+
end;
69+
end;
70+
71+
procedure heapSort( var vector : Tvector; lastVector:integer );
72+
var
73+
last : integer;
74+
begin
75+
heighten(vector, MAX );
76+
last := MAX - 1;
77+
writeln;
78+
writeln('Heap');
79+
display(vector);
80+
while ( last > 0 ) do
81+
begin
82+
swap(vector[last], vector[0]);
83+
last := last - 1;
84+
sink(vector, 0, last);
85+
end;
86+
end;
87+
88+
//program
89+
begin
90+
writeln;
91+
auto(vector);
92+
writeln('Original Vector');
93+
display(vector);
94+
heapSort (vector, MAX);
95+
writeln;
96+
writeln('Sorted Vector');
97+
display(vector);
98+
end.

0 commit comments

Comments
 (0)