Programação II Estruturas de Dados

19
Désiré NGuessan Programação II Programação II Estruturas de Dados Estruturas de Dados [email protected]

description

Programação II Estruturas de Dados. [email protected]. Estruturas Homogêneas: Vetores e Matrizes. Estruturas Homogêneas: Vetores Um Vetor é um arranjo de elementos armazenados na MP: Memória Principal, um após o outro, todos com o mesmo nome. - PowerPoint PPT Presentation

Transcript of Programação II Estruturas de Dados

Page 1: Programação II Estruturas de Dados

Désiré NGuessan

Programação IIProgramação IIEstruturas de DadosEstruturas de Dados

[email protected]

Page 2: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Estruturas Homogêneas: Vetores– Um Vetor é um arranjo de elementos armazenados na MP:

Memória Principal, um após o outro, todos com o mesmo nome.

– A posição de um elemento é indicada por um índice i que varia de 0 ... N

• Declaração de Vetor tipo nome [ dimensão];

• tipo de dado;

• nome do vetor

• dimensão: numero de elementos ou tamanho

Page 3: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Exemplos– int A[5];

• A é um vetor de inteiros dimensionado com 5 elementos

• Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 20 bytes como mostra a figura abaixo.

A

120

116

112

108

104

Endereço contiguo de memória

Representação na memória

Page 4: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Inicializando um Vetor

int A[5] = {5,10,15, 20, 25};

ou

int A[ ] = {5,10,15, 20, 25};

• Leitura de um vetor

Int i ;

for (i= 0 ; i <5; i++) // faz o índice varia de 0 a 4

scanf("%d", &A[i]); // lê cada elemento do vetor

• Imprimir um vetor

Int i ;

for (i= 0 ; i <5; i++) // faz o índice varia de 0 a 4

printf("%d", A[i]); // imprime cada elemento do vetor

Page 5: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Estruturas Homogêneas: Matriz– Uma matriz é um conjunto bi ou multidimensional de

elementos armazenados na MP, todos com o mesmo nome.

– A posição de um elemento é indicada por mais de um índice i, j que variam de 0 ... N

• Declaração de Vetor tipo nome [ dimensão1] [ dimensão2];

• tipo de dado;

• nome do vetor

• dimensão1: numero de linhas

• dimensão2: numero de colunas

Page 6: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Exemplos– int M[3][2];

• M é uma matriz de inteiros com 3 linhas e 2 colunas

• Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 24 bytes de maneira continua como mostra a figura abaixo.

M

124

120

116

112

108

104

Page 7: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Inicializando uma Matrizint A[3] [2]= {{5,10},{15, 20}, {21,25}};

ou

int A[ 3] [2]= {5,10,15, 20, 21,25};

• Leitura de ma MatrizInt i,j ;

for (i= 0 ; i <3; i++) // faz o índice i varia de 0 a 3

for (j= 0 ; i <2; i++) // faz o índice j varia de 0 a 2

scanf("%d", &A[i][j]); // lê cada elemento do vetor

Page 8: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Imprimindo uma MatrizInt i,j ;

for (i= 0 ; i <3; i++) // faz o índice i varia de 0 a 3

for (j= 0 ; i <2; i++) // faz o índice j varia de 0 a 2

printf("%d", A[i][j]); // imprime cada elemento do vetor

Page 9: Programação II Estruturas de Dados

Désiré NGuessan

Atividade Desenvolva um programa que carregue uma matriz 12 X 4

com os valores das vendas de uma loja, em que a cada linha represente um mês do ano, e cada coluna, uma semana do mês. Calcule e imprima:

1. Total vendido em cada mês do ano;

2. Total vendido em cada semana durante todo o ano;

3. Total vendido no ano.

Page 10: Programação II Estruturas de Dados

Désiré NGuessan

#include <stdio.h>#include <stdlib.h># define MES 12 # define SEMANA 4

int main(int argc, char *argv[]){// DECLARAÇÃO DE VARIAVEISfloat VENDAS[MES][SEMANA];float VENDAS_MES[MES];float VENDAS_SEMANA[SEMANA];float TOTAL_ANO;int i, j;

Page 11: Programação II Estruturas de Dados

Désiré NGuessan

// LEITURA DAS VENDASfor (i = 0; i < MES; i ++ ){ printf(“%d\n", i); // VENDAS DE CADA MES for (j = 0 ; j< SEMANA; j ++ ) { // VENDA DE CADA SEMANA printf("entre com a venta da semana %d do mes %d\n", i, j); scanf("%f", &VENDAS[i][j]); }}

Page 12: Programação II Estruturas de Dados

Désiré NGuessan

// INICIALIZANDO VENDAS for (i = 0; i < MES ; i ++ )VENDAS_MES[i]= 0; for (j = 0 ; j< SEMANA ; j ++ ) VENDAS_SEMANA[j]; TOTAL_ANO = 0; // CALCULOS DE VENDASfor (i = 0; i < MES ; i ++ ){ for (j = 0 ; j < SEMANA; j ++ ) { VENDAS_MES[i]+= VENDAS[i][j];VENDAS_SEMANA[j]+= VENDAS[i][j]; TOTAL_ANO += VENDAS[i][j];}}

Page 13: Programação II Estruturas de Dados

Désiré NGuessan

// IMPRIMIR RESULTADO printf("Total vendido em cada mes do ano:\n");for (i = 0; i < MES ; i ++ )printf (" %.2f\n", VENDAS_MES[i]); printf("Total vendido em cada semana durante todo o ano:\n"); for (j = 0 ; j < SEMANA ; j ++ ) printf (" %.2f\n", VENDAS_SEMANA[j]); printf("TOTAL VENDIDO NO ANO:\n"); printf (" %.2f\n", TOTAL_ANO);system("PAUSE");return 0;} // FIM

Page 14: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

– int M[3][2];

• M é uma matriz de inteiros com 3 linhas e 2 colunas

• Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 24 bytes de maneira continua como mostra a figura abaixo.

M

124

120

116

112

108

104

Page 15: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Vetor e Matriz como Argumentos de Funções– Passar um vetor ou uma matriz para uma função consiste em passar o

endereço da primeira posição ou seja o endereço inicial do vetor ou matriz (nome).

– A função chamada deve ter um parâmetro do tipo ponteiro para armazenar este valor

– Por exemplo se passamos para uma função um vetor de int devemos ter um parâmetro de tipo *int

M

Page 16: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Vetor e Matriz como parâmetro de Funções// função para calcular média do elemento de um vetor

float MEDIA(int n , float *nota) {

int i; float soma = 0.0f;

for (i= 0; i< n; i++)

soma+= nota[i];

return soma/n

}

M

Page 17: Programação II Estruturas de Dados

Désiré NGuessan

Estruturas Homogêneas: Vetores e Estruturas Homogêneas: Vetores e MatrizesMatrizes

• Vetor e Matriz como argumento de Funções// chamando a função MEDIA()

float vetor_nota[10];

int i;

for (i= 0; i< n; i++)

scanf(“%f”,&vetor_nota[i]);

printf(“media = %f”, MEDIA(10, vetor_nota) );

M

Page 18: Programação II Estruturas de Dados

Désiré NGuessan

N

x

M

N

MxMx

V

)).((

Ler um vetor A com 10 elementos. Construir uma matriz C de duas dimensões com três colunas, em que: a primeira coluna da matriz C é formada pelos elementos do vetor A somados com mais 5, a segunda coluna é formada pelo valor do cálculo da variância dos elementos do vetor A (a variância é dada pelas formulas a seguir), a terceira e última coluna deve ser formada pelos quadrados dos elementos correspondentes do vetor A.Apresentar a matriz C.

Exercicio1

Page 19: Programação II Estruturas de Dados

Désiré NGuessan

Implemente uma função em C que receba como parâmetro um vetor de números inteiros e retorne quantos números pares estão armazenados nesse vetor. Essa função deve obedecer ao protótipo:int pares ( int n, int* vetor);

Exercicio 2