SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Prof. Adriano Teixeira de Souza
   Uma estrutura (struct) é uma coleção de uma
    ou mais variáveis, possivelmente de tipos
    diferentes, agrupadas sob um único nome.


   Estruturas constituem um recurso importante
    para organizar os dados utilizados por um
    programa pois trata um grupo de valores como
    uma única variável.


   São chamadas de registros em outras
    linguagens de programação.

                         Prof. Adriano Teixeira de Souza
   Estruturas (ou registros) são classificados como
    variáveis compostas heterogêneas, pois podem
    agrupar variáveis de tipos diferentes.


   Em contraposição, temos os vetores e matrizes,
    classificados como variáveis compostas
    homogêneas, pois somente agrupam variáveis do
    mesmo tipo.
   Exemplo:




       struct data
       {
           int dia;
           int mes;
           int ano;
       };
   A palavra-chave struct informa ao compilador
    que um modelo de estrutura está sendo definido.

   “data” é uma etiqueta que dá nome à definição da
    estrutura.

   Uma definição de estrutura é um comando, por
    isso deve terminar em ponto-e-vírgula.
   Os nomes declarados entre as chaves são os
    campos (ou membros) da estrutura.


   Os campos de uma mesma estrutura devem ter
    nomes diferentes.


   Porém, estruturas diferentes podem conter campos
    com o mesmo nome.
   A definição de uma estrutura não reserva qualquer
    espaço na memória.


   Note que, no exemplo dado, nenhuma variável foi
    declarada de fato, apenas a forma dos dados foi
    definida.


   Essa definição, porém, cria um novo tipo de dados,
    que pode ser usado para declarar variáveis.
   Duas maneiras de declarar a variável x do tipo data:



     struct data
     {                                 struct data
         int dia;                      {
         int mes;                ou        int dia;
         int ano;                          int mes;
     };                                    int ano;
     ...                               } x;
     struct data x;
     Dois comandos:                    Um comando:
     •Define estrutura como            •Define estrutura e declara
     novo tipo                         variável do novo tipo
     •Declara variável do novo         definido
     tipo definido
                                                                     100
   Os campos de uma estrutura podem ser de
    qualquer tipo, inclusive uma estrutura previamente
    definida.


   Porém, o tipo dos campos não podem ser o do
    próprio tipo que está sendo definido.
   A definição do formato de uma estrutura pode ser
    feita dentro da função principal (main) ou fora dela.


   Usualmente, declara-se fora da função principal,
    de modo que outras funções também possam
    “enxergar” a estrutura definida.
   Forma geral de definição de um registro:




       struct <etiqueta> {
           <tipo> campo_1;
           <tipo> campo_2;
           ...
           <tipo> campo_n;
       } <variáveis>;
   Novos tipos de dados podem ser definidos
    utilizando-se a palavra-chave typedef.




     typedef struct nome_da_estrutura
     {
         <tipo> campo_1;
         <tipo> campo_2;
         ...
         <tipo> campo_n;
     } nome_do_tipo;
   Exemplo:




        typedef struct data
        {
            int dia;
            int mes;
            int ano;
        } tipoData;
   O uso mais comum de typedef é com estruturas
    de dados, pois evita que a palavra-chave struct
    tenha de ser colocada toda vez que uma estrutura
    é declarada.




        struct data dia_de_hoje;

        tipoData dia_de_hoje;




                                                       101
   Podemos acessar individualmente os campos
    de uma determinada estrutura como se
    fossem variáveis comuns.
   A sintaxe para acessar e manipular campos
    de estruturas é a seguinte:



     <nome_da_variável>.<campo>




                                                102
   A leitura dos campos de uma estrutura a partir do
    teclado deve ser feita campo a campo, como se
    fosse variáveis independentes.




    printf (“Digite o nome do aluno: ”);
    scanf (“%s”, &aluno.nome);
    printf (“Digite a idade do aluno: ”);
    scanf (“%d”, &aluno.idade);
   Um campo de uma estrutura pode ser uma outra
    estrutura.


   Quando isso ocorre, temos uma estrutura
    aninhada.


   O padrão ANSI C especifica que as estruturas
    podem ser aninhadas até 15 níveis, mas a maioria
    dos compiladores permite mais.



                                                       103
   Usado quando precisamos de diversas cópias de
    uma estrutura.
   Por exemplo, cada cliente de uma locadora de
    vídeo constitui um elemento de um vetor, cujo tipo
    é uma estrutura de dados que define as
    características de cada cliente.




        struct etiqueta variável[dimensão];




                                                         105
   Faça um programa que:
    ◦ Leia um vetor “turma” de 5 alunos
    ◦ Cada registro/struct de aluno deve ter o numero de
      matrícula do aluno e suas notas de quatro
      bimestres.
    ◦ Imprima a lista de matrícula e notas de cada aluno
    ◦ E finalmente calcule a média das quatro notas e
      imprima a matricula e a média calcula para cada
      aluno.




                            Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Estrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e HeterogêneasEstrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e Heterogêneas
Adriano Teixeira de Souza
 

Mais procurados (20)

Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Algoritmos - Vetores
Algoritmos - VetoresAlgoritmos - Vetores
Algoritmos - Vetores
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
06 Modelagem de banco de dados: Modelo Lógico
06  Modelagem de banco de dados: Modelo Lógico06  Modelagem de banco de dados: Modelo Lógico
06 Modelagem de banco de dados: Modelo Lógico
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Estrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e HeterogêneasEstrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e Heterogêneas
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 

Semelhante a Estrutura de Dados - Registros

Estruturas em c joão carlos batista
Estruturas em c   joão carlos batistaEstruturas em c   joão carlos batista
Estruturas em c joão carlos batista
Joao Carlos Batista
 

Semelhante a Estrutura de Dados - Registros (20)

módulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptxmódulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptx
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Estruturas em c joão carlos batista
Estruturas em c   joão carlos batistaEstruturas em c   joão carlos batista
Estruturas em c joão carlos batista
 
Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#
 
Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Extrutua de dados aula 1
Extrutua de dados aula 1Extrutua de dados aula 1
Extrutua de dados aula 1
 
Algoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - RegistrosAlgoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - Registros
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Ed1
Ed1Ed1
Ed1
 
Pged 03
Pged 03Pged 03
Pged 03
 
Structs em C
Structs em CStructs em C
Structs em C
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Java sintaxe
Java sintaxeJava sintaxe
Java sintaxe
 

Mais de Adriano Teixeira de Souza

Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Adriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 

Último

Último (6)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Estrutura de Dados - Registros

  • 2. Uma estrutura (struct) é uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, agrupadas sob um único nome.  Estruturas constituem um recurso importante para organizar os dados utilizados por um programa pois trata um grupo de valores como uma única variável.  São chamadas de registros em outras linguagens de programação. Prof. Adriano Teixeira de Souza
  • 3. Estruturas (ou registros) são classificados como variáveis compostas heterogêneas, pois podem agrupar variáveis de tipos diferentes.  Em contraposição, temos os vetores e matrizes, classificados como variáveis compostas homogêneas, pois somente agrupam variáveis do mesmo tipo.
  • 4. Exemplo: struct data { int dia; int mes; int ano; };
  • 5. A palavra-chave struct informa ao compilador que um modelo de estrutura está sendo definido.  “data” é uma etiqueta que dá nome à definição da estrutura.  Uma definição de estrutura é um comando, por isso deve terminar em ponto-e-vírgula.
  • 6. Os nomes declarados entre as chaves são os campos (ou membros) da estrutura.  Os campos de uma mesma estrutura devem ter nomes diferentes.  Porém, estruturas diferentes podem conter campos com o mesmo nome.
  • 7. A definição de uma estrutura não reserva qualquer espaço na memória.  Note que, no exemplo dado, nenhuma variável foi declarada de fato, apenas a forma dos dados foi definida.  Essa definição, porém, cria um novo tipo de dados, que pode ser usado para declarar variáveis.
  • 8. Duas maneiras de declarar a variável x do tipo data: struct data { struct data int dia; { int mes; ou int dia; int ano; int mes; }; int ano; ... } x; struct data x; Dois comandos: Um comando: •Define estrutura como •Define estrutura e declara novo tipo variável do novo tipo •Declara variável do novo definido tipo definido 100
  • 9. Os campos de uma estrutura podem ser de qualquer tipo, inclusive uma estrutura previamente definida.  Porém, o tipo dos campos não podem ser o do próprio tipo que está sendo definido.
  • 10. A definição do formato de uma estrutura pode ser feita dentro da função principal (main) ou fora dela.  Usualmente, declara-se fora da função principal, de modo que outras funções também possam “enxergar” a estrutura definida.
  • 11. Forma geral de definição de um registro: struct <etiqueta> { <tipo> campo_1; <tipo> campo_2; ... <tipo> campo_n; } <variáveis>;
  • 12. Novos tipos de dados podem ser definidos utilizando-se a palavra-chave typedef. typedef struct nome_da_estrutura { <tipo> campo_1; <tipo> campo_2; ... <tipo> campo_n; } nome_do_tipo;
  • 13. Exemplo: typedef struct data { int dia; int mes; int ano; } tipoData;
  • 14. O uso mais comum de typedef é com estruturas de dados, pois evita que a palavra-chave struct tenha de ser colocada toda vez que uma estrutura é declarada. struct data dia_de_hoje; tipoData dia_de_hoje; 101
  • 15. Podemos acessar individualmente os campos de uma determinada estrutura como se fossem variáveis comuns.  A sintaxe para acessar e manipular campos de estruturas é a seguinte: <nome_da_variável>.<campo> 102
  • 16. A leitura dos campos de uma estrutura a partir do teclado deve ser feita campo a campo, como se fosse variáveis independentes. printf (“Digite o nome do aluno: ”); scanf (“%s”, &aluno.nome); printf (“Digite a idade do aluno: ”); scanf (“%d”, &aluno.idade);
  • 17. Um campo de uma estrutura pode ser uma outra estrutura.  Quando isso ocorre, temos uma estrutura aninhada.  O padrão ANSI C especifica que as estruturas podem ser aninhadas até 15 níveis, mas a maioria dos compiladores permite mais. 103
  • 18. Usado quando precisamos de diversas cópias de uma estrutura.  Por exemplo, cada cliente de uma locadora de vídeo constitui um elemento de um vetor, cujo tipo é uma estrutura de dados que define as características de cada cliente. struct etiqueta variável[dimensão]; 105
  • 19. Faça um programa que: ◦ Leia um vetor “turma” de 5 alunos ◦ Cada registro/struct de aluno deve ter o numero de matrícula do aluno e suas notas de quatro bimestres. ◦ Imprima a lista de matrícula e notas de cada aluno ◦ E finalmente calcule a média das quatro notas e imprima a matricula e a média calcula para cada aluno. Prof. Adriano Teixeira de Souza