Compare commits

..

2 commits

Author SHA1 Message Date
7560d3a58c atualizações da aula 6 2025-03-25 10:41:52 -03:00
ba9e894b15 atualizações da aula 6 2025-03-25 10:32:18 -03:00
7 changed files with 165 additions and 38 deletions

View file

@ -0,0 +1,65 @@
#include <stdio.h>
// Soma os elementos de um vetor de tipo float...
float farr_sum(float arr[], int size);
// Média dos elementos de um vetor do tipo float...
float farr_avg(float arr[], int size);
// Imprime as notas...
void print_grades(float arr[], int size);
#define NBIM 4
int main(void) {
float notas[NBIM];
notas[0] = 7.5;
notas[1] = 9.0;
notas[2] = 8.3;
notas[3] = 8.6;
/* Cálculo e impressão por iteração direta */
puts("============");
float sum = 0;
for (int i = 0; i < NBIM; i++) {
sum += notas[i];
printf("Bim. %d: %.1f\n", i + 1, notas[i]);
}
puts("------------");
printf("Média : %.1f\n", sum / NBIM);
puts("============");
/* Cálculo e impressão por funções
puts("============");
print_grades(notas, NBIM);
puts("------------");
printf("Média : %.1f\n", farr_avg(notas, NBIM));
puts("============");
*/
return 0;
}
// Média dos elementos de um vetor do tipo float...
float farr_avg(float arr[], int size) {
return farr_sum(arr, size) / size;
}
// Soma os elementos de um vetor de tipo float...
float farr_sum(float arr[], int size) {
float sum = 0;
for (int i = 0; i < size; i++)
sum += arr[i];
return sum;
}
// Imprime as notas...
void print_grades(float arr[], int size) {
for (int i = 0; i < size; i++)
printf("Bim. %d: %.1f\n", i + 1, arr[i]);
}

View file

@ -0,0 +1,59 @@
#include <stdio.h>
#include <stdarg.h>
// Função variádica (número indeterminado de argumentos)...
float vf_avg(int count, ...);
// Função comum (só serve para este caso)...
float cf_avg(float a, float b, float c, float d);
int main(void) {
float nota1 = 7.5;
float nota2 = 9.0;
float nota3 = 8.3;
float nota4 = 8.6;
float avg;
// Cálculo direto...
avg = (nota1 + nota2 + nota3 + nota4) / 4;
puts("============");
printf("Bim. 1: %.1f\n", nota1);
printf("Bim. 2: %.1f\n", nota2);
printf("Bim. 3: %.1f\n", nota3);
printf("Bim. 4: %.1f\n", nota4);
puts("------------");
printf("Média : %.1f\n", avg);
puts("============");
return 0;
}
// Função variádica...
float vf_avg(int count, ...) {
va_list args;
va_start(args, count);
float total = 0;
for (int i = 0; i < count; i++)
total += va_arg(args, double);
va_end(args);
return total / count;
}
// Função comum...
float cf_avg(float a, float b, float c, float d) {
return (a + b + c + d) / 4;
}

View file

@ -1,23 +0,0 @@
#include <stdio.h>
int main(void) {
float nota1 = 7.5;
float nota2 = 9.0;
float nota3 = 8.3;
float nota4 = 8.6;
float soma = nota1 + nota2 + nota3 + nota4;
float media = soma / 4;
puts("============");
printf("Nota 1: %.1f\n", nota1);
printf("Nota 2: %.1f\n", nota2);
printf("Nota 3: %.1f\n", nota3);
printf("Nota 4: %.1f\n", nota4);
puts("------------");
printf("Média : %.1f\n", media);
puts("============");
return 0;
}

View file

@ -1,16 +1,15 @@
#include <stdio.h>
int main(void) {
int v[] = {1, 2, 3, 4}; // 4 elementos x 4 bytes = 16 bytes
long a = 10; // 1 valor de 8 bytes
puts("Saltos pelo tipo dos elementos (4 bytes)...");
// 4 elementos x 4 bytes = 16 bytes
int v[] = {1, 2, 3, 4};
puts("Saltos pelos elementos (4 bytes)...");
for (int i = 0; i < 4; i++) printf("%p\n", v + i);
puts("Saltos pelo tamanho total do vetor (4 x 4 bytes)...");
puts("Saltos pelo tamanho do vetor (4 x 4 bytes)...");
for (int i = 0; i < 4; i++) printf("%p\n", &v + i);
puts("Equivale ao comportamento de variáveis (8 bytes)...");
for (int i = 0; i < 4; i++) printf("%p\n", &a + i);
return 0;
}

View file

@ -1,5 +1,6 @@
#include <stdio.h>
#define VSIZE 5
void print_array(int v[], int size) {
for (int i = 0; i < size; i++)
@ -7,11 +8,11 @@ void print_array(int v[], int size) {
}
int main() {
int vetor[5];
int vetor[VSIZE];
for (int i = 0; i < 5; i ++) vetor[i] = i + 1;
for (int i = 0; i < VSIZE; i ++) vetor[i] = i + 1;
print_array(vetor, 5);
print_array(vetor, VSIZE);
return 0;
}

View file

@ -8,9 +8,8 @@
[[][Vídeo desta aula]]
Vetores, são estruturas de dados compostas por valores do mesmo tipo, o que
possibilita agrupar coleções de dados relacionados entre si em um mesmo
elemento da linguagem.
Vetores são estruturas de dados que agrupam valores do mesmo tipo na forma
de listas.
- Cada valor em um vetor é um /elemento/.
- O nome do vetor é o endereço do seu primeiro elemento.
@ -75,8 +74,8 @@ As diferenças entre os exemplos com vetores e com variáveis separadas são...
*Semanticamente:*
- Uma variável expressa um valor na memória.
- Um vetor expressa o endereço do início de uma cadeia de valores (elementos).
- Uma variável expressa e dá significado a um valor.
- Um vetor expressa e dá significado a um conjunto relacionado de valores.
*Sintaticamente:*

View file

@ -0,0 +1,27 @@
VETORES
=======
- Um dos tipos compostos da linguagem C.
- Estruturas de dados que agrupam valores de mesmo tipo.
- O nome do vetor é o endereço de seu primeiro elemento.
- Não confunda a sintaxe de vetores com o conceito de vetor!
NOME + ÍNDICE (× TIPO) ==> NOME[ÍNDICE]
vetor+0 vetor+1 vetor+2 vetor+3 vetor+4 (*)
↓ ↓ ↓ ↓ ↓
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
int vetor[4] = {1, 2, 3, 4}; ---> | 01 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 03 | 00 | 00 | 00 | 04 | 00 | 00 | 00 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
vetor = endereço na memória ↑ ↑ ↑ ↑ ↑
Total de 16 bytes +----- 4 bytes -----+----- 4 bytes -----+----- 4 bytes -----+----- 4 bytes -----+
↑ ↑
&vetor+0 &vetor+4 (*)
(*) Problema: acesso fora dos limites do vetor!