SmartVerseLabs
02Programação
Todos os módulos ↗

Módulo 02 Fundamentos

Programação:
dar forma a uma ideia.

Antes de escolher Java, Python ou qualquer outra tecnologia, vale entender o que as linguagens têm em comum — e por que cada uma existe.

01

Começando do começo

O que é uma linguagem de programação?

É um vocabulário com regras que permite descrever instruções de forma compreensível para pessoas e traduzível para uma máquina.

Computadores executam operações muito simples. Uma linguagem permite combinar essas operações para representar regras, cálculos, interfaces e sistemas completos.

O arquivo que escrevemos é o código-fonte. Ele precisa ser traduzido ou executado por ferramentas antes de se transformar no comportamento que enxergamos.

01Ideia“Quero calcular a média.”
→
02Código-fonteUma linguagem expressa a regra.
→
03TraduçãoCompilador ou interpretador.
→
04ExecuçãoO computador realiza a tarefa.
Compilada

Traduz antes de executar

Um compilador transforma o código em outra representação, muitas vezes um executável ou bytecode. C, Java e C# utilizam processos de compilação, embora seus caminhos sejam diferentes.

Interpretada

Executada por outro programa

Um interpretador lê e executa o programa. Python é normalmente apresentado assim, mas implementações reais podem combinar interpretação, bytecode e compilação.

02

Uma história de abstrações

As linguagens não começaram ontem.

Cada geração tentou facilitar um tipo de trabalho. Algumas dessas linguagens continuam operando sistemas essenciais; antigas não significa necessariamente ultrapassadas.

{{ language.year }}{{ language.kind }}

{{ language.name }}

{{ language.summary }}

{{ language.history }}

Onde ainda brilha

{{ language.shines }}

{{ language.language }}
{{ language.code }}
{{ language.sourceLabel }} ↗
03

Ferramentas para contextos diferentes

Não existe a melhor linguagem.

Existe uma linguagem adequada ao problema, à equipe e ao ambiente.

Escolher somente por popularidade ignora bibliotecas, infraestrutura, experiência do time, custo de manutenção e o tipo de produto que será construído.

{{ language.badge }}
Desde {{ language.since }} · Tipagem {{ language.typing }}

{{ language.name }}

{{ language.intro }}

Onde brilha

{{ language.shines }}

{{ language.id }}
{{ language.code }}
{{ language.sourceLabel }} ↗
04

Palavras com significado especial

Palavras reservadas.

Termos que a linguagem separou para representar comandos e estruturas.

Você não pode usar livremente palavras como class, return ou if como nomes de variáveis, pois o compilador ou interpretador já atribui significado a elas.

As palavras variam entre linguagens, mas vários conceitos se repetem.

{{ group.mark }}

{{ group.group }}

{{ group.explanation }}

{{ item.word }}

{{ item.meaning }}

{{ item.languages }}

* Alguns termos, como case em Python, são palavras-chave contextuais; self em Python é convenção; e certas linguagens expressam a mesma ideia com outra sintaxe. O importante aqui é reconhecer a intenção antes de decorar listas.

IntençãoJavaC#PythonJavaScriptDelphi
{{ row.concept }}{{ row.java }}{{ row.csharp }}{{ row.python }}{{ row.javascript }}{{ row.delphi }}
05

O código também comunica

Convenções de nomes.

Uma linguagem pode aceitar várias formas de escrever um nome, mas comunidades adotam padrões para o código continuar previsível. Convenção não é necessariamente uma obrigação da linguagem.

{{ item.name }}{{ item.sample }}

{{ item.use }}

Uma função, quatro convenções
JavasalvarUsuario()C#SalvarUsuario()Pythonsalvar_usuario()JavaScriptsalvarUsuario()
06

Que tipo de valor é esse?

Sistemas de tipos.

Toda linguagem lida com tipos.

Dizer que uma linguagem “não é tipada” costuma ser impreciso. A diferença está em quando os tipos são verificados, como são declarados e quais conversões são permitidas.

valor → tipo → operações permitidas
Tipagem estática

Verificada antes da execução

Variáveis e expressões possuem tipos conhecidos durante a análise ou compilação. Java, C# e Delphi são exemplos.

String nome = "Helena";
Tipagem dinâmica

Verificada durante a execução

O valor carrega seu tipo, e uma variável pode referenciar valores de tipos diferentes. Python e JavaScript são exemplos.

nome = "Helena"
IdeiaJavaC#PythonJavaScriptExemplo
{{ type.idea }}{{ type.java }}{{ type.csharp }}{{ type.python }}{{ type.javascript }}{{ type.sample }}
07

Modelando conceitos

Classes, objetos e métodos.

Classe · moldeCarroAtributosmodelo
velocidade
Métodosacelerar()
frear()
cria uma instância →
Objeto · instânciameuCarromodelo = "Aurora"velocidade = 40
Classe

Define quais dados e comportamentos um tipo de objeto terá.

Objeto

É uma ocorrência concreta criada a partir de uma classe.

Atributo

Representa uma informação ou estado mantido pelo objeto.

Método

É um comportamento definido dentro de uma classe.

Construtor

Prepara um objeto no momento em que ele é criado.

Interface

Define um contrato de operações sem decidir todos os detalhes.

Exemplo em Java
{{ classExample }}
08

Os pilares mais conhecidos

Orientação a objetos.

É comum falar em três pilares, mas a apresentação mais difundida utiliza quatro: encapsulamento, abstração, herança e polimorfismo.

{{ pillar.number }}{{ pillar.informal }}

{{ pillar.name }}

{{ pillar.description }}

09

Um conjunto limitado de opções

Enums.

Uma enumeração dá nomes claros a um conjunto fechado de valores possíveis.

Em vez de espalhar textos como "pago" e "Pago", o programa trabalha com membros conhecidos, como StatusPedido.PAGO.

Isso melhora legibilidade e reduz estados inválidos. JavaScript não possui um enum nativo equivalente; objetos congelados são uma aproximação comum.

CRIADO→PAGO→ENVIADO→CANCELADO
{{ enumExamples[activeEnum] }}

Continue explorando Aprofundamento

Agora você conhece
as palavras de entrada.

Use as documentações como referência, não como algo que precisa ser lido de ponta a ponta.