-
Title:
02-11 Using Procedures
-
Description:
02-11 Usando Procedimentos
-
Infelizmente, ainda não estamos prontos para ficar completamente felizes.
-
Sebastian me disse que ainda levará alguns anos até que eu possa ter
-
meu próprio carro autônomo. Mas o maior problema é que ainda não falamos sobre
-
como usar um procedimento.
-
Tudo o que fizemos foi definir um. Até que possamos realmente usá-los,
-
não temos uma boa razão para ficar muito felizes.
-
Vamos aprender como usá-los a seguir, e então poderemos ficar mais felizes.
-
Agora, vamos aprender como usar um procedimento.
-
A maneira como usamos procedimento é: precisamos do nome do procedimento, seguido de
-
( seguido de uma lista de entradas e ).
-
O número de entradas pode ser qualquer, mas deve casar com o número de entradas
-
que o procedimento espera.
-
Essas entradas são algumas vezes chamadas de operandos.
-
E algumas vezes chamadas de argumentos.
-
Não vamos discutir sobre isso.
-
Vamos simplesmente chamá-las de entradas.
-
Você de fato já fez algo bem similar a isso.
-
Voltando na Unidade 1, você aprendeu a usar find sobre strings.
-
Com find, você pode passar uma ou duas entradas.
-
A primeira entrada era uma string:
-
a string pela qual você estava procurando -- essa era a primeira entrada;
-
e a segunda entrada poderia ser um número: a posição onde você começa
-
a pesquisar por essa string.
-
Nós usamos find de várias maneiras na Unidade 1, e você também usou
-
nos exercícios da Unidade 1.
-
find é um pouco diferente dos procedimentos que você vai definir aqui.
-
Em primeir lugar, ele é pré-definido.
-
A outra coisa que é diferente é que, ao invés de ter apenas find, nós temos
-
outra entrada que está aqui.
-
Temos o string no qual vamos fazer a pesquisa -- digamos que ele fosse
-
a variável page -- isso é, de fato, uma outra entrada para find.
-
Mais adiante vamos falar sobre porque isso é feito de maneira diferente, mas é
-
bastante semelhante a chamar um procedimento em que uma das entradas está aqui,
-
e as outras duas estão aqui.
-
É um pouco diferente disso, e não vamos ver isso neste curso, mas
-
em um curso posterior você vai aprender mais sobre o que isso significa.
-
Para todos os procedimentos que você vai definir aqui, não haverá nenhum
-
objecto sobre o qual eles serão invocados.
-
Simplesmente teremos o procedimento a chamar e os argumentos, ou operandos, ou entradas --
-
como você queira chamá-los -- que serão passados.
-
Vamos ver como isso funciona, com um procedimento simples.
-
Eu vou definir o procedimento rest_of_string, que vai ter
-
um parâmetro s -- isso significa que ele tem uma entrada, e vamos usar o nome
-
s para nos referirmos ao valor dessa entrada.
-
Ele vai retornar a string que vai desde o caractere na posição 1 até o final da string.
-
Vamos usar o operador de indexação de string: return s[1:].
-
Isso avalia para a string obtida removendo-se a primeira letra; portanto, toda a string a partir
-
da posição 1 até o final da string.
-
É isso que é retornado.
-
Então, a saída de rest_of_string é esta nova string, que começa da
-
segunda letra da string de entrada.
-
Aqui está um exemplo de como usar este procedimento.
-
Podemos chamá-lo diretamente.
-
Podemos dizer print rest_of_string --
-
este é o nosso procedimento --
-
e agora temos ( e vamos passar uma entrada.
-
rest_of_string tem 1 parâmentro e, portanto, precisamos passar de 1 entrada
-
para ele, que deve ser uma string.
-
Vamos passar a string 'audacity'.
-
O que acontece quando chamamos um procediento como esse é que a execução desvia
-
para o corpo desse procedimento.
-
Podemos pensar no que o interpretador está fazendo agora.
-
Ao invés de executar este código aqui, o interpretador desvia:
-
quando chamamos um procedimento, ele desvia para executar o código que está dentro do procedimento.
-
Ele vai atribuir aos parâmetros os valores que são passados como entrada.
-
Podemos pensar nisso como sendo uma atribuição, que diz que agora o valor de
-
s é o valor dessa entrada que está sendo passada.
-
Agora, vamos avaliar o corpo do procedimento.
-
Neste caso, existe apenas um comando -- este comando return.
-
Vamos encontrar o valor de s[1:] --
-
o resultado disso será a string 'udacity' --
-
e então chegamos ao return.
-
O que return significa é que vamos desviar de volta.
-
Vamos voltar para onde o procedimento foi chamado, mas agora realemte
-
temos um resultado.
-
Quando voltamos, o valor para o qual isso é avaliado é o valor que nós
-
retornamos.
-
Neste caso, é a string 'udacity'.
-
Então, não temos ainda nosso carro autônomo,
-
mas agora você já sabe definir e usar procedimentos.
-
Esse é um conceito realmente poderoso!
-
Tudo o que vamos fazer no resto do curso e quase tudo
-
que todo mundo faz em programação de computadores tem a ver com dedinir
-
procedimentos e usar procedimentos.
-
Agora podemos abrir um grande sorriso.
-
Podemos pensar em nossos procedimentos em termos de mapeamento de entradas em saídas.
-
Podemos pensar pensar em nós, humanos, também como mapeamentos de entradas em saídas:
-
temos entradas vindo de nossos olhos, por meio da
-
boca, e até pelo nosso nariz.
-
Eu não vou tentar desenhar nenhuma das saídas do nosso procedimento 'humano', mas como
-
procedimentos são um conceito tão importante, vamos ter vários
-
testes agora, para verificar se você entendeu bem esse conceito.