Ir para o conteúdo

🧠 Guia de Estudo: Fundamentos da Programação e Ferramentas de Desenvolvimento

. Editores de Texto

Os editores de texto são ferramentas essenciais para programadores. Eles permitem escrever e editar o código-fonte de softwares de forma eficiente.

Exemplos Populares

Editor de Texto Características Principais
Visual Studio Code Extensível, suporte a várias linguagens, depuração
Sublime Text Leve, rápido, com múltiplos cursores
Vim / Vi Baseado em terminal, altamente configurável
nano Simples, ideal para edições rápidas via terminal
GNU Emacs Extremamente personalizável, usado por veteranos
Notepad++ Gratuito, ideal para Windows
TextEdit Básico, nativo do macOS

⚠️ Importante: Microsoft Word não é um editor de texto para programação. Ele insere formatações que não são compatíveis com código-fonte.


. Linguagens de Programação

Assim como idiomas humanos, as linguagens de programação têm regras próprias e são usadas para "conversar" com o computador.

Exemplos de Linguagens

Linguagem Usos Comuns
Python Ciência de dados, automação, web
JavaScript Desenvolvimento web, interatividade
C# Aplicações Windows, jogos (Unity)
C/C++ Sistemas operacionais, jogos

Cada linguagem tem:

  • Gramática e Sintaxe: Regras para escrever instruções corretamente.
  • Usos Comuns: Áreas onde a linguagem é mais aplicada.
  • Comunidade: Grupos de desenvolvedores que compartilham conhecimento.

🧠 Aprender uma linguagem de programação é como aprender francês ou japonês: você precisa entender a estrutura das frases, o vocabulário e a forma correta de se expressar.


. Elementos das Linguagens de Programação

As linguagens de programação possuem componentes que lembram os elementos de uma língua falada.

Componentes Principais

  • Gramática (Sintaxe): Define como escrever comandos corretamente.
  • Vocabulário: Palavras-chave como if, while, return.
  • Pontuação: Operadores (+, -, *) e delimitadores ({}, ;).

💡 Dica: Use exemplos práticos e leia a documentação oficial para entender como cada elemento funciona.


. Ambiente de Desenvolvimento Integrado (IDE)

Um IDE (Integrated Development Environment) é uma ferramenta que reúne tudo o que o programador precisa para escrever, testar e depurar código.

Funcionalidades Comuns

  • Destacar erros de sintaxe automaticamente
  • Sugestões de correção em tempo real
  • Autocompletar código com base na linguagem usada
  • Depurador integrado para encontrar bugs
IDE Linguagem Principal Observações
PyCharm Python Focado em produtividade para Python
Visual Studio C#, C++, .NET Robusto e completo para Windows
IntelliJ IDEA Java Popular entre desenvolvedores Java

⚠️ IDEs especializados só entendem a linguagem para a qual foram projetados.


. Compiladores e Intérpretes

Essas ferramentas traduzem o código-fonte para código de máquina.

Tipo Como funciona Quando ocorre a tradução
Compilador Traduz tudo de uma vez Antes da execução
Intérprete Traduz linha por linha Durante a execução

📖 Analogia: Um compilador é como traduzir um livro inteiro antes de ler. Um intérprete é como ter um tradutor simultâneo lendo com você.


. Linguagens Compiladas e Interpretadas

Algumas linguagens são compiladas, outras interpretadas, e algumas podem ser ambas.

Linguagem Tipo Observações
C/C++ Compilada Alta performance, usada em sistemas críticos
GoLang Compilada Desenvolvida pelo Google, rápida e segura
Python Interpretada Flexível, ideal para scripts e automações
Ruby Interpretada Usada em desenvolvimento web
JavaScript Interpretada Executada diretamente no navegador
Java Compilada Roda em máquinas virtuais (JVM)

. Execução, Depuração e Correção

Desenvolver software é um processo iterativo e exige atenção constante.

Boas Práticas

  • Execute com frequência
  • Depure para encontrar a linha exata do problema
  • Corrija e teste novamente
  • Repita o ciclo até o programa funcionar corretamente

🛠️ A depuração é como investigar um mistério: você segue pistas (erros) até encontrar a causa.


. Desenvolvimento Iterativo

O desenvolvimento de software raramente é linear. Ele segue um ciclo de tentativa e erro.

Ciclo Iterativo

  1. Escreva um pouco de código
  2. Teste imediatamente
  3. Corrija o que não funciona
  4. Teste novamente
  5. Escreva mais código
  6. Repita

🔁 Esse processo garante que o software evolua com qualidade e estabilidade.


Aplicação Prática no Mundo Corporativo

Como resolve dores comuns

  • Agilidade no desenvolvimento: IDEs e ciclos iterativos aceleram entregas
  • Redução de custos: Menos retrabalho e erros evitam desperdícios
  • Segurança: Compiladores ajudam a detectar falhas antes da execução

Exemplos reais

  • Nubank usa Python e IDEs modernos para entregar funcionalidades com rapidez
  • Google desenvolveu o GoLang para escalar sistemas internos com segurança
  • Amazon utiliza Java e IDEs robustos para manter a confiabilidade de seus serviços

🧠 Guia de Estudo: Tipos de Dados Compostos


. Principais Pontos da Lição

Nesta lição, você aprenderá a:

  • Definir tipos de dados compostos
  • Identificar tipos compostos a partir de listas de propriedades
  • Listar os atributos de uma função
  • Definir diferentes tipos de coleções
  • Combinar valores em um tipo de dados composto

🧩 Tipos compostos permitem agrupar informações relacionadas em uma única estrutura, facilitando o acesso e a organização dos dados.


. O Que São Tipos de Dados Compostos

🔹 Tipos Primitivos

São os tipos básicos oferecidos pela linguagem, como:

  • string (texto)
  • int ou float (números)
  • boolean (verdadeiro ou falso)

🔸 Tipos Compostos

Permitem combinar múltiplos valores em uma única unidade. Por exemplo:

filme = {
  "nome": "Matrix",
  "ano": 1999,
  "assistido": True
}
🧠 Analogia: Um tipo composto é como uma ficha cadastral — vários campos diferentes agrupados em um único formulário.

. Exemplo Prático: Filme

Imagine que você quer representar um filme em código. Ele pode ter:

  • nome → tipo string
  • ano → tipo int
  • assistido → tipo boolean

Representação em tabela:

Atributo Tipo de Dado
Nome String
Ano Inteiro
Assistido Booleano

🎬 Esse conjunto de dados forma um tipo composto que representa um filme completo.


. Listas de Propriedades Compostas

📁 Tipo de Arquivo

Propriedade Tipo sugerido
Nome String
DataDeCriação Data
Extensão String
SomenteLeitura Booleano
Comprimento Número

🧱 Elemento Gráfico

Propriedade Tipo sugerido
Topo Número
Altura Número
Vazio Booleano
Esquerda Número
Local String
Direita Número
Baixo Número
Tamanho Número
Largura Número

👤 Perfil Cultural

Propriedade Tipo sugerido
Idade Número
Cultura String
Descrição String
Sexo String
Nome String
FormatosDeÁudio_Suportados Lista/String

🧠 Esses exemplos mostram como diferentes contextos exigem diferentes estruturas compostas para organizar os dados de forma lógica e funcional.


Aplicação Prática no Mundo Corporativo

🩹 Como resolve dores comuns

  • Organização de dados complexos: facilita o armazenamento e acesso a informações relacionadas
  • Redução de redundância: evita duplicação de dados em sistemas
  • Escalabilidade: permite criar estruturas reutilizáveis e adaptáveis

🏢 Exemplos reais

  • Sistemas de RH usam tipos compostos para representar funcionários (nome, cargo, salário, histórico)
  • Plataformas de streaming como a Netflix usam tipos compostos para representar filmes, séries e usuários
  • ERP corporativos estruturam produtos, clientes e pedidos com tipos compostos para facilitar relatórios e análises

Funções e Tipos Compostos

fly(aircraft)

A função fly recebe um objeto aircraft com os seguintes atributos:

  • latitude
  • longitude
  • speed
  • heading
  • verticalSpeed
  • windSpeed
  • windDirection

Características das funções:

  • Podem retornar um valor com base nos valores de entrada
  • Podem aceitar valores como entrada
  • Podem retornar um valor (a ser armazenado em uma variável)
  • Podem aceitar muitos valores como entrada
  • Podem retornar tipos de dados compostos
  • Tipos compostos podem estar em uma matriz
  • O desenvolvedor pode criar um tipo de dados composto
  • Funções fazem algo útil

Previsão de Estado Futuro

aircraftFuture = predict(aircraftNow, 60)

A função predict recebe o estado atual da aeronave (aircraftNow) e um tempo futuro (60 segundos), retornando:

  • latitude
  • longitude
  • speed
  • heading
  • verticalSpeed
  • windSpeed
  • windDirection

Características das funções (continuação):

  • Podem retornar um valor com base nos valores de entrada
  • Podem aceitar muitos valores como entrada
  • Podem retornar tipos compostos
  • Tipos compostos podem estar em uma matriz
  • Funções fazem algo útil

Previsão de Colisões

collisions = predict(allAircraft)

A função predict recebe uma matriz de aeronaves (allAircraft) e retorna possíveis colisões com os seguintes dados:

  • latitude
  • longitude
  • speed
  • heading
  • verticalSpeed
  • windSpeed
  • windDirection

Características das funções (continuação):

  • Podem retornar um valor com base nos valores de entrada
  • Podem aceitar valores como entrada
  • Podem retornar tipos compostos
  • Tipos compostos podem estar em uma matriz
  • O desenvolvedor pode criar um tipo de dados composto
  • Funções fazem algo útil

Coleções

Uma coleção agrupa vários valores em uma única variável. Diferentes tipos de coleções estão disponíveis:

  • Matrizes
  • Vetores
  • Listas
  • Conjuntos
  • Filas
  • Deques (fila de terminação dupla)
  • Hashes
  • Dicionários

Os próximos blocos mostram exemplos práticos dessas coleções.


Exemplo de Coleção: Matriz

A tabela abaixo mostra uma matriz básica de idades. Cada idade ocupa um espaço contíguo na memória e é do mesmo tipo de dado.

Espaço Tipo de Dados Valor
0 Inteiro 87
1 Inteiro 10
2 Inteiro 23
3 Inteiro 46
4 Inteiro 225
5 Inteiro 196
6 Inteiro 66

O primeiro espaço geralmente é o índice 0. Os valores não precisam estar em ordem.


Exemplo de Coleção: Lista Python

Uma lista Python é uma coleção ordenada de itens. Características:

  • Cada item pode ter um tipo de dado diferente
  • Os itens podem ser acessados por índice
  • Os itens podem ter valores duplicados
Índice Tipo de Dados Valor
0 String "John"
1 Inteiro 55
2 Booleano Verdadeiro
3 String "homem"
4 String "Carlos"
5 Inteiro 22
6 String "homem"

Uma lista Python é ordenada porque cada novo item é adicionado ao final da lista.


Coleções: Conceito

Uma coleção agrupa vários valores em uma única variável.
Diferentes tipos de coleções estão disponíveis:

  • Matrizes
  • Vetores
  • Listas
  • Conjuntos
  • Filas
  • Deques (fila de terminação dupla)
  • Hashes
  • Dicionários

Os próximos blocos fornecem exemplos práticos de cada tipo.


Exemplo de Coleção: Matriz de Idades

A tabela abaixo mostra uma matriz básica de idades.
Cada idade ocupa um espaço contíguo na memória e é do mesmo tipo de dado.

Espaço Tipo de Dados Valor
0 Inteiro 87
1 Inteiro 10
2 Inteiro 23
3 Inteiro 46
4 Inteiro 225
5 Inteiro 196
6 Inteiro 66

O primeiro espaço geralmente é o índice 0.
Os valores não precisam estar em ordem.


Exemplo de Coleção: Lista Python

Uma lista Python é uma coleção ordenada de itens.
Características principais:

  • Cada item pode ter um tipo de dado diferente
  • Os itens podem ser acessados por índice
  • Os itens podem ter valores duplicados
Índice Tipo de Dados Valor
0 String "John"
1 Inteiro 55
2 Booleano Verdadeiro
3 String "homem"
4 String "Carlos"
5 Inteiro 22
6 String "homem"

Uma lista Python é ordenada porque cada novo item é adicionado ao final da lista.


Exemplo de Coleção: Conjunto

Um conjunto é uma coleção não ordenada de itens únicos.
Ideal para armazenar elementos sem duplicatas.

Item Presente
"Carlos"
"Ana"
"Carlos" ❌ (duplicado)
"João"

Conjuntos ignoram valores duplicados automaticamente.


Exemplo de Coleção: Fila

Uma fila segue o princípio FIFO (First In, First Out).
O primeiro item inserido é o primeiro a ser removido.

Posição Valor
0 "Pedido A"
1 "Pedido B"
2 "Pedido C"

Ideal para processamento sequencial, como filas de impressão ou requisições.


Exemplo de Coleção: Deque

Deque (Double-Ended Queue) permite inserção e remoção em ambas as extremidades.

Extremidade Operação Valor
Início Inserir "X"
Fim Inserir "Y"
Início Remover "X"
Fim Remover "Y"

Flexível para algoritmos que exigem acesso dinâmico nas bordas.


Exemplo de Coleção: Hashes

Hashes armazenam pares chave → valor com acesso rápido.

Chave Valor
"id_001" "João"
"id_002" "Maria"
"id_003" "Carlos"

Muito usado em sistemas que exigem busca eficiente por identificadores.


Exemplo de Coleção: Dicionário (Python)

Dicionários são coleções de pares chave → valor, semelhantes aos hashes.

usuario = {
  "nome": "Ana",
  "idade": 28,
  "ativo": True,
  "cidade": "Fortaleza"
}
Exemplo de Dicionário

Chave Tipo de Dado Valor
nome String "Ana"
idade Inteiro 28
ativo Booleano True
cidade String "Fortaleza"

Dicionários permitem acesso direto aos dados via chave, com alta flexibilidade.


Caminho de Execução

O caminho de execução é a sequência lógica de ações que o programa realiza quando está rodando.

🧠 Por que isso importa?

  • Permite entender como o programa pensa
  • Ajuda a prever o comportamento do código
  • Facilita a identificação e correção de erros

💡 Exemplo prático:

Imagine um programa de cadastro: 1. Recebe os dados do usuário 2. Verifica se estão corretos 3. Salva no banco de dados 4. Exibe uma mensagem de sucesso

Cada uma dessas etapas faz parte do caminho de execução.


Condicionais

Condicionais são estruturas que permitem ao programa tomar decisões com base em uma condição.

🧠 Por que isso importa?

  • Torna o código inteligente e adaptável
  • Permite respostas diferentes para situações diferentes
  • É a base da lógica de qualquer sistema

💡 Exemplo em Python:

if guess > number:
    print("Muito alto!")
elif guess < number:
    print("Muito baixo!")
else:
    print("Acertou!")
Esse código decide o que mostrar com base na comparação entre guess e number.


Switch

O switch é usado para escolher entre várias opções com base em um único valor.

🧠 Por que isso importa?

  • Organiza decisões complexas de forma limpa
  • Evita múltiplos if/else
  • Facilita a leitura e manutenção do código

💡 Exemplo em JavaScript:

switch(sign) {
  case "Parar":
    pressBreak();
    break;
  case "Fundir":
    accelerate();
    break;
  case "Sair":
    decelerate();
    break;
  default:
    ignore();
}
Cada case representa uma ação diferente dependendo do valor de sign.


Loops

Loops permitem que o programa repita ações automaticamente, economizando tempo e código.

🧠 Por que isso importa?

  • Automatiza tarefas repetitivas
  • Permite trabalhar com listas, arquivos e dados
  • É essencial para processar grandes volumes de informação

💡 Exemplo em Python:

names = ["wei", "nikki", "akua"]
for name in names:
    newName = capitalize(name)
    print(newName)
Cada case representa uma ação diferente dependendo do valor de sign.


Loops

Loops permitem que o programa repita ações automaticamente, economizando tempo e código.

🧠 Por que isso importa?

  • Automatiza tarefas repetitivas
  • Permite trabalhar com listas, arquivos e dados
  • É essencial para processar grandes volumes de informação

💡 Exemplo em Python:

names = ["wei", "nikki", "akua"]
for name in names:
    newName = capitalize(name)
    print(newName)

Infraestrutura em Nuvem

Armazenar código na nuvem (como GitHub ou GitLab) é mais seguro do que manter apenas localmente.

🧠 Por que isso importa?

  • Reduz o risco de perda de dados
  • Permite colaboração entre desenvolvedores
  • Facilita o acesso remoto ao código

Ferramentas de Controle de Versão

Ferramentas que ajudam a gerenciar alterações no código ao longo do tempo.

🔧 Exemplos:

  • Git
  • GitHub
  • Mercurial
  • GNU Arch

Neste curso, o foco está em Git e GitHub.


Git — Comandos Essenciais

Git é uma ferramenta de controle de versão distribuída.
Aqui estão os principais comandos:

# Instalar Git
# Criar diretório
mkdir GitTest
cd GitTest

# Inicializar repositório
git init

# Criar arquivo
touch newFile.txt
nano newFile.txt  # editar o arquivo

# Verificar status
git status

# Adicionar ao repositório
git add newFile.txt
git status

# Confirmar alterações
git commit -m "Initial commit"
git status
git config --global user.email "seu@email.com"
git config --global user.name "SeuNome"

GitHub — Hospedagem de Repositórios

GitHub é um serviço online que hospeda repositórios Git.

🧠 Por que usar?

  • Compartilhar código com outros desenvolvedores
  • Exibir projetos para empregadores
  • Colaborar em equipe com controle de versão

Crie uma conta no GitHub para começar.


Teste Seu Conhecimento

Perguntas: - Qual é um dos principais propósitos da programação?
- Que tipo de arquivos armazenam código-fonte?
- O que é um IDE?
- Que tipo de dado é um número inteiro?
- Qual é o propósito das funções?
- Cite uma ferramenta de controle de versão.

Respostas: - Automação de processos
- Arquivos de texto
- Ambiente de Desenvolvimento Integrado
- Integer (inteiro)
- Reutilizar blocos de código
- Git


Principais Conclusões

  • A programação automatiza tarefas e processos
  • Linguagens de programação comunicam instruções ao computador
  • O software é escrito em arquivos de texto e interpretado ou compilado
  • Os dados são tipificados (string, inteiro, booleano etc.)
  • Tipos compostos armazenam múltiplos dados em uma única variável
  • Funções são blocos reutilizáveis de instruções
  • O controle de versão gerencia alterações em arquivos e projetos