Ir ao conteúdo
  • Cadastre-se

Arquivo em pascal


Ranair

Posts recomendados

Ae galera to com um probleminha.

to fzendo um programa em pascal estilo apostila interativa mas so que

ele tem q ser rodado no turbo e acaba ficando muito grande pra rodar nele

queria saber como fazer para as funcoes virarem arquivos acessados atraves de um programa principal

ta ai uma versao resumida do programa se alguem puder dar qualquer ajuda agradeco

lembrando... quero saber como chamar arquivos de um programa principal para que eles simplesmente escrevam e depois voltem ao menu do programa principal

Program Aprendendo_C;

uses crt;

Procedure int_algo;

Begin

writeln(' 1-Introducao aos algoritmos');

writeln; readkey; writeln;

writeln(' CONCEITO: ');

writeln('-Algoritmo nao é um termo restrito a computacao, a palavra algoritmo vem do nome do matematico iraniano Abu Abdullah Mohammad Ibn Musa al-Khawarizmi, considerado o fundador da algebra. O termo algoritmo tambem é utilizado em'); writeln('outras areas: Engenharia, administracao, etc.');

writeln; readkey; writeln;

writeln(' DEFINICAO: ');

writeln('-Um procedimento passo a passo para a solucao de um problema ou, uma sequencia detalhada de acoes a serem executadas para realizar alguma tarefa');

writeln; readkey; writeln;

writeln(' TIPOS DE ALGORITMOS: ');

writeln('-Linguagem natural: Problema em se representar algoritmo usando a linguagem natural é a ambiguidade');

writeln(' Por exemplo: A velhinha ouviu o barulho da janela.');

writeln(' Uma maquina seria incapaz de interpretar o que realmente esta acontecendo, a linguagem natural nao é adequada porque nao tem rigidez sintatica e semantica.'); writeln(' -Fluxograma: Os fluxogramas apresentam os algoritmos de forma graficas formas graficas sao (Caixas, elipses, losangos, setas)'); writeln(' Vantagens:O entendimento de elementos graficos é mais simples que o entendimento de textos, sem ambiguidade'); writeln('Desvantagens:é necessario aprender a simbologia dos fluxogramas. O algoritmo resultante nao apresenta muito detalhes, dificultando sua transcricao para um programa.');

writeln; readkey; writeln;

writeln(' -Pseudocodigo: Algoritmos podem ser representados em codigo diretamente em linguagem de programacao. Linguagens de programacao sao construidas utilizando palavras reservadas em inglês. Pseudocodigo tenta diminuir o onus da utilizacao');writeln(' da linguagem de programacao. Um pseudocodigo bastante conhecido no Brasil é o Portugol.'); writeln(' Exemplo: ');writeln;writeln(' Algoritmo Maior ');writeln(' var n1,n2,maior: inteiro; ');writeln(' inicio ');writeln(' leia(n1,n2);');writeln(' se(n1>n2) então ');writeln(' maior <- n1; ');writeln(' senao ');writeln(' maior <- n2; ');writeln(' escreva (maior); ');writeln(' fim ');

writeln; readkey; writeln;

writeln(' EXERCICIOS: ');writeln ('1-Defina o que é um algoritmo. ');writeln(' 2-Por que a linguagem natural nao é adequada para a construcao de algoritmos para computador? ');writeln(' 3-Quais as vantagens e desvantagens da utilizacao de fluxograma e de pseudocodigo na construcao de algoritmos? ');writeln(' 4-Elabore um algoritmo para a escolha e apresentacao do menor valor entre dois numeros distintos introduzidos pelo usuario. Apresente em fluxograma e pseudocodigo. ');writeln;

writeln; readkey; writeln;

writeln(' Espero ter ajudado. ');

writeln; readkey; writeln;writeln; writeln;writeln; writeln;

clrscr;

end;

procedure prog_comp;

Begin

writeln(' 2- Programacao de computadores ');

writeln; readkey; writeln;

writeln(' O QUE é UM PROGRAMA: ');writeln;writeln(' Um programa nada mais é que um tipo de algoritmo que pode possuir a linguagem de maquina, que é linguagem de baixo nivel, e a Linguagem de alto nivel que é mais proximas da linguagem natural. ');

writeln; readkey; writeln;

writeln(' -Linguagem da maquina: A linguagem de programacao que um computador é capaz de compreender é composta apenas de numeros, um conjunto de instrucoes que hardware do computador é capaz de executar. Cada instrucao é expressa por sequencias de bits. ');writeln;writeln(' Exemplo de instrucoes: ');writeln;writeln(' 00001 - carregar o acumulador ');writeln(' 00010 - armazenar no acumulador ');writeln(' 00100 - somar ao acumulador ');writeln(' 00101 - subtrair do acumulador ');

writeln; readkey; writeln;

writeln(' Na linguagem da maquina, o trabalho é muito tedioso e sujeito a erros. Para aliviar um pouco esses incomodos, os programas poderiam ser expressos em decimal. O programa ainda precisaria ser convertido automaticamente para binario.');

writeln; readkey; writeln;

writeln(' LINGUAGEM ASSEMBLY: ');writeln;writeln(' -A Linguagem de montagem ou linguagem assembly, expressa as instrucoes de maquina de forma mais clara. A operacao passou a ser expressa por mnemonicos (Enderecamento simbolico)');

writeln; readkey; writeln;

writeln(' Exemplo: ');writeln;writeln(' STZ soma ');writeln(' Leitura: READ numero ');writeln(' LD numero ');writeln(' LZ escrita ');writeln(' JN escrita ');writeln(' ADD soma ');writeln(' ST soma ');writeln(' JUMP leitura ');writeln(' Escrita: WRITE soma \');writeln(' STOP ');writeln(' Soma: CONST 0 ');writeln(' numero: CONST 0 ');

writeln; readkey; writeln;

writeln(' A implementacao de programas em assembly ainda é muito complexa e dependente do conhecimento das instrucoes do processador. A solucao encontrada foram as Linguagens de alto nivel.');writeln(' Que aumenta a produtividade dos programadores e a portabilidade dos programas ');

writeln; readkey; writeln;

writeln(' A LINGUAGEM FORTRAN: ');writeln;writeln(' -Em 1954 surgiu a primeira linguagem de propositos gerais para a solucao de problemas matematicos e cientificos, o FORTRAN (FORmula TRANslation). Nela toda a linguagem pode ser expressa em comandos. ');

writeln; readkey; writeln;

writeln(' Exemplo de Fortran: ');writeln('');writeln(' INTEGER Soma, Numero ');writeln(' Soma = 0 ');writeln(' 10 READ*, Numero ');writeln(' IF (Numero.LE.0) GOTO 20 ');writeln(' Soma = Soma + Numero ');writeln(' GOTO 10 ');writeln(' 20 WRITE*, Soma ');writeln(' STOP ');writeln(' END ');

writeln; readkey; writeln;

writeln(' Com o passar do tempo, linguagens mais bem estruturadas e mais poderosas foram surgindo, com diferentes paradigmas para se abordar um problema. ');writeln(' Exemplos: COBOL, ALGOL, BASIC, PASCAL, Modula-2, PL-1, C, C++, Java, C#, Delphy, LISP, PROLOG,etc. ');

writeln; readkey; writeln;

writeln(' Neste curso utilizaremos a linguagem de programacao C para ilustrar os principios de programacao aqui abordados. Importantes linguagens de décadas passadas estão caindo em desuso com o tempo, tais como: ALGOL,PASCAL, PL-1 e Modula-2 ');

writeln; readkey; writeln;

writeln(' Aqui temos um exemplo da linguagem a ser trabalhada, no caso, a linguagem C: ');writeln('');writeln(' #include <stdio.h> ');writeln(' void main ( ) ');writeln(' { ');writeln(' int soma, numero; ');writeln(' soma = 0; ');writeln(' numero = 1; ');writeln(' while (numero <= 0) ');writeln(' { ');writeln(' scanf("%.d", &numero); ');writeln(' soma = soma + numero; ');writeln(' } ');writeln(' printf ("A soma é: %.d", soma); ');writeln(' } ');

writeln; readkey; writeln;

writeln(' SISTEMAS OPERACIONAIS: ');writeln('');writeln(' -Sistemas operacionais constroem uma camada entre o hardware e sofware, facilitando a utilizacao dos recursos da maquina real (maquina virtual).');writeln(' Ele é responsavel pelo gerenciamento de recursos computacionais e tambem fornece uma interface de programacao para o desenvolvimento de software basico. ');

writeln; readkey; writeln;

writeln(' EXERCICIOS: ');writeln('');writeln(' 1-Diferencie um algoritmo de um programa. ');writeln(' 2-Explique como um programa é executado em um computador. ');writeln(' 3-Defina o que é uma linguagem de programacao de alto nivel e uma linguagem de programacao de baixo nivel. ');writeln(' 4-Dado um programa executavel em um sistema operacional, o que é preciso fazer para que tal programa possa ser utilizado em outro sistema operacional? ');

writeln; readkey; writeln;

writeln(' Espero ter ajudado. ');

writeln; readkey; writeln; writeln; writeln; writeln; writeln;

clrscr;

end;

var

x: integer;

Begin

x:=100;

writeln;

writeln(' Bem vindo ao curso de PI atraves de C. ');

writeln;

readkey; writeln;

writeln(' Neste curso pasaremos as nocoes de algoritmos e uma introducao a linguagem C com seus comandos.');

writeln; readkey; writeln;

writeln(' Este sera o menu que te guiara, apenas escolha a opcao digitando o numero que a precede entre parenteses. ');

writeln; readkey; writeln;

while (x<>0) do

begin

writeln(' Nesta versao de teste apenas as opções 1 e 2 estão acessiveis');

writeln; readkey; writeln;

writeln(' (1) Introducao aos Algoritmos (14) Recursividade ');writeln(' (2) Programacao de Computadores (15) Recursividade em C ');writeln(' (3) Manipulacao de dados (16) Vetores unidimensionais ');writeln(' (4) Manipulacao de dados em C (17) Vetores unidimensionais em C ');writeln(' (5) Comandos de condicao (18) Vetores bidimensionais ');writeln(' (6) Comandos de condicao em C (19) Vetores bidimensionais em C ');writeln(' (7) Comandos de repeticao (20) Registros ');writeln(' (8) Comandos de repeticao 2 (21) Tipos estruturados em C ');writeln(' (9) Comandos de repeticao em C (22) Compondo Registros e Vetores ');writeln('(10) Modularizacao de algoritmos (23) Arquivos ');writeln('(11) Modularizacao de algo/ em C (24) Creditos ');writeln('(12) Passagem de parametros ');writeln('(13) Passagem de parametros em C (0) SAIR ');

writeln(' Sobre o que deseja saber?'); writeln;

readln(x);

writeln; writeln; writeln; writeln; writeln;

case x of

1: int_algo;

2: prog_comp;

0:begin

writeln(' Ate logo =D '); writeln;

readkey; writeln; writeln; writeln; writeln; writeln;

end;

else

writeln(' O valor digitado nao corresponde a nada '); writeln;

readkey; writeln;writeln;writeln;writeln;writeln;

end;

end;

end.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Ae galera to com um probleminha.

to fzendo um programa em pascal estilo apostila interativa mas so que

ele tem q ser rodado no turbo e acaba ficando muito grande pra rodar nele

queria saber como fazer para as funcoes virarem arquivos acessados atraves de um programa principal

[...]

lembrando... quero saber como chamar arquivos de um programa principal para que eles simplesmente escrevam e depois voltem ao menu do programa principal

Olá,

Ranair, achei bem interessante esse programa... ^_^

Pelo que eu entendi você que colocar os textos dentro de arquivos de texto separados do código.

Tem 4 formas (existem infinitas, vou só demonstrar 3)

  1. Usando 1 arquivo de texto com todo o conteúdo
  2. Usando 1 arquivo de texto para cada tópico
  3. Usando 1 arquivo binário para todo o conteúdo
  4. Usando 1 arquivo binário para cada tópico

Cada forma tem suas características.

Vou separar por "tipos de arquivo"

ARQUIVOS DE TEXTO

Aqui você tem a vantagem de ter um conteúdo legível ao ser humano, ou seja, o texto pode ser visualizado no NotePad (bloco de notas) por exemplo, mas não possibilita a "indexação" das linhas, ou seja, para acessar determinada linha, você terá que ir pulando linha por linha até chegar.

Como é um arquivo de texto comum, pode ser editado por qualquer programa editor de texto.

Usar a opção 1 ou 2 está mais relacionando na dificuldade da implementação, pois para posicionar no lugar certo terá que ser criado uma lógica, como um marcador... ser lá.

É mais prático usar o a opção 2.

ARQUIVO BINÁRIO

Não é legível e não possibilita a edição*, mas deixa o arquivo indexado, possibilitando acessar determina linha bastando somente usando um comando de posicionamento (seek()).

O mais normal seria usar um arquivo só, mas poderia ser vários, tipo, se cada parte fosse editada por um programado diferente? (não vamos entrar em detalhes)

Nesse modelo facilitaria por exemplo caso você (futuramente) quisesse implementar um programa com "barra de rolagem", tipo se apertar pra cima, o texto volta, e pra baixo o texto anda!!! (dá pra fazer isso!!! - Já fica como uma ideia).

* = Poderia editar ser por exemplo com programas com editores hexadecimais.

***

Cada um tem suas vantagens e desvantagens. Escolher um ou outro vai depender dos seus critérios... (como se quer editar ou não; dificuldades na implementação; proteger o conteúdo para somente ler no arquivo ou não.. etc).

Enfim, eu sugiro a fazer usando um arquivo de texto para cada tópico. Assim é só praticamente abrir e mandar imprimir...

***

COMANDO PARA MANIPULAÇÃO DE ARQUIVOS DE TEXTO

Eu criei uns procedimentos para facilitar o processo... ele são auto explicativos...


* PROCEDIMENTOS DE GERENCIAMNETO DE ARQUIVOS *
**********************************************)

{ *** Retorna uma string com o texto correspondente a alguns códigos de erro ***}
function traduzirErro(code:integer):string;
var
msn: string;
begin
msn:=' Erro nÆo esperado';
case code of
0 : msn:=' OPERACAO REALIZADA COM SUCESSO!!!';
1 : msn:=' Erro 1: NOME DE FUNÇÃO INVÁLIDO';
2 : msn:=' Erro 2: ARQUIVO NÃO ENCONTRADO [*]';
3 : msn:=' Erro 3: CAMINHO DO DIRETÓRIO NÃO ENCONTRADO';
4 : msn:=' Erro 4: EXCESSO DE ARQUIVOS ABERTOS';
5 : msn:=' Erro 5: FALHA NO ACESSO AO ARQUIVO';
24 : msn:=' Erro 24: File components may not be files or objects';
101 : msn:=' Erro 101: ERRO NA GRAVAÇÃO DO ARQUIVO';
102 : msn:=' Erro 102: ARQUIVO NÃO ASSINALADO';
103 : msn:=' Erro 103: (PROVALMENTE) ARQUIVO NÃO ENCONTRADO';
104 : msn:=' Erro 104: AQRUIVO NÃO ENCONTRADO';
105 : msn:=' Erro 105: ARQUIVO ABERTO COMO NÃO GRAVÁVEL';
150 : msn:=' Erro 150: DISCO PROTEGIDO';
152 : msn:=' Erro 152: ERRO DE DRIVE DE DISCO';
end;{case cod}
traduzirErro:=msn;
end;

{ *** Associa o arquivo ao caminho dele ***}
procedure assinalarArquivo(var arq:text; caminho:string);
begin
Assign(arq,caminho); {assinala o arquivo com o caminho}
end;

{*** tenta abrir um arquivo (tem que está previamente assinalado)}
function abrirArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Reset(arq); {tenta abrir o arquivo}
abrirArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

{ *** tenta finalizar a conexão com o arquivo de texto ***}
function fecharArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Close(arq); {tenta fechar o arquivo}
fecharArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

function lerProxLinhaText(var arq:text; var linha:string):integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
readln(arq,linha);
lerProxLinhaText:=IOResult;
{$I+} {reabilita travamento caso der erro}
end;

function fimDoArquivo(var arq:text; var code:integer):boolean;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
fimDoArquivo:=EOF(arq);
code:=IOResult;
{$I+} {reabilita travamento caso der erro}
end;
(**********************************************

Os que lembro no momento são estes...

Exemplo de programa que ler um arquivo de texto

(Crie um arquivo chamado "teste.txt" na mesma pasta de onde tiver o executável gerado, geralmente na mesma pasta do arquivo ".pas")


uses
CRT;
(**********************************************
* PROCEDIMENTOS DE GERENCIAMNETO DE ARQUIVOS *
**********************************************)

{ *** Retorna uma string com o texto correspondente a alguns códigos de erro ***}
function traduzirErro(code:integer):string;
var
msn: string;
begin
msn:=' Erro nÆo esperado';
case code of
0 : msn:=' OPERACAO REALIZADA COM SUCESSO!!!';
1 : msn:=' Erro 1: NOME DE FUNÇÃO INVÁLIDO';
2 : msn:=' Erro 2: ARQUIVO NÃO ENCONTRADO [*]';
3 : msn:=' Erro 3: CAMINHO DO DIRETÓRIO NÃO ENCONTRADO';
4 : msn:=' Erro 4: EXCESSO DE ARQUIVOS ABERTOS';
5 : msn:=' Erro 5: FALHA NO ACESSO AO ARQUIVO';
24 : msn:=' Erro 24: File components may not be files or objects';
101 : msn:=' Erro 101: ERRO NA GRAVAÇÃO DO ARQUIVO';
102 : msn:=' Erro 102: ARQUIVO NÃO ASSINALADO';
103 : msn:=' Erro 103: (PROVALMENTE) ARQUIVO NÃO ENCONTRADO';
104 : msn:=' Erro 104: AQRUIVO NÃO ENCONTRADO';
105 : msn:=' Erro 105: ARQUIVO ABERTO COMO NÃO GRAVÁVEL';
150 : msn:=' Erro 150: DISCO PROTEGIDO';
152 : msn:=' Erro 152: ERRO DE DRIVE DE DISCO';
end;{case cod}
traduzirErro:=msn;
end;

{ *** Associa o arquivo ao caminho dele ***}
procedure assinalarArquivo(var arq:text; caminho:string);
begin
Assign(arq,caminho); {assinala o arquivo com o caminho}
end;

{*** tenta abrir um arquivo (tem que está previamente assinalado)}
function abrirArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Reset(arq); {tenta abrir o arquivo}
abrirArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

{ *** tenta finalizar a conexão com o arquivo de texto ***}
function fecharArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Close(arq); {tenta fechar o arquivo}
fecharArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

function lerProxLinhaText(var arq:text; var linha:string):integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
readln(arq,linha);
lerProxLinhaText:=IOResult;
{$I+} {reabilita travamento caso der erro}
end;

function fimDoArquivo(var arq:text; var code:integer):boolean;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
fimDoArquivo:=EOF(arq);
code:=IOResult;
{$I+} {reabilita travamento caso der erro}
end;

var
arq :text; {arquivo associado ao arquivo de texto}
code :integer; {codigo de erro}
linha :string;
qtd :byte; {contador de linhas}
BEGIN
assinalarArquivo(arq,'teste.txt'); {assinala o arquivo}
writeln(traduzirErro(abrirArquivo(arq))); {tenta abrir o arquivo}

while not FimDoArquivo(arq,code) do {eof() = fim do arquivo}
begin
lerProxLinhaText(arq,linha);{tenta ler a proxima linha}
writeln(linha);
inc(qtd); {incrementa em 1}
if qtd>=20 then
begin
ReadKey;
qtd:=0;
end;
end;
writeln(traduzirErro(code)); {para o while}

ReadKey;
END.
program testeLeituraArquivoDeTexto;

Tente ai adaptar no seu programa...

Se precisar de ajuda em alguma coisa é só falar.

PS: Tenho alguns dicas e sugestões para esse programa. Se você topar estou disposto a criar alguns módulos com você, como

Hoje pela manha eu fiz algumas modificações no seu código... Comecei a implementar algumas coisas que vinha na cabeça.. ^_^

Tem algumas coias interessantes, como somente ler número válidos; mensagem ao dar cada "pause"; mas ainda falta o principal... ler os arquivos, rs

Veja, pode ter alguma coisa que você pode reaproveitar.


uses
crt;

const {código ASCII de Teclas}
F1=#59; F2=#60; F3=#61; F4=#62; F5=#63; F6=#64;
F7=#65; F8=#66; F9=#67; F10=#68; F11=#69; F12=#70;
ENTER=#13; ENTER_NUM=#0; ESC=#27; BACKSPACE=#8; TABE =#9; ESPACO=' ';
SetaCima=#72; SetaBaixo=#80; SeteEsqueda=#75; SetaDireita=#77;

const
cor_atencao = yellow; {amarelo}
cor_texto = white; {branco (mais forte)}
cor_fundo = black; {preto}

const
caminhoIntro = '1 introducao.txt';
caminhoCap1 = '2 capitulo1.txt';

{ *** Da um pause no programa ***}
procedure pause;
begin
WriteLn;
TextAttr:=TextAttr+Blink; {faz o texto piscar}
Write('Precione qualquer tecla para continuar');
TextAttr:=TextAttr-Blink; {faz o texto parar de piscar}
ReadKey;
end;

{ *** Da um pause no programa e limpa depois ***}
procedure pauseClr;
begin
pause;
ClrScr;
end;

{ *** Converte uma String em Integer ***}
function StringToInt(str:string):integer;
var
num_conv :integer;
code :integer; {código de erro}
begin
Val(str,num_conv,code); {converte em integer}
if code<>0 then {cado dê erro na conversão}
StringToInt:=-1
else {caso seja 0, então deu certo}
StringToInt:=num_conv;
end;

{ *** Limpa uma linha especifica ***}
procedure LimparLinha(x, y: byte);
begin
GotoXY(x,y); clreol;
GotoXY(x,y);
end;

procedure lerByte(var numero:byte);
var
tecla :char; {tecla digitada}
str :string; {concatenação das teclas em string}
code :integer;
begin
str:=''; {limpa a variável}
repeat
tecla:=ReadKey;
if tecla in ['0'..'9'] then
begin
str:=str+tecla; {concatena o caractere}
write(tecla);
end
else
if (tecla=BACKSPACE) and (Length(str)>0) then
begin
Delete(str,Length(str),1); {apaga o último caractere}
GotoXY(WhereX-1,WhereY); {coluna anterior}
write(' '); {apaga}
GotoXY(WhereX-1,WhereY); {coluna anterior}
end
else
if ((tecla=ENTER) or (tecla=ENTER_NUM)) and (Length(str)>0) then
begin
if tecla=ENTER_NUM then
ReadKey; {o Enter numérico precisa para não dar bug [Simon Viegas]}
if str<='255' then {se for um número válido}
begin
Val(str,numero,code);
break {interrompe o laço}
end
else {se não for válido}
begin
GotoXY(WhereX-Length(str),WhereY); {posiciona ao lado da msg}
ClrEol; {apaga a partir do cursor}
str:='';
end;
end;
until false; {loop infinito}


end;

{ *** ler um Byte numa determinada faixa ***}
function lerByteFaixa(inicio, fim:byte):byte;
var
numero_str :string; {numero lido como string} //para evitar travamento
numero :byte;
X,Y :byte; {coordenadas X e Y da tela}
begin
repeat
X:=WhereX; {copia a linha atual}
lerByte(numero);
if not (numero in [inicio..fim]) then {se número inválido}
begin
GotoXY(X,WhereY); {coluna X da linha atual}
ClrEol; {apaga a linha a partir da posição do cursor}
end
else {senão o número é válido}
break; {sai do laço}
until false; {loop infinito}
lerByteFaixa:=numero;
end;

{ *** imprime texto colorido - nao desce a linha ***}
procedure WritePic (cor:byte; texto:String);
var
textAttrOld :word; {atributos de texto atual}
begin
textAttrOld:=textAttr; {copia dos atributos de texto atual}
textColor(cor);
write(texto);
textAttr:=textAttrOld; {reconfigura os atributos de texto}
end;

{ *** Imprime texto colorido - desce a linha *** }
procedure WriteLNPic (cor:byte; texto:String);
begin
writePic(cor,texto);
writeln;
end;

procedure int_algo;
begin
ClrScr;
writeln(' 1-Introducao aos algoritmos');
//carregarArquivo(introducao);
pauseClr;
end;

procedure prog_comp;
begin
ClrScr;
writeln(' 2- Programacao de computadores ');
//carregarArquivo(capitulo1);
pauseClr;
end;

function menu:byte;
begin
TextColor(cor_atencao);
writeln(' (1) Introducao aos Algoritmos (14) Recursividade ');
writeln(' (2) Programacao de Computadores (15) Recursividade em C ');
writeln(' (3) Manipulacao de dados (16) Vetores unidimensionais ');
writeln(' (4) Manipulacao de dados em C (17) Vetores unidimensionais em C ');
writeln(' (5) Comandos de condicao (18) Vetores bidimensionais ');
writeln(' (6) Comandos de condicao em C (19) Vetores bidimensionais em C ');
writeln(' (7) Comandos de repeticao (20) Registros ');
writeln(' (8) Comandos de repeticao 2 (21) Tipos estruturados em C ');
writeln(' (9) Comandos de repeticao em C (22) Compondo Registros e Vetores ');
writeln('(10) Modularizacao de algoritmos (23) Arquivos ');
writeln('(11) Modularizacao de algo/ em C (24) Creditos ');
writeln('(12) Passagem de parametros ');
writeln('(13) Passagem de parametros em C (0) SAIR ');
TextColor(cor_texto);
writeln;
writeln(' Sobre o que deseja saber?');
write(' => '); menu:=LerByteFaixa(0,24);
end;


(**********************************************
* PROCEDIMENTOS DE GERENCIAMNETO DE ARQUIVOS *
**********************************************)

{ *** Retorna uma string com o texto correspondente a alguns códigos de erro ***}
function traduzirErro(code:integer):string;
var
msn: string;
begin
msn:=' Erro nÆo esperado';
case code of
{0 : msn:=' OPERACAO REALIZADA COM SUCESSO!!!';}
0 : msn:='';
1 : msn:=' Erro 1: NOME DE FUNÇÃO INVÁLIDO';
2 : msn:=' Erro 2: ARQUIVO NÃO ENCONTRADO [*]';
3 : msn:=' Erro 3: CAMINHO DO DIRETÓRIO NÃO ENCONTRADO';
4 : msn:=' Erro 4: EXCESSO DE ARQUIVOS ABERTOS';
5 : msn:=' Erro 5: FALHA NO ACESSO AO ARQUIVO';
24 : msn:=' Erro 24: File components may not be files or objects';
101 : msn:=' Erro 101: ERRO NA GRAVAÇÃO DO ARQUIVO';
102 : msn:=' Erro 102: ARQUIVO NÃO ASSINALADO';
103 : msn:=' Erro 103: (PROVALMENTE) ARQUIVO NÃO ENCONTRADO';
104 : msn:=' Erro 104: AQRUIVO NÃO ENCONTRADO';
105 : msn:=' Erro 105: ARQUIVO ABERTO COMO NÃO GRAVÁVEL';
150 : msn:=' Erro 150: DISCO PROTEGIDO';
152 : msn:=' Erro 152: ERRO DE DRIVE DE DISCO';
end;{case cod}
traduzirErro:=msn;
end;

{ *** Associa o arquivo ao caminho dele ***}
procedure assinalarArquivo(var arq:text; caminho:string);
begin
Assign(arq,caminho); {assinala o arquivo com o caminho}
end;

{*** tenta abrir um arquivo (tem que está previamente assinalado)}
function abrirArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Reset(arq); {tenta abrir o arquivo}
abrirArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

{ *** tenta finalizar a conexão com o arquivo de texto ***}
function fecharArquivo(var arq:text):integer;
var
codRespIO :integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
Close(arq); {tenta fechar o arquivo}
fecharArquivo:=IOResult; {retorna o código do resultado}
{$I+} {reabilita travamento caso der erro}
end;

function lerProxLinhaText(var arq:text; linha:string):integer;
begin
{$I-} {desabilita travamento (fecha) caso der erro no processo}
readln(arq,linha);
lerProxLinhaText:=IOResult;
{$I+} {reabilita travamento caso der erro}
end;

VAR
arqIntro,
arqCap1,
arqCap2 :text;

procedure INICIALIZACAO;
var
code:integer;
begin
TextColor(cor_texto); {cor do texto}
TextBackGround(black); {cor do fundo em preto}
ClrScr; {limpa a tela}

assinalarArquivo(arqIntro,caminhoIntro);
writeln(traduzirErro(abrirArquivo(arqIntro)));

assinalarArquivo(arqCap1,caminhoCap1);
writeln(traduzirErro(abrirArquivo(arqCap1)));
end;

BEGIN
INICIALIZACAO;

writeln;
writeln(' Bem vindo ao curso de PI atraves de C. '); {o que significa "PI" ???}
writeln;
pauseClr;
writeln;
writeln(' Neste curso pasaremos as nocoes de algoritmos e uma introducao a linguagem C com seus comandos.');
writeln;
writeln(' Este sera o menu que te guiara, apenas escolha a opcao digitando o numero que a precede entre parenteses. ');
pauseClr;
writeln;
repeat
WriteLNPic(10,' Nesta versao de teste apenas as opções 1 e 2 estão acessiveis');
writeln;
case menu of
1 : int_algo;
2 : prog_comp;
0 : begin
writeln;
writeln;
WriteLNPic(yellow,' Ate logo =D ');
pause;
exit; {sai do programa}
end;
else
writeln;
writeln('Em contrução');
pauseClr;
end; {fim case}
until false; {loop infinito}
END.
Program Aprendendo_C;

Qualquer é só postar

Abraços

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!