(VWUXWXUDGH'DGRV
Autoria: Carlos Eduardo Cayres | 4
osemestre
Tema 01
Introdução às Estruturas de Dados
7HPD
Introdução às Estruturas de Dados
Autoria: Carlos Eduardo Cayres
Como citar esse documento:
CAYRES, Carlos Eduardo. Estrutura de Dados: Introdução às Estruturas de Dados. Valinhos: Anhanguera Educacional, 2014.
Índice
$QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR ¿QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGL¿FDGD HP OtQJXD SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
Pág. 22
Pág. 23 Pág. 23
Pág. 22 Pág. 20 Pág. 19
ACOMPANHE
NA
WEB
Pág. 3CONVITE
À
LEITURA
Introdução às Estruturas de Dados
Computadores são máquinas que manipulam dados e informações. A computação abrange o estudo da forma como as informações são 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 também compreenda o que escreveu. As linguagens de programação são códigos escritos em uma linguagem que o programador compreende e que o computador consegue interpretar e executar.
Neste tema, você vai estudar os conceitos básicos 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 computação empregados em diversas áreas para resolver os problemas mais variados. Para início de conversa, devemos resgatar o conceito de algoritmos, que são estruturas de programação utilizadas para manipular dados, facilitando a compreensão da manipulação das estruturas de dados.
As estruturas de dados estão em constante aprimoramento, bem como os algoritmos e as linguagens de programação, GL¿FXOWDQGRDHVFROKDGDHVWUXWXUDGHGDGRVLGHDOSDUDDVROXomRGHGHWHUPLQDGRSUREOHPD$LQGDDVVLPDOJXPDV HVWUXWXUDVFRQVLGHUDGDVFOiVVLFDVVmRVHPSUHXPDERDRSomRGH¿QLQGRXPSDGUmRGHHVWUXWXUDVGHGDGRVSDUDD VROXomRGHGHVD¿RV
I t
d
ã à E t
t
d D d
VROXomRGHGHVD¿RVPOR
DENTRO
DO
TEMA
4XDOpRYHUGDGHLURVLJQL¿FDGRGHinformação? Por um lado, o conceito de informação na ciência da computação p VHPHOKDQWH DRV FRQFHLWRV GH SRQWR OLQKD H SODQR QD JHRPHWULD WRGRV HOHV VmR WHUPRV LQGH¿QLGRV VREUH RV TXDLV SRGHP VHU IHLWDV D¿UPDo}HV PDV HOHV SRGHP VHU H[SOLFDGRV HP WHUPRV GH FRQFHLWRV HOHPHQWDUHV (TENENBAUM; LANGSAM; AUGENSTEIN, 1995).
Inteiros Binários e Decimais
O sistema numérico binário é a base do funcionamento dos computadores. O sistema numérico transforma os dados em 0 e 1, e só assim podem ser armazenados na memória. Os dígitos binários são organizados na memória em byte (oito 0 e 1 agrupados, 8 bits), sendo que cada byte é associado a um endereço de memória, o que facilita sua LGHQWL¿FDomRHORFDOL]DomR
1RVVLVWHPDVFRPSXWDFLRQDLVRVFDUDFWHUHVOHWUDVQ~PHURVHVtPERORVVmRLGHQWL¿FDGRVSRUXPFDUDFWHUHQXPpULFR correspondente na tabela ASCII, sendo esse caractere numérico convertido em binário para, posteriormente, ser armazenado na memória.
$VVLPFDGDYDULiYHOpDVVRFLDGDDXPDSRVLomRGHPHPyULDWHQGRFRPRFDUDFWHUtVWLFDXPQRPHHXPWLSRSUHGH¿QLGRV Variáveis podem armazenar valores diferentes ao longo da execução de um programa, mas armazenam um único valor a cada passo da execução.
Tipos de Dados
Na maioria dos problemas resolvidos computacionalmente, os tipos de dados, numérico (números inteiros, real etc.), literal (caractere ou string), estão entre o mais comuns.
Dados do Tipo Numérico
Tipos de dados como números inteiros não possuem casas decimais, podendo ser números positivos ou números negativos. Para armazenar um dado numérico do tipo inteiro, são necessários 2 bytes de memória (o espaço para armazenamento pode variar dependendo da linguagem de programação).
Exemplos de dados numéricos inteiros:
1025
-33
78
-25301
Tipo de dados como números reais possuem casas decimais, podendo ser números positivos ou números negativos. Para armazenar um dado numérico real, são necessários 4 bytes de memória (o espaço para armazenamento pode variar dependendo da linguagem de programação).
Exemplos de dados numéricos reais:
13.35
123.51
-21.08 0.0
Dados do Tipo Literal ou Caractere
São tipos de dados formados por um caractere ou por uma cadeia de caracteres justapostos. Os caracteres podem ser letras minúsculas, letras maiúsculas, números e caracteres especiais. Para armazenar um dado do tipo caractere na memória do computador, é necessário um byte por caractere.
Exemplos de dados literais:
‘teste’
‘1 + 4’
‘exemplos!’
Tipos de Variáveis em C
1DOLQJXDJHP&DVYDULiYHLVGHYHPVHUGHFODUDGDVGHSRLVGDGH¿QLomRGRWLSRGHYDULiYHO2VWLSRVLQWDUPD]HQDU Q~PHURVLQWHLURVÀRDWDUPD]HQDUQ~PHURVUHDLVHFKDUDUPD]HQDUXPFDUDFWHUHVmRRVWLSRVGHGDGRVPDLVXWLOL]DGRV na linguagem C.
3DUDDUPD]HQDUXPDFDGHLDGHFDUDFWHUHQDOLQJXDJHP&GHYHVHXWLOL]DUXPYHWRUGHHOHPHQWRVGRWLSRFKDU
Exemplos de declarações: ÀRDWDE
'HFODUDomRGHXPDYDULiYHOFKDPDGDaHRXWUDFKDPDGDb para armazenar um número real cada uma. FKDUVH[R
'HFODUDomRGHXPDYDULiYHOFKDPDGDsexo para armazenar um caractere. FKDUQRPH>@
'HFODUDomRGHXPDYDULiYHOFKDPDGDnome para armazenar trinta caracteres.
Vetor na Linguagem C
2VYHWRUHVWDPEpPFKDPDGRVGHYDULiYHLVFRPSRVWDVKRPRJrQHDVXQLGLPHQVLRQDLVDSUHVHQWDPFRPRXPDGH suas características a capacidade de armazenar vários valores (dados) com uma única referência de nome dado ao vetor, sendo diferenciados pelo índice do vetor.
3DUDLGHQWL¿FDUDVSRVLo}HVGHXPYHWRUQDOLQJXDJHP&pUHFRPHQGiYHOLQLFLDUVHPSUHHP]HURHWHUPLQDUFRPR YDORUTXHLQGLFDURWDPDQKRGRYHWRUTXDQWLGDGHGHSRVLo}HVGLVSRQtYHLVSDUDDUPD]HQDUGDGRVPHQRVXP
Declaração de Vetor em C
1DOLQJXDJHP&RVYHWRUHVSRGHPVHULGHQWL¿FDGRVQDGHFODUDomRSRUFROFKHWHVGHSRLVGRQRPHGDYDULiYHO 2Q~PHURHQWUHRVFROFKHWHVLQGLFDTXDQWDVSRVLo}HVWHPRYHWRURXVHMDDTXDQWLGDGHGHGDGRVTXHpFDSD]GH armazenar.
Exemplo de vetor:
9HMDPRVDGHFODUDomRGHXPYHWRUFKDPDGRYHWFRPSRVLo}HVGHPHPyULDLQLFLDQGRFRPtQGLFHHLQGRDWpp LJXDODRWDPDQKRGRYHWRU2WLSRLQWQDGHFODUDomRGRYHWRULQGLFDTXHSRGHUmRVHUDUPD]HQDGRVWLSRVGHGDGRV numéricos inteiros.
LQWYHW>@
vet 7 2 5 10 3 21 44 23 4 9
0 1 2 3 4 5 6 7 8 9
Atribuindo Valores a um Vetor em C
ÀRDWYHW>@
6LJQL¿FDTXHYHWQDSRVLomRUHFHEHSRUDWULEXLomRRYDORU
Carregando Valores em um Vetor em C
3DUDFDUUHJDUGDGRVHPXPYHWRUOHUGDGRVGRWHFODGRHDWULEXtORVDXPYHWRUSRGHPRVXVDURWUHFKRGHFyGLJRD VHJXLU
IRUL LL VFDQI³G´ YHW>L@
Imprimindo Valores de um Vetor em C IRUL LL
SULQWI³G?Q´YHW>L@
([HPSORV9HWRUHV3UREOHPDV5HVROYLGRVQD/LQJXDJHP&
Exemplo de um programa em C que carrega um vetor com 10 números inteiros, calcula e mostra dois vetores resultantes contendo os números positivos e os números negativos, respectivamente. Os vetores resultantes poderão ter 10 posições QRPi[LPRVHQGRTXHQHPWRGDVDVSRVLo}HVSRGHUmRVHUSUHHQFKLGDV
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
LQWQXP>@SRV>@QHJ>@LFRQWFRQWBQFRQWBS FRQWBQ
FRQWBS IRUL LL {
SULQWI³'LJLWHRGYDORU³L VFDQI³G´ QXP>L@ LIQXP>L@!
{
SRV>FRQWBS@ QXP>L@
FRQWBS
} else {
QHJ>FRQWBQ@ QXP>L@
FRQWBQ
} }
LIFRQWBQ
printf(“\nVetor de negativos vazio.\n”); else
{
SULQWI³?Q9DORUHVQHJDWLYRV?Q´ IRUL LFRQWBQL
SULQWI³G?Q´QHJ>L@ }
LIFRQWBS
printf(“\nVetor de positivos vazio. \n”); else
{
SULQWI³?Q9DORUHVSRVLWLYRV?Q´ IRUL LFRQWBSL SULQWI³G?Q´SRV>L@ }
system(“PAUSE”); }
Exemplo de um programa em C que faz a leitura de um vetor de 10 posições de números inteiros, colocando os números em ordem crescente durante a leitura.
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
LQWYHW>@LM\DX[ IRUL LL
^SULQWI³'LJLWHXPQ~PHUR³ scanf(“%d”, &aux); M
ZKLOHYHW>M@DX[ ML
M M
IRU\ L\!M\ YHW>\@ YHW>\@ YHW>M@ DX[ }
printf(“\nVetor Ordenado \n”); IRUL LL
SULQWI³G³YHW>L@ system(“PAUSE”); }
Exemplo de um programa em C que carrega dois vetores com 5 números inteiros cada. Na sequência, ordenar os vetores na ordem crescente. Imprimir um terceiro vetor com 10 posições em ordem crescente, resultante da intercalação dos dois vetores.
a 3 5 4 2 1
1 2 3 4 5
a ordenado
1 2 3 4 5
1 2 3 4 5
b 11 2 4 1 6
1 2 3 4 5
b ordenado
1 2 4 6 11
1 2 3 4 5
res 1 1 2 2 3 4 4 5 6 11
1 2 3 4 5 6 7 8 9 10
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
LQWD>@E>@UHV>@LM\DX[ IRUL LL
{
SULQWI³'LJLWHRGYDORUGRYHWRUD³L VFDQI³G´ D>L@
}
IRUL LL {
IRUM MM {
LID>M@!D>M@ { DX[ D>M@ D>M@ D>M@
D>M@ DX[
} } }
IRUL LL {
SULQWI³'LJLWHRGYDORUGRYHWRUE³L VFDQI³G´ E>L@`
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@ {
DX[ UHV>M@
UHV>M@ UHV>M@
UHV>M@ DX[
} } }
SULQWI³?Q9HWRUD?Q´ IRUL LL SULQWI³G³D>L@ SULQWI³?Q9HWRUE?Q´ IRUL LL SULQWI³G³E>L@ SULQWI³?Q9HWRUUHVXOWDQWH?Q´ IRUL LL
SULQWI³G³UHV>L@ system(“PAUSE”); }
Matriz na Linguagem C
0DWUL]HVSRGHPVHUGH¿QLGDVFRPRXPFRQMXQWRGHYDULiYHLVGHPHVPRWLSRLGHQWL¿FDGDVSHORPHVPRQRPH3DUD UHIHUHQFLDUDVSRVLo}HVGHPHPyULDGHXPDPDWUL]pSUHFLVRHVSHFL¿FDUVXDVSRVLo}HVGHQWURGHVWDHVWUXWXUD 1DOLQJXDJHP&XPDPDWUL]SRGHVHUGHFODUDGDFRPRXQLGLPHQVLRQDOPDLVFRQKHFLGDFRPRYHWRUELGLPHQVLRQDOH multidimensional.
(PERUDDVPDWUL]HVPDLVXWLOL]DGDVVHMDPDVELGLPHQVLRQDLVDSHQDVGLPHQV}HVDOJXQVFRPSLODGRUHVSRGHPWUDEDOKDU com até 12 dimensões.
Declarando uma Matriz em C
9HMDPRVDGHFODUDomRGHXPDPDWUL]FKDPDGDPDWFRP[SRVLo}HVGHPHPyULDLQGLFDQGRTXHpXPDPDWUL] FRPOLQKDVHFROXQDVHPTXHRVtQGLFHVUHVSRQViYHLVSRUUHIHUHQFLDUDVSRVLo}HVGDPDWUL]GHYHPVHULQLFLDGRV HPHLQGRDWpHDWp2WLSRÀRDWQDGHFODUDomRGDPDWUL]LQGLFDTXHSRGHUmRVHUDUPD]HQDGRVWLSRVGHGDGRV numéricos reais.
ÀRDWPDW>@>@
A exemplo dos vetores, os índices da matriz devem começar sempre em 0 (zero). Na declaração apresentada, a variável FKDPDGDPDWFRQWpPOLQKDVDHFROXQDVDFDSD]HVGHDUPD]HQDUQ~PHURVUHDLVFRPRSRGHVHUREVHUYDGR DVHJXLU
0 1 2 3
mat 0 1 2
Atribuindo Valores a uma Matriz em C
PDW>@>@
2YDORUVHUiDWULEXtGRjSRVLomRUHIHUHQWHjOLQKDOLQKDFROXQDFROXQDGDPDWUL]
0 1 2 3
mat 0 1
2 3
Carregando Valores em uma Matriz em C
3DUDFDUUHJDUGDGRVHPXPDPDWUL]OHUGDGRVGRWHFODGRHDWULEXtORVDXPDPDWUL]SRGHPRVXVDURWUHFKRGH FyGLJRDVHJXLU
IRUL LL {
IRUM MM
VFDQI³G´ 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
SULQWI³G?Q´PDW>L@>M@ }
([HPSORV0DWUL]3UREOHPDV5HVROYLGRVQD/LQJXDJHP&
([HPSORGHXPSURJUDPDHP&TXHFDUUHJDXPDPDWUL][FRPDSRQWXDomRGHJLQDVWDVHPDSDUHOKRV /LVWDURQ~PHURGRJLQDVWDQ~PHURGDOLQKDHDSDUHOKRHPTXHFDGDJLQDVWDREWHYHPHQRUQRWD3DUD¿QDOL]DUOLVWDU DTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRSULPHLURDSDUHOKRDTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRVHJXQGR DSDUHOKRHDTXDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRWHUFHLURDSDUHOKR
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
ÀRDWQRWDV>@>@PHQRU LQWDDDPHQRUBQRWDLM IRUL LL
{
IRUM MM {
SULQWI³?Q'LJLWHDGQRWDGRJLQDVWDG³ML VFDQI³I´ QRWDV>L@>M@
} }
D D D IRUL LL {
SULQWI³?Q*LQDVWDQ~PHURG´L PHQRU QRWDV>L@>@
PHQRUBQRWD IRUM MM
{
LIQRWDV>L@>M@PHQRU {
PHQRU QRWDV>L@>M@
PHQRUBQRWD M
} }
SULQWI³?Q$PHQRUQRWDGRJLQDVWDGIRLQRGDSDUHOKR´LPHQRUBQRWD LIPHQRUBQRWD
D D
LIPHQRUBQRWD
D D
LIPHQRUBQRWD
D D
}
SULQWI³?Q4XDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRDSDUHOKR G´D SULQWI³?Q4XDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRDSDUHOKR G´D SULQWI³?Q4XDQWLGDGHGHJLQDVWDVFRPPHQRUQRWDQRDSDUHOKR G´D system(“PAUSE”);
}
([HPSORGHXPSURJUDPDHP&TXHFDUUHJDXPDPDWUL][FRPQ~PHURVLQWHLURVHFDOFXODDVRPDGHFDGDOLQKD2 resultado da soma deverá ser armazenado em um vetor. Em seguida, o programa deverá multiplicar cada elemento da PDWUL]SHODVRPDGDVXDOLQKDHLPSULPLUDPDWUL]UHVXOWDQWH
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
LQWPDW>@>@VRPD>@LM
SULQWI³?Q'LJLWHRVHOHPHQWRVGDPDWLU]?Q´
IRUL LL {
IRUM MM {
SULQWI³?Q0DW>G@>G@ ³LM VFDQI³G´ 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?Q´L IRUM MM SULQWI³G³PDW>L@>M@ }
system(“PAUSE”); }
/((+XHL'LDQD3(5(6)DELDQD))0$57,16$QD3DXOD,QWURGXomRH
&RQFHLWRV7LSRVGH'DGRV(VWUXWXUDVGH'DGRVH7LSRV$EVWUDWRVGH'DGRV
• Estruturas de dados é o nome dado à organização de dados de forma coerente e racional, EXVFDQGRPHOKRUDUVHXXVR'HSHQGHQGRGHFRPRXPFRQMXQWRGHGDGRVpRUJDQL]DGRHGHFRPR as operações são efetuadas sobre esses dados, é possível solucionar problemas complexos de forma simples.
'LVSRQtYHOHPKWWSZZZIR]XQLRHVWHEUaIUDWDDHGPDWHULDOBGLGDWLFRBDHGR%LP$XODSGI!$FHVVRHP
+(&.-81,259LOVRQ/yJLFDGH3URJUDPDomR$OJRULWPRVH(VWUXWXUDVGH
'DGRV
• Vários são os modelos de estruturas de dados, sendo alguns bastante clássicos. Ainda assim, QRYRV PRGHORV VXUJHP FRQVWDQWHPHQWH DFRPSDQKDQGR D HYROXomR GRV DOJRULWPRV H GDV linguagens de programação.
'LVSRQtYHOHPKWWSGRFHQWHODJHVLIVFHGXEUYLOVRQMXQLRU0DWHULDO'LGDWLFRLS,3BB/RJLFDSGI!. Acesso HP
/,0$5LFDUGR0DVVD)62$5(66pUJLR&%$XOD([WUD,QWURGXomRD
(VWUXWXUDVGH'DGRV
• ,QWURGXomRjV(VWUXWXUDVGH'DGRV/LVWD3LOKD)LODHÈUYRUHFRPLPSOHPHQWDomRGHXP exemplo de lista em Java.
'LVSRQtYHOHPKWWSVZZZ\RXWXEHFRPZDWFK"Y ),/\]H8Y!$FHVVRHP 7HPSR
Instruções:
$JRUDFKHJRXDVXDYH]GHH[HUFLWDUVHXDSUHQGL]DGR$VHJXLUYRFrHQFRQWUDUiDOJXPDVTXHVW}HVGHP~OWLSOD HVFROKDHGLVVHUWDWLYDV/HLDFXLGDGRVDPHQWHRVHQXQFLDGRVHDWHQWHVHSDUDRTXHHVWiVHQGRSHGLGR
AGORA
É
A
SUA
VEZ
Questão 1
&RPRLQWXLWRGHYHUL¿FDUDVKDELOLGDGHVGHSURJUDPDomRTXHDGTXLULXDWpDJRUDVROXFLRQHXPSUREOHPDVLPSOHVXWLOL]DQGRRV UHFXUVRVGHSURJUDPDomRHVWXGDGRV7DLVFRQKHFLPHQWRVVmRH[WUHPDPHQWHQHFHVViULRVQDVHTXrQFLDGRVFRQWH~GRVSRLVWH -remos muitos exemplos e exercícios baseados na linguagem C.
3UREOHPDSURSRVWR,PSOHPHQWHXPSURJUDPDHP&TXHOHLDFRQMXQWRVGHYDORUHVRSULPHLURUHSUHVHQWDQGRRQ~PHURGR DOXQRHRVHJXQGRUHSUHVHQWDQGRVXDPpGLD¿QDO(QFRQWUHRDOXQRFRPDPDLRUHFRPDPHQRUPpGLD¿QDO$R¿QDOGDH[HFXomR PRVWUHRQ~PHURGRDOXQRFRPDPDLRUPpGLD¿QDOMXQWRjVXDPpGLDHRQ~PHURGRDOXQRFRPDPHQRUPpGLD¿QDOMXQWRjVXD média.
Questão 2
1RTXHVHUHIHUHjGHFODUDomRGHYHWRUHVXQLGLPHQVLRQDLVQDOLQJXDJHP&LGHQWL¿TXHDDOWHUQDWLYDTXHFRUUHVSRQGHjGHFODUDomR de um vetor de inteiros com espaço de armazenamento para 20 números.
a) LQWYHW>@ b) ÀRDWYHW>@ c) FKDUYHW>@ d) LQWYHW>@>@
Questão 3
Na linguagem C, para um vetor cujo limite mínimo é 0 (zero) e o limite máximo é 29 (vinte e nove), qual é a faixa correspondente entre o limite mínimo e máximo do vetor?
a) 0.
b) 29.
c) 31.
d) 30.
e) 1HQKXPDGDVDOWHUQDWLYDVpYHUGDGHLUD
Questão 4
Com base na estrutura de programação da linguagem C, crie um programa que faça a leitura de dois vetores de 5 elementos nu-PpULFRVFDGDXPHDSUHVHQWHFRPRVDtGDXPYHWRUUHVXOWDQWHGDLQWHUFDODomRGHVVHVGRLVYHWRUHV9HMDRH[HPSORDVHJXLU
vet1 2 4 6 8 10
vet2 3 5 7 9 11
vet3 2 3 4 5 6 7 8 9 10 11
Questão 5
Com base na estrutura de programação da linguagem C, crie um programa que faça a leitura de um vetor bidimensional (matriz) 2x2 de elementos numéricos inteiros. Como saída, mostre uma matriz resultante, que será a matriz digitada multiplicada pelo maior valor encontrado na matriz.
Neste tema, você aprendeu conceitos básicos sobre estruturas de dados, que é o nome dado à maneira como os GDGRVVmRRUJDQL]DGRVYLVDQGRRWLPL]DUVHXXVR)RUDPDERUGDGDVDVSULQFLSDLVHVWUXWXUDVGHGDGRVTXHJHUDOPHQWH são utilizadas para a solução dos mais diversos problemas.
Na computação, a estrutura de dados é um dos recursos empregados em diversas áreas para resolver os problemas mais variados, simples ou complexos.
eLPSRUWDQWHREVHUYDUTXHVHXFRQVWDQWHDSULPRUDPHQWRGL¿FXOWDXPSRXFRDHVFROKDGRWLSRGHHVWUXWXUDGHGDGRV mais recomendado para determinado problema; ainda assim, algumas estruturas clássicas são sempre uma boa opção.
N ê d i bá i b d d d é d d à i
FINALIZANDO
$6&(1&,2$)*&$0326($9Fundamentos da programação de computadoresHG6mR3DXOR3UHQWLFH+DOO
+(&.-81,259LOVRQLógica de Programação, Algoritmos e Estruturas de Dados'LVSRQtYHOHPKWWSGRFHQWHODJHVLIVF
HGXEUYLOVRQMXQLRU0DWHULDO'LGDWLFRLS,3BB/RJLFDSGI!$FHVVRHP
/((+XHL'LDQD3(5(6)DELDQD))0$57,16$QD3DXODIntrodução e Conceitos7LSRVGH'DGRV(VWUXWXUDVGH'DGRV
H7LSRV$EVWUDWRVGH'DGRV'LVSRQtYHOHPKWWSZZZIR]XQLRHVWHEUaIUDWDDHGPDWHULDOBGLGDWLFRBDHGR%LP$XODSGI!. $FHVVRHP
/,0$5LFDUGR0DVVD)62$5(66pUJLR&%Aula Extra - Introdução 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
mais recomendado para determinado problema; ainda assim, algumas estruturas clássicas são sempre uma boa opção.
Dados: são características observadas de qualquer coisa (objeto, pessoa, sistema) que possam ser coletadas e arma-]HQDGDVFRPRXVHPXVRGHFRPSXWDGRU2VGDGRVSRGHPVHUFROHWDGRVHDQRWDGRVHP¿FKDVSRUH[HPSOR3RGHP FRQVLVWLUHPQ~PHURVSDODYUDVLPDJHQVHQWUHRXWURV$VFDUDFWHUtVWLFDVGHXPXVXiULRVmRGDGRVGRPHVPRLGDGH VH[R&3)HQGHUHoRHWF1DFRPSXWDomRGDGRVVHOHFLRQDGRVHDUPD]HQDGRVVHPQHQKXPWLSRGHWUDWDPHQWRRX WUDQVIRUPDomRVmRFODVVL¿FDGRVFRPRGDGRVEUXWRV
Informação:SRGHVHGH¿QLULQIRUPDomRFRPRXPFRQMXQWRRUJDQL]DGRGHGDGRVInformação precisa ajuda na tomada de decisões estratégicas e na solução de problemas. Por outro lado, pode-se dizer que informação é um fenômeno que DWULEXLVLJQL¿FDGRRXVHQWLGRjVFRLVDV
Estrutura de Dados:QD&RPSXWDomRHVWUXWXUDGHGDGRVpXPDIRUPDHVSHFt¿FDGHRUJDQL]DomRHDUPD]HQDPHQWR GHGDGRVSDUDTXHVHMDPXWLOL]DGRVGHIRUPDH¿FD]$VHVWUXWXUDVGHGDGRVHVHXVDOJRULWPRVVmRPXLWRXWLOL]DGRVQD &LrQFLDGD&RPSXWDomRHPGLYHUVDViUHDVGRFRQKHFLPHQWRHFRPDVPDLVGLIHUHQWHV¿QDOLGDGHVQDVROXomRGHSUR -blemas computacionais.
D d ã t í ti b d d l i ( bj t i t ) l t d
blemas computacionais.
GABARITO
Questão 1
5HVSRVWD
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK!
int main() {
GABARITO
LQWFRQWQXPPHGLDPDLRUQXPBPDLRUPHQRUQXPBPHQRU IRUFRQW FRQW FRQW
{
SULQWI³?Q'LJLWHRQ~PHURGRGDOXQR³FRQW scanf(“%d”, &num);
SULQWI³?Q'LJLWHDPpGLDGRGDOXQR³FRQW scanf(“%d”, &media);
LIFRQW {
PDLRU PHGLD QXPBPDLRU QXP PHQRU PHGLD QXPBPHQRU QXP }
else {
LIPHGLD!PDLRU {
PDLRU PHGLD QXPBPDLRU QXP }
LIPHGLDPHQRU {
} }
SULQWI³?Q0DLRUPpGLD GpGRDOXQRGHQ~PHURG³PDLRUQXPBPDLRU SULQWI³?Q0HQRUPpGLD GpGRDOXQRGHQ~PHURG³PHQRUQXPBPHQRU system(“PAUSE”);
return 0; }
Questão 2
5HVSRVWDAlternativa A.
Questão 3
5HVSRVWDAlternativa D.
Consideremos lower o limite mínimo de um vetor e upperROLPLWHPi[LPR2Q~PHURGHHOHPHQWRVQRYHWRUFKDPDGR faixa, é dado por upper - lower + 1. No caso da questão, o limite mínimo é 0, o limite máximo é 29 e a faixa é 30, pois ± 30. Ou seja, é possível armazenar 30 elementos no vetor.
Questão 4
5HVSRVWD
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {
LQWYHW>@YHW>@YHW>@LM
M IRUL LL
{
SULQWI³'LJLWHRGHOHPHQWRGRYHWRU ³L VFDQI³G´ YHW>L@
YHW>M@ YHW>L@ j++;
SULQWI³'LJLWHRGHOHPHQWRGRYHWRU ³L VFDQI³G´ YHW>L@
YHW>M@ YHW>L@ j++;
}
printf(“\nO vetor intercalado ‚ “); IRUL LL
SULQWI³G³YHW>L@ system(“PAUSE”); }
Questão 5 5HVSRVWD
LQFOXGHLRVWUHDP! LQFOXGHVWGLRK!
int main() {
LQWPDW>@>@UHVXOWDGR>@>@LMPDLRU
IRUL LL {
IRUM MM {
SULQWI³'LJLWHRHOHPHQWRGDOLQKDGHFROXQDG ³LM VFDQI³G´ PDW>L@>M@
} }
PDLRU PDW>@>@ IRUL LL {
IRUM MM {
LIPDW>L@>M@!PDLRU PDLRU PDW>L@>M@ }
}
IRUL LL {
IRUM MM
UHVXOWDGR>L@>M@ PDLRUPDW>L@>M@ }
printf(“\nImprimindo a matriz resultante\n”); IRUL LL
{
IRUM MM {
SULQWI³0DW>G@>G@ G?Q´LMUHVXOWDGR>L@>M@ }
}