Instituto Federal de Mato Grosso do SulMarço/2024
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)
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")
input aceita um parâmetro, o texto que deve aparecer para o usuário no console.1 0 e depois apertou a tecla ENTERprint(entrada)
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))
- %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()
