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

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

1 Até agora todos os nossos dados eram armazenados em variáveis simples, isto é, variáveis do tipo char, int, float ou double. Até agora todos os nossos.

Apresentações semelhantes


Apresentação em tema: "1 Até agora todos os nossos dados eram armazenados em variáveis simples, isto é, variáveis do tipo char, int, float ou double. Até agora todos os nossos."— Transcrição da apresentação:

1 1 Até agora todos os nossos dados eram armazenados em variáveis simples, isto é, variáveis do tipo char, int, float ou double. 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. 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. Vamos agora aprender a utilizar estruturas.

2 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. 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) 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 3 Estruturas Exemplos de estruturas conhecidas: Exemplos de estruturas conhecidas: A data A data O Bilhete de identidade O Bilhete de identidade Data ano mês dia Bilhete de identidade Nome Nr. de BI Data de nascimento Nome dos pais Data de validade Morada …

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

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

6 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. 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: 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; tipo1 variável1; tipo2 variável3; tipo2 variável3; … tipoN variávelN; tipoN variávelN; } nome_da_variável, nome_da_variável1 ;

7 7 Estruturas – exemplos struct data { int ano, dia; int ano, dia; char mes[11]; 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 8 Estruturas – exemplos struct bi { int nr; int nr; char nome[101], morada[301]; char nome[101], morada[301]; struct data data_nascimento; struct data data_nascimento; float altura; float altura;}bilhete_identidade; A estrutura bi, tem um membro que é uma estrutura

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

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

11 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. 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. struct data { int ano, dia; int ano, dia; char mes[11]; char mes[11];}; struct data dt; 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) Neste caso, para aceder aos membros da variável dt faria: dt.ano dt.dia dt.mes

12 12 Acesso aos membros de uma estrutura struct data { int ano, dia; int ano, dia; char mes[11]; 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 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. 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. Se definir uma estrutura dentro de uma função, a estrutura apenas vai ser conhecida nessa função.

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

15 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. 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. Imagine agora que queria armazenar o número e o nome de 23 alunos. O que seria necessário? O que seria necessário?

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

17 17 Estruturas e Funções Revisão: Revisão: A passagem de parâmetros para uma função pode ser feita: A passagem de parâmetros para uma função pode ser feita: Por Valor Por Valor É enviado o valor do argumento para a função; É 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. 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 Por Referência É enviado para a função o endereço de memória do(s) argumento(s). É 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. 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 18 Estruturas – passagem por valor #include struct pessoa { char nome[101]; int idade; }; void mostrar (struct pessoa ps) { puts(ps.nome); printf(\n %d \n,ps.idade); } main() { struct pessoa p; strcpy(p.nome, Maria); p.idade=16; mostrar(p); system(pause); }

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

20 20 Estruturas – return Se por algum motivo numa função necessitar de devolver uma variável do tipo struct, bastará: 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; struct nome_estrutura nome_variável; … … return 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 "1 Até agora todos os nossos dados eram armazenados em variáveis simples, isto é, variáveis do tipo char, int, float ou double. Até agora todos os nossos."

Apresentações semelhantes


Anúncios Google