Olá, caro(a) aluno(a), vamos continuar os nossos estudos sobre pseudocódigo? Nesta lição, estudaremos alguns conceitos importantes no mundo da programação que são as instruções de entrada/saída e variáveis. É por meio deles que os nossos algoritmos interagem com o usuário dos sistemas que criaremos.
A partir das instruções de entrada e saída, definimos para o algoritmo quando ele deve pedir alguma informação para o usuário e também quando deve exibir estas informações. E essas informações que serão lidas e exibidas precisam ser armazenadas em algum lugar, é aqui que entra o uso das variáveis.
Até agora, os algoritmos que criamos não realizam nenhum tipo de interação com o usuário. Porém, no mundo real, grande parte dos sistemas criados tem como objetivo realizar algum tipo de interação com os usuários. Na computação, existe uma área que estuda justamente a interação humano-computador, que aborda como o usuário utilizará o sistema.
Existem dois tipos de interação que nós como usuários podemos realizar quando utilizamos um sistema seja ela um site, um aplicativo, seja um jogo etc. Podemos realizar a entrada de dados, por exemplo quando estamos em uma rede social e curtimos e compartilhamos uma foto. E também podemos visualizar a saída de dados que pode ser exemplificado quando visualizamos as curtidas e os comentários em nossas fotos.
Dessa forma, você como desenvolvedor(a) de software deve sempre pensar em qual é a melhor forma de solicitar e apresentar os dados que serão processados nos sistemas que estiver criando.
Eu não sei você, mas eu gosto muito de jogos, sempre que tenho um tempo livre chamo os meus amigos para jogar comigo algum jogo online, seja no computador seja no celular. E jogos são um bom exemplo da utilização de instruções de entrada/saída e variáveis. Imagine um jogo qualquer de luta. Você consegue pensar o que seria uma entrada em um jogo desse gênero?
No jogo de luta, precisamos fazer os comandos no controle para o nosso personagem fazer os golpes, certo? E isso é um comando de entrada, o algoritmo do jogo fica a todo momento lendo os botões que você aperta no teclado/controle decodifica esta instrução e realiza o movimento. Outro exemplo de entrada de dados que realizamos quando estamos jogando online é a interação com o chat seja de voz seja de texto, tudo que nós digitamos ou falamos no microfone são dados de entrada.
Agora que já descobrimos os comandos de entrada, o que seriam os dados de saída? São todas as respostas que o jogo entrega após processar os dados de entrada. Quando realizamos um comando no controle para realizar um golpe, e o personagem em nossa tela responde ao comando, temos uma saída. Todos os movimentos realizados pelos personagens na tela são o resultado do processamento das entradas e, consequentemente, a saída. Também podemos ver a saída de dados quando aparece alguma coisa escrita em nossa tela ou mesmo os sons do jogo, quando o personagem, ao sofrer um dano, ele fala ou grita alguma coisa, e isso é também um dado de saída.
Por fim, podemos também pensar no uso das variáveis nos jogos. Continuando com a ideia de um jogo de luta, sempre que iniciamos um combate, temos a barra de vida, e quando o nosso personagem leva um dano, a vida diminui. A quantidade de vida que o nosso personagem tem é armazenada em uma variável, assim como o dano que cada golpe causa. Sempre que estamos jogando e tomamos um dano, o algoritmo diminui da nossa vida o valor do dano do golpe sofrido e, então, atualiza o quanto de vida temos na variável.
Vimos no estudo de caso como é importante a interação dos usuários com os algoritmos, agora, veremos como podemos fazer isso em pseudocódigo. Um algoritmo pode receber uma entrada de dados por meio de uma instrução de leitura, e este tipo de instrução informa o computador que ele deve aguardar o usuário digitar alguma coisa no teclado para poder continuar a execução. Da mesma forma, temos as instruções de saída que indicam para o algoritmo que o dado deve ser exibido na tela do usuário para ele ter ciência de que o processamento foi realizado.
Cada linguagem de programação tem suas instruções específicas para entrada e saída de dados. Em “portugol” que é a linguagem que estamos aprendendo, temos duas instruções genéricas para realizar essa tarefa, que são:
LEIA() - Como o próprio nome indica, ele lerá o que o usuário digitar. Após o verbo leia, temos a abertura dos parênteses, entre os parênteses, indicaremos em qual variável armazenaremos o valor que foi lido.
ESCREVA() - Esta instrução utilizamos para indicar para a máquina que ela deve escrever na tela alguma informação. A informação que será exibida na tela deve ser escrita dentro dos parênteses.
Por exemplo, observe o algoritmo a seguir:
VARIÁVEIS:
nome: caractere
INÍCIO
ESCREVA (“Olá, usuário! Digite o seu nome”)
LEIA (nome)
ESCREVA (“Olá, mundo, seja bem-vindo “, nome)
FIM
Vamos analisar linha a linha:
Linha 1 - Declaração do bloco de variáveis.
Linha 2 - Declaração de uma variável denominada “nome” do tipo caractere. Variáveis do tipo caractere podem armazenar letras, palavras, frases ou qualquer outro tipo de caractere alfanumérico.
Linha 3 - Início do bloco principal do algoritmo.
Linha 4 - Utilizamos a instrução ESCREVA para indicar que queremos exibir uma mensagem na tela do usuário. Após o verbo, dentro dos parênteses escrevemos a frase que queremos exibir na tela entre aspas.
Linha 5 - Utilizamos a instrução LEIA indicando para o algoritmo que queremos ler um valor que será inserido pelo usuário. Entre os parênteses, colocamos a variável onde será armazenada a informação digitada pelo usuário, no caso a variável nome.
Linha 6 - Para finalizar o algoritmo, temos a exibição de uma mensagem juntamente com o nome que a pessoa digitou. Nesse caso, utilizamos o verbo ESCREVA com uma mensagem entre aspas, e após as aspas é chamada a variável nome. Ao executar o algoritmo o computador exibirá a mensagem e o valor que está armazenado dentro da variável. Quando você quer exibir um valor armazenado em uma variável, basta chamar ela dentro da instrução ESCREVA fora das aspas.
Linha 7 - Fim do algoritmo.
Note que, ao escrever pseudocódigo, assumimos que a ordem de execução das instruções é de cima para baixo. Conforme descreve Medina (2006), existem diversos paradigmas de programação que podem não seguir esta estrutura de programação imperativa, porém, neste momento, considere que todos algoritmos devem ser interpretados da primeira instrução até a última.
ATENÇÃO: Cuidado com as aspas, se você escrever o nome de uma variável entre aspas, o algoritmo apresentará o nome da variável, e não o conteúdo armazenado nela.
Observe:
ESCREVA(nome) - Esta instrução escreverá o conteúdo armazenado na variável.
ESCREVA(“nome”) - Neste caso, escreverá, literalmente, nome.
Agora que já conhecemos os nossos comandos de entrada e saída de dados, entenderemos como funcionam as variáveis.
Variáveis são espaços de memória onde armazenamos dados. Você pode imaginar uma variável como uma caixa que guarda valores, mas nessa caixa você só pode guardar um valor por vez e pode mudar esse valor quantas vezes quiser. Em grande parte das linguagens de programação, quando declaramos uma variável, devemos declarar o tipo de dado que essa variável armazenará.
Figura 1 - Variáveis / Fonte: o autor.
#PraCegoVer: a figura ilustra três caixas dispostas na horizontal, representando as variáveis como caixas. Abaixo da primeira caixa, contém a descrição nome:caractere indicando o nome e tipo da variável, logo acima, um quadrado azul contém o texto “luiz” que indica o valor armazenado dentro da caixa. Ao lado, outra caixa com a inscrição num: inteiro, logo abaixo dela, acima, um quadrado rosa com o valor 13. Por fim, a terceira caixa contém a inscrição lâmpada: “lógico” abaixo dela e, em cima, um quadrado amarelo com o texto “falso”.
Atenção: Uma variável pode guardar apenas um valor por vez, sendo assim, sempre que um novo valor é atribuído, o valor anterior é perdido.
Uma variável é composta por três elementos, o nome que deve ser único, pois é a forma que referenciaremos a variável; o tipo que define o tipo de valor que armazenaremos, e o conteúdo que é o dado que está armazenado.
O computador armazena os dados de acordo com o tipo de informação que ele representa, e são esses tipos que utilizamos nas variáveis. Os tipos de dados que temos em “portugol” são:
Inteiro - Números pertencentes ao conjunto de números inteiros, isso é, que não possuem porção fracionária.
Sintaxe:
número: inteiro (Declaração da variável)
número <- 5 (Atribuição de valor a variável)
Real - Números pertencentes ao conjunto dos reais, isso é, números que possuem porção fracionária. Para representar números fracionários em algoritmos, utilizamos pontos(.) em vez de vírgula (.).
Sintaxe:
número: real (Declaração da variável)
número <- 5.2 (Atribuição de valor a variável)
Caractere - Conjunto de caracteres alfanuméricos. Neste tipo de variável, é possível armazenar números, letras e caracteres especiais. Neste caso, é sempre necessário utilizar aspas duplas para indicar o início e o fim da cadeia de caracteres.
Sintaxe:
nome: caractere (Declaração da variável)
nome <- “Luiz” (Atribuição de valor a variável)
Lógico - Esse tipo é utilizado para representar valores booleanos(lógicos). Esse tipo só pode receber o valor verdadeiro ou falso.
Sintaxe:
lâmpada: lógico (Declaração da variável)
lâmpada <- verdadeiro (Atribuição de valor)
Como citado anteriormente, os valores das variáveis podem ser alterados a qualquer momento durante a execução do algoritmo, por exemplo:
VARIÁVEIS:
num : inteiro
INÍCIO
num <- 0
num <- 2
FIM
No algoritmo apresentado, temos a declaração de uma variável num do tipo inteiro na linha 2. Na linha 4, atribuímos o valor 0 à variável e, logo após, na linha 5, alteramos o valor da variável para 2. Sendo assim, o valor armazenado na variável no final da execução do algoritmo é 2.
Também é possível declarar valores que não podem ser alterados durante a execução do algoritmo, neste caso, chamados de constantes. Um dado é uma constante quando o seu valor não é alterado durante a execução da aplicação. Por exemplo, se faremos um algoritmo que calcula a área de um círculo, precisamos armazenar o valor de pi em uma variável, e esse valor não pode ser mudado, logo, ele é uma constante.
Agora que já conhecemos os tipos de variáveis que podemos criar e qual a diferença entre uma variável é uma constante, temos que aprender algumas regras que devem ser seguidas quando nomearmos as variáveis. Para criar uma variável, obrigatoriamente, devemos associar um nome no qual a variável será conhecida no algoritmo.
Em “portugol”, devemos seguir as seguintes regras para nomeação das variáveis:
O nome deve sempre iniciar com uma letra ou com o símbolo de sublinhado(_).
Nomes das variáveis não podem ultrapassar 127 caracteres.
Não pode conter espaço ou caracteres especiais, com exceção do ‘_’.
Não é permitido utilizar palavras reservadas como nome de variáveis.
Nas linguagens de programação, temos as chamadas palavras reservadas, que são palavras referentes a instruções da linguagem, como: LEIA() e ESCREVA(). Palavras-chave ou reservadas podem ser comandos ou parâmetros. Cada linguagem de programação tem suas próprias palavras-chave e não podem ser usadas como nomes de variáveis (ADITYA, 2017).
Exemplos de nomes válidos: a, nome, pessoa, numero, num_clientes, _valores, tipo_cadastromarcaCarro.
Exemplo de nomes inválidos: 1, 23nome, *tipo, inicio, @&, /teste.
Note: os nomes das variáveis devem ter relação com o tipo de dado que ele receberá. Por exemplo, se temos uma variável que receberá a nota de uma prova, podemos chama-la de: nota, notaAvaliação, nota_Prova.
Agora que você já conhece todos estes conceitos, vou lhe propor um desafio. Escolha um aplicativo, um jogo ou um sistema que você costuma utilizar e tente identificar quais são as entradas de dados que você realiza ao utilizá-lo, como também quais são as suas saídas. Além disso, tente identificar quais são os tipos de variáveis necessárias para armazenar esses dados.
Em um jogo, por exemplo, tente identificar os diferentes aspectos que podem ser armazenados em variáveis, como a vida, o dano das skills, os itens etc.
ADITYA, B. Entendendo Algoritmos: Um guia ilustrado para programadores e outros curiosos. São Paulo: Novatec Editora, 2017.
MEDINA, M.; FERTING, C. Algoritmos e programação: teoria e prática. São Paulo: Novatec Editora, 2006.