Transcrições
1. Introdução: Bem-vindo à aula de introdução
à programação Lua. O objetivo desta aula é abordar os conceitos básicos de programação, bem
como
os fundamentos do uso de Lua Se você nunca
programou antes, esta aula será
perfeita para você ter primeira ideia
de
como é a codificação e aprender todos os conceitos usados em todas as linguagens
de programação Se você já tem
alguma experiência em codificação, aprenderá o
básico de Lua muito rapidamente No entanto, os vídeos nas mesas são
imperdíveis. Isso é o que realmente separa
Lua de outras linguagens. No final da aula,
você receberá um projeto, que será uma excelente
oportunidade para você experimentar o idioma
e criar algo interessante. Começar com
Lua é muito fácil. Vou passar por cada
lição apenas em um navegador da web. Se você acessar ua.org, poderá acessar este link de
download, acessar a demonstração ao vivo e há alguns
sites diferentes aqui que você
pode escolher Cada um deles tem uma
pequena seção
de texto aqui que
permite escrever código Lua, e você pode executá-lo
diretamente no navegador. Quando estiver tudo pronto,
vá para a próxima lição, onde escreveremos nosso
primeiro trecho do código Lua.
2. Variáveis: A primeira coisa
que vamos discutir são as variáveis. Uma variável é um dado armazenado cujo
valor pode ser alterado. Para demonstrar isso, vamos colocar um em nosso código. No topo do
arquivo, vou escrever mensagem igual
e, em seguida, entre
aspas, Lua é e, em seguida, entre
aspas, Lua Nesta linha, acabamos de
criar uma variável. O nome da variável é mensagem, e o valor que essa variável contém é o texto
Lua é incrível. Agora, para ter certeza de que
fizemos isso corretamente, vamos imprimir o valor
dessa variável. Então, na versão impressa, em vez
de Hello World, vamos
passar a mensagem. Então, aquele que executamos, veremos que
o texto Lua é incrível. Ele simplesmente
pegará qualquer valor que essa variável contenha. E todos os tipos de
dados podem ser armazenados. Nesse caso, ele está armazenando texto. E na programação, um texto como
esse é chamado de string. Uma sequência de caracteres são apenas algumas palavras ou letras
entre aspas como essa Uma variável
também pode armazenar números. Por exemplo, poderíamos definir essa variável de mensagem como
cinco, apenas o número cinco. E lembre-se de que
não queremos aspas em torno de cinco porque
queremos que sejam tratadas como um
número, não como uma string E da mesma forma que antes, se estivermos imprimindo
o valor da mensagem, devemos ver cinco
aqui na saída. Pode ter praticamente
quantas variáveis quisermos. Por exemplo, vamos colocar
outra variável e eu a chamarei de frango. E vamos defini-lo igual a dez. Agora temos uma variável de
mensagem e uma variável de frango. Mas mesmo quando corrermos,
ainda haverá cinco aqui porque estamos
imprimindo uma mensagem especificamente. Vamos criar uma terceira variável e chamaremos isso de resultado. Mas desta vez, vamos fazer
algo um pouco diferente. Em vez de defini-lo
igual a um novo valor, vamos defini-lo como frango. Então, agora, o resultado da variável agora contém qualquer
valor que a galinha tenha. Como o frango tem dez, e vamos tentar imprimir o
resultado desta vez, devemos ver dez na saída porque
o resultado contém qualquer
valor que o frango tenha, e estamos imprimindo o resultado. Ao programar,
o valor armazenado em uma variável pode mudar
posteriormente no programa. Portanto, embora, por exemplo, frango comece às dez, eu poderia mais tarde alterá-lo para frango igual a
25, por exemplo E quando
imprimimos frango, devemos ver 25, porque mesmo que
comece sendo dez, essa linha muda para 25, e a imprimimos nesse ponto. Essa variável de resultado é definida como frango aqui na linha três. Nesse ponto, como
o programa é executado de cima para baixo, o
frango é definido como dez, resultado é definido como frango, que
significa que o resultado
na verdade contém dez, e podemos ver isso se
imprimirmos o resultado e executarmos. São dez. Outra forma pela
qual as variáveis podem mudar em seu programa é
realizando aritmética básica Isso significa que podemos
fazer adição, subtração,
multiplicação ou divisão
com Então, vamos
experimentar isso com o resultado. Em vez de definir o resultado
igual ao frango, vamos defini-lo
como frango mais um. Então,
como frango é igual a dez, veremos dez mais E quando
imprimirmos o resultado, veremos 11. Ele fez essa
aritmética aqui. E você pode realizar qualquer tipo. Como eu disse, você pode fazer menos
um ou vezes vezes 20. Veremos que diz 200, ou você pode fazer a divisão. Da mesma forma,
obteremos o valor decimal. Lembre-se de que essa matemática só funciona quando estamos
trabalhando com números. Se digamos que a galinha fosse uma
corda, tipo, olá. Bem, isso de repente se torna estranho porque estamos tentando pegar a string hello
e dividi-la por 20. E isso
realmente não faz sentido. Na verdade, quando você tentar
executar, veremos um erro. E quando você está programando, é muito
comum encontrar erros. É apenas uma
parte natural do aprendizado e apenas uma
parte natural da programação. Até mesmo especialistas cometem erros. E aqui podemos ver que ele está tentando
fazer aritmética Em um valor de string,
global chicken. Portanto, você não pode realizar
aritmética em strings, e é por isso que
precisaríamos alterá-la novamente para um número para que isso funcione
corretamente E mesmo depois que uma variável
já foi inicializada, ainda
podemos alterar seu valor
posteriormente com a aritmética Então, com frango, por exemplo, eu poderia dizer que frango
é igual a frango mais dez Então, aqui temos o frango
começando com um, e então essa linha
vai definir frango igual ao valor
atual do frango, que é um mais dez. Então, isso deve nos dar 11, e se
imprimirmos isso, veremos 11. Isso abrange os
conceitos básicos do uso de variáveis. Esses são a base
de qualquer programa, e ter uma boa
ideia de como eles funcionam fará de você um desenvolvedor muito
capaz.
3. Declarações condicionais: A seguir, abordaremos as declarações I, LSF e outras Esses tipos de declarações
podem ser conhecidos como declarações
condicionais
porque determinam se uma seção
do nosso código será executada em um determinado momento
com base em uma condição Vamos começar com
nosso código parecido com este onde temos uma variável de
mensagem e a estamos imprimindo. E quando corremos,
vemos apenas zero aqui. Além disso, vamos adicionar outra
variável ao programa, e vou
chamá-la de condição. Você pode chamá-lo do
que quiser. E você também pode configurá-lo
para o que quiser. Vou defini-lo como igual a 25. Vamos usar essa
variável como parte de uma
declaração condicional que mudará o valor da mensagem Vamos começar
com uma declaração if, que começa com se a
condição for maior que zero, então e depois terminar. Agora, entre
isso e esse fim, vamos colocar o que realmente acontece quando a
condição é verdadeira. Então, vou definir a
mensagem igual a um. Essa linha é lida como se o valor da condição fosse
maior que zero, então e somente quando essa
condição for verdadeira, ela executará
o que está aqui. Vai dizer que mensagem é
igual a um. Nós podemos testar isso. A mensagem começa do zero, mas se executarmos, podemos
ver que ela vai para um. Como alternativa, vamos alterar a
condição para menos 25. Agora, essa afirmação if
não será mais verdadeira porque menos 25
não é maior que zero. Como essa condição não é verdadeira, isso significa
que essa linha
aqui não será executada. Novamente, quando corremos, vemos que a
mensagem continua sendo zero. Essa linha nunca acontece. Vou adicionar outra
declaração condicional ao nosso código e será uma ideia muito
semelhante à anterior Mas desta vez, ele
verificará se a condição é menor
ou igual a zero. E aqui, definiremos a mensagem
igual a menos um. Então, a mesma ideia de antes, vai ver se a condição
é
menor ou igual a zero. E somente se for esse o caso, a mensagem
será definida como negativa? E veremos
que isso acontece. Essa linha é alcançada porque
sua condição é verdadeira. Mas, novamente, todos os nossos programas
acontecem de cima para baixo. Então, primeiro, essa linha
acontece, depois essa linha, e então ele vai
verificar essa condição, no nosso caso, essa
condição não é verdadeira. Então essa linha não acontece. Em seguida, ele passa
para essa condição
e, como essa é verdadeira, essa linha acontece. Escrever nosso código dessa forma com duas instruções if separadas, uma logo após a
outra, é aceitável, mas há uma maneira muito mais fácil
e eficiente de escrever
exatamente a mesma coisa. Então, na verdade, vou remover essa segunda condição ou
a segunda instrução if
e, em vez disso, vamos
adicionar a essa primeira. Posso inserir else e dizer que
mensagem é igual a menos um. Esse é um novo tipo de condição, em que apenas diz outra coisa. A forma como isso é lido é que
primeiro verificará
essa condição. Se a condição for
maior que zero
, essa linha acontece. Mas se essa condição não
for verdadeira, ou se a condição for menor que zero em vez
de maior que, então ela dirá outra coisa, e quando essa outra for alcançada, o que estiver entre outra coisa e o fim é o que é executado. Nesse caso, a mensagem
é igual a menos um. Essa é exatamente a mesma
funcionalidade de antes, mas é mais compacta com apenas um único conjunto de if e then else. E
podemos testar isso. Se executarmos, ainda obteremos nosso
negativo na saída. Até agora, usamos declarações
if, usamos
declarações else e, finalmente, vamos passar para
a última condicional que é uma
espécie de combinação
entre essas duas e é chamada de else if Vá em frente e coloque um aqui, e na verdade vou remover nosso outro por enquanto só
para limpá-lo um pouco. Mas em seu lugar,
vou adicionar o LI. Então você diz el if, uma palavra como essa, e
adicionaremos uma condição a isso. A condição é
menor que menos dez, então, e nesse caso, diremos que mensagem
é igual Portanto, isso é diferente de antes porque, com
nossa declaração, não
havia nenhuma condição
associada a ela. Então, o que vai acontecer é essa condição
será verificada primeiro e, se for verdade, faremos isso. Mas se essa condição não
for verdadeira, ele
passará para aqui SIF e
verificará essa condição E se esta for verdadeira, então esta linha aqui
vai funcionar. Mas se nenhuma dessas
condições for verdadeira, nenhuma dessas linhas
funcionará. Então, testando isso, já que condição é menos
25 agora, ainda
obtemos nosso negativo. Mas se mudarmos isso para, digamos menos cinco, então com menos cinco não
é maior que zero, então ele passa para o SIF, e menos cinco também não é menor
que menos dez Então, nenhuma dessas
condições foi atendida, e isso significa que a mensagem permanece em zero,
onde ela começa. Agora,
unir tudo é que você pode colocar um outro além de todo
o resto. Então, vou colocar message equals, e vamos colocá-la em uma string Nenhuma condição foi atendida. Então, com esse
exemplo de menos cinco, isso não é verdade. Isso não é verdade, então o
resto será atingido e essa
linha acontecerá. Assim, podemos ver se
corremos, nenhuma condição é atendida. Agora, com blocos
de código como esse, você pode ter um “se”. Você pode ter mais um. Mas entre o resto e o se, você pode comer quantas porções quiser. Então, eu vou colocar
outro, na verdade. Eu direi ls se a condição e diremos que é igual
a menos cinco. Então. E nesse caso, direi que mensagem é igual Agora, tenha em mente que estou usando o duplo sinal de igual aqui. Quando você está usando o
duplo sinal de igual, é assim
que você está
testando para ver se isso
é igual a isso. Mas quando você usa
um sinal de igual, isso é chamado de atribuição, o que
significa que esse valor está sendo atribuído
diretamente
a essa variável Portanto, não estamos definindo a
condição para menos cinco. Estamos testando para ver se a
condição é igual
a menos cinco. E se for,
essa linha acontecerá. E podemos testar isso, se corrermos, veremos olá. Um comentário final sobre esse tópico é que, nessas interseções, você pode ter quantas linhas
quiser aqui Além do olá, eu poderia fazer uma impressão extra e dizer: Olá. Quando clico em Executar,
obtemos o i e o hello, ambas as linhas são executadas porque tudo entre
isso e isso, toda
a seção interna
recuada, será executada
4. Loops: O próximo tópico são loops, e há uma razão pela qual
eu os estou mostrando logo após
as declarações
condicionais Loops são seções de
código que são executadas mais de uma vez com base em
determinadas condições Para mostrar isso, vamos
começar com nosso primeiro tipo de
loop, o loop de arquivos. Estou começando com o código
parecido com este, onde temos nossa mensagem e a
estamos imprimindo. E depois da mensagem, vamos escrever o
primeiro loop, e é um loop. Vamos dizer que a mensagem Y
é menor que dez, D. E aqui, digamos que mensagem é igual a
mensagem mais uma Vamos examinar essa
seção do código linha por linha para
entender melhor o que ela faz. Começamos com um arquivo
e, em seguida, essa mensagem
é menor que dez. Então, isso é muito semelhante às nossas declarações
if, onde
isso é uma condição. E somente se essa
condição for verdadeira, vamos até o cruzamento E dentro desse loop de arquivos, estamos dizendo que a mensagem é igual ao
valor atual da mensagem, que é zero mais um. Então, depois que essa linha for executada, isso significaria que a
mensagem seria igual a um. Mas o que torna o Loops interessante é que, quando chega aqui, no fim, ele realmente volta e
diz: “Por que a mensagem é menor que dez Então, na verdade, ele
verificará a condição novamente, logo após eu
verificá-la pela primeira vez. E a mensagem agora é uma. Então, ele vai perguntar: um
é menor que dez? E como está, isso
significa que a mensagem vai aumentar
para duas. E então, mais uma vez, vou
voltar aqui é dois, menos de dez, e agora
é três, é três, menos de dez, e repetidamente,
vai continuar rodando, que é de onde vem o
nome loop Até que finalmente, a mensagem
vai aumentar para dez, e vai dizer que
é dez, menos de dez. E como dez
não é menor que dez, isso significa que a
condição não é mais verdadeira e essa interseção
para de funcionar Ele não funciona mais depois
disso. E então segue em frente. Depois que isso for executado, isso significa que essa interseção foi executada um total de dez vezes e a mensagem acabou sendo dez.
E podemos ver isso. Se imprimirmos a mensagem
e executarmos, vemos dez. Lembre-se de que
todo esse processo sobre o qual
acabamos de falar
acontece instantaneamente. Como os computadores são
incrivelmente rápidos, o programa se depara com
isso enquanto circula aqui e pode
passar quase imediatamente por todas as iterações Você pode até mesmo pular
essa dezena para 10.000, e ela ainda
funcionará instantaneamente Ele passa por todas as 10.000
iterações em pouco tempo. Falando nisso, essa mensagem é igual mensagem mais uma é um exemplo
muito básico Entre o do e o final, você pode ter o máximo de
código que quiser, assim como as instruções if, e tudo isso será executado desde que a
condição seja verdadeira. Por exemplo, poderíamos
adicionar uma segunda variável. Vou
chamá-lo de teste
e defini-lo como zero. Então, dentro do loop,
vamos fazer algo como teste igual a
teste menos cinco Então, eu também vou reduzir
isso para dez, então é um pouco
mais fácil de entender. Assim como antes, esse loop será
executado dez vezes, que significa que essa linha aqui também será
executada dez vezes, que significa que o teste, se imprimirmos o teste, será menos 50. É subtraído por
cinco, dez vezes. Anteriormente, mencionei
que o loop será executado até que a condição não
seja mais verdadeira. E, como programador, é sua responsabilidade
garantir que, sempre que
usar um loop while, ele acabe Caso contrário, seu ciclo
continuará indefinidamente. E, como uma experiência de
aprendizado, podemos ir em frente e
experimentá-la só para ver o que acontece. O que faz com que o loop termine
é a linha da lista, porque a mensagem continua crescendo até que a mensagem não
seja menor que dez. Então, se mudarmos isso
para menos um, bem, agora esse loop vai continuar
para sempre porque a mensagem
sempre será menor que dez Então, se corrermos, podemos ver
que meio que ficamos presos. Então, se você for Sim,
na verdade, o tempo limite é expirado. Se você fizer isso em
seu próprio computador, tenha
cuidado, talvez seja necessário
forçar o fechamento do programa. Mas sim, isso é o que acontece sempre que o
loop inteiro é executado para sempre. Simplesmente nunca para
e atinge o tempo limite. Então, antes que esqueçamos, vamos
mudar isso de volta para mais, e voltaremos ao normal. Isso cerca de capas e voltas. Então, vamos passar para o
segundo tipo de loop, que é chamado de quatro loops. Esse tipo de loop é
tão útil quanto o arquivo, mas é útil para situações
diferentes. Na programação, você
notará que
normalmente há muitas maneiras de
fazer algo, então você sempre
terá opções de como
resolver problemas. Vamos começar criando
uma nova variável novamente, e
vou chamá-la de pickle Realmente não
importa como você chama isso. E eu vou defini-lo igual a zero. E esse é o valor que
vamos imprimir, Pickle. E depois do loop de arquivos, vamos começar
o loop de quatro. E isso é o que parece. Você diz quatro. Eu é igual a um, vírgula três, um, E aqui dentro, vamos fazer pickle igual
a pickle Agora, analisando esse código, ele é um pouco menos
autoexplicativo em comparação com
o loop de arquivos Então, vamos analisar
isso pouco a pouco para que possamos entender melhor
o que está acontecendo aqui. Essa primeira linha especifica
três valores diferentes. Primeiro, temos i igual a um. Em quatro loops, isso funcionará
como nosso iterador, que basicamente significa que é um valor que será atualizado toda vez que
esses quatro loops O próximo número na sequência, esse três, é o número que
nosso iterador abordará E quando esse número for
atingido, o loop terminará. E, finalmente, esse último número é o valor da etapa para o loop. Ou, em outras palavras, é a
quantidade em que nosso iterador
aumentará toda
vez que esse loop ocorrer Então, eu sei que foram muitas
informações ao mesmo tempo. Então, deixe-me ver o que
acontecerá quando esse loop for executado. O loop começará.
Eu começo com uma. E, novamente, esse é o nosso iterador. Então o loop começa, o pickle
vai aumentar de 0 a 10. Então zero mais dez é dez. Então, agora pickle é dez.
Agora o loop termina. Isso remonta ao início. Mas desta vez, eu
aumento nesse valor. Então, eu aumento de
um mais um é dois. Então agora é igual a dois. E como dois, o valor
atual de i é menor que esse valor, o três, isso significa que
o loop continuará. Então, vamos
entrar no circuito mais uma vez. pickle vai
aumentar em dez novamente, então agora o pickle é 20 E, novamente, voltamos
ao início do loop. Ele vai aumentar 2-3. Então agora eu sou igual a três. Agora que i é igual a
esse número do meio, três é igual a
três, isso significa
que essa é a última
iteração do loop Então, o pickle
aumentará mais 101 vezes,
e então o loop finalmente estará pronto e continuará Então isso significa que essa linha
no meio aqui, ou devo dizer que
toda a seção correu três vezes
o total, de um a três. Então, podemos ver que o pickle depois de
tudo isso deveria ser 30. À primeira vista, esse loop
pode parecer um
pouco mais complicado do que o loop de
Wile que fizemos anteriormente, pois há mais
alguns números para acompanharmos Mas uma vez que você se acostuma,
acho que é bastante
autoexplicativo O loop começará
nesse número, aumentará esse número a cada vez até
atingir esse número. Portanto, é uma maneira fácil de ter um conjunto
predeterminado de loops. Uma coisa interessante
e muito útil que você pode fazer com
quatro loops é usar esse valor de iterador
dentro do próprio loop Por exemplo, eu poderia
aumentar o pickle em i. O que isso significa é que eu
vou começar com um, então o pickle vai
aumentar em um, depois vai
aumentar em dois e depois vai
aumentar Um mais dois mais três é seis. Essa é uma maneira muito comum de
usar quatro loops
porque haverá muitas circunstâncias em
que você precisará desse valor de iterador para realizar
determinados cálculos
5. Funções: Na programação, é
importante lembrar que copiar e colar seu código não
é uma prática muito boa Se você achar necessário copiar uma seção do seu código e colá-la em outro local para que agora haja duas cópias
do mesmo código, considere usar uma função. Uma função é uma seção
de código que você define
e, em seguida, você pode
chamar essa seção de código para ser executada
em outro lugar no programa. Você entenderá o que quero
dizer em apenas um momento. Estamos começando o código
com apenas uma mensagem igual zero e depois imprimindo a
mensagem, que gera Mas depois da mensagem,
vamos escrever nossa
primeira função. Vamos dizer a palavra-chave
da função, e o nome da nossa função
será aumentar a mensagem. E então, dentro
dessa função, diremos que mensagem é igual a
mensagem mais cinco Então, aqui, a
palavra-chave
da função indica que a próxima coisa é o
nome da nossa função. Os dois parênteses são
necessários para indicar que
é uma função E então tudo antes do fim, então o que quer que esteja aqui, isso será executado sempre que a função for chamada. Agora, por padrão, só porque
definimos essa função, não significa
necessariamente que esse código
será executado imediatamente. se eu clicar em Executar,
veremos que nossa saída ainda
é zero. Para que esse
código seja executado, precisamos chamar a função. que significa apenas que
digitamos o nome da função, aumentamos a mensagem e
colocamos os dois parênteses Então, isso é chamado de chamar a função, que significa apenas que
quando você digita essa linha, ele pega
qualquer código que está dentro da função e o executa. Então, veremos agora que, quando
executamos o programa inteiro, valor da
nossa mensagem é cinco. Da mesma forma, para
demonstrar isso, eu poderia copiar essa chamada de
função e dizer, chame-a mais duas vezes. Então, estamos chamando essa
função três vezes o total, que significa que esse código
será executado três vezes, o
que no final significa
que nossa mensagem é 15. Vamos tornar
a função um pouco mais interessante. Ao escrever uma função, você tem a opção de
fornecer parâmetros a ela. Os parâmetros são o que
fica
entre os parênteses, mais ou menos como o que
estamos fazendo com
essa função de impressão aqui Poderíamos alterá-lo para
que essa função aceite um parâmetro. Diremos que ele aceita
algo chamado Pu
e, em seguida, podemos usar esse
parâmetro na função. Então, vamos dizer plus up. Em vez de adicionar
cinco de cada vez, ele adicionará qualquer
valor que passarmos. Então, quando chamamos de mensagem
aumentada, posso colocar aqui qualquer
valor que eu quiser. Posso dizer 99, por exemplo, quando
eu corro, obtemos 99. Mas também posso chamar isso de mensagem aumentada pela
segunda vez, mas desta vez, vou passar em duas. E desta vez, é um contra um. Chamou esse código duas vezes. Na primeira vez, Fu
é igual a 99 e na segunda vez
Fu é igual a dois. Embora em nosso exemplo tenhamos apenas um parâmetro
nessa função, você pode colocar
quantos quiser e fazer isso colocando
vírgulas entre cada um Então, se eu quisesse
outro chamado Val e outro
me ligasse, não importa. Você coloca todos eles em uma ordem. E então, ao
chamar a função, você passaria valores
adicionais para cada
um desses parâmetros. Então é assim que seria se você quisesse fazer dessa maneira. Agora, uma
coisa muito importante a saber sobre funções é que você tem a opção de retornar um valor. Para explicar o que isso significa, vamos
alterar nossa função para que ela retorne algo. Vou
limpar um pouco esse código, então voltamos
ao único parâmetro Pu. Então, em vez de aumentar a
mensagem apenas
pelo valor de Fu, vamos fazer com que
fu seja igual a fu vezes dois Então, vamos
passar um valor
e, imediatamente,
vamos dobrar esse valor. E então vamos devolver Fu. Agora, a função está se comportando de forma um pouco
diferente do que era antes Antes, dizíamos manualmente que a
mensagem aumentaria em Fu, mas agora estamos apenas mudando
Fu e depois retornando Fu. O que acontece é que,
para realmente aplicar essa função à mensagem, diríamos que mensagem
é igual a aumentar a mensagem, e então vamos passar dez O que vai acontecer aqui é esses dez
serão passados em SFU, então fu dobrará,
então dez se transformará
em 20, e então
retornará o novo valor de Fu,
que, como acabei de dizer, é 20 Então, quando algo é
retornado em uma função, isso basicamente significa
que
a chamada da função vai
se substituir pelo resultado. Então, como estávamos
retornando 20 aqui, é basicamente a mesma
coisa que
se substituir apenas pelo resultado. Então, basicamente, está fazendo isso. E a beleza disso é que você pode transmitir
qualquer valor que quiser. E ele pegará
isso e aplicará. Então, neste caso, eu digitei 99, o resultado é 198 Isso simplesmente dobra esse valor. E então, como estamos
definindo a mensagem igual a esse valor retornado, é
isso que obtemos na impressão. A razão pela qual isso é útil é porque agora, se eu quisesse aplicar essa função para dizer uma
nova variável como chicken, do jeito que eu a
configurei antes, eu dizia
manualmente a mensagem
dentro dessa função. Isso significaria que só se aplicava a essa
variável, e pronto. Mas agora, quando estou
retornando algo, posso usá-lo para qualquer variável. Então, eu poderia dizer que frango é igual
a aumentar a mensagem cinco. E então, se eu imprimir frango, devemos ver dez. Uma coisa legal que você
pode fazer com funções é passar outras variáveis
como parâmetros. Por exemplo, na
parte superior do programa, vamos criar uma nova variável. Vou chamá-lo de Macaco, e
vamos defini-lo igual a 100. Então, o que eu posso fazer é
passar essa variável macaco,
digamos, para aqui Então, eu vou dizer apenas macaco. Então, o que está acontecendo é que o
valor do macaco, que é 100, será passado para uma mensagem aumentada
e,
em seguida, poderá ser
aplicado à galinha, o que resulta em 200 Ter funções em
nosso cinto de ferramentas será extremamente útil à medida que você
avança na programação. Você verá com que frequência
as seções do código
precisam ser executadas em diferentes
pontos do programa. E é muito mais fácil
gerenciar tudo
quando o código está em
um só lugar, em vez copiar e colar
em todo o arquivo
6. Comentários: Até agora, tudo o
que escrevemos em nosso arquivo LuA foi código Lua. Mas com praticamente todas as
linguagens de programação, há uma opção para
os programadores fazerem pequenas anotações que
não são tratadas como código, e essas notas são
chamadas de comentários Por exemplo, aqui neste código
da lição anterior, temos uma função
chamada mensagem de aumento. Se eu estivesse escrevendo um
monte de código e tivesse uma tonelada de funções
escritas em meus arquivos, talvez
fosse difícil
acompanhar o que cada
função faz. Por isso, é útil
escrever comentários em seu código para
ajudar você a se lembrar. Em Lua, você escreve
comentários digitando dah, dah e depois tudo
depois é
considerado Para que eu possa escrever minha mensagem,
dobre um valor e o retorne. Então, essa mensagem aqui é
ignorada pelo programa, mas ajuda a mim ou a
quem está lendo meu código Isso apenas fornece
um contexto extra. É um pequeno lembrete. Um truque legal que você pode
fazer de vez em quando é chamado de comentar algum código Os comentários são úteis para esses pequenos
lembretes como esse, mas você também pode usá-los para desativar determinadas
seções do código Por exemplo, se eu quisesse
ver o que aconteceria se eu removesse
completamente essa
linha, eu poderia excluí-la, ou talvez eu queira excluí-la
temporariamente fazendo d. Agora, essa linha
é considerada um comentário
e, quando executo o programa, ela basicamente finge que
essa linha não está lá, mas, ao mesmo tempo, é muito fácil trazê-la de volta Também há a opção de
tratar seções inteiras do código como comentários. Você pode fazer isso digitando, base
quadrada base quadrada
e, quando quiser
finalizar a seção de comentários,
use base quadrada base quadrada Tudo entre isso e
isso é considerado um comentário, nenhuma dessas linhas
aqui será publicada. Adquirir o
hábito de comentar seu código é muito importante Isso ajuda a fazer suas
próprias anotações, mas se outra pessoa
quiser examinar seu código, comentários fazem uma
grande diferença entender o que você,
como programador, estava tentando fazer ao
escrevê-lo Ler o código de outras pessoas
pode ser difícil às vezes, mas ter comentários
para guiá-lo ao longo do caminho torna o
processo muito mais fácil.
7. Local vs. Global: Em Lua e em muitas outras linguagens de
programação, existem dois tipos
de variáveis variáveis
globais e variáveis
locais. Até agora, temos
trabalhado com empresas globais. Variáveis globais são
coisas como mensagens. Depois de definido, ele pode ser acessado em qualquer
lugar do programa, e é a isso que
Global se refere. Poderíamos digitar a mensagem em
qualquer lugar do arquivo, e o programa
saberia que estamos nos referindo a essa
variável aqui. Uma alternativa a uma
variável global é uma variável local. E tudo o que você precisa
fazer para tornar uma variável local é adicionar essa
palavra-chave local com antecedência E, como o nome indica, a variável local
só pode ser acessada
na mesma seção do código em
que a variável
foi declarada. Então, por exemplo, vamos atualizar essa
função de aumento de mensagem para fazer algo diferente e
utilizar uma variável local. Vou criar uma nova variável
local aqui e chamá-la de VR local. E eu vou
defini-lo igual a FU. Então, na próxima
linha, vou fazer VR igual a R dividido por dois. E, finalmente,
vamos devolver a realidade virtual. Então, agora, em vez de
dobrar a mensagem, agora
estamos
cortando-a pela metade porque estamos definindo a VR igual
ao passado em valor, cortando-a pela metade
e retornando a VR Mas é importante observar que a variável VR só será usada nesta seção
do código dentro da função. E como esse é o caso, usar o local aqui faz sentido. Não gostaríamos que a
VR fosse utilizada em nenhum lugar fora dessa
seção de código aqui E é aí que o local se torna realmente útil quando você
gerencia seu projeto. Há uma grande quantidade de variáveis em todo
o seu programa. É mais provável que
um erro seja
cometido quando há muitas
variáveis globais diferentes, porque se você criasse
uma segunda variável mais tarde e eu a chamasse de VR Bem, pode não estar claro qual carro estamos falando. Mas se tudo for local para sua seção relevante do código, haveria dúvida a
qual Var isso se refere, caso você tenha nomeado duas
variáveis com o mesmo nome Portanto, esse é um hábito que eu
recomendo fortemente que você adote, especialmente com funções de
escrita Eu diria que esse é um
cenário
muito comum em que uso variáveis locais porque não quero que
essas variáveis sejam usadas fora da função em
que as estou declarando
8. Tabelas: Tudo o que
abordamos até agora é muito comum no mundo da
programação. Você encontrará todas essas coisas em praticamente qualquer idioma. No entanto, nosso próximo
tópico são tabelas, e essa é uma estrutura
de dados bastante exclusiva de Lua. Cada linguagem
terá opções semelhantes, mas as tabelas em Lua são ferramentas únicas e incrivelmente poderosas. Você os usa para armazenar
conjuntos de dados relacionados. E como esses dados são todos
armazenados no mesmo local, fica muito mais fácil
acessar e manter
tudo organizado. Muito parecido com variáveis. Uma variável armazena um dado
e pronto. Nada mais do
que essa única coisa. Uma tabela é capaz de armazenar vários dados
na mesma variável, exceto que é uma tabela,
não uma variável. Então, vamos ver
um exemplo do zero sobre como
utilizar tabelas. Vou começar com nossa mensagem
típica igual a zero
e, em seguida, estamos imprimindo Depois dessa variável de mensagem, vamos criar uma nova tabela. Vou chamá-lo de resultados dos testes. Então, quando criamos
uma nova tabela, nós a definimos como colchetes. Em Lua, se você já viu
esses colchetes encaracolados, é assim
que você sabe que
estamos trabalhando com uma mesa E como não há nada
entre os colchetes, isso significa que é uma mesa vazia Aqui, inicializamos as
pontuações dos testes como uma tabela vazia. Para esta demonstração,
vamos armazenar várias
pontuações inventadas nesta tabela. Para fazer isso,
atribuiremos uma pontuação ao seu próprio
índice na tabela. Vamos ver como fazer isso. Primeiro, queremos escrever o nome da
tabela, os resultados dos testes. E logo depois,
vamos colocar colchetes. E então, entre os
colchetes, vamos colocar um índice Você verá o que isso
significa em apenas um momento. Para começar,
colocaremos o Índice 1. E eu vou definir o Índice um para 95, por exemplo. E é isso. Atribuímos nossa primeira pontuação
à tabela de pontuações dos testes no Índice um. Agora podemos passar para
a segunda pontuação do teste. Vamos reduzir os
resultados dos testes e depois dois. Vamos definir este para 87. Por enquanto, vamos colocar mais
uma pontuação no teste. Eu vou dizer três notas de teste, e vou definir este para 98. Então, neste ponto, agora temos
uma tabela chamada pontuações de testes, que contém três pontuações, uma em cada um desses
três índices. Agora, para acessar
os dados que acabamos de inserir, basta escrever
o nome da tabela e
nos referir ao índice do qual
estamos falando Então, digamos que
queremos definir a mensagem
igual às pontuações dos testes do Índice dois. Então, isso só vai pegar qualquer valor que esteja no Índice dois, que é 87, e estamos
imprimindo a mensagem aqui, então devemos ver 87. Lembre-se de que
atribuímos valores apenas ao Índice um, Índice dois e ao Índice três. O que aconteceria se
tentássemos acessar o Índice quatro? Não colocamos nada
lá. Então, o que aconteceria? Se definirmos a mensagem igual às pontuações dos testes do Índice quatro
e
tentarmos executá-la, na verdade veremos NIL. Então, quando nada é atribuído
a um índice específico, ele realmente contém
o valor NIL. Agora NIL é uma
palavra reservada em Lua, que representa apenas
o significado de nada Significa apenas que nada existe
aqui nesta posição. Então, esse método ao qual
estamos atribuindo valores à tabela está correto, mas há uma maneira
mais eficiente fazer exatamente a mesma coisa Vou prosseguir e
excluir essas três linhas. E em vez de escrever três linhas diferentes
para essas tarefas, podemos voltar à seção
original de Curly Berry e inserir essas três partituras
diferentes E isso foi 95, 87 e 98. Então, toda essa linha aqui realiza
exatamente a mesma coisa que estávamos fazendo antes com as três entradas manuais
para essas três Em outras palavras, esse
valor está no Índice um, esse valor está no Índice dois e esse valor está no Índice três. E
podemos testar isso. Vamos continuar e definir a
mensagem para o Índice
três das pontuações dos testes, e obtemos 98, que
é esse valor. Embora essa seja a maneira
mais fácil colocar valores em uma tabela, há um outro método para fazer isso que ainda é
importante seguir. Vamos refazer
tudo isso
simplesmente fazendo com que as
pontuações dos testes comecem vazias
e, da
mesma forma que fizemos antes, vamos escrever
três linhas separadas. Mas desta vez,
vamos usar essa função chamada
table insert. Mesma ideia de antes, quando
escrevemos nossas próprias funções. A
linguagem de programação LuA vem com várias funções escritas
para nós que podemos usar, e table dot insert
é uma delas. O que essa função
faz é simplesmente pegar um valor e
colocá-lo em uma tabela. A função tem dois
parâmetros que
precisamos passar
antes de podermos usá-la. O primeiro parâmetro
é o nome da tabela. Então, vamos digitar os resultados dos testes. Esse é o nome da tabela
na qual queremos inserir. E o próximo parâmetro é o valor que
queremos inserir. Vamos primeiro colocar
nossa pontuação de 95 no teste e podemos fazer a mesma coisa. Com as outras duas pontuações
e digamos 87 e 98. Agora, o benefício
dessa função de inserção de pontos na tabela em comparação com o que estávamos fazendo antes é que não precisamos especificar em qual índice queremos que
essas pontuações cheguem. E você se deparará com
situações em não saberá realmente em
qual índice está. Você escreverá um código
que diz apenas: coloque esse valor na tabela. Mas você não saberá no momento quantos itens estão na
tabela ou se há alguma lacuna. Então, essa função de inserção descobre
tudo isso para você. Só uma pequena nota lateral. Ao atribuir valores
a uma tabela em LuA, é comum
começar no Índice um e depois subir a partir daí Provavelmente é mais comum linguagens comecem
no índice zero, mas LuA é aquele que
começa no Índice um. Mas você nem precisa
usar números como índice. Você também pode usar cordas. Você poderia dizer os resultados dos testes
e, em seguida,
entre colchetes, eu direi, olá E então vamos colocar
o valor 90 lá. Então, da mesma forma que antes, posso simplesmente lembrar os mesmos dados passando o índice
apropriado. E obtemos 90. Mas,
como eu disse anteriormente, a abordagem de uma linha, se você já sabe quais dados estarão
lá, neste caso, 95 87 e 998, essa é a maneira mais
compacta de fazer isso E quando você tem tabelas cheias
de dados, como temos aqui, é importante poder
analisar todos esses dados com eficiência e facilidade analisar todos esses dados para encontrar o que
você está procurando, fazer alguns cálculos ou fazer o que quer que seja
necessário para essas informações. Felizmente, para nós, Lua nos oferece uma opção muito fácil para iterar todas as entradas da
tabela e examinar os Lembre-se dos quatro
loops anteriores, podemos usá-los de uma nova maneira aqui para
percorrer facilmente a tabela. E aqui está como isso é feito. Podemos dizer quatro, e
eu direi I S em pares. E então a tabela
que queremos analisar é a pontuação dos testes D. E então, dentro
dos quatro loops, eu direi que
mensagem é igual a mensagem mais S. Agora, esse loop aqui vai
passar por cada item na tabela, e para cada item, ele executará qualquer código que
esteja dentro do Esse I se refere ao
índice atual em que o loop está, e esse S se refere
ao valor ou aos dados que
existem nesse índice. Nesse caso, as pontuações dos testes têm três pontuações
diferentes atualmente. Isso significa que
esse loop será repetido três vezes diferentes. Na primeira vez, I
será um, e S será o valor
que está no Índice um ou 95. Então, nesse ponto,
a mensagem aumentará em 95. Em seguida,
o loop recomeçará. I vai ser dois desta vez, S vai ser 87 ou
o valor no índice dois. E mais uma vez,
a mensagem vai aumentar. Em geral, isso só
vai somar todas
as pontuações e
colocá-las na mensagem. Então, vou me
livrar dessa linha, e podemos correr e ver
que a soma é 280. Isso é o que obtemos se você
adicionar 95 mais 87 mais 98. Há uma última coisa sobre mesas que eu
gostaria de examinar. Um recurso interessante sobre eles é que você pode adicionar
propriedades a eles, que é basicamente uma variável vinculada diretamente
à própria tabela. Vamos adicionar
uma às pontuações desse teste. Vou dizer que os resultados dos testes são iguais aos
pontos, o assunto é igual
e, entre aspas E é isso. Agora podemos obter essa propriedade apenas chamando-a de forma semelhante a
qualquer outra variável, e devemos obter matemática. Essa é uma
maneira conveniente de
marcar claramente o que
cada dado representa. Mas, na verdade, tudo o que essa
linha está fazendo são os resultados dos testes
e, em seguida, entre colchetes,
o assunto da string É igual a matemática. Essas duas linhas realizam a mesma coisa. Essa é apenas uma forma alternativa de fazer isso e vice-versa. Isso realmente demonstra
como as tabelas são flexíveis e permitem que você seja realmente personalizável com a forma como
seu código é organizado
9. Resumo: É hora de falar sobre o
projeto desta aula. Vou
te dar esse código aqui
e quero que você o adicione. Você pode digitar todo esse código
diretamente deste vídeo ou baixar um arquivo LuA da seção
de projetos da classe
e, em seguida, copiar e
colar tudo
no mesmo navegador
das lições anteriores. Aqui está o problema. Eu te dou essa função chamada
soma de todos os números. Mas, no momento, ele
não funciona corretamente. Essa função deve
receber um número, que chamamos de num
como parâmetro, e precisa somar todos
os números inteiros entre
um e num Por exemplo, se
passássemos quatro, isso significaria que adicionaria um mais dois mais
três mais quatro, e o resultado seria dez. Em seguida, definiria dez
como resultado e retornaria o resultado. momento, porém, quando executamos, ele sempre retorna zero, não importa o que passemos para essa chamada da
função de soma de números. O que precisamos fazer é corrigir isso para que qualquer
valor que
passamos seja utilizado dentro da função e retorne
uma resposta apropriada A propósito, quando
passamos 12 para somar todos os números, devemos esperar que o
resultado seja 78. Então, em primeiro lugar, você deve tentar
obter pelo menos esse
número correto aqui. É claro que, no final das contas, ele deve ser capaz de
aceitar qualquer número. A quantidade total de
código que você precisa escrever deve ser de apenas
cinco ou seis linhas. Para resolver esse problema, pense nas lições
anteriores. Um desses tópicos funciona particularmente bem
para esse problema. Ao encontrar uma solução, certifique-se de fazer uma
captura de tela do seu código aqui e publicá-la na página do projeto da
turma Vou dar uma olhada e
dar um feedback. Se você passar algum
tempo pensando sobre esse problema e não
conseguir descobrir, deixe de entrar em contato comigo
e eu darei algumas dicas. Até lá, boa sorte. Depois de concluir o projeto, isso concluirá esta aula. Muito obrigado
por ler esse material comigo. Ainda não o fez,
por favor, deixe um comentário. E se você gostou da
aula, por favor, recomende-a. Agradeço muito
o apoio. futuro,
recomendo me
aprofundar em cada um dos tópicos
discutidos na aula. Nós apenas esboçamos a superfície
do que Lua tem a oferecer. O idioma tem
excelente documentação e tutoriais em Então, eu recomendo fortemente
conferir esse site. Com tudo isso dito, acredito
que isso abrange tudo. Obrigado novamente por
participar da minha aula, e estou ansioso para
ver você na próxima.