Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Tipos de Dados Agregados: Vetores e Registros em C++, Notas de aula de Introdução à Computação

Os tipos de dados agregados, especificamente vetores (arrays) e registros (estruturas), em programação. Explica como organizar dados homogêneos e heterogêneos, alocar memória para vetores, acessar componentes usando índices e campos, e declara tipos de registro. Inclui exemplos de declaração, alocação e manipulação de vetores e registros em c++, além de problemas propostos e exercícios para praticar o uso dessas estruturas de dados. O material também cobre a modularização do código, com a criação de funções auxiliares para entrada de dados e cálculo de áreas, demonstrando a aplicação prática de vetores em problemas geométricos. Útil para estudantes de ciência da computação e áreas relacionadas que desejam aprofundar seus conhecimentos em estruturas de dados e programação estruturada.

Tipologia: Notas de aula

2018

Compartilhado em 11/08/2025

hugo-da-silva-souza-3
hugo-da-silva-souza-3 🇧🇷

6 documentos

1 / 31

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
permitem a implementação de agrupamentos de dados ,
exemplos:
lista de valores que representam as taxas mensais de
inflação durante um ano;
ficha de cadastro de um funcionário nome, idade,
salário, quantidade de dependentes, cargo.
Tipos agregados
ou
Tipos estruturados
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Pré-visualização parcial do texto

Baixe Tipos de Dados Agregados: Vetores e Registros em C++ e outras Notas de aula em PDF para Introdução à Computação, somente na Docsity!

permitem a implementação de agrupamentos de dados ,

exemplos:

  • lista de valores que representam as taxas mensais de

inflação durante um ano;

  • ficha de cadastro de um funcionário – nome, idade,

salário, quantidade de dependentes, cargo.

Tipos agregados ou Tipos estruturados

Possibilitam tratar conjuntos de dados de forma coletiva, em

contraposição aos tipos escalares, que são tratados de forma

individual;

exemplo de dados escalares:

o salário de um funcionário da empresa;

exemplo de dados agregados:

o conjunto dos salários de todos os empregados

de uma empresa.

Tipos agregados ou Tipos estruturados

A organização é sequencial e a referência a cada um dos componentes é feita

utilizando-se o nome do agrupamento acompanhado de um índice.

Em C/C++ a indexação é estabelecida por valores inteiros, a partir de zero;

para tornar as construções mais naturais pode-se empregar a indexação a

partir de 1 (e não de zero), mas para isso utiliza-se um componente a mais

pois o componente de índice zero não é utilizado.

A escolha do nome do agrupamento segue as mesmas regras válidas para a

escolha de nomes de variáveis de tipo escalar.

agregados homogêneos – vetor ou array

nome do agrupamento

índices

vet

agrupamento

componentes

uma variável de tipo array (no exemplo a variável vet)

armazena uma referência ao agrupamento (endereço do

agrupamento) definido pela declaração do agrupamento.

Exemplo

int vet[10];

agregados homogêneos – vetor ou array 0 1 2 3 4 5 6 7 8 9 vet

outro exemplo:

int k;

float lista[7];

lista[1]= 3.3;

for(k=2; k<7; k=k+1){

lista[k]=8-lista[k-1]*k;

agregados homogêneos – vetor ou array

Questão:

Quais serão os conteúdos dos

componentes do vetor lista?

lista

0 1 2 3 4 5 6

outro exemplo:

int k;

float lista[7];

lista[1]= 3.3;

for(k=2; k<7; k=k+1){

lista[k]=8-lista[k-1]*k;

agregados homogêneos – vetor ou array

lista

0 1 2 3 4 5 6

conteúdos dos componentes do vetor lista :

uma variável de tipo registro (no exemplo a variável ficha) armazena

uma referência ao agrupamento definido por um tipo registro, assim, a

declaração da variável ficha é realizada em duas etapas:

declaração do tipo registro que define a estrutura do agrupamento:

typedef struct{

int cod, qdisp;

string classe;

float valor;

} TProduto;

e a declaração/alocação da variável ficha :

TProduto ficha;

agregados heterogêneos – registro

ficha

cod qdisp classe

agrupamento

valor

nomes dos campos

componentes

nome do agrupamento

#include #include using namespace std; typedef struct{ int cod, qdisp; string classe; float valor; } TProduto; int main( ){ TProduto ficha; cout<<"digite os dados"<<endl; cout<<"codigo? "; cin>>ficha.cod; cout<<"quantidade? "; cin>>ficha.qdisp; cout<<"classe? "; cin>>ficha.classe; cout<<"valor? "; cin>>ficha.valor; ... } agregados heterogêneos – registro

ficha

cod qdisp classe

valor

problema proposto

"Conhecendo-se uma sequência de 20 valores correspondentes aos preços de um mesmo produto em 20 lojas varejistas, como determinar em quantas das lojas o preço do produto é superior ao preço médio dessas 20 lojas?“ Especificação de variáveis variável de entrada: loja de tipo vetor com 21 componentes de tipo valor real variáveis de saída: prmedio – tipo valor real e quant – tipo valor inteiro variáveis auxiliares: soma – tipo valor real, k e quant de tipo valor inteiro. variável principal – esboço (com o pressuposto de que não será utilizado o componente de índice 0) agregados homogêneos – vetor ou array

loja

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

problema proposto

"Conhecendo-se uma sequência de 20 valores correspondentes aos preços de um mesmo produto em 20 lojas varejistas, como determinar em quantas das lojas o preço do produto é superior ao preço médio dessas 20 lojas?" agregados homogêneos – vetor ou array

principal( )

soma 0 ;

Imprima "digite o preco do produto em cada loja" ;

para k de 1 até 20 passo 1 faça

imprima "digite o preco na loja ", k ," : " ;

leia loja[k] ;

soma soma+loja[k];

prmedio soma/20; quant 0;

para k de 1 até 20 passo 1 faça

se loja[k]>prmedio então quant quant+1;

imprima "valor do preco medio: ", prmedio ;

imprima quant, " lojas com precos acima do medio" ;

Exercício: problema proposto

"Conhecendo-se uma sequência de 10 valores correspondentes aos volumes

de vendas de uma loja durante os 10 primeiros dias do mês e um valor inteiro

d, correspondente a um desses 10 dias ( 1 ≤ d ≤10 ), como determinar a

porcentagem do volume desse dia em relação ao volume total dos 10 dias? "

agregados homogêneos – vetor ou array

declaração/alocação

float vol[11]; vol 0 1 2 3 4 5 6 7 8 9 10

Exercício:

Observe e procure

compreender, nas duas

próximas páginas, a

funcionalidade

do programa:

int main( ){ int i, quant, p, extra; srand(time(NULL)); cout<<"quantos componentes? "; cin>>quant; int lista[quant+2]; lista[1]=1+rand( )%10; for(i=2; i<=quant; i=i+1){ lista[i]=lista[i-1]+rand( )%10; } cout<<"\nvalores iniciais ********"<<endl; for(i=1; i<=quant; i=i+1){ cout<<i<<" : "<<lista[i]<<endl; } cout<<"valor extra? "; cin>>extra; p=quant; while(p>=1 && extra<lista[p]){ lista[p+1]=lista[p]; p=p- 1 ; } lista[p+1]=extra; cout<<"\nvalores depois da insercao *****"<<endl; for(i=1; i<=quant+1; i=i+1){ cout<<i<<" : "<<lista[i]<<endl; } system("pause"); return(0); }

agregados homogêneos – vetor ou array cout<<"valor extra? "; cin>>extra; p=quant; while(p>=1 && extra<lista[p]){ lista[p+1]=lista[p]; p=p-1; } lista[p+1]=extra; cout<<"\nvalores depois da insercao *****"<<endl; for(i=1; i<=quant+1; i=i+1){ cout<<i<<" : "<<lista[i]<<endl; } system("pause"); return(0); } fase final do processo

agregados homogêneos – vetor ou array Problema proposto

Um grupo de ecologistas mantêm sob observação as reservas florestais do

planeta. Devido a problemas diplomáticos, nem sempre é possível um

contato direto, assim, grande parte desta observação é feita por satélite.

Como calcular, de forma aproximada, a área de uma região de desmatamento

a partir de uma foto via satélite?

A região deve ser “simplificada” considerando-a como um polígono, em que

são conhecidas as coordenadas de seus vértices. Os vértices devem ser

enumerados no sentido horário.

1 (^23) 4 5 7 6 x 1 x 2 y 1 y 2