O que iremos cobrir? |
---|
Como é que o utilizador pode introduzir data, e como ler essa data uma vez obtida? Irei mostrar como ler, tanto data numérica, como data de string. Iremos também dar uma vista de olhos em como transformar esse input do utilizador em parte activa do código. |
Até agora todos os nossos programas só tem lidado com data estática. Ou seja se tudo fosse assim nós poderíamos simplesmente verificar qual a data que tínhamos disponível depois escrever um programa se dentro das conformidade que essa data nos providencia. Por outras palavras como sabemos exactamente qual a data que temos, saberíamos exactamente como escrever um programa para melhor a tratar, portanto esse programas seria perfeito, e nunca mais haveria erros nem problemas. Mas todos sabemos que na realidade as coisas não são bem assim. A maioria dos programas espera em ser 'guiado' pelo utilizador. mesmo que seja para as tarefas mais básicas, como abrir um ficheiro, ou que ficheiro editar, etc.. Outros programas, pedem direcções ao utilizador em alturas criticas. Agora iremos analisar como tudo isso acontece.
Como podes ver raw_input simplesmente dispõem a prompt que lhe é fornecida e 'captura' a resposta do utilizador para depois imprimi-la também. Então o que podemos fazer é atribuir-lhe uma variável:
resp = raw_input("Como te chamas? ") print "Olá, %s, prazer em conhecer-te" % resp
raw_input tem um primo que se chama input. A diferença entre os dois é que, enquanto o raw_input pega no que foi escrito pelo utilizador e apresenta-o como sendo uma string, o input pega no que foi escrito pelo utilizador e tenta formar um número. Exemplificando, o utilizador digita '1', '2', '3', o que input faz é ler esses 3 caracteres e tenta converte-los num número, que neste caso seria 123.
Agora vamos aproveitar enquanto isto ainda esta fresco e vamos utiliza-la na nossa velha amiga tabuada de multiplicação:
multiplicador = input("Qual é a tabuada que gostarias de ver") for j in range(1,13): print "%d x %d = %d" % (j, multiplicador, j * multiplicador)
Para obter o mesmo efeito no BASIC basta utilizar o comando INPUT:
INPUT "Qual a tabuada de multiplicação que gostarias de ver, escolhe um número: ";M FOR J = 1 to 12 PRINT M "x" J "= " M*J NEXT J
Como podes ver é muito parecido com o Python, exceptuando a colocação da variável no final. Também há que notar que o BASIC usa o INPUT tanto para números como para strings. Existem ainda mais algumas coisa capacidades extras do BASIC para este comando. Em caso que estejas interessado, sempre podes verificar a documentação da tua versão.
O Tcl tem o seu próprio mecanismo de obter input, esse mecanismo é baseado a volta de ficheiros (que poderão incluir os "ficheiros" standart de input e output.) e um comando chamado gets. O que este comando faz é simplesmente ler o input a partir de um ficheiro previamente especificado, que no nosso caso seria stdin. a versão do nosso programa em Tcl seria algo como isto.:
puts -nonewline stdout "Qual é a tabuada de multiplicação? " flush stdout set mult [gets stdin] for {set j 1} {$j <= 12} {incr j} { puts [format " %d x %d = %d" $j $mult [expr $mult * $j] ] }
A opção -nonewline no comando puts serve simplesmente para impedir o cursor de mover para a linha seguinte depois depois pôr a pronta criada por nós. flush força o stdout a imprimir o seu conteúdo imediatamente, por forma assegurar que o mesmo aprece no ecrã. A parte do loop for, é praticamente idêntico ao que vimos na secção anterior.
Um outro tipo de input é através da linha de comandos. Por exemplo quando queres correr o teu processador de texto com
o seguinte:
EDIT qualquercoisa.txt
Como é que o editor de texto lê o nome do ficheiro?
Na maioria das linguagens o sistema operativo providencia um array ou uma lista de strings que contêm as palavras de comando. Então se o primeiro elemento é o próprio comando, o segundo elemento será portanto o primeiro argumento, etc. Normalmente costuma existir uma variável mágica que contém o número de elementos que estão nessa lista.
No Python essa lista esta dentro do módulo sys, e dá-se pelo nome de argv (argument values). Nós podemos extrair os elementos dessa lista ou através da indexação ou por uma iteração. Experimenta:
import sys for item in sys.argv: print item print "o primeiro argumento foi:", sys.argv[1]
O Tcl tem um esquema parecido com o do Python, mas só que com 3 varáveis: argv0 - a palavra-chave de comando, argv - uma string contendo o resto da linha de comando argc - o número de palavras que estão no argv
Um exemplo de como aceder a linha de comandos do Tcl é:
puts "o comando foi: $argv0" puts "O primeiro argumento foi: [lindex $argv 0]"
Enquanto no Tcl não existe nenhum equivalente para o comando Input, como no Python e no BASIC, agora é a vez do BASIC não ter um equivalente para o argv. Embora seja possível usar o sistema operativo para exercer as mesmas funções de acesso. Mas isso é demasiado avançado para este curso, Contudo eu recomendo que em BASIC uses a prompt de uma forma interactiva com o utilizador.
E é tudo no que diz respeito ao input, pelo menos neste curso. Eu sei que isto é muito básico , mas sempre te irá permitir escrever programas muito úteis com isso. Nos primórdios da programação no Unix isto era o único tipo de interacção existente. Portanto dá-te por contente. Tanto o Python como o Tcl e o BASIC (na encarnação como Visual BASIC) permitem-te escrever programas com GUI muito sofisticados com janelas, caixas de diálogo, etc.... mas isso já é muito avançado para este curso. Por falar nisso no trabalho final, mais adiante irás encontrar um exemplo onde se irá requerer um input via GUI, isto no Python, mas não irá haver grandes explicações acerca do funcionamento do mesmo. Existem muitos Web sites que te podem providenciar esse tipo de conhecimento. Mas recomendo que os visites apenas quando tiveras um bom conhecimento acerca do essencial e básico, irás encontrar alguns deles na página das referências.
Pontos a lembrar |
---|
|
Anterior  Próxima  Índice
Em caso que tenhas alguma dúvida ou queiras comentar esta página
envia-me um e-mail para:
babyboy@oninet.pt