Como comparar um caractere no vixualog

Início » Lógica de Programação » Lógica de Programação – Funções de Manipulação de Strings (Literais)

A maioria das linguagens de programação possui funções que permitem a Manipulação de Strings (caracteres / literais). Podemos estudar algumas delas em Lógica de Programação usando o VisualG.

Vamos aprender a utilizar algumas dessas funções para efetuar tratamento de strings.

Funções de manipulação de strings (caracteres) no VisualG

A tabela a seguir mostra as funções de manipulação de caracteres disponíveis no VisualG:

 
Função Significado
Asc(x : caractere) Retorna um número inteiro com o código ASCII do primeiro caractere da expressão.
Carac(x : inteiro) Retorna o caractere cujo código ASCII corresponda à expressão
Caracpnum(x : caractere) Retorna o inteiro ou real representado pela expressão matemática (ou valor numérico no formato literal) – converte caractere em numérico
Compr(x : caractere) Retorna um inteiro contendo o comprimento (quantidade de caracteres) da string
Copia(x : caractere; p, n : inteiro) Retorna uma string contendo uma cópia parcial da expressão, a partir do caractere p, contendo n caracteres. Os caracteres são numerados da esquerda para a direita, começando em 1
Maiusc(x : caractere) Retorna uma string contendo a expressão em maiúsculas
Minusc(x : caractere) Retorna uma string contendo a expressão em minúsculas
Numpcarac(x : inteiro ou real) Retorna a representação de x como uma cadeia de caracteres  (converte um tipo numérico para caractere)
Pos(seq, x : caractere) Retorna um inteiro que indica a posição em que a cadeia de caracteres (seq) se encontra dentro da cadeia x, ou zero se seq não estiver contida em x

Vamos ao exemplos de uso de algumas dessas funções no VisualG:

Convertendo para caixa-alta

var   valor : caractere   convertida : caractere inicio    leia(valor)    convertida <- maiusc(valor)    escreva (convertida) fimalgoritmo

 Obtendo o código ASCII do caractere inicial

var   palavra : caractere   valor : inteiro inicio    escreval("Digite uma palavra:")    leia(palavra)    valor <- Asc(palavra)    escreval ("O código ASCII da primeira letra de ", palavra, " é ", valor) fimalgoritmo

Contando os caracteres da string

var   palavra : caractere   comprimento : inteiro inicio    escreval("Digite uma palavra:")    leia(palavra)    comprimento <- Compr(palavra)    escreval ("A palavra ", palavra, " possui ", comprimento, " caracteres") fimalgoritmo

Separando partes de uma string

var    x, y, z : real    data, dia, mes, ano: caractere inicio    escreval("Digite uma data:")    leia (data)    dia <- copia(data;1;2)    mes <- copia(data;4;2)    ano <- copia(data;7;4)    escreval("Dia: " + dia)    escreval("Mês: " + mes)    escreval("Ano: " + ano) fimalgoritmo

Localizando sequências de caracteres

var    palavra : caractere    sequencia : caractere    posicao : inteiro inicio    escreval("Digite uma palavra:")    leia(palavra)    escreval("Digite uma letra ou sequência de caracteres:")    leia(sequencia)    posicao <- Pos(sequencia, palavra)    escreval("O caractere foi encontado na posição ", posicao) fimalgoritmo

Convertendo número em caractere

var    numero : inteiro    convertido : caractere inicio    escreval("Digite um número:")    leia(numero)    convertido <- NumpCarac(numero)    escreval("O número convertido para caractere é ", convertido) fimalgoritmo

Veja também: Variáveis e Tipos de Dados em Lógica de Programação

Você pode também assistir ao vídeo abaixo, do canal da Bóson Treinamentos no YouTube, onde explico os procedimentos descritos no artigo:

17 Comentários em Lógica de Programação – Funções de Manipulação de Strings (Literais)

Prazer para todos.

Fiz este exercício para calcular as calorias gastas em uma refeição. Entra com prato, bebida e sobremesa. O problema está em comparar as strings. O VisualG não aceita a comparação. Por exemplo, entro com a string carne, o programa diz: esperava encontrar então na linha se (prato = carne) então. Não há explicação possível para esse problema. Não sei onde está o erro, para mim, a lógica está correta. Obrigado.

Algoritmo "semnome" // Disciplina  :  [Linguagem e Lógica de Programação] // Professor   : // Descrição   : Aqui você descreve o que o programa faz! (função) // Autor(a)    : Nome do(a) aluno(a) // Data atual  : 02/10/2017 Var // Seção de Declarações das variáveis cal1,cal2,cal3,p1,p2,p3,caltotal:inteiro

prato,bebida,sobremesa:caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...

escreval("Entre com o prato") leia (prato) escreval(prato) se (prato = carne) então  cal1 <- 350 senão se (prato = peixe) então          cal1 <- 230       senão se (prato = frango) então                cal1 <- 250             senão                cal <- 180             fimse       fimse fimse escreval("Entre com a bebida") leia (bebida) se (bebida = cha) então  cal2 <- 20 senão se (bebida = suco de laranja) então          cal2 <- 100       senão se (bebida = suco de melao) então                 cal2 <- 100             senão se (bebida = refrigerante diet) então                      cal <- 65                   fimse             fimse       fimse fimse escreval("Entre com a sobremesa") leia (sobremesa) se (sobremesa = abacaxi) então  cal3<- 75 senão se (sobremesa = sorvete diet) então          cal <- 110       senão se (sobremesa = mouse diet) então                cal3 <- 170             senão se (sobremesa = mouse chocolate) então                     cal <- 200                   fimse             fimse       fimse fimse senão escreval ("Opção inválida.") caltotal <- cal1 + cal2 + cal3 escreval("O prato escolhido foi: ",prato) escreval("A bebida escolhida foi: ",bebida) escreval("A sobremesa escolhida foi: ",sobremesa) escreval("O total de calorias é de: ",caltotal)

Fimalgoritmo