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

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

Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho

Apresentações semelhantes


Apresentação em tema: "Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho"— Transcrição da apresentação:

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

2 Revisão : Struct/Registros

3 Struct/Registros Armazenar um conjunto heterogêneo de informação; Exemplo: o 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). o Como armazenar isto?

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

5 Struct/Registros struct { ;... ; } ; Declaração: struct

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

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

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

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

10 Struct/Registros struct tipo_agenda { char nome[50]; char 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); } for(i=0;i<5;i++) { printf("Nome %s e fone %s\n", agenda[i].nome, agenda[i].fone); } return 0; }

11 Revisão : Ponteiros

12 Ponteiros O que são ponteiros? o 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.

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

14 Ponteiros Declaração: o * ; Exemplo: o int *valor; o char *nome;

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

16 Ponteiros Atribuição de ponteiros: #include 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; }

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

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

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

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

21 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); return 0; }

22 Revisão : Funções

23 Funções Funções são blocos de construção e o local onde toda a atividade do programa ocorre. ( ) { } ( ) = (,, …, )

24 Funções Argumentos de funções: o 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. o 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; o 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.

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

26 Funções Exemplo Chamada por referência: #include 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; }

27 Funções Argc e argc – Argumentos para main() 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 o Retornando de uma função o Retornando Valores

28 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 *i) { *i = *i * *I; }

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


Carregar ppt "Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho"

Apresentações semelhantes


Anúncios Google