Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 08Linguagem de Programação I - UNIGRAN STRINGS Nesta aula veremos como criar e manipular, que são vetores de char na linguagem C. Veremos o tipo de dados string de uma forma especial por ele ser diferente dos demais tipos. Na verdade as strings são vetores do tipo char que armazenam uma cadeia de caracteres. Quando declaramos uma variável do tipo char, definimos o tamanho dela, o nome da variável e a quantidade de caracteres, essa última informação não é obrigatória, fica a critério do programador. Mas quando o tamanho da string não for informado é estritamente necessário inicializar a variável com algum valor (texto), porque quando o programa iniciar ele vai contar a quantidade de caracteres que o texto possui e vai atribuir esse valor ao tamanho da sua variável. Se isso não for feito a string terá o tamanho 1 e passará a ser uma variável do tipo char, sem ser um vetor de char. String = vetor de char Nesta aula, veremos as principais funções de manipulação de strings: • Função strcpy • Função strcat • Função strcmp • Função strlen • Função toupper • Função tolower 143 Linguagem de Programação I - UNIGRAN Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • criar, alterar, localizar, substituir, contatenar strings através das funções que são fornecidas pela linguagem C; • identificar a melhor função de acordo com o problema proposto; • aprender a declarar e inicializar strings; • entender como ficam armazenados os valores das strings. Seções de estudo • Seção 1 – Declarar, inicializar e atribuir valores a strings • Seção 2 – Função fgets • Seção 3 – Função strcpy • Seção 4 – Função strcat • Seção 5 – Função strcmp • Seção 6 – Função strlen • Seção 7 – Função toupper • Seção 8 – Função tolower Seção 1 – Declarar, inicializar e atribuir valores a strings A representação de uma string é muito semelhante à representação de um vetor, os dois são criados do mesmo jeito, e podem ser inicializados do mesmo jeito. Então o que diferencia um vetor de uma string? Na verdade, ao final da string (na última posição) existe um caracter nulo definido por \0, é ele quem indica que um determinado vetor é uma string. Sintaxe: char nome_da_string[tamanho_da_string + 1] A figura abaixo representa uma string de tamanho 20 com o texto “Vetor de char” armazenado nela. Note que o texto possui 13 caracteres (os caracteres em 144 Linguagem de Programação I - UNIGRAN branco também são computados), e é terminada pelo caracter “\0” que vem logo depois da sequencia de caracteres, indicando o final da string. Os caracteres que não receberam valores, permanecendo em branco, não afetam a estrutura da string. Declarando uma string Exemplo 1: char texto[] = “LIVRO”; Nesse exemplo estamos criando uma variável do tipo string e inicializando-a com o conteúdo “LIVRO”. Podemos dizer, que o programa armazenou essa string da seguinte forma: texto[0] = ‘L’ texto [1] = ‘I’ texto [2] = ‘V’ texto [3] = ‘R’ texto [4] = ‘O’ texto [5] = ‘\0’ Como o tamanho da string não foi declarado na sua criação, o programa identificou que ela possui seis caracteres, pois foi contado o número de caracteres da palavra LIVRO e incluído mais um para o caracter nulo (\0). Somando-se, ao final, seis caracteres. Exemplo 2: char texto[] = {‘L’, ‘I’, ‘V’, ‘R’, ‘O’, ‘\0’}; Nesse exemplo é possível visualizar que cada um dos caracteres foi inserido individualmente na variável texto. Os caracteres serão armazenados da mesma maneira que no Exemplo 1. FIGURA 8.1 – Ilustração de uma string de tamanho 20 Fonte: criação nossa DICA Ao defi nir o tamanho de uma string (vetor de caracteres), não esqueça de computar uma posição a mais, para armazenar o caracter nulo "\0". 145 Linguagem de Programação I - UNIGRAN Exemplo 3: char texto[15] ; No exemplo 3, cria-se a variável texto do tipo char e de tamanho 15, mas nenhum valor é atribuído à ela na sua criação, portanto ela não foi inicializada. Exemplo 4: char texto[10] = “LIVRO” ; A diferença deste exemplo e do exemplo 1, é que neste, estamos informando o tamanho da variável texto. O resultado será o mesmo, apenas neste caso, será possível, no decorrer do programa, inserir um texto que tenha até nove caracteres. É importante saber que para atribuir um valor a uma string não podemos usar o operador de atribuição = como usamos em outros tipos de dados. Só é possível usar esse operador quando estamos inicializando a variável, mas depois que ela já foi inicializada não podemos mais atribuir valores usando esse operador. Seção 2 – Função fgets() A função fgets é utilizada para ler uma cadeia de caracteres (string), ela lê uma string e armazena em uma variável, colocando o caracter \0 no final desta string. Depois de lido o valor do teclado, a função fgets insere "automaticamente", no final da string o caracter "\n" antes de inseri o caracter "\0". Isto acontece porque a tecla ENTER também é entendida como um caracter. Deste modo, sempre haverá uma quebra de linha no final da string que é lida através desta função. Mais a frente, vou ensinar uma técnica para remover este caracter, quando houver a necessidade. Biblioteca: stdio.h ou cstdio Sintaxe: fgets(variavel, tamanho, stdin); Onde: variável – é a variável que vai receber a string informada pelo usuário. 146 Linguagem de Programação I - UNIGRAN tamanho – diz respeito ao número de caracteres que será informado. O tamanho é utilizado para evitar que o usuário informe um texto maior do que o tamanho que foi definido para a variável. Isto não impede que ele informe um texto maior, mas a variável vai considerar apenas os caracteres que não excederem o seu tamanho. stdin – a função fgets é comumente utilizada para ler caracteres de arquivos (do tipo texto), então usamos stdin para informar que os dados vêm do teclado, já que ele (o teclado) é entendido pela linguagem C como um arquivo padrão de entrada. Vamos ver um exemplo? Exemplo: Crie um programa que leia um nome informado pelo usuário e mostre uma mensagem de boas vindas ao usuário seguido do nome informado. A tela de saída do programa visto na figura 8.2 pode ser vista na figura abaixo, depois de informado o seguinte nome: “Regiane Marcon” FIGURA 8.2 - Utilização da função fgets Fonte: criação nossa FIGURA 8.3 – Tela de saída do programa representado pela fi gura 8.2 Fonte: criação nossa 147 Linguagem de Programação I - UNIGRAN Seção 3 – Função strcpy() Essa função é a mais comum e a mais utilizada dentre as funções de manipulação de string. Ela é utilizada para atribuir um valor à uma string, já que isto não é possível apenas utilizando o operador de atribuição “=”. O valor de atribuição, pode ser uma variável do tipo char (vetor de char) ou uma constante de texto, neste segundo caso, o texto deve estar entre aspas duplas. Biblioteca: string.h ou cstring Sintaxe: strcpy(variavel, valor); Onde: variável – diz respeito a variável que vai receber o texto que está sendo atribuído valor – diz respeito ao valor (texto ou variável) que está sendo atribuído a variável em questão. Exemplo: Criar um programa que contenha uma variável do tipo string de tamanho quinze, e que receba os seguintes valores no decorrer do programa: “Linguagem”, “Programacao”, “Programa em C”. FIGURA 8.4 - Utilização da função strcpy Fonte: criação nossa 148 Linguagem de Programação I - UNIGRAN Seção 4 – Função strcat() Essa função é utilizada para concatenar duas strings. Ela adiciona uma string no final da outra. Esta função trabalha com duas strings, sendo que junta as duas strings na primeira (a da esquerda). Biblioteca: string.h ou cstring Sintaxe: strcat(variável_1, texto); Onde: variável_1 – diz respeito a variável que vai receber o resultadoda concatenação texto – diz respeito à variável ou constante cujo valor será obtido para ser concatenado à outra variável. Exemplo: Criar um programa tenha o nome e o sobrenome de uma pessoa. Juntar os dois nomes em uma variável (nome completo) e exibir na tela de saída do programa. FIGURA 8.5 – Tela de saída do programa representado pela fi gura 8.4 Fonte: criação nossa 149 Linguagem de Programação I - UNIGRAN Veja que o nome e o sobrenome ficaram grudados, sem nenhum espaço em branco entre eles, isto porque, a concatenação apenas junta os textos. Mas e se for preciso colocar um espaço entre os nomes? Como fazer? Veja o exemplo abaixo: Explicando o programa: • Linha 6: cria-se a variável nomecompleto que vai receber os nomes concatenados. FIGURA 8.6 - Utilização da função strcat Fonte: criação nossa FIGURA 8.7 – Tela de saída do programa representado pela fi gura 8.6 Fonte: criação nossa FIGURA 8.8 - Utilização da função strcat – inserindo espaço entre os nomes Fonte: criação nossa 150 Linguagem de Programação I - UNIGRAN • Linha 7: copia-se o conteúdo da variável nome para a variável nomecompleto. • Linha 8: concatena-se a variável nomecompleto com o texto “ “. Isto para que haja um espaço entre os nomes. • Linha 9: concatena-se o sobrenome com o nomecompleto. Será adicionado no final, e depois do espaço que foi adicionado antes. Seção 5 – Função strcmp() Essa função é usada para comparar duas strings. Ela compara cada caracter das strings um a um. Quando as strings são iguais, o retorno dessa função é zero, quando a primeira string é menor do que a segunda o retorno é um valor negativo, e quando o valor da primeira string é maior do que a segunda o retorno será um valor positivo. Biblioteca: string.h ou cstring FIGURA 8.9 – Tela de saída do programa representado pela fi gura 8.8 Fonte: criação nossa 151 Linguagem de Programação I - UNIGRAN Sintaxe: strcmp(variável_1, texto); Onde: variável_1 – diz respeito a variável de comparação. texto – diz respeito à variável ou constante cujo valor será comparado com a variável_1. Exemplo: Criar um programa que leia dois nome e mostre-os em ordem crescente. Se os valores informados forem, respectivamente: Maria e Jose. A saída do programa será como na figura abaixo: FIGURA 8.10 - Utilização da função strcmp Fonte: criação nossa FIGURA 8.11 – Tela de saída do programa representado pela fi gura 8.10 Fonte: criação nossa 152 Linguagem de Programação I - UNIGRAN Explicando o programa: como sabemos que o resultado da comparação utilizando strcmp tem três possíveis valores: 0, 1 ou -1. Sabemos também que o resultado será 0 quando as duas strings forem iguais; será 1 quando a string da esquerda possui caracteres “maiores” do que a da direita e que o resultado será -1 quando a string da direita possui caracteres “maiores”. Dadas estas informações, foi feita apenas a codificação utilizando-se de alguns ifs e elses para que o resultado de strcmp fosse comparado, e assim, exibimos os valores das variáveis de modo que elas fiquem em ordem crescente. Seção 6 – Função strlen() Essa função é utilizada para saber quantos caracteres uma string possui, lembrando que uma string é um vetor do tipo char e que o último caractere é o \0. Essa função calcula o número de caracteres ocupados no vetor, sem contar o caracter \0. Biblioteca: string.h ou cstring Sintaxe: strlen(variável_1); Onde: variável_1 – diz respeito a variável cujo tamanho está sendo computado. Exemplo: Criar um programa que tenha uma string de tamanho 30 e leia um valor para ela. Ao final, mostre o número de caracteres que a string informada possui. FIGURA 8.12 - Utilização da função strlen Fonte: criação nossa 153 Linguagem de Programação I - UNIGRAN Depois de informada a string “livro”, note que o tamanho que é mostrado na tela de saída do programa (representado pela figura abaixo) é seis, mas a string possui cinco caracteres apenas. Isto ocorre, porque na função fgets, quando damos o ENTER para finalizar a entrada de dados, a string recebe um “\n” antes do “\0”. Lembrando que na linguagem C, o ENTER corresponde ao caracter “\n”. Vamos ver agora, um programa que elimina o caracter "\n" que é inserido automaticamente no final da string lida quando utilizamos a função fgets. Observe na figura abaixo que o tamanho da string "livro" mudou para cinco, que é realmente o seu tamanho. FIGURA 8.13 – Tela de saída do programa representado pela fi gura 8.12 Fonte: criação nossa FIGURA 8.14 - Utilização da função strlen para retirar o caracter "\n" do fi nal da string Fonte: criação nossa 154 Linguagem de Programação I - UNIGRAN Seção 7 – Função toupper() Essa função é utilizada para modificar um caracter para o caracter maiúsculo equivalente. Sempre que necessário é possível alterar um caracter de minúsculo para maiúsculo utilizando-se a função toupper. Mas preste atenção, com esta função é possível modificar um caracter por vez para maiúsculo. Biblioteca: ctype.h Sintaxe: variavel_1 = toupper(variavel_2); Onde: variável_1 – diz respeito a variável que vai receber o caracter modificado. Esta variável, pode ser a mesma cujo valor deve ser modificado. Exemplo: variavel_1 = toupper(variavel_1). variável_1 – diz respeito a variável cujo valor será modificado. Exemplo: Criar um programa que tenha um caracter, cujo valor deve ser modificado para maiúsculo. FIGURA 8.15 – Tela de saída do programa representado pela fi gura 8.14 Fonte: criação nossa 155 Linguagem de Programação I - UNIGRAN Veja na tela de saída do programa visto na figura 8.16 na figura abaixo, e observe que o caracter "g" foi modificado para "G". Vamos criar agora, um programa que modifique apenas o primeiro caracter de uma string para maiúsculo. O programa apresentado pela figura abaixo, faz o que está sendo pedido. FIGURA 8.16 - Utilização da função toupper - modifi cando um caracter Fonte: criação nossa FIGURA 8.17 – Tela de saída do programa representado pela fi gura 8.16 Fonte: criação nossa FIGURA 8.18 - Utilização da função toupper - modifi cando o primeiro caracter de uma string Fonte: criação nossa 156 Linguagem de Programação I - UNIGRAN Seção 8 – Função tolower() Ao contrário da função toupper, esta função é utilizada para modificar um caracter para minúsculo. Sempre que necessário é possível alterar um caracter de maiúsculo para minúsculo utilizando-se a função tolower. Mas preste atenção, com esta função é possível modificar apenas um caracter por vez para minúsculo. Biblioteca: ctype.h Sintaxe: variavel_1 = tolower(variavel_2); Onde: variável_1 – diz respeito a variável que vai receber o caracter modificado. Esta variável, pode ser a mesma cujo valor deve ser modificado. Exemplo: variavel_1 = tolower(variavel_1). variável_1 – diz respeito a variável cujo valor será modificado. Exemplo: Criar um programa que tenha um caracter, cujo valor deve ser modificado para minúsculo. FIGURA 8.19 – Tela de saída do programa representado pela fi gura 8.18 Fonte: criação nossa 157 Linguagem de Programação I - UNIGRAN Retomando a conversa inicial • Seção 1 – Declarar, inicializar e atribuir valores a strings Descobrimos como criar variáveis do tipo char, e como inicializá-las. Vimos que as ditas strings em linguagem C, são vetores de caracteres (char), e que armazenam cada um dos seus caracteres em uma posição deste vetor. • Seção 2 – Função fgets Esta função facilita a leitura de strings em C, pois ela tem um limitador que não permite que a variável que está recebendo o valor, receba um texto maior FIGURA 8.20 - Utilização da função tolower - modifi cando um caracter Fonte: criação nossa FIGURA 8.21 – Tela de saída do programa representadopela fi gura 8.18 Fonte: criação nossa Vamos relembrar um pouco do que vimos na aula 8? 158 Linguagem de Programação I - UNIGRAN do que o seu tamanho (aquele que foi definido na sua criação). Poderíamos usar scanf e cin, mas acontece que estas duas estruturas quando encontram um espaço em branco no texto, desconsideram o que vem depois, dificultando a leitura de um nome, por exemplo. • Seção 3 – Função strcpy Esta função copia um texto ou o valor de uma variável para outra variável. Lembrando que para atribuir um valor à uma string não podemos simplesmente usar o operador “=” como fazemos com os outros tipos de variáveis. • Seção 4 – Função strcat Esta função concatena uma string à outra, ela junta a segunda string exatamente no final da primeira, sendo assim, a primeira string ficará com o seu conteúdo mais o conteúdo da segunda string. • Seção 5 – Função strcmp Compara os caracteres ASCII de duas strings e identifica quais são “maiores”. Utilizando-se essa função, é possível colocar uma lista de nomes em ordem alfabética, por exemplo. • Seção 6 – Função strlen Essa função consegue contar o número de caracteres que uma string possui. Ela retorna um valor inteiro que refere-se ao tamanho da string. • Seção 7 – Função toupper Esta função converte um caracter para o seu maiúsculo equivalente. Ela manipula caracteres, e não strings, portanto para modificar uma string, é preciso modificar cada um dos seus caracteres individualmente. • Seção 8 – Função tolower Esta função converte um caracter para o seu minúsculo equivalente. Ela manipula caracteres, e não strings, portanto para modificar uma string, é preciso modificar cada um dos seus caracteres individualmente. 159 Linguagem de Programação I - UNIGRAN Sugestões de leituras e sites Leituras Leia o capítulo 6 do livro: Treinamento em linguagem C++ - Módulo 1. Sites • http://www.linguagemc.xpg.com.br/strings.html Autoavaliação Veja se aprendeu a Aula 05 respondendo ao questionário auto-avaliativo. Depois confi ra o resultado das respostas, que está disponível na ferramenta Arquivos da plataforma. 1. Uma string é um vetor de char. ( ) Verdadeiro ( ) Falso 2. O tamanho do string deve ser defi nido na sua declaração. ( ) Verdadeiro ( ) Falso 3. A função fgets lê uma string do teclado e armazena o texto em uma variável, independente do tamanho do texto informado. ( ) Verdadeiro ( ) Falso 4. Podemos manipular individualmente cada um dos caracteres de uma string. ( ) Verdadeiro ( ) Falso 5. A função strcmp verifi ca se uma string tem um número de caracteres maior do que outra. ( ) Verdadeiro ( ) Falso 6. A função strlen computa o tamanho de uma string. ( ) Verdadeiro ( ) Falso 7. toupper e tolower modifi cam um caracter para minúsculo e maiúsculo, respectivamente. ( ) Verdadeiro ( ) Falso 160
Compartilhar