Todas as notas

NOTAS DE ESTUDO

CS50

Primeira semana do CS50

excalidraw

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).