Buscar

Computação Básica - Strings

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 22 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 22 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 22 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

Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
COMPUTAÇÃO BÁSICA
Matrizes
Prof. Bruno Macchiavello (bruno@cic.unb.br)
Universidade de Brasília – UnB 
Instituto de Ciências Exatas – IE 
Departamento de Ciência da Computação – CIC 
Prof. Bruno Macchiavello 1
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Introdução
• Uma cadeia de caracteres (char), ou string, é uma
seqüência de letras e símbolos (dígitos, ?, !, &, *, etc).
• No computador letras, números, símbolos e sinais de
pontuação possuem uma representação baseada em
números, na qual cada número representa um caracterenúmeros, na qual cada número representa um caractere
diferente.
• Atualmente existem dois padrões que são mais
utilizados para associar números a caracteres, que são
o padrão ASCII (American Standard Code for
Information Interchange) e o padrão UTF (de 8, 16 ou 32
bits).
Prof. Bruno Macchiavello 2
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
ASCII e UTF
• No padrão ASCII esses números são
armazenados em variáveis de 1 byte (8 bits),
que podem representar 256 números diferentes
• No padrão UTF-8 eles possuem tamanho de
representação variável. No UTF 16 e 32 são de
tamanho fixo.
• Aqui nos interessa apenas a representação de
um byte (ASCII).
Prof. Bruno Macchiavello 3
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Tabela ASCII
Prof. Bruno Macchiavello 4
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
String como vetor
• Com a tabela ASCII podemos representar uma 
letra como um número, para representar uma 
seqüência de caracteres usamos VETORES.
• Usaremos então a representação de uma string 
como um vetor de caracteres (variáveis do tipo
char).
• Seu final será representado por uma posição no 
vetor contendo o valor NULO.
Prof. Bruno Macchiavello 5
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Exemplo:
Faça um algoritmo que declare como variáveis duas strings de 20 posições e uma
string de 40 posições. Leia as duas de 20, crie uma intercalação das mesmas,
armazenando o resultado na de 40 e mostrando o resultado na tela. O tamanho das
duas strings inseridas será igual e sempre será menor ou igual a 20 caracteres.
Algoritmo SomaEMedia
Variáveis
i, : inteiro
S1, S2 : vetor[21] de char
Prof. Bruno Macchiavello 6
S1, S2 : vetor[21] de char
S3 : vetor[41] de char
Início
Leia(S1) 
Leia(S2) 
i←0
Enquanto (S1[i] != NULO) faça
S3[2*i]←S1[i]
S3[2*i+1]←S2[i]
i←i+1
FimEnquanto
S3[2*i]←NULO
Escreva(“String resultante Soma = ”,S3);
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Observações
• As variáveis foram declaradas como vetores. O segredo
aqui é notar que elas foram declaradas com uma
posição a mais do que o pedido, pois é necessário
armazenar o caractere NULO sinalizando o final de cada
string. A função Leia armazena esse caractere
automaticamente.
• A condição Enquanto (S1[i] != NULO), é utilizada para
testar se a string S1 não chegou ao fim. Neste caso,
essa condição vale pois na especificação do exemplo é
garantido que S1 e S2 terão o mesmo tamanho.
• Veja também que ao final do algoritmo colocamos o
caractere NULO em S3, antes de mandar escrever na
tela. Isto é necessário para que a função Escreva tenha
o comportamento esperado.
Prof. Bruno Macchiavello 7
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
String em C
• A linguagem C NÃO oferece suporte
diretamente ao tratamento de strings, apenas
por meio de bibliotecas, como a <string.h>.
• Caso o programador não deseje utilizá-las,• Caso o programador não deseje utilizá-las,
deverá fazer tudo manualmente, tendo por base
o conceito de vetores de caracteres, e tratando
esses vetores da maneira que já foi vista nesse
curso.
Prof. Bruno Macchiavello 8
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Usando Strings
• Em C, uma cadeia de caracteres é terminada 
com o marcador especial: ‘\0’ (NULO)
• Portanto utilizar uma posição além do tamanho • Portanto utilizar uma posição além do tamanho 
máximo desejado.
SINTAXE
char identificador [ numero_de_caracteres+1]
Prof. Bruno Macchiavello 9
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Usando String
• Exemplos de inicialização
char linha[181];
char nome[31];
char texto[ ] = “nome”;
• Para escrever um string utilizar PRINTF com o 
formato %s
• Para ler um string utilizar SCANF com o formato 
%s
Prof. Bruno Macchiavello 10
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Usando String
• A função scanf precisa ser evocada de maneira especial para
contrário ela irá ler e armazenar somente até o primeiro tratar da
leitura de frases (strings) compostas por mais de uma palavra, caso
espaço em branco.
• Para ler uma string S sem parar nos espaços (só parando no• Para ler uma string S sem parar nos espaços (só parando no
caractere de nova linha), use:
• Outra alternativa é:
• pois o %*c descarta o primeiro caractere que vier após a string, no
caso, o newline, dispensando o getchar();.
Prof. Bruno Macchiavello 11
scanf("%[^\n]s",string1);
getchar();
scanf("%[^\n]s%*c",string1);
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Exemplo:
Programa em C do algoritmo apresentado anteriormente para fazer
intercalação de duas strings. Aqui presumimos que S1 e S2 terão sempre o
mesmo tamanho e usamos apenas os conceitos de vetores de caracteres, sem
usar a biblioteca <string.h>
#include <stdio.h>
int main () {
int i;
char S1[21], S2[21], S3[41];
Pode-se digitar NULL 
ou '\0 '
Prof. Bruno Macchiavello 12
char S1[21], S2[21], S3[41];
scanf("%s",S1);
scanf("%s",S2);
for (i=0; S1[i]!=NULL; i++) {
S3[2*i]=S1[i];
S3[2*i+1]=S2[i];
}
S3[2*i]=NULL;
printf("%s\n",S3);
getchar();
return 0;
}
ou '\0 '
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Algumas Funções da STRING.H
• Função strcpy
strcpy(char *destino, char *origem);
Copia o conteúdo da string origem para a string destino (o Copia o conteúdo da string origem para a string destino (o 
conteúdo de destino é perdido).
Exemplo:
Prof. Bruno Macchiavello 13
char str1[] = “Aluno:”;
char str2[] = “IRA:”;
char texto[21];
strcpy(texto, “Fulano de Tal”);
printf(“%s %s\n”, str1, texto);
strcpy(texto, “4.99”);
printf(“%s %s\n”, str2, texto); 
Departamento de Ciência da ComputaçãoDepartamento de Ciência da ComputaçãoUniversidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Algumas Funções da STRING.H
• Função strlen
strlen(char *str1);
Retorna um valor inteiro com o tamanho da string.Retorna um valor inteiro com o tamanho da string.
Exemplo:
Prof. Bruno Macchiavello 14
char str1[] = “Tamanho da sring”;
char texto[21];
int n;
scanf(“%s”,str2);
n = strlen(str1);
printf(“%s tem tamanho %d\n”, str1, n);
n = strlen(str2);
printf(“%s tem tamanho %d\n”, str2, n);
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Algumas Funções da STRING.H
• Função strcat
strcat(char *destino, char *origem);
Concatena, insere a string origem em destino (destino Concatena, insere a string origem em destino (destino 
precisa ter o tamanho adequado)
Exemplo:
Prof. Bruno Macchiavello 15
char str1[61];char str1[61];
char str2[61];
scanf(“%s”,str2);
scanf(“%s”,str1);
strcpy(str1, str2);
printf(“\n%s\n”, str1);
scanf(“%s”,str1);
strcat(str1, str2);
printf(“\n%s\n”, str1);
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Algumas Funções da STRING.H
• Função strcmp
strcmp(char *str1, char * str2);
0 (str1==str2), <0 (str1 < str2), e >0 (str1 > str2)0 (str1==str2), <0 (str1 < str2), e >0 (str1 > str2)
Exemplo:
Prof. Bruno Macchiavello 16
char str1[21], str2[61];
int res;
scanf(“%s %s”,str1, str2);
res = strcmp(str1, str2);
if (res > 0 )
printf(“’%s’ e maior que ‘%s’\n, str1,str2);
else if (res < 0)
printf(“’%s’ e maior que ‘%s’\n, str2,str1);
else
printf(“’%s’ e ‘%s’ são iguais\n, str1,str2);
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Algumas Funções da STRING.H
FUNÇÃO DESCRIÇÃO
char* strstr (char *palheiro, char 
*agulha)
Essa função procura por *agulha em *palheiro, 
e retorna um ponteiro para a posição onde
*agulha ocorre, ou NULL caso isso não
aconteça.
int strcasecmp (char *s1, char Possui um funcionamento similar ao da
Prof. Bruno Macchiavello 17
int strcasecmp (char *s1, char 
*s2):
Possui um funcionamento similar ao da
strcmp, mas ela ignora as diferenças entre
maiúsculas e minúsculas.
char* strchr (char *s, char c): Retorna um ponteiro para a primeira
ocorrência do caractere c em s, ou NULL caso
não haja.
int atoi(char *str1) Converte o valor da string str1 para um valor
inteiro
double atof(char *str2) Converto o valor da string str1 para um valor
double.
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Vetores de String
• Vetores de strings são matrizes bidimensionais de 
caracteres. 
• Definição de uma matriz bidimensional de caracteres 
(“vetor de strings”) em pseudocódigo: (“vetor de strings”) em pseudocódigo: 
• Definição de uma matriz bidimensional de caracteres 
(“vetor de strings”) em C: 
Prof. Bruno Macchiavello 18
Variáveis 
<nome> : matriz [<nro_strings>] [<compr_strings>] de caracteres
char <nome>[<nro_strings>][<comprimento_strings>];
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Exemplo:
Um algoritmo que lê 5 strings e as exibe na tela.
Algoritmo SomaEMedia
Variáveis
i, : inteiro
nome : matriz[5][30] de char
Início
Prof. Bruno Macchiavello 19
Início
Para i = 0 até 4 faça
Escreva(“Digite uma string: ”)
Leia (nome[i])
FimPara
Escreva(“As strings que voce digitou foram ”)
Para i = 0 até 4 faça
Escreva(nome[i])
FimPara
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Exemplo:
Programa em C do algoritmo apresentado no slide anterior, que lê 5 strings e as
exibe na tela.
#include <stdio.h>
int main () {
int i;
char nome[5][30];
Prof. Bruno Macchiavello 20
char nome[5][30];
for (i=0; i<5; i++) {
printf ("\nDigite uma string: ");
scanf ("%s",nome[i]);
}
printf ("\nAs strings que voce digitou foram:\n\n");
for (i=0;i<5;i++)
printf ("%s\n",nome[i]);
getchar();
getchar();
return 0;
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exercicios
1. Faça um programa em C que leia duas strings e concatene-as em uma
terceira string, mostrando o resultado na tela. Você pode definir o tamanho
das strings, lembrando que o usuário poderá informar strings de tamanhos
diferentes. (SEM USAR A STRING.H)
2. Crie um programa que leia o nome de uma pessoa (20 caracteres) e o
Prof. Bruno Macchiavello 21
2. Crie um programa que leia o nome de uma pessoa (20 caracteres) e o
escreva de trás para frente. Você pode usar a função strlen para descobrir
o tamanho do nome digitado.
3. Faça um programa para remover n caracteres de uma string s, a partir
da posição i. O usuário deve informar s, n, e i. (SEM USAR A
STRING.H)
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exercicios
2. Um erro comum de digitação é colocar as mãos no teclado uma coluna
à direita da posição correta. Com isso o 'Q' será digitado como 'W', o 'J'
como 'K' e assim por diante. Escreva um programa que decodifique uma
mensagem digitada dessa maneira. A entrada do seu programa conterá
uma linha escrita dessa forma, e ela pode conter caracteres maiúsculos,
espaços, números e sinais de pontuação. Seu programa deve fazer a
correção em função do layout de teclado abaixo. Espaços em branco na
entrada devem ser reproduzidos na saída.
Prof. Bruno Macchiavello 22
entrada devem ser reproduzidos na saída.
Exemplo de entrada: O S, GOMR YPFSU/
Exemplo de saída: I AM FINE TODAY.

Continue navegando