Buscar

aula_3_labor1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

15/10/2007 Laboratório de Programação I 1 
Laboratório de Programação I 
CADEIA DE CARACTERES 
(string) 
02/03/2013 Jair Alves Barbosa 
15/10/2007 Laboratório de Programação I 2 
REVISÃO 
• Uma cadeia de caracteres (ou string) consiste em uma matriz 
homogênea do tipo escalar char (caracter) que ocupa 1 byte de 
memória para cada caracter; 
char <identificador> [tamanho]; 
• Estas cadeias são sempre encerradas pelo caracter nulo, representado 
pelo símbolo ‘\0’, por isso sempre deve-se especificar um elemento a 
mais na cadeia de caracteres desejada; 
• A linguagem C possui recursos para referência das cadeias de 
caracteres como se elas fossem um dado simples, usando uma 
codificação especifica para a sua correta manipulação; 
• O armazenamento de uma cadeia de caracteres pode ser feita também 
pela função scanf( ), mas devem existir alguns cuidados: 
– não é necessário o operador de endereço (&); 
– o espaço em branco finaliza a cadeia de caracteres lida, ou seja, a 
instrução scanf() insere o \0 no primeiro espaço branco; 
Cadeia de Caracteres (string) 
15/10/2007 Laboratório de Programação I 3 
Usando a FUNÇÃO scanf 
Uma das maneiras de ler uma string é com scanf, ela sempre 
acrescenta o ‘\0’ no primeiro espaço em branco, desprezando o 
restante da string. Além disso, também não é necessário o uso do 
operador &, pois o nome da string é o seu endereço inicial. 
 Exemplo: scanf(“%s”, nome); 
 
FUNÇÃO gets 
Faz a leitura de uma string do dispositivo de entrada (teclado é 
padrão), porém deve-se ter cuidado com a sua utilização, pois ela 
não verifica o tamanho da string. 
 
gets(<identificador_string>); 
 
Exemplo: char nome [ 25 ]; printf ("\n Ola %s", nome); 
 printf(“Digite o seu nome”); // Como 1º argumento de printf é 
 gets(nome); // string, printf(nome); é válido 
Cadeia de Caracteres (string) 
15/10/2007 Laboratório de Programação I 4 
FUNÇÃO puts 
Serve para imprimir uma string por vez, onde o endereço da 
string deve ser informado no argumento da função. Observe o 
exemplo que ilustra algumas das muitas possibilidades de puts. 
Puts termina a impressão de uma string com nova linha, portanto 
a impressão de duas strings na mesma linha deverá feita por 
printf. 
Exemplo: 
int main(void ) 
{ 
 char nome[40]; 
 puts(“Digite seu nome: ”); 
 gets(nome); 
 puts(“Olá, ”); 
 puts(nome); 
 puts(“Puts sempre salta uma linha.”); 
 puts(&nome[4]); 
} 
Digite seu nome: 
Fernando Zara 
Olá, 
Fernando Zara 
Puts sempre salta uma linha 
ando Zara 
Simulação do resultado em tela: 
Cadeia de Caracteres (string) 
15/10/2007 Laboratório de Programação I 5 
Uso de scanf junto com gets 
 
• Quando se utiliza a função scanf para leituras de valores numéricos 
e logo após as funções de leitura de caracteres (gets,getch,getche 
ou getchar), deve-se limpar o buffer de teclado ( local temporário 
para guardar os caracteres digitados antes de serem repassados ao 
programa) através do uso da função fflush(stdin) antes do uso das 
funções de manipulação de caracteres. 
 
stdin = identificação da unidade padrão de entrada (teclado) 
Cadeia de Caracteres 
15/10/2007 Laboratório de Programação I 6 
Exemplo: 
#include<stdio.h> 
#include<conio.c> 
#include<ctype.h> 
int main (void) 
{ 
 float peso; 
 char sexo, nome[20]; 
 puts("Informe o seu nome completo: "); 
 gets(nome); 
 printf("\nInforme o seu peso em Kg: "); 
 scanf("%f",&peso); 
 printf("Escolha a opcao coerente com o 
 seu sexo\n\tM = masculino\n\tF 
 = Feminino: "); 
 sexo = toupper(getchar()); 
 clrscr(); 
 printf("\n\nNome:%s\nPeso:%2.1f\t 
 Sexo: %c",nome,peso,sexo); 
 getch(); } 
#include<stdio.h> 
#include<conio.c> 
#include<ctype.h> 
int main (void) 
{ 
 float peso; 
 char sexo, nome[20]; 
 puts("Informe o seu nome completo: "); 
 gets(Nome); 
 printf("\nInforme o seu peso em Kg: "); 
 scanf("%f",&peso); 
 fflush(stdin); 
 printf("Escolha a opcao coerente com 
o seu sexo\n\tM = masculino\n\tF 
 = Feminino: "); 
 sexo = toupper(getchar()); 
 clrscr(); 
 printf("\n\nNome:%s\nPeso:%2.1f\t 
 Sexo: %c",nome,peso,sexo); 
 getch(); } 
Cadeia de Caracteres–limpa a memória temporária 
15/10/2007 Laboratório de Programação I 7 
Funções de Manipulação de String 
Facilitando a manipulação de strings existem várias funções descritas a seguir, 
que tem seus protótipos definidos no arquivo string.h: 
strlen(x)  retorna o tamanho da string armazenada, sem ‘\0’ 
strcat(x,y)  concatena na string x a string y, sem alterar y 
strcpy(x,y) copia uma string em outra, ou seja, copia y para x 
strcmp(X,Y)  compara duas strings retornando : 
 0  x=y, <0  x <y ou > 0 x>y 
stricmp(X,Y)  compara duas strings desprezando diferenças entre 
 maiúsculas e minúsculas : 
 0  x=y, <0  x <y ou > 0 x>y 
strstr(x,y)  retorna o endereço de memória onde começa y em x ou NULL 
se x não contém y 
tolower(x) retorna o minúsculo do caractere x (ctype.h) 
toupper(y) retorna o maiúsculo do caractere y (ctype.h) 
atoi(x), atol(x), atof(x)  conversão de strings para valores numéricos 
Cadeia de Caracteres (string) 
15/10/2007 Laboratório de Programação I 8 
FUNÇÃO strlen( ) 
 
strlen(x); - onde X corresponde ao endereço de uma string, 
 - retorna o valor inteiro que corresponde ao tamanho 
 da string, sem contar o nulo ( \0 ). 
 
Exemplo: supondo a string x = “Joaquim” a função retornará 7 
 int tam; 
 char nome[10] = “Joaquim”; // atribuindo uma string a variável 
 tam = strlen(nome); // tam contém o tamanho da string 
 : 
nome da 
string 
Cadeia de Caracteres – manipulando strings 
Algumas Funções de Manipulação de Strings 
 A linguagem C não possui operadores que atuem sobre 
uma cadeia de caracteres, porém para facilitar a manipulação 
destas cadeias são disponibilizadas, por meio da diretiva 
#include <string.h>, funções que executam operações úteis, 
onde algumas delas serão apresentadas a seguir: 
15/10/2007 Laboratório de Programação I 9 
FUNÇÃO strcat( ) 
 
strcat(x,y); - concatena a primeira string com o valor da segunda; 
 - segunda string (y neste exemplo) não é alterada; 
 - primeira string (x) recebe o valor concatenado; 
 - CUIDADO, pois esta função não verifica se a segunda 
 string cabe no espaço vazio da primeira; 
 
Exemplo: suponha que seja necessário armazenar dois nomes em 
uma única variável, mas estes dois nomes já estão em 
outras duas variáveis. Assim tem-se que juntá-los, ou 
melhor dizendo, concatená-los em uma só variável. 
char nome1[20]=“Paulo”; // valor de uma string 
char y=nome2[10]=“Bernardo”; // valor de outra string 
strcat(nome1,nome2); // nome1 possui o valor da junção de nome1 com 
nome2 (Bernardo) =nome1 (PauloBernardo) 
 : 
Cadeia de Caracteres – manipulando strings 
nome de 
uma string 
nome de 
outra string 
15/10/2007 Laboratório de Programação I 10 
Cadeia de Caracteres – manipulando strings 
FUNÇÃO strcpy( ) 
 
strcpy(x,y); - copia na primeira string o valor da segunda; 
 - segunda string (y neste exemplo) não é alterada; 
 - primeira string (x) sobrepõe o valor com a segunda; 
 - CUIDADO, pois esta função não verifica se a segunda 
 string (y) cabe no espaço declarado na primeira (x); 
Exemplo: suponha que seja necessário armazenar um mesmo 
nome em duas variáveis diferentes, mas este nome já 
está em uma das variáveis (em y). Assim tem-se que 
copiá-lo sobre uma outra variável. 
 
char nome1[20]=“Paulo”; // valor de uma string 
char nome2[10]=“Bernardo”; // valor de outra string 
strcpy(nome1,nome2) // nome1 fica com o valor da segunda string 
(Bernardo) 
 : 
nome de 
uma string 
nome de 
outra string 
15/10/2007 Laboratório de Programação I 11 
FUNÇÃO strcmp( ) ou stricmp() 
 
strcmp(x,y); - esta função retorna um valor inteiro, resultante 
da diferença dos valores em ASCII dos dois 
primeiros caracteres diferentes das duas strings;- retornando o valor zero, as strings são idênticas; 
 - retornando um valor inteiro diferente de zero 
para indicar que as strings não são iguais. 
 
Exemplo: suponha que seja necessário verificar se o valor de 
uma string (v_1) é igual ao valor de outra string (v_2). 
char v_1[10] = “casa”; 
char v_2[10] = “caso”; 
 if (strcmp(v_1,v_2) = = 0) 
 printf(“Strings iguais”); 
 else 
 printf(“Strings diferentes”); 
Cadeia de Caracteres – manipulando strings 
nome de 
uma string 
nome de 
outra string 
c a s a \0 
c a s o \0 
0 1 2 3 4 5 6 7 8 9 
V_1 
V_2 
 c a s a 
 || || || || 
99 97 115 97 
 c a s o 
 || | || || 
99 97 115 111 
=> o valor retornado pela função < 0 
15/10/2007 Laboratório de Programação I 12 
FUNÇÃO strstr 
 
 
Cadeia de Caracteres – manipulando strings 
strstr(x,y) 
devolve um ponteiro para primeira ocorrência de y na string x . Se y não for 
encontrada é retornado um ponteiro nulo (NULL); 
char str1[80], str2[80]; 
char *p; 
 strcpy (str1, “isto e um pequeno teste ”); 
 strcpy (str2, “um”); 
 p = strstr(str1,str2); 
 if (p){ 
 printf(“ %s foi encontrado em %s na posicao %d \n”, str2, str1,p-str1); 
 printf(“texto apos a string == %s\n”,p); } 
 
Saída do programa 
um foi encontrado em isto e um pequeno teste na posicao 7 
texto apos a string == um pequeno teste 
15/10/2007 Laboratório de Programação I 13 
FUNÇÕES toupper( ) e tolower( ) 
 
 Por meio da diretiva #include <ctype.h> pode-se usar 
outras funções para manipulação de caracteres, onde as que serão 
estudadas nesta aula são: 
Cadeia de Caracteres – manipulando strings 
toupper(x); - onde x corresponde a um único caractere; 
 - retorna o caracter desejado em maiúsculo 
 
 
 
tolower(x); - onde x corresponde a um único caracter; 
 - retorna o valor do caracter desejado em minúsculo 
Exemplo: supondo a variável x = ‘A’ que deverá ser apresentada nesta 
forma ou em minúsculo. 
char carac = ‘A’; 
printf(“Maiusculo=%c Minusculo=%c”,toupper(carac),tolower(carac)); 
Identificação 
de um caracter 
15/10/2007 Laboratório de Programação I 14 
atoi(x); - onde x corresponde ao endereço da string; 
 - converte uma string em um número inteiro (int); 
 - retorna o valor inteiro que corresponde ao valor 
 inteiro da string informada. 
atol(x); - possui as mesmas características da função anterior, 
 mas retorna o valor convertido da string para um 
 valor inteiro longo (long int); 
atof(x); - possui as mesmas características da função anterior, 
 mas retorna o valor convertido da string para um 
 valor real (double/float); 
Exemplo: char DIA[5] = “10”; DIAS = atoi(DIA); 
 int DIAS; printf(“Data = %d”,(DIAS + 3)); 
nome da 
string 
Cadeia de Caracteres – manipulando strings 
FUNÇÕES atoi( ) , atol( ) e atof( ) 
 
 Também por meio da diretiva #include <stdlib.h> pode-
se usar outras funções de manipulação de caracteres como: 
nome da 
string 
15/10/2007 Laboratório de Programação I 15 
Exercício de Fixação 
1) Leia o nome completo de 2 pessoas e apresente o primeiro 
nome somente em letras maiúsculas e na linha seguinte, 
com uma tabulação, o segundo nome em letras 
minúsculas, solicitando outros nomes caso o usuário 
deseje. Somente devem ser usadas funções do padrão 
ANSI da linguagem C. 
 
2) Desenvolva um programa que solicite o nome de cinco 
equipamentos de informática. Compare os cinco nomes 
fornecidos para verificar se existe algum solicitado em 
duplicidade e informe o usuário somente o nome 
duplicado. 
 
3) Faça um programa que solicite o primeiro e o último nome 
de 5 pessoas. Assim que a pessoa informar os dois nomes, 
apresente em tela o tamanho de cada um deles e se for 
possível concatene-os em uma única variável fazendo o 
uso da função de concatenação de strings. 
15/10/2007 Laboratório de Programação I 16 
Exercício de Fixação 
4) Elabore um programa que faça o armazenamento de um 
texto. Em uma janela limpa o texto deverá ser 
apresentada com todas as palavras tendo a sua primeira 
letra em maiúscula e o restante das letras em minúsculo. 
Após a apresentação de todo o texto centralize a linha na 
horizontal e escreva que este texto possui tantas palavras. 
5) A identificação dos nomes de passageiros nas companhias 
de transporte aéreo são descritas obedecendo uma 
padronização, onde se deve primeiro escrever o último 
sobrenome e em seguida o primeiro nome, separando 
ambos por uma barra ‘/’. Por exemplo: Edson Arantes do 
Nascimento teria o seu nome escrito na passagem como: 
Nascimento/Edson. Faça um programa que leia onome 
completo de um passageiro e apresente-o na formatação 
dos transportes aéreos. 
15/10/2007 Laboratório de Programação I 17 
Exercícios de Fixação 
6)Elabore um programa que armazene o nome completo de uma 
pessoa com até 30 caracteres e o apresente em letras maiúsculas 
centralizado em uma janela limpa. Na primeira coluna da linha 
20 apresente quantos caracteres possui este nome e na linha 23 
pergunte se o usuário quer informar outro nome. Caso deseje 
repita o processo até que o usuário não deseje mais ler nenhum 
nome e saia do programa IMEDIATAMENTE (sem pressionar 
qualquer tecla). 
 
7)Faça um programa que armazene uma frase a ser transmitida aos 
candidatos da próxima eleição com até 50 caracteres. Após o 
armazenamento da frase, solicite o primeiro nome do candidato 
e transforme-o todo em maiúsculo, concatenando-o com a 
frase, além de dois pontos. O resultado deverá ser apresentado a 
partir da linha 5. Após a apresentação o programa deverá ser 
encerrado imediatamente após 10 segundos (ver função sleep). 
15/10/2007 Laboratório de Programação I 18 
Referência de Criação e Apoio ao Estudo 
Material para Consulta e Apoio ao Conteúdo 
• Universidade Federal de Minas Gerais - site 
ead1.eee.ufmg.br/cursos (escolha a opção ‘C’) 
 
• SCHILDT, H., C Completo e Total, Editora Makron 
Books do Brasil Editora Ltda, 1996. 
 Capítulo 4 
 
• EVARISTO, J., Aprendendo a programar programando 
em C, Book Express, 205 p., 2001. 
 Capítulo 6 e 7 
 
• MIZRAHI, V. V., Treinamento em Linguagem C, Curso 
Completo, Módulo 2, Makron Books do Brasil Editora 
Ltda,1990. 
 Capítulo 7

Outros materiais