Mostrando postagens com marcador Strings. Mostrar todas as postagens
Mostrando postagens com marcador Strings. Mostrar todas as postagens

Exercício PHP: Como Saber se é Vogal, Consoante ou Número [Código]

🎯 O que você vai aprender nesta aula:

  • Como usar a função ctype_digit() para saber se uma string contém apenas números.
  • Como verificar se uma letra é uma vogal usando arrays.
  • A resolução completa do clássico exercício: "Faça um programa que verifique se uma letra digitada é vogal ou consoante".
  • Boas práticas para tratar dados recebidos de formulários HTML no PHP.

Todo estudante de programação acaba esbarrando neste desafio clássico: "Faça um script que receba uma letra e diga se ela é vogal ou consoante". Parece simples, certo? Você coloca um IF/ELSE e pronto.

Porém, a regra número um do desenvolvimento web é: nunca confie no usuário. E se, em vez de uma letra, ele digitar um número? O seu sistema precisa estar preparado para identificar dígitos antes mesmo de pensar em vogais e consoantes.

Como saber se uma string é apenas número no PHP?

Para descobrir se o valor que o usuário digitou é composto exclusivamente por números (dígitos), o PHP nos fornece uma função nativa maravilhosa chamada ctype_digit().

A sintaxe é direta: ctype_digit($minhaString). Ela avalia a string fornecida e retorna TRUE se todos os caracteres da string forem numéricos. Se houver pelo menos uma letra, espaço ou caractere especial, ela retorna FALSE.

🛠️ Curiosidade Técnica: Diferente da função is_numeric() (que aceita números decimais com pontos ou sinais negativos), a ctype_digit() é estrita e só aceita números inteiros "puros" dentro de uma string (como "123" ou "0").

Exemplo Prático: Verificando se é Dígito

<html>
<head>
  <title>Apostila PHP Progressivo</title>
</head>
<body>
  <form action="" method="get">
    Digite um único caractere:  
    <input type="text" name="carac" maxlength="1" required />
    <input type="submit" value="Testar" />
  </form> 

<?php 
  // Verificamos se o formulário foi enviado para evitar erros
  if(isset($_GET['carac'])) {
      $meuCaractere = $_GET['carac'];
      
      if(ctype_digit($meuCaractere)) {
          echo "<p>O valor digitado <b>É UM NÚMERO</b> (dígito).</p>";
      } else {
          echo "<p>O valor digitado <b>NÃO É</b> um dígito.</p>";
      }
  }
?>
</body>
</html>

🤯 Muitas funções para decorar?

Entender validações como ctype_digit(), is_numeric() e manipulação de strings pode dar um nó na cabeça no começo. Mas você não precisa decorar nada! Com a Apostila PHP Progressivo, você tem o guia de consulta perfeito, com exercícios resolvidos e explicados passo a passo para estudar offline, no seu ritmo.

Baixar Material Completo →

A Solução Completa: Vogal, Consoante ou Número?

Agora que já sabemos como barrar os números intrusos, vamos resolver o problema principal. Se o caractere não for um número, ele é uma letra. Mas como saber de forma inteligente se essa letra é uma vogal?

Uma forma péssima seria fazer um IF gigante: if($letra == 'a' || $letra == 'e' || $letra == 'i'...). Uma forma inteligente é usar um array e a função in_array() do PHP!

💡 Dica: Vamos usar a função strtolower() para converter a letra digitada pelo usuário para minúscula. Assim, não importa se ele digitar "A" maiúsculo ou "a" minúsculo, o nosso código vai reconhecer.

<?php 
  if(isset($_GET['carac'])) {
      // Recebe o caractere e já converte para minúsculo
      $letra = strtolower(trim($_GET['carac']));
      
      // Cria uma lista (array) com as vogais
      $vogais = ['a', 'e', 'i', 'o', 'u'];
      
      // Validação 1: O usuário digitou um número?
      if(ctype_digit($letra)) {
          echo "<h3>Você digitou um NÚMERO! Digite uma letra.</h3>";
      } 
      // Validação 2: A letra está dentro do nosso array de vogais?
      elseif(in_array($letra, $vogais)) {
          echo "<h3>A letra '$letra' é uma VOGAL.</h3>";
      } 
      // Validação 3: Se não é número e não é vogal, só pode ser...
      else {
          echo "<h3>A letra '$letra' é uma CONSOANTE.</h3>";
      }
  }
?>

Pronto! Dessa forma criamos um sistema à prova de falhas. Nós filtramos os números, agrupamos as vogais de forma limpa e otimizamos o tempo do nosso servidor.


Sua lógica de validação já está afiada! Que tal mergulharmos em novas estruturas na próxima aula?

Continuar Curso (Próxima Aula) »

Strings em Perl

Nesse tutorial de nosso Curso de Perl, vamos começar a trabalhar com as famosas strings.

Baixar apostila de Perl em PDF
Baixar e estudar pela apostila em PDF

Strings em Perl

Strings nada mais são que um grupo de caracteres, por exemplo:
"Perl"
"Perl Progressivo"
"Música 2112"
"Curso Perl Progressivo \n"

A menor string é a vazia: ""
A maior é aquela que completa a memória de sua máquina.

As strings aparecem sempre dentro de aspas, simples ou duplas.

Aspas simples

Tudo que vier dentro de aspas simples, vai ser exibido do jeito que aparece no código, exceto a aspa simples e a barra \

Rode o script a seguir:
#!/usr/bin/perl
print 'Curso Perl Progressivo \n';
O resultado é: Curso Perl Progressivo \n

Ou seja, digitamos o \n e apareceu o \n, ele não foi interpretado como uma quebra de linha.
Para imprimir a barra, faça: \\
Para imprimir uma aspa, faça: \'

O script a seguir exibe uma barra e uma aspa simples:
#!/usr/bin/perl
print '\\ \'';

Aspas duplas

Essa nós já usamos em nosso tutorial sobre Hello, World! e funções print e say.
Se fizermos:
print "Curso Perl Progressivo!\n";

Ela vai interpretar o \n como uma quebra de linha, ao invés de imprimir '\n' na tela.

Usaremos mais aspas duplas quando formos trabalhar com variáveis, em breve em nossa apostila de Perl.

Note que:
print 1+1;
Resulta em 2 na tela.

Já:
print "1+1";
Resulta na tela: 1+1

O primeiro é uma operação matemática com números, o segundo exemplo é uma string.
Entenda bem a diferença! No segundo caso, o número 1 e o operador + são interpretados como caracteres de uma string, são um texto.

Operadores de String em Perl

O primeiro operador que vamos aprender é o de concatenação: .
Sim, um ponto.

Ele serve pra concatenar, 'grudar', unir strings, veja:
print "Perl" . "Progressivo";
(mesmo que "PerlProgressivo")

print "Perl"." " . "Progressivo";
(mesmo que "Perl Progressivo"

print "Perl". " " . "Progressivo"."\n";
(mesmo que "Perl Progressivo\n")

Um outro operador importante, é o de repetição: x
(sim, um x)

Tudo que você usa com ele, se repete, por exemplo:
print "Rush" x 3 ;

O resultado é: RushRushRush

Inclusive isso funciona pra números:
print 4 x 3;
O resultado é: 444