< Return to Video

AICSS CAP08 2025 VA01 POO INTRODUCAO E FUNCOES

  • 0:08 - 0:11
    Você sabe o que é programação
    orientada a objeto?
  • 0:11 - 0:15
    Hoje, nós vamos discutir os seus
    recursos para o ambiente do ESP32.
  • 0:15 - 0:19
    A programação orientada a objeto
    ou POO,
  • 0:19 - 0:22
    é um recurso muito comum
    em linguagens C++
  • 0:22 - 0:24
    e outras linguagens como o Java.
  • 0:24 - 0:29
    A sua vantagem é que é uma alternativa
    para a programação estruturada
  • 0:29 - 0:33
    e é bom entender o que é programação
    estruturada e o que é POO.
  • 0:33 - 0:37
    Na programação estruturada
    o fluxo é de cima para baixo
  • 0:37 - 0:39
    ou da esquerda para direita.
  • 0:39 - 0:43
    Isso é, o compilador verifica as linhas
    de cima para baixo,
  • 0:43 - 0:46
    da esquerda para direita,
    ao fazer a sua compilação
  • 0:46 - 0:50
    E se caso acontecer alguma
    falha na compilação,
  • 0:50 - 0:56
    ele te indica o erro e o programador
    deve fazer essa correção.
  • 0:56 - 1:00
    O POO é também assim
    em termos de compilação.
  • 1:00 - 1:03
    Porém, não é exatamente
    de cima para baixo,
  • 1:03 - 1:06
    porque quando você começa
    a programar em POO
  • 1:06 - 1:09
    as suas funções ficam todas
    lá em cima,
  • 1:09 - 1:14
    mas não quer dizer que o compilador
    passou compilando linha a linha.
  • 1:14 - 1:15
    Vejamos uma prática.
  • 1:15 - 1:19
    Nesse código,
    que é o nosso famoso pisca pisca,
  • 1:19 - 1:22
    eu tenho aqui à direita
    um LED vermelho
  • 1:22 - 1:25
    com o seu resistor de 100ohms.
  • 1:25 - 1:28
    Só lembrando que a necessidade
    do resistor
  • 1:28 - 1:32
    é para que eu não ultrapasse a corrente
    nominal de funcionamento do LED,
  • 1:32 - 1:35
    ou seja,
    para que ele não queime na prática.
  • 1:35 - 1:37
    Aqui no simulador isso não acontece,
  • 1:37 - 1:40
    não há uma queima,
    mas na prática, sim.
  • 1:40 - 1:43
    Eu liguei o pino negativo
    que é o coletor do LED
  • 1:43 - 1:47
    no GND do ESP32
  • 1:47 - 1:50
    e o pino positivo que é a letra A
    de anodo,
  • 1:50 - 1:55
    passa pelo resistor que vai
    para esse pino aqui que é o 13.
  • 1:55 - 1:57
    E assim, eu invoquei aqui o pino 13
  • 1:57 - 2:01
    como output no void setup.
  • 2:01 - 2:03
    Esse é um exemplo
    de linguagem estruturada,
  • 2:03 - 2:06
    porque ele é de cima para baixo,
    da esquerda para a direita.
  • 2:06 - 2:09
    Ou seja,
    nós temos aqui o void setup,
  • 2:09 - 2:10
    o void loop,
  • 2:10 - 2:13
    que faz o piscarLed ser carregado,
    invocado.
  • 2:13 - 2:15
    A novidade é essa aqui,
  • 2:15 - 2:19
    esse piscarLed hoje está em forma
    de função.
  • 2:19 - 2:22
    Eu poderia ter colocado
    esse "digitalWrite"
  • 2:22 - 2:26
    com o high digitalWrite,
    com o Low aqui dentro,
  • 2:26 - 2:28
    dessa forma,
  • 2:28 - 2:32
    no lugar do "piscarLed",
    que iria funcionar perfeitamente.
  • 2:32 - 2:35
    Aí eu volto aqui
    com um tab para organizar.
  • 2:38 - 2:40
    E assim ele piscaria.
  • 2:40 - 2:42
    Pois bem,
    na linguagem de hoje,
  • 2:42 - 2:46
    que a gente está trabalhando
    com programação orientada a objeto,
  • 2:46 - 2:50
    ao invés de colocar essa linha
    que está sendo repetida
  • 2:50 - 2:55
    dentro do "void loop",
    eu posso colocá-la de fora, ou seja,
  • 2:55 - 2:56
    numa função.
  • 2:56 - 3:00
    Então eu vou apagar
    fazendo control Z aqui
  • 3:00 - 3:02
    e retornar o que eu estava.
  • 3:02 - 3:04
    Do jeito que está aqui,
    o que acontece?
  • 3:04 - 3:10
    Esse "piscarLed" é uma função
    porque a sintaxe dela é uma palavra
  • 3:10 - 3:13
    que você vai escolher
    e entre parênteses,
  • 3:13 - 3:16
    eu vou colocar dois argumentos.
  • 3:16 - 3:21
    Nessa hora, esses dois argumentos
    estão sendo passados aqui para cima
  • 3:21 - 3:24
    porque a palavra "piscarLed" se repete.
  • 3:24 - 3:28
    dentro do void,
    que significa que ele não retorna nada.
  • 3:28 - 3:32
    Ou seja, essa função aqui
    não vai me retornar nada,
  • 3:32 - 3:35
    não vai me trazer uma variável,
    o conteúdo de uma variável,
  • 3:35 - 3:38
    ela simplesmente vai fazer uma ação
    de piscar o led.
  • 3:38 - 3:40
    E está dependendo de quem?
  • 3:40 - 3:44
    De dois argumentos
    dos quais eu estou publicando
  • 3:44 - 3:48
    ou declarando, na verdade,
    aqui dentro desses parentes.
  • 3:48 - 3:53
    Veja que eu tenho aqui o "int",
    que é um tipo de declaração
  • 3:53 - 3:55
    com a variável "pino".
  • 3:55 - 3:59
    Aí eu tenho uma vírgula
    e outra variável do tipo "tempo"
  • 3:59 - 4:01
    e a tipagem dela é inteira de novo.
  • 4:01 - 4:04
    Olha, quantos argumentos
    eu quiser colocar,
  • 4:04 - 4:08
    eu vou colocando aqui dentro,
    o que eu precisar vou colocando aqui,
  • 4:08 - 4:09
    separando por vírgula.
  • 4:09 - 4:12
    No entanto,
    do jeito que eu fiz a minha lógica,
  • 4:12 - 4:13
    eu só preciso de dois.
  • 4:13 - 4:14
    Por quê?
  • 4:14 - 4:16
    Eu estou indicando aqui,
    pela minha lógica,
  • 4:16 - 4:20
    o pino que o LED está ligado
    e o tempo que ele vai ser o intervalo,
  • 4:20 - 4:24
    a cadência das piscadas
    que ele vai precisar.
  • 4:24 - 4:27
    E assim, esses parâmetros
    são passados aqui para dentro.
  • 4:27 - 4:32
    O "pino" recebe o "13",
    assim como o "tempo" recebe o "500",
  • 4:32 - 4:34
    porque são respectivos, né?
  • 4:34 - 4:36
    É a ordem que importa
    aqui dentro
  • 4:36 - 4:38
    que eu coloquei,
    separado por vírgula,
  • 4:38 - 4:42
    que vai casar lá dentro
    da minha função.
  • 4:42 - 4:45
    E assim como o "pino"
    está declarado aqui como inteiro,
  • 4:45 - 4:49
    essa declaração é local,
    porém ela é local e pública,
  • 4:49 - 4:53
    visivelmente aqui dentro eu consigo
    enxergar o conteúdo de pino
  • 4:53 - 4:55
    aqui dentro dessa função.
  • 4:55 - 4:58
    Então, ela vai vir aqui automaticamente.
  • 4:58 - 5:01
    No lugar desse pino aqui
    vai estar o número "13"
  • 5:01 - 5:04
    do jeito que veio transferido
    lá do "void loop" até chegar aqui.
  • 5:04 - 5:09
    E o conteúdo de tempo,
    esse parâmetro recebeu "500"
  • 5:09 - 5:12
    e aí ele vai ser utilizado
    aqui dentro do "delay".
  • 5:12 - 5:16
    Note que quando você está fazendo
    uma função,
  • 5:16 - 5:20
    o nome que está dentro do void loop,
    que é onde vai carregar,
  • 5:20 - 5:23
    precisa bater com o nome
    que está do lado de fora,
  • 5:23 - 5:26
    senão a função não coincide,
    não casa.
  • 5:26 - 5:28
    E quando você fizer a sua função,
  • 5:28 - 5:32
    você está ainda fazendo
    uma linguagem estruturada,
  • 5:32 - 5:37
    mas com um pé dentro
    da programação orientada a objeto.
  • 5:37 - 5:41
    A vantagem de você fazer funções
    é que você está fazendo
  • 5:41 - 5:45
    pequenas ferramentas
    ou pequenos pacotes
  • 5:45 - 5:47
    utilizados mais de uma vez.
  • 5:47 - 5:49
    Nesse caso do pisca pisca,
  • 5:49 - 5:52
    ele é muito simples
    para requerer uma função,
  • 5:52 - 5:55
    mas ainda assim, didaticamente,
    é importante você entender.
  • 5:55 - 5:57
    Para uma linguagem mais complexa
  • 5:57 - 6:02
    ou um programa mais complexo
    que requer mais funções,
  • 6:02 - 6:05
    aí sim vale a pena criar
    essas funções
  • 6:05 - 6:10
    para você reutilizar parte
    do seu código através de funções
  • 6:10 - 6:13
    e não deixar o seu void loop
    super carregado
  • 6:13 - 6:15
    com códigos que serão repetidos
    lá embaixo.
Title:
AICSS CAP08 2025 VA01 POO INTRODUCAO E FUNCOES
Video Language:
Portuguese, Brazilian
Duration:
06:19

Portuguese, Brazilian subtitles

Incomplete

Revisions Compare revisions