CCO 013 e COM 110
Fundamentos de
Programação
Prof. Roberto Affonso da Costa Junior
Universidade Federal de Itajubá
AULA 09
●
Agregados Homogêneos
–
Variáveis Indexadas
Cadeia de Caracteres
●
String
●
Cadeia ou string
●
●
O Cadeia ou string?
– É a coleção de caracteres.
Qual a diferença entre Vetor de Caracter e String?
–
É o caractere nulo ('\0') que é interpretado como
fim da parte relevante do vetor
Programa 1
#include <stdio.h>
#include <string.h>
int main() {
char st[100]; //Vetor de caracter
int i;
st[0] = 'A';
st[1] = 'B';
st[2] = 'C';
st[3] = '\0';
st[4] = 'D';
Programa 1
printf("Imprimindo a string\n");
printf("%s\n",st);
printf("Imprimindo o vetor de caracter\n");
for (i = 0; i < 5; i++)
{
printf("%c", st[i]);
}
printf("\n");
return 0;
}
Saída do programa 1 e
comentários
●
O que o programa imprimiu?
Imprimindo a string
ABC
Imprimindo o vetor de caracter
ABCD
●
Qual a diferença ?
–
O caractere nulo ('\0')
Biblioteca “string.h”
●
●
Para o programa anterior você declarou a include
“string.h”, contudo, ela não foi necessária, pois não
utiliza nenhuma função dessa biblioteca.
Vamos colocar no exercício anterior, embaixo do
printf("\n"); e antes do return 0; o seguinte comando
da biblioteca “string.h”
printf(“tamanho de st = %d\n”, strlen(st));
O que saiu?
●
Qual foi o resultado do printf?
●
Porque?
Programa 2
#include <stdio.h>
#include <string.h>
int main()
{
char st[100] = "Eu amo programar";
//Vetor de caracter
int i;
printf("Imprimindo a string\n");
printf("%s\n",st);
Programa 2
printf("Imprimindo o vetor de caracter\n");
for (i = 0; i < strlen(st); i++)
{
printf("%c", st[i]);
}
printf("\n");
printf("tamanho de st = %d\n", strlen(st));
return 0;
}
Saída do programa 2
●
O que o programa imprimiu?
Imprimindo a string
Eu amo programar
Imprimindo o vetor de caracter
Eu amo programar
tamanho de st = 15
●
Porque os dois sairão iguais?
●
Qual a diferença entre eles?
Programa 3
#include <stdio.h>
#include <string.h>
int main()
{
char st1[20], st2[20]; //Vetor de caracter
int i, n;
printf("Entre com uma palavra: ");
scanf(" %s",st1);
n = strlen(st1); //Tamanho de st1
Programa 3
for (i = n - 1; i > -1 ; --i)
{
st2[i] = st1[n - 1 - i];
}
printf("st1 = %s\n", st1);
printf("st2 = %s\n", st2);
return 0;
}
Perguntas do programa 3
●
●
●
Se você digitar seu primeiro nome como ele sai em
st2?
Qual o tamanho do seu primeiro nome? É o valor de
n? Você pode imprimir esse valor?
O que o laço for está fazendo com seu primeiro nome?
função strcmp()
●
●
O nome é uma abreviatura de “string compare”;
Recebe duas strings e compara as duas
lexicograficamente. Ela devolve um número negativo
se a primeira string for lexicograficamente menor que
a segunda, devolve 0 se as duas strings são iguais e
devolve um número positivo se a primeira string for
lexicograficamente maior que a segunda.
Programa 4
#include <stdio.h>
#include <string.h>
int main()
{
char st1[20], st2[20]; //Vetor de caracter
printf("Entre com uma palavra: ");
scanf(" %s",st1);
printf("Entre com outra palavra: ");
scanf(" %s",st2);
printf("A diferença entre elas é: %d\n", strcmp(st1,st2));
return 0;
}
Pergunta do programa 4
●
●
●
Entre com st1 = aaa e st2 = aaa. Responda:
Responda
– A diferença entre elas é: ??
Entre com st1 = aaa e st2 = aba. Responda:
Responda
– A diferença entre elas é: ??
Entre com st1 = aba e st2 = aaa. Responda:
Responda
– A diferença entre elas é: ??
Lexicográfica
●
A ordem lexicográfica a que nos referimos acima é análoga à
ordem das palavras em um dicionário. Ela se baseia na
ordenação dos caracteres estabelecida na tabela ISO8859-1*,
da mesma forma que a ordem das palavras em um dicionário se
baseia na ordenação usual das letras no alfabeto. Para comparar
duas strings s e t, procura-se a primeira posição, digamos k, em
que as duas strings diferem. Se s[k] vem antes de t[k] na tabela
ISO então s é lexicograficamente menor que t. Se k não está
definido então s e t são idênticas ou uma é prefixo próprio da
outra; nesse caso, a string mais curta é lexicograficamente
menor que a mais longa.
*http://www.ime.usp.br/~pf/algoritmos/apend/iso-8859-1.html
função strcpy()
●
A função strcpy() é usada para copiar o conteúdo de
um string para outro. Ela tem dois argumentos:
strcpy(s1, s2) copia o conteúdo do string s2 para o
string s1.
função strcat()
●
A função strcpy() é usada para concatenar o conteúdo
de uma string para outro. Ela tem dois argumentos:
strcat(s1, s2) concatena o conteúdo do string s2 para o
string s1.
função strchr()
●
●
Retorna um ponteiro para a localização em que o
caractere 'ch' aparece na string pela primeira vez na
string apontada por *str, ou NULL se não encontrar.
Isto é, ela retorna o índice da primeira ocorrência de
'ch'
função strstr()
●
●
Retorna um ponteiro que indica a primeira ocorrência
da string 'substr' na string 'str'.
Isto é, ela retorna o índice da primeira ocorrência de
'substr'
Programa 5
#include <stdio.h>
#include <string.h>
int main()
{
char st1[20], st2[20]; //Vetor de caracter
printf("Entre com uma palavra: ");
scanf(" %s",st1);
printf("Entre com outra palavra: ");
scanf(" %s",st2);
Programa 5
if (strcmp(st1,st2) == 0)
{
printf("São iguais\n");
} else {
printf("Não são iguais\n");
}
return 0;
}
Treinamento
1)Faça um programa que receba uma string e a
retorne escrita de trás pra frente.
2)Faça um programa que leia uma string do teclado e
diga se ela é palíndrome. Uma string é palíndrome
quando pode ser lida tanto de trás pra frente quanto
de frente para trás e possui exatamente a mesma
seqüência de caracteres.
Ex.: ASA, SUBI NO ONIBUS.
Treinamento
3)Faça um programa que conte quantas letras
maiúsculas existem numa string recebida como
parâmetro.
4)Faça um programa que conte quantas letras
minúsculas existem numa string recebida como
parâmetro.
5)Faça um programa que troque todas as letras
maiúsculas por minúsculas e as minúsculas por
maiúsculas de uma string recebida como parâmetro.
6)Faça um programa que receba 2 strings (A e B) e
retorne uma terceira string (C) formada pelos
caracteres de A e B intercalados. Ex.: Se A='Quarta'
e B='Segunda', a resposta deve ser 'QSueagrutnada'.
Treinamento
7)Faça um programa que dadas as strings C e B do
exercício anterior, retorne a string A.
8)Faça um programa que receba como entrada três
strings (A, B e C) e retorne uma quarta string
formada pela substituição de todas as ocorrências
da string B pela string C dentro da string A. Ex.: Se
A='Abra a porta para entrar para poder descansar
calmamente', B='para' e C='e tente', a resposta deve
ser: 'Abra a porta e tente entrar e tente descansar
calmamente'.
9)Faça um programa que receba uma string A a
ordene.
Treinamento
10)Faça um programa que leia uma string e um
caracter. Localize esse caracter na string e troque-o
por %.
11)Faça um programa que leia duas strings (A e B). B
é uma substring de A. Diga em que posição da
string ela ocorre.
Exemplo: “Jogando bola” e “ando”, ela ocorre em
12) Crie um programa que duplique cada caractere da
string.
Download

Aula 9 - Prof. Roberto Affonso da Costa Junior