Fala Mestres beleza no vídeo de hoje nós vamos estar falando aqui sobre lógica de programação é para ser um aulão né uma aula um pouco maior Então nós vamos falar aqui sobre muitos tópicos muitas coisas sobre lógica e desde a introdução ali a sintaxe básica a gente falar de tipos de dados variáveis essas coisas até o mais complexo ali que seria o Promise programação assíncrona e coisas do tipo então isso aqui vai ser um Exemplo do que vocês vão encontrar lá na nossa comunidade na comunidade aqui da mestr os links estarão aí na descrição e
também todos os os outros links né de da Mestres aqui para vocês acompanhar todo todas as nossas redes e todo o conteúdo que a gente vem produzindo tá então meu nome é jancer sou desenvolvedor aqui na Mestres e bora lá para mais um [Música] conteúdo bom então já aqui na minha máquina eu já tô aqui no na página do do Node né node JS pesquisei aqui né nodejs download vai ter aqui os instaladores para Windows Mac e também para Linux e a gente vai precisar do node e de algum ide né o editor de texto
e aqui eu tô usando o vs code tá já tá aberto aqui mas e você pode baixar aqui né visual vs code download já tem aqui o link de download também com os instaladores tá então uma vez com node JS instalado e visual Studio code instalado Você pode abrir o Vs code né e o que que eu fiz aqui eu vim em abrir um diretório Criei um diretório no meu computador e abri esse diretório aqui no vs code e Criei um arquivo né botão direito novo arquivo index JS tá então a gente vai usar esse
arquivo aí para dar aqui todos os exemplos da aula né abordar aqui os conteúdos e para ver isso funcionando eu tenho uma extensão que é a code Runner né tem aqui o Run code vamos vir aqui na aba de extensões ó nós temos aqui o Code Run que é essa extensão aqui ela basicamente vai pegar o conteúdo de algum arquivo né e executar ou um uma uma seleção daquele arquivo né então quando eu venho aqui no arquivo index JS clico ele vai adicionar esse ícone n Run code senão você pressiona com o botão direito tem
aqui né code quando a gente pressiona isso aqui ele vai executar ó ele chama node e o arquivo que está aberto né no caso aqui e no disco D disco Mestres minicurso lógica index JS Ele basicamente Executa os arquivos tá e a gente consegue executar também a seleção dentro do arquivo eu vou mostrar isso aqui para vocês mas essa extensão é que vai est ajudando a gente pra gente ir ir olhando aqui vendo o as partes do nosso código ou o código inteiro funcionando tá então basicamente é essa a configuração a gente precisa de pouco
mesmo só o basicamente o node ali e o vs code pra gente ver tudo funcionando caso Você não esteja conseguindo usar a extensão né o o Code Runner você pode através do terminal chamar node e o nome do arquivo né como o vs code ele abre o terminal no diretório que tá aberto então eu já tô aqui ó no disco D Mestres minicurso lógica para abrir abrir o terminal né você clica Terminal Novo terminal então você digita né node e o nome do arquivo né no caso aqui é o arquivo index JS você pressiona Tab
ele já completa ali e se eu dou um enter Aqui ele vai executar o arquivo né como o arquivo tá vazio não vai aparecer nada no console Beleza então com essa configuração feita com essa estrutura criada vamos lá iniciar falando aqui sobre sintaxe né sintaxe e para falar de sintaxe gente vai acabar falando de variáveis e tipos de dados vamos falar disso aqui tudo de uma vez tá então o que que é sintaxe basicamente sintaxe vai ser a forma que a gente escreve né então toda Linguagem de programação vai ter a sua sintaxe que são
ali o seu o conjunto né de palavras reservadas e também sinais símbolos que formam ali toda a a linguagem em si tá então no já JavaScript por exemplo nós temos aqui o const né const é uma palavra reservada que remete a constante então a gente usa o const para fazer uma declaração de alguma variável então se eu falo aqui por exemplo const nome né No que que é nome nome vai ser o nome da variável e Aqui o para melhorar o entendimento aqui eu vou chamar isso aqui de idade né então eu estou criando uma
constante idade que é uma variável né então const idade e aqui nós já temos um operador né que é o operador de atribuição que é o igual então eu vou falar aqui a variável idade ela vai ser igual a um por exemplo número um né então aqui a gente já fala de tudo junto né sintax da linguagem a gente tá declarando um variável tem um operador Aqui né e eu tenho também um tipo de dado que é o tipo numérico então é esse conjunto de coisas que vai formando aí a sintaxe da linguagem Então sempre
que a gente tiver vendo como que escreve alguma coisa como que declara como que faz as coisas ali se comunicar a gente tá usando aí a sintaxe da linguagem tá então basicamente isso aqui que nós fizemos foi a a declaração de uma variável né a variável idade e ela é uma constante o que que seria essa constante Né o como o nome já diz ele não se altera então eu não poderia por exemplo fazer o seguinte ó eu vou falar que idade é igual a 2 por exemplo é aqui eu vou salvar isso aqui e
vamos executar esse arquivo quando eu executo ele vai me dar um erro né que vai falar que a atribuição para um valor constante não é permitido E então é basicamente o erro que eu cometi que eu cometi aqui né de tentar eh atribuir um valor a uma constante E Aí nós temos outro tipo de variável que a gente declara usando let né que esse o a variável usando let ela é basicamente a gente consegue reatribuir o valor dela então aqui se eu tirar se eu falar que idade agora não é const eu vou declarar com
Let quando eu salvo isso aqui e executo ele não vai dar erro Olha lá ele chamou aqui né o node tal não deu erro ó executar de novo ó não apareceu nada no console então né Não tem problema isso aqui que nós fizemos e para ver as coisas melhores a gente vai usar aqui o console né o famoso console log isso aqui é basicamente para escrever no console né para sair algum valor aqui no no terminal e aqui nosso primeiro exemplo a gente não pode deixar a tradição de lado que é o console log Hello
Word né o primeiro hello world então quando a gente executa né o console log assim ele vai escrever no no Terminal hello world tá então eu posso dentro do console log passar eh Vários valores né separados por vírgula então o o console essa essa estrutura né de console. log é uma estrutura mais complexa que a gente vai falar mais na frente de objetos e métodos parâmetros e a gente vai falar mais sobre isso mas agora né Vamos ficar aqui só com com a sintaxe aí do console log né que é dessa forma a gente chama
né console ele é uma variável Global então de qualquer lugar Do arquivo que a gente chamar console vai funcionar e console.log dentro de console temos outros métodos tem até um link aqui de referência se a gente clicar aqui ele vai mandar a gente documentação né documentação aqui da mdn que é uma documentação bem completa aí sobre o JavaScript no geral né o JavaScript do browser ali mas também um pouquinho de algumas coisas do node mas aqui a gente tem algunas algum a descrição né do método console log mas Temos aqui também outras opções pros outros
métodos aí que nós temos dentro do console né que n Nós estamos vendo a api do console mas aqui nós temos todas as APS web que JavaScript tem tá algumas delas são compartilhadas com o node e e a gente já vai falar um pouquinho melhor esclarecer um pouco mais sobre isso mais para frente né mas vamos voltar aqui pro nosso [Música] vs code que nós iríamos né fazer o Consol log aqui da nossa variável né então eu vou colocar aqui idade se eu salvo isso e executo nós temos aí ó Hell Word 2 né então
ele separou ele fez o log de dois valores e a gente conseguiu isso enviando aí esses valores separados por vírgula aqui no conso log tá então voltando aqui pouco né como eu tava falando a parte do JavaScript no Browser e o JavaScript no node nós temos aí o o falando um pouco mais Contando um pouco Mais da história aí né o JavaScript ele iniciou nos browsers né ele foi primeiramente criado para ser executado no navegador e e ele fez veio fazendo isso por bastante tempo até que surgiu o node JS né o node JS é
basicamente foi basicamente a extração do Javas do navegador para um binário que pode ser executado direto na máquina sem a necessidade do navegador Então o que o node faz é basicamente pegar o nosso Arquivo JavaScript e executar ele direto na máquina que o node está instalado então isso aí permitiu a gente pegar o tirar o JavaScript do navegador e trazer pras máquinas né então pros servidores E aí sim o node começou a crescer com como com essa funcionalidade né de a gente ter o acesso ao JavaScript do lado ali do Servidor então voltando aqui no
navegador a gente pode ver a parte de documentação nós temos aqui né por exemplo o mdn ele vai trazer pra gente As documentações mais voltadas pra web né do JavaScript e aqui no nodejs nós temos aqui né na aba doc todas as documentações das apis do JavaScript voltado pro servidor voltado pro node né Então aqui tem muita coisa muita api diferente tem muita documentação aqui para ser consumida né o node Hoje ele já tá muito estável né e ele consegue cumprir qualquer tarefa aí referente a apis web com excelência tá então o JavaScript ele tem
essa divisão Né ele faz meio que ele se divide entre front end e e backend por mais que a sintaxe ela é compartilhada as apis que a gente usa são um pouco diferentes tá mas no final como a sintaxe é a mesma a gente entendendo essa parte de lógica de programação a gente vai conseguir e se dar bem aí tanto no JavaScript quanto no Browser quanto no navegador Tá então vamos voltar aqui eh eu tava falando né de das variáveis eh tipos de dados Então vamos continuar falando sobre isso né Porque quando a gente fala
de tipos de dados nós temos alguns tipos diferentes tá e o que que eu vou fazer aqui eu eu vou criar aqui por exemplo a variável sobrenome e se eu só faço isso ó let sobrenome e vou fazer aqui ó console P log sobrenome eu vou comentar esse conso log aqui esse primeiro pra gente não ficar poluindo aqui o nosso a saída né do nosso script eu vou salvar ISO aqui vamos executar e ele vai printar aqui ó Undefined tá então o que que é undefined undefined é um tipo de dado né Como como o
nome já fala um pouco né É não definido Então esse dado que não foi definido ele na verdade ele é um tipo aqui no JavaScript né então quando eu defino né o let sobrenome eu defino a variável sobrenome como eu não atribui nenhum valor para ela ela vai ficar como não definida tá o undef E aí nós temos os outros tipos de dados né que seria aí a idade né que é o numérico eu vou Trazer ele para cá e eu tô deixando esses comentários né que que é o tipo que é o Number comentários
a gente pode fazer comentários com Barras né ou também com o a esse barra asterisco né que seria o comentário em bloco e os atalhos para isso aqui né control barra vai comentar e descomentar né uma linha com as barras e Alt shift a né vai dar esse comentário aqui em bloco tá pra gente conseguir escrever mais coisas aí eu vou mover aqui as coisas ó vou tirar Esse consol log aquii também vamos melhorar aqui as coisas né então nós temos aí sobrenome que é um que no caso aqui nós estamos vendo como undefined idade
tá sendo como numérico eu posso ter aqui a variável nome e vai ser igual a um string Tá o que que é um string a gente pode declarar string com aspas duplas ou aspas simples mas a string é basicamente o texto tá então é um texto Então o meu nome né pode ter aqui o o caracteres Alfa numéricos né então a Gente pode ter letras números símbolos né várias coisas a gente pode colocar aqui dentro da string que é esse tipo de dado string né que é um texto tá que mais que nós temos nós
temos boleano então aqui eu posso criar aqui a variável hã posso criar por exemplo se a pessoa tem ou não CNH né CNH pode ser true ou pode ser falso né que é o tipo de dado Boleano que vem aí né Da Lógica boana e tal que basicamente Resumindo tudo né Eh Resumindo esse tipo de dado seria verdadeiro ou falso tá E aí nós teríamos também objetos e também listas listas né então o objeto ele a gente declara ele com Chaves né e a lista nós declaramos com coles tá então o objeto nós vamos ver
melhor mais para frente aí o o que que como é ele né como que a gente pode tá fazendo uso aí do Objeto e a lista também tá Então na verdade o tipo de dado eh objeto a gente vai a gente vai falar mais sobre ele a gente vai explorar isso aqui melhor porque agora se eu for explicar mais a fundo eh não vai ficar tão claro tá então para deixar aqui do para finalizar aqui né tipos de dados nós temos o objetos e lista é o arrei tá e nós teríamos também o tipo nulo
que é o nul né Então esse tipo nulo aqui também ele vai descrever aí algo vazio tá nulo e undefined a gente pode ter aí algumas levantar né algumas discussões aí sobre como que o que que é o que né O que que cada coisa significa Mas é para deixar claro aqui para vocês o undefined é algo que ainda não está definido e o nulo É de fato algo que não tem valor nenhum tá Beleza então vamos prosseguir aqui eh falamos de sintaxe falamos de variáveis tipos de dados vamos falar Aqui um pouco sobre operadores
né porque os operadores nós podemos aí realizar várias operações dentro aí ã do JavaScript então desde as operações matemáticas né para para fazer aí eh contas né com com números e no JavaScript até engraçado que a gente pode fazer contas também ou algumas operações na verdade com Strings né aí o JavaScript ele começa a ficar um pouco estranho e o comportamento mas é não é Algo tão comum assim da gente ter problema mas a gente eu vou eu vou dar alguns exemplos aqui vocês vão começar a entender melhor Tá mas então vamos lá vamos criar
aqui duas variáveis eu vou ter a variável a que é igual a 10 e a variável B que é igual a 2 por exemplo e aqui nós podemos fazer soma né então para para melhorar isso aqui eu vou eu vou criar as variáveis e depois a gente faz o o log delas tá então que eu tenho a variável soma que seria a + b né a Gente pode ter a multiplicação né multi vou chamar de multi seria o a x b que o vezes é o asterisco eu posso ter a divisão chamar de div só
vamos chamar completo aqui que seria a dividido por b e note vamos vamos deixar claro aqui também que os os nomes das variáveis a gente pode usar os caracteres comuns né ou as letras Mas nada de acento nada de asterisco de símbolos né ah nos nomes das variáveis a Gente mantém simplesmente os caracteres o o alfabeto ali somente letras tá sem nenhum acento e sem nenhum eh caracter especial como por exemplo o ccedil né caracteres especiais alguns a gente usa como por exemplo underline Cadê o underline underline dá para usar cifrão né hashtag ele já
reclama aqui então alguns a gente consegue outros não mas para eh pensar de forma geral aí a gente Poderia usar eh as letras minúsculas e maiúsculas né eu posso ter aqui também letras maiúsculas E também o underline eh só com isso aí a gente já consegue ter muita possibilidade aí de criação de nomes tá então Aqui nós temos soma eh multiplicação divisão subtração né seria o a - b certo nós temos aqui também o resto o operador resto que seria o resto da divisão né então seria o resto da divisão entre A e b a
gente usa o EC comercial o e Comercial não a porcentagem Cadê a porcentagem porcentagem né que vai dar o resto e eu tenho também a potenciação né que seria as duas exclamações exclamações não asteriscos certo e aqui eu vou fazer um consol de estudo e a gente vai ver aí o os resultados soma sub Multi divisão resto potenciação quando eu Salvo Não sei se vocês perceberam que ele tá adicionando os ponto e vírgula aqui para mim esses ponto e vírgula eles são opcionais e para que isso funcione eu tô usando uma extensão que é o
link tá a gente configura ela tem até vídeo aqui no YouTube Nosso configurando e para basicamente ele formatar o s link e o prier né são os dois que verificam por alguns padrões do no código e Formata o slint verifica os padrões O que que tá certo o que que tá errado o que que deveria colocar o que que não deveria e o prier formata o código da gente aí para sempre que eu salvo né então tem vídeo aí no canal explicando como fazer isso Tá certo então saindo de operadores nós temos também que são
na verdade ainda operadores né aqui seria os operadores e matemáticos aí nós temos também as operações onde a gente trabalha com relação Né operadores relacionais certo e nos operadores relacionais isso aqui já vai começar lembrar muito aí a lógica bole onde nós temos nós comparamos né se se algo é maior que menor que se E essas expressões né que Retornam pra gente o verdadeiro ou falso então por exemplo né Vamos aqui com os operadores relacionais a gente já pode começar falando dos operadores de igualdade então aqui a gente já vai começar a usar o Consol
para para ficar mais claro essas nossas operações e é vamos vamos usar o console log então vou fazer o seguinte console P log eu vou eu quero logar eu quero avaliar né se 5 é igual a 5 tá e note que aqui eu eu usei dois iguais né Igual igual eu estou usando aqui as as as minhas ligatures né que que basicamente é o que tá transformando ah os caracteres em em elementos em ícones diferentes então se eu coloco por Exemplo igual e a seta e maior que né ele transforma numa seta eu vou desativar
isso aqui ó fonte ligatures eu vou definir isso aqui PR falso para melhorar o a visualização de vocês colocar aqui igual igual isso agora sim e para quem ficou em dúvida eu abri aqui as configurações né control shift p a gente pode pesquisar aqui né por user settings as configurações do usuário e aqui é um arquivo Jason a Gente vai falar sobre arquivo Jason eu basicamente definir aqui como falso né o fonte ligatures Beleza então vamos voltar aqui né o conso Log 5 É iG a 5 se eu executo isso aqui eu vou B Vou
salvar o arquivo eu seleciono o que eu quero e clico ali em Run code né que é da nossa extensão e ele tá retornando aqui para mim true ou seja c é de fato igual a 5 se eu coloco por exemplo se 5 é igual a 2 e executar Nós temos aqui hum eu tenho que salvar o arquivo né ã deixa eu comentar esses outros consol logs aqui pra gente não ficar com a resposta ali errada tá salva o arquivo e executo Olha lá falso tá então 5 não é igual a 2 só que eu
posso fazer o seguinte ó 5 é igual a string 5 né se eu executo isso aqui ele me retornou como true tá então e por mais que eu tô com tipos de dados diferentes esse operador aqui ele vai Avaliar ignorando o tipo do dado né então aqui ele encontrou como verdadeiro eh o número cinco e a string 5 e se eu passar aqui três iguais né eu vou fazer o seguinte eu vou colar aqui embaixo vou fazer de do e do né E aqui com com três iguais se eu executo isso aqui né Essa parte
de baixo aqui vou selecionar nós temos como falso tá então o que que ele avalia com TR igis o que que é esse operador n ele vai basicamente avaliar se o tipo do dado Também é igual não só o valor ali né então ele não só verifica se 2 é igual a 2 ele verifica se o tipo do dado numérico é igual ao tipo do dado string né como não é ele vai retornar isso aqui como falso Tá certo então Além disso nós temos aqui o esse operador ele é de igualdade ele vai verificar igualdade
e nós temos também o A negação né que seria a não igualdade então eu poderia basicamente copiar esses caras e colar aqui e ao Invés de verificar com dois iguais eu vou verificar com exclamação igual né e eu tenho a exclamação com um igual e com dois iguais né se eu executo nós temos aqui ó true e false que seria os dois primeiros e a resposta de baixo tá negada né tá ao contrário Então tá falso e true né que seria aqui o o A negação tá a gente consegue também verificar dessa forma e agora
nós temos também os outros outros operadores aqui que é por exemplo Hum console log os maior que né 10 é maior que 2 e 2 eh se se 10 é menor do que 2 né Vamos fazer assim então esses operadores aqui também vai fazer essa avaliação aí em cima desses números pra gente e e vai retornar pra gente né se 10 é maior que 2 ó lá retornou como true e 10 menor que 2 ele retornou como falso Tá certo então nós temos o maior que e temos que seria né maior que menor que esses
operadores E temos o maior igual né e o menor igual também tá que vai verificar a igualdade junto né então eu posso verificar se 10 é maior ou igual a dois né vamos vamos executar isso aqui olha lá vai retornar true né 10 é maior do que 2 agora se eu falar que 10 é maior ou igual a 10 ele vai retornar true né porque 10 não é maior do que 10 mas é igual se eu fizesse isso aqui na expressão de cima verificar se 10 é mais do que 10 né que é o exemplo
aqui de baixo essa expressão aqui vai retornar falso né porque 10 não é maior do que 10 e aqui embaixo Eu Tô verificando se é maior ou igual tá então eu vou deixar esse exemplo aqui e o menor igual também da mesma forma né só aqui verificando se é menor Beleza então Além disso nós temos alguns operadores lógicos que seria o e né e lógico o ou lógico e O não Lógico tá então tem uns exemplos aqui ó vamos fazer aqui ó conso log se a minha idade né então vamos criar aqui a variável e
aqui eu eu já tenho a variabilidade tem aqui em cima né vou chamar vou fazer em inglês né ae se a idade né então se a idade for maior do que 20 e Aqui nós temos o Né o operador lógico e né então o e são os dois ex comerciais Então eu tenho aqui um exemplo se a minha idade for maior do Que 20 e se é programador né Vamos deixar assim ó programador igual true e aqui eu vou fazer né Se for maior do se a idade for maior do que 20 e se programador
for igual a true né Eh isso aqui essa comparação em si só ela já não faz muito sentido porque eu tô comparando um boleano com outro boleano mas eu poderia basicamente deixar aqui só programador né e programador já vai ser true ou falso vai Ser verdadeiro ou falso mas eu vou deixar aqui por por exemplo né né eu vou deixar esses iguais aqui se eu executo isso ele vai me retornar verdadeiro né Então aí minha idade é maior do que 20 e eu sou programador né Se eu colocar aqui programador como falso e a gente
executar nós temos aqui o resultado falso tá então o e lógico né ele vai avaliar se os dois lados da expressão é verdadeiro E aí nós temos o ou lógico né Eu vou fazer com o mesmo exemplo pra gente ver aqui que seria o o ou seria o Pipe né esse caractere aqui que é o dois pipes né que ele tá junto com a barra invertida aí no seu teclado e aqui ele vai avaliar né o ou né ele vai basicamente avaliar se um dos lados da expressão é verdadeiro se algum deles for a expressão
é verdadeira n ao contrário do e onde no e Lógico os dois lados precisam ser verdadeiro no ou não Somente um dos lados então a idade é maior do que 20 é programador é igual a true não é programador tá falso mas se eu executar isso aqui ele vai me retornar o segundo cons aqui né como verdadeiro porque um dos lado só da expressão é verdadeiro e nós temos também o não né que seria A negação então aqui eu vou fazer o seguinte console log a minha idade é maior do que 20 isso aqui por
si só ele vai retornar verdadeiro né porque a minha idade é de fato maior do que 20 mas o que que eu posso fazer eu posso fazer uma negação tá E aqui eu negaria toda a expressão então a sintaxe ficaria a seguinte ó eu coloco né o maior do do que 20 entre parênteses que é a expressão de fato e eu depois eu nego ela tá se eu salva isso aqui e a gente Executar a gente vai ver que eu quero executar só essa parte Olha lá ele Retornou falso né Por mais a minha idade
é maior do que 20 Mas como eu neguei essa expressão ele retornou A negação né o oposto que seria falso eh e na negação também a gente pode aplicar em cima das variáveis né então se eu negar aqui programador fazer aqui na linha de baixo ó onde programador já é um boleano né então como programador é falso esse log aqui vai ser true né verdadeiro porque eu estou negando o falso Beleza então finalizando Aqui operadores opera é finalizando aqui operadores vamos falar aqui um pouco sobre hum estruturas né um pouco aqui das estruturas condicionais então
eu V vou deixando comentado aqui principalmente os conso logs eu vou comentar aqui também essas variáveis antigas pra gente não ter problema de variável com o mesmo nome tá então vamos falar aqui sobre estruturas Condicionais tá que que é a estrutura condicional n ional já vem aí de condição tá então eu basicamente eu quero definir uma condição para alguma coisa acontecer e essa condição ela vai ser pode ser várias coisas né mas a gente vai estar sempre usando aí os operadores né seja o operador lógico e operadores relacionais pra gente tá determinando se eu quero
ou não fazer ali alguma coisa tá então são aí Estruturas extremamente importantes a gente usa isso aqui toda hora todo dia sempre que a gente tá programando então é uma coisa que a gente que é muito bom a gente entender tá então eu vou eu vou eu vou basicamente usar aqui uma variável eu vou chamar de resultado Isso aqui vai ser um inteiro né então vou colocar aqui o resultado oit por exemplo e o primeira essa primeira estrutura condicional que é a mais usada sem sombra de dúvidas é o if Né if que seria o
se né então eu quero verificar se alguma coisa é tal valor eu quero fazer outra coisa né E aí tem o se não a gente vai ver isso aqui mas a sintaxe aqui é if né então se resultado é maior do que se por exemplo então aqui a sintaxe seria essa eu tenho eu digito né a palavra reservado se o if Então se entre parênteses eu colocar aqui a minha expressão vai ser avaliada e Depois eu coloco o bloco né o bloco aqui a chave né o par de chaves onde o código que es dentro
desse bloco só vai ser executado se a minha condição for verdadeira então aqui dentro do resultado eu vou colocar aqui ó console eh como é como é resultado né eu vou colocar que seria por exemplo resultado de uma prova né então seria uma nota média maior do que seis né Tá na média eu vou salvar isso aqui vamos executar e temos aí né nota média foi Printada seu tirar aqui o resultado para por exemplo abaixar isso aqui para dois e executar nós temos nada no console né ou seja ele não entrou nesse bloco de código
aqui e aí entra né a outra parte do IF que seria o else que seria o se não né então se ele preencher a condição ele executa isso senão seria o else eu teria aqui por exemplo console log eh nota Baixa eu vou salvar e vamos executar isso aqui e temos aí ó nota baixa printado aí no console Ou seja a gente consegue né executar Eh condicionalmente esses blocos de código E aí tem teria a gente teria aqui uma uma evolução aí né do IF else que seria o else if né que é o qu
eu verifico uma condição né então se o resultado for maior que se a nota foi média senão a nota baixa né aqui é o padrão só que eu quero adicionar um novo if aí tá Então eu quero avaliar se a nota foi média baixa ou alta Então vamos reescrever isso aqui se o resultado for maior do que 8 é uma nota alta senão eu quero Verificar novamente então aqui é else if resultado maior do que seis tá então Ó aqui o que que eu tô fazendo eu tô meio que fazendo um alinhamento de ifs né
Colocando o if eh não é não tá dentro do outro mas tá eh em tá em escala né vem um após o outro tá que ser um if dentro do outro seria de fato eu ter dentro aqui do bloco desse primeiro bloco if né um outro if aqui aí sim o if estaria alinhado um dentro do outro mas são detalhes tá vamos continuar aqui noif né então se o resultado é maior que o nota alta sen Não eu quero verificar se o resultado é maior do que se se for maior do que se é uma
nota média e se não for nenhum desses casos eu tenho aqui um el no final que seria a nota nota baixa Tá então vamos salvar e executar aqui ele vai printar uma nota baixa porque a nota é do Se eu colocar S vai ser uma nota média né porque tá caiu nesse segundo if aqui e se for 9 a gente executa é uma nota alta tá Então é uma estrutura muito interessante tá a gente consegue fazer muita coisa aí com if desde que ele seja e dessa forma aqui com com El if né que seria
um if sequencial e eu posso também alinhar né colocar um if dentro do outro e um dentro do outro enfim aí a a coisa vai escalar aí pro tamanho do problema que você tá resolvendo tá então uma outra estrutura seria o sutch né o sutch case né Então como que é esse operador ele vai Basicamente a gente passa para ele uma variável que seria o resultado tá então tem o sutch a sintaxe aqui né seria o sutch parênteses passando aqui a variável que nós queremos e e Chaves tá então dentro dessas Chaves eu vou verificar
casos né então por isso que a gente fala swit Case então caso o resultado for oito por exemplo E aí aqui sim a gente coloca os dois pontos e faria a nossa coisa então console log ã nota uma nota alta Né E aí dessa forma eu consigo verificar por casos específicos dentro daquela variável né qual variável é resultado tá então o ele vai ele vai ter um um um uso específico ali para quando a gente quer de fato Verificar valores exatos então se eu tenho por exemplo uma variável nome n vou criar aqui uma variável
nome e vai ser o Vinícius então eu vou verificar no sutch eu vou fazer um Switch no nome e aí caso o nome seja igual Vinícius eu posso fazer por exemplo consol aqui da da nota do Vinícius né seria aqui uma nota dois pontos e depois eu coloco a nota por exemplo oito pode ser isso tá E aí se o nome vou fazer outro caso aqui ó se o nome for o meu nomea eu faço um consol log da nota que seria um um qu por exemplo é um vírgula aqui tá então com com o
swit case a gente vai conseguir também verificar aqui essas condições em cima De alguma variável específica Tá então vamos executar aqui esse Switch pra gente ver nós temos aí ó Ah tá esqueci uma coisa né no Switch Case nós temos que sempre que eu eh chego em um caso sempre que eu avalio um caso depois que eu avalio eu tenho que mandar um Break que é basicamente para ele parar de de de resolver os outros casos tá porque ele tem esse comportamento a gente não eu não vou entrar tão a fundo aqui para explicar o
Por que esse esse esse comportamento do swit Case mas basicamente sempre que a gente resolve um caso eu mando o Break para ele parar de de resolver os outros casos para mim tá porque se a gente ver aqui ó ele fez o conso log das duas notas né que tava sem o Break tá então quando a gente adiciona o Break eu vou executar novamente só isso aqui aí sim ele vai avaliar o caso encontrou encontrou o caso ele ele vai parar né o Comportamento padrão seria ele buscou o caso encontrou resolve que no caso seria
o Vinícius e sem o Break né ele vai continuar resolvendo todos os outros casos após esse tá então esse esse é o comportamento dele e para resolver para ele não ficar resolvendo outros casos que não nos interessa a gente adiciona o Break Tá mas é aí uma estrutura também um operador né condicional muito interessante pra gente beleza então Vamos comentar isso aqui e vamos falar aqui agora das estruturas de repetição comentar aqui ó repetição que aqui n de repetição nós temos aí dois carinhas bem bem interessante onde um deles a gente usa quando nós conhecemos
né a quantidade aí de repetições Então eu vou deixar até aqui comentado conhecemos a quantidade de Repetições e quando nós não conhecemos n Então vou copiar isso aqui colo aqui baixo e quando nós não conhecemos tá então quando eu conheço a quantidade de repetições né Eu quero repetir esse código x vezes eu sei esse número eu uso um for loop tá então a gente chama o o for loop né ele basicamente ele vai receber aqui três parâmetros de de início onde basicamente nós temos o o primeiro parâmetro vai ser o nosso a nossa variável de
controle né então Normalmente a gente chama de i de x de J de Z que é uma variável que vai controlar aí Quantas vezes a gente vai querer que que esse meu loop se Execute então por exemplo se eu passo o let eu tô declarando um variável né então dentro dos parênteses Eu tô definindo né que o let i a variável i igual a 10 a gente separa com ponto e vírgula tá então nós temos a variável de controle a gente vai ver fazer a condição para para esse loop continuar Então eu quero que Esse
loop ele continue enquanto por exemplo enquanto o I for menor do que 10 ou melhor né for enquanto o I for maior do que zero tá a gente pode fazer isso de alguma forma por exemplo eu vou iniciar o i então o let I né o i a variável de controle ela vai começar em zero e eu vou executar isso aqui enquanto I for maior for menor menor do que 10 tá então ele vai Executar né 0 1 2 3 até chegar no 10 enquanto ele for menor do que 10 então ele vai ir até
o no tá e o terceiro parâmetro aqui vai ser basicamente o o o código que vai ser executado aí a cada interação então ele vai executar o loop vai repetir uma vez e vai executar esse essa parte aqui do código que seria basicamente o comum que a gente faz é usar o i mais mais né ou I vai ser vai ser igual a i + 1 tá esse operador mais mais ele basicamente incrementa um então Ele vai aumentar um aí no naquela naquela variável numérica então quando eu falo i mais mais eu tô basicamente somando
um uma unidade pro meu número tá então a gente tem essa definição e Aqui nós temos as nossas chaves onde basicamente aqui dentro eu vou fazer um console log da minha variável de controle que é a variável I tá então eu salvo isso aqui e executo e nós temos aqui ó 0 1 2 3 4 5 6 7 8 9 tá então ele executou isso aqui 10 vezes né Porque começou de 0 até 9ve E como eu disse né para cada vez que ele executa o loop ele vai executar aqui a iteração vai aumentar em
uma unidade ele avalia a condição né se tá válida ou não E aí executa de novo e vai fazendo isso n Então esse é o for loop que a gente vai sempre usar ele quando nós conhecemos aí a nossa quantidade de repetições tá E aqui o segundo loop vai ser um loop que nós não Conhecemos a quantidade de repetições então aqui eu vou criar variável vou chamar essa variável de J ela vai ser igual a zer e aqui o esse loop ele é o Wi né que traduzindo seria enquanto né então dentro do aqui os
parâmetros dele né vai ser basicamente essa avaliação dessa expressão então enquanto J for menor do que 10 por Exemplo enquanto J for menor do que 10 eu vou ficar executando esse meu loop então aqui dentro eu posso fazer por exemplo console log de J mas mas tem um cuidado porque se eu executo isso aqui do jeito que tá agora isso aqui vai entrar num Loop Infinito por porque J ele vai ser sempre menor do que 10 tá então com esse w loop Eu acho que eu vou até executar isso aqui Tomara que a minha máquina
não trave mas tomem cuidado quando eu executo ele vai ficar Aqui printando printando zer zer zer enfim eu vou parar aqui eu vou dar um cont control c para ele parar Espero que ele tenha parado tá rodando ainda como vou fechar aqui pronto fechei Deu até um erro aqui ó é Loops não são legais cuidados com Loops infinitos na programação Porque isso pode lhe dar problemas e até prejuízos tá então Pens por exemplo a Empresa que tem um servidor que tá em produção tá na nuvem né E sem querer Vai um loop finito para lá
o negócio fica loop finito sem controle né não é legal tá então o que que eu tenho que fazer aqui para resolver dentro do meu loop eu tenho que avaliar a minha condição então por exemplo aqui eu vou fazer o seguinte eu vou adicionar então J vai ser j + 2 dentro do corpo aqui da minha da minha do meu loop tá então quando eu salvo isso aqui e a gente Executa a gente pode ver que é o meu computador tá com sequelas aí do do Loop Infinito tá deixa eu selecionar aqui só o w
loop que ele printou o for loop também vou executar novamente e nós temos aí ó 0 2 4 6 e 8 por ele executou isso aqui essas cinco vezes porque eu estou basicamente para cada iteração né que eu faço do while loop eu incremento dois aí na variável De controle tá então são estruturas extremamente interessantes isso aqui é muito útil pra gente no dia a dia e Vale ressaltar isso né porque uma delas a gente usa sempre que eu conheço quantas vezes eu quero ficar repetindo a outra eu quando eu não sei né eu crio
aí esse loop e crio também a condição para que eu não entre um Loop Infinito Tá então vamos partir aqui para o nosso próximo assunto onde a gente vai falar um pouco aqui sobre Funções funções eh objetos e listas tá então o que que é uma função né do mesmo jeito que nós vimos aqui os blocos de código né o bloco do IF bloco do while eh o bloco do for né a função ela é o um bloco de código só que a gente consegue referenciar ela várias vezes então por exemplo Vamos criar aqui né
o function Aqui nós temos na sintaxe né function então function soma e Aqui nós temos o parênteses e Chaves tá então dentro de uma função nós temos aí parâmetros né parâmetros e argumentos né basicamente uma função ela a gente envia o parâmetro e a função ela recebe ali um argumento é bem confuso isso eu gosto de referenciar sempre como parâmetro Então vou usar aqui parâmetro né Sempre que eu falar parâmetro é uma coisa que eu vou enviar para uma função ou um valor que a função recebe então a função soma ela vai ela pode receber
diversos parâmetros E eu dou nomes para esses parâmetros para mim conseguir referenciar eles então por exemplo eu vou ter aqui na função soma um parâmetro que eu vou chamar de a e outro parâmetro que eu vou chamar de B beleza e uma função ela pode fazer várias coisas como por exemplo console. log de A mais B certo então dentro do consol log eu tô realizando uma operação que é a soma o Resultado dessa soma vai ficar cair no consol log ele vai mostrar no meu terminal tá então se eu salvo isso aqui e executo não
vai ter nada no meu terminal porque eu só declarei a função né a função eu tenho que chamar eu eu preciso chamar ela né invocar ela então aqui eu vou chamar soma e para de fato executar né soma é o nome da função para executar ela eu passo parênteses tá E aí quando eu passo parênteses ele já aparece aqui para mim Ó A e B que onde A e B seria basicamente os parâmetros então eu quero somar um o segundo parâmetro é do Beleza vou salvar e executar o arquivo né e ele printou aqui para
mim TR né que é o resultado da soma né de 1 + 2 eu posso chamar isso aqui várias vezes somando 2 e 2 somando 5 e 3 quantas vezes eu quiser tá vou executar aqui ó 3 4 e 8 tá então a gente pode ficar Chamando isso aqui ã várias vezes pra gente re executar né executar várias vezes aquele bloco de código então a gente começa a criar funções com finalidades específicas né ah eu quero uma função para processar os dados daquela compra eu tenho ali bonitinho aquela função e aí sempre que tiver uma
compra eu chamo a mesma função e a gente consegue otimizar muito o nosso trabalho aí Com o uso das funções tá e as funções a gente pode fazer o consol log Mas a gente pode também retornar valores né então aqui Eu por exemplo eu vou fazer o console log e na verdade eu não vou fazer mais conso log eu vou criar aqui um variável dentro da função né como eu tenho o bloco de código eu posso fazer várias coisas né como por exemplo declarar outras funções então eu vou ter aqui uma função escrever Escrever essa
função ela vai receber um valor e dentro dessa função eu faço um console log do valor tá ó ó a doideira Então dentro da função soma eu vou realizar a operação Então vou criar aqui uma variável resultado vai ser igual a + B né a soma da das duas variáveis depois que eu tenho o resultado eu vou chamar função escrever e escrever vai eu vou passar para escrever né a variável resultado que é o resultado da minha Operação e no finalzinho eu vou retornar ó return é a palavra reservada eu vou retornar também o resultado
então ó a o tanto de possibilidade que a gente começa a ter né porque dentro de uma função eu posso declarar outra função posso declarar variáveis e a gente começa ter várias possibilidades dentro aqui desse escopo dessa função a gente não falou sobre escopo ainda mas eu já vou explicar para vocês aqui Vocês já vão entender tá Vamos só finalizar aqui esse exemplo aqui da função soma né eu vou chamar ela só uma vez passando um e do e esse console log interno aqui né da função escrever eu vou colocar o seguinte ó antes do
valor eu vou printar aqui eh que seria eu vou deixar aqui ó resultado interno só pra gente diferenciar tá resultado interno e o valor ele vai escrever isso aqui eh e a minha função soma agora ela retorna um Valor tá então esse retorno eu posso atribuir a uma variável Então vou criar aqui um variável resultado da função ó ó os nomes função soma ó que variável bonita resultado da função soma e aqui depois eu vou fazer um consol log resultado e o resultado aqui vai ser a minha variável linda que eu criei Salvando isso aqui
tudo e executando vamos ver aqui o que que nós temos ó resultado interno 3 tá que é a minha função interna que escreveu no console ela ela realizou a operação chamou a função escrever né aqui em cima eu declarei a função aqui embaixo eu invoquei retornei o valor para quem me chamou então aqui aonde eu chamei a função soma eu retornei esse valor né esse resultado que eu atribuí na na minha variável e fiz um outro Console log né que são esses dois consol Logos que nós temos aqui então dentro de funções nós podemos fazer
aí muitas coisas né muitas coisas muito interessantes aí eh paraa Nossa aplicação tá então eu vou comentar aqui funções e vamos falar aqui agora um pouco de objetos e listas Então sempre que nós estamos trabalhando aí com objetos eu vou chamar isso aqui de obj o objeto ele vai ser aí essa estrutura Um pouco mais complexa né onde ele tem Chaves e valores um objeto ele vai ter uma propriedade uma chave e dentro daquela chave eu armazeno um valor então a gente usa objetos muitos para para descrever as coisas né então eu posso ter por
exemplo aqui dentro do objeto ã por exemplo o nome meu nome a idade seria a minha idade e dentro das chaves Né para cada chave o valor ele pode assumir todos os tipos de dados né Que tipo de dados nós falamos aqui no início número string boleano objeto uma ar Rei então para cada chave né nome idade CNH enfim a gente pode ir criando aí várias outras priedades né que seria essas chaves e cada propriedade tem o seu valor tá E aí dentro do objeto Eu consigo eu posso fazer por exemplo console log do objeto
vamos salvar isso Aqui e executar nós temos aí ó o objeto printado no terminal tá e eu posso acessar essas propriedades então se eu digito aqui ó objeto ponto nós temos aí ó nidade CNH tá então eu esse conjunto de dados com chave e valor para descrever alguma coisa com objeto e eu consigo acessar esses valores e individualmente tá então eu tenho por exemplo eu posso aqui em Objeto eu posso ter aqui por exemplo tenho aqui uma propriedade programador ou melhor profissão né né e dentro de profissão eu eu o valor de profissão né que
seria aqui depois dos dois pontos o nome com os dois pontos né Faz parte aí da sintaxe do objeto objeto Como eu disse lá em cima é declarado dentro de Chaves então a profissão tem um nome né enfim teria outras propriedades aqui Mas eu posso por exemplo acessar objeto ele já até montou aqui para mim né a estrutura aqui do meu objeto objeto ponto profissão ponto nome e aqui eu tenho a string programador né se eu executo esse código eu tenho aí no terminal programador então o objeto facilita muito pra gente agregar informações e e
dar nomes né ã criar Chaves aí para representar Qual que é o valor ali dentro dessa Estrutura que o objeto permite a gente criar tá então é muito bom é muito usado para descrever eh entidades entidades que a aplicação nossa pode trabalhar então a aplicação tem um usuário a aplicação tem um produto tem um perfil tem serviço Então essas entidades né e produto usuário serviço tudo isso aí pode ser pode e é descrito usando objetos tá então além do objeto nós temos aqui também a lista né onde a lista ela é mais simples porque Ela
não tem chave né o objeto é chave valor a lista ela é indexada né então ela só tem posições então eu posso ter aqui uma lista ó um com número um e aí eu separo por vírgula né do 3 eu posso ter um objeto com nome eu posso ter um boleano true né undefined nulo enfim a lista ela ela é esse conjunto de eh valores onde esses valores eles podem assumir aí diversos Tipos né diversas estruturas então eu posso ter uma lista dentro da outra também Oli uma lista vazia e aí dentro dessa lista eu
posso ter outros valores enfim aí por aqui vai né e eu posso fazer aqui ó vamos fazer aqui o console log da lista se eu executo nós temos aí né todos esses valores que eu defini e para acessar os valores individual a gente acessa o índice né então aqui eu uso os colchetes Para passar o índice que eu quero então se eu quero o índice dois né que é o valor 3 aqui a lista o índice sempre começa do zero né então aqui é índice 0 1 2 né que seria o valor 3 ali então
se eu faço o consol da lista no índice 2 executo nós temos aqui ó o número 3 se eu pegar o índice 3 Eu vou ter esse objeto aqui com o nome né olha lá o nome eu vou pegar o índice 456 7 né que seria essa minha outra Lista salvar isso aqui olha lá ó a outra lista que eu tenho aqui né que é esse último carinha aqui e aí dentro dessa lista eu posso pegar também um outro valor por exemplo o número dois aqui e aqui a sintaxe seria essa eu tenho né dois
par de Chaves aqui colchetes né que seria o índice zero dessa segunda lista Então esse lista aqui no índice s me retornou uma outra lista que eu quero o índice zero Executando não eu fiz errado não não printou nada aqui porque eu tava selecionado só esse essas chaves aqui né colchete vamos executar de novo ó lá número dois que é esse carinha aqui tá então eh objetos e listas são bem úteis tem tem muitos métodos relacionados a eles então a gente consegue trabalhar muito mais com objeto e lista de uma forma bem mais prática a
gente pode aplicar Loops né em Cima aí dos objetos e enfim criar uma estrutura muito que facilita muito o trabalho e essas formas tá tudo abordado no curso né o curso nosso lá na comunidade da mestre nós temos um curso de lógica de programação que tem todo esse conteúdo aprofundado lá pro os membros Beleza então dito isso vamos partir aqui pro o que eu diria que é um um dos carinhas mais principais aí que que são né as Promises né O que Que é uma Promise né a promise aí dentro do JavaScript e consequentemente a
gente vai est falando aí de programação assíncrona tá então o que que é uma Promise a promise como o nome já diz ela é uma promessa né então o que que é essa promessa ela é uma promessa de uma resposta tá então o que que seria né essa resposta seria qualquer qualquer tipo de dado né então se por exemplo né Vamos imaginar aqui um Um caso e a gente já vai falar também de programação assíncrona eh se eu tenho que fazer a lei leitura de um dado no banco de dados né Ou seja eu quero
pegar o nome do usuário que tem o identificador um né para fazer essa operação que é uma operação de io né input output entrada saída é uma operação assíncrona o que que o que que é isso basicamente é uma coisa que demora para acontecer relativamente falando o que seria a Velocidade de um computador e por conta dessa demora a o nosso a nossa aplicação ela não pode ficar esperando aquilo ali acontecer Tá então vamos imaginar aqui nesse nosso script né nesse nosso arquivo aqui que eu tenho eu tenho vários códigos né eu tenho ali várias
sequências várias instruções uma após a outra e no meio dessas instruções eu eu tenho que por exemplo escrever lá no banco de dados alguma informação né Então essa Escrita no banco de dados vamos supor que isso aí vai demorar 2 segundos Só que eu não quero que a o meu código o meu script ele fique parado ali esperando esses 2 segundos eu quero que ele continue fazendo outras coisas que ele tem que fazer tá então é aí que entra essa essa ideia do assíncrono e consequentemente essa ideia das Promises também entra em jogo tá então
vamos mostrar aqui primeiro o que que seria uma coisa assíncrona é aqui no JavaScript e pra gente ver isso aqui funcionando ter uma noção um pouco melhor E aí depois a gente vai pras Promise e aprofunda um pouco mais e nessa ideia tá então o que que eu vou ter aqui primeiramente eu vou ter um console log vamos usar o console aí para provar pra gente esses nossos pontos né então vou ter um console log que vai ser o início do programa certo o meu programa Vai Iniciar aqui e eu tenho uma função aqui no
JavaScript que é o set timeout Tá o que que é essa função né O que que é esse timeout na verdade ele vai ser Olha só ele recebe dois parâmetros onde o primeiro parâmetro é uma função o segundo parâmetro é um número tá então o que que ele vai fazer ele vai definir o o time out que seria esse não é bem o intervalo mas é um tempo um tempo definido que é esse número esse numérico e depois desse tempo ele vai Executar a Função tá então o que que eu tô falando aguarde 2 segundos
que esse valor aqui é em milissegundos né então 2000 é 2 segundos eu quero que isso aqui esse essa instrução né ele vai aguardar 2 segundos e depois dos 2 segundos ele vai executar essa função tá E aí Isso aqui ele vai resolver o o próprio node aqui ele vai tratar isso aqui de forma assíncrona então vou fazer o seguinte um console log Função após 2 segundos tá E aqui depois eu vou fazer um outro console log final do programa ou melhor o programa continua Beleza então quando eu executo isso se a gente prestar bem
atenção aqui no console olha só o que que aconteceu Ele printou início do programa ou seja o programa iniciou a execução fez algumas coisas né vou até deixar aqui ó os três pontinhos aqui ele fez alguma coisa Eh definiu esse timeout aqui para fazer uma coisa depois de 2 segundos e ele continuou a execução né ele continuou a execução por qu ele printou o programa continua que é foi essa segunda linha aqui no console e logo e só depois de fato de 2 segundos que ele printou aqui né a função após 2 segundos então com
essa estrutura que nós temos aqui eu vou D Play ali de novo olha só a gente ele realmente eu vou aumentar aqui para 5 segundos Pra gente ver aqui no terminal que ele de fato vai ficar ó vai ficar os 5 segundos esperando para depois Executar a minha função né E nesse intervalo de tempo o meu programa em si ele não ficou parado porque ele printou né o console o programa continua então ele continuou a execução para fazendo outras coisas que lhe interessava né que nesse caso aí seria ã esse console log tá Mas o
que eu quero provar para mostrar para vocês aqui é Essa ideia de assincronia né que são várias coisas acontecendo ao mesmo tempo tá E aqui não foi ao mesmo tempo porque o nosso programa ele é muito simples né Ele só tem dois conso log então claramente ele vai executar os dois conso logs rapidamente e só depois que ele vai ã printar o timeout né mas se tivesse mais coisas aqui para baixo o nosso ele ia continuar executando como se nada tivesse Acontecido tá então essa ideia aqui isso aqui seria a ideia do do de alguma
coisa assíncrona tá E com essa ideia dessas coisas assíncronas a gente vai chegar na Promise tá que essa Promise seria a promessa de uma resposta tá então a promise ela vai ter alguns estados diferentes que seria o estado basicamente de completa ou rejeitada né então a promise ela ela a gente cria ela né ela vai iniciar ali a Execução E aí quando ela resolver se ela resolver ela retorna uma resposta pra gente se ela não resolver ela vai retornar um erro ou melhor ela vai ser rejeitada né não necessariamente é um erro mas a ideia
é essa né eu vou ter ali uma promessa então vamos fazer aqui aqui o nosso Exemplo né eu vou criar aqui a variável promessa e ela vai ser um Promise né então a a sintaxe aqui seria um 1 Promise certo a promise ela recebe uma função essa função ela tem dois parâmetros beleza que é essa estrutura então o que que nós temos aqui ã de parâmetros né né Eu chamei aqui de res e e r né que seria o resolve e o reject e esses parâmetros são funções tá então o que que eu vou fazer
aqui eu crio a minha Promise e aqui dentro do corpo dela eu vou chamar Resolve passando aqui um valor 1 2 3 Beleza agora que eu tenho essa minha promessa de de de resposta né eu posso chamar aqui a variável promessa e quando eu digito ponto nós temos aqui ó três propriedades que seria o den né o o cat e finally então o que que é esse ponto den né esse den Se a gente fosse traduzir e seria um então ou algo alguma coisa do tipo mas é basicamente uma função que vai ser executada com
a resposta né caso a minha Promise ela seja resolvida então quando a minha Promise resolver ele vai chamar aqui a função que tá no ponto den né então o ponto den ele vai receber também uma função tá E essa estrutura na verdade de função a gente não passou por ela né Eh no set timeout aqui também eu falei mas a gente não explicou eu acabei não explicando aqui em função mas é basicamente as essa aqui são as zero functions Né e basicamente eu posso declarar uma função usando function né dessa forma eu dou um nome
para ela ou eu posso também declarar usando a errow function né eu vou chamar de nome dois que seria essa notação a primeira eu uso né o o nome a palavra reservada function e na segunda eu uso uma constante né que seria aí essa variável e o valor dessa variável é são são os parênteses aí esse Arrow que seria um a a flecha né e o bloco que da função então nós temos essas duas formas Aí esses dois aqui são eh funções equivalentes tá duas formas de declarar a função e uma função também ela não
necessariamente precisa de nome né então eu posso criar as funções anônimas que são funções eh sem nome tá que é o caso aqui da minha da minha errow function beleza então é isso tá eh esse esse essa notação essa sintaxe que eu tô fazendo aqui né de função eh e que eu não expliquei agora sim eu Expliquei para vocês que são que é de fato uma forma diferente de declarar uma função Tá então vamos continuar no meu ponto den né ou seja se essa minha promessa for resolvida eu estou resolvendo com o número 1 2
3 Então esse esse número que pode ser um objeto uma Array uma string o que eu quiser né eu vou receber isso como parâmetro dessa função aqui do ponto den então aqui eu vou chamar isso aqui de Response e aqui dentro do ponto den eu vou simplesmente fazer um console ponto log response e vou salvar Tá então vamos executar isso aqui e a gente vai ver que ele vai printar aqui no console 1 2 3 tá então o que que é esse 1 2 3 é a resposta da minha promessa né da minha Promise Então
se ao invés de resolver eu rejeitar chamar aqui o reject reject 1 2 3 se eu executo aqui no meu no Meu console eu ten um erro aqui que é o seguinte que foi o qu né eu rejeitei a promise mas eu não tratei esse caso de rejeição tá Então como que eu trataria isso né Eu trataria isso usando o ponto Cat e o ponto catch vai ser parecido com o ponto den né só que o caso o ponto Cat ele vai ser chamado caso a minha Promise seja rejeitada E aí o valor que eu
passo aqui no reject também eu vou eu vou pegar no CAT normalmente no CAT a gente chama de error né error E para indicar erro né que basicamente se caiu no CAT é porque deu algum tipo de erro e aqui eu vou fazer simplesmente um consol log também desse erro então ao invés de 1 2 3 eu vou passar aqui a string er pra gente ver isso aqui e quando executado eu tenho aqui no meu terminal erro tá que foi o caso do cat aí da minha promessa tá Então por que e basicamente né agora
que nós já entendemos melhor o que que é a promessa o que que como que isso se relaciona né Com a parte assíncrona porque dentro da Promise eu posso realizar essa minha operação que demora tá então o que que seria a operação que demora no nosso caso aqui é esse set timeout eu vou copiar ele aqui ó e vou colocar o set timeout dentro da minha Promise beleza E aí dentro do Set timeout ao invés de chamar um consol log eu vou basicamente resolver a minha Promise Então vou resolver aqui passando Promise Resolvida com sucesso
beleza E aqui depois do meu denat eu vou colocar aqui ó o console P log o programa continua a e eu vou salvar isso aqui então quando eu executo meu programa eu tenho aqui ó o programa continua a execução que já é o meu consol log e depois de 5 segundos Olha lá Promise resolvida com sucesso tá então vou copiar aqui ó vou Colocar um consol log no início que seria o programa iniciou né Mas vocês já viram aí o o funcionamento da Promise porque com ela né com essa promessa eu consigo realizar operações que
vão demorar mas o meu programa do lado de fora né que seria a operação que vai demorar tá dentro da Promise né a parte de fora ele vai continuar executando normalmente fazendo as coisas que deveria E aí sim quando essa minha Promise ela é Resolvida ou quando ela for rejeitada ele vai executar o MDO referente aqui que eu registrei né que eu defini e a minha aplicação vai continuar funcionando livremente sem nenhuma preocupação Beleza então com isso aqui eu quero trazer aqui agora só mais um exemplo pra gente ver um pouco aqui sobre ã assim
que a wait né porque aqui os exemplos eles estão bem superficiais novamente tudo isso aqui de uma forma Mais profunda com exemplos um pouco mais mais explicados vocês vão encontrar lá dentro da nossa comunidade não só no curso de lógica mas nos outros cursos de backend de react react Native onde a gente de fato usa essas ideias no usa isso aí num num exemplo real né numa aplicação real pra gente ter essa noção melhor de como que as coisas funcionam tá então para finalizar isso aqui eu vou comentar isso aqui pra gente Falar um pouco
do do a a88 porque basicamente a a88 é uma forma diferenciada de usar o dcat tá então seria uma anotação um pouco diferente uma anotação um pouco mais fácil mais simples de trabalhar e a gente vai conseguir ver isso e conseguir entender de fato essa diferença no dia a dia ou quando a gente tá desenvolvendo aí algum projeto um pouco mais avançado tá mas aqui para para esse exemplo aqui O que que eu tenho aqui pra gente eu vou criar uma função que é a função buscar dados essa função buscar dados essa aqui vai ser
uma Arrow function tá vamos declarar aqui com com a function essa função ela é uma função assincrona tá então a função assíncrona a gente coloca um a antes né aqui no caso do errow function seria antes dos parênteses se Eu tô usando function é o function exemple eu colocaria o A5 aqui no início né A function exemplo eu vou deixar comentado aqui então uma função assíncrona se a gente bota o mouse aqui em cima a gente vê que isso aqui seria o tipo da minha função tá sempre que a gente fala de tipo tipagem seria
né um um tipo de dado tá Então só que aqui no caso essa essa essa minha função ela retorna uma Promise né ela não retorna um número uma Rei um objeto ela tá retornando promes e a promise nós vimos aqui exatamente aqui em cima o que que é né então toda a função assíncrona ela vai retornar a promise tá E aí eu tenho aqui um exemplo que seria usando o fet né que que é esse fet fet seria basicamente um uma função do próprio node aqui o browser também tem ela que vai realizar requisições Http
tá então eu vou tô basicamente realizando uma requisição para api do github para buscar informações de um usuário que usuário é isess o meu usuário tá então eu vou pegar informações aí do meu usuário e na api do github e isso aqui é uma operação assíncrona né porque demora um certo tempo então eu quero realizar a busca dos dados eh mas a minha aplicação ela tem que continuar fazendo o que ela tem que Fazer tá então aqui buscar dados se a gente bota o mouse aqui em cima ele retorna ó uma Promise Ó depois dos
dois dois pontos que nós temos aqui o retorno né então a minha função ela recebe o input que seria o RL que eu tô enviando né URL da api do github e ela retorna essa Promise aqui com essa resposta então dentro do do do meu da Promise né a gente viu que a gente pode usar o den Cat pon den ponto catch o ponto final né ponto final é basicamente vai executar No final de tudo Independente se deu certo ou errado Tá mas e como eu tô dentro de uma função assíncrona eu posso usar o
aight tá e o que que é o aight ele é basicamente uma simplificação do ponto den né então eu eles simplificaram o ponto den com a weight então se eu pego aqui ó o const response é a variável response eu vou atribuir nela o resultado aqui do meu fat se eu ve se eu ver o tipo de response eu tenho O eu vou chamar de R né para não ficar confuso o tipo de R é response tá e se eu olhar aqui o fat fat tá retornando uma Promise de respon tá então o que o
await tá fazendo aqui é basicamente dando um ponto den né ele vai executar isso aí caso dê o sucesso tá então pra gente ver os dados eu tenho que converter os o Os dados aqui então vou chamar aqui const data vai tá em r. Jason né que isso aqui se trata de requisições http a requisição a gente Recebe a resposta eu pego a resposta converto né do da string para objeto usando aqui o método do Jason né então o Jason aqui ó retorna um Promise de n né n seria qualquer coisa ele não sabe o
que que tem aqui dentro dessa resposta mas é também um Promise então como é um Promise eu posso fazer o await eu vou aguardar e aqui eu vou fazer né o console. log de data Então como buscar dados né é uma função então simplesmente aqui Depois de declarar a função eu vou chamar né a função buscar dados se eu salvo isso aqui e executo a gente vai ver que vai ter aqui todas as informações do meu github né do meu perfil do github então eu tenho isso aqui e pra gente ver isso aqui funcionando vamos
adicionar os consoles né console log início do programa e aqui no final console log o programa continua a Execução salvo isso aqui vou executar de novo e nos logs Aqui nós temos né início do programa o programa Continua em execução que é seria o último passo né Eh E no meio nós chamamos né buscar dados só que como buscar dados é assíncrono ele executou em paralelo né então Eh buscar dados aquela ideia da Promise né ele iniciou a promise que foi lá no github buscar os dados converter de Jason para para objeto e fazer o
consol log então como Isso foi assíncrono foi mais demorado Ele simplesmente invocou aqui iniciou a busca dos dados iniciou a execução né dessa função de forma assíncrona e o programa inicial a raiz aí começou continuou eh executando Sem problema nenhum tá então esses exemplos aqui são exemplos que vocês conseguiram eu acredito que eu consegui explicar muito bem para vocês entenderem melhor o contexto Por que a gente faz isso e só que lá no nosso Curso né na Comunidade da Mestres nós temos isso aí muito mais aprofundado né então nós temos tanto o curso de lógica
quanto outros cursos né react Native react backend então todos esses cursos todo esse esse esse aglomerado aí de projetos vai te dar essa noção melhor de como onde né aplicar isso e por que isso realmente essas ideias né são fundamentais aí pra gente quando a gente tá desenvolvendo então a gente passou aqui do básico até o início aqui do Avançado né que seria essa parte assíncrona essa parte de Promises e lá na nossa comunidade a gente aguarda vocês lá com mais conteúdos mais projetos mais tem uma galera lá que que já tá movimentando tudo então
tá um ambiente bem interessante para quem de fato tá iniciando aí na programação e tá aprendendo a a ser um desenvolvedor aí full stec Beleza então para essa aula aqui é isso eu espero que eu tenha ajudado qualquer dúvida pode deixar um Comentário logo abaixo e é isso aí muito obrigado e até a próxima i [Música]