Vamos agora aprender a utilizar estruturas.

Slides:



Advertisements
Apresentações semelhantes
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Advertisements

Um programa em C Bibliotecas Variáveis globais
Linguagem de Programação VI Tipos de Dados Compostos - structs
Construção de Algoritmos AULA 07
03/08/2011 Professor Leomir J. Borba- –
Nivelamento de C: Tipos Estruturados de Dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Alocação Dinâmica de Memória
LINGUAGEM C.
AULA – Linguagem C – Vetores, Ponteiros Estruturas
Algoritmos Escher.
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LPG-I: Tipos Complexos - Estruturas
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Universidade de Brasília
Linguagem C Strings.
Linguagem C Funções.
Armazenamento de Dados em Arquivos
Vetores, Matrizes e Funções
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Armazenamento de Dados em Arquivos
Estruturas de Dados Heterogêneas (struct)
Estruturas de Dados Homogêneas Multidimensionais – Matrizes
Matrizes e Funções - Continuação
Fundamentos de Programação 1
Ponteiros.
VETORES, STRINGS E MATRIZES
Tratamento de Ficheiros
1MF. Vectores Tipo de dado usado para representar um CONJUNTO de dados do um mesmo tipo Estrutura de dados homogénea unidimensional Ex: Ler a nota de 3.
Escola Secundária c/ 3º CEB da Batalha
Revisão da Linguagem C.
Apontadores ou Ponteiros
Strings Definição: Não confundir caracteres com strings
O Portal do Estudante de Computação
O Portal do Estudante de Computação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
O Portal do Estudante de Computação
1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas.
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte VII
Definição de Tipos Estruturas e Ponteiros
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de Dados Avançada
Tipos Estruturados de Dados
Seminário 1: Revisão de C
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Computação Eletrônica
Programação em C++ Compiladores
Aula 10 - Armazenamento de Dados em Registros
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Programação orientada a objectos em C++
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Uso de parâmetros na linha de comando. Parâmetros da função main:
Programação Orientada a Objetos - Java
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Estruturas Revisando: tipos de dados simples
PROGRAMAÇÃO II – PARTE 6 Profa. Maria Augusta Constante Puget.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Transcrição da apresentação:

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

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)

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 …

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

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.

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;

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.

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

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

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;

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

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); }

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.

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

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?

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

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.

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); }

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); }

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.