Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)
|
|
- Rayssa Madureira
- 4 Há anos
- Visualizações:
Transcrição
1 Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs) 1
2 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente do mesmo tipo, associados a um mesmo identificador. Arrays e matrizes são agregados homogêneos. P. ex.: float notap1[n]; Cada elemento notap1[i] tem o tipo float e é associado ao mesmo identificador notap1. 2
3 AGREGADO HETEROGÊNEO Um agregado heterogêneo de dados é um conjunto de dados não necessariamente do mesmo tipo, associados a um mesmo identificador. Exemplo: os dados associados a um aluno matriculado em uma disciplina são RA (inteiro), nome (array de char), número de faltas (inteiro), nota na P1 (float) e nota na P2 (float). 3
4 STRUCT Para definir um agregado heterogêneo em C, precisamos definir uma struct. struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; A declaração acima define um agregado de dados chamado struct aluno com cinco membros, chamados ra, nome, faltas, notap1 e notap2. 4
5 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; declara novo tipo agregado de dados chamado struct aluno 5
6 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice; declara variável de nome clarice com tipo struct aluno 6
7 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice; clarice.ra = ; acesso ao membro ra da variável clarice 7
8 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice; clarice.ra = ; strncpy(clarice.nome,"clarice Lispector",60); o membro nome da variável clarice é uma string para inicializá-la, temos que copiar os dados de outra string 8
9 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice; clarice.ra = ; strncpy(clarice.nome,"clarice Lispector",60); clarice.faltas = 3; clarice.notap1 = 6.5; clarice.notap2 = 7.5; 9
10 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice = {.ra = ,.nome = "Clarice Lispector",.faltas = 3,.notaP1 = 6.5,.notaP2 = 7.5 declaração de variável com atribuição 10
11 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno clarice = {.ra = ,.nome = "Clarice Lispector",.faltas = 3,.notaP1 = 6.5,.notaP2 = 7.5 lembre que só na inicialização podemos usar = para atribuir a um array de char 11
12 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno *clarice = (struct aluno *) malloc(sizeof(struct aluno)); 12
13 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno *clarice = (struct aluno *) malloc(sizeof(struct aluno)); (*clarice).ra = ; Acesso a membro de struct via ponteiro. Método 1: dereferencie o ponteiro e acesse o membro usando o operador ponto. 13
14 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno *clarice = (struct aluno *) malloc(sizeof(struct aluno)); clarice->ra = ; Acesso a membro de struct via ponteiro. Método 2: acesse o membro usando o operador -> (dereferenciação implícita) 14
15 struct aluno { int ra; char nome[61]; int faltas; float notap1; float notap2; struct aluno *clarice = (struct aluno *) malloc(sizeof(struct aluno)); clarice->ra = ; strncpy(clarice->nome,"clarice Lispector",60); clarice->faltas = 3; clarice->notap1 = 6.5; clarice->notap2 = 7.5; free(clarice); 15
16 OUTRO EXEMPLO: frações inteiras Vamos definir uma struct para representar frações inteiras. struct fracao { int num; // numerador unsigned int den; // denominador Vamos definir funções para manipular e imprimir frações. 16
17 struct fracao { int num; // numerador unsigned int den; // denominador #include <stdio.h> void fracao_imprime(struct fracao a) { printf("%d/%u", a.num, a.den); } 17
18 struct fracao { int num; // numerador unsigned int den; // denominador #include <stdio.h> void fracao_imprime(struct fracao a) { printf("%d/%u", a.num, a.den); } E se o numerador for zero? Melhor imprimir na forma mais resumida. 18
19 struct fracao { int num; // numerador unsigned int den; // denominador #include <stdio.h> void fracao_imprime(struct fracao a) { if (a.num == 0) { printf("0"); } else { printf("%d/%u", a.num, a.den); } } 19
20 struct fracao { int num; // numerador unsigned int den; // denominador #include <stdio.h> void fracao_imprime(struct fracao a) { if (a.num == 0) { printf("0"); } else { printf("%d/%u", a.num, a.den); } } E se o denominador for 1? 20
21 struct fracao { int num; // numerador unsigned int den; // denominador #include <stdio.h> void fracao_imprime(struct fracao a) { if (a.num == 0) { printf("0"); } else if (a.den == 1) { printf("%d", a.num); } else { printf("%d/%u", a.num, a.den); } } 21
22 [cling]$.l fracao.c [cling]$ struct fracao a; 22
23 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; 23
24 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ 24
25 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 25
26 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); Só para pular linha. 26
27 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ 27
28 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; 28
29 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ 29
30 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 30
31 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 0 [cling]$ 31
32 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 0 [cling]$ a.num = 10; a.den = 1; 32
33 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 0 [cling]$ a.num = 10; a.den = 1; [cling]$ 33
34 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 0 [cling]$ a.num = 10; a.den = 1; [cling]$ fracao_imprime(a); puts(""); 34
35 [cling]$.l fracao.c [cling]$ struct fracao a; [cling]$ a.num = 10; a.den = 3; [cling]$ fracao_imprime(a); puts(""); 10/3 [cling]$ a.num = 0; [cling]$ fracao_imprime(a); puts(""); 0 [cling]$ a.num = 10; a.den = 1; [cling]$ fracao_imprime(a); puts(""); 10 [cling]$ 35
36 struct fracao { int num; // numerador unsigned int den; // denominador struct fracao fracao_multiplica( struct fracao a, struct fracao b) { struct fracao result; } return result; 36
37 struct fracao { int num; // numerador unsigned int den; // denominador struct fracao fracao_multiplica( struct fracao a, struct fracao b) { struct fracao result; result.num = a.num * b.num; result.den = a.den * b.den; return result; } 37
38 struct fracao { int num; // numerador unsigned int den; // denominador struct fracao fracao_soma( struct fracao a, struct fracao b) { struct fracao result; } return result; 38
39 struct fracao { int num; // numerador unsigned int den; // denominador struct fracao fracao_soma( struct fracao a, struct fracao b) { struct fracao result; result.num = a.num*b.den + a.den*b.num; result.den = a.den*b.den; return result; } 39
40 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros topo 40
41 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) topo 41
42 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) topo 42
43 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) 33 topo 43
44 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 33 topo 44
45 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) topo 33 45
46 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 42 topo 33 46
47 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 99 topo push(99)
48 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18)
49 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18) 42 push(51) 33 49
50 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18) 42 push(51) 33 50
51 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18) 42 push(51) pop() 33 51
52 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18) 42 push(51) pop() 33 52
53 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros 18 topo push(33) push(42) 99 push(99) push(18) 42 push(51) pop()
54 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 99 topo push(99) push(18) 42 push(51) pop()
55 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 99 topo push(99) push(18) 42 push(51) pop() pop() 55
56 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 99 topo push(99) push(18) 42 push(51) pop() pop() 56
57 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) 99 topo push(99) push(18) 42 push(51) pop() pop() 99 57
58 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) push(99) push(18) 42 topo push(51) pop() pop() 99 58
59 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) push(99) push(18) 42 topo push(51) pop() pop() 99 pop() 59
60 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) push(99) push(18) push(51) pop() topo pop() 99 pop() 42 60
61 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) push(99) push(18) push(51) pop() topo pop() 99 pop() 42 pop() 61
62 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) push(42) push(99) push(18) push(51) pop() 18 pop() 99 pop() 42 topo pop() 33 62
63 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) pop() push(42) push(99) push(18) push(51) pop() 18 pop() 99 pop() 42 topo pop() 33 63
64 PILHA Estrutura para armazenamento de dados onde as inserções (push) e remoções (pop) acontecem apenas em uma das pontas. Ex.: uma pilha de inteiros push(33) pop() push(42) push(99) push(18) push(51) pop() 18 pop() 99 pop() 42 topo pop() 33 64
65 struct pilha_int { int *numeros; int capacidade; int topo; 65
66 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 66
67 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 67
68 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 68
69 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); E se malloc não p->capacidade = 0; conseguir alocar } memória? } 69
70 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 70
71 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 71
72 struct pilha_int { int *numeros; int capacidade; int topo; #include <stdlib.h> #include <stdio.h> void pilha_int_constroi(struct pilha_int *p, int capacidade) { p->capacidade = capacidade; p->topo = -1; p->numeros = (int *) malloc(capacidade*sizeof(int)); if (p->numeros == NULL) { puts("erro de alocação!"); p->capacidade = 0; } } 72
73 struct pilha_int { int *numeros; int capacidade; int topo; // Retorna verdadeiro se a pilha está vazia int pilha_int_vazia(struct pilha_int *p) { return p->topo < 0; } // Retorna verdadeiro se a pilha está cheia int pilha_int_cheia(struct pilha_int *p) { return p->topo >= p->capacidade - 1; } 73
74 struct pilha_int { int *numeros; int capacidade; int topo; // Retorna verdadeiro se a pilha está vazia int pilha_int_vazia(struct pilha_int *p) { return p->topo < 0; } // Retorna verdadeiro se a pilha está cheia int pilha_int_cheia(struct pilha_int *p) { return p->topo >= p->capacidade - 1; } 74
75 struct pilha_int { int *numeros; int capacidade; int topo; // Retorna verdadeiro se a pilha está vazia int pilha_int_vazia(struct pilha_int *p) { return p->topo < 0; } // Retorna verdadeiro se a pilha está cheia int pilha_int_cheia(struct pilha_int *p) { return p->topo >= p->capacidade - 1; } 75
76 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_push(struct pilha_int *p, int n) { if (pilha_int_cheia(p)) { puts("pilha cheia!"); } else { p->numeros[++p->topo] = n; } } 76
77 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_push(struct pilha_int *p, int n) { } ++p->topo; p->numeros[p->topo] = n; 77
78 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_push(struct pilha_int *p, int n) { } p->numeros[++p->topo] = n; 78
79 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_push(struct pilha_int *p, int n) { } E se a pilha estiver cheia? p->numeros[++p->topo] = n; 79
80 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_push(struct pilha_int *p, int n) { if (pilha_int_cheia(p)) { puts("pilha cheia!"); } else { p->numeros[++p->topo] = n; } } 80
81 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { if (pilha_int_vazia(p)) { puts("pilha vazia!"); return 0; } else { return p->numeros[p->topo--]; } } 81
82 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { } int valor = p->numeros[p->topo]; p->topo--; return valor; 82
83 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { int valor = p->numeros[p->topo--]; } return valor; 83
84 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { int valor = ; } return p->numeros[p->topo--]; 84
85 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { } int valor = ; E se a pilha estiver vazia? return p->numeros[p->topo--]; 85
86 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { if (pilha_int_vazia(p)) { puts("pilha vazia!"); return 0; } else { return p->numeros[p->topo--]; } } 86
87 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { if (pilha_int_vazia(p)) { puts("pilha vazia!"); return Somos obrigados 0; a retornar um int! } else { return p->numeros[p->topo--]; } } 87
88 struct pilha_int { int *numeros; int capacidade; int topo; int pilha_int_pop(struct pilha_int *p) { if (pilha_int_vazia(p)) { puts("pilha vazia!"); return 0; } else { return p->numeros[p->topo--]; } } 88
89 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_destroi(struct pilha_int *p) { if (p->numeros!= NULL) { free(p->numeros); p->numeros = NULL; p->capacidade = 0; p->topo = -1; } } 89
90 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_destroi(struct pilha_int *p) { if (p->numeros!= NULL) { free(p->numeros); p->numeros = NULL; p->capacidade = 0; p->topo = -1; } } 90
91 struct pilha_int { int *numeros; int capacidade; int topo; void pilha_int_destroi(struct pilha_int *p) { if (p->numeros!= NULL) { free(p->numeros); p->numeros = NULL; p->capacidade = 0; p->topo = -1; } } 91
92 STRUCTS: BOAS PRÁTICAS Sempre que definir structs, adquira o hábito de definir as funções que as manipulem. Sempre que possível, manipule as structs usando suas funções. Evite mexer manualmente nos campos fora das funções (facilita futuros refactorings). Nomenclatura sugerida: ao definir uma struct XYZ, nomeie as funções relacionadas como XYZ_nome_da_funcao para evitar conflito de nomes. 92
93 struct pilha_int { int *numeros;... void pilha_int_constroi(struct pilha_int *, int); int pilha_int_vazia(struct pilha_int *); int pilha_int_cheia(struct pilha_int *); void pilha_int_push(struct pilha_int *, int); int pilha_int_pop(struct pilha_int *); void pilha_int_destroi(struct pilha_int *); 93
94 struct pilha_int { int *numeros;... void pilha_int_constroi(struct pilha_int *, int); int pilha_int_vazia(struct pilha_int *); int pilha_int_cheia(struct pilha_int *); void pilha_int_push(struct pilha_int *, int); int pilha_int_pop(struct pilha_int *); void pilha_int_destroi(struct pilha_int *); struct pilha_dbl { double *numeros;... void pilha_dbl_constroi(struct pilha_dbl *, int); int pilha_dbl_vazia(struct pilha_dbl *); int pilha_dbl_cheia(struct pilha_dbl *); void pilha_dbl_push(struct pilha_dbl *, double); double pilha_dbl_pop(struct pilha_dbl *); void pilha_dbl_destroi(struct pilha_dbl *); 94
95 STRUCTS: BOAS PRÁTICAS Mantenha a consistência nas definições das funções relacionadas a uma struct. Sugere-se que a struct (ou o ponteiro para ela) seja sempre passada no primeiro parâmetro. void pilha_int_constroi(struct pilha_int *, int); int pilha_int_vazia(struct pilha_int *); int pilha_int_cheia(struct pilha_int *); void pilha_int_push(struct pilha_int *, int); int pilha_int_pop(struct pilha_int *); void pilha_int_destroi(struct pilha_int *); 95
96 PARA CASA 0. Altere fracao.c e: implemente a função transforme_em_irredutivel que transforma a fração passada em irredutível (use o mdc entre numerador e denominador) altere as funções soma e multiplica para que elas sempre produzam frações irredutíveis implemente a função fracao_compara conforme instruções em fracao.c 96
97 PARA CASA 1. Altere a função pilha_int_insere para transformar a pilha de inteiros em uma pilha dinâmica: se não houver espaço para inserir um número na pilha, deve ser alocado um novo espaço para a pilha com o dobro do tamanho do anterior, os elementos antigos devem ser copiados e o novo elemento é inserido. Em caso de nova alocação, lembre de liberar (free) a alocação antiga. 97
98 PARA CASA 2. Crie as funções int pilha_int_tamanho(struct pilha_int *p) que retorna a quantidade de elementos inseridos na pilha de inteiros e int pilha_int_elemento(struct pilha_int *p, int i) que retorna o i-ésimo elemento da pilha, para i entre 0 e o índice do último elemento na pilha. Sua função deve verificar se o índice é válido. Caso não seja, deve imprimir uma mensagem de erro e retornar 0. 98
99 PARA CASA 3. Crie uma pilha de alunos, onde cada elemento da pilha é uma struct aluno. As operações devem ser pilha_aluno_constroi, pilha_aluno_destroi, pilha_aluno_vazia, pilha_aluno_cheia, pilha_aluno_push, pilha_aluno_pop, pilha_aluno_tamanho e pilha_aluno_elemento. Para testar, pegue o arquivo alunos.c da aula passada e insira os dados ali contidos na pilha. 99
100 PARA CASA 4. Crie funções pilha_aluno_ordena_media e pilha_aluno_ordena_nome, que ordenam a pilha de alunos pela média (0,4 P1 + 0,6 P2) e pelo nome. Use bubble sort. Dica: a função strcmp de string.h permite comparar duas strings s1 e s2. < 0 se s1 vem antes de s2 no dicionário strcmp(s1, s2) é ==0 se s1 é igual a s2 > 0 se s1 vem após s2 no dicionário 100
101 PARA CASA 5. Crie uma struct vetor_dbl para representar um vetor cujas coordenadas são doubles, junto com seu tamanho. Crie as funções para: criar um vetor, soma, produto interno, módulo (tamanho de acordo com a distância euclidiana) e ângulo entre dois vetores. 6. Crie uma struct matriz_dbl para representar matrizes bidimensionais, junto com suas coordenadas. Crie as funções: criar matriz, soma, produto matriz x matriz e matriz x vetor. 101
Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Ponteiros e Passagem de Parâmetros 1 AULA PASSADA - ponteiros Uma declaração tal como: tipo *nome; Declara um ponteiro: referência
Leia maisAula 25: Alocação Dinâmica
Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas
Leia maisINF 1620 P2-01/11/03 Questão 1 Nome:
INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,
Leia maisEstruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória
Leia maisAtividade de laboratório listas encadeadas simples
Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém
Leia maisExercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Leia maisEstruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Leia maisIntrodução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Leia maisAlgoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Leia maisMódulo 7 Cadeias de Caracteres
Estruturas de Dados Módulo 7 Cadeias de Caracteres 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisAlocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)
Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática
Leia maisPonteiros e Alocação de Memória
Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051
Leia maisEstruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo
Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1 Motivação Definir uma representação agregada na linguagem C para manipular
Leia maisPonteiros. Baseado nos slides do Prof. Mauro.
Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar
Leia maisAlocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisSumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Leia mais11a. Aula Ponteiros e Vetores
11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer
Leia maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Vetores (Arrays)
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Vetores (Arrays) 1 AULA PASSADA - CONDICIONAIS Exercício 1: Crie a função vlrabs que recebe um double e retorna o seu valor absoluto.
Leia maisCurso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Leia maisINF 1620 P2-23/10/04 Questão 1 Nome:
INF 1620 P2-23/10/04 Questão 1 Considere um tipo abstrato de dados para representar uma disciplina da PUC-Rio, com as seguintes informações: Nome da disciplina: com até 50 caracteres Código da disciplina:
Leia maisIntrodução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo
Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisListas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {
Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisAula 27: Estruturas heterogêneas e alocação dinâmica
Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória
Leia maisPonteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação
Leia maisAula 24 Ponteiros, vetores e structs
Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis
Leia maisDepartamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia maisIntrodução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Leia maisFundamentos de Programação
Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisPonteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013
Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisPonteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013
Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisAULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos
Melhores momentos AULA Endereços: a memória é um vetor e o índice desse vetor onde está uma variável é o endereço da variável. Com o operador & obtemos o endereço de uma variável. Exemplos: &i é o endereço
Leia maisCaracteres e Cadeias de Caracteres
Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor
Leia maisAlocação Dinâmica. Introdução à Computação
Alocação Dinâmica Introdução à Computação Alocação de memória Uso da memória: uso de variáveis globais (e está>cas): O espaço reservado para uma variável global existe enquanto o programa es>ver sendo
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisINF 1620 P1-04/10/03 Questão 1 Nome:
INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float
Leia maisReinaldo Gomes Alocação Dinâmica
Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente
Leia maisAluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0
P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente
Leia maisINF 1620 P4 11/12/06 Questão 1 Nome:
INF 1620 P4 11/12/06 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$
Leia maisExercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,
Leia maisProgramação de Computadores II. Cap. 7 Cadeias de Caracteres
Programação de Computadores II Cap. 7 Cadeias de Caracteres Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais
Leia maisa) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)
INF 620 P - 7/04/04 Questão a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: Ou seja: π 4 * + 3 π 5 7 + 9 i ( ) 4 * n i= 0 2 * i + + K Esta função
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisINF 1620 P4-09/07/03 Questão 1 Nome:
INF 1620 P4-09/07/03 Questão 1 Um ponto geométrico no espaço 2D é representado pelas coordenadas reais x e y. Considere uma aplicação que precisa manipular pontos, através da implementação de duas funções.
Leia maisEstrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios
Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios Prof. Flávio de Oliveira Silva, M.Sc. 1. Crie uma função chamada somavetor. Esta função deve receber dois vetores
Leia maisPonteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória
Leia maisDepartamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova
Leia maisALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Leia maisPrincípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisINF 1620 P3-29/06/04 Questão 1 Nome:
INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica
Leia maisA regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).
Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,
Leia maisProf. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68
INE5231 Computação Científica I Prof. A. G. Silva 25 de abril de 2017 Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de 2017 1 / 68 Conteúdo programático O computador - [3 horas-aula] Representação
Leia maisPonteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória
Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente
Leia maisComputação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany fabianyl@utfpr.edu.br Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Leia maisREVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento
Leia maisIntrodução a Programação. Listas Encadeadas
Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores
Leia maisPonteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas
Leia maisProgramação de Computadores II. Cap. 5 Vetores
Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Leia maisIntrodução a Programação. Ponteiros para Estruturas, Outros Tipos de Estruturas
Introdução a Programação Ponteiros para Estruturas, Outros Tipos de Estruturas Tópicos da Aula Hoje aprenderemos a trabalhar com ponteiros para estruturas Ponteiros para estruturas Alocação dinâmica de
Leia maisAlocação Dinâmica de Memória - Exercício
Alocação Dinâmica de Memória - Exercício Construa um programa que leia da entrada padrão o número de linhas e de colunas de uma matriz de floats, aloque espaço dinamicamente para esta e a inicialize, com
Leia maisEstrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Leia maisProva 2 - Computação
Prova 2 - Computação A prova consiste na elaboração de um programa utilizando a linguagem C. Seu programa deve estar correto (sintática e semanticamente), além de organizado (nomes de variáveis, identação
Leia maisponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisFUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
Leia maisA sintaxe para se declarar uma variável do tipo ponteiro é dada por:
Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.
Leia maisEstruturas de Dados Aula 6: Cadeias de 28/03/2010
Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Leia maisEstruturas de Dados Aula 6: Cadeias de Caracteres
Estruturas de Dados Aula 6: Cadeias de Caracteres Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis Códigos
Leia maisIntrodução à Computação
Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição
Leia maisINF 1620 P3-06/12/03 Questão 1 Nome:
INF 1620 P3-06/12/03 Questão 1 Considere um cadastro com as médias por disciplina dos alunos de uma universidade. Esse cadastro é originalmente armazenado em um arquivo texto que contém, para cada disciplina,
Leia mais13. ALOCAÇÃO DINÂMICA DE MEMÓRIA
787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode
Leia maisMódulo 8 Tipos Estruturados
Estruturas de Dados Módulo 8 Tipos Estruturados 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisP2 Programação II Departamento de Informática/PUC-Rio
P2 Programação II 2012.2 Departamento de Informática/PUC-Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente
Leia maisModulo 12: alocação dinâmica de memória
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (
Leia maisAula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Leia maisINF 1620 P3-25/11/05 Questão 1 Nome:
INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal
Leia maisComputação Eletrônica. Aula 08 Estruturas de Dados. Prof: Luciano Barbosa. CIn.ufpe.br
Computação Eletrônica Aula 08 Estruturas de Dados Prof: Luciano Barbosa Tipos de Dados Primitivos vs Estruturados Tipos primitivos: reais (float, double), inteiros (int), caractere (char); Tipos estruturados:
Leia maisEstruturas Dinâmicas - Ponteiros
SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação
Leia maisIntrodução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila
Introdução a Programação Tipos Abstratos de Dados Implementando Pilha e Fila Abstração Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno
Leia mais# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos
Leia maisINF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 4 Tipos Estruturados 10/23/09 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Tipo estrutura Definição de novos tipos Aninhamento de estruturas Vetores de estruturas Vetores
Leia mais