Vamos a mais uma dúvida? E na aula de hoje vamos aprender como identificar uma palavra palíndroma com a linguagem Portugol.
Uma palavra palíndroma é uma palavra que mantêm o mesmo significado quando lida da esquerda para a direita ou da direita para a esquerda. Veja alguns exemplos:
– ama
– arara
– reviver
Há várias abordagens possíveis para identificar se uma palavra é palíndroma ou não. Aqui usaremos índices para percorrer a palavra comparando seus caracteres, comparando o primeiro caracter com o último, o segundo com o penúltimo, e assim por diante, até chegarmos ao meio da palavra.
Ao final, se em todas as comparações os caracteres forem iguais, etão temos uma palavra palíndroma.
Para programar essa lógica precisamos descobrir a posição do último caracter da palavra. Para descobrir esse valor basta descobrirmos o tamanho da palavra e subtrairmos 1, uma vez que o primeiro caracter está no índice 0 e não no índice 1. O tamanho da palavra pode ser descoberto com a função numero_caracteres da biblioteca Texto, como feito a seguir.
/* Descobrindo o índice do último caracter */ fim = Texto.numero_caracteres(palavra) fim--
Agora que descobrimos o índice do último caracter da palavra, basta percorrermos a palavra com um índice ini que começa com o valor zero e com o índice fim que começa com o índice do último caracter da palavra. O índice ini irá aumentar em direção ao meio da palavra enquanto que o índice fim irá diminuir também em direção ao meio da palavra. Durante esse processo iremos comparar os caracteres das posições ini e fim. Se algum deles for diferente, então a palavra não é palíndroma.
Código completo em Portugol para verificar se uma palavra é palíndroma
programa{ inclua biblioteca Texto /* * Como descobrir uma palavra palíndroma em Portugol * * Código escrito por Wagner Gaspar * Maior de 2021 * * palavras palíndromas * ama * anilina * arara * osso * radar * reviver */ funcao inicio(){ cadeia palavra inteiro fim, ini = 0, eh = 1 escreva("Digite uma palavra: ") leia(palavra) fim = Texto.numero_caracteres(palavra) fim-- enquanto(ini < fim){ se(Texto.obter_caracter(palavra, ini) != Texto.obter_caracter(palavra, fim)) eh = 0 ini++ fim-- } se(eh == 1) escreva("Palindroma...\n") senao escreva("Não é palindroma...\n") } }