Manipulação de Strings
O que são Strings?
Cadeias de caracteres (strings) são sequências de caracteres que representam texto. Em muitas linguagens, são implementadas como arrays de caracteres.
Operações Fundamentais
Concatenação
Juntar duas ou mais strings em uma única string.
Extração
Obter uma parte específica de uma string (substring).
Busca
Encontrar a posição de um caractere ou substring.
Substituição
Trocar caracteres ou substrings por outros valores.
Aplicações Práticas
- Processamento de texto
- Compiladores
- Desenvolvimento web
- Busca e indexação
Desafios Comuns
Estouro de Buffer: Quando uma string excede o tamanho alocado.
Eficiência: Operações com strings grandes podem ser custosas.
Simulador de Strings
Exemplos de Código (Strings)
algoritmo "ManipulacaoStrings"
var
nome: cadeia
sobrenome: cadeia
nomeCompleto: cadeia
inicio
escreva("Digite o nome: ")
leia(nome)
escreva("Digite o sobrenome: ")
leia(sobrenome)
// Concatenação
nomeCompleto <- nome + " " + sobrenome
escreva("Nome completo: ", nomeCompleto)
// Tamanho da string
escreva("Tamanho: ", compr(nomeCompleto))
fimalgoritmo
# Manipulação de Strings em Python
nome = input("Digite o nome: ")
sobrenome = input("Digite o sobrenome: ")
# Concatenação
nome_completo = nome + " " + sobrenome
print(f"Nome completo: {nome_completo}")
# Tamanho da string
print(f"Tamanho: {len(nome_completo)}")
# Operações úteis
print(f"Maiúsculo: {nome_completo.upper()}")
print(f"Minúsculo: {nome_completo.lower()}")
print(f"Primeira letra maiúscula: {nome_completo.title()}")
// Manipulação de Strings em Java
import java.util.Scanner;
public class ManipulacaoStrings {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite o nome: ");
String nome = scanner.nextLine();
System.out.print("Digite o sobrenome: ");
String sobrenome = scanner.nextLine();
// Concatenação
String nomeCompleto = nome + " " + sobrenome;
System.out.println("Nome completo: " + nomeCompleto);
// Tamanho da string
System.out.println("Tamanho: " + nomeCompleto.length());
// Operações úteis
System.out.println("Maiúsculo: " + nomeCompleto.toUpperCase());
System.out.println("Minúsculo: " + nomeCompleto.toLowerCase());
}
}
// Manipulação de Strings em C
#include <stdio.h>
#include <string.h>
int main() {
char nome[50];
char sobrenome[50];
char nomeCompleto[100];
printf("Digite o nome: ");
scanf("%s", nome);
printf("Digite o sobrenome: ");
scanf("%s", sobrenome);
// Concatenação
strcpy(nomeCompleto, nome);
strcat(nomeCompleto, " ");
strcat(nomeCompleto, sobrenome);
printf("Nome completo: %s\n", nomeCompleto);
printf("Tamanho: %lu\n", strlen(nomeCompleto));
return 0;
}
🎮 Playground Interativo - Strings
Vetores
O que são Vetores?
Vetores (arrays unidimensionais) são estruturas que armazenam elementos do mesmo tipo em posições de memória contíguas, acessados por índices numéricos.
Características
Homogeneidade
Todos os elementos são do mesmo tipo
Tamanho Fixo
Definido na declaração
Acesso Direto
Complexidade O(1)
Índices
De 0 a n-1
Operações Comuns
- Inserção: Adicionar elementos
- Busca: Encontrar elementos
- Remoção: Excluir elementos
- Ordenação: Organizar elementos
Aplicações
Limitações
Tamanho Fixo: Difícil redimensionar
Inserções/Remoções: Custosas no meio do vetor
Simulador de Vetores
Exemplos de Código (Vetores)
algoritmo "ManipulacaoVetores"
var
notas: vetor[0..4] de real
soma: real
i: inteiro
inicio
// Lendo as notas (índices de 0 a 4)
para i de 0 ate 4 faca
escreva("Digite a nota do índice ", i, ": ")
leia(notas[i])
fimpara
// Calculando a soma
soma <- 0
para i de 0 ate 4 faca
soma <- soma + notas[i]
fimpara
escreva("Média: ", soma/5)
// Mostrando elementos com seus índices
para i de 0 ate 4 faca
escreva("notas[", i, "] = ", notas[i])
fimpara
fimalgoritmo
# Manipulação de Vetores em Python
notas = []
# Lendo as notas
for i in range(5):
nota = float(input(f"Digite a nota {i+1}: "))
notas.append(nota)
# Calculando estatísticas
media = sum(notas) / len(notas)
maior_nota = max(notas)
menor_nota = min(notas)
print(f"Notas: {notas}")
print(f"Média: {media:.2f}")
print(f"Maior nota: {maior_nota}")
print(f"Menor nota: {menor_nota}")
# Ordenando as notas
notas_ordenadas = sorted(notas)
print(f"Notas ordenadas: {notas_ordenadas}")
// Manipulação de Vetores em Java
import java.util.Scanner;
import java.util.Arrays;
public class ManipulacaoVetores {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double[] notas = new double[5];
double soma = 0;
// Lendo as notas
for (int i = 0; i < 5; i++) {
System.out.print("Digite a nota " + (i+1) + ": ");
notas[i] = scanner.nextDouble();
soma += notas[i];
}
// Calculando estatísticas
double media = soma / notas.length;
double maiorNota = Arrays.stream(notas).max().orElse(0);
double menorNota = Arrays.stream(notas).min().orElse(0);
System.out.println("Notas: " + Arrays.toString(notas));
System.out.printf("Média: %.2f%n", media);
System.out.println("Maior nota: " + maiorNota);
System.out.println("Menor nota: " + menorNota);
// Ordenando as notas
Arrays.sort(notas);
System.out.println("Notas ordenadas: " + Arrays.toString(notas));
}
}
// Manipulação de Vetores em C
#include <stdio.h>
int main() {
float notas[5];
float soma = 0;
float maior, menor;
int i;
// Lendo as notas
for (i = 0; i < 5; i++) {
printf("Digite a nota %d: ", i+1);
scanf("%f", ¬as[i]);
soma += notas[i];
}
// Encontrando maior e menor
maior = menor = notas[0];
for (i = 1; i < 5; i++) {
if (notas[i] > maior) maior = notas[i];
if (notas[i] < menor) menor = notas[i];
}
// Exibindo resultados
printf("Média: %.2f\n", soma/5);
printf("Maior nota: %.2f\n", maior);
printf("Menor nota: %.2f\n", menor);
return 0;
}
🎮 Playground Interativo - Vetores
Matrizes
O que são Matrizes?
Matrizes (arrays bidimensionais) são estruturas que organizam dados em linhas e colunas, formando uma tabela. São acessadas por dois índices: linha e coluna.
Características
Bidimensional
Organizada em linhas e colunas
Homogeneidade
Todos os elementos do mesmo tipo
Acesso
matriz[i][j]
Tamanho Fixo
Definido na declaração
Operações Comuns
- Percorrer: Usar loops aninhados
- Buscar: Encontrar elementos específicos
- Somar: Calcular soma de linhas/colunas
- Transpor: Trocar linhas por colunas
Aplicações
Exemplo Prático
Jogo da Velha: Uma matriz 3x3 pode representar o tabuleiro, onde cada posição armazena 'X', 'O' ou espaço vazio.
Simulador de Matrizes
Exemplos de Código (Matrizes)
algoritmo "ManipulacaoMatrizes"
var
matriz: vetor[0..2, 0..2] de inteiro
i, j: inteiro
soma: inteiro
inicio
// Preenchendo a matriz (índices de 0 a 2)
para i de 0 ate 2 faca
para j de 0 ate 2 faca
escreva("Digite o elemento [", i, "][", j, "]: ")
leia(matriz[i, j])
fimpara
fimpara
// Calculando a soma total
soma <- 0
para i de 0 ate 2 faca
para j de 0 ate 2 faca
soma <- soma + matriz[i, j]
fimpara
fimpara
escreva("Soma total: ", soma)
// Mostrando elementos com seus índices
para i de 0 ate 2 faca
para j de 0 ate 2 faca
escreva("matriz[", i, "][", j, "] = ", matriz[i, j])
fimpara
fimpara
fimalgoritmo
# Manipulação de Matrizes em Python
import numpy as np
# Criando uma matriz 3x3
matriz = []
print("Digite os elementos da matriz 3x3:")
for i in range(3):
linha = []
for j in range(3):
elemento = int(input(f"Elemento [{i}][{j}]: "))
linha.append(elemento)
matriz.append(linha)
# Exibindo a matriz
print("\nMatriz:")
for linha in matriz:
print(linha)
# Calculando estatísticas
soma_total = sum(sum(linha) for linha in matriz)
print(f"\nSoma total: {soma_total}")
# Soma das linhas
for i, linha in enumerate(matriz):
print(f"Soma da linha {i}: {sum(linha)}")
# Soma das colunas
for j in range(3):
soma_coluna = sum(matriz[i][j] for i in range(3))
print(f"Soma da coluna {j}: {soma_coluna}")
# Diagonal principal
diagonal = [matriz[i][i] for i in range(3)]
print(f"Diagonal principal: {diagonal}")
print(f"Soma da diagonal: {sum(diagonal)}")
// Manipulação de Matrizes em Java
import java.util.Scanner;
public class ManipulacaoMatrizes {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] matriz = new int[3][3];
int somaTotal = 0;
// Preenchendo a matriz
System.out.println("Digite os elementos da matriz 3x3:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print("Elemento [" + i + "][" + j + "]: ");
matriz[i][j] = scanner.nextInt();
somaTotal += matriz[i][j];
}
}
// Exibindo a matriz
System.out.println("\nMatriz:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println();
}
System.out.println("Soma total: " + somaTotal);
// Soma das linhas
for (int i = 0; i < 3; i++) {
int somaLinha = 0;
for (int j = 0; j < 3; j++) {
somaLinha += matriz[i][j];
}
System.out.println("Soma da linha " + i + ": " + somaLinha);
}
// Soma das colunas
for (int j = 0; j < 3; j++) {
int somaColuna = 0;
for (int i = 0; i < 3; i++) {
somaColuna += matriz[i][j];
}
System.out.println("Soma da coluna " + j + ": " + somaColuna);
}
// Diagonal principal
int somaDiagonal = 0;
for (int i = 0; i < 3; i++) {
somaDiagonal += matriz[i][i];
}
System.out.println("Soma da diagonal principal: " + somaDiagonal);
}
}
// Manipulação de Matrizes em C
#include <stdio.h>
int main() {
int matriz[3][3];
int i, j;
int somaTotal = 0;
// Preenchendo a matriz
printf("Digite os elementos da matriz 3x3:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("Elemento [%d][%d]: ", i, j);
scanf("%d", &matriz[i][j]);
somaTotal += matriz[i][j];
}
}
// Exibindo a matriz
printf("\nMatriz:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", matriz[i][j]);
}
printf("\n");
}
printf("Soma total: %d\n", somaTotal);
// Soma das linhas
for (i = 0; i < 3; i++) {
int somaLinha = 0;
for (j = 0; j < 3; j++) {
somaLinha += matriz[i][j];
}
printf("Soma da linha %d: %d\n", i, somaLinha);
}
// Soma das colunas
for (j = 0; j < 3; j++) {
int somaColuna = 0;
for (i = 0; i < 3; i++) {
somaColuna += matriz[i][j];
}
printf("Soma da coluna %d: %d\n", j, somaColuna);
}
// Diagonal principal
int somaDiagonal = 0;
for (i = 0; i < 3; i++) {
somaDiagonal += matriz[i][i];
}
printf("Soma da diagonal principal: %d\n", somaDiagonal);
return 0;
}
🎮 Playground Interativo - Matrizes
Desafio do Módulo I - Exemplo Prático: Sistema de Notas
Baseado no desafio do curso, aqui está um sistema simplificado para cadastro de alunos e notas: