TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 5 1 05/08/2011 Professor Leomir J. Borba-

Slides:



Advertisements
Apresentações semelhantes
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 04 Aquiles Burlamaqui UERN
Advertisements

ENGENHARIA CIVIL COMPUTAÇÃO APLICADA Aula 12
05/08/2011 Professor Leomir J. Borba- –
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
03/08/2011 Professor Leomir J. Borba- –
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Alocação Dinâmida de Memória
LPG - I: Alocação Dinâmica de Memória - Ponteiros
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.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Slides: Prof. João Fabro UTFPR - Curitiba
Armazenamento de Dados em Arquivos
Estruturas de Dados Homogêneas Multidimensionais – Matrizes
Matrizes e Funções - Continuação
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Escola Secundária c/ 3º CEB da Batalha
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.
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
INTELIGÊNCIA ARTIFICIAL
Construção de Algoritmos AULA 04
Construção de Algoritmos AULA 03
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Alocação Dinâmica de Memória
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula /08/2011 Professor Leomir J. Borba- –
Estruturas de Dados Aula 5: Matrizes
Linguagem de Programação
Estruturas de Dados Aula 11: TAD Pilha
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
 São utilizadas para dividir um código maior (mais complexo) em partes menores (mais simples).  Quando uma mesma tarefa é realizada várias vezes em um.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
Estruturas de Dados Aula 6: Cadeias de Caracteres
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Prof. Alessandro Gonçalves
Revisão Luis Antonio Tavares
Programação de Computadores I – Arquivos
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 Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo X Encadeamento de Estruturas por Ponteiros.
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
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
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
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.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Fundamentos de Programação 1
Transcrição da apresentação:

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba- –

Agenda Correção exercícios aula 6 Revisão aula anterior Projeto e comparação de estrutura de dados relacionados e algoritmos relacionados Ponteiros Alocação de memória e matrizes como ponteiros Pilha Bibliografia 2 05/08/2011 Professor Leomir J. Borba- –

Correção exercícios aula 6 /* programa_vetor_01.c */ #include #define TAMANHO 5 int main (void) { int iIndice; int iValorA; int iSoma; int aVetor [TAMANHO]; float fMedia; for (iIndice = 0; iIndice < TAMANHO; iIndice++) { printf("Entre com o valor %d:", iIndice + 1); scanf("%d", &iValorA); aVetor[iIndice] = iValorA; } iSoma = 0; for (iIndice=0; iIndice < TAMANHO; iIndice++) { iSoma += aVetor[iIndice]; } fMedia = (float) iSoma/TAMANHO; printf ("Media : %f\n", fMedia); return 0; } 3 05/08/2011 Professor Leomir J. Borba- –

Correção exercícios aula 6 /* programa_memoria_01.c */ #include int main(void) { int *p; int i,k, n; printf("\nDigite a quantidade de numeros que serao digitados ->"); scanf("%d", &i); /* A função malloc reserva espaço suiciente para um vetor de inteiros. Caso sejam digitados 5 elementos, serão reservados 20 bytes, pois cada inteiro ocupa 4 bytes na memória */ p = (int *)(malloc(i*sizeof(int))); if( p == NULL ) { printf("\nErro de alocacao de memoria"); exit(1); } for( k=0;k<i;k++) { printf("Digite o numero para o indice %d ->", k); scanf("%d", &p[k]); } for( k=0;k<i;k++) { printf("O numero do indice %d eh %d\n", k, p[k]); } printf("\nDigite quantos elementos quer adicionar ao vetor ->"); scanf("%d", &n /* A função realloc aumenta ou diminui o tamanho do vetor dinamicamente. Ela recebe o ponteiro para o vetor anterior e retorna o novo espaço alocado. */ p = (int *)(realloc(p,(i+n)*sizeof(int))); if( p == NULL ) { printf("\nErro de re-alocacao de memoria"); exit(1); } for(;k<(n+i);k++) } { printf("Digite o numero para o indice %d ->", k); scanf("%d", &p[k]); } for( k=0;k<(i+n);k++) { printf("O numero do indice %d eh %d\n", k, p[k]); } free(p); return 0; } 4 05/08/2011 Professor Leomir J. Borba- –

Correção exercícios aula 6 /* programa_memoria_02.c */ #include int main(void) { /* A declaração de uma matriz de 2 dimensões exige um ponteiro para ponteiro. */ int **p; int i,j,k,x; printf("\nDigite as dimensoes da matriz ->"); scanf("%d %d", &i, &j); /* Alocação da primeira dimensão. Internamente, a função calloc fará uma multiplicação da quantidade de elementos pelo tamanho de cada elemento para saber quanto de memória deve ser alocada. */ p = calloc(i,sizeof(int)); if( p == NULL ) { printf("\nErro de alocacao de memoria"); exit(1); } for( k=0;k<i;k++) { /* Alocação das linhas de cada coluna (segunda dimensão) */ p[k] = calloc(j,sizeof(int)); if( p[k] == NULL ) { printf("\nErro de alocacao de memoria"); exit(1); } for( k=0;k<i;k++) { for(x=0;x<j;x++) { printf("Digite o numero para o indice %d,%d ->", k,x); scanf("%d", &p[k][x]); } for( k=0;k<i;k++) { for(x=0;x<j;x++) { printf("O numero do indice %d,%d eh %d\n", k,x, p[k][x]); } printf("\nLiberando memoria alocada"); for( k=0;k<i;k++) { free(p[k]); /* Primeiro deve ser liberada a memória para linha da matriz... */ } free(p); /*... para depois liberar a memória do vetor que continha as linhas. */ } 5 05/08/2011 Professor Leomir J. Borba- –

Revisão aula /08/2011 Professor Leomir J. Borba- – Estrutura de Dados – Dados Homogêneos Vetor ; Matriz – Dados Heterogêneos Registro – Uso de Memória em C Alocação Estática x Dinamica

Ponteiros 7 05/08/2011 Professor Leomir J. Borba- – Tipo de dados implementado por C para guardar endereço de memória e acessar informação. Deve-se entender quando esta trabalhando com o endereço de memória e quando esta trabalhando com a informação Operadores & e * Passa variáveis para funções por referencia Aritmética com ponteiros Vetores e Matrizes como ponteiros em C Ponteiro para Ponteiro

Alocação de memória e matrizes como ponteiros 8 05/08/2011 Professor Leomir J. Borba- – Matriz deve ser declarada usando formato de ponteiro, o pnteiro que representa a matriz pode ser utlizado no formato matriz[linha][coluna] 1/* programa_memoria_04.c */ #include int ** aloca(int i, int j); void libera(int **p, int i, int j); void leitura(int **p, int i, int j); void imprime(int **p, int i, int j); int main(void) { int **p; int **p1; p = aloca(, ); leitura(p,, ); p1 = aloca(, ); leitura(p1,, ); imprime(p,, ); imprime(p1,, ); libera(p,, ); libera(p1,, ); return 0; } /* 2 asteriscos (*) indicam que será retornada uma matriz */ int ** aloca(int i, int j) { /* ponteiro de ponteiro. Indica que será alocada uma matriz de 2 dimensões */ int **p; int x; p = calloc(i,sizeof(int)); /* alocação de linhas... */ if( p == NULL ) { printf("\nErro de alocacao"); exit(-1);

Pilha 9 05/08/2011 Professor Leomir J. Borba- – Uma pilha é um conjunto ordenado de itens, no qual novos itens podem ser inseridos e a partir do qual podem ser eliminados itens de uma extremidade, chamada topo da pilha. Também é chamada de lista linear, onde todas as inserções e eliminações são feitas em apenas uma das extremidades, chamada topo

Pilha 10 05/08/2011 Professor Leomir J. Borba- – Metodos e funções push - coloca uma informação na pilha (empilha). pop - retira uma informação da pilha (desempilha). size - retorna o tamanho da pilha. stackpop - retorna o elemento superior da pilha sem removê-lo (equivalente às operações de pop e um push). empty - veriica se a pilha está vazia. Aplicação frequente em compiladores e S.O para controle de dados, alocação de variaveis.

Pilha 11 05/08/2011 Professor Leomir J. Borba- – Representação em algoritimo.

Pilha 12 05/08/2011 Professor Leomir J. Borba- – Representação em C – Pilha é um conjunto ordenado itens, na linguagem C o tipo de dado que a representa é o vetor. Representação de métodos e funções de pilhas em algoritmos

Pilha 13 05/08/2011 Professor Leomir J. Borba- –

Bibliografia 05/08/2011 Professor Leomir J. Borba- – 14 BIBLIOGRAFIA BÁSICA 1 AZEREDO, Paulo A. Métodos de Classificação de Dados. Rio de Janeiro: Ed. Campus, LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Ed. São Paulo: Brasport, PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7.ed. São Paulo: Érica, BIBLIOGRAFIA COMPLEMENTAR 4 KOFFMANN, E.B. Objetos, Abstração, Estrutura de Dados e Projetos. 1ª Ed. Rio de Janeiro: LTC, MORAES, Celso Roberto. Estruturas de Dados e Algoritmos.Uma abordagem didática. Edição revista e Ampliada. São Paulo: Editora Futura, WIRTH, Niklaus. Algoritmos e estruturas de dados. Rio de Janeiro: Prentice Hall do Brasil, ZIVIANI, N. Projeto de Algoritmos com implementações em Pascal e C, Editora Pioneira, 1999.