27
Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Ana Maria Teles de Meneses Escola Secundária Daniel Faria – Baltar Programação e Sistemas de Informação

Módulo 5 - Estruturas de Dados Compostas.ppt__0

Embed Size (px)

Citation preview

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Programao e Sistemas de Informao

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Contedos

    Conceito de registo

    Vector vs registo

    Declarao de registos - struct

    Utilizao de variveis do tipo struct

    Combinao de registos com vectores

    Passagem de registos para funes

    Gesto de registos

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Conceito

    Um tipo de dados estruturados que permite agrupar elementos de vrios tipos diferentes, sob a forma de

    campos, numa mesma estrutura

    Estas estruturas so habitualmente designadas por registos (record)

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo

    Pessoa

    Nome Idade Naturalidade Profisso

    Artigo

    Cdigo Nome Preo Quantidade

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Vector vs Registo

    Diferena entre vector e registo

    Tipo de dados Vectores: elementos do mesmo tipo de dados

    Registos: elementos de diferentes tipos de dados

    Forma de acesso aos dados

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Declarao de registos como tipo de dados

    struct nome_da_estrutura

    {

    tipo_dados campo_1;

    tipo_dados campo_2;

    tipo_dados campo_n;

    };

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Declarao de registos como variveis

    No momento da criao da estrutura

    struct nome_da_estrutura

    {

    tipo_dados campo_1;

    tipo_dados campo_2;

    tipo_dados campo_n;

    } var1, var2, , varn;

    Posteriormente criao da estrutura

    nome_da_estrutura var1, var2, varn;

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo

    Atleta

    Nome Idade Altura Peso

    Vector char

    int

    float

    float

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Declarao de registos Exemplo de declarao de estrutura (com declarao de variveis)

    struct atleta {

    char nome[30];

    int idade;

    float altura, peso;

    } a1, a2;

    Exemplo de declarao de variveis atleta a1, a2;

    Declarao de tipo de dados

    Declarao de variveis TIPO struct atleta

    Declarao de variveis TIPO struct atleta

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Utilizao de registos

    Sintaxe para referencia de variveis tipo registo

    Para o registo var1

    Para o campo do registo var1.campo

    Sendo esta a forma de referencia as operaes e procedimentos acontecem da forma habitual

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo

    O campo nome da varivel a1

    a1.nome

    A varivel a2

    a2

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Utilizao de registos #include

    #include

    using namespace std;

    main() {

    struct atleta {

    char nome[30] ;

    int idade ;

    } a1, a2 ;

    a1.idade = 18 ;

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo // Programa PESSOA

    #include

    #include

    using namespace std;

    main() {

    struct pessoa {

    char nome[30] ;

    int idade ;

    } ;

    pessoa aluno1, aluno2 ;

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo // Programa ARTIGO

    #include

    #include

    using namespace std;

    main() {

    struct artigo {

    char nome[30] ;

    float preco, quant ;

    } artigo1, artigo2;

    cout artigo1.quant ;

    cout artigo2.quant ;

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Avanando

    E se for necessrio fazer o calculo para vrios artigos?

    100 variveis do tipo artigo???

    artigo a1, a2, a3, a4, , a100;

    Ou um vector do tipo artigo com 100 elementos?

    artigo a[100];

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Combinao de registos com vectores

    possvel combinar registos com vectores

    Basta declarar um vector como uma varivel do tipo estrutura

    Sintaxe de arrays tipo estrutura

    nome_estrutura array[num_elementos];

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Combinao de registos com vectores Exemplo de declarao de estrutura (com declarao de um vector)

    struct atleta {

    char nome[30];

    int idade;

    float altura, peso;

    } a[10];

    Exemplo de declarao de um vector atleta a[10];

    Declarao de tipo de dados

    Declarao de um vector a TIPO struct atleta

    Declarao de um vector a TIPO struct atleta

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Combinao de registos com vectores

    Sintaxe para referencia de vectores tipo registo

    Para o registo como vector

    var[ i ]

    Para o campo do registo como vector

    var[ i ].campo

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo // Programa ARTIGO v2

    #include

    #include

    using namespace std;

    main() {

    struct artigos {

    char nome[30] ;

    float preco, quant ;

    } artigo[100];

    int i;

    for (i = 0; i < 100; i++) {

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo // Programa PESSOA

    #include

    #include

    using namespace std;

    main() {

    struct pessoa {

    char nome[30] ;

    int idade ;

    } ;

    pessoa aluno[19] ;

    int i, inovo;

    for (i = 0; i < 19; i++) {

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo // Programa FICHA

    #include

    #include

    using namespace std;

    main() {

    struct ficha {

    char sexo ;

    int idade ;

    } pessoa[100] ;

    int i, n, mas, fem, idadesm, idadesf;

    int mediam, mediaf;

    cout > n;

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

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Exemplo (cont.) masc = 0; fem = 0; idadesm = 0; idadesf = 0;

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

    if (pessoa[i].sexo == F) {

    fem = fem + 1; idadesf = idadesf + pessoa[i].idade; }

    else if (pessoa[i].sexo == M)

    mas = mas + 1; idadesm = idadesm + pessoa[i].idade; }

    }

    mediaf = idadesf / fem; mediam = idadem / mas;

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Operaes com vectores de registos Idnticas s utilizadas em vectores de tipos de dados simples:

    Operaes entre campos do registo

    Pesquisa Insero

    Modificao

    Eliminao

    Ordenao

    Em alguns casos o processo mais eficaz por se tratar de um estrutura

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Actividade

    A partir da estrutura atleta crie um vector de registos jogador

    Pesquisar um jogador por numero dado

    Pesquisar o jogador mais velho e o mais novo

    A mdia das idades

    O ano de nascimento dos jogadores

    Ordenar os jogadores por numero

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Passagem de registos para funes

    possvel utilizar registos como parmetros de funes

    Esta passagem pode ser feita como Varivel tipo estrutura

    Apontador para varivel tipo estrutura (a ver no mdulo 6)

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Passagem de registos para funes // Programa DADOS

    #include

    using namespace std;

    struct dados {

    int idade ;

    float peso;

    } ;

    void altera (dados d) {

    d.idade ++ ;

    d.peso = d.peso * 1.1 ;

    cout

  • Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao

    Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar

    Referncias TREMBLAY, Jean-Paul & BUNT, Richard B., Introduction to Computer

    Science: An Algorithmic Approach, 2. Ed. Lisboa: McGraw-Hill, 1989.

    LIMA, Jorge R., Linguagem Algortmica, Porto: Universidade Portucalense Departamento de Informtica, 1987.

    AZUL, Artur A., Bases de Programao Curso Tecnolgico de Informtica 10. ano, Porto: Porto Editora, 2004.

    MARQUES DE S, Joaquim P., Fundamentos de Programao Usando C, Lisboa: FCA, 2004.

    KERNIGHAN, Brian & RITCHIE, Dennis, The C Programming Language, 2nd Ed. New Jersey: Prentice Hall, 1988.