Programação

Conceitos básicos de programação: quais são e como funcionam

Atualizado em

Capa do artigo Conceitos básicos de programação: quais são e como funcionam
Leitura com foco

Entenda o contexto.
Leve para a prática.

Neste artigo
  1. Qual é a anatomia de um programa?
  2. Quais são os tipos de dados?
  3. O que é uma variável?
  4. O que é controle de fluxo?
  5. Como fica tudo isso em um programa só?
  6. Aí você pergunta: se o conceito é o mesmo, o que muda de uma linguagem para outra?
  7. Quais são os erros mais comuns de quem está começando?
  8. Por onde continuar?
  9. 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.

Três etapas de um programa: entrada com as idades 30, 10 e 20, processamento com a soma 60 dividida por 3 e saída com a média 20.0
Entrada, processamento e saída no programa deste artigo: as idades entram, a soma e a divisão são feitas, e a média aparece na tela.

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.
As três estruturas de controle: sequência, com um comando depois do outro, decisão, com if e else, e repetição, com for e while
As três estruturas de controle: sequência, decisão e repetição. O programa deste artigo usa as três.

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
Animação do programa do artigo: a cada volta do laço a soma aumenta, a variável lógica muda na idade 10, e no fim saem a média 20.0 e a classificação
A cada volta do laço a soma aumenta. Na idade 10, a variável lógica muda. No fim saem a média e a classificação.

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:

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:

Sobre quem escreve

Walmir Silva

Olá! Sou Walmir, engenheiro de software com MBA em Engenharia de Software e o cérebro por trás do GrowthCode e autor do livro "Além do Código".

Se você acha que programação é apenas sobre escrever código, prepare-se para expandir seus horizontes. Aqui, nós vamos além do código e exploramos as interseções fascinantes entre tecnologia, negócios, artes e filosofia.

Você está em busca de crescimento na carreira? Quer se destacar em um mercado competitivo? Almeja uma vida mais rica em conhecimento e realização? Então você chegou ao lugar certo. No GrowthCode, oferecemos insights profundos, estratégias comprovadas e um toque de sabedoria filosófica para catalisar seu crescimento pessoal e profissional.

Ver todos os artigos →

Continue a conversa

Compartilhe sua perspectiva

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Encontre sua próxima resposta

O que você quer aprender?

Preferências de cookies

Os cookies opcionais começam desligados. Você pode mudar a escolha a qualquer momento por esta tela.

NecessáriosSempre ativos

Guardam a sua escolha de cookies e mantêm o site funcionando. Não são usados para publicidade.

Contam visitas e mostram como o site é usado: Google Analytics e Microsoft Clarity, carregados pelo Google Tag Manager. Como esse contêiner também carrega tags de publicidade, as estatísticas só são ativadas junto com Publicidade e marketing.

Exibem anúncios do Google AdSense e medem campanhas e e-mails: pixels da Meta e do TikTok e o Mautic.

Permite que o Google escolha anúncios com base nos seus interesses. Desligado, os anúncios aparecem sem personalização. Depende de Publicidade e marketing.

Também é possível bloquear cookies nas configurações do navegador. Detalhes na Política de privacidade.