NOTAS DE ESTUDO
CS50
Primeira semana do CS50
Resolução de problemas
- Processo de desenvolver soluções lógicas para problemas computacionais.
- Envolve:
- Entender o problema.
- Dividi-lo em partes menores.
- Desenvolver algoritmos.
- Escrever código para implementar as soluções.
- Habilidade essencial para programação e ciência da computação.
Representação da informação
Base 1 / notação unária
- Sistema numérico que usa apenas um símbolo, como marcas de contagem.
- Pouco utilizado em computação, mas ajuda a entender a contagem fundamental.
Base 2 / sistema binário
- Fundamento da computação moderna.
- Usa apenas dois dígitos: 0 e 1.
Bit
- Bit (Binary Digit): menor unidade de dados na computação.
- Pode assumir 0 ou 1.
- Representa desligado (0) ou ligado (1) nos circuitos.
Base 8 / byte
- Um byte contém 8 bits.
- Um byte representa valores de 0 a 255.
- Usado para codificar caracteres, números e outros tipos de dados.
ASCII (American Standard Code for Information Interchange)
- Padrão de codificação de caracteres.
- Associa letras, dígitos e símbolos a valores numéricos.
- Exemplos:
- 'A' → 65
- 'B' → 66
- 'a' → 97
- '0' → 48
Representação de emojis
- Usa bits padronizados para codificar emojis.
- Semelhante ao ASCII, mas estendido para uma ampla variedade de símbolos.
- Frequentemente utiliza Unicode, como UTF-8 e UTF-16.
Representação de cores
- O modelo RGB (Red, Green, Blue) representa cores em sistemas digitais.
- Cada cor possui três valores, entre 0 e 255.
- Exemplos:
- Preto → (0, 0, 0)
- Branco → (255, 255, 255)
- Vermelho → (255, 0, 0)
- Verde → (0, 255, 0)
- Azul → (0, 0, 255)
Estruturas de dados
Estruturas de dados - arrays
O que é um array?
Um array é um bloco contíguo de memória que armazena vários elementos, de um único tipo ou de tipos diferentes, conforme a linguagem.
Conceito central
A ideia é armazenar informações em uma estrutura semelhante a uma lista, com espaço de memória contínuo. Isso permite indexação eficiente e acesso rápido aos valores.
Acesso aos elementos
Os elementos são acessados por posição, ou índice, geralmente começando em 0.
Flexibilidade de tipos
Dependendo da linguagem:
- Linguagens como Rust exigem tipagem estrita: todos os elementos têm o mesmo tipo.
- Outras, como Python, permitem tipos misturados em estruturas semelhantes a arrays.
Observações importantes
- Arrays são imutáveis por natureza: seu tamanho não pode mudar após a alocação.
- Como usam memória contígua, oferecem acesso rápido aos elementos, registrado nestas notas como complexidade O(n).