Sunteți pe pagina 1din 31

Jogos Digitais

ALGORITMOS E ESTRUTURAS DE
DADOS PARA JOGOS DIGITAIS
Evandro Alberto Zatti
Equivalência de Comandos
Portugol  C#
Equivalências

• O objetivo deste documento é trazer a lista de


comandos mais utilizados em Portugol e sua
equivalência em C#, para facilitar a
implementação dos algoritmos.
Considerações Gerais

• A palavra algoritmo, que indicava o nome do


algoritmo será declarada através da cláusula
static void.
• Após o nome do algoritmo, em Portugol
colocávamos um ; (ponto-e-vírgula). Em C# são
colocados dois parênteses ().
• No momento não entraremos em detalhes do
que significam exatamente estes símbolos. Para
nossa realidade atual, basta “obedecer” estas
considerações.
Considerações Gerais

• As palavras início e fim, bem como outas


delimitações de bloco (se/fimse,
enquanto/fimenquanto) são substituídas pelos
delimitadores de bloco, que neste caso, são as
chaves (brackets) { } abrindo e fechando.
• Os editores de texto costumam converter as
aspas normais " " em aspas inglesas “ ”, apenas
por questão estética. Cuidado ao copiar/colar
códigos, pois o C# não reconhece as aspas
inglesas.
Programa Exemplo
• Veja o exemplo:
algoritmo OlaMundo;
inicio
imprima(“Olá, Mundo!”);
fim

static void OlaMundo()


{
Console.WriteLine("Olá, Mundo!");
}
Tipos de Dados

Portugol C# Observações

inteiro int Números inteiros, positivos ou negativos

real float Números reais (inclusive com decimal)


double Damos preferência ao uso do double por permitir um
número maior de casas inteiras e decimais
caractere char Qualquer caractere constante da tabela ASCII (letras,
números, caracteres especiais, ...)
string string Conjunto de caracteres: palavras ou frases

lógico bool Verdadeiro ou Falso


Imprima
Portugol C#
Imprima(algo); Console.Write(algo);
Console.WriteLine(algo);

• Imprime algo que está entre parênteses, podendo ser uma


literal, variável ou expressão;
• A diferença entre o método Write e o WriteLine é que o Write
escreve e mantém o cursor posicionado na mesma linha, e o
WriteLine, após escrever posiciona o cursor na linha
subsequente.
• Para imprimir mais de um algo no mesmo comando imprima,
no Portugol utilizava-se a vírgula (,) para separar esses algos,
aqui é o sinal de (+) que os separa.
Imprima
• Veja o exemplo:
algoritmo olamundo;
inicio
imprima(“Olá, Mundo!”);
fim

static void OlaMundo()


{
Console.WriteLine("Olá, Mundo!");
}
Leia
Portugol C#
leia(variavel) variavel = Console.ReadLine();

• O comando de leitura do C# funciona como uma


atribuição: ele pega o que foi lido da Console e atribui
à variável em questão.
• Para atribuição (), no C# utilizamos o sinal de =
• Tudo o que é lido pela Console vem em forma de texto
(string). Portanto, se a variável em questão for
numérica, é necessário converter (parsear) o que foi
lido para o tipo da variável que está recebendo.
Leia
• Veja o exemplo em Portugol:
algoritmo Soma;
inicio
inteiro a, b, c;
imprima(“Digite um número”);
leia(a);
imprima(“Digite outro número”);
leia(b);
c  a + b;
imprima(“A soma é: ”,c);
fim
Leia
• Agora o mesmo exemplo em C#:
static void Soma()
{
int a, b, c;
Console.WriteLine("Digite um número");
a = int.Parse(Console.ReadLine());
Console.WriteLine("Digite outro número");
b = int.Parse(Console.ReadLine());
c = a + b;
Console.WriteLine("A soma é: " + c);
}
Se / Então
Portugol C#
se (condição) então if (condição)
comando1; {
comando2; comando1;
... comando2;
fimse ...
}

• A palavra então não possui equivalente em C#, ela é suprimida;


• O bloco, que em Portugol é iniciado pela própria palavra se e
finalizado por fimse, em C# é delimitado pelas chaves;
• Se houver apenas um único comando para ser executado
dentro do bloco, as chaves de abertura e fechamento podem
ser suprimidas.
Se / Então
• Veja o exemplo em Portugol:
algoritmo Academico;
início
real n1, n2, m;
leia (n1);
leia (n2);
m  (n1+n2)/2;
se (m >= 7) então
imprima(“Aprovado!”);
fimse
imprima(“Fim do programa.”);
fim
Se / Então
• Agora o mesmo exemplo em C#:
static void Academico()
{
double n1, n2, m;
n1 = double.Parse(Console.ReadLine());
n2 = double.Parse(Console.ReadLine());
if (m >= 7)
{
Console.WriteLine("Aprovado!");
}
Console.WriteLine("Fim do programa.");
}
Se / Então / Senão
Portugol C#

se (condição) então if (condição)


comando1; {
comando2; comando1;
... comando2;
senão ...
comando3; }
comando4; else
... {
fimse comando3;
comando4;
...
}

• Os blocos do se e do senão em C# são individualmente delimitados pelas


chaves de abertura e fechamento;
• Se houver apenas um único comando para ser executado dentro do bloco,
as chaves de abertura e fechamento podem ser suprimidas.
Se / Então / Senão
• Veja o exemplo em Portugol:
algoritmo Academico;
início
real n1, n2, m;
leia (n1);
leia (n2);
m  (n1+n2)/2;
se (m >= 7) então
imprima(“Aprovado!”);
senão
imprima(“Não aprovado!”);
fimse
imprima(“Fim do programa.”);
fim
Se / Então / Senão
• Agora o mesmo exemplo em C#:
static void Academico()
{
double n1, n2, m;
n1 = double.Parse(Console.ReadLine());
n2 = double.Parse(Console.ReadLine());
if (m >= 7)
{
Console.WriteLine("Aprovado!");
}
else
{
Console.WriteLine("Não Aprovado!");
}
Console.WriteLine("Fim do programa.");
}
Enquanto
Portugol C#
enquanto (condição) faça while (condição)
comando1; {
comando2; comando1;
... comando2;
fimenquanto ...
}

• A palavra faça não possui equivalente em C#, ela é suprimida;


• O bloco, que em Portugol é iniciado pela própria palavra
enquanto e finalizado por fimenquanto, em C# é delimitado
pelas chaves.
Enquanto
• Veja o exemplo em Portugol:
algoritmo One2Ten;
início
inteiro num;
num  1;
enquanto (num <= 10) faça
imprima(num);
num  num + 1;
fimenquanto
imprima(“Fim do programa.”);
fim
Enquanto
• Agora o mesmo exemplo em C#:
static void One2Ten()
{
int num;
num = 1;
while (num <= 10)
{
Console.WriteLine(num);
num = num + 1;
}
Console.WriteLine("Fim do programa.");
}
Faça / Enquanto
Portugol C#
faça do {
comando1; comando1;
comando2; comando2;
... ...
enquanto (condição); } while (condição);

• A palavra faça nesse caso existe (do) e ela inicia o bloco;


• O bloco aqui também é delimitado pelas chaves, e é terminado
pelo while e a condição.
• Uma vez que a palavra do é pequena, é comum abrir-se a chave
ao lado dela. Também costuma-se colocar o while ao lado da
chave que fecha o bloco, para não ser confundido com uma
estrutura while (ao invés da do/while).
Faça / Enquanto
• Veja o exemplo em Portugol:
algoritmo One2Ten;
início
inteiro num;
num  1;
faça
imprima(num);
num  num + 1;
enquanto (num <= 10);
imprima(“Fim do programa.”);
fim
Faça / Enquanto
• Agora o mesmo exemplo em C#:
static void One2Ten()
{
int num;
num = 1;
do {
Console.WriteLine(num);
num = num + 1;
} while (num <= 10);
Console.WriteLine("Fim do programa.");
}
Para
Portugol
para variavel de inicial até final passo frequencia faça
comando1;
comando2;
...
fimpara
C#
for(variavel = inicial; variavel <= final ; variavel = variavel + frequencia)
{
comando1;
comando2;
...
}
Para
• Veja o exemplo em Portugol:
algoritmo one2ten;
início
inteiro num;
para num de 1 até 10 passo 1 faça
imprima(num);
fimpara
imprima(“Fim do programa.”);
fim
Para
• Agora o mesmo exemplo em C#:
static void One2Ten()
{
int num;
for (num=1; num<=10; num=num+1)
{
Console.WriteLine(num);
}
Console.WriteLine("Fim do programa.");
}
Para
• A frequência em que a variável vai incrementar ou decrementar
pode ser feita em C# através do que conhecemos como
sobrecarga de operador.
• Exemplo: para incrementar o valor 1 em uma variável a:
– Ao invés de utilizar
a = a + 1;
– Pode-se utilizar
a+=1;
ou
a++;
Para
• Veja exemplo de uso de sobrecarga:
static void One2Ten()
{
int num;
for (num=1; num<=10; num++)
{
Console.WriteLine(num);
}
Console.WriteLine("Fim do programa.");
}

static void One2TenImpares()


{
int num;
for (num=1; num<=10; num+=2)
{
Console.WriteLine(num);
}
Console.WriteLine("Fim do programa.");
}
Arrays
Portugol
tipo variavel[tamanho];

tipo variavel[linhas, colunas];

C#
tipo[] variavel = new tipo[tamanho];

tipo[,] variavel = new tipo[linhas, colunas];


Arrays
• Veja o exemplo em Portugol:
algoritmo Arrays;
início
inteiro i, j, vet[4], mat[3,5];
para i de 0 até 3 faça
leia(vet[i]);
fimpara
para i de 0 até 2 faça
para j de 0 até 4 faça
leia(vet[i,j]);
fimpara
fimpara
fim
Arrays
• Agora o mesmo exemplo em C#:
static void Arrays()
{
int i, j;
int[] vet = new int[4];
int[,] mat = new int[3,5];
for (i=0; i<4; i++)
{
vet[i] = int.Parse(Console.ReadLine());
}
for (i=0; i<3; i++)
{
for (j=0; j<5; j++)
{
mat[i,j] = int.Parse(Console.ReadLine());
}
}
}

S-ar putea să vă placă și