Buscar

Algoritmos 15 - Vetores e Manipulacao de cadeias

Prévia do material em texto

N575 - Algoritmos e 
Programação de Computadores 
 
Vetores e manipulação de cadeias 
 
Prof. Raphael Torres Santos Carvalho 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
1 
Roteiro 
 Objetivo 
 Vetores 
 Manipulação de cadeias 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
2 
Objetivo 
 Identificar coleções de elementos de dados do tipos vetores 
apresentando métodos aplicados a essa estrutura. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
3 
Relembrando... 
 Vetores são arrays unidimensionais, ou seja, são variáveis 
indexadas que possuem apenas um índice. 
 Os vetores são estruturas de dados compostas de várias 
posições, onde em cada posição podemos colocar um valor. 
 Quando nós dizemos que uma variável é do tipo vetor nela 
podemos armazenar várias informações do mesmo tipo (por 
isto os vetores são estruturas de dados homogêneas) 
colocando cada informação em uma posição diferente. 
 N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
4 
Relembrando... 
 Sintaxe da declaração de um vetor: 
 
tipo_da_variavel nome_da_variavel[numero_de_elementos]; 
 
 Quando o C vê uma declaração como esta ele reserva um 
espaço na memória suficientemente grande para armazenar o 
número de células especificadas em tamanho. Por exemplo, se 
declararmos: 
float exemplo [20]; 
 
 o C irá reservar 4x20=80 bytes. Estes bytes são reservados de 
maneira contígua. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
5 
Relembrando... 
 Na linguagem C o índice começa sempre em zero. Isto 
significa que, no exemplo acima, os dados serão indexados de 
0 a 19. Para acessá-los vamos escrever: 
 exemplo[0] 
 exemplo[1] 
 ... 
 exemplo[19] 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
6 
Relembrando... 
 Na linguagem C, o tipo char é o tipo básico para armazenar 
caracteres (letra/simbolo/número) da tabela ASCII 
 O tipo char é representado por 8 bits ou 1 byte 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
7 
Tabela ASCII 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
8 
Relembrando... 
 E se quisermos armazenar um nome, uma frase ou um texto 
em Linguagem C, como fazemos? 
 Utilizamos uma cadeia de caracteres. 
 Uma cadeia de caracteres, mais conhecida como string, é uma 
sequência de letras e símbolos, onde os símbolos podem ser 
espaços em branco, dígitos e vários outros como pontos de 
exclamação e interrogação, símbolos matemáticos, etc. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
9 
Strings 
 String em C consiste em um vetor unidimensional de 
caracteres terminada pelo caractere NULL – ’\0’ - do Código 
ASCII. 
 Por isso, e preciso declarar vetores de caracteres com um 
elemento a mais que o tamanho real da string. 
 Por exemplo, na declaração da variável str de 10 elementos: 
 char str[11]; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
10 
Strings - Inicialização 
 Exemplos (o ‘/0’ é inserido automaticamente pelo 
compilador): 
 char time[6] = “VASCO”; 
 char rango[9] = “feijoada”; 
 char cor[6] = {“preto”} 
 char cidade[10] = {“Fortaleza”}; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
11 
Strings - Características 
 O identificador de uma variável string sem referência a 
qualquer índice (isto é, sem os colchetes) indica o endereço 
inicial da string na memória. O caractere ´\0´ indica o final da 
string. 
 Exemplo: 
 Na memória, uma string “UNIFOR” do programa abaixo é 
armazenada da seguinte forma: 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
12 
int main(void) { 
 char n[7] = “UNIFOR“; 
 
 printf(“%s\n”, n); 
 return 0; 
} 
n[0] ‘U’ 0x3AC9 
n[1] ‘N’ 0x3ACA 
n[2] ‘I’ 0x3ACB 
n[3] ‘F’ (0x00) 0x3ACC 
n[4] ‘O’ 0x3ACD 
n[5] ‘R’ 0x3ACE 
n[6] ‘\0’ 0x3ACF 
 n 
Podemos afirmar que n ≡ &n[0]. 
Strings 
 A biblioteca padrão string da linguagem C contém várias 
funções de manipulação de strings. Para usar essas funções, o 
seu programa deve incluir a biblioteca: 
 
#include <string.h> 
 
 Não é possível atribuir a uma variável string uma string, ou 
comparar duas strings via operadores ==, >, >=, < ou <=. 
 Isto deve ser feito somente através das funções da string.h. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
13 
Funções para manipulação de 
strings 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
14 
função descrição 
strlen(s1) Retorna o tamanho de s1 (sem o ´\0´) 
strcpy(s1, s2) Copia s2 (string origem) em s1 (string destino) 
strcnpy(s1, s2, n) Copia s2 em s1, até n caracteres 
strcat(s1, s2) Concatena s2 ao final de s1 
strncat(s1, s2, n) Concatena s2 ao final de s1, até n caracteres 
strcmp(s1, s2) Retorna zero, se s1==s2; negativo, se s1<s2; 
positivo, se s1>s2 
strcmp(s1, s2, n) Compara apenas os n primeiros caracteres de 
s1 e s2 
Strings - Exemplos 
 Ler duas strings e verificar se são iguais ou diferentes. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
15 
#include <string.h> 
 
int main(void) { 
 char str0[80], str1[80]; 
 
 printf("Digite a primeira string: "); 
 scanf("%s", str0); 
 printf("Digite a segunda string: "); 
 scanf("%s", str1); 
 
 if(!strcmp(str0, str1)) 
 printf("As strings são iguais.\n"); 
 else 
 printf("As strings são diferentes.\n"); 
 
 return 0; 
} 
Exercício 
1. Faça uma função que receba como parâmetro de entrada 
uma frase (de até 100 caracteres) e uma letra, e retorne a 
quantidade de vezes que esta letra aparece na frase. Escreva 
também o programa principal que chama a função. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
16 
Dúvidas? 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
17

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes