Commit 15054810 authored by Jomaro Rodrigues's avatar Jomaro Rodrigues

Closes #3

parent fee8e35a
......@@ -2,110 +2,108 @@
\begin{document}
STRINGS
Uma string é uma seq"u^encia de caracteres. As strings são usadas para conter dados de texto - consistem
\chapter{STRINGS}
Uma string é uma sequência de caracteres. As strings são usadas para conter dados de texto - consistem
de letras, algarismos, marcas de pontuação e outros símbolos.
Na linguagem C, strings são armazenadas em matrizes do tipo char, e obedecem `as mesmas regras
Na linguagem C, strings são armazenadas em matrizes do tipo char, e obedecem às mesmas regras
válidas para estas.
êxemplos:
exemplos:
char string[7] = f'B', 'r', á', 's', í', 'l', '"x0'g;
\begin{lstlisting}
char string[7] = {'B', 'r', 'a', 's', 'i', 'l', '\0'};
char string[7] = "Brasil";
char string[ ] = "Brasil";
\end{lstlisting}
OBS.: O símbolo ``\verb|\0|'' indica o final de uma string.
OBS.: O símbolo ""x0"indica o final de uma string.
\section{Algumas funções de manipulação de string}
9.1 Algumas funções de manipula,cão de string
A linguagem C oferece uma biblioteca padrão - string.h - para manipulaç~ao de strings. Apresentamos a
A linguagem C oferece uma biblioteca padrão - string.h - para manipulação de strings. Apresentamos a
seguir algumas das funções contidas nesta biblioteca.
9.1.1 strcpy()
\subsection{strcpy()}
Copia toda a segunda string para a primeira e retorna a string copiada.
\begin{lstlisting}
char *strcpy( char *destino, char *origem );
\end{lstlisting}
9.1.2 strlen()
\subsection{strlen()}
Retorna o tamanho de uma string.
\begin{lstlisting}
unsigned long strlen( char *string );
\end{lstlisting}
9.1.3 strcat()
\subsection{strcat()}
Concatena uma cópia da segunda string ao final da primeira e retorna a string concatenada.
\begin{lstlisting}
char *strcat( char *str1, char *str2 );
\end{lstlisting}
9.1.4 strcmp()
\subsection{strcmp()}
Compara duas strings, caractere por caractere, e retorna um valor.
Uma observação importante é que os caracteres minúsculos s~ao alfabeticamente maiores que os caracteres mai'usculos no contexto da linguagem C. Isso acontece devido ao uso da tabela ASCII.
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.
\begin{lstlisting}
int strcmp( char *str1, char *str2 );
\end{lstlisting}
35
36 CAP
Valor de Retorno Significado
'
\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}
ITULO 9. STRINGS
Valor de Retorno Significado
! 0 str1 é alfabeticamente menor do que str2
= 0 str1 é igual a str2
? 0 str1 é alfabeticamente maior do que str2
9.2 Exercícios
\section{Exercícios}
1. Escreva um programa em C que receba várias palavras (strings) e as imprima na tela em ordem
alfabética. Invente uma maneira criativa para o usuário indicar ao programa que não h'a mais
alfabética. Invente uma maneira criativa para o usuário indicar ao programa que não há mais
palavras a serem lidas.
2. Escreva um programa em C que l^e uma string do teclado e imprime a string invertida.
3. Um palíndromo é uma palavra tal que quando revertida 'e igual a ela mesma. Escreva um programa
que recebe uma palavra e responde se ela é palíndromo ou não.
4. Para toda palavra é possível obter um subconjunto de letras consecutivas da mesma. Este conjunto
2. Escreva um programa em C que lê uma string do teclado e imprime a string invertida.
pode receber denominações específicas de acordo com algumas propriedades que este respeita. Veja
a seguir:
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.
Se P é a palavra completa e S 'e um subconjunto de caracteres consecutivos de P e o operador +
representa a concatenação de duas strings, ent~ao:
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:
ffl prefixo
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:
S será prefixo de P se P = S + S
\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}
0
, onde S' é um outro conjunto de caracteres.
ffl sufixo
S será sufixo de P se P = S
0
+ S, onde S' é um outro conjunto de caracteres.
ffl substring
S será substring se não estiver de acordo com nenhuma das condições anteriores.
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.
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$.
O resultado será tal como o exemplo abaixo:
\begin{verbatim}
avaliação
val
``val com relação a avalia,c~ao é:''
``val com relação a avaliação é:''
prefixo: não
sufixo: não
substring: sim
......@@ -114,6 +112,7 @@ cachorro
`` com relação a cachorro é:''
prefixo: sim
sufixo: sim
substring: sim
substring: sim
\end{verbatim}
\end{document}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment