</AULA 04>

Algoritmos e Lógica de Programação

Estruturas Homogêneas (Arrays)

Linguagem C
Portugol
Python

O que são Estruturas Homogêneas?

São estruturas de dados capazes de armazenar múltiplos valores do mesmo tipo sob um único nome de variável.

  • Imagine um prédio onde cada apartamento tem um número (índice).
  • Acesso rápido e direto aos dados (Random Access).
  • Em C, ocupam espaços contíguos na memória.
Dividem-se em:
1. Unidimensionais (Vetores)
2. Multidimensionais (Matrizes)

Visualização na Memória

Vetor (Unidimensional) 10 [0] 25 [1] 30 [2] ... [n] Matriz (Bidimensional) L0 L1 C0 C1 C2

Estruturas Unidimensionais (Vetores)

Um Vetor é um conjunto de variáveis do mesmo tipo acessadas por um único índice numérico.

  • A primeira posição é sempre [0].
  • A declaração reserva um bloco fixo na memória.
  • Ideal para armazenar listas de notas, nomes ou idades.

Mapa de Índices (Vetor)

7.5 [0] 9.0 [1] 6.0 [2] 8.2 [3] 5.5 [4]

Portugol (UniCesumar)

Var notas: vetor[0..4] de inteiro i: inteiro Início Para i de 0 até 4 passo 1 faça Escreva("Digite a nota: ") Leia(notas[i]) Fim_para Fim

Linguagem C

int notas[5]; for(int i=0; i<5; i++){ printf("Nota %d: ", i); scanf("%d", ¬as[i]); } // Acesso: notas[i]

Python

notas = [0] * 5 for i in range(5): val = int(input("Nota: ")) notas[i] = val # for nota in notas:

Strings em C: Particularidades do Vetor de Char

Portugol (UniCesumar)

Var nome: vetor[0..10] de caractere Início nome <- "ALUNO" Fim

Anatomia da String em C

Toda string termina com o caractere nulo \0 (ASCII 0).

A
L
U
N
O
\0
?
?
[0] [1] [2] [3] [4] [5] [6] [7]

A Biblioteca string.h e Boas Práticas

#include <stdio.h> #include <string.h> char s1[20] = "Oi"; char s2[20]; // 1. strcpy: s2 recebe s1 strcpy(s2, s1); // 2. strlen: Comprimento real (2) int tam = strlen(s2); // 3. %19[^\n]: Lê até enter, limita tamanho scanf(" %19[^\n]", s2); // 4. fgets: Seguro para espaços fgets(s2, 20, stdin); s2[strcspn(s2, "\n")] = 0;

Estruturas Multidimensionais (Matrizes)

Pense em uma matriz como uma tabela. Para localizar um valor, precisamos de sua Linha (l) e sua Coluna (c).

  • O primeiro índice indica a linha.
  • O segundo índice indica a coluna.
  • Exemplo m[1, 2]: Linha 1, Coluna 2.

Mapa de Índices (3x3)

C0 C1 C2 L0 [0,0] [0,1] [0,2] L1 [1,0] [1,1] [1,2] L2 [2,0] [2,1] [2,2]

Portugol (UniCesumar)

Var m: vetor[0..2, 0..2] de inteiro l, c: inteiro Início Para l de 0 até 2 passo 1 faça Para c de 0 até 2 passo 1 faça Leia(m[l,c]) Fim_para Fim_para Fim

Linguagem C

int m[3][3]; for(int l=0; l<3; l++){ for(int c=0; c<3; c++){ printf("Pos [%d][%d]: ", l, c); scanf("%d", &m[l][c]); } }

Python

m = [[0,0,0],[0,0,0],[0,0,0]] for l in range(3): for c in range(3): m[l][c] = int(input()) # m[linha][coluna]

Referências

Entendendo Estrutura de Dados
Uma abordagem prática para aprender como as estruturas funcionam "por baixo do capô", otimizando seu código.
Ver na Amazon
Algoritmos e Estruturas em C
O guia definitivo para dominar C. Explicações claras sobre ponteiros, alocação de memória e estruturas complexas.
Ver na Amazon
Estruturas de Dados e Seus Algoritmos
Clássico brasileiro. Teoria profunda e rigorosa, essencial para entender a matemática e lógica por trás dos algoritmos.
Ver na Amazon
Estruturas de Dados com Python
Aprenda a implementar estruturas clássicas usando a sintaxe elegante do Python. Ótimo para entrevistas técnicas.
Ver na Amazon