strings.tex 3.54 KB
Newer Older
1 2 3 4
\documentclass[apostila.tex]{subfiles}


\begin{document}
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
5 6 7 8
\chapter{STRINGS}


Uma string é uma sequência de caracteres. As strings são usadas para conter dados de texto - consistem
9
de letras, algarismos, marcas de pontuação e outros símbolos.
10

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
11
Na linguagem C, strings são armazenadas em matrizes do tipo char, e obedecem às mesmas regras
12 13
válidas para estas.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
14
exemplos:
15

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
16 17
\begin{lstlisting}
char string[7] = {'B', 'r', 'a', 's', 'i', 'l', '\0'};
18 19
char string[7] = "Brasil";
char string[ ] = "Brasil";
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
20 21 22
\end{lstlisting}

OBS.: O símbolo ``\verb|\0|'' indica o final de uma string.
23

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
24
\section{Algumas funções de manipulação de string}
25

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
26
A linguagem C oferece uma biblioteca padrão - string.h - para manipulação de strings. Apresentamos a
27 28
seguir algumas das funções contidas nesta biblioteca.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
29
\subsection{strcpy()}
30 31
Copia toda a segunda string para a primeira e retorna a string copiada.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
32
\begin{lstlisting}
33
char *strcpy( char *destino, char *origem );
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
34
\end{lstlisting}
35

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
36
\subsection{strlen()}
37 38
Retorna o tamanho de uma string.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
39
\begin{lstlisting}
40
unsigned long strlen( char *string );
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
41
\end{lstlisting}
42

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
43
\subsection{strcat()}
44 45
Concatena uma cópia da segunda string ao final da primeira e retorna a string concatenada.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
46
\begin{lstlisting}
47
char *strcat( char *str1, char *str2 );
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
48
\end{lstlisting}
49

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
50
\subsection{strcmp()}
51 52
Compara duas strings, caractere por caractere, e retorna um valor.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
53 54 55
Uma observação importante é que os caracteres minúsculos são alfabeticamente maiores que 
os caracteres maiúsculos no contexto da linguagem C. 
Isso acontece devido ao uso da tabela ASCII.
56

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
57
\begin{lstlisting}
58
int strcmp( char *str1, char *str2 );
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
59
\end{lstlisting}
60 61


Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
62
Valor de Retorno Significado
63

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
64 65 66 67 68 69
\begin{tabular}{|c|l|}
\hline \verb|<0| & str1 é alfabeticamente menor do que str2 \\
\hline \verb|=0| & str1 é igual a str2 \\
\hline \verb|>0| & str1 é alfabeticamente maior do que str2 \\
\hline 
\end{tabular}
70 71 72



Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
73
\section{Exercícios}
74 75

1. Escreva um programa em C que receba várias palavras (strings) e as imprima na tela em ordem
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
76
alfabética. Invente uma maneira criativa para o usuário indicar ao programa que não há mais
77 78
palavras a serem lidas.

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
79
2. Escreva um programa em C que lê uma string do teclado e imprime a string invertida.
80

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
81 82
3. Um palíndromo é uma palavra tal que quando revertida é igual a ela mesma. 
Escreva um programa que recebe uma palavra e responde se ela é palíndromo ou não.
83

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
84 85 86
4. Para toda palavra é possível obter um subconjunto de letras consecutivas da mesma. 
Este conjunto pode receber denominações específicas de acordo com algumas propriedades 
que este respeita. Veja a seguir:
87

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
88 89
Se $P$ é a palavra completa e $S$ é um subconjunto de caracteres consecutivos de $P$ e o 
operador $+$ representa a concatenação de duas strings, então:
90

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
91 92 93 94 95
\begin{description}
	\item[prefixo] $S$ será prefixo de $P$ se $P = S + S'$, onde $S'$ é um outro conjunto de caracteres.
	\item[sufixo] $S$ será sufixo de $P$ se $P = S'+S$, onde $S'$ é um outro conjunto de caracteres.
	\item[substring] $S$ será substring se não estiver de acordo com nenhuma das condições anteriores.
\end{description}
96

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
97 98 99
De posse desses conceitos, escreva um programa em C que requisita uma string $P$ qualquer, a
armazena, e logo depois requisita a entrada de uma string $S$ e imprime na tela se $S$ é prefixo, sufixo
ou substring de $P$.
100 101 102

O resultado será tal como o exemplo abaixo:

Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
103
\begin{verbatim}
104 105
avaliação
val
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
106
val com relação a avaliação é:
107 108 109 110 111
prefixo: não
sufixo: não
substring: sim

cachorro
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
112
 com relação a cachorro é:
113 114
prefixo: sim
sufixo: sim
Jomaro Rodrigues's avatar
Jomaro Rodrigues committed
115 116
substring: sim
\end{verbatim}
117 118

\end{document}