Created
December 29, 2016 05:28
-
-
Save paulojp-dev/d6003e7262a47d7114675e3b93aeabea to your computer and use it in GitHub Desktop.
Estrutura de Dados em Pascal: pilhas, filas, listas, exercícios, etc.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
01 - Programa que armazena em uma variável dinâmica um valor inteiro informado pelo usuário e apresenta na tela o valor. | |
02 - Mostra o endereço de memória da variável dinâmica. | |
03 - Segunda variável dinâmica que recebe o primeiro valor. | |
} | |
Program questao01; | |
Var | |
num, num2, num3 : ^Integer; | |
Begin | |
new(num); | |
writeln('Digite um valo: '); | |
read(num^); | |
new(num2); | |
num2^ := num^;//um recebe o valor do outro, não a referência | |
num2^ := 8; | |
writeln('O valor digitado foi: ', num^); | |
dispose(num); | |
writeln('Endereço de memória da variável dinâmica: ', num^); | |
writeln('Valor recebido pela variável2: ', num2^); | |
dispose(num2); | |
writeln('Endereço de memória da variável dinâmica2: ', num2^); | |
num3 := num;//ponteiro recebe o endereço da variável dinâmica | |
writeln('Endereço de memória da variável dinâmica3: ', num3^); | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
1 - Lista de idades, onde o usuário define a quantidade de idades a cadastrar; | |
2 - Lista amazenar nome e idade; | |
3 - Calcula e apresenta a média das idades, e o usuário mais velho. | |
} | |
Program questao01; | |
uses crt; | |
Type | |
cadastro = record | |
nome : String; | |
idade : Integer; | |
prox : ^cadastro; | |
end; | |
Var | |
r, p : ^cadastro; | |
i, n, total, idade_maior: Integer; | |
media : real; | |
Begin | |
new(p); | |
r := p; | |
writeln('Quantas pessoas deseja cadastrar?'); | |
read(n); | |
FOR i := 1 TO n DO | |
begin | |
writeln('Digite o nome da ', i, 'º pessoa: '); | |
read(r^.nome); | |
writeln('Digite a idade da ', i, 'º pessoa: '); | |
read(r^.idade); | |
IF r^.idade > idade_maior THEN | |
idade_maior := r^.idade; | |
total := total + r^.idade; | |
new(r^.prox); | |
r := r^.prox; | |
end; | |
media := total / n; | |
r^.prox := nil; | |
r := p; | |
FOR i:=1 TO n DO | |
begin | |
writeln; | |
writeln('Nome da ', i, 'º pessoa: ', r^.nome); | |
writeln('Idade da ', i, 'º pessoa: ',r^.idade); | |
r := r^.prox;//Após mostrar a idade, o ponteiro 'r' pula p/ o próximo nó | |
end; | |
writeln('Média das idades cadastradas: ', media:0:2); | |
writeln('Maior idade: ', idade_maior); | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program pilhaLivros; | |
USES crt; | |
Type | |
livro = record | |
nome_livro : String; | |
quant_pag : Integer; | |
autor_livro : String; | |
proximo : ^livro; | |
end; | |
Var | |
n_livro, top, pegar_livro : ^livro; | |
opc : Integer; | |
Begin | |
top := nil; | |
opc := -1; | |
WHILE opc <> 3 DO | |
begin | |
writeln('---------MENU---------'); | |
writeln('|1 - Inserir livro. |'); | |
writeln('|2 - Pegar livro. |'); | |
writeln('|3 - Sair |'); | |
writeln('----------------------'); | |
writeln('Digite a opção: '); | |
readln(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_livro); | |
writeln('----CADASTRAR LIVROS----'); | |
writeln('Nome do livro: '); | |
readln(n_livro^.nome_livro); | |
writeln('Quantidade de páginas: '); | |
readln(n_livro^.quant_pag); | |
writeln('Nome do autor: '); | |
readln(n_livro^.autor_livro); | |
n_livro^.proximo := top; | |
top := n_livro; | |
end; | |
2 : begin | |
IF top = nil THEN | |
begin | |
writeln('Acabou os livros.'); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('----LIVRO RETIRADO----'); | |
writeln('Nome do livro: ', top^.nome_livro); | |
writeln('Quantidade de páginas: ', top^.quant_pag); | |
writeln('Autor: ', top^.autor_livro); | |
pegar_livro := top; | |
top := top^.proximo; | |
dispose(pegar_livro); | |
readln; | |
end; | |
end; | |
3 : opc := 3; | |
ELSE begin | |
writeln('Opção inválida.'); | |
readln; | |
end; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program pilhaDocumentos; | |
USES crt; | |
Type | |
documento = record | |
cod_doc : String; | |
tit_doc : String; | |
proximo : ^documento; | |
end; | |
Var | |
top, n_doc, rm_doc : ^documento; | |
opc : Integer; | |
Begin | |
top := nil; | |
opc := -1; | |
clrscr; | |
WHILE opc <> 3 DO | |
begin | |
writeln('-------------MENU-------------'); | |
writeln('|1 - Inserir novo documento. |'); | |
writeln('|2 - Remover documento. |'); | |
writeln('|3 - Sair. |'); | |
writeln('------------------------------'); | |
writeln('Digite a Opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_doc); | |
writeln('----------INSERIR DOCUMENTO----------'); | |
writeln('Código do novo documento: '); | |
readln(n_doc^.cod_doc); | |
writeln('Título do novo documento: '); | |
readln(n_doc^.tit_doc); | |
n_doc^.proximo := top; | |
top := n_doc; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
2 : begin | |
IF top = nil THEN | |
begin | |
writeln('Acabou os documentos.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
writeln('------------DOCUMENTO REMOVIDO------------'); | |
writeln('Código do documento: ', top^.cod_doc); | |
writeln('Título do documento: ', top^.tit_doc); | |
readln; | |
rm_doc := top; | |
top := top^.proximo; | |
dispose(rm_doc); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
3 : opc := 3; | |
ELSE | |
begin | |
writeln('Opção Inválida.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
clrscr; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program pilhaDocumentos; | |
USES crt; | |
Type | |
documento = record | |
cod_doc : String; | |
tit_doc : String; | |
proximo : ^documento; | |
end; | |
Var | |
top, n_doc, rm_doc : ^documento; | |
opc : Integer; | |
Begin | |
top := nil; | |
opc := -1; | |
WHILE opc <> 3 DO | |
begin | |
writeln('-------------MENU-------------'); | |
writeln('|1 - Inserir novo documento. |'); | |
writeln('|2 - Remover documento. |'); | |
writeln('|3 - Sair. |'); | |
writeln('------------------------------'); | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_doc); | |
writeln('----------INSERIR DOCUMENTO----------'); | |
writeln('Código do novo documento: '); | |
readln(n_doc^.cod_doc); | |
writeln('Título do novo documento: '); | |
readln(n_doc^.tit_doc); | |
n_doc^.proximo := top; | |
top := n_doc; | |
end; | |
2 : begin | |
IF top = nil THEN | |
begin | |
writeln('Acabou os documentos.'); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('------------DOCUMENTO REMOVIDO------------'); | |
writeln('Código do documento: ', top^.cod_doc); | |
writeln('Título do documento: ', top^.tit_doc); | |
readln; | |
rm_doc := top; | |
top := top^.proximo; | |
dispose(rm_doc); | |
end; | |
end; | |
3 : opc := 3; | |
ELSE | |
begin | |
writeln('Opção inválida.'); | |
readln; | |
end; | |
clrscr; | |
end; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaDocumentos; | |
USES crt; | |
Type | |
documento = record | |
cod_doc : String; | |
tit_doc : String; | |
proximo : ^documento; | |
end; | |
Var | |
n_doc, rm_doc, primeiro_doc, ultimo_doc : ^documento; | |
opc : Integer; | |
Begin | |
primeiro_doc := nil; | |
ultimo_doc := nil; | |
opc := -1; | |
clrscr; | |
WHILE opc <> 3 DO | |
begin | |
writeln('-------------MENU-------------'); | |
writeln('|1 - Inserir novo documento. |'); | |
writeln('|2 - Pegar um documento. |'); | |
writeln('|3 - Sair. |'); | |
writeln('------------------------------'); | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_doc); | |
writeln('----------INSERIR DOCUMENTO----------'); | |
writeln('Código do novo documento: '); | |
readln(n_doc^.cod_doc); | |
writeln('Título do novo documento: '); | |
readln(n_doc^.tit_doc); | |
IF primeiro_doc = nil THEN | |
primeiro_doc := n_doc | |
ELSE | |
ultimo_doc^.proximo := n_doc; | |
n_doc^.proximo := nil; | |
ultimo_doc := n_doc; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
2 : begin | |
IF primeiro_doc = nil THEN | |
begin | |
writeln('Acabou os documentos.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
writeln('------------DOCUMENTO REMOVIDO------------'); | |
writeln('Código do documento: ', primeiro_doc^.cod_doc); | |
writeln('Título do documento: ', primeiro_doc^.tit_doc); | |
readln; | |
rm_doc := primeiro_doc; | |
primeiro_doc := primeiro_doc^.proximo; | |
dispose(rm_doc); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
3 : opc := 3; | |
ELSE | |
begin | |
writeln('Opção inválida.'); | |
readln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
clrscr; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program pilhaDocumentos; | |
USES crt; | |
Type | |
documento = record | |
cod_doc : String; | |
tit_doc : String; | |
proximo : ^documento; | |
end; | |
Var | |
n_doc, rm_doc, primeiro_doc, ultimo_doc : ^documento; | |
opc : Integer; | |
Begin | |
primeiro_doc := nil; | |
ultimo_doc := nil; | |
opc := -1; | |
WHILE opc <> 3 DO | |
begin | |
writeln('-------------MENU-------------'); | |
writeln('|1 - Inserir novo documento. |'); | |
writeln('|2 - Remover documento. |'); | |
writeln('|3 - Sair. |'); | |
writeln('------------------------------'); | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_doc); | |
writeln('----------INSERIR DOCUMENTO----------'); | |
writeln('Código do novo documento: '); | |
readln(n_doc^.cod_doc); | |
writeln('Título do novo documento: '); | |
readln(n_doc^.tit_doc); | |
IF primeiro_doc = nil THEN | |
primeiro_doc := n_doc | |
ELSE | |
ultimo_doc^.proximo := n_doc; | |
n_doc^.proximo := nil; | |
ultimo_doc := n_doc; | |
end; | |
2 : begin | |
IF primeiro_doc = nil THEN | |
begin | |
writeln('Acabou os documentos.'); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('------------DOCUMENTO REMOVIDO------------'); | |
writeln('Código do documento: ', primeiro_doc^.cod_doc); | |
writeln('Título do documento: ', primeiro_doc^.tit_doc); | |
readln; | |
rm_doc := primeiro_doc; | |
primeiro_doc := primeiro_doc^.proximo; | |
dispose(rm_doc); | |
end; | |
end; | |
3 : opc := 3; | |
ELSE | |
begin | |
writeln('Opção inválida.'); | |
readln; | |
end; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaProcessos; | |
USES crt; | |
Type | |
processo = record | |
nome : String; | |
proximo : ^processo; | |
end; | |
Var | |
n_proc, rm_proc, primeiro_proc, ultimo_proc : ^processo; | |
opc : Integer; | |
Begin | |
primeiro_proc := nil; | |
ultimo_proc := nil; | |
opc := -1; | |
clrscr; | |
WHILE opc <> 3 DO | |
begin | |
writeln('--------------MENU--------------'); | |
writeln('|1 - Abrir novo processo. |'); | |
writeln('|2 - Executar processo. |'); | |
writeln('|3 - Sair. |'); | |
writeln('--------------------------------'); | |
writeln('Digite a opção desejada: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : Begin | |
new(n_proc); | |
writeln('--------ABRIR PROCESSO--------'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF primeiro_proc = nil THEN | |
primeiro_proc := n_proc | |
ELSE ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
ultimo_proc := n_proc; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
2 : Begin | |
IF primeiro_proc = nil THEN | |
begin | |
writeln('Não há processos p/ executar.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
writeln('--------EXECUTAR PROCESSO--------'); | |
writeln('Nome do processo a ser executado: ', primeiro_proc^.nome); | |
rm_proc := primeiro_proc; | |
primeiro_proc := primeiro_proc^.proximo; | |
dispose(rm_proc); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
3 : opc := 3; | |
ELSE Begin | |
writeln('Opção inválida.'); | |
readln; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
clrscr; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaProcessos; | |
USES crt; | |
Type | |
processo = record | |
nome : String; | |
proximo : ^processo; | |
end; | |
Var | |
n_proc, rm_proc, primeiro_proc, ultimo_proc : ^processo; | |
opc : Integer; | |
Begin | |
primeiro_proc := nil; | |
ultimo_proc := nil; | |
opc := -1; | |
WHILE opc <> 3 DO | |
begin | |
writeln('--------------MENU--------------'); | |
writeln('|1 - Abrir novo processo. |'); | |
writeln('|2 - Executar processo. |'); | |
writeln('|3 - Sair. |'); | |
writeln('--------------------------------'); | |
writeln('Digite a op��o desejada: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : Begin | |
new(n_proc); | |
writeln('--------ABRIR PROCESSO--------'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF primeiro_proc = nil THEN | |
primeiro_proc := n_proc | |
ELSE ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
ultimo_proc := n_proc; | |
end; | |
2 : Begin | |
IF primeiro_proc = nil THEN | |
begin | |
writeln('N�o h� processos p/ executar.'); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('--------EXECUTAR PROCESSO--------'); | |
writeln('Nome do processo a ser executado: ', primeiro_proc^.nome); | |
readln; | |
rm_proc := primeiro_proc; | |
primeiro_proc := primeiro_proc^.proximo; | |
dispose(rm_proc); | |
end; | |
end; | |
3 : opc := 3; | |
ELSE Begin | |
writeln('Op��o inv�lida.'); | |
readln; | |
end; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaProcessos; | |
USES crt; | |
Type | |
processo = record | |
nome : String; | |
proximo : ^processo; | |
end; | |
Var | |
n_proc, rm_proc, primeiro_proc, ultimo_proc, x_primeiro_proc, x_ultimo_proc : ^processo; | |
opc : Integer; | |
Begin | |
primeiro_proc := nil; | |
ultimo_proc := nil; | |
x_primeiro_proc := nil; | |
x_ultimo_proc := nil; | |
opc := -1; | |
clrscr; | |
WHILE opc <> 4 DO | |
begin | |
writeln('--------------MENU---------------'); | |
writeln('|1 - Abrir novo processo. |'); | |
writeln('|2 - Abrir processo prioritário.|'); | |
writeln('|3 - Executar processo. |'); | |
writeln('|4 - Sair. |'); | |
writeln('---------------------------------'); | |
writeln('Digite a opção desejada: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : Begin | |
new(n_proc); | |
writeln('--------ABRIR PROCESSO--------'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF primeiro_proc = nil THEN | |
primeiro_proc := n_proc | |
ELSE ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
ultimo_proc := n_proc; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
2 : Begin | |
new(n_proc); | |
writeln('--ABRIR PROCESSO PRIORITÁRIO--'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF x_primeiro_proc = nil THEN | |
x_primeiro_proc := n_proc | |
ELSE x_ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
x_ultimo_proc := n_proc; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
3 : Begin | |
IF (x_primeiro_proc = nil) AND (primeiro_proc = nil) THEN | |
begin | |
writeln('Não há processos p/ executar.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
IF x_primeiro_proc <> nil THEN | |
begin | |
writeln('--EXECUTAR PROCESSO PRIORITÁRIO--'); | |
writeln('Nome do processo a ser executado: ', x_primeiro_proc^.nome); | |
rm_proc := x_primeiro_proc; | |
x_primeiro_proc := x_primeiro_proc^.proximo; | |
dispose(rm_proc); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
writeln('--------EXECUTAR PROCESSO--------'); | |
writeln('Nome do processo a ser executado: ', primeiro_proc^.nome); | |
rm_proc := primeiro_proc; | |
primeiro_proc := primeiro_proc^.proximo; | |
dispose(rm_proc); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
4 : opc := 4; | |
ELSE Begin | |
writeln('Opção inválida.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
clrscr; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaProcessos; | |
USES crt; | |
Type | |
processo = record | |
nome : String; | |
proximo : ^processo; | |
end; | |
Var | |
n_proc, rm_proc, primeiro_proc, ultimo_proc, x_primeiro_proc, x_ultimo_proc : ^processo; | |
opc : Integer; | |
Begin | |
primeiro_proc := nil; | |
ultimo_proc := nil; | |
x_primeiro_proc := nil; | |
x_ultimo_proc := nil; | |
opc := -1; | |
WHILE opc <> 4 DO | |
begin | |
writeln('--------------MENU---------------'); | |
writeln('|1 - Abrir novo processo. |'); | |
writeln('|2 - Abrir processo prioritário.|'); | |
writeln('|3 - Executar processo. |'); | |
writeln('|4 - Sair. |'); | |
writeln('---------------------------------'); | |
writeln('Digite a opção desejada: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : Begin | |
new(n_proc); | |
writeln('--------ABRIR PROCESSO--------'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF primeiro_proc = nil THEN | |
primeiro_proc := n_proc | |
ELSE ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
ultimo_proc := n_proc; | |
end; | |
2 : Begin | |
new(n_proc); | |
writeln('--ABRIR PROCESSO PRIORITÁRIO--'); | |
writeln('Digite o nome do processo: '); | |
readln(n_proc^.nome); | |
IF x_primeiro_proc = nil THEN | |
x_primeiro_proc := n_proc | |
ELSE x_ultimo_proc^.proximo := n_proc; | |
n_proc^.proximo := nil; | |
x_ultimo_proc := n_proc; | |
end; | |
3 : Begin | |
IF (x_primeiro_proc = nil) AND (primeiro_proc = nil) THEN | |
begin | |
writeln('Não há processos p/ executar.'); | |
readln; | |
end | |
ELSE | |
begin | |
IF x_primeiro_proc <> nil THEN | |
begin | |
writeln('--EXECUTAR PROCESSO PRIORITÁRIO--'); | |
writeln('Nome do processo a ser executado: ', x_primeiro_proc^.nome); | |
readln; | |
rm_proc := x_primeiro_proc; | |
x_primeiro_proc := x_primeiro_proc^.proximo; | |
dispose(rm_proc); | |
end | |
ELSE | |
begin | |
writeln('--------EXECUTAR PROCESSO--------'); | |
writeln('Nome do processo a ser executado: ', primeiro_proc^.nome); | |
readln; | |
rm_proc := primeiro_proc; | |
primeiro_proc := primeiro_proc^.proximo; | |
dispose(rm_proc); | |
end; | |
end; | |
end; | |
4 : opc := 4; | |
ELSE Begin | |
writeln('Opção inválida.'); | |
readln; | |
end; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaPessoas; | |
USES crt; | |
Type | |
pessoa = record | |
nome : String; | |
proximo : ^pessoa; | |
end; | |
Var | |
n_pes, rm_pes, primeira_pes, ultima_pes, cont_pes : ^pessoa; | |
opc, quant : Integer; | |
Begin | |
primeira_pes := nil; | |
ultima_pes := nil; | |
cont_pes := nil; | |
opc := -1; | |
clrscr; | |
WHILE opc <> 4 DO | |
begin | |
writeln('-------------MENU-------------'); | |
writeln('|1 - Inserir pessoa. |'); | |
writeln('|2 - Remover pessoa. |'); | |
writeln('|3 - Tamanho da fila. |'); | |
writeln('|4 - Sair. |'); | |
writeln('------------------------------'); | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : begin | |
new(n_pes); | |
writeln('----------INSERIR PESSOA----------'); | |
writeln('Nome da nova pessoa: '); | |
readln(n_pes^.nome); | |
IF primeira_pes = nil THEN | |
primeira_pes := n_pes | |
ELSE | |
ultima_pes^.proximo := n_pes; | |
n_pes^.proximo := nil; | |
ultima_pes := n_pes; | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
2 : begin | |
IF primeira_pes = nil THEN | |
begin | |
writeln('Fila vázia.'); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end | |
ELSE | |
begin | |
writeln('------------PESSOA REMOVIDA------------'); | |
writeln('Nome da pessoa: ', primeira_pes^.nome); | |
readln; | |
rm_pes := primeira_pes; | |
primeira_pes := primeira_pes^.proximo; | |
dispose(rm_pes); | |
writeln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
3 : begin | |
quant := 0; | |
cont_pes := primeira_pes; | |
WHILE cont_pes <> nil DO | |
begin | |
quant := quant + 1; | |
cont_pes := cont_pes^.proximo; | |
end; | |
writeln; | |
writeln('Quantidade de pessoas na fila: ', quant); | |
readkey; | |
clrscr; | |
end; | |
4 : opc := 4; | |
ELSE | |
begin | |
writeln('Opção inválida.'); | |
readln; | |
writeln('Presione uma tecla para voltar ao menu.'); | |
readkey; | |
clrscr; | |
end; | |
end; | |
end; | |
clrscr; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaEstacionamento2; | |
Type | |
motorista = record | |
nome : Integer; | |
prox : ^motorista; | |
end; | |
registro = record | |
p_moto : ^motorista; | |
u_moto : ^motorista; | |
prox : ^registro; | |
end; | |
Var | |
prof, aluno, visit : ^registro; | |
rm_moto, n_moto : ^motorista; | |
opc, t, i : Integer; | |
FUNCTION adc_registro(aluno : ^registro) : ^registro; | |
var | |
x : ^registro; | |
begin | |
new(n_moto); | |
writeln('----------SALVANDO MOTORISTA-----------'); | |
writeln('Digite o nome do motorista: '); | |
readln(n_moto^.nome); | |
IF x^.p_moto = nil THEN | |
x^.p_moto := n_moto | |
ELSE x^.u_moto^.prox := n_moto; | |
n_moto^.prox := nil; | |
x^.u_moto := n_moto; | |
adc_registro := x; | |
end; | |
Begin | |
FOR i := 1 TO 3 DO | |
begin | |
p_moto[i] := nil; | |
u_moto[i] := nil; | |
end; | |
opc := 4; | |
WHILE opc <> 0 DO | |
begin | |
writeln('/--------------MENU--------------\'); | |
writeln('|1 - Adcionar Motorista. |'); | |
writeln('|2 - Remover Motorista. |'); | |
writeln('|0 - Sair. |'); | |
writeln('\--------------------------------/'); | |
writeln; | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
CASE opc OF | |
1 : Begin | |
writeln('/-----------ESCOLHA DO TIPO-----------\'); | |
writeln('|1 - P/ Professores. |'); | |
writeln('|2 - P/ Alunos. |'); | |
writeln('|3 - P/ Visitantes. |'); | |
writeln('|0 - P/ voltar ao Menu. |'); | |
writeln('\-------------------------------------/'); | |
writeln; | |
writeln('Digite a opção: '); | |
read(t); | |
new(n_moto); | |
IF (t = 1) OR (t = 2) OR (t = 3) THEN | |
begin | |
new(n_moto); | |
writeln('----------SALVANDO MOTORISTA-----------'); | |
writeln('Digite o nome do motorista: '); | |
readln(n_moto^.nome); | |
IF p_moto[t] = nil THEN | |
p_moto[t] := n_moto | |
ELSE u_moto[t]^.prox := n_moto; | |
n_moto^.prox := nil; | |
u_moto[t] := n_moto; | |
end | |
ELSE | |
begin | |
writeln('Cancelando... Precione uma tecla p/ ser redirecionado ao Menu.'); | |
readln(); | |
end; | |
end; | |
2 : begin | |
IF (p_moto[1] = nil) AND (p_moto[2] = nil) AND (p_moto[3] = nil) THEN | |
begin | |
writeln('Estacionamento vázio.'); | |
readln; | |
end | |
ELSE | |
begin | |
IF p_moto[1] = nil THEN | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[1]^.nome); | |
writeln('TIPO: Professor'); | |
new(rm_moto); | |
rm_moto := p_moto[1]; | |
p_moto[1] := p_moto[1]^.prox; | |
dispose(rm_moto); | |
readln; | |
end | |
ELSE IF p_moto[2]= nil THEN | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[2]^.nome); | |
writeln('TIPO: Aluno'); | |
new(rm_moto); | |
rm_moto := p_moto[2]; | |
p_moto[2] := p_moto[2]^.prox; | |
dispose(rm_moto); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[3]^.nome); | |
writeln('TIPO: Visitante'); | |
new(rm_moto); | |
rm_moto := p_moto[3]; | |
p_moto[3] := p_moto[3]^.prox; | |
dispose(rm_moto); | |
readln; | |
end; | |
end; | |
end; | |
0 : opc := 0; | |
ELSE begin | |
writeln('Opção Inválida.'); | |
readln; | |
end; | |
end; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//LISTA LINEAR | |
{ | |
1 - Variável Composta sem um tamanho definido; | |
2 - É composta por uma sequência de nós que contém 2 elementos cada: um valor e o um ponteiro p/ o próximo nó. | |
CRIAÇÃO: | |
1 - Cria-se um tipo 'nó' que irá representar o nó da lista, devendo ser um registro contendo a informação e um ponteiro p/ o próprio registro 'nó'; | |
2 - Declarar um ponteiro 'p' que irá apontar p/ o nó definido; | |
3 - Criar uma variável dinâmica apontando p/ o registro nó; | |
4 - Atribuir um valor ao registro por meio da variável dinâmica; | |
5 - Usar a função 'nil', p/ limpar o endereço apontado pelo ponteriro do registro, assim encerrando a lista. | |
ADICIONANDO NÓS: | |
1 - Cria-se uma nova variável dinâmica que aponta p/ o ponteiro dentro do registro, e esse pontreiro apontará p/ um novo nó; | |
} | |
Program listaLinear; | |
Type | |
no = record //Registro | |
idade : Integer; | |
prox : ^no; | |
end; | |
Var | |
p : ^no;//Será usado como variável dinâmica | |
Begin | |
new(p);//1º nó | |
p^.idade := 22; | |
new(p^.prox);//2º nó -> Cria uma variável dinâmica, que aponta p/ o ponteiro dentro do registro, e esse ponteiro apotará p/ um novo nó | |
p^.prox^.idade := 21; | |
new(p^.prox^.prox);//3º nó |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program cartas; | |
type | |
carta = record | |
nipe:string; | |
numero:integer; | |
prox:^carta; | |
end; | |
var | |
topo_baralho:^carta; | |
nova_carta:^carta; | |
carta_removida:^carta; | |
menu:integer; | |
Begin | |
topo_baralho := nil; | |
menu := -1; | |
while menu <> 0 do | |
Begin; | |
writeln('----------- MENU ---------------'); | |
writeln('1 - Inserir uma carta no baralho.'); | |
writeln('2 - Tirar uma carta.'); | |
writeln('0 - Sair.'); | |
write('Escolha uma opcao:'); | |
readln(menu); | |
if menu = 1 then // Inserir nova carta no baralho | |
Begin; | |
// 1. aloca��o da vari�vel din�mica que vai representar a nova carta a ser inserida | |
new(nova_carta); | |
// 2. defini��o dos dados da nova carta (nipe e n�mero) | |
writeln('Digite o nipe da nova carta'); | |
readln(nova_carta^.nipe); | |
writeln('Digite o numero da nova carta'); | |
readln(nova_carta^.numero); | |
// 3. ponteiro da nova carta recebe o endere�o do antigo topo do baralho | |
nova_carta^.prox := topo_baralho; | |
// 4. topo do baralho recebe o endere�o do novo topo do baralho (nova_carta) | |
topo_baralho := nova_carta; | |
end; | |
if menu = 2 then // Tirar uma carta | |
Begin; | |
if topo_baralho = nil then | |
Begin; | |
writeln('O baralho esta vazio, insira uma nova carta.'); | |
readln(); | |
end | |
else | |
Begin; | |
// 1. apresenta��o dos dados da carta (nipe e numero) | |
writeln('O nipe da carta eh ',topo_baralho^.nipe,' e o numero eh ',topo_baralho^.numero,'.'); | |
// 2. a carta do topo do baralho � identificada como a carta que ser� removida | |
carta_removida := topo_baralho; | |
// 3. o topo do baralho recebe o endere�o da segunda carta (novo topo) | |
topo_baralho := carta_removida^.prox; | |
// 4. a carta removida � exclu�da da mem�ria do computador | |
dispose(carta_removida); | |
readln(); | |
end; | |
end; | |
if menu = 0 then menu := 0; | |
if (menu <> 1) and (menu <> 2) and (menu <> 0) then writeln('Opcao Invalida'); | |
clrscr; | |
end; | |
end. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program Pzim ; | |
type | |
carta = record | |
nipe: string; | |
numero: integer; | |
proximo: ^carta; | |
end; | |
var | |
pilha: ^carta; | |
aux: ^carta; | |
Begin | |
//Primeira carta | |
new(pilha); | |
pilha^.nipe := 'ouro'; | |
pilha^.numero := 1; | |
pilha^.proximo := nil; | |
//Segunda carta | |
new(aux); | |
aux^.nipe := 'copas'; | |
aux^.numero := 10; | |
aux^.proximo := pilha; | |
pilha := aux; | |
//Terceira carta | |
new(aux); | |
aux^.nipe := 'espada'; | |
aux^.numero := 12; | |
aux^.proximo := pilha; | |
pilha := aux; | |
//Remove o topo da pilha | |
aux := pilha; | |
pilha := pilha^.proximo; | |
dispose(aux); | |
writeln(pilha^.nipe); | |
writeln(pilha^.numero); | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program cartas; | |
type | |
carta = record | |
nipe:string; | |
numero:integer; | |
prox:^carta; | |
end; | |
var | |
topo:^carta; | |
aux:carta; | |
i:integer; | |
FUNCTION insere(topoPilha:carta; novaCarta:carta):carta; | |
Begin | |
novaCarta.prox := @topoPilha; | |
insere := novaCarta; | |
end; | |
FUNCTION remove(topoPilha:carta):carta; | |
Begin | |
remove := topoPilha.prox^; | |
end; | |
Procedure acessaTopo(topoPilha:carta); | |
Begin | |
writeln(topoPilha.nipe); | |
writeln(topoPilha.numero); | |
end; | |
Begin | |
//inicializa a pilha | |
topo := nil; | |
//Cria um registro | |
aux.nipe := 'ouro'; | |
aux.numero := 10; | |
//Insere o primeiro registro | |
aux := insere(topo^,aux); | |
topo := @aux; | |
//Acessa o promeiro registro | |
acessaTopo(topo^); | |
readln(i); | |
end. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program fila_concurso; | |
type | |
candidato = record | |
nome:string; | |
prox:^candidato; | |
end; | |
var | |
primeiro_candidato:^candidato; | |
ultimo_candidato:^candidato; | |
novo_candidato:^candidato; | |
candidato_removido:^candidato; | |
menu:integer; | |
Begin | |
primeiro_candidato := nil; | |
ultimo_candidato := nil; | |
menu := -1; | |
while menu <> 0 do | |
Begin; | |
writeln('----------- MENU ---------------'); | |
writeln('1 - Inserir candidato na fila.'); | |
writeln('2 - Visualizar pr�ximo candidato.'); | |
writeln('3 - Chamar pr�ximo candidato.'); | |
writeln('0 - Sair.'); | |
write('Escolha uma opcao:'); | |
readln(menu); | |
if menu = 1 then // Inserir novo candidato na fila | |
Begin; | |
// 1. aloca��o da vari�vel din�mica que vai representar o novo candidato a ser inserido | |
new(novo_candidato); | |
// 2. defini��o dos dados do novo candidato (nome) | |
writeln('Digite o nome do novo candidato'); | |
readln(novo_candidato^.nome); | |
// 3. verifica se existe algu�m na fila | |
if primeiro_candidato = nil then | |
Begin; | |
// 3.1 se n�o existir: indica que o novo candidato � o primeiro da fila | |
primeiro_candidato := novo_candidato; | |
end | |
else | |
Begin; | |
// 3.2 se j� existia algupem na fila: faz o �ltimo candidato apontar para o novo candidato | |
ultimo_candidato^.prox := novo_candidato; | |
end; | |
// 4. ponteiro do novo candidato indica que ele � o �ltimo da fila (nil) | |
novo_candidato^.prox := nil; | |
// 5. indica que o novo candidato � �ltimo da fila | |
ultimo_candidato := novo_candidato; | |
end; | |
if menu = 2 then // Visualizar pr�ximo candidato | |
Begin; | |
if primeiro_candidato = nil then | |
Begin; | |
writeln('N�o tem ninguem na fila.'); | |
readln(); | |
end | |
else | |
Begin; | |
// 1. apresenta��o dos dados do pr�ximo candidato (nome) | |
writeln('O pr�ximo a ser chamado ser� o ',primeiro_candidato^.nome,'.'); | |
readln(); | |
end; | |
end; | |
if menu = 3 then // Chamar o pr�ximo candidato | |
Begin; | |
if primeiro_candidato = nil then | |
Begin; | |
writeln('N�o tem ninguem na fila.'); | |
readln(); | |
end | |
else | |
Begin; | |
// 1. apresenta��o dos dados do pr�ximo candidato (nome) | |
writeln('Candidato ',primeiro_candidato^.nome,'.'); | |
// 2. identifica o primeiro candidato como o que dever� ser removido | |
candidato_removido := primeiro_candidato; | |
// 3. identifica como primeiro da fila o segundo candidato | |
primeiro_candidato := primeiro_candidato^.prox; | |
// 4. desaloca da mem�ria o candidato removido | |
dispose(candidato_removido); | |
readln(); | |
end; | |
end; | |
if menu = 0 then menu := 0; | |
if (menu <> 1) and (menu <> 2) and (menu <> 0) then writeln('Opcao Invalida'); | |
clrscr; | |
end; | |
end. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program filaEstacionamento; | |
USES crt; | |
Type | |
motorista = record | |
nome : String[40]; | |
prox : ^motorista; | |
end; | |
Var | |
rm_moto, n_moto : ^motorista; | |
p_moto, u_moto : Array[1..3] OF ^motorista; | |
opc, t, i : Byte; | |
Begin | |
FOR i := 1 TO 3 DO | |
begin | |
p_moto[i] := nil; | |
u_moto[i] := nil; | |
end; | |
opc := 4; | |
clrscr; | |
WHILE opc <> 0 DO | |
begin | |
writeln('/--------------MENU--------------\'); | |
writeln('|1 - Adcionar Motorista. |'); | |
writeln('|2 - Remover Motorista. |'); | |
writeln('|0 - Sair. |'); | |
writeln('\--------------------------------/'); | |
writeln; | |
writeln('Digite a opção: '); | |
read(opc); | |
writeln; | |
clrscr; | |
CASE opc OF | |
1 : Begin{INSERÇÃO DE DADOS} | |
writeln('/-----------ESCOLHA DO TIPO-----------\'); | |
writeln('|1 - P/ Professores. |'); | |
writeln('|2 - P/ Alunos. |'); | |
writeln('|3 - P/ Visitantes. |'); | |
writeln('|0 - P/ voltar ao Menu. |'); | |
writeln('\-------------------------------------/'); | |
writeln; | |
writeln('Digite a opção: '); | |
read(t); | |
new(n_moto); | |
clrscr; | |
IF (t = 1) OR (t = 2) OR (t = 3) THEN | |
begin | |
new(n_moto); | |
writeln('----------SALVANDO MOTORISTA-----------'); | |
writeln('Digite o nome do motorista: '); | |
readln(n_moto^.nome); | |
IF p_moto[t] = nil THEN | |
p_moto[t] := n_moto | |
ELSE u_moto[t]^.prox := n_moto; | |
n_moto^.prox := nil; | |
u_moto[t] := n_moto; | |
end | |
ELSE | |
begin | |
writeln('Cancelando... Precione uma tecla p/ ser redirecionado ao Menu.'); | |
readln; | |
end; | |
end; | |
2 : begin{REMOÇÃO DE DADOS} | |
IF (p_moto[1] = nil) AND (p_moto[2] = nil) AND (p_moto[3] = nil) THEN | |
begin | |
writeln('Estacionamento vázio.'); | |
readln; | |
end | |
ELSE | |
begin | |
IF p_moto[1] <> nil THEN | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[1]^.nome); | |
writeln('TIPO: Professor'); | |
new(rm_moto); | |
rm_moto := p_moto[1]; | |
p_moto[1] := p_moto[1]^.prox; | |
dispose(rm_moto); | |
readln; | |
end | |
ELSE IF p_moto[2] <> nil THEN | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[2]^.nome); | |
writeln('TIPO: Aluno'); | |
new(rm_moto); | |
rm_moto := p_moto[2]; | |
p_moto[2] := p_moto[2]^.prox; | |
dispose(rm_moto); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('----------Motorista Saindo----------'); | |
writeln('Nome: ', p_moto[3]^.nome); | |
writeln('TIPO: Visitante'); | |
new(rm_moto); | |
rm_moto := p_moto[3]; | |
p_moto[3] := p_moto[3]^.prox; | |
dispose(rm_moto); | |
readln; | |
end; | |
end; | |
end; | |
0 : opc := 0;{SAIR} | |
ELSE begin | |
writeln('Opção inválida. Redirecionando p/ o Menu...'); | |
readln; | |
end; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//LISTA LINEAR | |
{ | |
1 - Variável Composta sem um tamanho definido; | |
2 - É composta por uma sequência de nós que contém 2 elementos cada: um valor e o um ponteiro p/ o próximo nó. | |
CRIAÇÃO: | |
1 - Cria-se um tipo 'nó' que irá representar o nó da lista, devendo ser um registro contendo a informação e um ponteiro p/ o próprio registro 'nó'; | |
2 - Declarar um ponteiro 'p' que irá apontar p/ o nó definido; | |
3 - Criar uma variável dinâmica apontando p/ o registro nó; | |
4 - Atribuir um valor ao registro por meio da variável dinâmica; | |
5 - Usar a função 'nil', p/ limpar o endereço apontado pelo ponteriro do registro, assim encerrando a lista. | |
ADICIONANDO NÓS: | |
1 - Cria-se uma nova variável dinâmica que aponta p/ o ponteiro dentro do registro, e esse pontreiro apontará p/ um novo nó; | |
} | |
Program listaLinear; | |
Type | |
no = record //Registro | |
idade : Integer; | |
prox : ^no; | |
end; | |
Var | |
p : ^no;//Será usado como variável dinâmica | |
Begin | |
new(p);//1º nó | |
p^.idade := 22; | |
new(p^.prox);//2º nó -> Cria uma variável dinâmica, que aponta p/ o ponteiro dentro do registro, e esse ponteiro apotará p/ um novo nó | |
p^.prox^.idade := 21; | |
new(p^.prox^.prox);//3º nó | |
p^.prox^.prox^.idade := 20; | |
p^.prox^.prox^.prox := nil; | |
writeln(p^.idade);//1º nó | |
writeln(p^.prox^.idade);//2º nó | |
writeln(p^.prox^.prox^.idade);//3º nó | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
UTILIZANDO NÓS COM O COMANDO FOR: | |
1 - Define uma variável dinâmica 'p' p/ ser o primeiro nó; | |
2 - Define um ponteiro 'r' para ser apontado ao primeiro nó 'p'; | |
3 - (Dentro do for) o ponteiro 'r' será definido como variável dinâmica 'new(r^.prox)', onde a partir do ponteiro interno 'prox' contido no 1º registro 'p' poderá ser chamado o próximo registro, assim criando outro nó; | |
4 - (Dentro do for) o ponteiro 'r' será apontado p/ variável dinâmica(nó) criada 'r^.prox'; | |
5 - (Dentro do for) Agora podemos alterar o ultimo nó criado utilizando o 'r' que está apontado p/ o mesmo; | |
6 - Após serem criados os nós, devemos apontar o ponteiro 'r' p/ o 1º registro 'p' da lista, assim volta ao 1º registro da lista; | |
7 - (Dentro do for) P/ exibir os valores, devemos passar de resgistro em registro pelo 'r := r^.prox;', assim a cada loop, o ponteiro 'r' será apontado p/ o próximo registro(nó); | |
} | |
Program listaLinearFor; | |
Type | |
registro = record | |
num : Integer; | |
prox : ^registro;//Sempre conterá o endereço do próximo nó | |
end; | |
Var | |
r, p : ^registro; | |
i : Integer; | |
Begin | |
new(p);//Cria o 1º nó, que será o inicio da lista | |
r := p;//Ponteiro 'r' aponta p/ o 1º nó | |
r^.num := 0; | |
FOR i := 1 TO 10 DO | |
begin | |
new(r^.prox);//Cria o próximo nó(quando i=2, nó=2º; quando i=3, nó=3º; ...) | |
r := r^.prox;//O ponteiro 'r' vai apontar p/ o próximo registro, direcionado pelo ponteiro 'prox' interno dentro do próximo registro | |
r^.num := i;//'r' está apontando p/ o ultimo registro criado | |
end; | |
r^.prox := nil;//Define o fim da lista | |
r := p;//Ponteiro 'r' volta ao inicio da lista | |
FOR i := 1 TO 10 DO | |
begin | |
writeln(r^.num); | |
r := r^.prox;//Ponteiro 'r' aponta p/ o próximo ponteiro | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program Ponteiros; | |
Var | |
pt : ^integer;//Ponteiro do tipo inteiro | |
num: integer; | |
Begin | |
//PONTEIROS: | |
{ | |
ponteiro : ^integer; -> Um ponteiro do tipo inteiro; Não permite receber valores; Para referênciar valores precisa ser apontado para uma variável estática. | |
num := valor; | |
ponteiro := @num;//Ponteiro vai ser apontado p/ o endereço de memória da variável estática. | |
writeln(ponteiro^);//Mostra o valor contido na variável apontada pelo ponteiro. | |
} | |
num := 20; | |
pt := @num;//Ponteiro recebe o endereço da variável. | |
writeln(pt^);//Mostra o valor contido na variável apontada. | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program questao; | |
USES crt; | |
Type | |
m = record | |
n : String[15]; | |
p : ^m; | |
end; | |
Var | |
primeiro, ultimo : array[1..3] of ^m; | |
rm_m, n_m : ^m; | |
z, x, i : Integer; | |
Begin | |
FOR i := 1 TO 3 DO begin | |
primeiro[i] := nil; | |
ultimo[i] := nil; | |
end; | |
z := 4; | |
clrscr; | |
WHILE z <> 0 DO | |
begin | |
writeln('Digite 1 p/ Adcionar Motorista'); | |
writeln('Digite 2 p/ Remover Motorista'); | |
writeln('Digite 0 p/ Sair'); | |
writeln; | |
read(z); | |
writeln; | |
clrscr; | |
IF z = 1 THEN | |
Begin | |
writeln('Digite 1 P/ Professores'); | |
writeln('Digite 2 P/ Alunos'); | |
writeln('Digite 3 P/ Visitantes'); | |
writeln('Digite 0 P/ voltar ao Menu'); | |
read(x); | |
new(n_m); | |
clrscr; | |
IF (x = 1) OR (x = 2) OR (x = 3) THEN | |
begin | |
new(n_m); | |
writeln('Qual o nome do motorista?'); | |
readln(n_m^.n); | |
IF primeiro[x] = nil THEN | |
primeiro[x] := n_m | |
ELSE ultimo[x]^.p := n_m; | |
n_m^.p := nil; | |
ultimo[x] := n_m; | |
end | |
ELSE readln; | |
end | |
ELSE IF z = 2 THEN | |
begin | |
IF (primeiro[1] = nil) AND (primeiro[2] = nil) AND (primeiro[3] = nil) THEN | |
begin | |
writeln('Todos motoristas saíram'); | |
readln; | |
end | |
ELSE | |
begin | |
IF primeiro[1] <> nil THEN | |
begin | |
writeln('Professor saindo ', primeiro[1]^.n); | |
new(rm_m); | |
rm_m := primeiro[1]; | |
primeiro[1] := primeiro[1]^.p; | |
dispose(rm_m); | |
readln; | |
end | |
ELSE IF primeiro[2] <> nil THEN | |
begin | |
writeln('Aluno saindo ', primeiro[2]^.n); | |
new(rm_m); | |
rm_m := primeiro[2]; | |
primeiro[2] := primeiro[2]^.p; | |
dispose(rm_m); | |
readln; | |
end | |
ELSE | |
begin | |
writeln('Visitante saindo ', primeiro[3]^.n); | |
new(rm_m); | |
rm_m := primeiro[3]; | |
primeiro[3] := primeiro[3]^.p; | |
dispose(rm_m); | |
readln; | |
end; | |
end; | |
end | |
ELSE IF z = 0 THEN z := 0 | |
ELSE begin | |
writeln('Escolha errada'); | |
readln; | |
end; | |
clrscr; | |
end; | |
End. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
program questao; | |
uses crt; | |
type | |
m = record | |
n : string; | |
p : ^m; | |
end; | |
var | |
primeiro, ultimo : array[1..3] of ^m; | |
remove, novo : ^m; | |
z, x, i : integer; | |
begin | |
for i := 1 to 3 do begin | |
primeiro[i] := nil; | |
ultimo[i] := nil; | |
end; | |
z := -1; | |
clrscr; | |
while z <> 0 do | |
begin | |
writeln('digite 1 p/ adcionar motorista'); | |
writeln('digite 2 p/ remover motorista'); | |
writeln('digite 0 p/ sair'); | |
writeln; | |
read(z); | |
writeln; | |
clrscr; | |
if z = 1 then | |
begin | |
writeln('digite 1 p/ professores; digite 2 p/ alunos; digite 3 p/ visitantes; digite 0 p/ voltar ao menu'); | |
read(x); | |
new(novo); | |
clrscr; | |
if (x = 1) or (x = 2) or (x = 3) then | |
begin | |
new(novo); | |
writeln('qual o nome do motorista?'); | |
readln(novo^.n); | |
if primeiro[x] = nil then | |
primeiro[x] := novo | |
else ultimo[x]^.p := novo; | |
novo^.p := nil; | |
ultimo[x] := novo; | |
end | |
else readln; | |
end | |
else if z = 2 then | |
begin | |
if (primeiro[1] = nil) and (primeiro[2] = nil) and (primeiro[3] = nil) then | |
begin | |
writeln('todos motoristas saíram'); | |
readln; | |
end | |
else | |
begin | |
if primeiro[1] <> nil then | |
begin | |
writeln('professor saindo ', primeiro[1]^.n); | |
new(remove); | |
remove := primeiro[1]; | |
primeiro[1] := primeiro[1]^.p; | |
dispose(remove); | |
readln; | |
end | |
else if primeiro[2] <> nil then | |
begin | |
writeln('aluno saindo ', primeiro[2]^.n); | |
new(remove); | |
remove := primeiro[2]; | |
primeiro[2] := primeiro[2]^.p; | |
dispose(remove); | |
readln; | |
end | |
else | |
begin | |
writeln('visitante saindo ', primeiro[3]^.n); | |
new(remove); | |
remove := primeiro[3]; | |
primeiro[3] := primeiro[3]^.p; | |
dispose(remove); | |
readln; | |
end; | |
end; | |
end | |
else if z = 0 then z := 0 | |
else begin | |
writeln('escolha errada'); | |
readln; | |
end; | |
clrscr; | |
end; | |
end. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Program VariavelDinamica; | |
Var | |
pt : ^integer;//Ponteiro que poderá ser utilizado como variável dinâmica | |
Begin | |
//VARIÁVEL DINÂMICA | |
{ | |
vDinamica : ^integer;//Cria um ponteiro que poderá se tornar uma variável dinâmica por meio do comando 'new'. | |
new(vDinamica);//Cria uma variável dinâmica a partir de uma ponteiro; Essa será criada durante a execução; O compilador não faz alocação de memória p/ essa variável; A variável dinâmica aponta p/ um endereço de memória vázio. | |
vDinamica^ := valor;//A variável dinâmica possibilita recber um valor e direciona-o p/ o endereço de memória apontado por ela. | |
dispose(vDinamica);//Finaliza a variável dinâmica | |
} | |
new(pt);//Cria a variável dinâmica a partir do ponteiro criado | |
pt^ := 22;//Recebe o valor e o direciona p/ o endereço apontado pela variável dinâmica | |
writeln(pt^);//Exibe o valor | |
dispose(pt);//Finaliza a variável dinâmica | |
End. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment