Avançar para o conteúdo
Imagem com logotipo, contendo link para a página inicial
  • United Stated of America flag, representing the option for the English language.
  • Bandeira do Brasil, simbolizando a opção pelo idioma Português do Brasil.

Aprenda Programação: Entrada em Terminal (Console)

Exemplos de uso de entrada para programas escritos em Python, Lua e JavaScript.

Créditos para a imagem: Imagem criada pelo autor usando o programa Spectacle.

Pré-Requisitos

Na introdução sobre ambientes de desenvolvimento, indiquei Python, Lua e JavaScript como boas escolhas de linguagens de programação para iniciantes. Posteriormente, comentei sobre GDScript como opção para pessoas que tenham interesse em programar jogos digitais ou simulações. Para as atividades de introdução a programação, você precisará de, no mínimo, um ambiente de desenvolvimento configurado em uma das linguagens anteriores.

Caso queira experimentar programação sem configurar um ambiente, você pode usar um dos editores online que criei:

Contudo, eles não possuem todos os recursos dos interpretadores para as linguagens. Assim, cedo ou tarde, você precisará configurar um ambiente de desenvolvimento. Caso precise configurar um, confira os recursos a seguir.

Assim, se você tem um Ambiente Integrado de Desenvolvimento (em inglês, Integrated Development Environment ou IDE) ou a combinação de editor de texto com interpretador, você está pronto para começar. Os exemplos assumem que você saiba executar código em sua linguagem escolhida, como apresentado nas páginas de configuração.

Caso queira usar outra linguagem, a introdução provê links para configuração de ambientes para as linguagens C, C++, Java, LISP, Prolog e SQL (com SQLite). Em muitas linguagens, basta seguir os modelos da seção de experimentação para adaptar sintaxe, comandos e funções dos trechos de código. C e C++ são exceções, por requerem o uso de ponteiros para acesso à memória.

Programadores (ou Desenvolvedores) e Usuários Finais

Antes de começar sua jornada de desenvolvimento de software, seu contato com computadores e com programas de computadores era como uma usuária ou um usuário final. Usuário final (ou end-user) é a pessoa que utiliza um sistema implementado, pronto para uso. O termo é o contrário de desenvolvedora ou desenvolvedor, que é a pessoa que cria sistemas.

Mesmo como programadora ou programador, você sempre continuará a ser usuária ou usuário final de outros sistemas. Por exemplo, exceto caso você crie todos os sistemas de seu computador (do bootloader ao sistema operacional, do editor de texto ao compilador), você fará uso de programas criados por outras pessoas.

Você certamente já criou ou inseriu conteúdo em programas de computador prontos, sem precisar modificar o programa para isso. Por exemplo, você chegou à esta página de alguma forma. Talvez digitando o endereço https://www.francogarcia.com em seu navegador, talvez por meio de um motor de buscas.

Qualquer que seja a forma, você, em algum momento, forneceu dados a um sistema sem escrever código-fonte. Em programas, isso é feito via entradas. A partir deste tópico, você também poderá receber dados fornecidos por usuários finais para processamento em seus programas.

Dados Externos e Dados Hard Coded

Programas são compostos por código e dados. Quando se escreve o código-fonte de um programa, cria-se código como combinação de instruções e valores. Valores são dados.

Sem entrada, todos os dados de um programa devem ser definidos em tempo de desenvolvimento. Isso significa que não é possível alterar um programa sem a modificação de código-fonte. Para se adicionar novos dados ou modificar dados existentes, é necessário alterar o código-fonte, recompilar e executar o programa (ou reinterpretá-lo).

Entrada simplifica o processo, por permitir o uso dados externos. A origem de dados externos é (como o nome sugere) externa ao programa, o que permite criar programas mais flexíveis. Ao invés valores pré-definidos, é possível obter dados de outras fontes, quando necessário. Em potencial, os valores podem variar a cada uso (ao invés serem sempre os mesmos).

Por exemplo, uma calculadora permite a entrada de números e operadores para a realização de cálculos. Uma calculadora sem entrada apenas seria capaz de repetir os cálculos pré-definidos no código-fonte. Você poderia criar uma calculadora que sempre efetuasse o cálculo , mas ela não seria muito útil.

O mesmo raciocínio aplica-se a qualquer outro programa de computador interativo. Por exemplo, um navegador sem entrada exibiria sempre o mesmo website. A página seria estática, sem nenhuma interatividade, pois usar links e rolar uma página (para avançar o conteúdo) dependem de entradas. Rolar conteúdo automaticamente seria possível, mas inconveniente. Uma possibilidade seria definir um processamento pré-definido (por exemplo, exibir o próximo parágrafo de 10 em 10 segundos). Contudo, ao invés de um navegador interativo, o resultado seria algo como um painel informativo ou de publicidade.

Em outras palavras, entrada é fundamental para a interatividade.

Hard Code

Dados definidos no código-fonte de um programa são internos, e usualmente chamados de hard coded. Ao contrário de dados obtidos como entradas, só é possível alterar dados hard coded modificando-se o código-fonte do programa.

Dados hard coded fazem parte de todo programa, porque nem todo dado precisa ser alterado por usuários finais. Todo dado que é conhecido em tempo de desenvolvimento e que não precisará ser alterado durante o uso do programa é candidato a ser hard coded. Por analogia, todo dado que é desconhecido em tempo de desenvolvimento ou que possa mudar durante o uso é forte candidato a tornar-se uma entrada do sistema.

Quanto mais entradas, maior a flexibilidade do sistema. Contudo, também será maior a complexidade de uso. Portanto, para boa usabilidade, é prudente balancear opções de entradas com comportamentos pré-definidos. Caso comportamentos devam mudar, uma alternativa é fornecer valores adotados como padrões. Assim, caso a pessoa queira mudá-los, ela terá a opção. Caso contrário, ela poderá usar o sistema com maior conveniência.

Código como Dados ou Dados como Códigos

Muitas linguagens de programação diferenciam código criado como instruções de código criado como dados em um programa. Outras não o fazem, algo chamado code as data (ou data as code).

Linguagens de programação que tratam código como dados permitem a criação de programas extremamente flexíveis e dinâmico. Isso ocorre porque, nessas linguagens, usuários finais podem fornecer entrada de código como se fossem dados para alterar partes do programa. Em outras palavras, usuários finais podem ser programadores do programa utilizado.

Isso é possível porque arquiteturas de computadores normalmente seguem a chamada arquitetura de von Neumann. A arquitetura de von Neumann também é conhecida como arquitetura de programa armazenado (stored program), porque não distingüe código de dados em sua memória. Em outras palavras, programas e dados podem co-existir em um mesma memória.

Um dos exemplos mais tradicionais de linguagem que permite usar dados como código é LISP. LISP, em particular, possui uma propriedade chamada homoiconicidade (homoiconicity), que significa que a linguagem utiliza uma mesma estrutura para códigos e dados. No caso, s-expressions ou sexps.

Código como dados permitem explorar atividades avançadas de metaprogramação. Embora não seja um tópico para esta introdução, é interessante conhecer o termo, para saber que é possível escrever programas que gerem outros programas -- ou mesmo que permitam a modificação do próprio programa em execução. O editor de texto GNU Emacs é um bom exemplo de programa que permite a modificação do próprio programa em execução.

Entrada de Dados

A entrada de dados costuma ser feita por meio da leitura de cadeias de caracteres (strings). Existem linguagens de programação que permitem a leitura de dados formatados, isto é, que convertam valores de cadeias de caracteres para outros tipos de dados (normalmente primitivos, como números inteiros, números reais e valores lógicos). Nas linguagens que não permitem, deve-se realizar a conversão manualmente, como detalhado previamente em tipos de dados. No caso, as conversões ocorrerão de string para o outro tipo desejado.

Validação de Dados

Em programas sem entrada, todos os dados são definidos por programadores. Isso significa que, caso um dado esteja errado, ele foi definido incorretamente por alguém da equipe de desenvolvimento.

Em programas com entrada, surge uma nova possibilidade de erros, decorrentes do fornecimento de dados incorretos ou inesperados. Caso uma usuário ou um usuário final forneça um valor considerado como incorreto pelo programa, o código deve ser robusto o suficiente para tratá-lo. Caso contrário, o programa travará ou gerará resultados incorretos; evidentemente, cenários indesejáveis.

Tratamento de dados é comumente chamado de validação de dados. A implementação validação de dados depende de recursos de programação ainda não definidos, como estruturas de condição e de repetição.

Assim, neste momento, os exemplos apenas armazenarão dados em variáveis. Ainda não há como caracterizar dados como inválidos, nem evitar travamentos caso o formato de um dado fornecido não corresponda ao tipo da variável que armazenará o valor. A validação de dados será apresentada, pois, em momento apropriado.

Fluxogramas: Flowgorithm

Para adicionar um bloco para leitura de dados, clique com o botão direito em uma flecha e escolha a opção a opção Entrada (Input). Digite o nome da variável (ela deve ter sido definido previamente) que receberá o valor lido (por exemplo, nome) e confirme.

Ao rodar o programa, a entrada de um valor será solicitada quando a execução atingir um bloco de entrada. Então, você deverá digitar um valor (por exemplo, Meu Nome), seguido da tecla enter (). Caso preferir, você também pode usar o botão disponível (Enter).

Exemplo de programação visual em Flowgorithm com uma variável do tipo cadeia de caracteres.

Na imagem anterior, o fluxograma possui o seguinte conteúdo:

Principal
Saída "Olá, meu nome é Franco!"
Caracteres nome
Saída "Qual é o seu nome?"
Entrada nome
Saída "Olá," & nome & "!"
Fim

Para escrever o valor armazenado na variável, você pode usar um bloco de saída. Caso queira combinar texto com o valor da variável, você pode escrever o texto desejado entre aspas duplas, depois escrever um e-comercial (&) seguido do nome da variável. Pode-se repetir o processo tantas vezes quantas forem necessárias para a escrita da mensagem. Por exemplo, "Olá, " & nome & "!" pode escrever mensagens como "Olá, meu nome é Franco!".

Exemplo de programação visual em Flowgorithm com duas variáveis: uma do tipo cadeia de caracteres, outra do tipo inteiro.

Na imagem anterior, o fluxograma possui o seguinte conteúdo:

Principal
Saída "Olá, meu nome é Franco!"
Caracteres nome
Saída "Qual é o seu nome?"
Entrada nome
Saída "Olá," & nome & "!"
Saída "Quantos anos você tem?"
Inteiro idade
Entrada idade
Saída nome & " tem " & idade & " anos."
Fim

Caso as variáveis sejam do tipo lógico (Boolean), os valores aceitos serão true para Verdadeiro e false para Falso. Outros valores não são permitidos.

Linguagens de Programação Visual: Scratch

Para adicionar um bloco que leia dados do teclado, acesse Sensores (Sensing) no menu lateral, depois escolha pergunte Qual o seu nome? e espere (_Ask What's your name? and wait). Ajuste a mensagem conforme necessário.

A resposta será armazenada em uma variável chamada resposta (answer), localizada após o bloco de entrada. Para salvar o resultado, você pode fazer uma atribuição: copie o valor de resposta (answer) para uma variável de sua preferência (por exemplo, nome).

Exemplo de programação visual em Scratch com uma variável do tipo cadeia de caracteres.

Para escrever o valor armazenado na variável, você pode usar um bloco de saída. Caso queira combinar texto com o valor da variável, acesse Operadores (Operators), depois escolha o bloco junte maçã com banana (Join apple banana). Troque os valores por outros de sua preferência. Para juntar várias mensagens, é possível adicionar o bloco junte maçã com banana (Join apple banana) dentro outro bloco (Join).

Exemplo de programação visual em Scratch com duas variáveis: uma do tipo cadeia de caracteres, outra do tipo inteiro.

Linguagens de Programação Textual: JavaScript, Python, Lua e GDScript

Trabalhar com entrada via terminal (console) é simples em JavaScript, Python e Lua.

  • Em JavaScript, usa-se prompt(): documentação. Caso você esteja usando JavaScript em linha de comando, pode-se usar readline() em SpiderMonkey ou Node.js (documentação);
  • Em Python, usa-se input(): documentação. Caso você esteja usando REPL ao invés de um arquivo com código Python, é necessário digitar (ou copiar e colar) e avaliar uma linha por vez. Caso contrário, a solicitação de entrada será ignorada pelo interpretador. Esse problema não ocorre com arquivos de código-fonte;
  • Em Lua, usa-se io.read(): documentação.

Em GDScript, não é possível ler dados de um terminal, já que se pressupõe a existência de uma janela.

Leitura de Cadeias de Caracteres (Strings)

Em geral, a leitura de cadeias de caracteres (strings) é a forma mais simples de solicitar entrada por usuários finais. A leitura ocorre em um prompt.

console.log("Olá, meu nome é Franco!")
let nome = prompt("Qual é o seu nome?")
console.log("Olá, ", nome, "!")
console.log("Olá, meu nome é Franco!")
console.log("Qual é o seu nome?")
let nome = readline()
console.log("Olá, ", nome, "!")
print("Olá, meu nome é Franco!")
nome = input("Qual é o seu nome? ")
print("Olá, ", nome, "!")
print("Olá, meu nome é Franco!")
print("Qual é o seu nome?")
local nome = io.read("*line")
print("Olá, ", nome, "!")

A entrada anterior é do tipo blocking, que bloqueia a execução do programa até que a pessoa forneça um valor. Após o programa escrever Qual é o seu nome?, você deve digitar o valor desejado e, em seguida, apertar enter para enviá-lo ao programa. Por exemplo, Meu Nome, seguido da tecla enter ().

Em todos os exemplos anteriores, armazena-se o valor lido em uma variável chamada nome. O nome fornecido pela usuário ou pelo usuário poderá ser acessado utilizando-se a variável.

Em Python e JavaScript (versão navegador), é possível alterar a implementação como a seguir.

console.log("Olá, meu nome é Franco!")
console.log("Qual é o seu nome?")
let nome = prompt()
console.log("Olá, ", nome, "!")
print("Olá, meu nome é Franco!")
print("Qual é o seu nome?")
nome = input()
print("Olá, ", nome, "!")

Na versão modificada, utiliza-se o comando de escrita para exibir a mensagem antes de solicitar-se a leitura do valor. Assim, o código resultante assemelha-se ao criado para Lua e JavaScript (SpiderMonkey).

Leitura de Tipos Primitivos

Para completar as possíveis operações de leitura de tipos primitivos, os próximos blocos de código ilustram como ler cadeias de caracteres, números inteiros, números reais e valores lógicos a partir de entrada em console.

console.log("Olá, meu nome é Franco!")

// Cadeia de caracteres.
let nome = prompt("Qual é o seu nome?")
console.log("Olá, ", nome, "!")

// Número inteiro.
let idade = parseInt(prompt("Quantos anos você tem?"))
console.log(nome, " tem ", idade, " anos.")

// Número real.
let altura = parseFloat(prompt("Qual é a sua altura em metros?"))
console.log(nome, " tem ", altura, " m.")

// Valor lógico.
let gosta_de_programar = Boolean(prompt("Você gosta de programar? Caso não goste, deixe a resposta vazia."))
console.log(nome, " gosta de programar? ", gosta_de_programar)
console.log("Olá, meu nome é Franco!")

// Cadeia de caracteres.
console.log("Qual é o seu nome?")
let nome = readline()
console.log("Olá, ", nome, "!")

// Número inteiro.
console.log("Quantos anos você tem?")
let idade = parseInt(readline())
console.log(nome, " tem ", idade, " anos.")

// Número real.
console.log("Qual é a sua altura em metros?")
let altura = parseFloat(readline())
console.log(nome, " tem ", altura, " m.")

// Valor lógico.
console.log("Você gosta de programar? Caso não goste, deixe a resposta vazia.")
let gosta_de_programar = Boolean(readline())
console.log(nome, " gosta de programar? ", gosta_de_programar)
print("Olá, meu nome é Franco!")

# Cadeia de caracteres.
nome = input("Qual é o seu nome? ")
print("Olá, ", nome, "!")

# Número inteiro.
idade = int(input("Quantos anos você tem? "))
print(nome, " tem ", idade, " anos.")

# Número real.
altura = float(input("Qual é a sua altura em metros? "))
print(nome, " tem ", altura, " m.")

# Valor lógico.
gosta_de_programar = bool(input("Você gosta de programar? Caso não goste, deixe a resposta vazia. "))
print(nome, " gosta de programar? ", gosta_de_programar)
print("Olá, meu nome é Franco!")

-- Cadeia de caracteres.
print("Qual é o seu nome?")
local nome = io.read("*line")
print("Olá, ", nome, "!")

-- Número inteiro.
print("Quantos anos você tem?")
local idade = io.read("*number", "*line")
print(nome, " tem ", idade, " anos.")

-- Número real.
print("Qual é a sua altura em metros?")
local altura = io.read("*number", "*line")
print(nome, " tem ",altura, " m.")

-- Valor lógico.
print("Você gosta de programar? Caso não goste, deixe a resposta vazia.")
local gosta_de_programar = io.read("*line") ~= ""
print(nome, " gosta de programar? ", gosta_de_programar)

Dos blocos anteriores, pode-se observar que Lua faz a conversão apropriada para o tipo usando um parâmetro. Nas demais linguagens, a conversão deve ser feita manualmente.

Escrita com Concatenação

Nas saídas de algumas linguagens, o espaçamento entre valores pode estar irregular. Para uniformizá-lo, pode se criar uma cadeia de caracteres com o texto a ser escrito.

JavaScript converte variáveis de tipos primitivos para cadeias de caracteres automaticamente. Lua também, exceto para valores lógicos. Em Python, a conversão deve ser feita manualmente.

console.log("Olá, meu nome é Franco!")

// Cadeia de caracteres.
let nome = prompt("Qual é o seu nome?")
console.log("Olá, " + nome + "!")

// Número inteiro.
let idade = parseInt(prompt("Quantos anos você tem?"))
console.log(nome + " tem " + idade + " anos.")

// Número real.
let altura = parseFloat(prompt("Qual é a sua altura em metros?"))
console.log(nome, " tem " + altura + " m.")

// Valor lógico.
let gosta_de_programar = Boolean(prompt("Você gosta de programar? Caso não goste, deixe a resposta vazia."))
console.log(nome + " gosta de programar? " + gosta_de_programar)
console.log("Olá, meu nome é Franco!")

// Cadeia de caracteres.
console.log("Qual é o seu nome?")
let nome = readline()
console.log("Olá + " + nome, "!")

// Número inteiro.
console.log("Quantos anos você tem?")
let idade = parseInt(readline())
console.log(nome + " tem " + idade + " anos.")

// Número real.
console.log("Qual é a sua altura em metros?")
let altura = parseFloat(readline())
console.log(nome + " tem " + altura + " m.")

// Valor lógico.
console.log("Você gosta de programar? Caso não goste, deixe a resposta vazia.")
let gosta_de_programar = Boolean(readline())
console.log(nome + " gosta de programar? " + gosta_de_programar)
print("Olá, meu nome é Franco!")

# Cadeia de caracteres.
nome = input("Qual é o seu nome? ")
print("Olá, " + nome + "!")

# Número inteiro.
idade = int(input("Quantos anos você tem? "))
print(nome + " tem " + str(idade) + " anos.")

# Número real.
altura = float(input("Qual é a sua altura em metros? "))
print(nome + " tem " + str(altura) + " m.")

# Valor lógico.
gosta_de_programar = bool(input("Você gosta de programar? Caso não goste, deixe a resposta vazia. "))
print(nome + " gosta de programar? " + str(gosta_de_programar))
print("Olá, meu nome é Franco!")

-- Cadeia de caracteres.
print("Qual é o seu nome?")
local nome = io.read("*line")
print("Olá, " .. nome .. "!")

-- Número inteiro.
print("Quantos anos você tem?")
local idade = io.read("*number", "*line")
print(nome .. " tem " .. idade .. " anos.")

-- Número real.
print("Qual é a sua altura em metros?")
local altura = io.read("*number", "*line")
print(nome .. " tem ".. altura .. " m.")

-- Valor lógico.
print("Você gosta de programar? Caso não goste, deixe a resposta vazia.")
local gosta_de_programar = io.read("*line") ~= ""
print(nome .. " gosta de programar? " .. tostring(gosta_de_programar))

A leitura de valores em terminal é simples. Os exemplos anteriores são suficientes para atividades de aprendizado.

Leitura de Cadeia de Caracteres Pode Falhar em Lua (ou Outras Linguagens de Programação, como C)

Contudo, existe um caso que merece atenção. Em Lua (e em algumas outras linguagens de programação, como C), uma tentativa de leitura de cadeias de caracteres após uma leitura de um número pode falhar.

print("i = ")
local i = io.read("*number")
print("i = ", i)

print("s = ")
local s = io.read("*line")
print("s = ", s)

No exemplo anterior, a leitura de s não será solicitada. s receberá um valor vazio. Algumas implementações de leitura em console para números ignoram certos valores, como quebras de linhas fornecidas ao se pressionar enter para confirmar a entrada de um valor. O valor ignorado persiste na entrada para próximas leituras (em uma abstração chamada stdin). Contudo, uma quebra de linha ou uma cadeia de caracteres vazia são cadeias de caracteres válidas. Conseqüentemente, a posterior tentativa de leitura obterá esse valor como entrada.

Para contornar o problema, pode-se repetir a leitura da cadeia de caracteres. A primeira leitura obterá o caractere ignorado; a segunda efetivamente solicitará a entrada de um valor.

print("i = ")
local i = io.read("*number")
print("i = ", i)

print("s = ")
local s = io.read("*line")
s = io.read("*line")
print("s = ", s)

Também é possível solicitar ignorar o valor sobressalente durante a leitura do número. Essa foi a abordagem utilizada no exemplo introdutório. Se você achou estranho o uso de dois parâmetros, agora entende a razão para o uso.

print("i = ")
local i = io.read("*number", "*line")
print("i = ", i)

print("s = ")
local s = io.read("*line")
print("s = ", s)

Ambas as abordagens são válidas; você pode optar pela que preferir.

GDScript

Para entrada em GDScript, é necessário criar uma interface gráfica de usuário com alguns elementos para leitura e processamento da entrada. Como a criação de programas com interface gráfica de usuário requer conceitos adicionais, ela não será detalhada nesta página. A forma de manipulação de dados é similar à feita para o console, mas o código necessário é um pouco mais complexo.

Caso tenha curiosidade (ou queira criar um programa simples com interface gráfica), você pode encontrar um exemplo na página sobre configuração de ambiente de desenvolvimento para GDScript (Godot). A descrição de como proceder estará no item sobre entrada.

Caso você opte por realizar os passos, o resultado será um programa com um formulário para leitura de dados.

Novos Itens para Seu Inventário

Ferramentas:

  • Code as data.

Habilidades:

  • Solicitação de entrada de dados externos usando console;
  • Armazenamento de dados fornecidos como entradas em variáveis.

Conceitos:

  • Dados externos;
  • Arquitetura de von Neumann;
  • Entrada;
  • Hard coded;
  • Validação.

Recursos de programação:

  • Entrada de dados.

Pratique

Se você fez a prática anterior proposta em Variáveis e Constantes, você pode continuar a sofisticar seus programas por meio da leitura de dados para cada variável criada.

Com variáveis e entrada de dados, é possível começar a escrever seus primeiros programas personalizáveis. Por exemplo, você pode criar programas que gerem mensagens como de cartões.

Feliz aniversário, {NOME}!
Parabéns pelos seus {IDADE} anos!
Que você tenha {DESEJO_1}, {DESEJO_2} e {DESEJO_3}!

Você também pode criar exercícios de preenchimento de lacunas (embora ainda não possa corrigi-los automaticamente).

Eu gosto de {PRIMEIRO_INTERESSE}.
Também gosto de {SEGUNDO_INTERESSE}.
Pensando bem, prefiro {SEGUNDO_INTERESSE} a {PRIMEIRO_INTERESSE}.

Que tal um modelo para preparo de alimentos?

Ingredientes:

- {INGREDIENTE_1};
- {INGREDIENTE_2}.

Modo de Preparo:

Adicione {INGREDIENTE_1} e {INGREDIENTE_2} em um {RECIPIENTE}.
Leve a um forno pré-aquecido à {TEMPERATURA}°C.
Após {TEMPO} minutos, a receita estará pronta.

Talvez uma ficha para exercícios?

Treino de {DIA}/{MES}/{ANO}

{OBJETIVO}

1. {EXERCICIO_1}: {NUMERO_SERIES_1} x {NUMERO_REPETICOES_1}.
   - Notas: {NOTAS_1}
2. {EXERCICIO_2}: {NUMERO_SERIES_2} x {NUMERO_REPETICOES_2}.
   - Notas: {NOTAS_2}
3. {EXERCICIO_3}: {NUMERO_SERIES_3} x {NUMERO_REPETICOES_3}.
   - Notas: {NOTAS_3}

Com variáveis e entrada, você poderá executar cada programa várias vezes para preenchê-los de forma diferente. Aliás, você consegue observar a semelhança com um formulários em páginas de Internet?

Nome: {NOME}

Endereço:

Rua: {RUA}
Número: {NUMERO}
Bairro: {BAIRRO}
Cidade: {CIDADE}
Estado: {ESTADO}
CEP: {CEP}

+--------+
| Enviar |
+--------+

Comece a prestar atenção nos sistemas que você usa. Identifique entradas e imagine como os dados lidos são processados. Afinal, você está a um passo de começar a processar dados em seus próprios programas.

Próximos Passos

Sistemas tem entrada, processamento, e saída. Agora você conhece o início e o fim. É hora de aprender a implementar o meio, para poder processar dados de entrada em repostas como saídas.

  1. Introdução;
  2. Ponto de entrada e estrutura de programa;
  3. Saída (para console ou terminal);
  4. Tipos de dados;
  5. Variáveis e constantes;
  6. Entrada (para console ou terminal);
  7. Aritmética e Matemática básica;
  8. Operações relacionais e comparações;
  9. Operações lógicas e Álgebra Booleana;
  10. Estruturas de condição (ou condicionais ou de seleção);
  11. Subrotinas: funções e procedimentos;
  12. Estruturas de repetição (ou laços ou loops);
  13. Vetores (arrays), cadeias de caracteres (strings), coleções (collections) e estruturas de dados;
  14. Registros (structs ou records);
  15. Arquivos e serialização (serialization ou marshalling);
  16. Bibliotecas;
  17. Entrada em linha de comando;
  18. Operações bit-a-bit (bitwise operations);
  19. Testes e depuração.
  • Informática
  • Programação
  • Iniciante
  • Pensamento Computacional
  • Aprenda a Programar
  • Python
  • Lua
  • Javascript
  • Godot
  • Gdscript
  • Scratch
  • Flowgorithm