Instituto Federal de Mato Grosso do SulMarço/2024

IFMS marca

04. Inputs e Outputs

Construção de Algoritmos

Prof. Rodrigo Duran

Nesta aula vamos:


  • Aprender sobre entradas e saídas

    Hoje nós vamos aprender como personalizar nossos programas usando funções de entrada e saída.

Relembrando...


meuValor = 100
frase = "Metade de " + str(meuValor) + "é " + str(meuValor/2)
Metade de 100 é 50

Apesar dos nossos programas não serem mais concretos, eles tão pouco eram customizáveis.

Para alterarmos o valor da nossa entrada, era necessário alterar o código-fonte e alterar o valor armazenado nas variáveis que serviam como entrada do nosso programa.

Logo, apesar do modelo ser potencialmente generalizável, o nosso programa ainda não era generalizado pois não calculava o mesmo processo para qualquer entrada, fornecendo saídas diferentes.

Entradas


As interfaces de entrada nos permitem "dialogar" com o usuário para que ele possa alterar os parâmetros da computação e generalizar o nosso modelo.

Existem diversos métodos de entrada, mas os mais comuns com os quais iremos trabalhar são o teclado e o mouse.

  • O teclado funcionará como método padrão de entrada de dados. Exemplo: entrada de nome, email, telefone, etc em um formulário. Os dados serão "lidos" ao coletar os dados inseridos no teclado.
  • O mouse funcionará como método de entrada para dizer quando iremos enviar os dados para o programa. Pense no formulário. Nós sinalizamos ao programa que terminamos de preencher os dados ao clicar em um botão "enviar", por exemplo.

A forma mais simples de entrada de dados é através do console utilizando o comando input()

Input


O comando para ler um dado, de qualquer tipo, do teclado do usuário é:

entrada = input("Digite um valor")
O valor que o usuário digita, ao apertar ENTER, é armazenado na variável entrada.
O comando input aceita um parâmetro, o texto que deve aparecer para o usuário no console.
Todos os valores de entrada devem ser amazenados em uma variável.
Imagine que o usuário digitou 1 0 e depois apertou a tecla ENTER
print(entrada)
10

O input permite que os valores das variáveis sejam inseridos durante a execução do programa.

Como temos um modelo genérico, utilizando variáveis, e agora os valores podem ser alterados durante a execução isso nos permite criar uma solução de um problema para qualquer computação (Entrada -> Processo -> Saída).

meuValor = input("Digite o valor")
frase = "A metade do valor " + meuValor + " é " + str(float(meuValor)/2)
print(frase)

O input não é a única forma de entrada de um programa. No decorrer do curso vamos aprender outras (arquivos, dados da Internet, etc.)

Uma forma muito comum de entrada é utilizar uma Graphical User Interface (GUI) com botões, inputs, labels, cores e imagens.

É possível utilizar bibliotecas como a Tkinter ou a PySimpleGUI para criar janelas com mídia rica e GUI para entrada de dados

import PySimpleGUI as sg
sg.theme("LightBlue1")

layout = [[sg.Text("Entre com a temperatura em C")], [sg.InputText()],
 [sg.Button("Calcular"), sg.Cancel()],
 [sg.Text("Temperatura em F: ", key="-TEMP-")]]
window = sg.Window("Conversor de Temperatura", layout)

while True:
 event, values = window.read()

if event == sg.WIN_CLOSED or event == "Quit": break
if event == "Calcular":
 conversao = (float(values[0]) * 9/5) + 32
 window["-TEMP-"].update("Temperatura em F: " + str(conversao))

window.close()

Saídas


Também existem dois métodos para apresentar saídas no Python: através do console ou através de uma GUI


Console

Como já conhecemos, o print pode apresentar qualquer expressão no console da REPL.

tempCelsius = float(input("Digite a temperatura em Celsius"))
tempF = (tempCelsius * 9/5) + 32
print(tempF)

É muito usual que tenhamos que inserir valores contidos em variáveis "dentro" de uma string para formatar uma saída.

Podemos fazer isso utilizando o operador %caractere de conversão

popNA = 45000
popIV = 40000
total = popNA + popIV
print("Nova Andradina tem a população de %i e Ivinhema %i, total de %i", (popNA, popIV, total))
Nova Andradina tem a população de 45000, Ivinhema de 40000 e total de 85000
  • %i: substitui por valores Inteiros
  • %f: substitui por valores Reais
  • %s: substitui por valores String

Saídas em uma GUI

O resultado de uma computação pode ser apresentado de várias formas: um label em uma janela, uma imagem, um gráfico, etc.

Como apresentar uma saída utilizando um elemento de texto HTML:

No exemplo anterior utilizando o PySimpleGUI, a saída foi feita ao atualizar o valor armazenado no texto de um label:

import PySimpleGUI as sg
sg.theme("LightBlue1")

layout = [[sg.Text("Entre com a temperatura em C")], [sg.InputText()],
 [sg.Button("Calcular"), sg.Cancel()],
 [sg.Text("Temperatura em F: ", key="-TEMP-")]]
window = sg.Window("Conversor de Temperatura", layout)

while True:
 event, values = window.read()

if event == sg.WIN_CLOSED or event == "Quit": break
if event == "Calcular":
 conversao = (float(values[0]) * 9/5) + 32
 window["-TEMP-"].update("Temperatura em F: " + str(conversao))

window.close()

Ou utilizando imagens...