A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Vamos agora aprender a utilizar estruturas.

Apresentações semelhantes


Apresentação em tema: "Vamos agora aprender a utilizar estruturas."— Transcrição da apresentação:

1 Vamos agora aprender a utilizar estruturas.
Módulo V Até agora todos os nossos dados eram armazenados em variáveis simples, isto é, variáveis do tipo char, int, float ou double. Aprendemos também a armazenar conjuntos de valores em arrays e matrizes que têm a capacidade de guardar um conjunto de dados do mesmo tipo. Vamos agora aprender a utilizar estruturas. P.S.I - Programação e Sistemas de Informação

2 Estruturas Definição: Estrutura é um conjunto de uma ou várias variáveis (normalmente chamadas de campos ou membros) agrupadas sobre um único nome. As estruturas podem conter elementos com qualquer tipo de dados válido em C (tipos básicos (int, float, char, double), arrays, matrizes, strings, apontadores, ou mesmo outras estruturas)

3 Estruturas Exemplos de estruturas conhecidas: A data
O Bilhete de identidade Data Bilhete de identidade ano Nome mês Nr. de BI dia Data de nascimento Nome dos pais Data de validade Morada

4 Estruturas Por exemplo:
Qual a composição de um contacto de uma lista telefónica? Resposta: Nome Número de Telemóvel Morada

5 Estruturas - Declaração
Declaração de uma estrutura em C struct nome_da_estrutura { tipo1 variável1; tipo2 variável2; tipoN variávelN; }; Nunca esquecer o ; a seguir ao fecho da chaveta.

6 Estruturas – Declaração de variáveis
Ao declarar uma estrutura apenas está a informar o compilador de que existe um novo tipo de dados. Não está ainda a declarar nenhuma variável desse novo tipo de dados. Declaração de variáveis do tipo de uma estrutura: struct nome_da_estrutura nome_da_variável; OU struct nome_da_estrutura { tipo1 variável1; tipo2 variável3; tipoN variávelN; }nome_da_variável, nome_da_variável1;

7 Estruturas – exemplos struct data { int ano, dia; char mes[11]; };
struct data dt; Por uma questão de lógica, não deve definir variáveis com o mesmo nome da estrutura.

8 Estruturas – exemplos struct bi { int nr; char nome[101], morada[301];
struct data data_nascimento; float altura; }bilhete_identidade; A estrutura bi, tem um membro que é uma estrutura

9 Estruturas – exemplos Defina agora uma estrutura e uma variável para um registo com os seguintes dados: Nome Idade Profissão Salário

10 Estruturas – exemplos struct dados { char nome[101], profissao[101];
/* declaração da estrutura */ struct dados { char nome[101], profissao[101]; int idade float salario; }; /* declaração da variável */ struct dados dados_pessoais;

11 Acesso aos membros de uma estrutura
Depois de criada uma estrutura e uma variável desse novo tipo de dados, será necessário aceder aos membros da estrutura para que possamos atribuir, alterar, visualizar ou remover informações a esses membros. dt é do tipo struct data, logo possui os membros: ano, dia e mês. Para aceder aos membros de uma estrutura usa-se o operador . (ponto) struct data { int ano, dia; char mes[11]; }; struct data dt; Neste caso, para aceder aos membros da variável dt faria: dt.ano dt.dia dt.mes

12 Acesso aos membros de uma estrutura
struct data { int ano, dia; char mes[11]; }; struct data dt; main() printf(“introduza o dia: ”) scanf(“%d”, &dt.dia); dt.ano=2007; strcpy(dt.mes, “janeiro”); printf(“ %d - %s - %d ”, dt.dia, dt.mes, dt.ano); }

13 Onde se definem as estruturas?
Para que as estruturas sejam conhecidas em todo o programa devem ser definidas fora de toda as funções após a inclusão das bibliotecas, ou numa biblioteca que seja incluída no programa. Se definir uma estrutura dentro de uma função, a estrutura apenas vai ser conhecida nessa função.

14 al é uma variável do tipo struct aluno
#include<stdio.h> #include<stdlib.h> struct aluno { int numero; char nome[101]; }; struct aluno al; main() printf("Introduza o número: "); scanf("%d", &al.numero); printf("Introduza o nome: "); scanf("%s", al.nome); /* ou - gets(al.nome)*/ printf("\n\t %d - %s\n\n\n",al.numero, al.nome); system("pause"); } al é uma variável do tipo struct aluno

15 Estruturas As grandes vantagens da utilização de estruturas são visíveis quando é necessário o armazenamento de grandes quantidades de informação, pois reduz a quantidade de variáveis necessárias. Imagine agora que queria armazenar o número e o nome de 23 alunos. O que seria necessário?

16 al é um array de estruturas
#include<stdio.h> #include<stdlib.h> struct aluno { int numero; char nome[101]; }; struct aluno al[3]; main() int i; /* leitura do array */ for(i=0;i<3;i++) printf("Introdiza o número: "); scanf("%d", &al[i].numero); printf("Introduza o nome: "); scanf("%s", al[i].nome); /* ou - gets(all[i].nome); */ } /* impressão do array */ printf("\n\t %d - %s\n\n\n",al[i].numero, al[i].nome); system("pause"); al é um array de estruturas

17 Estruturas e Funções Revisão:
A passagem de parâmetros para uma função pode ser feita: Por Valor É enviado o valor do argumento para a função; A função recebe esse valor no parâmetro definido, ou seja, a função fica com uma “cópia” do valor original. Por Referência É enviado para a função o endereço de memória do(s) argumento(s). A função recebe nos parâmetros definidos os endereços de memória dos argumentos, ou seja, “a localização na memória” dos valores dos argumentos.

18 Estruturas – passagem por valor
#include<stdio.h> #include<stdlib.h> struct pessoa { char nome[101]; int idade; }; main() { struct pessoa p; strcpy(p.nome, “Maria”); p.idade=16; mostrar(p); system(“pause”); } void mostrar (struct pessoa ps) { puts(ps.nome); printf(“\n %d \n“,ps.idade); }

19 Estruturas – passagem por referência
#include<stdio.h> #include<stdlib.h> struct pessoa { char nome[101]; int idade; }; (*ps).idade equivale a ps->idade gets(ps->nome); scanf("%d", &ps->idade); main() { struct pessoa p; ler(&p); puts(p.nome); printf(“\n %d \n“,p.idade); system(“pause”); } void ler (struct pessoa *ps) { printf("Nome: "); gets((*ps).nome); printf("Idade: "); scanf("%d", &(*ps).idade); }

20 Estruturas – return Se por algum motivo numa função necessitar de devolver uma variável do tipo struct, bastará: struct nome_estrutura (….) { struct nome_estrutura nome_variável; return nome_variável; } Por vezes utiliza-se esta técnica quando é necessário de devolver (retornar) mais do que um valor para a função invocadora.


Carregar ppt "Vamos agora aprender a utilizar estruturas."

Apresentações semelhantes


Anúncios Google