Professional Documents
Culture Documents
Tema 01
Introduo s Estruturas de Dados
7HPD
Introduo s Estruturas de Dados
Autoria: Carlos Eduardo Cayres
ndice
CONVITELEITURA
Pg. 3
ACOMPANHENAWEB
PORDENTRODOTEMA
Pg. 3
Pg. 19
Pg. 20
Pg. 22
Pg. 22
Pg. 23
Pg. 23
$QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGLFDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
CONVITELEITURA
Neste tema, voc vai estudar os conceitos bsicos sobre Estrutura de Dados, que o nome dado forma de
organizar dados visando otimizar seu uso. Abordaremos as principais estruturas de dados que podem ser aplicadas na
maioria dos problemas com sucesso.
Estrutura de dados um dos fundamentos da computao empregados em diversas reas para resolver os problemas
mais variados. Para incio de conversa, devemos resgatar o conceito de algoritmos, que so estruturas de programao
utilizadas para manipular dados, facilitando a compreenso da manipulao das estruturas de dados.
As estruturas de dados esto em constante aprimoramento, bem como os algoritmos e as linguagens de programao,
GLFXOWDQGR D HVFROKD GD HVWUXWXUD GH GDGRV LGHDO SDUD D VROXomR GH GHWHUPLQDGR SUREOHPD$LQGD DVVLP DOJXPDV
HVWUXWXUDV FRQVLGHUDGDV FOiVVLFDV VmR VHPSUH XPD ERD RSomR GHQLQGR XP SDGUmR GH HVWUXWXUDV GH GDGRV SDUD D
VROXomRGHGHVDRV
PORDENTRODOTEMA
IIntroduo
t d
s E
Estruturas
t t
d
de D
Dados
d
Computadores so mquinas que manipulam dados e informaes. A computao abrange o estudo da forma
como as informaes so organizadas, manipuladas e utilizadas em um computador.
Ao desenvolver um programa para realizar o processamento de dados, preciso transcrever de forma que o computador
possa compreender e executar tal programa e que o programador tambm compreenda o que escreveu. As linguagens
de programao so cdigos escritos em uma linguagem que o programador compreende e que o computador consegue
interpretar e executar.
PORDENTRODOTEMA
4XDOpRYHUGDGHLURVLJQLFDGRGHinformao? Por um lado, o conceito de informao na cincia da computao
p VHPHOKDQWH DRV FRQFHLWRV GH SRQWR OLQKD H SODQR QD JHRPHWULD WRGRV HOHV VmR WHUPRV LQGHQLGRV VREUH
RV TXDLV SRGHP VHU IHLWDV DUPDo}HV PDV HOHV SRGHP VHU H[SOLFDGRV HP WHUPRV GH FRQFHLWRV HOHPHQWDUHV
(TENENBAUM; LANGSAM; AUGENSTEIN, 1995).
PORDENTRODOTEMA
Exemplos de dados numricos inteiros:
1025
-33
78
-25301
Tipo de dados como nmeros reais possuem casas decimais, podendo ser nmeros positivos ou nmeros negativos.
Para armazenar um dado numrico real, so necessrios 4 bytes de memria (o espao para armazenamento pode
variar dependendo da linguagem de programao).
Exemplos de dados numricos reais:
13.35
123.51
-21.08
0.0
Dados do Tipo Literal ou Caractere
So tipos de dados formados por um caractere ou por uma cadeia de caracteres justapostos. Os caracteres podem
ser letras minsculas, letras maisculas, nmeros e caracteres especiais. Para armazenar um dado do tipo caractere na
memria do computador, necessrio um byte por caractere.
Exemplos de dados literais:
teste
1 + 4
exemplos!
PORDENTRODOTEMA
Tipos de Variveis em C
1DOLQJXDJHP&DVYDULiYHLVGHYHPVHUGHFODUDGDVGHSRLVGDGHQLomRGRWLSRGHYDULiYHO2VWLSRVLQWDUPD]HQDU
Q~PHURVLQWHLURVRDWDUPD]HQDUQ~PHURVUHDLVHFKDUDUPD]HQDUXPFDUDFWHUHVmRRVWLSRVGHGDGRVPDLVXWLOL]DGRV
na linguagem C.
3DUDDUPD]HQDUXPDFDGHLDGHFDUDFWHUHQDOLQJXDJHP&GHYHVHXWLOL]DUXPYHWRUGHHOHPHQWRVGRWLSRFKDU
Exemplos de declaraes:
RDWDE
'HFODUDomRGHXPDYDULiYHOFKDPDGDaHRXWUDFKDPDGDb para armazenar um nmero real cada uma.
FKDUVH[R
'HFODUDomRGHXPDYDULiYHOFKDPDGDsexo para armazenar um caractere.
FKDUQRPH>@
'HFODUDomRGHXPDYDULiYHOFKDPDGDnome para armazenar trinta caracteres.
Vetor na Linguagem C
2VYHWRUHVWDPEpPFKDPDGRVGHYDULiYHLVFRPSRVWDVKRPRJrQHDVXQLGLPHQVLRQDLVDSUHVHQWDPFRPRXPDGH
suas caractersticas a capacidade de armazenar vrios valores (dados) com uma nica referncia de nome dado ao
vetor, sendo diferenciados pelo ndice do vetor.
3DUDLGHQWLFDUDVSRVLo}HVGHXPYHWRUQDOLQJXDJHP&pUHFRPHQGiYHOLQLFLDUVHPSUHHP]HURHWHUPLQDUFRPR
YDORUTXHLQGLFDURWDPDQKRGRYHWRUTXDQWLGDGHGHSRVLo}HVGLVSRQtYHLVSDUDDUPD]HQDUGDGRVPHQRVXP
Declarao de Vetor em C
1D OLQJXDJHP & RV YHWRUHV SRGHP VHU LGHQWLFDGRV QD GHFODUDomR SRU FROFKHWHV GHSRLV GR QRPH GD YDULiYHO
2 Q~PHUR HQWUH RV FROFKHWHV LQGLFD TXDQWDV SRVLo}HV WHP R YHWRU RX VHMD D TXDQWLGDGH GH GDGRV TXH p FDSD] GH
armazenar.
PORDENTRODOTEMA
Exemplo de vetor:
9HMDPRVDGHFODUDomRGHXPYHWRUFKDPDGRYHWFRPSRVLo}HVGHPHPyULDLQLFLDQGRFRPtQGLFHHLQGRDWpp
LJXDODRWDPDQKRGRYHWRU2WLSRLQWQDGHFODUDomRGRYHWRULQGLFDTXHSRGHUmRVHUDUPD]HQDGRVWLSRVGHGDGRV
numricos inteiros.
LQWYHW>@
vet
7
0
2
1
5
2
10
3
3
4
21 44 23
5 6 7
4
8
9
9
6LJQLFDTXHYHWQDSRVLomRUHFHEHSRUDWULEXLomRRYDORU
Carregando Valores em um Vetor em C
3DUDFDUUHJDUGDGRVHPXPYHWRUOHUGDGRVGRWHFODGRHDWULEXtORVDXPYHWRUSRGHPRVXVDURWUHFKRGHFyGLJRD
VHJXLU
IRUL LL
VFDQIG YHW>L@
Imprimindo Valores de um Vetor em C
IRUL LL
SULQWIG?QYHW>L@
([HPSORV9HWRUHV3UREOHPDV5HVROYLGRVQD/LQJXDJHP&
Exemplo de um programa em C que carrega um vetor com 10 nmeros inteiros, calcula e mostra dois vetores resultantes
contendo os nmeros positivos e os nmeros negativos, respectivamente. Os vetores resultantes podero ter 10 posies
QRPi[LPRVHQGRTXHQHPWRGDVDVSRVLo}HVSRGHUmRVHUSUHHQFKLGDV
PORDENTRODOTEMA
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
LQWQXP>@SRV>@QHJ>@LFRQWFRQWBQFRQWBS
FRQWBQ
FRQWBS
IRUL LL
{
SULQWI'LJLWHRGYDORUL
VFDQIG QXP>L@
LIQXP>L@!
{
SRV>FRQWBS@ QXP>L@
FRQWBS
}
else
{
QHJ>FRQWBQ@ QXP>L@
FRQWBQ
}
}
LIFRQWBQ
PORDENTRODOTEMA
SULQWI?Q9DORUHVQHJDWLYRV?Q
IRUL LFRQWBQL
SULQWIG?QQHJ>L@
}
LIFRQWBS
PORDENTRODOTEMA
M M
IRU\ L\!M\
YHW>\@ YHW>\@
YHW>M@ DX[
}
printf(\nVetor Ordenado \n);
IRUL LL
SULQWIGYHW>L@
system(PAUSE);
}
Exemplo de um programa em C que carrega dois vetores com 5 nmeros inteiros cada. Na sequncia, ordenar os
vetores na ordem crescente. Imprimir um terceiro vetor com 10 posies em ordem crescente, resultante da intercalao
dos dois vetores.
a
a
ordenado
b
b
ordenado
res
5
5
11
11
11
10
PORDENTRODOTEMA
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
LQWD>@E>@UHV>@LM\DX[
IRUL LL
{
SULQWI'LJLWHRGYDORUGRYHWRUDL
VFDQIG D>L@
}
IRUL LL
{
IRUM MM
{
LID>M@!D>M@
{
DX[ D>M@
D>M@ D>M@
D>M@ DX[
}
}
}
IRUL LL
{
SULQWI'LJLWHRGYDORUGRYHWRUEL
VFDQIG E>L@`
PORDENTRODOTEMA
IRUL LL
{
IRUM MM
{
LIE>M@!E>M@
{
DX[ E>M@
E>M@ E>M@
E>M@ DX[
}
}
}
M
IRUL LL
{
UHV>M@ D>L@
j++;
UHV>M@ E>L@
j++;
}
IRUL LL
{
IRUM MM
{
LIUHV>M@!UHV>M@
{
PORDENTRODOTEMA
DX[ UHV>M@
UHV>M@ UHV>M@
UHV>M@ DX[
}
}
}
SULQWI?Q9HWRUD?Q
IRUL LL
SULQWIGD>L@
SULQWI?Q9HWRUE?Q
IRUL LL
SULQWIGE>L@
SULQWI?Q9HWRUUHVXOWDQWH?Q
IRUL LL
SULQWIGUHV>L@
system(PAUSE);
}
Matriz na Linguagem C
0DWUL]HVSRGHPVHUGHQLGDVFRPRXPFRQMXQWRGHYDULiYHLVGHPHVPRWLSRLGHQWLFDGDVSHORPHVPRQRPH3DUD
UHIHUHQFLDUDVSRVLo}HVGHPHPyULDGHXPDPDWUL]pSUHFLVRHVSHFLFDUVXDVSRVLo}HVGHQWURGHVWDHVWUXWXUD
1DOLQJXDJHP&XPDPDWUL]SRGHVHUGHFODUDGDFRPRXQLGLPHQVLRQDOPDLVFRQKHFLGDFRPRYHWRUELGLPHQVLRQDOH
multidimensional.
(PERUDDVPDWUL]HVPDLVXWLOL]DGDVVHMDPDVELGLPHQVLRQDLVDSHQDVGLPHQV}HVDOJXQVFRPSLODGRUHVSRGHPWUDEDOKDU
com at 12 dimenses.
PORDENTRODOTEMA
Declarando uma Matriz em C
9HMDPRVDGHFODUDomRGHXPDPDWUL]FKDPDGDPDWFRP[SRVLo}HVGHPHPyULDLQGLFDQGRTXHpXPDPDWUL]
FRPOLQKDVHFROXQDVHPTXHRVtQGLFHVUHVSRQViYHLVSRUUHIHUHQFLDUDVSRVLo}HVGDPDWUL]GHYHPVHULQLFLDGRV
HPHLQGRDWpHDWp2WLSRRDWQDGHFODUDomRGDPDWUL]LQGLFDTXHSRGHUmRVHUDUPD]HQDGRVWLSRVGHGDGRV
numricos reais.
RDWPDW>@>@
A exemplo dos vetores, os ndices da matriz devem comear sempre em 0 (zero). Na declarao apresentada, a varivel
FKDPDGDPDWFRQWpPOLQKDVDHFROXQDVDFDSD]HVGHDUPD]HQDUQ~PHURVUHDLVFRPRSRGHVHUREVHUYDGR
DVHJXLU
0
mat 0
1
2
Atribuindo Valores a uma Matriz em C
PDW>@>@
2YDORUVHUiDWULEXtGRjSRVLomRUHIHUHQWHjOLQKDOLQKDFROXQDFROXQDGDPDWUL]
0
mat
0
1
2
PORDENTRODOTEMA
Carregando Valores em uma Matriz em C
3DUDFDUUHJDUGDGRVHPXPDPDWUL]OHUGDGRVGRWHFODGRHDWULEXtORVDXPDPDWUL]SRGHPRVXVDURWUHFKRGH
FyGLJRDVHJXLU
IRUL LL
{
IRUM MM
VFDQIG PDW>L@>M@
}
1RH[HPSORDSUHVHQWDGRREVHUYDPRVXPDPDWUL]FRPOLQKDVSRUWDQWRRFRPDQGRIRUPDLVH[WHUQRYDULRXGHD
SDUDSHUFRUUHUDVOLQKDVGDPDWUL]HRFRPDQGRIRUPDLVLQWHUQRYDULRXGHDSDUDSHUFRUUHUDVFROXQDVGD
matriz).
Imprimindo os Dados de uma Matriz em C
3DUDLPSULPLUPRVWUDURVYDORUHVGDPDWUL]GRH[HPSORDQWHULRUSRGHPRVXVDURFyGLJRDVHJXLU
IRUL LL
{
IRUM MM
SULQWIG?QPDW>L@>M@
}
([HPSORV0DWUL]3UREOHPDV5HVROYLGRVQD/LQJXDJHP&
([HPSOR GH XP SURJUDPD HP & TXH FDUUHJD XPD PDWUL] [ FRP D SRQWXDomR GH JLQDVWDV HP DSDUHOKRV
/LVWDURQ~PHURGRJLQDVWDQ~PHURGDOLQKDHDSDUHOKRHPTXHFDGDJLQDVWDREWHYHPHQRUQRWD3DUDQDOL]DUOLVWDU
DTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRSULPHLURDSDUHOKRDTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRVHJXQGR
DSDUHOKRHDTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRWHUFHLURDSDUHOKR
PORDENTRODOTEMA
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
RDWQRWDV>@>@PHQRU
LQWDDDPHQRUBQRWDLM
IRUL LL
{
IRUM MM
{
SULQWI?Q'LJLWHDGQRWDGRJLQDVWDGML
PHQRUBQRWD M
PORDENTRODOTEMA
}
}
SULQWI?Q$PHQRUQRWDGRJLQDVWDGIRLQRGDSDUHOKRLPHQRUBQRWD
LIPHQRUBQRWD
D D
LIPHQRUBQRWD
D D
LIPHQRUBQRWD
D D
}
PORDENTRODOTEMA
IRUL LL
{
IRUM MM
{
SULQWI?Q0DW>G@>G@ LM
VFDQIG PDW>L@>M@
}
}
IRUL LL
{
VRPD>L@
IRUM MM
VRPD>L@ VRPD>L@PDW>L@>M@
}
IRUL LL
{
IRUM MM
PDW>L@>M@ PDW>L@>M@
VRPD>L@
}
printf(\nMatriz resultante);
IRUL LL
{
SULQWI?Q/LQKDG?QL
IRUM MM
SULQWIGPDW>L@>M@
}
system(PAUSE);
}
ACOMPANHENAWEB
/((+XHL'LDQD3(5(6)DELDQD))0$57,16$QD3DXOD,QWURGXomRH
&RQFHLWRV7LSRVGH'DGRV(VWUXWXUDVGH'DGRVH7LSRV$EVWUDWRVGH'DGRV
Estruturas de dados o nome dado organizao de dados de forma coerente e racional,
EXVFDQGRPHOKRUDUVHXXVR'HSHQGHQGRGHFRPRXPFRQMXQWRGHGDGRVpRUJDQL]DGRHGHFRPR
as operaes so efetuadas sobre esses dados, possvel solucionar problemas complexos de
forma simples.
'LVSRQtYHOHPKWWSZZZIR]XQLRHVWHEUaIUDWDDHGPDWHULDOBGLGDWLFRBDHGR%LP$XODSGI!$FHVVRHP
+(&.-81,259LOVRQ/yJLFDGH3URJUDPDomR$OJRULWPRVH(VWUXWXUDVGH
'DGRV
Vrios so os modelos de estruturas de dados, sendo alguns bastante clssicos. Ainda assim,
QRYRV PRGHORV VXUJHP FRQVWDQWHPHQWH DFRPSDQKDQGR D HYROXomR GRV DOJRULWPRV H GDV
linguagens de programao.
'LVSRQtYHOHPKWWSGRFHQWHODJHVLIVFHGXEUYLOVRQMXQLRU0DWHULDO'LGDWLFRLS,3BB/RJLFDSGI!. Acesso
HP
/,0$5LFDUGR0DVVD)62$5(66pUJLR&%$XOD([WUD,QWURGXomRD
(VWUXWXUDVGH'DGRV
,QWURGXomR jV (VWUXWXUDV GH 'DGRV /LVWD 3LOKD )LOD H UYRUH FRP LPSOHPHQWDomR GH XP
exemplo de lista em Java.
'LVSRQtYHOHPKWWSVZZZ\RXWXEHFRPZDWFK"Y ),/\]H8Y!$FHVVRHP
7HPSR
AGORAASUAVEZ
Instrues:
$JRUDFKHJRXDVXDYH]GHH[HUFLWDUVHXDSUHQGL]DGR$VHJXLUYRFrHQFRQWUDUiDOJXPDVTXHVW}HVGHP~OWLSOD
HVFROKDHGLVVHUWDWLYDV/HLDFXLGDGRVDPHQWHRVHQXQFLDGRVHDWHQWHVHSDUDRTXHHVWiVHQGRSHGLGR
Questo 1
&RPRLQWXLWRGHYHULFDUDVKDELOLGDGHVGHSURJUDPDomRTXHDGTXLULXDWpDJRUDVROXFLRQHXPSUREOHPDVLPSOHVXWLOL]DQGRRV
UHFXUVRVGHSURJUDPDomRHVWXGDGRV7DLVFRQKHFLPHQWRVVmRH[WUHPDPHQWHQHFHVViULRVQDVHTXrQFLDGRVFRQWH~GRVSRLVWHremos muitos exemplos e exerccios baseados na linguagem C.
3UREOHPDSURSRVWR,PSOHPHQWHXPSURJUDPDHP&TXHOHLDFRQMXQWRVGHYDORUHVRSULPHLURUHSUHVHQWDQGRRQ~PHURGR
DOXQRHRVHJXQGRUHSUHVHQWDQGRVXDPpGLDQDO(QFRQWUHRDOXQRFRPDPDLRUHFRPDPHQRUPpGLDQDO$RQDOGDH[HFXomR
PRVWUHRQ~PHURGRDOXQRFRPDPDLRUPpGLDQDOMXQWRjVXDPpGLDHRQ~PHURGRDOXQRFRPDPHQRUPpGLDQDOMXQWRjVXD
mdia.
Questo 2
1RTXHVHUHIHUHjGHFODUDomRGHYHWRUHVXQLGLPHQVLRQDLVQDOLQJXDJHP&LGHQWLTXHDDOWHUQDWLYDTXHFRUUHVSRQGHjGHFODUDomR
de um vetor de inteiros com espao de armazenamento para 20 nmeros.
a) LQWYHW>@
b) RDWYHW>@
c) FKDUYHW>@
d) LQWYHW>@>@
e) 1HQKXPDGDVDOWHUQDWLYDVpYHUGDGHLUD
AGORAASUAVEZ
Questo 3
Na linguagem C, para um vetor cujo limite mnimo 0 (zero) e o limite mximo 29 (vinte e nove), qual a faixa correspondente
entre o limite mnimo e mximo do vetor?
a) 0.
b) 29.
c) 31.
d) 30.
e) 1HQKXPDGDVDOWHUQDWLYDVpYHUGDGHLUD
Questo 4
Com base na estrutura de programao da linguagem C, crie um programa que faa a leitura de dois vetores de 5 elementos nuPpULFRVFDGDXPHDSUHVHQWHFRPRVDtGDXPYHWRUUHVXOWDQWHGDLQWHUFDODomRGHVVHVGRLVYHWRUHV9HMDRH[HPSORDVHJXLU
vet1
10
vet2
11
vet3
10 11
Questo 5
Com base na estrutura de programao da linguagem C, crie um programa que faa a leitura de um vetor bidimensional (matriz)
2x2 de elementos numricos inteiros. Como sada, mostre uma matriz resultante, que ser a matriz digitada multiplicada pelo
maior valor encontrado na matriz.
FINALIZANDO
Neste tema, voc
N
aprendeu
d conceitos
i
bsicos
b i
sobre
b estruturas de
d dados,
d d
que o nome dado
d d maneira
i como os
GDGRVVmRRUJDQL]DGRVYLVDQGRRWLPL]DUVHXXVR)RUDPDERUGDGDVDVSULQFLSDLVHVWUXWXUDVGHGDGRVTXHJHUDOPHQWH
so utilizadas para a soluo dos mais diversos problemas.
Na computao, a estrutura de dados um dos recursos empregados em diversas reas para resolver os problemas
mais variados, simples ou complexos.
eLPSRUWDQWHREVHUYDUTXHVHXFRQVWDQWHDSULPRUDPHQWRGLFXOWDXPSRXFRDHVFROKDGRWLSRGHHVWUXWXUDGHGDGRV
mais recomendado para determinado problema; ainda assim, algumas estruturas clssicas so sempre uma boa opo.
REFERNCIAS
$6&(1&,2$)*&$0326($9Fundamentos da programao de computadoresHG6mR3DXOR3UHQWLFH+DOO
+(&.-81,259LOVRQLgica de Programao, Algoritmos e Estruturas de Dados'LVSRQtYHOHPKWWSGRFHQWHODJHVLIVF
HGXEUYLOVRQMXQLRU0DWHULDO'LGDWLFRLS,3BB/RJLFDSGI!$FHVVRHP
/((+XHL'LDQD3(5(6)DELDQD))0$57,16$QD3DXODIntroduo e Conceitos7LSRVGH'DGRV(VWUXWXUDVGH'DGRV
H7LSRV$EVWUDWRVGH'DGRV'LVSRQtYHOHPKWWSZZZIR]XQLRHVWHEUaIUDWDDHGPDWHULDOBGLGDWLFRBDHGR%LP$XODSGI!.
$FHVVRHP
/,0$5LFDUGR0DVVD)62$5(66pUJLR&%Aula Extra - Introduo a Estruturas de Dados'LVSRQtYHOHPKWWSVZZZ
\RXWXEHFRPZDWFK"Y ),/\]H8Y!$FHVVRHP
7(1(1%$80$DURQ0/$1*6$0<HGLG\DK$8*(167(,10RVKH-Estruturas de dados usando C6mR3DXOR0DNURQ
%RRNV
GLOSSRIO
Dados:
D
d
so
caractersticas
t ti
observadas
b
d de
d qualquer
l
coisa
i (objeto,
( bj t pessoa, sistema)
i t
) que possam ser coletadas
l t d e arma]HQDGDVFRPRXVHPXVRGHFRPSXWDGRU2VGDGRVSRGHPVHUFROHWDGRVHDQRWDGRVHPFKDVSRUH[HPSOR3RGHP
FRQVLVWLUHPQ~PHURVSDODYUDVLPDJHQVHQWUHRXWURV$VFDUDFWHUtVWLFDVGHXPXVXiULRVmRGDGRVGRPHVPRLGDGH
VH[R &3) HQGHUHoR HWF 1D FRPSXWDomR GDGRV VHOHFLRQDGRV H DUPD]HQDGRV VHP QHQKXP WLSR GH WUDWDPHQWR RX
WUDQVIRUPDomRVmRFODVVLFDGRVFRPRGDGRVEUXWRV
Informao:SRGHVHGHQLULQIRUPDomRFRPRXPFRQMXQWRRUJDQL]DGRGHGDGRVInformao precisa ajuda na tomada
de decises estratgicas e na soluo de problemas. Por outro lado, pode-se dizer que informao um fenmeno que
DWULEXLVLJQLFDGRRXVHQWLGRjVFRLVDV
Estrutura de Dados:QD&RPSXWDomRHVWUXWXUDGHGDGRVpXPDIRUPDHVSHFtFDGHRUJDQL]DomRHDUPD]HQDPHQWR
GHGDGRVSDUDTXHVHMDPXWLOL]DGRVGHIRUPDHFD]$VHVWUXWXUDVGHGDGRVHVHXVDOJRULWPRVVmRPXLWRXWLOL]DGRVQD
&LrQFLDGD&RPSXWDomRHPGLYHUVDViUHDVGRFRQKHFLPHQWRHFRPDVPDLVGLIHUHQWHVQDOLGDGHVQDVROXomRGHSURblemas computacionais.
GABARITO
Questo 1
5HVSRVWD
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
GABARITO
LQWFRQWQXPPHGLDPDLRUQXPBPDLRUPHQRUQXPBPHQRU
IRUFRQW FRQW FRQW
{
SULQWI?Q'LJLWHRQ~PHURGRGDOXQRFRQW
scanf(%d, &num);
SULQWI?Q'LJLWHDPpGLDGRGDOXQRFRQW
scanf(%d, &media);
LIFRQW
{
PDLRU PHGLD
QXPBPDLRU QXP
PHQRU PHGLD
QXPBPHQRU QXP
}
else
{
LIPHGLD!PDLRU
{
PDLRU PHGLD
QXPBPDLRU QXP
}
LIPHGLDPHQRU
{
PHQRU PHGLD
QXPBPHQRU QXP
}
GABARITO
}
}
SULQWI?Q0DLRUPpGLD GpGRDOXQRGHQ~PHURGPDLRUQXPBPDLRU
SULQWI?Q0HQRUPpGLD GpGRDOXQRGHQ~PHURGPHQRUQXPBPHQRU
system(PAUSE);
return 0;
}
Questo 2
5HVSRVWDAlternativa A.
Questo 3
5HVSRVWDAlternativa D.
Consideremos lower o limite mnimo de um vetor e upperROLPLWHPi[LPR2Q~PHURGHHOHPHQWRVQRYHWRUFKDPDGR
faixa, dado por upper - lower + 1. No caso da questo, o limite mnimo 0, o limite mximo 29 e a faixa 30, pois
30. Ou seja, possvel armazenar 30 elementos no vetor.
Questo 4
5HVSRVWD
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
LQWYHW>@YHW>@YHW>@LM
M
IRUL LL
GABARITO
{
SULQWI'LJLWHRGHOHPHQWRGRYHWRU L
VFDQIG YHW>L@
YHW>M@ YHW>L@
j++;
SULQWI'LJLWHRGHOHPHQWRGRYHWRU L
VFDQIG YHW>L@
YHW>M@ YHW>L@
j++;
}
printf(\nO vetor intercalado );
IRUL LL
SULQWIGYHW>L@
system(PAUSE);
}
Questo 5
5HVSRVWD
LQFOXGHLRVWUHDP!
LQFOXGHVWGLRK!
int main()
{
LQWPDW>@>@UHVXOWDGR>@>@LMPDLRU
IRUL LL
{
GABARITO
IRUM MM
{
SULQWI'LJLWHRHOHPHQWRGDOLQKDGHFROXQDG LM
VFDQIG PDW>L@>M@
}
}
PDLRU PDW>@>@
IRUL LL
{
IRUM MM
{
LIPDW>L@>M@!PDLRU
PDLRU PDW>L@>M@
}
}
IRUL LL
{
IRUM MM
UHVXOWDGR>L@>M@ PDLRU
PDW>L@>M@
}
printf(\nImprimindo a matriz resultante\n);
IRUL LL
{
IRUM MM
{
SULQWI0DW>G@>G@ G?QLMUHVXOWDGR>L@>M@
}
}
system(PAUSE);
}