Estruturas de Dados em C

Slides:



Advertisements
Apresentações semelhantes
Programação II Estruturas de Dados
Advertisements

Linguagem de Programação 1
LPG-I: Tipos Complexos - Estruturas
Estrutura de Dados Avançada
Algoritmos e Estruturas de Dados Linguagem C - Estruturas - Prof. Me. Claudio Benossi
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Ponteiros em C Prof. Kariston Pereira
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo.
1 Programação em C Aula 7. 2 Um lojista atribui o preço de venda dos itens de sua loja com um número racional (uma fração de inteiros). Este comerciante.
Estrutura de Dados (DPADF 0056) Aula 7 – Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Algoritmos e Programação Prof. Marcos Saúde
Algoritmos e Programação utilizando Visualg
Estruturas de Dados Aula 2: Estruturas Estáticas
Construção de Algoritmos AULA 05
Algoritmos e Estruturas de Dados I
Vetores e Matrizes em C/C++
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
INF1007: Programação 2 2 – Alocação Dinâmica
1) Complete as seguintes frases:
INE5408 Estruturas de Dados
Profa. Mercedes Gonzales Márquez
Estrutura de Dados Revisão
Linguagem C Para programadores Python
Prof. Wellington Franco Sub-Rotinas:Funções e Procedimentos
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Aula 4 Estruturas.
Algoritmos e Estruturas de Dados I
Prof. Wellington Franco
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO
ARRAYS Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Algoritmos e Estruturas de Dados I
FUNDAMENTO DE PROGRAMAÇÃO
CONCEITO DE VARIÁVEIS ESTÁTICAS
Prof. Wellington Franco Manipulação de Arquivos em C
Introdução à Programação BCC 201 Aula
FUNDAMENTO DE PROGRAMAÇÃO PROF. WELLINGTON FRANCO
Departamento de Estatística e Informática
Algoritmos e Estruturas de Dados I
FUNDAMENTO DE PROGRAMAÇÃO
Subalgoritmo É um trecho de algoritmo construído para resolver parte de um problema maior. Também chamado de módulo. A técnica que consiste dividir o.
aritmética de ponteiros
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
Algoritmos e Estruturas de Dados I
Algoritmos e Programação MC102
Listas Encadeadas.
Algoritmos Prof.: Carlos Alberto _1:
Aula 22 Modularização 22/10/08.
Fundamentos de Programação 1
Profa. Maria Augusta Constante Puget
Tipos Abstratos de Dados
Linguagem de Programação II
Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL
Fundamentos de Programação 1
DHD – Desenvolvimento em Hardware
Filas Prof. Kariston Pereira
Computação Eletrônica Vetores e Matrizes
Algoritmos e Estruturas de Dados I – Ponteiros
Referências.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Estruturas definidas pelo programador
Linguagem C Linguagem Imperativa
DHD – Desenvolvimento em Hardware
Fundamentos de Programação 1
Programação II Mateus Raeder.
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Transcrição da apresentação:

Estruturas de Dados em C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)

Estruturas de dados 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. UDESC – Prof. Kariston Pereira 2

Estruturas de dados 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. UDESC – Prof. Kariston Pereira 3

Estruturas de dados Exemplo: struct data { int dia; int mes; int ano; }; UDESC – Prof. Kariston Pereira 4

Estruturas de dados 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. UDESC – Prof. Kariston Pereira 5

Estruturas de dados 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. UDESC – Prof. Kariston Pereira 6

Estruturas de dados 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. UDESC – Prof. Kariston Pereira 7

Declarando uma estrutura Duas maneiras de declarar a variável x do tipo data: struct data { int dia; int mes; int ano; }; ... struct data x; struct data { int dia; int mes; int ano; } x; ou Dois comandos: Define estrutura como novo tipo Declara variável do novo tipo definido Um comando: Define estrutura e declara variável do novo tipo definido UDESC – Prof. Kariston Pereira 8

Declarando uma estrutura 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. UDESC – Prof. Kariston Pereira 9

Declarando uma estrutura 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. UDESC – Prof. Kariston Pereira 10

Estruturas de dados Forma geral de definição de uma estrutura: struct <etiqueta> { <tipo> campo_1; <tipo> campo_2; ... <tipo> campo_n; } <variáveis>; UDESC – Prof. Kariston Pereira 11

Declarando uma estrutura utilizando typedef 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; UDESC – Prof. Kariston Pereira 12

Declarando uma estrutura utilizando typedef Exemplo: typedef struct data { int dia; int mes; int ano; } tipoData; UDESC – Prof. Kariston Pereira 13

Declarando uma estrutura utilizando typedef 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; UDESC – Prof. Kariston Pereira 14

Acessando os campos de uma estrutura 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> UDESC – Prof. Kariston Pereira 15

Leitura dos campos de uma estrutura 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); UDESC – Prof. Kariston Pereira 16

Estruturas aninhadas 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. UDESC – Prof. Kariston Pereira 17

Ponteiros para estruturas Como outros tipos de dados, ponteiros para estruturas são declarados colocando-se o operador * na frente do nome da variável estrutura: struct data *ap_ontem; tipoData *ap_amanha; UDESC – Prof. Kariston Pereira 18

Ponteiros para estruturas Para acessar uma estrutura com ponteiros pode-se usar duas sintaxes: Operador ponto: Operador seta: *<ponteiro_estrutura>.<campo> <ponteiro_estrutura>-><campo> UDESC – Prof. Kariston Pereira 19

Passando estruturas para funções Podemos passar estruturas inteiras ou apenas campos destas como argumento para funções ou procedimentos. Tal passagem pode ser realizada por valor ou por referência. As estruturas manipuladas por mais de uma função devem ser declaradas globalmente, antes da definição da função. UDESC – Prof. Kariston Pereira 20

Passando estruturas para funções Passando campos por valor Este processo é realizado da mesma forma que para variáveis simples, atentando-se para as peculiaridades das estruturas de dados. // Chamada funcao(estrutura.campo, ...); // Definicao formal <tipo> funcao(<tipo> variavel, ...) UDESC – Prof. Kariston Pereira 21

Passando estruturas para funções Passando campos por referência Da mesma forma que acontece para variáveis simples, deve-se pôr o operador & antes do nome da estrutura na chamada da função. // Chamada funcao(&estrutura.campo, ...); // Definicao formal <tipo> funcao(<tipo> *variavel, ...) UDESC – Prof. Kariston Pereira 22

Passando estruturas para funções Passando estruturas inteiras por valor Ao contrário de arrays, estruturas podem ser passadas por valor como argumentos de função. Para estruturas grandes, há o problema da cópia de valores na pilha de memória. // Chamada funcao(estrutura, ...); // Definicao formal <tipo> funcao(struct <etiqueta> estrutura, ...) UDESC – Prof. Kariston Pereira 23

Passando estruturas para funções Passando estruturas inteiras por referência Permite alteração da estrutura sem necessidade de criação de uma cópia na memória. // Chamada funcao(&estrutura, ...); // Definicao formal <tipo> funcao(struct <etiqueta> *estrutura, ...) UDESC – Prof. Kariston Pereira 24