estruturas de dados estaticas - parte 1

Upload: pmpreis

Post on 24-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    1/37

    Mdulo 4

    Estruturas de Dados Estticas(vetores, strings e matrizes)

    PSI 1 ano

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    2/37

    Objetivos de aprendizagem do mdulo: Saber fazer a distino entre uma varivel simples e uma varivel

    estruturada. Saber o que uma String. Manipular uma String.

    Diferenciar ndice e valor indexado num Array. Dominar os algoritmos de manipulao de Arrays.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    3/37

    Motivao

    !

    , , !

    Imagina que foste contratado para criar um programa emC para uma escola, com a finalidade de armazenar osnomes dos alunos, as notas, mdias, nomes dos pais,

    faltas e tudo mais.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    4/37

    Motivao

    . ,

    , , .

    disto que tratam as Estruturas de Dados:

    estudar, manipular, organizar, guardar e extrairinformaes de uma grande quantidade de dados.Tambm automatizar o processo para que no

    seja preciso declarar, inicializar e fazer outrasoperaes nas variveis de um modo manual.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    5/37

    Vetores (arrays)

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    6/37

    Vetores (arrays)

    Em muitas aplicaes queremos trabalhar com umconjuntos de dados que so semelhantes em tipo.

    o Por exemplo, o conjunto das alturas dos alunos de umaturma, ou um conjunto dos seus nomes.

    Nestes casos, seria conveniente poder colocar estas

    informaes sob um mesmo conjunto, e, poder referenciarcada dado individual do conjunto por um nmero ndice.

    Em programao, este tipo de estrutura de dados chamada

    de vetor (ouarray, em ingls) ou, de maneira mais formal porestruturas de dados estticas.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    7/37

    A maneira mais simples de entender um vetor atravs da

    visualizao de uma lista, de elementos com um nomecoletivo e um ndice de referncia aos valores da lista.

    n representaum nmero dereferncia

    nota o nomedo conjunto

    Assim podemos dizer que a 2a nota 6.9 ou representar nota[1] = 6.9

    8.4 6.9 4.5 4.6 7.2nota

    n 0 1 2 3 4

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    8/37

    , ,

    .

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    9/37

    ! , 3000 ( ),

    float med_1,med_2,med_3,med_4, ;

    ,

    printf(\nInsira mdia do aluno n.1:);

    scanf (%f, med_1);

    3000 .

    .

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    10/37

    Vetores na Linguagem C

    Os arrays, ou vetoresunidimensionais, so umconjunto de elementos do

    mesmo tipo, agrupados com omesmo nome, e diferenciadosatravs de um ndice entreparnteses rectos.

    Os dados podem estarorganizado sob forma detabelas. Neste caso, cadadado referenciado pordois ndices e dizemos quese trata de um vetor

    bidimensional (oumatriz).

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    11/37

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    12/37

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    13/37

    Definio de Vetor (array)

    Um vetor, ou array, um conjunto de elementosconsecutivos do mesmo tipo, que podem ser acedidos

    individualmente a partir de um nico nome. Por exemplo, se desejarmos armazenar o volume de vendas efetuadas

    em cada ms de uma determinada empresa, podemos declarar umarrayde 12 posies. Cada posio vai conter o volume mensal,correspondendo a primeira posio ao volume de vendas de janeiro, asegunda posio ao volume de vendas de fevereiro, etc.

    Desta forma, evitamos que tenham de ser declaradas 12

    variveis, sendo colocada toda a informao numa s varivel.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    14/37

    Declarao de um vetor

    A declarao de um vetor com uma nica dimenso obedece seguinte sintaxe:

    O corresponde ao tipo de dados de cada um dos

    elementos do vetor.

    O indica o nome pelo qual este vetorvai ser conhecido.

    O um valor constante que indica

    quantos elementos tem o vetor.

    12;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    15/37

    Um vetorpode conter elementos de qualquer tipo dedados, mas todos os elementos tm de ser do mesmo tipodefinido na declarao.

    o Por exemplo, para declarar um vetor de 30 inteiros: 30;

    o

    Para declarar um vetor de 50 reais: 50;

    Para identificar cada elemento do vetor necessrio umndice que indique qual a sua posio no vetor. Assim, indica aquilo que est na posio dovetor.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    16/37

    Referncia a elementos de um vetor

    Cada elemento do vetor referenciado pelo nome do vetorseguido de um ndice inteiro.

    O primeiro elemento do vetor tem ndice0e o ltimo temndicetamanho - 1.

    O ndice de um vetor deve ser sempre um valor inteiro.

    # A 5 = 7; 10; //

    1 = 6.645;A = 3.867; = 7.645;(A) = 2.768;(A) = 2.705; // !

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    17/37

    Exemplo de declarao e inicializao

    10;

    o Esta declarao reserva um espao de memria paraarmazenar 10 valores inteiros e este espao de memria referenciado pelo nome x.

    o Inicializao de algumas posies do vetor x:

    0 = 5;1 = 11;4 = 0;

    9 = 3;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    18/37

    Assim como podemos inicializar variveis (por exemplo: = 3;), tambm podemos inicializar vetores.

    = ;

    o uma lista, separada por vrgulas,dos valores de cada elemento do vetor .

    Exemplos:

    7 = 12,30,14,7,13,15,6; 5 = 8.4,6.9,4.5,4.6,7.2; 5 = , , , , ;

    Inicializao de vetores

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    19/37

    Opcionalmente, podemos inicializar os elementos do vetorenumerando-os um a um.

    Exemplo em que as duas inicializaes so possveis:

    5 = ,,,,;

    Ou

    5;0 = ;1 = ;2 = ;3 = ;4 = ;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    20/37

    NOTA: Se um vetorfor declarado com n elementos e foremcolocados apenas k valores (k < n) na inicializao do vetor,ento os primeiros k elementos do vetor sero inicializadoscom os respetivos valores e os restantes sero inicializados

    com o valor 0 (ZERO).Exemplo:

    5 = 10,20,30;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    21/37

    100; 25;

    80;

    Na declarao de um vetor estamos a reservar espao dememria para os elementos de um vetor.

    Assim, no exemplo, a quantidade de memria utilizada pelosvetores , respectivamente, 200(2x100), 100(4x25) e80(1x80)bytes.

    Quantidade de memria utilizada

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    22/37

    .

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    23/37

    Desta forma, cada uma das 6 posies do nosso vetor podeser acedida atravs do respetivo ndice colocado entre osparntesis retos [ ].

    Em C todos os ndices de um vetor com nelementos variaentre 0e n-1, sendo cada elemento acedido atravs dos

    parntesis retos.

    Suponhamos ento que pretendamos declarar um vetor com6 inteiros denominado vetor:

    6;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    24/37

    Vamos agora colocar o valor 123 na primeira posio do vetor:0 = 123;

    E agora colocar na ltima posio do vetor o dobro do valor doprimeiro elemento:

    5 = 0 * 2;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    25/37

    Colocar no terceiro elemento do vetor a soma do primeiro com

    o ltimo:2 = 0 + 5;

    (=0; < 6; ++)

    = ;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    26/37

    Imprimindo os valores armazenados num vetor

    Exemplo de cdigo

    # () ; 6 = 2.3, 5.4, 1.0, 7.6, 8.8, 3.9;

    (=0;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    27/37

    Somatrio dos valores armazenados num vetor

    Exemplo de cdigo

    # () ; 6 = 2.3, 5.4, 1.0, 7.6, 8.8, 3.9;

    = 0.0; (=0;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    28/37

    Determinar o mximo dos valores armazenados num vetor

    Exemplo de cdigo

    # () ; 6 = 2.3, 5.4, 1.0, 7.6, 8.8, 3.9;

    = 0; (=0; ) = ;

    ("%", ); 0;

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    29/37

    Prontos para a ao

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    30/37

    A) Efetua a reviso do seguinte programa que mostra o uso de vetores:

    declarao, inicializao, leitura e escrita de elementos...

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    31/37

    B) Efetua a reviso do seguinte programa que mostra o acesso aelementos dentro e fora de um vetor. Nota que o compilador no apresentanenhum erro de sintaxe!

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    32/37

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    33/37

    C) Efetua a reviso do seguinte programa que mostra a declarao de um

    vetor com tamanho parametrizado e testa o seu limite. Compila o programacom outros valores para o parmetro MAX e verifica se a execuo doprograma alterada automaticamente.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    34/37

    Vamos ver se percebi

    Um vetor uma coleo de um oumais objetos, do mesmo tipo,armazenados em endereos

    adjacentes de memria?

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    35/37

    Hora de resolver

    1) Dada um turma com n alunos (onde n conhecidoa priori), obter a notas dos alunos e calcula amdia da turma.Apresentar uma soluo com leitura dos dados viateclado.

    2) Escreve um programa que dada uma sequnciade nnmeros a incluir num vetor, vai imprimir osmesmos na ordem inversa da sua leitura.

    3) Dados dois vetores x e y, ambos com nelementos, determinar o produto escalar desses

    vetores.

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    36/37

    Hora de resolver

    4) Considera a seguinte declarao:

    //

    = 3, 9, 12, 34, 2, 20, 10;

    Escreve um programa que percorra todos os

    elementos do vetor e exiba a soma dos valorespositivos e a quantidade de valores negativos. Oprograma dever exibir uma sada com a

    mensagem:

    A : 51

    A : 3

  • 7/25/2019 Estruturas de Dados Estaticas - Parte 1

    37/37

    Hora de resolver

    5) Escrever um programa que declare um vetor de20 inteiros, obtenha os valores atravs do teclado,

    leia um valor para cada posio e no final mostrequantos elementos possuem valor maior, menor eigual ao primeiro elemento do vetor.