You are on page 1of 38

ED Estrutura de Dados

Tpico 3

Tpicos da disciplina
1) Tipos de Dados:
Tipos Primitivos;
Mecanismos para Construo de Tipos;
Variveis, Declaraes e Expresses
2) Matrizes:
Matri!es "nidimensionais e Multidimensionais;
Matri!es Especiais e Matri!es Esparsas
3) Cadeias de Caracteres:
Tipos;
#peraes e aplicaes

Tpicos da disciplina
4) Listas Lineares:
Conceituao;
#peraes $ %epresentao;
&istas c$ Descritor; &istas Duplamente Encadeadas
Pil'as, (ilas e %ecursividade;
5) rvores:
De)inio $ Terminolo*ia $ %epresentao;
+rvores ,inrias;
-plicaes;
Construo de +rvores;
Camin'amento em +rvores
) !es"uisa de Dados:
Pes.uisa /e.0encial e Pes.uisa ,inria

#oc$ sa%ia& ' poss(ve) *azer sorteios
e+ )in,ua,e+ de pro,ra+a-.o/

Cadeias de Caracteres

- lin*ua*em C no o)erece um tipo caractere


#s caracteres na verdade so representados
internamente na memria do computador por
cdi*os num1ricos

# tipo 2c'ar3 tem 4 56te e pode representar o


intervalo de 789 valores di)erentes de uma
ta5ela de cdi*os

Em *eral usa:se a ta5ela -/C;; &em5re:se


m.uinas di)erentes podem usar ta5elas de
cdi*os di)erentes (i.ue atento para a
porta5ilidade

Cadeias de Caracteres

Em C a di)erena entre caracteres e inteiros


est apenas na maneira como so tratados

Podemos imprimir o mesmo valor de duas


)ormas di)erentes<
c0ar c 1 234
print* 567d 7c 8n9: c: c)4
23 a

Cadeias de Caracteres

"ma constante de caracteres 1 escrita


utili!ando:a com aspas si+p)es

-ssim a expresso ;a; 1 uma constante de


caracteres e resulta na impresso de seu valor
num1rico associado ao caractere =
c0ar c 1 ;a;4
print* 567d 7c 8n9: c: c)4
23 a

Cadeias de Caracteres

Cadeias de Caracteres

Cadeia de caracteres

Capturar u+ caractere si+p)es4


c'ar a;
scan) >2?c3, @aA;

Capturar cadeia de caracteres4


$$ lB somente a se.uencia de caracteres no 5rancos
c'ar cidadeCD4E; $$ Fo ' @ antes da varivel
scan)>2?s3, cidadeA; $$ pois a cadeia 1 um vetor
$$ 2?s3 no pula caracteres em 5ranco
para ler )rases com espao 2?C-:G a:!E3 ou 2?7HCIJnE3

!ara )er no+es co+postos4


c'ar cidade CD4E; $$ entre colc'etes todos os caracteres .ue sero aceitos
scan)>2 ?DHCIJnE3,cidadeA; $$ taman'o mximo K DH e C?aeiouE s para vo*ais
scan)>L?CIJnEL,nomeA; $$ &e tudo .ue )oi di*itado >)raseA at1 o enter



E<iste u+ erro a"ui / =ua) > &

Manipu)ar cadeias de caracteres

Manipu)ar cadeias de caracteres

Manipu)ar cadeias de caracteres

Manipu)ar cadeias de caracteres

Manipu)ar cadeias de caracteres

Manipu)ar cadeias de caracteres

?trin,s

/trin*s de caracteres so matri!es unidimensionais;


c'ar nomeC44E;

(unes para strin*s > @inc)ude Astrin,B0C A


M strcp6 >s4,s7A Copia s7 em s4;
M strcat >s4,s7A Concatena s7 ao )inal de s4;
M strlen >s4A %etorna o taman'o de s4;
M strcmp >s4,s7A %etorna H se s4Ks7 , NH se s4Ns7 e OH se s4Os7;
M strc'r >s4,c'A %etorna um ponteiro para a primeira ocorrBncia
de c' em s4;
M strstr >s4,s7A %etorna um ponteiro para a primeira ocorrBncia
de s7 em s4;

Di,ite a pri+eira strin,:Dona)d
Di,ite a se,unda strin,:Costa
Co+pri+entos: ?11 ?215
Dona)dCosta
EEC Fsso > u+ testeB

o estG e+ a)o
o)a encontrado

ParPmetros da )uno +ain
- )uno principal pode rece5er dois parPmetros,
*eralmente c'amados de ar,c e ar,v
ar,c K rece5e o nQmero de ar*umentos
passados para o pro*rama .uando este 1
executado;
ar,v K 1 um vetor de caracteres .ue arma!ena
os nomes passados como ar*umentos

ParPmetros da )uno +ain
Considere uma )uno main declarada da se*uinte )orma<
int +ain 5int ar,c: c0arHH ar,v)
I
BBB
J
"m pro*rama executvel com o nome mensa*em )oi *erado a
partir do cdi*o acima /e esse pro*rama )or invocado com a
lin'a de comando<
+ensa,e+ estruturas de dados

ParPmetros da )uno +ain
+ensa,e+ estruturas de dados
- varivel ar*c rece5er o valor R
- varivel ar*v rece5er os se*uintes elementos<
ar*vCHEK3mensa*em3, ar*vC4EK3estruturas3,
ar*vC7EK3de3 e ar*vCSEK3dados3

ParPmetros da )uno +ain

/intaxe de tKpede*
- sintaxe de t6pede) 1 )cil Primeiro, escreva uma
declarao de uma varivel do tipo deseTado Por exemplo,
int Uptri;
declara uma varivel ptri >do tipo ponteiro:para:inteiroA
-*ora escreva Lt6pede)L antes da declarao<
t6pede) int Uptri;
Com isso, ptri passa a ser o nome de um novo tipo >idBntico
ao tipo ponteiro:para:inteiroA Esse tipo pode ser usado para
declarar novos ponteiros:para:inteiros, como p e .<
ptri p, .;

/intaxe de tKpede* e estruturasBBB
;ma*ine uma estrutura para *uardar os dados de um
ponto no plano cartesiano<

declara uma varivel ponto >re*istroA .ue 1 um par
ordenado de reais
struct V
)loat x;
)loat 6;
W ponto;
struct ponto V
)loat x;
)loat 6;
W ;
ou

/intaxe de tKpede* e estruturasBBB
Para criar um T;P# de estrutura >re*istroA preceda a declarao com
um t6pede)<
t6pede) struct V
)loat x;
)loat 6;
W ponto;
-*ora ponto passa a ser o nome de um novo tipo de dados >idBntico a
par ordenado de reaisA Esse tipo pode ser usado para declarar
novos pontos<
ponto a, 5; $$ Declaramos as variveis a e 5 do tipo 2ponto3

/intaxe de tKpede* e estruturasBBB
#s elementos de uma estrutura podem ser acessados
usando o operador de acesso 2ponto3
aB< 1 1LBL4
%BK 1 5BL4
Manipulamos os elementos de uma estrutura da
mesma )orma .ue variveis simples Podemos
acessar seus valores, atri5uir valores, acessar
endereos e etc

E<e+p)o si+p)es do uso de
estruturasBBB

Mic0a de N)unosBBB
#a+os criar u+a ?TDOCT para u+a *ic0a de
a)unoBBB
Fome com 8H caracteres;
Fome da disciplina com 4HH caracteres
Fota da prova4;
Fota da prova7;

Mic0a de N)unosBBB
struct )ic'aXdeXaluno
V
c'ar nomeC8HE;
c'ar disciplinaCSHE;
)loat notaXprova4;
)loat notaXprova7;
W;

NLOPQ 1L
B B B
B B B
NLOPQ 3
Fome com 8H caracteres;
Fome da disciplina com 4HH caracteres
Fota da prova4;
Fota da prova7;
Mic0a de N)unosBBB
E se o siste+a precisar cadastrar 1L
a)unos&&&
NLOPQ 2
Fome com 8H caracteres;
Fome da disciplina com 4HH caracteres
Fota da prova4;
Fota da prova7;
NLOPQ 1
Fome com 8H caracteres;
Fome da disciplina com 4HH caracteres
Fota da prova4;
Fota da prova7;

!onteiro para estruturas
Da mesma )orma .ue )a!emos<
struct ponto p4
Podemos declarar ponteiros de estruturas<
struct ponto Hpp4 RRponteiro para a estrutura p
/e a varivel pp arma!ena o endereo da estrutura podemos
acessar os campos da estrutura indiretamente, por meio de
seu ponteiro<
5Hpp)B< 1 12BL4 RRneste caso par$nteses o%ri,atrio
ppEC< 1 12BL4 RRneste caso se+ par$ntese
/e deseTarmos acessar o endereo<
SppEC<

!assa,e+ de estrutura para *un-.o
Passando a estrutura<
void i+pri+e 5struct ponto p)
I
print*56Q ponto *ornecido *oi: 57B2*:7B2*)8n9: pB<: pBK)4
J
: Passa a estrutura completa para a )uno;
: Fo altera o valor ori*inal da estrutura, pois rece5e uma
cpia >como o )eito em uma varivel normalA;
: Consome muita memria dependendo do taman'o da
estrutura

!assa,e+ de u+ !QPTEFDQ da
estrutura para *un-.o
Passando a estrutura<
void i+pri+e 5struct pontoH pp)
I
print*56Q ponto *ornecido *oi: 57B2*:7B2*)8n9: ppEC<: ppECK)4
J
: Passa apenas um ponteiro da estrutura para a )uno;
: Pode alterar valores na estrutura, pois tra5al'a com o
endereo dos campos da estrutura;
: Consome apenas R 56tes de memria pois apenas *uarda o
endereo da pil'a onde est a estrutura na memria

!assa,e+ de u+ !QPTEFDQ da
estrutura para *un-.o

#5ri*ado
!ro*essor Dona)d Costa
sc'eroltY*mailcom
Ensino ?uperior co+ *oco e+ ?QMTTNDE LF#DE/
!eda,o,ica+ente corretoBBB ?ocia)+ente UustoBBB

You might also like