Contar string
Exercício de lógica de programação para contar a quantidade de caracteres de uma string qualquer.
Exercício de lógica de programação
Faça um programa para contar a quantidade de caracteres que ela contem.
Comentário: Este problema é para praticarmos laços de repetição e introduzirmos o conceito de string.
String é um conjunto de caracteres, mas seu significado por variar de uma linguagem para outra, como veremos neste artigo.
Linguagem C
Em C o tipo char é tido como um vetor, então temos as mesmas qualidades de um vetor.
Para utilizarmos um vetor como se fosse um string, seguimos o seguinte exemplo…
char ola[] = "palavra";
Para encontrar a solução você poderá percorre esse vetor e checar se chegou ao fim da “string” comparando o valor atual
do vetor com zero dessa forma ola[i] != 0
.
Espere aí, eu já estou lhe dando o resultado do problema! Não, não estou. É que a solução deste problema está mais relacionada com o conhecimento que temos (ou não) da linguagem do que com a lógica.
#include <stdio.h>
#include <assert.h>
//
// Função para contar caracteres de determinada string
//
int contaChar(char str[]) {
// Aqui entra a lógica do programa.
}
//
// Testes
//
int main() {
char ola[] = "palavra";
assert(7 == contaChar(ola));
return 0;
}
Solução na linguagem C
#include <stdio.h>
#include <assert.h>
//
// função para contar caracteres de determinada string
//
int contaChar(char str[]) {
int i = 0;
do {
++i;
} while (str[i] != 0);
return i;
}
//
// Início do programa
// e seus testes.
int main() {
char ola[] = "palavra";
assert(7 == contaChar(ola));
return 0;
}
Desafio na linguagem C
As funções abaixo também funcionam, porém a implementação é um pouco diferente.
Seu desafio é entender os seguintes códigos.
int contaChar(const char *str) {
int i = 0;
for (; str[i] != 0; ++i);
return i;
}
A solução abaixo é do professor da USP Paulo Feofiloff.
unsigned int strlen( string s) {
int i;
for (i = 0; s[i] != '\0'; ++i) ;
return i;
}
Linguagem Python
Em Python temos a função len()
que aceita como parâmetro uma string e retorna o comprimento desta estring.
Em outras palavras, se o objetivo é saber o tamanho da string, não precisamos gastar nosso raciocínio.
Puxa vida, como a linguagem C é horrível e Python é maravilhosa… não pare de bobagem, não é nada disso e nem é esse a
proposta deste breve curso de lógica. A idéia é percebermos as diferenças entre as linguagens, mas sem preconceitos tolos.
Outra coisa, na linguagem C, se incluirmos a biblioteca string.h
teremos uma vasta quantidade de funções prontas para
trabalharmos com strings, inclusive uma para determinar o tamanho de uma string strlen()
.
s = "palavra"
len(s)
# 7
Como a questão é para exercitar laço de repetição, vamos imaginar que precisamos fazer alguma coisa com as letras de nossa string e, para tanto, precisamos iterar um laço de repetição.
for letra in s:
print(letra)
"""
'p'
'a'
'l'
'a'
'v'
'r'
'a'
"""
A linguagem C trata a string como sendo um vetor e, por tanto, podemos acessá-lo através de seu índice. No mínimo curioso, é que em Python temos o mesmo aspecto, veja o trecho abaixo.
s[0] # 'p'
s[1] # 'a'
s[2] # 'l'
s[3] # 'a'
s[4] # 'v'
s[5] # 'r'
s[6] # 'a'
Então poderíamos fazer um laço while
ao invés do laço for
….
while i < len(s):
print(s[i])
i = i + 1
"""
p
a
l
a
v
r
a
"""
E para finalizar, escrevi o código abaixo para ilustrar uma imitação do que fizemos em C.
>>> s = "palavra"
>>> i = 0
>>> while i < len(s):
... i = i + 1
...
>>> i
7
Linguagem JavaScript
Sem comentários…
> "palavra".length
7