Boas, hoje vou ensinar-vos a programar em Pascal.
No final deste tutorial vais adquirir conhecimentos intermédios e vais saber como fazer um programa em Pascal.
Bem, existem diversos programas mas o que eu acho mais adequado para começar a programar é o Pascal Zim, por isso vamos lá começar!
Nota- Em todos os ensinamentos práticos, antes de avançarem para o próximo passo, testem sempre varias vezes no vosso programa. Quando se sentirem confiantes com esse ensinamento, passem para o próximo passo.
No final deste tutorial vais adquirir conhecimentos intermédios e vais saber como fazer um programa em Pascal.
Bem, existem diversos programas mas o que eu acho mais adequado para começar a programar é o Pascal Zim, por isso vamos lá começar!
Nota- Em todos os ensinamentos práticos, antes de avançarem para o próximo passo, testem sempre varias vezes no vosso programa. Quando se sentirem confiantes com esse ensinamento, passem para o próximo passo.
Download e Instalação
- Ver:
Para fazer download cliquem no botão acima e a seguir cliquem em "download".
De seguida extraiam o ficheiro "Pzim.zip" e iniciem o ficheiro "Pzim.exe".
E já têm o programa a funcionar no vosso computador, foi fácil, não foi?
Noções básicas
- Ver:
- O programa em si
Assim que se abre o programa já vem com 3 linhas de códigos e vou explicar o que significa.
As linhas que vêm no programa são:
- Código:
Program Pzim;
Begin
End.
A primeira linha, o Program Pzim; é o nome do programa, que neste caso é Pzim.
O Begin serve para indicar o inicio do programa.
O End serve para indicar o fim do programa.
Entre o Begin e o End é onde vamos programar.
E entre o Program e o Begin é onde vamos por as variáveis.
Para executar o código basta clicar em F9 ou então clicar no ícone que está assinalado na imagem abaixo.Instruções de escrita
Para se escrever texto utiliza-se o comando Write('Texto aqui'); ou Writeln('Texto aqui');
O comando Writeln('Texto aqui'); faz com que no texto a seguir mude de linha e se usarmos o Write('Texto aqui') o texto a seguir será apresentado à frente do texto anterior.
Se quisermos fazer um paragrafo, ou seja, deixar uma linha de espaço, utilizamos o código Writeln();
Codigo de exemplo:
- Código:
Program Exemplo ;
Begin
Write('Teste');
Writeln('Teste1');
Writeln();
Write('Teste2');
End.
Resultado:
Como repararam, a palavra "Teste" ficou junta da palavra "Teste1", pois usámos apenas o Write.
Depois usei o Writeln(); para fazer um paragrafo.
Suponhamos que eu escrevesse um Write à seguir ao Write('Teste2'); , o que acham que ia acontecer ao novo Write, ia ficar na mesma linha ou não?
Ia ficar na mesma linha pois antes utilizamos um Write.
Se já perceberam bem esta parte podem passar para o próximo ensinamento, senão, como disse antes, testem varias vezes no vosso programa para tentarem perceber. Se mesmo assim não perceberem podem pedir-me ajuda na zona dos comentários.Fazer comentários ao código
Isto é bastante útil quando temos várias linhas de código e fazemos estes comentários para não perdemos tempo a ler novamente o código todo.
Existem duas maneiras:
-Se quisermos fazer um comentário com apenas uma linha usamos "//" e à frente escrevesse o comentário.
-Se o comentário conter mais do que uma linha usamos "{" para iniciar o comentário e "}" para fecha-lo.
Exemplo:Tipos de variaveis
Basicamente as variáveis vão servir para lhe atribuirmos valores. Têm a lista em baixo.
Integer- Utiliza-se para armazenar números inteiros.
Real - Utiliza-se para armazenar números decimais.
Char - Utiliza-se para armazenar apenas um caracter.
String - Utiliza-se para armazenar texto.
Boolean - Utiliza-se para armazenar apenas valores de "True" ou "False".Operadores
Aqui estão alguns operadores que podem usar e vão ser bastante úteis em programação.
Operadores aritméticos:Operador Significado + Adição - Subtração * Multiplicação / Divisão decimal DIV Divisão inteira MOD Resto da divisão inteira
Operadores relacionais ou comparativos:Operador Significado = Igualdade < Menor que > Maior que <= Menor ou igual que >= Maior ou igual que <> Diferente de IN Incluido em
Operadores lógicos:Operador Significado NOT Negação AND Conjunção OR Disjunção Criação de variáveis
Para criar variáveis é muito simples, basta escrever "Var nomedavariavel : integer;", por exemplo, entre o Program e o Begin.
Exemplo:
No exemplo em cima declarámos duas variáveis do tipo string (texto), uma do tipo integer (números inteiros) e uma do tipo real (números decimais).Instruções de leitura
Para se fazer a leitura, ou seja, permitir que o utilizador escreva algo durante a execução de um programa utiliza-se o seguinte código:
Read();
Readln();
ReadKey();
A diferença entre o Read e o Readln é igual à diferença entre o Write e o Writeln. Isto é, quando se usa o Read(); o cursor permanece na mesma linha e quando se usa o Readln(); o cursor muda de linha.
O Readkey(); pode servir para armazenar apenas um caracter, ou então para fazer o programa parar e esperar que o utilizador clique algum botão para o código prosseguir.Armazenar valores em variáveis
Podemos armazenar valores utilizando código, ou então podemos pedir ao utilizador para introduzir valores.
Código de exemplo:
- Código:
Program Exemplo ;
var exemplo, exemplo1:string;
Begin
exemplo :=('Texto');
Readln(exemplo1);
Writeln();
Writeln(exemplo);
Writeln();
Writeln(exemplo1);
End.
No código acima, temos exemplo :=('Texto'); que atribui à variável "exemplo" o texto "Texto". A seguir temos um Readln(exemplo); que faz com que o programa fique à espera da introdução de texto e assim que clicamos Enter, o programa armazena o texto na variável "exemplo1".
Depois temos um Writeln(exemplo); que vai escrever no ecrã o texto que temos na variável "exemplo" e o Writeln(exemplo1); que faz a mesma coisa que o anterior, escreve no ecrã o texto que temos na variável "exemplo1".
Os Writeln(); servem para fazer um paragrafo.
Não esquecer que todas as variáveis devem ser escritas entre o Program e o Begin, como eu tenho no código acima.Outros aspectos interessantes
Em pascal não existe distinção de maiúsculas e minúsculas. Podemos declarar uma variável com o nome "EXEMPLO" e em baixo escreve-la assim,"Exemplo" ou mesmo assim, "eXemPlO". Existem outras linguagens de programação que isto já não é possível.
Esta linguagem de programação não é "case sensitive" (quando clicamos numa tecla não aparece todas as palavras por aquela letra especifica), ao contrario de diversas linguagens de programação.
Ciclos
- Ver:
- If...Then...Else
Utiliza-se da seguinte forma:
If (condição)
then (instrução/ões)
else (instrução/ões)
Código de exemplo:
- Código:
Program Exemplo ;
var resultado :integer;
Begin
Write('Quanto é 5 + 5?: ');
Read(resultado);
If resultado = 10 then
Begin
Writeln('A resposta está correta!');
Writeln;
Writeln('Clique qualquer tecla para sair');
End
else
Writeln('A resposta está errada');
End.
No código acima faço uma pergunta através do Write('Quanto é 5 + 5?: '); e meti um Read(resultado); para armazenar o valor na variável "resultado".
A seguir meti If resultado = 10 para o programa verificar se a minha resposta foi igual a 10, se for, vai para o then .A seguir meti um Begin porque contenho mais do que uma instrução, se apenas tivesse uma instrução (um Writeln, por exemplo) não era preciso. O programa faz aqueles Writeln todos e depois o programa encerra.
Caso a minha resposta não fosse 10 o programa iria saltar logo para o else e iria dizer que a resposta estava errada.
Tal como antes, se tivesse mais do que uma instrução à frente do else, era também necessário meter um Begin e um End;.
Programa em execução:Case...Of
Utiliza-se da seguinte forma:
Case (variavel) of
(valor1) : (instrução1)
(valor2) : (instrução2)
...
(valorN) : (instrução3)
else :(instruçãoX);
Código de exemplo:
- Código:
Program Exemplo ;
var numero1, numero2 :real;
opcao :char;
Begin
Write('Introduza dois numeros: ');
Readln(numero1, numero2);
Writeln();
Writeln('Escolha uma opção: ');
Writeln('A - Adição | S - Subtração | M - Multiplicação | D - Divisão');
opcao := Readkey();
CLRSCR;
Case opcao of
'A', 'a' : Writeln ('A soma é de ', numero1 + numero2);
'S', 's' : Writeln ('A subtração é de ', numero1 - numero2);
'M', 'm' : Writeln ('A multiplicação é de ', numero1 * numero2);
'D', 'd' : Writeln ('A divisão é de ', numero1 / numero2);
else
Writeln('Letra invalida')
End;
End.
A parte dos Writeln e dos Readln não vou explicar porque já devem saber.
Na linha em que temos opcao := Readkey(); o que eu faço é dizer que a variável "opcao" que vai ficar com a letra que clicar-mos.
O CLRSCR; significa "Clear Screen", ou seja, apaga tudo o que está no ecrã.
Depois temos o Case...Of. Basicamente lê-se assim:
Caso (a variavel) opcao for
"A" ou "a" então faz X instrução senão...
"S" ou "s" então faz Y instrução senão...
...
Se nenhuma opção de cima for verdade então (else)
executa a instrução Z
End; e aqui fecha-se o ciclo Case.
Programa em execução:Repeat...Until
Utiliza-se da seguinte forma:
Repeat
(instrução/ções)
Until (condição)
Código de exemplo:
- Código:
Program Exemplo ;
var resposta :real;
Begin
Repeat
Write('Quanto é que é 10 + 10?: ');
Readln(resposta);
if resposta <> 20 then
Writeln('Resposta errada');
Writeln();
until resposta = 20;
Writeln('Resposta correcta');
End.
O Repeat faz com que o código que está metido nele seja sempre repetido até que a condição depois do Until seja verdadeira.
Como exercício podem tentar descobrir o que o resto do código faz. Se tiverem alguma duvida perguntem-me nos comentários.
Programa em execução:While...Do
Utiliza-se da seguinte forma:
While (condição) do
(bloco de instruções)
Este ciclo lê-se desta forma:
Enquanto que... (condição) ...fazer...
(Bloco de instruções)
Codigo de exemplo:
- Código:
Program Exemplo ;
var resposta :integer;
Begin
Write('Introduza a sua idade: ');
Readln(resposta);
While resposta < 18 do
Begin
Writeln('Acesso negado');
Readkey();
CLRSCR;
Write('Introduza a sua idade: ');
Readln(resposta);
End;
Writeln();
Writeln('Acesso concebido');
End.
O While funciona mais ou menos como o Repeat, pois enquanto que a condição (entre o While e o Do) não seja verdadeira, o programa não acaba e ficará a repetir o código que nele está contido.
O Readkey(); que está entre o Writeln('Acesso negado'); e o CLRSCR; serve para que o programa pare naquele ponto até que o utilizador clique em qualquer tecla. Se não metesse-mos aquele Readkey(); não havia tempo para ler o Writeln('Acesso negado');. Podem testar isso no vosso programa.
Programa em execução:For...To...Do
Utiliza-se assim:
For (variavel) :=1 to (varivel/numero) do
begin
(bloco de instruções);
end;
Codigo de exemplo:
- Código:
Program Exemplo ;
var i, n :integer;
Begin
Write('Até que numero quer fazer a contagem?: ');
Readln(n);
Writeln();
for i:= 1 To n do
begin
Writeln(i);
end;
End.
No programa acima fazemos uma contagem. O ciclo For...To...Do vai ser repetido o numero de vezes que tiver a variável n.
No começo deste ciclo tenho a variável i a ser igualada ao numero da repetição. Por exemplo, na primeira repetição o i vai ser igualado a 1, na segunda repetição o i vai ser igualado a 2 e assim sucessivamente até chegar ao numero depois do To. Por isso é que faço o Writeln(i); para ir escrevendo os números todos.
Se quiserem podem por um Readkey(); depois do Writeln(i); para verem o programa a escrever os números um a um.
Programa em execução:
Sub-Programas
- Ver:
- Procedimentos
Os procedimentos são bastante úteis para organizar o código e também no caso de ter que se usar o mesmo código varias vezes.
Estes vêm sempre depois das variáveis e o programa principal fica depois de todos os procedimentos.
Quando temos um programa com procedimentos começamos sempre por ler o programa principal primeiro e só depois quando os procedimentos são chamados é o programa executa o código que se encontra no procedimento.
O nome que se dá ao que está entre parêntesis, à frente do nome do procedimento, é de parâmetro.
Código de exemplo:
- Código:
Program Pzim ;
var D, M, n1, n2: real;
resposta: char;
Procedure Divisao (Dn1,Dn2:real);
Begin
D:= Dn1 / Dn2;
Writeln(Dn1,' / ', Dn2,'= ', D);
End;
Procedure Multiplicacao(Mn1,Mn2:real);
Begin
M:= Mn1 * Mn2;
Writeln(Mn1,' * ', Mn2,'= ', M);
End;
Begin
Write('Introduza um numero: ');
Readln(n1);
Writeln();
Write('Introduza outro numero: ');
Readln(n2);
CLRSCR;
Write('Pretende fazer a Divisão(D) ou Multiplicação(M)?: ');
Readln(resposta);
Writeln();
Writeln();
If (resposta = 'D') OR (resposta = 'd') then
Divisao (n1,n2)
Else
Begin
If (resposta = 'M') OR (resposta = 'm') then
Begin
Multiplicacao(n1,n2);
End
Else
Writeln('Introduziu um caracter invalido');
End;
End.
No programa principal eu peço a introdução de dois números e depois faço um "Clear Screen". A seguir pergunto se o utilizador quer fazer uma divisão ou uma multiplicação, depois armazeno na variável resposta e faço dois parágrafos.
De seguida faço um If para o programa verificar se a variável resposta é igual a "D" ou a "d", se for, vai executar o procedimento chamado "Divisão", se não for, vai para o Else e vai iniciar outro If para verificar se a resposta foi "M" ou "m". Se for, vai executar o procedimento "Multiplicação", se não for, vai apenas fazer um Writeln.
Agora explicando a parte dos procedimentos.
Primeiro vamos falar vou falar do procedimento "Divisão"[/i].
Na linha 28, escrevi Divisão(n1, n2) e meti as variáveis "n1" e "n2" para que os valores que estão nessas variáveis passem para as variáveis que estão entre parêntesis mais acima no procedimento (na linha 4).
Agora, o programa da linha 28 "salta" para a linha 4.
Entre parêntesis eu declarei duas variáveis como real e são essas duas variáveis que ficam com o valor das variáveis "n1" e "n2". Dentro desse procedimento faz a divisão e a seguir faz um Writeln. Sempre que num Writeln se quer juntar texto com variáveis, devemos separar com virgulas, como eu fiz em cima.
Depois, no Procedure Multiplicacao(Mn1,Mn2:real); é a mesma coisa.
Programa em execução:Funções
Funções é a mesma coisa que os procedimentos, com uma pequena diferença, tem que obrigatoriamente retornar um valor.
Código de exemplo:
- Código:
Program Pzim ;
var n1, n2: real;
resposta: char;
Function Divisao (Dn1,Dn2:real): real;
Begin
Divisao:= Dn1 / Dn2;
End;
Function Multiplicacao(Mn1,Mn2:real) :real;
Begin
Multiplicacao:= Mn1 * Mn2;
End;
Begin
Write('Introduza um numero: ');
Readln(n1);
Writeln();
Write('Introduza outro numero: ');
Readln(n2);
CLRSCR;
Write('Pretende fazer a Divisão(D) ou Multiplicação(M)?: ');
Readln(resposta);
Writeln();
Writeln();
If (resposta = 'D') OR (resposta = 'd') then
Writeln(n1,' / ', n2,'= ', Divisao(n1,n2))
Else
Begin
If (resposta = 'M') OR (resposta = 'm') then
Writeln(n1,' / ', n2,'= ', Multiplicacao(n1,n2))
Else
Writeln('Introduziu um caracter invalido');
End;
End.
Como devem ter reparado, houve diferenças nos If e na função. Neste código tenho Function Divisao (Dn1,Dn2:real): real; em que "Divisão" passa a ver uma variável do tipo real e é a essa variável que no programa principal vai ter o resultado.
Nos If enquanto se executa os Writeln chama-se ao mesmo tempo as funções e escreve no ecrã o resultado.
Exemplo de um programa-Jogo do galo
- Ver:
- Código:
Program Pzim ;
var J1, J2, count, validacao, i: integer;
J1Nome, J2Nome, vencedor :string;
posicao:array[1..9] of string;
procedure Quadrado;
Begin
GotoXY(35, 5);
TextBackground(White);
TextColor(Cyan);
Writeln('JOGO DO GALO');
TextBackground(Black);
TextColor(LightGreen);
//Primeira vertical
GotoXY(30, 8);
Writeln('|');
GotoXY(30, 9);
Writeln('|');
GotoXY(30, 11);
Writeln('|');
GotoXY(30, 12);
Writeln('|');
GotoXY(30, 14);
Writeln('|');
GotoXY(30, 15);
Writeln('|');
//Primeira horizonral
GotoXY(31, 7);
Writeln('------');
GotoXY(38, 7);
Writeln('------');
GotoXY(45, 7);
Writeln('------');
//Segunda vertical
GotoXY(37, 8);
Writeln('|');
GotoXY(37, 9);
Writeln('|');
GotoXY(37, 11);
Writeln('|');
GotoXY(37, 12);
Writeln('|');
GotoXY(37, 14);
Writeln('|');
GotoXY(37, 15);
Writeln('|');
//Segunda horizontal
GotoXY(31, 10);
Writeln('------');
GotoXY(38, 10);
Writeln('------');
GotoXY(45, 10);
Writeln('------');
//Terceira vertical
GotoXY(44, 8);
Writeln('|');
GotoXY(44, 9);
Writeln('|');
GotoXY(44, 11);
Writeln('|');
GotoXY(44, 12);
Writeln('|');
GotoXY(44, 14);
Writeln('|');
GotoXY(44, 15);
Writeln('|');
//Terceira horizontal
GotoXY(31, 13);
Writeln('------');
GotoXY(38, 13);
Writeln('------');
GotoXY(45, 13);
Writeln('------');
//Terceira vertical
GotoXY(51, 8);
Writeln('|');
GotoXY(51, 9);
Writeln('|');
GotoXY(51, 11);
Writeln('|');
GotoXY(51, 12);
Writeln('|');
GotoXY(51, 14);
Writeln('|');
GotoXY(51, 15);
Writeln('|');
//Quarta horizontal
GotoXY(31, 16);
Writeln('------');
GotoXY(38, 16);
Writeln('------');
GotoXY(45, 16);
Writeln('------');
end;
Procedure Numeros;
Begin
GotoXY(33, 8);
Writeln('1');
GotoXY(40, 8);
Writeln('2');
GotoXY(47, 8);
Writeln('3');
GotoXY(33, 11);
Writeln('4');
GotoXY(40, 11);
Writeln('5');
GotoXY(47, 11);
Writeln('6');
GotoXY(33, 14);
Writeln('7');
GotoXY(40, 14);
Writeln('8');
GotoXY(47, 14);
Writeln('9');
end;
Procedure Jogador1(jogada1:integer);
Begin
Case jogada1 of
1 : Begin
GotoXY(33,8);
Writeln('X');
End;
2 : Begin
GotoXY(40,8);
Writeln('X');
End;
3 : Begin
GotoXY(47,8);
Writeln('X');
End;
4 : Begin
GotoXY(33,11);
Writeln('X');
End;
5 : Begin
GotoXY(40,11);
Writeln('X');
End;
6 : Begin
GotoXY(47,11);
Writeln('X');
End;
7 : Begin
GotoXY(33,14);
Writeln('X');
End;
8 : Begin
GotoXY(40,14);
Writeln('X');
End;
9 : Begin
GotoXY(47,14);
Writeln('X');
End;
end;
end;
Procedure Jogador2(jogada2:integer);
Begin
Case jogada2 of
1 : Begin
GotoXY(33,8);
Writeln('O');
End;
2 : Begin
GotoXY(40,8);
Writeln('O');
End;
3 : Begin
GotoXY(47,8);
Writeln('O');
End;
4 : Begin
GotoXY(33,11);
Writeln('O');
End;
5 : Begin
GotoXY(40,11);
Writeln('O');
End;
6 : Begin
GotoXY(47,11);
Writeln('O');
End;
7 : Begin
GotoXY(33,14);
Writeln('O');
End;
8 : Begin
GotoXY(40,14);
Writeln('O');
End;
9 : Begin
GotoXY(47,14);
Writeln('O');
End;
end;
end;
Procedure armazenar1(jogada1:integer);
Begin
posicao[jogada1]:='X';
End;
Procedure armazenar2(jogada2:integer);
Begin
posicao[jogada2]:='O';
End;
Procedure verificar1(Nome1: string);
Begin
If (posicao[1]+posicao[2]+posicao[3]) = 'XXX' then vencedor:=Nome1;
If (posicao[4]+posicao[5]+posicao[6]) = 'XXX' then vencedor:=Nome1;
If (posicao[7]+posicao[8]+posicao[9]) = 'XXX' then vencedor:=Nome1;
If (posicao[1]+posicao[4]+posicao[7]) = 'XXX' then vencedor:=Nome1;
If (posicao[2]+posicao[5]+posicao[8]) = 'XXX' then vencedor:=Nome1;
If (posicao[3]+posicao[6]+posicao[9]) = 'XXX' then vencedor:=Nome1;
If (posicao[7]+posicao[5]+posicao[3]) = 'XXX' then vencedor:=Nome1;
If (posicao[1]+posicao[5]+posicao[9]) = 'XXX' then vencedor:=Nome1;
end;
Procedure verificar2(Nome2:string);
Begin
If (posicao[1]+posicao[2]+posicao[3]) = 'OOO' then vencedor:=Nome2;
If (posicao[4]+posicao[5]+posicao[6]) = 'OOO' then vencedor:=Nome2;
If (posicao[7]+posicao[8]+posicao[9]) = 'OOO' then vencedor:=Nome2;
If (posicao[1]+posicao[4]+posicao[7]) = 'OOO' then vencedor:=Nome2;
If (posicao[2]+posicao[5]+posicao[8]) = 'OOO' then vencedor:=Nome2;
If (posicao[3]+posicao[6]+posicao[9]) = 'OOO' then vencedor:=Nome2;
If (posicao[7]+posicao[5]+posicao[3]) = 'OOO' then vencedor:=Nome2;
If (posicao[1]+posicao[5]+posicao[9]) = 'OOO' then vencedor:=Nome2;
end;
Begin
For i:=1 to 9 do
Begin
posicao[i]:='';
End;
Write('Jogador 1, introduza o seu nome: ');
Readln(J1Nome);
Writeln();
Write('Jogador 2, introduza o seu nome: ');
Readln(J2Nome);
CLRSCR;
count:=-1;
vencedor := '';
Quadrado;
Numeros;
GotoXY(26, 19);
TextColor(LightCyan);
Writeln('Clique qualquer tecla para começar');
Readkey();
CLRSCR;
Quadrado;
Repeat
count:= count + 2;
Repeat
GotoXY(1, 19);
Write(' ');
GotoXY(1, 19);
Textcolor(LightGreen);
Write(J1Nome, '- ');
Readln(J1);
If posicao[J1] <> '' then
Begin
validacao := 1;
GotoXY(1, 20);
Textcolor(LightRed);
Write('Não é uma jogada válida, jogue de novo!');
Delay(2000);
GotoXY(1, 20);
Write(' ');
end
else
validacao :=0;
until validacao = 0;
Jogador1(J1);
armazenar1(J1);
verificar1(J1Nome);
if (vencedor = '') AND (count <> 9) then
Begin
Repeat
GotoXY(1, 19);
Write(' ');
GotoXY(1, 19);
Textcolor(LightGreen);
Write(J2Nome, '- ');
Readln(J2);
If posicao[J2] <> '' then
Begin
validacao:= 1;
Textcolor(LightRed);
Write('Não é uma jogada válida, jogue de novo!');
Delay(2000);
GotoXY(1, 20);
Write(' ');
end
else
validacao :=0;
until validacao = 0;
Jogador2(J2);
armazenar2(J2);
verificar2(J2Nome);
End;
until (vencedor <> '') OR (count = 9);
If vencedor <> '' then
Begin
GotoXY(30,21);
Writeln('O vencedor é o/a ', vencedor);
Delay(500);
GotoXY(30,21);
Writeln(' ');
Delay(500);
GotoXY(30,21);
TextColor(LightCyan);
Writeln('O vencedor é o/a ', vencedor);
Delay(500);
GotoXY(30,21);
Writeln(' ');
Delay(500);
GotoXY(30,21);
TextColor(White);
Writeln('O vencedor é o/a ', vencedor);
End
Else
Begin
GotoXY(30,21);
Writeln('Emplate');
End;
End.
[i]
[i]
[i]
[i]
[i]
[i]
[i]
Existem algumas coisas que voçes não percebem no codigo acima, mas eu vou explicar.
O [i]GotoXY serve para mover o cursor. O X é horizontal e o Y é vertical.
O TextBackground é para mudar o fundo, não o fundo todo do programa, mas sim para alterar o fundo de umas certas letras. Têm como exemplo, o titulo "Jogo do Galo" que tem o fundo branco, quando executam o programa
O TextColor é para alterar a cor do texto.
O Delay é para fazer o programa parar durante uns certo tempo. Quando escrevo Delay(1000); estou a dizer ao programa para parar durante 1 segundo.
Programa em execução:
Tutorial feito completamente por mim