Programar com Procedimentos

15/06/2019

10

Senhores, conto com a ajuda de vocês. (ESSE É MEU PRIMEIRO POST. POR FAVOR, DESCONSIDEREM QUALQUER ERRO)

BREVE INTRODUÇÃO:
Eu comecei a aprender programação há 9 dias (06/06/2019) e estou aprendendo por enquanto por um PDF de Lógica de Programação e vídeos no YouTube. Aprendi hoje (15/06/2019) em um vídeo sobre o CLEAN CODE (dividir o código em várias funções para facilitar a leitura por futuros programadores que derem manutenção no código como também facilitar a correção de bugs). Eu ainda não sei fazer função direito (ainda não entendi tão bem), mas eu aprendi como fazer procedimento (similar à função, porém sem retorno) e eu fiz hoje um JOGO DA VELHA todo com base no CLEAN CODE e procedimentos.

Gostaria que vocês olhassem o meu códigos (por mais que ainda seja em PORTUGOL) para eu saber se estou aprendendo e programando corretamente.

Obs.: o JOGO DA VELHA funciona perfeitamente. (Então não quero que procurem erros, pois está funcionando bem, mas quero que vejam se esse estilo de programação, dividindo em procedimentos e chamando os procedimentos no algoritmo principal, é o jeito certo de programar).
1) Se esse for o jeito certo, continuarei aprendendo e programando assim.
2) Se esse não for o jeito certo, por favor, poderiam me orientar qual a melhor maneira de programar com base no CLEAN CODE?

SEGUE ABAIXO TODO O ALGORITMO E OS PROCEDIMENTOS

Algoritmo "JOGO DA VELHA COM PROCEDIMENTOS"

Var
nomeJogador, simboloJogador : VETOR [1..2] DE CARACTERE
tabela : VETOR [1..3,1..3] DE CARACTERE
contador, linha, coluna : INTEIRO

PROCEDIMENTO jogadores() //nomeando os jogadores.
VAR

INICIO
ESCREVAL ()
ESCREVAL ("- JOGADORES")
ESCREVA ()
PARA contador DE (1) ATE (2) FACA
ESCREVA ("Digite o nome do(a)", contador,"º jogador(a): ")
LEIA (nomeJogador[contador])
FIMPARA
FIMPROCEDIMENTO

PROCEDIMENTO simbolos() //os símbolos dos jogadores.
VAR

INICIO
simboloJogador[1] := "X"
simboloJogador[2] := "O"
ESCREVAL ()
PARA contador DE (1) ATE (2) FACA
ESCREVAL ("O(A) jogador(a) ", nomeJogador[contador]," tem por símbolo: ", simboloJogador[contador],".")
FIMPARA
ESCREVAL ()
FIMPROCEDIMENTO

PROCEDIMENTO tabuleiroEmBranco() //o tabuleiro.
VAR
contadorLinha, contadorColuna : INTEIRO
INICIO
PARA contadorLinha DE (1) ATE (3) FAÇA
PARA contadorColuna DE (1) ATE (3) FAÇA
tabela[contadorLinha,contadorColuna] := "_"

SE (contadorlinha = 3) ENTAO
tabela[contadorLinha,contadorColuna] := " "
FIMSE
FIMPARA
FIMPARA

tabuleiroAtualizado()
FIMPROCEDIMENTO

PROCEDIMENTO tabuleiroAtualizado() //atualização do tabuleiro conforme os jogadores fizerem as jogadas.
VAR

INICIO
ESCREVAL ()
ESCREVAL (" 1 2 3 ")
ESCREVAL ("1 _",tabela[1,1],"_|_",tabela[1,2],"_|_",tabela[1,3],"_")
ESCREVAL ("2 _",tabela[2,1],"_|_",tabela[2,2],"_|_",tabela[2,3],"_")
ESCREVAL ("3 ",tabela[3,1]," | ",tabela[3,2]," | ",tabela[3,3]," ")
FIMPROCEDIMENTO

PROCEDIMENTO rodadas() //as rodadas com as jogadas dos dois jogadores.
VAR
jogadas : INTEIRO
INICIO
REPITA
jogadas := jogadas + 1
PARA contador DE (1) ATE (2) FACA
ESCREVAL ()
ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ")
LEIA (linha)
erroLinha()
ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ")
LEIA (coluna)
erroColuna()
erroTabelaPreenchida()
tabela[linha,coluna] := simboloJogador[contador]
tabuleiroAtualizado()
vencedor()
SE (jogadas = 5) E (contador = 1) ENTAO
ESCREVAL ()
ESCREVAL ("DEU VELHA! HA HA HA HA!")
interrompa
FIMSE
FIMPARA
ATE (jogadas = 5)
FIMPROCEDIMENTO

PROCEDIMENTO erroLinha() //identifica erro se a linha for diferente de 1, 2 ou 3.
VAR

INICIO
SE ((linha <> 1) E (linha <> 2) E (linha <> 3)) ENTAO
ESCREVAL ()
ESCREVAL ("ERRO: linha inválida.")
ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ")
LEIA (linha)
FIMSE
FIMPROCEDIMENTO

PROCEDIMENTO erroColuna() //identifica erro se a coluna for diferente de 1, 2 ou 3.
VAR

INICIO
SE ((coluna <> 1) E (coluna <> 2) E (coluna <> 3)) ENTAO
ESCREVAL ()
ESCREVAL ("ERRO: coluna inválida.")
ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ")
LEIA (coluna)
FIMSE
FIMPROCEDIMENTO

PROCEDIMENTO erroTabelaPreenchida() //identifica erro se o campo da tabela já estiver preenchido.
VAR

INICIO
SE ((tabela[linha,coluna] = "X") OU (tabela[linha,coluna] = "O")) ENTAO
ESCREVAL ()
ESCREVAL ("ERRO: essa linha e coluna já estão preenchidas.")
ESCREVA ("Jogador ", nomeJogador[contador],", em qual LINHA fará sua jogada? ")
LEIA (linha)
ESCREVA ("Jogador ", nomeJogador[contador],", em qual COLUNA fará sua jogada? ")
LEIA (coluna)
FIMSE
FIMPROCEDIMENTO


[...] O CÓDIGO CONTINUA EM OUTRO COMENTÁRIO POR FALTA DE ESPAÇO [...]
Ariel Souto

Ariel Souto

Responder

Posts

15/06/2019

Ariel Souto

[...] CONTINUAÇÃO DO CÓDIGO [...]

PROCEDIMENTO vencedor() //classificando um vencedor
VAR
msgVencedor : CARACTERE
INICIO
msgVencedor := ("TEMOS UM(A) VENCEDOR(A): o(a) Jogador(a) " + (nomeJogador[contador]) +"!")
//vencedor em linhas
SE (tabela[1,1] = simboloJogador[contador]) E (tabela[1,2] = simboloJogador[contador]) E (tabela[1,3] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
SE (tabela[2,1] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[2,3] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
SE (tabela[3,1] = simboloJogador[contador]) E (tabela[3,2] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
//vencedor em colunas
SE (tabela[1,1] = simboloJogador[contador]) E (tabela[2,1] = simboloJogador[contador]) E (tabela[3,1] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
SE (tabela[1,2] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,2] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
SE (tabela[1,3] = simboloJogador[contador]) E (tabela[2,3] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
//vencedor em diagonal
SE (tabela[1,1] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,3] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
SE (tabela[1,3] = simboloJogador[contador]) E (tabela[2,2] = simboloJogador[contador]) E (tabela[3,1] = simboloJogador[contador]) ENTAO
ESCREVAL ()
ESCREVAL (msgVencedor)
fimalgoritmo
FIMSE
FIMPROCEDIMENTO

Inicio //aqui é o algoritmo principal chamando apenas os procedimentos.

ESCREVAL ("JOGO DA VELHA - TOP1000")
jogadores()
simbolos()
ESCREVAL (nomeJogador[1]," x ", nomeJogador[2]," - QUE COMECEM OS JOGOS!")
tabuleiroEmBranco()
rodadas()

Fimalgoritmo
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar