Variáveis e Tipos de
Dados na Programação
O que vamos aprender
1 Conceito de variáveis na programação
Como as informações são armazenadas na memória do
computador
2 Tipos de dados fundamentais
Numéricos, texto, booleanos e estruturas compostas
3 Diferenças entre linguagens de
programação
Como C/C++, Java, Python, JavaScript, Rust e Go lidam com tipos
de dados
4 Tipagem estática vs. dinâmica
Vantagens, desvantagens e casos de uso para cada abordagem
O que são variáveis?
Variáveis são espaços na memória do computador destinados a armazenar valores
durante a execução de um programa.
Cada variável possui:
Um nome (identificador)
Um tipo (explícito ou implícito)
Um valor (que pode mudar durante a execução)
Pense em variáveis como caixas com etiquetas onde guardamos informações para usar
depois.
Analogia: Variáveis como
caixas
Variáveis funcionam como caixas organizadoras em seu programa:
O nome da variável é como a etiqueta na caixa
O tipo de dado define que tipo de conteúdo a caixa pode armazenar
O valor é o conteúdo atual dentro da caixa
Quando seu programa precisa daquela informação, ele sabe exatamente onde procurar!
Tipos de dados básicos
Numéricos
int: números inteiros (1, 42, -10)
float/double: números com decimal
(3.14, -0.5)
Texto
char: um único caractere ('a', '5', '@')
string: sequência de caracteres ("Olá
mundo")
Booleanos
bool: valores lógicos (true/false,
verdadeiro/falso)
Usados para controle de fluxo e
decisões
Estes são os tipos de dados fundamentais presentes em quase todas as linguagens de programação, com pequenas variações de sintaxe.
Tipos compostos/estruturados
numeros = [1, 2, 3, 4, 5]
nomes = ["Ana", "Bruno", "Carla"]
pessoa = {
"nome": "Carlos",
"idade": 25,
"altura": 1.75
}
Arrays/Listas
Coleções ordenadas de valores do mesmo tipo:
Objetos/Dicionários
Coleções de pares chave-valor:
coordenadas = (10.5, 20.8)
rgb = (255, 0, 127)
cores = {"vermelho", "verde", "azul"}
Tuplas
Coleções ordenadas e imutáveis:
Conjuntos (Sets)
Coleções não ordenadas sem duplicatas:
Estes tipos permitem organizar dados complexos de forma estruturada.
Tipagem na programação
Como as linguagens gerenciam os tipos de dados?
Tipagem estática vs. dinâmica
Tipagem Estática
O tipo da variável é definido explicitamente
Uma vez declarado, o tipo não pode mudar
Erros de tipo são detectados na compilação
Exemplos: C, C++, Java, Rust, Go
Vantagens: mais segura, otimizada, documentada
Desvantagens: menos flexível, mais verbosa
Tipagem Dinâmica
O tipo é inferido automaticamente
Uma variável pode mudar de tipo durante a execução
Erros de tipo aparecem na execução
Exemplos: Python, JavaScript, Ruby, PHP
Vantagens: mais flexível, rápida para prototipar
Desvantagens: mais propensa a erros, menor otimização
Tipagem: forte vs. fraca
# Python (tipagem forte)
"5" + 5 # Erro! Não soma string com número
Tipagem Forte
Não permite conversões automáticas entre tipos diferentes
Exemplos: Python, Rust, Java
// JavaScript (tipagem fraca)
"5" + 5 // Resultado: "55" (converte 5 para string)
"5" - 2 // Resultado: 3 (converte "5" para número)
Tipagem Fraca
Realiza conversões automáticas entre tipos diferentes
Exemplos: JavaScript, PHP
A força da tipagem determina quão rigorosa a linguagem é quanto à mistura de tipos diferentes em operações.
Como diferentes
linguagens lidam com
variáveis
int idade = 20;
float altura = 1.75;
char inicial = 'M';
// Precisa declarar o tipo
C/C++
int idade = 20;
double altura = 1.75;
String nome = "Maria";
// Estático com classes
Java
idade = 20
altura = 1.75
nome = "Maria"
# Tipo inferido automaticamente
Python
let idade = 20;
idade = "vinte"; // válido!
// Dinâmica e fraca
JavaScript
C/C++: Linguagens com tipagem estática
rígida
int idade = 20;
float altura = 1.75;
char nome[50] = "Ana Silva";
// Erro! Tipos incompatíveis
idade = "vinte";
// Conversão explícita (casting)
float resultado = (float)5 / 2; // 2.5
C e C++ são linguagens clássicas com tipagem estática, explícita e rígida:
Características:
Exige declaração de tipo antes do uso
Alta performance e controle de memória
Conversões precisam ser explícitas
Java: Orientação a objetos com tipagem
estática
Java combina tipagem estática com forte orientação a objetos:
// Tipos primitivos
int idade = 25;
double altura = 1.82;
// Tipos por referência (objetos)
String nome = "Carlos Eduardo";
ArrayList linguagens = new ArrayList();
linguagens.add("Java");
linguagens.add("Python");
// Erro de compilação - tipos incompatíveis
idade = nome;
Características:
Diferencia tipos primitivos (int, double) de objetos (String, ArrayList)
Verificação rigorosa de tipos na compilação
Foco em segurança e portabilidade ("write once, run anywhere")
Python: Dinamismo e simplicidade
# O tipo é inferido automaticamente
idade = 30
altura = 1.65
nome = "Ana Clara"
# A mesma variável pode mudar de tipo
contador = 0
contador = "zero" # Válido em Python!
# Tipos fortes - sem conversão implícita
# print(5 + "5") # Erro!
print(5 + int("5")) # OK: 10
Python é conhecido pela tipagem dinâmica e sintaxe limpa:
Características:
Foco na legibilidade e produtividade
Dinâmica mas forte (não converte tipos automaticamente)
JavaScript: Flexibilidade e conversões
automáticas
JavaScript é dinâmico e fraco, realizando conversões automáticas:
// Declaração dinâmica com let/var/const
let idade = 40;
let altura = 1.78;
let nome = "Ricardo";
// Mudança de tipo é permitida
idade = "quarenta anos"; // Válido!
// Conversões automáticas (tipagem fraca)
console.log("5" + 5); // Saída: "55" (concatenação)
console.log("5" - 2); // Saída: 3 (subtração numérica)
console.log(true + true); // Saída: 2 (true é tratado como 1)
Características:
Extremamente flexível (às vezes perigosamente)
Conversões implícitas podem causar comportamentos inesperados
Ideal para desenvolvimento web rápido, mas requer atenção
Rust e Go: Modernas e seguras
// Inferência de tipos com segurança
let idade: u32 = 28;
let nome = String::from("Julia");
// Controle rigoroso de memória
let x = 5;
let y = x; // x ainda é válido
Rust
Foco em segurança de memória e prevenção de erros concorrentes
// Sintaxe simples com segurança
var idade int = 32
nome := "Marcos" // inferência
// Tipagem estática simplificada
var alturas = []float64{1.75, 1.82}
Go
Projetada para simplicidade, eficiência e concorrência
Ambas combinam a segurança da tipagem estática com sintaxe moderna e inferência de tipos, reduzindo a verbosidade sem sacrificar a segurança.
Os tipos e a memória do computador
Cada tipo de dado ocupa um espaço diferente na memória:
Boolean
Geralmente 1 byte (mesmo só precisando de 1 bit)
Char
1 byte (ASCII) ou 2-4 bytes (Unicode)
Int
Tipicamente 4 bytes (32 bits) ou 8 bytes (64 bits)
Float/Double
4 bytes (float) ou 8 bytes (double)
String
Varia conforme o tamanho do texto
Quando o tipo de dado importa?
Sistemas de baixo nível
Embarcados/IoT: memória limitada
Jogos: performance é crucial
Sistemas operacionais: eficiência
Usar int8 em vez de int64 pode significar economizar 7 bytes por
variável - crucial quando você tem milhões delas!
Sistemas de alto nível
Aplicações web: flexibilidade
Ciência de dados: praticidade
Protótipos: velocidade de desenvolvimento
Linguagens como Python e JavaScript abstraem a complexidade dos
tipos, permitindo foco na solução do problema.
A escolha depende do equilíbrio entre eficiência, segurança e velocidade de desenvolvimento.
Exemplos práticos de uso de variáveis
# Python
num1 = float(input("Primeiro número: "))
num2 = float(input("Segundo número: "))
soma = num1 + num2
print(f"Resultado: {soma}")
Calculadora Simples
// JavaScript
let nome = prompt("Nome completo:");
let idade = parseInt(prompt("Idade:"));
let ativo = true;
console.log(`Usuário ${nome}, ${idade} anos`);
Cadastro de Usuário
Dicas para escolher a abordagem certa
Quando usar tipagem estática
Projetos grandes com muitos desenvolvedores
Sistemas que exigem alta performance
Aplicações onde segurança é crítica
Quando precisa de documentação clara sobre a interface
Para detectar erros antes da execução
Ex: C++, Java, Rust, TypeScript
Quando usar tipagem dinâmica
Protótipos rápidos e MVPs
Scripts e automações simples
Ciência de dados e análises exploratórias
Quando flexibilidade é mais importante que performance
Para aprendizado inicial de programação
Ex: Python, JavaScript, Ruby, PHP
Lembre-se: não existe uma abordagem "melhor" - cada uma tem seu propósito!
Resumo: O que
aprendemos
Variáveis são espaços na memória para
armazenar valores
Cada variável tem um nome, um tipo e um valor atual
Tipos básicos incluem números, texto e
booleanos
Tipos compostos organizam dados mais complexos
Linguagens diferem em como tratam tipos
Estáticas vs. dinâmicas, fortes vs. fracas
A escolha da abordagem depende do contexto
Considere segurança, performance, flexibilidade e produtividade
Continue praticando e experimentando diferentes linguagens para entender melhor
como cada uma implementa esses conceitos!

Mais conteúdo relacionado

PPT
Java Desktop
PPTX
Curso Java Básico - Aula 01
PPTX
Microsoft S2B - C# ASP.NET
PDF
A LINGUAGEM DE PROGRAMAÇÃO JAVA II - Programação Oritenada a Objeto
PPTX
Java e orientação a objetos
PDF
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
PDF
Code Smells: o que eles dizem sobre seu código?
PPTX
S2 b desenvolvimento de sistemas [reparado]
Java Desktop
Curso Java Básico - Aula 01
Microsoft S2B - C# ASP.NET
A LINGUAGEM DE PROGRAMAÇÃO JAVA II - Programação Oritenada a Objeto
Java e orientação a objetos
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Code Smells: o que eles dizem sobre seu código?
S2 b desenvolvimento de sistemas [reparado]

Semelhante a Aula - Variaveis-e-Tipos-de-Dados-na-Programacao.pdf (20)

PDF
(A06) LabMM3 - JavaScript
PPT
Testes de Sofware
PPTX
Programação Orientada a Objetos parte 3
PDF
PDF
PDF
JavaScript: agora é sério
PPT
Aula2
PPT
Python2.5.ppt
PPT
A Linguagem Lua e suas Aplicações em Jogos
PDF
02 1 algoritmos
ODP
Matando o Java e Mostrando o Python
PPTX
Curso Básico de Java - Aula 4
PPT
Introdução ao Java 5
PDF
Apostila de-introdução-à-linguagem-c
PDF
PPTX
Programação "Estruturada" com Java
ODP
Programação Defensiva
PDF
Unidade04
PDF
AulaJava02_VarOperadoresEstContinuação.pdf
PPTX
Clean code @rogeriofontes-techfriday-everis
(A06) LabMM3 - JavaScript
Testes de Sofware
Programação Orientada a Objetos parte 3
JavaScript: agora é sério
Aula2
Python2.5.ppt
A Linguagem Lua e suas Aplicações em Jogos
02 1 algoritmos
Matando o Java e Mostrando o Python
Curso Básico de Java - Aula 4
Introdução ao Java 5
Apostila de-introdução-à-linguagem-c
Programação "Estruturada" com Java
Programação Defensiva
Unidade04
AulaJava02_VarOperadoresEstContinuação.pdf
Clean code @rogeriofontes-techfriday-everis
Anúncio

Último (6)

PDF
Slide - Uma visão geral C++ - Henricky Monteiro
PPTX
Programação Orientada a objetos em Java e C#
PPTX
Algoritmos Estrutura de DADOS - AED - Aula Inicial C e Python
PDF
Aula - Metodologia-do-Trabalho-Cientifico-Natureza-Objetivos-e-Metodos-de-Pes...
PDF
ECMAScript 6 - Daniel Phillipe Gonçalves Menezes
PPTX
WORD PARA INICIANTES E SIMPLES APREDIZADO COM WORD.pptx
Slide - Uma visão geral C++ - Henricky Monteiro
Programação Orientada a objetos em Java e C#
Algoritmos Estrutura de DADOS - AED - Aula Inicial C e Python
Aula - Metodologia-do-Trabalho-Cientifico-Natureza-Objetivos-e-Metodos-de-Pes...
ECMAScript 6 - Daniel Phillipe Gonçalves Menezes
WORD PARA INICIANTES E SIMPLES APREDIZADO COM WORD.pptx
Anúncio

Aula - Variaveis-e-Tipos-de-Dados-na-Programacao.pdf

  • 1. Variáveis e Tipos de Dados na Programação
  • 2. O que vamos aprender 1 Conceito de variáveis na programação Como as informações são armazenadas na memória do computador 2 Tipos de dados fundamentais Numéricos, texto, booleanos e estruturas compostas 3 Diferenças entre linguagens de programação Como C/C++, Java, Python, JavaScript, Rust e Go lidam com tipos de dados 4 Tipagem estática vs. dinâmica Vantagens, desvantagens e casos de uso para cada abordagem
  • 3. O que são variáveis? Variáveis são espaços na memória do computador destinados a armazenar valores durante a execução de um programa. Cada variável possui: Um nome (identificador) Um tipo (explícito ou implícito) Um valor (que pode mudar durante a execução) Pense em variáveis como caixas com etiquetas onde guardamos informações para usar depois.
  • 4. Analogia: Variáveis como caixas Variáveis funcionam como caixas organizadoras em seu programa: O nome da variável é como a etiqueta na caixa O tipo de dado define que tipo de conteúdo a caixa pode armazenar O valor é o conteúdo atual dentro da caixa Quando seu programa precisa daquela informação, ele sabe exatamente onde procurar!
  • 5. Tipos de dados básicos Numéricos int: números inteiros (1, 42, -10) float/double: números com decimal (3.14, -0.5) Texto char: um único caractere ('a', '5', '@') string: sequência de caracteres ("Olá mundo") Booleanos bool: valores lógicos (true/false, verdadeiro/falso) Usados para controle de fluxo e decisões Estes são os tipos de dados fundamentais presentes em quase todas as linguagens de programação, com pequenas variações de sintaxe.
  • 6. Tipos compostos/estruturados numeros = [1, 2, 3, 4, 5] nomes = ["Ana", "Bruno", "Carla"] pessoa = { "nome": "Carlos", "idade": 25, "altura": 1.75 } Arrays/Listas Coleções ordenadas de valores do mesmo tipo: Objetos/Dicionários Coleções de pares chave-valor: coordenadas = (10.5, 20.8) rgb = (255, 0, 127) cores = {"vermelho", "verde", "azul"} Tuplas Coleções ordenadas e imutáveis: Conjuntos (Sets) Coleções não ordenadas sem duplicatas: Estes tipos permitem organizar dados complexos de forma estruturada.
  • 7. Tipagem na programação Como as linguagens gerenciam os tipos de dados?
  • 8. Tipagem estática vs. dinâmica Tipagem Estática O tipo da variável é definido explicitamente Uma vez declarado, o tipo não pode mudar Erros de tipo são detectados na compilação Exemplos: C, C++, Java, Rust, Go Vantagens: mais segura, otimizada, documentada Desvantagens: menos flexível, mais verbosa Tipagem Dinâmica O tipo é inferido automaticamente Uma variável pode mudar de tipo durante a execução Erros de tipo aparecem na execução Exemplos: Python, JavaScript, Ruby, PHP Vantagens: mais flexível, rápida para prototipar Desvantagens: mais propensa a erros, menor otimização
  • 9. Tipagem: forte vs. fraca # Python (tipagem forte) "5" + 5 # Erro! Não soma string com número Tipagem Forte Não permite conversões automáticas entre tipos diferentes Exemplos: Python, Rust, Java // JavaScript (tipagem fraca) "5" + 5 // Resultado: "55" (converte 5 para string) "5" - 2 // Resultado: 3 (converte "5" para número) Tipagem Fraca Realiza conversões automáticas entre tipos diferentes Exemplos: JavaScript, PHP A força da tipagem determina quão rigorosa a linguagem é quanto à mistura de tipos diferentes em operações.
  • 10. Como diferentes linguagens lidam com variáveis int idade = 20; float altura = 1.75; char inicial = 'M'; // Precisa declarar o tipo C/C++ int idade = 20; double altura = 1.75; String nome = "Maria"; // Estático com classes Java idade = 20 altura = 1.75 nome = "Maria" # Tipo inferido automaticamente Python let idade = 20; idade = "vinte"; // válido! // Dinâmica e fraca JavaScript
  • 11. C/C++: Linguagens com tipagem estática rígida int idade = 20; float altura = 1.75; char nome[50] = "Ana Silva"; // Erro! Tipos incompatíveis idade = "vinte"; // Conversão explícita (casting) float resultado = (float)5 / 2; // 2.5 C e C++ são linguagens clássicas com tipagem estática, explícita e rígida: Características: Exige declaração de tipo antes do uso Alta performance e controle de memória Conversões precisam ser explícitas
  • 12. Java: Orientação a objetos com tipagem estática Java combina tipagem estática com forte orientação a objetos: // Tipos primitivos int idade = 25; double altura = 1.82; // Tipos por referência (objetos) String nome = "Carlos Eduardo"; ArrayList linguagens = new ArrayList(); linguagens.add("Java"); linguagens.add("Python"); // Erro de compilação - tipos incompatíveis idade = nome; Características: Diferencia tipos primitivos (int, double) de objetos (String, ArrayList) Verificação rigorosa de tipos na compilação Foco em segurança e portabilidade ("write once, run anywhere")
  • 13. Python: Dinamismo e simplicidade # O tipo é inferido automaticamente idade = 30 altura = 1.65 nome = "Ana Clara" # A mesma variável pode mudar de tipo contador = 0 contador = "zero" # Válido em Python! # Tipos fortes - sem conversão implícita # print(5 + "5") # Erro! print(5 + int("5")) # OK: 10 Python é conhecido pela tipagem dinâmica e sintaxe limpa: Características: Foco na legibilidade e produtividade Dinâmica mas forte (não converte tipos automaticamente)
  • 14. JavaScript: Flexibilidade e conversões automáticas JavaScript é dinâmico e fraco, realizando conversões automáticas: // Declaração dinâmica com let/var/const let idade = 40; let altura = 1.78; let nome = "Ricardo"; // Mudança de tipo é permitida idade = "quarenta anos"; // Válido! // Conversões automáticas (tipagem fraca) console.log("5" + 5); // Saída: "55" (concatenação) console.log("5" - 2); // Saída: 3 (subtração numérica) console.log(true + true); // Saída: 2 (true é tratado como 1) Características: Extremamente flexível (às vezes perigosamente) Conversões implícitas podem causar comportamentos inesperados Ideal para desenvolvimento web rápido, mas requer atenção
  • 15. Rust e Go: Modernas e seguras // Inferência de tipos com segurança let idade: u32 = 28; let nome = String::from("Julia"); // Controle rigoroso de memória let x = 5; let y = x; // x ainda é válido Rust Foco em segurança de memória e prevenção de erros concorrentes // Sintaxe simples com segurança var idade int = 32 nome := "Marcos" // inferência // Tipagem estática simplificada var alturas = []float64{1.75, 1.82} Go Projetada para simplicidade, eficiência e concorrência Ambas combinam a segurança da tipagem estática com sintaxe moderna e inferência de tipos, reduzindo a verbosidade sem sacrificar a segurança.
  • 16. Os tipos e a memória do computador Cada tipo de dado ocupa um espaço diferente na memória: Boolean Geralmente 1 byte (mesmo só precisando de 1 bit) Char 1 byte (ASCII) ou 2-4 bytes (Unicode) Int Tipicamente 4 bytes (32 bits) ou 8 bytes (64 bits) Float/Double 4 bytes (float) ou 8 bytes (double) String Varia conforme o tamanho do texto
  • 17. Quando o tipo de dado importa? Sistemas de baixo nível Embarcados/IoT: memória limitada Jogos: performance é crucial Sistemas operacionais: eficiência Usar int8 em vez de int64 pode significar economizar 7 bytes por variável - crucial quando você tem milhões delas! Sistemas de alto nível Aplicações web: flexibilidade Ciência de dados: praticidade Protótipos: velocidade de desenvolvimento Linguagens como Python e JavaScript abstraem a complexidade dos tipos, permitindo foco na solução do problema. A escolha depende do equilíbrio entre eficiência, segurança e velocidade de desenvolvimento.
  • 18. Exemplos práticos de uso de variáveis # Python num1 = float(input("Primeiro número: ")) num2 = float(input("Segundo número: ")) soma = num1 + num2 print(f"Resultado: {soma}") Calculadora Simples // JavaScript let nome = prompt("Nome completo:"); let idade = parseInt(prompt("Idade:")); let ativo = true; console.log(`Usuário ${nome}, ${idade} anos`); Cadastro de Usuário
  • 19. Dicas para escolher a abordagem certa Quando usar tipagem estática Projetos grandes com muitos desenvolvedores Sistemas que exigem alta performance Aplicações onde segurança é crítica Quando precisa de documentação clara sobre a interface Para detectar erros antes da execução Ex: C++, Java, Rust, TypeScript Quando usar tipagem dinâmica Protótipos rápidos e MVPs Scripts e automações simples Ciência de dados e análises exploratórias Quando flexibilidade é mais importante que performance Para aprendizado inicial de programação Ex: Python, JavaScript, Ruby, PHP Lembre-se: não existe uma abordagem "melhor" - cada uma tem seu propósito!
  • 20. Resumo: O que aprendemos Variáveis são espaços na memória para armazenar valores Cada variável tem um nome, um tipo e um valor atual Tipos básicos incluem números, texto e booleanos Tipos compostos organizam dados mais complexos Linguagens diferem em como tratam tipos Estáticas vs. dinâmicas, fortes vs. fracas A escolha da abordagem depende do contexto Considere segurança, performance, flexibilidade e produtividade Continue praticando e experimentando diferentes linguagens para entender melhor como cada uma implementa esses conceitos!