Estrutura de Dados Revisão

Slides:



Advertisements
Apresentações semelhantes
Centro Integrado de Tecnologia da Informação
Advertisements

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
LPG-I: Tipos Complexos - Estruturas
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Fundamentos de Programação 1
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
exercícios listas encadeadas
Definição de Tipos Estruturas e Ponteiros
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
INE - UFSC - Disciplina Estruturas de Dados - Prof. Dr. Aldo von Wangenheim Página 1 Estruturas de Dados - T.332 Capítulo 3 Parte 1: Ponteiros, Passagem.
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Linguaguem de Programação II
Linguagem de Programação II
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Linguaguem de Programação II
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Algoritmo e Estrutura de Dados I Aulas 14 – Linguagem C Matriz Márcia Marra
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
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)
INE5408 Estruturas de Dados Ponteiros, passagem de parâmetros e modelos de memória.
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória.
Estruturas de Dados Aula 2: Estruturas Estáticas
Construção de Algoritmos AULA 05
INF1007: Programação 2 3 – Cadeias de Caracteres
Fundamentos de Programação 1
INF1007: Programação 2 2 – Alocação Dinâmica
Construção de Algoritmos AULA 04
INE5408 Estruturas de Dados
INE5408 Estruturas de Dados
INF1007: Programação 2 5 – Tipos Estruturados
INF1007: Programação 2 9 – Tipos Abstratos de Dados
Estruturas de Dados Aula 5: Matrizes
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Algoritmos e Estruturas de Dados I
Capítulo IV – Árvores Gerais
Programação de Computadores I – Arquivos
FUNDAMENTO DE PROGRAMAÇÃO PROF. WELLINGTON FRANCO
UNIDADE 7 Tipos estruturados
aritmética de ponteiros
Algoritmos e Programação MC102
Programação de Computadores I – Ponteiros
Listas Encadeadas.
Fundamentos de Programação 1
Linguagem de Programação II Apresentação
Linguagem de Programação II
Linguagem de Programação Aplicações Avançadas de Microprocessadores
Programação de Computadores I – Arquivos
Pthreads – POSIX Threads
Orientação a Objetos - Programação em C++
Programação de Computadores I – Ponteiros
DHD – Desenvolvimento em Hardware
Algoritmos e Estruturas de Dados I – Ponteiros
Estruturas de Dados em C
Strings.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
DHD – Desenvolvimento em Hardware
Programação de Computadores LINGUAGEM C – AULA 03 – PROF. WELLINGTON TELLES.
Estruturas de Dados Aula 5: Matrizes 16/03/2015. Matrizes Conjuntos bidimensionais declarados estaticamente float mat[4][3]; acesso de elemento: mat[2][0]
Fundamentos de Programação 1
Programação de Computadores LINGUAGEM C – AULA 04 - PROF. WELLINGTON TELLES.
parâmetros e modelos de memória
Transcrição da apresentação:

Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho ljhfilho@gmail.com

Revisão : Struct/Registros

Struct/Registros Armazenar um conjunto heterogêneo de informação; Exemplo: Informações de uma passagem de avião, onde temos: número da passagem (inteiro), nome do passagem (char), destino e origem (char), data (char), horário (char), poltrona (char), valor (float). Como armazenar isto?

Struct/Registros Em uma Struct/Registro!!! É um conjunto composto de variáveis heterogênea sob um nome; É definido pelo usuário; Pois estas informações são subdivisões de um registro (elementos do conjunto), chamados de campos;

Struct/Registros struct <nome_estrutura> { <tipo_1> <nome_1>; <tipo_2> <nome_2>; ... <tipo_n> <nome_n>; } <nome da variável>; Declaração: struct <nome strutura> <nome da variável>

Struct/Registros Exemplos 1: struct addr { char nome[30]; char endereco[40]; char cidade[20]; char estado[3]; int cep; }; struct addr endereco_info;

Struct/Registros Exemplos 1: struct addr { char nome[30]; char endereco[40]; char cidade[20]; char estado[3]; int cep; } endereco_info;

Struct/Registros Usando um vetor de struct: struct addr agenda[50]; Referênciando elementos da estrutura: strcpy(agenda[3].nome, “jose Silva”); gets(agenda[3].endereco); scanf(“%d”, &agenda[3].cep); Agenda[3].cep = 81010140

Struct/Registros struct tipo_agenda { char nome[50]; char fone[20]; }; int main(int argc, char** argv) { struct tipo_agenda agenda; printf("Digite o nome : \n"); scanf("%s",&agenda.nome); printf("Digite o fone : \n"); scanf("%s", &agenda.fone); printf("Nome %s e fone %s\n", agenda.nome, agenda.fone); return 0; }

Struct/Registros struct tipo_agenda { char nome[50], fone[20]; }; int main(int argc, char** argv) { int i; struct tipo_agenda agenda[5]; for(i=0;i<5;i++) { printf("Digite o nome : \n"); scanf("%s",&agenda[i].nome); printf("Digite o fone : \n"); scanf("%s", &agenda[i].fone); } printf("Nome %s e fone %s\n", agenda[i].nome, agenda[i].fone); } return 0;

Revisão : Ponteiros

Ponteiros O que são ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente a posição de uma outra variável na memória. Se uma variável contém o endereço de uma outra, então a primeira variável é dita para apontar para a segunda.

Ponteiros Endereço na memória Variável na memória 1000 1003 1001 1002 JOSE 1004 1005

Ponteiros Declaração: <tipo> *<nome da variável>; Exemplo: int *valor; char *nome;

Ponteiros Os operadores de Ponteiros: & - é um operador unário que devolve o endereço na memória do seu operando. Exemplo: m = &count; * - é o complemento de &. É um operador unário que devolve o valor da variável localizada no endereço que o segue. q = *m;

Ponteiros Atribuição de ponteiros: #include <stdio.h> int main() { int x; int *p1, *p2; x = 1000; p1 = &x; p2 = p1; printf("%p \n", p2); /*escreve o endereço de x, não seu valor*/ printf("%d \n", *p2); /* escreve o valor de x */ return 0; }

Ponteiros Aritmética de ponteiros: Comparação de ponteiros: int *p1; p1 = &x; /* supondo que a posição de x é igual a 2000 */ p1++; /* incrementando em uma posição, agora vale 2001*/ p1--; /* decrementando em uma posição, agora vale 2000*/ P1 = p1 +10; /* Soma de posições, agora vale 2010*/ Comparação de ponteiros: If (p<q) printf(“p aponta para uma memória mais baixa que q”); If (p == q) printf(“p aponta para a memória mesma que q”);

Ponteiros Ponteiros e Matrizes: char str[80], *p1; p1 = str; p1 foi inicializado com o endereço de primeiro elemento da matriz str. Para acessar o quinto elemento de str: str[4]; *(p1+4); Vetor/Matriz de Ponteiros: int *x[10]; x[2] = &var; Atribuir o endereço a variável var a uma posição do vetor *x[2]; Valor de var.

Ponteiros Indireção mútipla: Inicialização de ponteiros: int main() { int x, *p, **q; x = 10; p = &x; q = &p; printf(“%d”, **q); return 0; } Inicialização de ponteiros: int *p = NULL; char *p = “alo mundo”;

Ponteiros Alocação dinâmica: stdlib.h Malloc = aloca memória int *p; If (!(p=malloc(50*sizeof(int)) { Printf(“sem memória.\n”); Return 0; } Free = desaloca memória free(p);

Ponteiros int main() { char *s; int t; s = malloc(80); if (!s) return 0; gets(s); for ( t = strlen(s) - 1; t >= 0; t--) putchar(s[t]); free(s); }

Revisão : Funções

Funções Funções são blocos de construção e o local onde toda a atividade do programa ocorre. <tipo> <nome da função> (<lista de parâmetros>) { < Corpo da função> } (<lista de parâmetros>) = (<tipo1> <nome do parâmetro 1>, <tipo2> <nome do parâmetro 2>, …, <tipo n> <nome do parâmetro n>)

Funções Argumentos de funções: Elas se comportam como quaisquer outras variáveis locais dentro da função e são criadas na entrada e destruídas na saída. Chamada por valor : Esse método copia o valor de um argumento no parâmetro formal da sub- rotina. Assim as alterações feitas nos parâmetros da sub-rotina não têm nenhum efeito nas variáveis usadas para chamá-la; Chamada por referência: Nesse métodos, o endereço de um argumento é copiado no parâmetro. Dentro da sub-rotina, o endereço é usado para acessar o argumento real utilizado na chamada. Isso significa que alterações feitas no parâmetro afetam a variável usada para chamar a rotina.

Funções Exemplo Chamada por valor: #include <stdio.h> int sqr(int x); int main() { int t = 10; printf(“%d %d”, sqr(t), t); } int sqr(int x) { x = x * x; return x;

Funções Exemplo Chamada por referência: #include <stdio.h> void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main(){ int I, j; I = 10; j = 20; swap(&I, &j); return 0;

Funções Argc e argc – Argumentos para main() Comando return int main( int argc, char *argv){ if( argc != 2) { printf(“Você esqueceu de digitar seu nome.\n”); return 0; } printf(“Ola %s”, argv[1]); return 1; Comando return Retornando de uma função Retornando Valores

Funções Protótipos de funções: void sqrt_it(int *i); int main() { int x; x = 10; sqrt_it(x); } void sqrt_it(int *valor) { *valor = *valor * *valor;

Bibliografia Schildt, Herbet. C Completo e Total, 3ª ed. São Paulo. Markron Books, 1996.