Autoria: Carlos Eduardo Cayres | 4

14 

Full text

(1)

(VWUXWXUDGH'DGRV

Autoria: Carlos Eduardo Cayres | 4

o

semestre

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. 3

CONVITE

À

LEITURA

(2)

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¿RV

POR

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).

(3)

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.

(4)

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@

([HPSORV9HWRUHV௅3UREOHPDV5HVROYLGRVQD/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

{

(5)

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

(6)

LQFOXGHLRVWUHDP! LQFOXGHVWGLRK! int main() {

LQWD>@E>@UHV>@LM\DX[ IRUL LL

{

SULQWI³'LJLWHRGƒYDORUGRYHWRUD³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³'LJLWHRGƒYDORUGRYHWRUE³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@ {

(7)

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

2YDORUVHUiDWULEXtGRjSRVLomRUHIHUHQWHjOLQKDOLQKDFROXQDFROXQDGDPDWUL]

0 1 2 3

mat 0 1

2 3

(8)

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'LJLWHDGQRWDGRJLQDVWDG³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

(9)

} }

SULQWI³?Q$PHQRUQRWDGRJLQDVWDGIRLQRGDSDUHOKR´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”); }

(10)

/((+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>@>@

(11)

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-PpULFRVFDGDXPHDSUHVHQWHFRPRVDtGDXPžYHWRUUHVXOWDQWHGDLQWHUFDODomRGHVVHVGRLVYHWRUHV9HMDRH[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.

(12)

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~PHURGRGƒDOXQR³FRQW scanf(“%d”, &num);

SULQWI³?Q'LJLWHDPpGLDGRGƒDOXQR³FRQW scanf(“%d”, &media);

LIFRQW {

PDLRU PHGLD QXPBPDLRU QXP PHQRU PHGLD QXPBPHQRU QXP }

else {

LIPHGLD!PDLRU {

PDLRU PHGLD QXPBPDLRU QXP }

LIPHGLDPHQRU {

(13)

} }

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 {

(14)

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@ }

}

Figure

Updating...

References

Updating...

Download now (14 pages)