Neste artigo
- Qual é a anatomia de um programa?
- Quais são os tipos de dados?
- O que é uma variável?
- O que é controle de fluxo?
- Como fica tudo isso em um programa só?
- Aí você pergunta: se o conceito é o mesmo, o que muda de uma linguagem para outra?
- Quais são os erros mais comuns de quem está começando?
- Por onde continuar?
- Agora é com você!
Os conceitos básicos de programação são as peças que aparecem em todo programa deste blog, em qualquer linguagem: tipos de dados, variáveis e controle de fluxo, que é a ordem em que os comandos são executados.
Você já viu que programar é conversar com o computador e que ele trabalha com entrada, processamento, armazenamento e saída. Este artigo é o mapa: mostra cada peça funcionando em um programa só e aponta o artigo que explica cada uma em detalhe.
É impressionante como o mundo de TI é abrangente. Só em programação já existe uma variedade enorme de linguagens. Por isso, não pegue uma linguagem de “estimação” para ficar idolatrando. O programa deste artigo está escrito em Python, em PHP e em C, e a saída é idêntica nas três. O que muda de uma para a outra é a forma de escrever. Sacou?
Qual é a anatomia de um programa?
Pense em uma calculadora: você digita os números (entrada), ela faz a conta (processamento) e mostra o resultado (saída). Os programas que você vai construir seguem esse caminho.
Para a entrada e para a saída existem comandos próprios. O comando de entrada lê dados do teclado ou de um arquivo e guarda em variáveis. O comando de saída mostra os dados, normalmente na tela. No programa deste artigo, a saída é feita com print em Python e com printf em PHP e em C.

ATENÇÃO: aqui as idades já estão escritas dentro do código, para você conseguir exatamente a mesma saída que eu.
Quais são os tipos de dados?
Todo dado que o programa guarda tem um tipo. Os tipos básicos são estes:
- Inteiro: número sem casas decimais, negativo ou positivo. Exemplos: -30, -17, 1 e 100. No programa, as idades e a quantidade de pessoas.
- Real: número com casas decimais. Exemplos: -10.20, 1.2 e 121.45. No programa, a média. No Python e no PHP esse tipo se chama float.
- Texto: uma letra ou um conjunto de letras, escrito entre aspas. Exemplos: “Walmir”, “A” e “1”. No programa, o nome do grupo.
- Lógico: só tem dois valores, verdadeiro ou falso. No programa, a variável tem_crianca.
ATENÇÃO: “1” entre aspas é texto, e não número. Mais abaixo você vai ver a confusão que isso dá.
Cada linguagem dá os seus nomes e acrescenta os seus tipos. O manual do PHP lista null, bool, int, float, string, array, object, callable e resource. O material de aula de C fala em três tipos primitivos: caractere, inteiro e real. O tutorial do Python começa por int, float, textos e listas. Parece confuso, mas os quatro tipos acima já levam você até o fim deste artigo.
A lista com as três idades é um vetor: vários valores debaixo de um nome só. Ele tem um artigo próprio, vetores e matrizes.
Repare em uma diferença de escrita. No código em C, o tipo vem antes do nome: int soma, double media. No PHP você não escreve o tipo, porque a linguagem tem tipagem dinâmica: o tipo é decidido durante a execução, conforme o valor guardado. No código em Python o tipo também não aparece.
O que é uma variável?
É uma posição na memória do computador que tem um nome e um valor. Pense em uma “caixinha” com etiqueta: você guarda o dado nela e, quando precisar, pega o dado pelo nome que está na etiqueta.
Só que o dado pode variar. No programa, a caixinha soma começa com 0, passa a guardar 30, depois 40 e termina com 60. O valor antigo é trocado pelo novo. Quem coloca o valor na caixinha é o sinal de igual, a atribuição, que tem um artigo só para ela: operadores de atribuição e incremento.
No PHP, toda variável começa com cifrão: $soma, $idades, $media. Nos códigos em Python e em C o nome vai sem cifrão. O manual do PHP avisa que o nome diferencia maiúsculas de minúsculas e que ele começa com letra ou sublinhado, nunca com número. A troca de valores, as constantes e as regras de nomes estão no artigo sobre variáveis e constantes.
O que é controle de fluxo?
Como você lê a página de um livro? De cima para baixo, linha por linha. Os comandos de um programa também são executados um depois do outro. Agora imagine que na página 10 existe uma nota mandando você ler o primeiro parágrafo da página 5. Você interrompe a leitura e vai até lá. E imagine que a última linha diz “volte e leia de novo o primeiro parágrafo desta página”. Você volta. Controlar o fluxo é isso: decidir qual trecho será lido e quantas vezes.
Para isso existem três estruturas de controle:
- Sequência: os comandos são executados um depois do outro, na ordem em que foram escritos.
- Decisão (ou seleção): o programa escolhe entre dois caminhos. É o if e o else, que significam “se” e “senão”.
- Repetição: um bloco de comandos é executado várias vezes. É o for e o while.

Você usa decisão na vida o tempo todo. Quer ver?
- SE a porta estiver fechada E você quiser entrar, ENTÃO você abre a porta, SENÃO deixa como está.
- SE o computador estiver desligado E você quiser usar, ENTÃO você aperta o botão de ligar, SENÃO deixa como está.
Você já tem muita lógica no seu dia a dia. No código, o if testa uma condição. Se ela for verdadeira, o bloco do if é executado. Se for falsa, esse bloco é ignorado e, quando existe else, é o bloco dele que roda. Quando a decisão tem muitos caminhos, entra o switch case. E o “E” que aparece nas duas frases acima é assunto da tabela verdade.
Na repetição, o for do programa passa pelas três idades, uma em cada volta. Em Python, o range(3) entrega os números 0, 1 e 2: o fim nunca faz parte da sequência. Os dois laços têm artigos próprios: laço for e laço while.
Como fica tudo isso em um programa só?
O programa abaixo guarda as idades de três pessoas (30, 10 e 20), soma, calcula a média, classifica o grupo e avisa se existe criança nele. Procure as peças: os quatro tipos de dados, as variáveis, a repetição, a decisão e uma função.
Em Python:
# Conceitos básicos de programação reunidos em um programa só
def classificar(media): # função
if media >= 18: # decisão
return "maioria adulta"
else:
return "maioria jovem"
nome_do_grupo = "Família Silva" # texto
idades = [30, 10, 20] # números inteiros
quantidade = 3
tem_crianca = False # lógico: verdadeiro ou falso
soma = 0
for i in range(quantidade): # repetição
print("Idade %d: %d" % (i + 1, idades[i]))
soma = soma + idades[i]
if idades[i] < 12:
tem_crianca = True
media = soma / quantidade # número real, com casas decimais
print("Grupo: %s" % nome_do_grupo)
print("Soma das idades: %d" % soma)
print("Média das idades: %.1f" % media)
print("Classificação: %s" % classificar(media))
if tem_crianca:
print("Tem criança no grupo: sim")
else:
print("Tem criança no grupo: não")
Em PHP:
<?php
// Conceitos básicos de programação reunidos em um programa só
function classificar(float $media): string { // função
if ($media >= 18) { // decisão
return "maioria adulta";
} else {
return "maioria jovem";
}
}
$nome_do_grupo = "Família Silva"; // texto
$idades = [30, 10, 20]; // números inteiros
$quantidade = 3;
$tem_crianca = false; // lógico: verdadeiro ou falso
$soma = 0;
for ($i = 0; $i < $quantidade; $i++) { // repetição
printf("Idade %d: %d\n", $i + 1, $idades[$i]);
$soma = $soma + $idades[$i];
if ($idades[$i] < 12) {
$tem_crianca = true;
}
}
$media = $soma / $quantidade; // número real, com casas decimais
printf("Grupo: %s\n", $nome_do_grupo);
printf("Soma das idades: %d\n", $soma);
printf("Média das idades: %.1f\n", $media);
printf("Classificação: %s\n", classificar($media));
if ($tem_crianca) {
echo "Tem criança no grupo: sim\n";
} else {
echo "Tem criança no grupo: não\n";
}
Em C:
/* Conceitos básicos de programação reunidos em um programa só */
#include <stdio.h>
#include <stdbool.h>
const char *classificar(double media) { /* função */
if (media >= 18) { /* decisão */
return "maioria adulta";
} else {
return "maioria jovem";
}
}
int main(void) {
const char *nome_do_grupo = "Família Silva"; /* texto */
int idades[] = {30, 10, 20}; /* números inteiros */
int quantidade = 3;
bool tem_crianca = false; /* lógico: verdadeiro ou falso */
int soma = 0;
for (int i = 0; i < quantidade; i++) { /* repetição */
printf("Idade %d: %d\n", i + 1, idades[i]);
soma = soma + idades[i];
if (idades[i] < 12) {
tem_crianca = true;
}
}
double media = (double) soma / quantidade; /* número real, com casas decimais */
printf("Grupo: %s\n", nome_do_grupo);
printf("Soma das idades: %d\n", soma);
printf("Média das idades: %.1f\n", media);
printf("Classificação: %s\n", classificar(media));
if (tem_crianca) {
printf("Tem criança no grupo: sim\n");
} else {
printf("Tem criança no grupo: não\n");
}
return 0;
}
Saída:
Idade 1: 30 Idade 2: 10 Idade 3: 20 Grupo: Família Silva Soma das idades: 60 Média das idades: 20.0 Classificação: maioria adulta Tem criança no grupo: sim
Leia de cima para baixo, como o livro:
- Tipos e variáveis: nome_do_grupo guarda um texto, idades guarda três inteiros, quantidade guarda um inteiro e tem_crianca guarda um valor lógico, que começa falso.
- Repetição: o for dá três voltas. Em cada uma ele mostra a idade e acumula na soma: 0 + 30 = 30, 30 + 10 = 40 e 40 + 20 = 60.
- Decisão dentro da repetição: o if pergunta se a idade é menor que 12. Só na idade 10 a resposta é sim, e tem_crianca vira verdadeiro.
- Número real: a média é 60 ÷ 3 = 20.0.
- Função: classificar recebe a média e devolve um texto. Como 20.0 é maior ou igual a 18, a resposta é “maioria adulta”. As funções têm o seu artigo, e o escopo das variáveis também.
Ver a animação: o programa passo a passo

Para rodar, usei estes comandos:
python3 alg_conceitos.py php alg_conceitos.php gcc -o alg_conceitos alg_conceitos.c ./alg_conceitos
Em Python e em PHP, bastou chamar o programa. Em C, primeiro passei o código pelo compilador (gcc) e depois executei o arquivo que ele gerou. O motivo está no artigo que mostra como o compilador transforma o código-fonte em binário.
Quem diria: o programa tem 30 linhas em Python, 36 em PHP e 40 em C, e a saída é exatamente a mesma. Mais código, mesma finalidade. Foque no conceito, e não na linguagem!
Aí você pergunta: se o conceito é o mesmo, o que muda de uma linguagem para outra?
Muda a sintaxe e, às vezes, muda a semântica. Sintaxe é o conjunto de regras que diz como as palavras e os símbolos podem ser combinados para formar uma instrução válida. Semântica é o significado da instrução. O sinal + é sintaxe. A soma que ele faz é semântica.
A diferença de sintaxe você já viu no programa: o cifrão do PHP, o tipo antes do nome em C, os dois-pontos e o recuo do Python no lugar das chaves. A diferença de semântica aparece quando a mesma escrita faz coisas diferentes. Olha o que acontece ao somar o texto “10” com o número 5:
Python: "10" + 5 TypeError: can only concatenate str (not "int") to str PHP: "10" + 5 int(15) PHP: "dez" + 5 TypeError: Unsupported operand types: string + int
O Python se recusou a somar texto com número. O PHP tratou o texto “10” como número e respondeu 15, mas também deu erro quando o texto não era um número. Por isso o tipo do dado importa, mesmo quando você não escreve o tipo no código.
Quais são os erros mais comuns de quem está começando?
- Erro de sintaxe. Esquecer os dois-pontos no fim do if em Python faz o programa parar com a mensagem SyntaxError: expected ‘:’. Esse é o erro bom, porque a linguagem avisa.
- Erro de lógica. Um programa pode estar escrito do jeito certo e mesmo assim fazer a coisa errada. Se você dividir a soma das três idades por 2, o programa roda sem reclamar e mostra 30.0. Ninguém avisa: quem confere a conta é você.
- Divisão entre inteiros em C. Com soma 61 e quantidade 3, a linha double media = soma / quantidade guardou 20.00: as casas decimais se perderam. Com (double) soma / quantidade, o resultado foi 20.33. Em Python, a barra sempre devolve um número real (61 / 3 deu 20.333333333333332) e a divisão inteira tem um sinal próprio, as duas barras (61 // 3 deu 20). Em PHP, 61 / 3 também deu 20.333333333333332.
- Maiúsculas e minúsculas no nome. No PHP, $var e $Var são variáveis diferentes. Escreva o nome sempre do mesmo jeito.
Por onde continuar?
Cada peça deste artigo tem um artigo próprio, com exemplos nas três linguagens:
- Switch case: o que é e como usar, para a decisão com muitos caminhos.
- Tabela verdade: o que é e como montar, para combinar condições com E, OU e NÃO.
- Variáveis e constantes: o que são e como usar, para a atribuição, a troca de valores e as regras de nomes.
- Operadores de atribuição e incremento: o que são e como usar, para guardar e atualizar valores.
- Escopo de variáveis: o que é e como funciona, para saber onde cada variável existe.
- Laço for: o que é e como usar e Laço while: o que é e como usar, para a repetição.
- Vetores e matrizes: o que são e como usar, para guardar vários valores em uma variável.
- Funções em programação: o que são e como criar, para dar nome a um trecho de código e usar de novo.
- Classes e objetos: o que são e como criar, para juntar dados e funções em um molde.
Agora é com você!
No papel: troque as idades para 8, 15 e 40 e faça o caminho do programa na mão. Quanto vale a soma em cada volta? Qual é a média? Qual é a classificação? O que acontece com tem_crianca?
No computador: escolha uma das três linguagens, acrescente uma quarta pessoa ao grupo e faça o programa mostrar também a maior idade. Tente sozinho, sem pedir a resposta pronta para ninguém, nem para a IA!
Agora você tem o mapa. No próximo artigo, a decisão ganha mais caminhos: switch case: o que é e como usar.
Confiança Sempre!!!
Fontes:
- Universidade Federal de Pernambuco, Centro de Informática, Conceitos Básicos de Programação, com a diferença entre sintaxe e semântica, o aviso de que um programa sintaticamente correto pode estar logicamente errado e as estruturas de sequência e seleção (PDF, slides de aula).
- Universidade Federal de Minas Gerais, Departamento de Estatística, Introdução à Programação, seção 1.3, Algoritmos e Fluxogramas, com a variável como posição na memória que tem nome e valor, os tipos numérico, literal e lógico e as estruturas de sequência, condicional e repetição (PDF, slides de aula).
- Universidade da Beira Interior, Departamento de Informática, Programação Estruturada e Desenho de Algoritmos, com as três estruturas básicas de controle: sequência, seleção e repetição (PDF, material de aula).
- Instituto Federal da Bahia, Análise e Desenvolvimento de Sistemas, Introdução a Lógica de Programação, com o comando de entrada, que lê dados de arquivos ou do teclado e guarda em variáveis, e o comando de saída, normalmente em vídeo (slides de aula).
- Universidade Federal do Vale do São Francisco, material de aula teórica, aula 6, com as características básicas da linguagem C: tipos de dados primitivos caractere, inteiro e real e estruturas de controle de fluxo (PDF, slides de aula).
- Universidade Tecnológica Federal do Paraná, Departamento Acadêmico de Informática, apostila de Algoritmos, com os capítulos sobre variáveis e tipos básicos e sobre as estruturas básicas de controle: sequência, seleção e repetição (PDF).
- Manual do PHP, Tipos, introdução, com a lista dos tipos da linguagem e a tipagem dinâmica, em que o tipo é determinado em tempo de execução.
- Manual do PHP, Variáveis, o básico, com o cifrão antes do nome, a diferença entre maiúsculas e minúsculas e as regras para um nome válido.
- Manual do PHP, if, com a execução condicional: a instrução é executada se a expressão for verdadeira e ignorada se for falsa.
- Documentação do Python, tutorial, An Informal Introduction to Python, com os tipos int e float, a barra de divisão que sempre devolve float, as duas barras da divisão inteira, os textos entre aspas, as listas e a atribuição com o sinal de igual.
- Documentação do Python, tutorial, More Control Flow Tools, com o if, o for que percorre os itens de uma sequência e o range, em que o fim nunca faz parte da sequência.
- Os exemplos foram executados em Python 3.13, PHP 8.3 e GCC 13.

Continue a conversa