E aí pessoal, beleza? Aqui quem fala é o professor Naldo, auditor na área de TI. Para quem tá se preparando pro concurso do Ban Ru cargo de técnico em TI, eu preparei esse vídeo com um compilado de aulas sobre diversos temas previstos lá na parte de conhecimentos específicos, especificamente para o cargo de técnico em TI em desenvolvimento de software. Então você vai encontrar nesse vídeo uma série de aulas com questões comentadas Também, entre outros assuntos aí que vão complementar e contribuir para sua preparação nesse estudo pro concurso do Ban Ru, beleza? E aí, qualquer dúvida
que você tiver, utiliza os comentários. Tô aqui para ajudar vocês. Se você quiser ter acesso a ainda mais questões comentadas, atualizadas de 2025, eh, te convido aí a fazer parte do nosso programa de membros. Então, a gente tem vários níveis de membro. Você fazendo parte eh de qualquer um deles, você vai Ter acesso a questões exclusivas lá comentadas e atualizadas, tá? E se preferirem eh uma preparação ainda mais avançada, eu recomendo você conhecer aí os nossos parceiros. Os links vão estar na descrição do vídeo e lá nos comentários. você vai encontrar cupons exclusivos, eh, entre
outros benefícios aí para quem é aluno do nosso canal, certo? Então, no mais, bons estudos. Eh, diga também nos comentários qual tema você Gostaria de ver numa próxima aula aí nessa preparação pro concurso da Ban Ru, tá bom? No mais, boa preparação para todos. Sou aqui para ajudar. Grande abraço e vamos para cima. E aí, pessoal, beleza? Aqui é o professor Arnaldo, auditor em TI e hoje a gente está trazendo uma aula sobre o Scrom. Lembrando que nós estamos numa sequência de aulas focadas aí para o concurso do CERPro e também para o concurso do
TCE TRE unificado que nós teremos no segundo Semestre. Mas se você está estudando para qualquer outro concurso na área de TI, esse conteúdo lhe pode ser útil. L convido a fazer parte também do nosso programa de membros, que há um pequeno valor, você estará colaborando para a melhoria da qualidade do conteúdo e incentivando a continuidade do nosso trabalho, além de ter acesso a alguns benefícios exclusivos, como ter prioridade nas respostas dos comentários e acesso a alguns conteúdos específicos. Então, vamos para a aula. Bem, na aula de hoje a gente vai falar sobre o Scrom, que
é um conteúdo que normalmente está dentro da área de engenharia de software, especificamente na parte que trata de metodologias ágeis. Então, vamos entender melhor o que é o Scrom. O texto traz o seguinte, ó, que é um framework para desenvolver, entregar e manter produtos complexos. Consiste de times screw associados a papéis, eventos, Artefatos e regras. Ideal para times pequenos. Legal. Aqui a gente já tem um primeiro ponto que merece a nossa atenção. Inclusive, eu já vi cair algumas questões tratando dessa questão que eu vou apontar agora. Primeiramente, o Scre é um framework para gerenciamento de
projetos, OK? Visando aí eh entregar, manter e manter produtos complexos. Então, veja só, o Scrom não é uma metodologia ágil de exclusivamente de Desenvolvimento ou para desenvolvimento. O Scrom ele tem um escopo maior, ele serve para gerenciar projetos e por sua vez um desses projetos, ele desses projetos pode ter com objetivo a entrega de um produto de software. Legal? Então, essa é uma diferença que você tem que saber. O Scrom é a metodologia ágil, sim, para gerenciamento de projetos e que pode entregar um produto de software. Então, se cair uma questão falando que o Scrom
é uma metodologia Ágil de desenvolvimento de software, não é bem por aí, OK? É claro que você tem que avaliar todas as alternativas, mas lembre-se que o Screw é um framework para gerenciamento de projetos que pode sim entregar um produto. E esse Scrom ele possui um team screw eh com alguns papéis definidos sobre os quais eu vou falar mais adiante. E nós temos aqui é um ciclo de desenvolvimento com composto de várias Iterações em que vão sendo gerados e a cada iteração, a cada ciclo, um incremento de software, um produto, né, de software ou não,
né, mas uma entrega de um produto, de um incremento desse produto funcional. Legal. E aí nós temos alguns artefatos e algumas regras que nós vamos aprender mais sobre eles agora. E por que que é ideal para times pequenos? Devido à características dessa metodologia ágil, torna-se difícil você gerenciar o trabalho com um equipes Compostas de muitas pessoas, com equipe muito grande. Então, como a gente estudou no XP, nós temos algumas práticas que demandam uma interação, uma comunicação mais constante. E como gerenciar um trabalho desse, é frente a, sei lá, 200, 300 milhares de pessoas, eh, torna-se
inviável. Então, uma possibilidade é você mesclar a metodologia ágil com a metodologia tradicional no macro. Então você utilizar a metodologia tradicional Para trabalhar o macro, o escopos total do produto. E aí dentro da dos subnúcleos de de trabalho, você implementa uma metodologia ágil para entregar um módulo, uma parte, o incremento daquele todo. Legal? Então essa é uma possibilidade você eh mesclar essas abordagens de desenvolvimento. E o que que é o time screw? O time screw ele é composto de o product owner, o time de desenvolvimento e o screw master. E sim, eh, normalmente A gente
acha nas provas em inglês mesmo, tá? E até nas contratações eh de trabalho é produto o honor mesmo ou como eles falam PO, né? Então você tem basicamente essas três, esses três papéis bem definidos, o product owner, que é o dono do produto, o time de desenvolvimento e o Screw Master. E nós vamos aprender mais sobre eles. O time screw. E aí quando a gente fala team screw, cuidado para não confundir, tá? Inclusive numa questão de Concurso, time screw é diferente de time de desenvolvimento. O time de desenvolvimento, eh, ele vai cuidar só da parte
ali do da implementação da da do desenvolvimento do produto. Legal? Você tem um product owner que representa as necessidades do cliente, né, o do negócio, o time de desenvolvimento que constrói, que implementa e o Screwmaster que auxilia no trabalho como um todo. E aí não confunda time de desenvolvimento Com time screw. O time screw é todo mundo, beleza? É composto de produt o time desenvolvimento e scromaster. Quando falar time desenvolvimento é só a parte de construção do produto. E aí o time scrom ele é autoorganizável e multifuncional. Então você tem a ali no seu time
eh as funções, né, as habilidades que você precisa para construir, para entregar o seu produto, beleza? e ele é autoorganizável. De acordo Com o andamento do trabalho, vai se aprendendo eh com as práticas, com os resultados. E aí você, o time, ele pode se autoorganizar, mudar a sua composição, sua estruturação para melhorar os seus resultados e entregam produtos de forma iterativa e incremental. Então, esse gráfico aqui é bem interessante. Ele traz o seguinte, ó, falando que a metodologia Scrom é um método ágil de Gestão de projetos para torná-los dispendiosos, mais flexíveis e mais eficientes. Legal?
Então, observem o que tá em aí, ó. Método ágil de gestão de projetos, né? Eh, voltando aí à aquilo que eu falei lá no começo, não é um método de desenvolvimento de software. Então, ó, os processos são divididos em ciclos chamados de sprints. O que diferencia uma metodologia ágil de uma metodologia tradicional? É, principalmente o fato da Metodologia ágil abraçar mudanças. Ela ser aberta a mudanças. E por que isso? justamente porque ela entrega eh partes do produto, incrementos do produto eh aos poucos de forma a cada interação você vai entregando uma parte do cliente, uma
parte funcional. Então, na metodologia tradicional, você primeiro eh passa por todas as etapas para entregar o produto só no final de todo o trabalho. E aqui não, no método ágil, no curto prazo, em um mês, por exemplo, Você já pode entregar um pequeno fragmento do produto funcionando para o cliente. E aí no Scrom, esse ciclo de desenvolvimento curto, ele se chama sprint, tá? É, os processos são divididos em ciclos chamados de sprints. Ó, cada sprint possui prazos e objetivos específicos. Então, basicamente, aquela ideia semelhante a do XP. Você tem o planejamento no início, que aqui
se chama planejamento da Sprint, em que você tem lá junto com com product o com Time e com o time de desenvolvimento e o SRWMAS, eh, em uma reunião, eles eh vê, né, elencam tudo que tem que ser feito e priorizam daqueles tópicos todos o que vai ser implementado durante aquele ciclo, ou seja, daqueles requisitos. o que que vai ser entregue, o que que é mais prioritário durante eh o ciclo, a sprint que se inicia. Então, antes do início da sprint, a gente tem um planejamento da sprint com o time Scrom, Em que são selecionados
os requisitos que serão entregues ao final daquela sprint. E ao longo da sprint são realizadas reuniões diárias eh que servem para corrigir o rumo do trabalho, visando o aos objetivos específicos. E no final da sprint você tem uma revisão daquele trabalho que foi feito e a entrega do incremento do produto do projeto para o cliente. Então Vamos entender melhor o que é um sprint. O texto traz o seguinte, que é um intervalo de tempo em que será criado o incremento do produto. Então, cada ciclo, cada iteração desse processo de desenvolvimento é chamado Daysprint. E no
final dele você tem a entrega de um incremento do produto. A documentação oficial feita pelos autores do framework traz que o sprint ele tem que ter ali no máximo um mês. Mas não se apegue muito a esse prazo, tá? Pode ser Que apareçam aí prazos diferentes, eh, mas que podem estar certos também, tá adaptados de acordo com a necessidade do negócio. Mas a documentação traz isso na faixa de um mês para menos. A Sprint contém e consiste de planejamento da Sprint, como eu falei, que marca o início da sprint, reuniões diáreas, a gente vai falar
mais sobre elas, o desenvolvimento em si e a revisão da sprint seguida da retrospectiva da sprint no final da Sprint. O escopo, ele pode ser clarificado e renegociado entre o product owner e o time de desenvolvimento. Quanto mais for aprendido, quanto mais vai se e refinando ou compreendendo melhor o que precisa ser entregue, o que precisa ser feito. Então, quando falo escopo, eh, é aquela lista geral, né, dos requisitos, dos trabalhos que precisam ser realizados. Então, no começo, a gente tem uma com base, né, na análise, no Levantamento de requisitos, você tem uma listagem, um
escopo do que precisa ser entregue, mas esse escopo ele pode mudar ao longo do tempo, de acordo com avançados trabalhos. E quem pode cancelar uma sprint? Já vi cair essa questão diversas vezes em provas. Somente o product owner, ou seja, o dono do produto, tem a autoridade para cancelar uma sprint. OK? Vou falar de novo para você não errar essa questão. Somente o product owner Tem autoridade para cancelar uma sprint. Mas vamos lá. Cuidado, o product owner, ele pode sim ouvir, né, ter ali uma influência do time de desenvolvimento e do Screw Master. Então, eh,
a equipe de desenvolvimento, os programadores, o Screw Master, eles podem, eh, direcionar ou influenciar o produto owner no cancelamento de uma sprint, mas quem decide, quem dá a palavra final é o product owner, beleza? Não erre essa questão. A sprint poderá ser cancelada se o objetivo da sprint se tornar obsoleto. Existem algumas situações em que eh não faz mais sentido você continuar com trabalho, como por exemplo, eh o tempo. Então, chegou-se à conclusão de que não há tempo hábil para concluir os trabalhos eh num prazo que é era primordial para entregar o produto, então não
tem por entregá-lo. Outra coisa, quando o custo para desenvolver o Que precisa ser desenvolvido é maior do que o valor agregado, o retorno daquele produto, também não faz sentido. Como por exemplo, por que que uma empresa vai produzir e vender um copo a R$ 10 quando ela tem um custo de R$ 20 pela produção de um item desse? Então é um cenário aí em que não faz sentido economicamente, em que trazendo aqui paraa sprint poderia justificar o cancelamento de uma sprint. Beleza? Mas mesmo nesse cenário De cancelamento, é, o trabalho que foi feito, não simplesmente
a gente pega e joga no lixo. Todos os itens do backlog do produto incompletos, eles são reestimados e colocados de volta no backlog do produto. Que que é o backlog do produto? É uma listagem geral dos requisitos daquilo que precisa ser desenvolvido. Beleza? Então, o back logo do produto é essa listagem. geral. Durante o planejamento são Selecionados itens desse dessa lista geral e dos requisitos mais prioritários. Então eles são no planejamento, eles são estimados. Então, por exemplo, é aquela história, o cliente chega, né, na figura do produto e fala: "Ó, nós precisamos entregar isso, isso
aqui é mais prioritário". E aí o time de desenvolvimento, por sua vez, pode falar: "Ó, esse item aí ele vai levar mais tempo, ele é mais complexo, não dá para fazer tudo que Você quer agora nessa sprint dentro de um de um mês, por exemplo. Beleza? Então, eh, o time desenvolvimento ele estima, beleza? É isso que ele quer dizer aqui como estimar ou reestimar é avaliar o prazo e a complexidade para entrega de um item do backlog do produto. Então, no planejamento dessa lista do do backlog do produto, são selecionados alguns itens que vão para
a o backlog da sprint. Beleza? Então, saiba dessa Diferença. Você tem o backlog do produto e tem a backlog da Sprint, que é quando você seleciona do da lista total requisitos alguns prioritários que serão implementados durante aquela sprint. Beleza? Então, ó, cancelou print. Os itens que foram que estavam sendo trabalhados, eles são reestimados e colocados de volta no backlog do produto. Planejamento da sprint, ela ocorre no começo da sprint, né, na verdade antes de inicializar sprint. E Ela serve para quê? Justamente para definir qual o trabalho que precisa ser realizado durante a sprint. É, é
isso que eu falei, você vai selecionar ali o team screw, né, em conjunto vai estimar, avaliar os itens do backlog do produto e vão ali selecionar os itens que serão implementados ao longo daquela sprint. O texto traz o seguinte, ó. É um time boxer com no máximo 8 horas para uma sprint de um mês de duração. Que que Significa o time box? Eh, é um evento, o planejamento da Sprint é um evento que tem um prazo específico. Então, ó, você tem ali até 8 horas para realizar o planejamento em que o Team Scrom vai definir
eh o os objetivos da Sprint, né? Quais itens que irão para backlog da Sprint para ser implementado durante aquela Sprint e qual a metodologia de trabalho, né? como que eles vão eh organizar o trabalho para alcançar o objetivo? E o planejamento da Sprint Responde à seguintes questões: o que pode ser entregue como resultado do incremento da próxima sprint e como o trabalho necessário para entregar o incremento será realizado? É isso que eu falei, né? os objetivos, o que vai ser entregue e como que vai ser feito e vai ser entregue. Beleza? Ocorreu o planejamento da
Sprint, né? Tivemos ali uma reunião de 8 horas, a gente já definiu o que a gente vai fazer e como a gente vai fazer. E aí começa a Sprint. Bem, todos os dias nós teremos uma reunião e o nome desse evento se chama e reunião diária ou em inglês, se eu não me engano, é Daily Meeting, beleza? Daily meeting. É um evento de 15 minutos cronometrado também, que o time desenvolvimento vai se reunir para discutir alguns pontos. E nessa reunião, ela serve para planejar o trabalho das próximas 24 horas. Nessa reunião são respondidas as seguintes
Questões: o que eu fiz ontem que ajudou o time de desenvolvimento a atingir a meta da sprint? O que eu vou fazer hoje e quais foram as dificuldades que eu encontrei, né? o que eu vejo e que me impedem ali de prosseguir com o meu trabalho ou com o trabalho de algum outro colega, do time como um todo. E é interessante que respondendo essas questões, a gente consegue ter um panorama geral do trabalho que tá sendo desenvolvido. Ah, o fulano tá Trabalhando com aquilo. Ah, o a ciclana ela tá tendo uma dificuldade com aquele ponto.
Então, eu posso ajudar, eu posso dar uma dica. O Screw Master, que a gente vai ver aqui o papel dele, ele já vai eh ficar ligado, né? Já vai ter ciência dessas barreiras e vai também já operar, trabalhar de modo a eh retirar essas barreiras para que todos consigam atingir os seus objetivos. O ciclo Scrom. Bem, esse gráfico traz aqui uma um detalhamento interessante de todo o Processo. Então, nós temos ali e como início o backlog do produto, o product backlog, como eu falei, é uma listagem geral dos requisitos a serem entregs. Como assim, professor?
Uma listagem geral, o método ágil, ele não vai fazendo aos poucos. Ele não, ele não é diferente do método tradicional que primeiro você faz todo o levantamento de requisitos, depois você projeta tudo, depois você desenvolve tudo. Sim, mas e a gente começa um trabalho de Desenvolvimento ou de gestão de algum projeto com o levantamento dos requisitos, né? Então, através de métodos variados, você vai levantar aquilo que precisa ser feito, descobrir o que precisa ser feito, quais são as necessidades do cliente. Mas mesmo no método ágil, você vai ter uma listagem do que foi levantado até
aquele momento. O que diferencia do método adicional é porque ao longo do trabalho você pode remodelar essa listagem geral, esse Escopo geral do trabalho a ser entregue. Então, a cada sprint você pode reavaliar e vão surgindo novos itens nesse backlogo do produto. Eu quero que você saiba que é uma descrição, uma listagem, na verdade, de todos os itens que foram levantados até o momento, eles ficam no backlog do produto, OK? teve o planejamento da sprint, então o time escolheu, né, estimou, avaliou os pontos e escolheu ali e daqueles daquela listagem quais itens que serão Entregues
ao final da sprint. Então, esses itens eles saem do backlog do produto e vão pro backlog da sprint, beleza? Então, é o sprint backlog e aí você tem que saber diferenciar o backlog do produto do backlog da Sprint para fazer a sua prova. Legal. Backlog do produto, listagem geral dos requisitos do produto como um todo. É backlog da Sprint. É uma subseleção de alguns itens do backlog do produto que serão trabalhados envolvidos Ao long ao longo da sprint. Beleza? Então, escolher os itens do backlog da Sprint e aí começa o trabalho da Sprint. Aqui fala,
ó, de duas a qu semanas de trabalho. A cada dia você tem as reuniões diárias que aqui fala, ó, daily screw meeting. Beleza? Então, todo dia a equipe se reúne, conversa o que que tá fazendo, as dificuldades. E aí no final da sprint a gente tem uma revisão, uma avaliação do trabalho que foi feito e a entrega de um incremento do produto Potencialmente utilizável, funcional. E aí eu vou falar mais sobre o esse trabalho de revisão ao final da sprint. Revisão da Sprint é realizada no final da Sprint para inspecionar o incremento e adaptar o
backlog do produto, se necessário. O Team Scrom e as partes interessadas colaboram sobre o que foi feito e o resultado da revisão da Sprint é um backlog do produto revisado que define os prováveis itens de backlog do produto para a Próxima sprint. Beleza? Então isso aqui traz aí um pouco de tudo que eu falei, né? Ao final da sprint, a o time SCROM vai se reunir e vai eh falar sobre o trabalho desenvolvido. Ó, era para entregar um por exemplo, né, uma funcionalidade que implementa eh o cálculo de alguma coisa. Beleza? Então, no final, nessa
revisão desse print, vai se avaliar esses incrementos, se alcançou o objetivo ou não. É isso mesmo, tá funcionando, tá OK? E é interessante que nesse trabalho de de avaliar o que foi desenvolvido, podem surgir novas ideias, novas necessidades, novos requisitos que vão para onde? lá pra backlog do produto. Então, por isso que tá falando aqui de adaptar o backlog do produto. Beleza? Então, aí a pessoa vê lá funcionando. Cara, é isso mesmo. Bacana, tá legal, pô. Mas eu vi agora que tá faltando implementar tal coisa. Seria interessante fazer isso, fazer aquilo. E Aí, ou seja,
essa necessidade vai gerar um novo item, um novo requisito lá no backlog do produto, adaptando o backlog do produto. Então, veja isso. Eh, o método ágil ele é adaptável, ele abraça mudanças, beleza? E aí você vai ter aí um no final disso, eh, a certeza de que aquilo que estava previsto eh está OK ou não, tá? pode ocorrer também de de itens do backlog produto que não foram alcançados de forma satisfatória e aí eles podem ser Reestimados e colocados de volta para o próximo backlog do produto, para próximo sprint, né, na verdade. Beleza? E aí
no final você vai ter uma revisão eh do backlog do produto. Bacana. Aí na próxima, no próximo planejamento da Sprint, você vai de novo, o time vai eh escolher os itens para a próxima sprint. E o que que é retrospectiva da sprint, galera? Retrospectiva ela é diferente da revisão, beleza? teve a sprint, você vai Ter a revisão da sprint para avaliar aquilo que foi feito, se os objetivos foram alcançados, revisar o backlock do produto e depois disso você vai ter a retrospectiva da sprint, que é uma oportunidade para o time Scrom inspecionar si próprio e
criar um plano para melhorias a serem aplicadas na próxima sprint. traduz, professor, na retrospectiva, a imagine nós eh fazendo parte aí de uma mesma equipe de trabalho. Na retrospectiva, a gente vai Fazer o quê? A gente vai avaliar como nós trabalhamos, beleza? Então, a, por exemplo, o nosso método de trabalho, por exemplo, ah, cara, a gente podia melhorar nisso. Nossa, nós estamos nós estamos perdendo muito tempo, eh, nessa etapa aqui de fazer um teste, de uma coisa simples que a gente pode consertar para melhorar o nosso desempenho na na próxima sprint. Então, é aprender com
os próprios erros e acertos. E eh lembra lá no começo que fala que o time escur ele é autoorganizável e multifuncional. Então através da retrospectiva, o time pode, ele aprendeu que tá errando em um ponto. Então ele pode se se eh autoorganizar, modificar sua organização para resolver aquele problema, mitigar um problema, melhorando os resultados. Beleza? Então, a retrospectiva é isso, aprender com os próprios erros, com o próprio trabalho desenvolvido. Ore depois da revisão da Sprint e antes do planejamento da próxima sprint. E ao final da retrospectiva, o time vai eh identificar aí as melhorias que
serão implementadas na próxima sprint. Então, vamos recapitular. Todo o trabalho começa eh como, né? A gente tem o backlog do produto, então você vai ter planejamento da sprint, depois a sprint em si, com as reuniões diárias, no final do da sprint, depois de um mês de trabalho, você vai Ter a revisão da sprint e depois a retrospectiva da sprint. E aí começa tudo de novo. Então, processo screw. Aqui a gente tem um panorama geral. Vamos lá. Backlog do produto. Olha lá, você tem aqui o product owner, que representa as necessidades do cliente, do negócio, que
tem uma visão geral daquilo que precisa ser entregue e ele vai influenciar ali na listagem dos itens do backlog do Produto. Ele que sabe que tem que ser feito. Beleza? Aqui a gente poderia ter aqui, por exemplo, um gráfico camban com a listagem do que deve ser feito, né, ou do que tá sendo desenvolvido e o que já foi concluído. Back logo do produto. Legal. Aí tem o planejamento da Sprint, que você tem todo mundo participando, né? O time de desenvolvimento, o Screwmaster e o o PO também. E aí se escolhe dessa backlog do produto
e os itens que serão Desenvolvidos na próxima sprint, nessa sprint que vai começar. E aí você tem, ó, vejam que o backlog da sprint ele é obviamente menor que o backlog do produto, né? É a seleção de alguns itens que serão implementados, ok? E aí, ó, ao longo da sprint, lembrando que aí você pode ter de duas a quatro semanas, você tem o time de desenvolvimento trabalhando, as reuniões diárias, o Screw Master ajudando, retirando os Impedimentos eh dos envolvidos e auxiliando no funcionamento do SCROM. A gente vai falar mais sobre os papéis, beleza? E aí
no final você tem a revisão no final da sprint, né? você tem a revisão da da sprint em que você vai pode ali atualizar o backlog do produto, na verdade vai, né? Aqueles itens que estavam em desenvolvimento, se eles foram eh dados como satisfatórios, eles vão sair da coluna de desenvolvimento e Vão pra coluna de prontos. Ó, era para concluir um cadastro do cliente, tá? É, tá OK. O o P já validou. É isso mesmo. Então eles atualiza o backlog do produto, aquele item vai para pronto e podem surgir novos itens. E aí depois da
retrospectiva, começa tudo de novo. Falando agora sobre os papéis. Então vamos falar sobre o PO, o product owner. O PIO, ele é o o dono do produto. Não necessariamente ele é o dono da empresa ou do negócio, mas é um cara que Representa o negócio, que representa o cliente e que sabe as necessidades do cliente. Então, ó, ele expressa claramente para todo mundo, né? Para todo mundo. Quem? Pro time Scrom, time de desenvolvimento e Scromas. as os itens do backlog do produto. Então, ó, chama todo mundo, os programadores, os testadores, eh, o SCMAS e eu
falo: "Ó, o que a gente precisa desenvolver é isso, essas Funções, nós precisamos atingir tal objetivo." Então ele tem que expressar isso de forma clara, porque se ele não conseguir colocar num eh de forma clara, objetiva, o o programador, por exemplo, ele pode estar pensando outra coisa e querendo seguir outro rumo. Então é responsabilidade do PO expressar isso numa linguagem eh o mais clara possível. Ele é responsável também por ordenar os itens do backlog do produto para alcançar melhor as metas e missões. Ou Seja, então de tudo que tem que ser feito, o que é
mais prioritário? O que que nós temos que fazer primeiro? O que que tem mais peso, relevância para o negócio? O pi vai dizer e ele pode mudar isso, otimizar o valor do trabalho que o time desenvolvimento realiza. Então ele tem essa responsabilidade, garantir que o backlog do produto seja visível, transparente, claro para todos e mostrar o que o time Scrom vai trabalhar a seguir. Legal. Não que que o o Pi vai falar, ele vai chegar assim no na reunião e vai falar: "Ó, vocês vão fazer isso, pronto e acabou". Eh, apesar de que ele ele
tem autoridade, mas assim, normalmente um PO que sabe trabalhar, ele vai ouvir, né, o time de desenvolvimento, estimar os pontos, falar: "Ó, isso demora tanto tempo para fazer, isso é mais complexo." Então eles vão estimar essa dificuldade e o prazo. E aí o PIO com base nisso, ele vai escolher, não. Então vamos trabalhar nisso aqui, tá? OK. Tá OK. Beleza? Então ele que vai eh escolher, mostrar ali, né, no que que o time vai trabalhar e garantir que o time de desenvolvimento entenda os itens do backlog do produto no nível necessário. É isso que eu
falei para vocês. Então ele tem que garantir que todos entenderam o que precisa ser eh Desenvolvido e entregue. Então, ó, o PIO ele se preocupa com as necessidades do usuário e do os objetivos de negócio. Ele guia o projeto na direção correta. Ele é um a good team player, né? É um bom eh jogador, digamos assim, dentro do time que ele colabora com o o time de desenvolvimento e os stakeholders, os interessados. Então o PIO ele faz essa intermediação, né, entre o time de desenvolvimento e o Cliente, eh, trazendo ali a perspectiva do do da
empresa, né, o que que o cliente quer e e repassando isso da forma mais clara possível pro time de desenvolvimento, fazendo essa intermediação. Ele é responsável pelo sucesso do produto. Então, veja que a responsa é grande, né? A gente tem aí contratações específicas pro para PO, para ser product owner, mas já saiba que você vai ser o responsável pelo pelo sucesso ou pelo Pelo insucesso do trabalho. Então ele é aqui, coloca on, né? Eh, ou seja, ele é dono, como eu falei, não necessariamente ele é dono do negócio, mas ele representa o negócio. Então, ele
é dono no sentido de, no time Scrumad, que está trazendo essa necessidade do cliente para dentro do time. E ele mantém a visão dos stakeholders durante o desenvolvimento do produto. Beleza? aquilo que eu falei, ele vai trazer a direção eh da empresa Para o time de desenvolvimento. Ó, a empresa quer isso. Eh, o produto a ser entregue deve seguir essa linha. Screwmaster. A gente falou tanto do Screwmaster, o que que é o Screwmaster? Pessoal, a gente tem vários papéis no Screwmaster e aí tem a documentação feita pelos criadores do framework. Quem tiver fazendo parte do
nosso grupo lá no WhatsApp vai ter acesso a isso, porque eu mando lá o o link para os PDFs e lá dentro você vai Encontrar nesse repositório o material eh para Scrom, para XP e para vários outros conteúdos. Então eles convido a fazer parte do nosso grupo no WhatsApp. Então ó, o Screwmaster ele tem basicamente oito papéis. Então ele é o servidor líder. Então o que que o nome fala, pessoal? Scromaster, ou seja, mestre Scrom. O Scromaster é a pessoa que melhor entende o funcionamento do Scrom. Então Ele vai buscar ali garantir que todos eh
saibam que é o SCROM, as práticas. Ele vai tentar garantir também que todos sigam essas práticas da forma como está estão previstas na na documentação, OK? Então, garantir que ocorram as reuniões diárias, que os objetivos dessa dessa desses eventos, dessas reuniões sejam alcançados, beleza? que ocorra ali a revisão da sprint, a retrospectiva. Então, eh, se, por Exemplo, na reunião diária eh pessoal tiver fugindo do objetivo, ele vai tentar trazer para cá. Não, galera, vamos ser objetivo. Responda as questões. E aí, quais foram as dificuldades? O que que você fez? É, o que que você pretende
fazer hoje? Então, ele vai garantir que todos sigam o Scre da forma correta. Ele também tem a função de de ser ali um facilitador, removedor de obstáculos, ã, agente de mudança também, do tipo Que, ah, eu, o programador, sei lá, o Arnaldo tá lá desenvolvendo, ele tá tendo um um problema no hardware, o sistema, a a ali o sistema ou o computador dele tá falhando, por exemplo, uma placa tem algum problema, ele é o responsável por ir lá e eh resolver essa questão. Arnaldo, aqui é a memória que tá dando problema, então ele vai eh
providenciar as ações necessárias para que esse problema seja resolvido. É Um problema interpessoal que tá ocorrendo também dentro do âmbito de desenvolvimento. Então ele vai tentar gerenciar isso, chamar as partes, conversar e resolver. Então o Scromaster ele remove impedimentos, obstáculos do time de desenvolvimento, OK? Ele é um professor no sentido de organizar eh capacitações para todos, né, de modo que todos compreendam melhor o que é o SCROM e desempenhe a sua as suas funções de Forma correta. Ele é o gerente, ele é mentor e é coach também, né? Bacana. Então, esse é o Screw Master.
Quando a gente falar de SC, quando a questão falar de de Scrom Master, você vai lembrar, é o mestre Scum, é o cara que saca tudo de scrom e que vai garantir que todos entendam da melhor forma possível o que é o Scrom e o que cada um tem que fazer dentro do time Scrom. Outro ponto super importante, ele é o cara que vai remover os Impedimentos, que vai facilitar o trabalho de todos para que é de modo que o time alcance o seu objetivo. Time de desenvolvimento é a galera que vai eh construir, né,
digamos, numa construção de de uma casa. São ali o o os pedreiros, é o servente, é o o engenheiro, arquiteto, é a galera que tá ali no desenvolvimento. Então, ó, o time ele é autoorganizado. Aquilo que eu falei, de Acordo com o aprendizado, ele pode mudar sua organização. Ele é multifuncional, então você tem pessoas eh com diversas habilidades. Então, todas as habilidades necessárias para concluir o trabalho tem que estar ali. Então, traz, voltando pro exemplo da obra, ah, eu preciso eh fazer a parte eh visual, preciso de um arquiteto. Então, tem que ter um arquiteto
na equipe que vai cuidar dessa parte de visual, de Ambientação. Então, esse tipo de coisa. Beleza? Outro detalhe, o Scrom ele não reconhece títulos para os integrantes, ou seja, ah, você é o DBA, você é o o programador, é o testador, não. Eh, os papéis que ele reconhece são de time e desenvolvimento. Então, todo mundo é time de desenvolvimento. Beleza? Por mais que tenha um cara que trabalhe mais com uma coisa ou com outra, mas a responsabilidade de tudo é de todos, é do time de desenvolvimento, beleza? Ou Do time scrum, ainda falando num escopo
maior. Legal. Então não é porque deu problema numa coisa que só o colega tava mexendo, que a responsabilidade é só dele. Então, ó, eh, o SC ele não reconhece subtimes também nesse sentido de, ah, você tem ali um tem o time de desenvolvimento, mas você tem um eh subtimes dentro do time de desenvolvimento, não tem isso. Beleza? é o time de desenvolvimento eh os programadores, os Testadores como um todo. Então, a responsabilização do time não é individual, é para todos, é para o time de desenvolvimento. Beleza, pessoal? Então, a gente teve aí um panorama geral
eh sobre os conceitos básicos sobre a metodologia SCROM. Legal? Então, qualquer dúvida você pode deixar o seu comentário aí no canal. Se essa aula foi útil para você, peço aí o seu suporte através dos likes, Dos comentários. Convidoos novamente a ingressar no nosso grupo de WhatsApp. A gente já está cogitando aí mudar para o Telegram, né, dada a limitação do WhatsApp. Depois eu mando o link lá no grupo e também os convido novamente a fazer parte do nosso canal de membros para você estar aí incentivando o nosso trabalho e também melhorando a qualidade do conteúdo
trazido para vocês. Mais valeu, grande abraço, bons estudos e Foco nos objetivos. Vamos nessa. E aí pessoal, começando mais uma aula. Eu sou o professor Arnaldo, professor de informática do Instituto Federal de Tocantins. E hoje a gente vai estar falando sobre modelagem conceitual de dados, trazendo a abordagem entidade e relacionamento como meio para a construção desse modelo conceitual. Lembrando que a gente tá numa série de vídeos focados para o concurso do Banco do Brasil, mas claro Que você pode utilizar esse material para estudar para outro concurso também. Vamos estar lançando em sequência alguns vídeos com
questões comentadas. Então, minha dica de estudo para você é assista essa aula até o final, faça rascunhos, resumos, utilize algum mecanismo para que você possa revisar esse conteúdo posteriormente e depois vá assistir aos vídeos com as questões comentadas e também vou estar deixando aí na descrição do vídeo um link para um Material, um PDF que vocês possam utilizar para revisar o conteúdo, beleza? Tá? Então, bora pra aula. Mas antes de explicar eh detalhadamente o que que é o modelo conceitual de dados, a gente precisa entender onde que isso está inserido, né? Contextualizar. E tudo parte
da necessidade de se construir um projeto para um banco de dados. Então você tem uma empresa ou uma instituição ou alguém que te contrata para eh desenvolver, Implementar, projetar e implementar eh um banco de dados. Legal. Tudo para atender a necessidade desse cliente, para atender aos requisitos estabelecidos. Então nós temos aqui eh um gráfico que nos ajuda a entender isso. Então tudo parte ali da análise de requisitos. O que que são os requisitos? São as necessidades do cliente, né? o que que ele precisa armazenar, quais informações são importantes para ele. Então, nós precisamos aí projetar
o Nosso banco de dados, beleza? Para depois, a partir do projeto, você construir, você implementar esse banco. Eu digo que é semelhante a à construção de uma casa. Então, eh, a gente não vai direto pra construção da casa, né? Normalmente, se tem um projeto, existe a necessidade do cliente. Ele chega um arquiteto e ele coloca pro arquiteto o que que ele deseja. Ah, eu quero que a minha casa tenha isso, tenha aquilo e etc. E a dali ele sai com o projeto, né? O projeto da construção, ou seja, o projeto do banco, né? E o
que que é o projeto? é o que a gente vai tratar na aula de hoje, projeto conceitual, o aí a gente tem um modelo relacional até chegar no modelo físico que é a implementação, eh, a construção de fato do banco, tá? Então, tem essas etapas. Então, tudo parte da análise de requisitos. Qual que é a necessidade do cliente? O que que você precisa armazenar? A partir daí, a gente chega, A gente vai construir o primeiro modelo, primeiro eh projeto, que é o projeto conceitual, tá? A gente pode chamar de modelo conceitual. E o que que
é o modelo conceitual? Ele é nada mais é que uma abstração do dos dados que vão ser armazenados, tá? E como que a gente vai construir esse projeto conceitual? a partir do modelo entidade relacionamento. Então, vamos deixar bem claro, isso é uma questão que cai em Concurso, tá? De eh como eh o projeto conceitual ele é ele é representado através de do quê? Através do modelo, entidade relacionamento. Vou falar de novo porque é um assunto importante. O projeto conceitual ele é representado através do modelo entidade relacionamento, tá? Então você tem aí o primeiro modelo do
seu banco. E aí a partir do modelo conceitual a gente vai eh construir o modelo relacional. Modelo relacional já traz Mais detalhes de implementação. Modelo conceitual ele é mais abstrato. Depois a gente vai construir o modelo relacional, tá? Que esse é um assunto pra próxima aula. Hoje o foco vai ser no modelo eh conceitual, mas só pra gente entender, então projeto conceitual, depois você tem o modelo relacional e depois do relacional a gente chega ao projeto físico, que é aquele que mais se assemelha ao banco no resultado final, como ele vai ficar lá no no
na etapa Final, OK? Então são essas três etapas, tá? São três modelos, basicamente. O modelo conceitual, o modelo relacional e o modelo físico, que a gente pode ver os detalhes aqui, ó. Modelo de dados conceitual, ele é um de mais alto nível de abstração. Ele não tem tantos detalhes de como que vai ser implementado isso, tá? Ele oferece conceitos mais próximos do usuário, aquilo que é mais fácil do cliente entender, mas eh aqueles Detalhes eh de como o programador vai implementar aquilo, né? como projetistas de do banco de dados, vai implementar aquilo. Eh, não se
tem tantos detalhes no modelo conceitual, é mais para facilitar a interpretação ali por parte do dos usuários, dos clientes. Beleza? Então, o modelo de dados conceitual, ele é representado através do modelo entidade relacionamento. Grava aí. O modelo de dados eh Lógico, ele é representado através do modelo relacional, OK? Então você tem o modelo conceitual, o modelo lógico, que é o relacional, e depois o modelo físico. O modelo eh relacional, ele ele é intermediário, né? Ele traz mais detalhes de implementação do que o modelo conceitual. E aí o terceiro é o modelo de dados físico, que
é mais baixo nível. Quando a gente fala mais baixo nível ou alto nível, é em termos de detalhe de Implementação, mais baixo nível, ou seja, uma linguagem mais técnica, mais próxima ali do administrador do banco de dados, do DBA. Beleza? Então vamos lá pro modelagem conceitual de dados. Legal. Vimos que o modelo entidade relacionamento é o a o mecanismo que nos permite ali representar um modelo conceitual do banco de dados. Beleza? Então vamos aprender o que que é o modelo entidade de relacionamento. Ó, é uma representação do modelo conceitual do banco de dados. E aí,
como que a gente cria, como que a gente gera esse modelo? Eh, construindo aí um diagrama entidade relacionamento, tá? O modelo entidade de relacionamento, ele é construído através ali, representado através de um diagrama entidade relacionamento. E uma das notações que a Gente utiliza para representá-lo é a de Peter Chen, tá? E aí vamos entender primeiramente o que que é uma entidade, né? Entidade de relacionamento. O que que é uma entidade? Uma entidade é uma representação daquele mundo que se tá querendo eh retratar. Beleza? Aqui, ó, um conjunto de objetos da realidade modelada sobre as quais
se deseja eh manter informações no banco de dados, tá? E aqui aqui cita alguns exemplos, né? Produto, um cliente, um Carro, um contrato, eh, uma conta, um monstro. Como assim monstro? Se você for desenvolver um jogo, né? Eh, hoje uma das áreas mais complexas da computação é desenvolvimento de jogos. E é uma realidade, você precisar armazenar e tratar eh dados eh de um jogo, por exemplo. Então, OK. Ah, vamos supor que você vai precisar eh de um banco para armazenar os dados do seu cliente. Então, você vai ter uma entidade, nesse Modelo, entidade de relacionamento,
para representar esses clientes, uma entidade cliente que vai ter alguns atributos, tá? Então, se eu for implementar um banco de dados para armazenar eh informações sobre produtos de uma empresa, você tem um é um site de e-commerce e você precisa armazenar os dados dos produtos, você vai criar uma entidade eh produto que vai ter os atributos, as informações relacionadas a Cada produto. Vocês vão entender melhor. Então, e como que a gente representa isso? através de um retângulo, tá? No diagrama entidade de relacionamento, a entidade é representada através de um retângulo. Então, a gente tem aqui,
ó, entidade carro, entidade cliente, entidade produto, entidade monstro. E aí vai. Ah, então aí você pode pensar, né? Às vezes gera uma confusão nesse início. Ah, eu tenho um carro, sei lá, um uma Hilux. Ah, eu posso criar uma entidade Hilux? Não tá, porque a a Hilux aí seria uma uma instância dessa entidade, né? Um objeto criado a partir daquela entidade. A entidade ela é abstrata, é como se fosse uma fábrica para se criar objetos. Como assim, professor? Você vai criar um um banco que você onde você precisa armazenar carros, diversos carros. Então você já
Vai falar: "Eu quero que o meu banco tenha uma entidade chamada carro com três atributos. Eh, sei lá, a marca, o modelo e o ano. Marca, modelo e ano. Marca, modelo e ano são atributos dessas entidades, né? Todos os carros eles possuem esses atributos. Eles têm a marca, eles têm o modelo e tem o ano de fabricação. OK? Então vejam que é uma fábrica para se criar um objeto. Então você vai vamos supor que chegou o primeiro objeto para você armazenar no Banco. Então a partir dessa fábrica, dessa entidade, você vai criar uma uma instância,
digamos assim, para eh onde você vai inserir os dados, né? Qual que é a Hilux, né? A marca Toyota, modelo Hilux, o ano, sei lá, 2020. Então, a partir daquilo ali, você vai ter uma tupla no banco de dados, que é uma linha gravada no banco de dados, tá? Então, a partir dessa entidade, carro vai ser eh cadastrado, Digamos assim, vai ser persistido no seu banco um uma nova linha no banco, que é a referente a essa Hilux mencionada, OK? Então esse é é um um objeto que foi armazenado no banco, uma linha do banco,
uma tupla, tá legal? Então tem essa visão de que a entidade ela é abstrata, ela é como se fosse uma fábrica para criar alguma coisa. Então carro, cliente, produto, produto, todo produto tem valor, tem a descrição, tem a data de validade, se For o caso, né? Então, eh, as entidades elas possuem características em comum e essas características são os atributos, né? É uma propriedade ou característica que descreve uma entidade. Também é chamado de campo. Então, por exemplo, ó, um carro, o carro ele tem um modelo, tem a marca com a categoria e aí vai, né?
A, e um jogo, um monstro, por exemplo, uma entidade do jogo, poderia ter tais informações, né? O nome, poder de Ataque, de defesa e aí vai. E como que a gente representa isso num diagrama entidade de relacionamento? Dessa forma que vocês estão vendo. Então, o carro é a entidade aqui, no caso, o carro é representado através de um retângulo e os atributos e são representados através dessa bolinha que vocês estão vendo aí. Então aqui o carro tem modelo, marca e cor. Toda vez que eu precisar cadastrar, persistir, que a gente fala no banco, né? persistir
no banco de dados um novo Carro, eh, eu vou ter que informar lá, eh, possivelmente o modelo, a marca e a cor, né? E a cada linha que eu vou registrando, eu preciso inserir essas informações. O monstro tem nome, localização e classe, tá? Então, entidade, retângulo, essa bolinha é o atributo. E como que esses atributos podem ser classificados? Então, vamos lá, pessoal. E aí, é claro que é vocês precisam esse material, esse PDF, ele tá aí na descrição do vídeo, tá o link para Ele lá no drive para você baixar. E é, você precisa tentar
entender com a aula, tentar entender e muitas coisas é decorar mesmo, tá? no começo. Para quem não trabalha com isso, às vezes é complicado de entender, mas leitura e a aqui a nossa explicação para melhor compreensão. Então, os atributos eles podem ser simples. Que que é o atributo simples? Aquele que só possui um valor, né? Então, por exemplo, o modelo de um carro. O carro ele só tem Um modelo, né? Ou ele é um Hilux, ou ele é um Corolla, ou ele é um um Etius, né? ou é um uno, então ele só tem um
modelo, né? Só tem uma cor. Então esses são atributos simples. Atributo composto são atributos é um atributo que possui mais informações ali internas, como por exemplo, o mais famoso o endereço, né? Então, naquele endereço todo aí da sua residência você tem subinformações, digamos assim, que são os eh é o que a gente chama de atributo composto, né? Então, por exemplo, onde eu moro no endereço, eu posso ter ali eh a quadra, eu posso ter a alameda, o número, né, o CEP. Então são subinformações ali dentro do endereço, tá? Então esse é um atributo composto. Atributo
monovalorado é um atributo que ele só tem um único valor, né? O único valor para cada instância monovalorado, tá? Eh, multivalorado são, o nome já dá a entender, né? São atributos que possuem Vários valores, como telefone, você não pode ter. Vamos lá, atributo monovalorado, seu nome, você só tem um nome, você só tem um CPF, né? Então, esse é um atributo monovalorado. O modelo do carro é um atributo simples e monovalorado. Multivalorado, telefone, como eu falei, um cliente ele pode ter vários telefones cadastrados, né? Ele pode ter um cliente de um de uma Seguradora ou
de uma de um plano de saúde, ele pode ter vários dependentes. Legal? Então esse isso é um atributo multivalorado. Outros dois atributos importantes também, atributo identificador ou chave. Você pode ouvir nas duas terminologias. São atributos que eh identificam de forma única uma instância de uma entidade. O que que é uma instância de uma entidade, pessoal? É, Voltando naquele exemplo, é um uma linha que foi cadastrada no banco, né? ali no caso da Hilux, que a gente falou agora, eh, de uma entidade carro, né, de uma tabela que depois vai virar uma tabela carro, eh, a
gente vai ter uma linha com as informações daquele carro cadastrado, daquele veículo cadastrado. E isso é uma instância da entidade, OK? E aí, o que que é o atributo chave? é aquele atributo que ele é único, que você olha e ele não vai Se repetir e é a partir dele que você consegue ter certeza de que aquele cliente que você tá buscando no banco de dados é de fato quem você procura. Legal? Como assim, professor? Você pode ter no banco de dados, por exemplo, vários clientes com o nome Arnaldo. Mas como você vai saber que
é o Arnaldo que de fato você tá querendo listar no na aplicação? que consultou o banco através de um atributo chave. Então, eu posso ter um código Identificador para cada eh cliente cadastrado, né? Ou eu posso usar, por exemplo, o campo, o atributo CPF para identificar um cliente, né, para ser o atributo chave, o atributo identificador. Então, uma vez que eu pego aquele CPF que foi marcado como atributo identificador, ele não vai se repetir para outros clientes que foram cadastrados. Eu só vou poder cadastrar uma única vez o cliente com CPF Tal. OK? Então esse
é um atributo identificador. Atributo derivado são atributos cujo cujo valor ele vem de outro tributo. Como assim? A idade que ela ela pode ser gerada a partir da data de nascimento. Então você vai armazenar de fato a data de nascimento, mas você pode ter como atributo derivado a da data de nascimento ou a idade, né? Então, a partir da data de nascimento, você consegue calcular a idade e como que esses esses elementos São representados. Então, vamos lá, pessoal. Eh, olha aqui uma página legal para você imprimir e colocar fácil aí para você dar aquela olhada
diária, né, para quem não tem o a a familiaridade com banco de dados. Então, entidade representada através desse retângulo, eh, um relacionamento. Vamos falar sobre relacionamento. É o losângulo que nós temos aqui. Atributo, a linha, né, ligando a entidade, é uma bolinha. Isso é um atributo. Como que eu Identifico um atributo chave, pessoal? O atributo chave ele é igual um atributo comum. A diferença é que a bolinha dele é preenchida. Então, olha lá questão do a questão do concurso aí. Se você observar a bolinha tá vazia, né, ou seja, branca, é, é um atributo comum.
Agora, se a bolinha tiver é preenchida, né, toda pretinha, então é um atributo chave, um atributo identificador. Atributo derivado é essa bolinha tracejada. Então, se a bolinha Do atributo for estiver tracejada, é um atributo derivado. Atributo monovalorado. Lembra do que a gente acabou de falar? Monovalorado, você tem vários valores possíveis. É o como por exemplo e o telefone. Então, o monovalorado é são, ela tem essa bolinha e tem uma outra bolinha interna. Então são duas linhas, OK? Fazendo a bolinha do atributo. Legal. Então, decora aí, pessoal. Eu já vou Mostrar esse outro aqui, ó. Atributo
composto é a bolinha com outras subbolinhas, né, digamos assim. Então, esse é um atributo composto. Legal. Então, por exemplo, no endereço, um atributo composto, cada bolinha, cada subbolinha pode ser subinformações que estão dentro desse atributo composto. Como por exemplo, como eu falei, aqui onde eu eu resido, você tem no endereço a quadra, a alameda e o número. São três Informações em uma coisa só, tá? Esse é um atributo composto, tá? Outra forma de representar atributo chave, pessoal, além da bolinha preenchida, é a bolinha com o underline. Ah, professor, tem várias formas de representar. Sim, tem
várias formas de representar, infelizmente. Tá? Então, bolinha preenchida, tributo chave, a bolinha com underline, eh, onde ali esse nesse underline vai ali e possivelmente O nome do atributo, tá? Esse é um atributo chave, OK? E tem também um atributo chave parcial. Depois eu explico para vocês o que que é a chave parcial. Eh, mas ele é representado através dessa dessa linha tracejada, tá? De antemão, a chave parcial é ela vai estar presente em entidades fracas, né? São entidades que não podem, que dependem de outras entidades para existirem, tá? eh o a o Atributo identificador delas
não é suficiente para distinguir eh uma linha de forma inequívoca. Então ele precisa, ele depende da existência de outra entidade, da do identificador dessa outra entidade para poder existir. E aí a gente tem o atributo chave parcial, né, que ele é um atributo que ele faz parte da do identificador, mas é só parte dessa chave, OK? Então, esses são essas são as Representações para atributos. E a gente tem outras representações aqui, ó. Entidade associativa. Então você vai ver aí um retângulo com losango dentro, tá? Isso aqui é quando a gente precisa eh fazer com que
uma a gente precisa relacionar uma entidade a um a um relacionamento diretamente, tá? E aí para só que não é possível. Você não pode relacionar uma entidade direto com um relacionamento. Uma entidade só se relaciona com outra. Mas em uma representação gráfica, pode ser que isso seja necessário. Então você precisa pegar o relacionamento e converter ele numa entidade associativa. Aí sim você consegue relacionar uma entidade com esse relacionamento. A representação gráfica é essa aí. especialização, pessoal, é essa setinha, tá? Ela pode estar para cima, pode estar para baixo, depende aí da forma como eh for
representado aí o diagrama. Uma Dependência. Dependência a gente tem aí a entidade, que é o retângulo, e o relacionamento ligados. Só que a linha que liga o relacionamento à entidade é uma linha e em tá? ela é mais escura, mais espessa. Então a gente tem aqui uma dependência de uma quando uma isso vai ocorrer quando uma entidade novamente precisa, depende de outra entidade para existir. É o que a gente chama de entidade fraca, uma questão que pode Cair em concurso também. O que que é uma entidade fraca? é uma entidade cujo atributo identificador não é
suficiente para eh identificar um um uma tupla, uma linha cadastrada. Então, é uma entidade que depende de outra entidade para existir. Isso é uma entidade fraca e é representado dessa forma aí, ó, a dependência normalmente, tá? cardinalidade. Vocês estão vendo ali um um parênteses com escrito min e max, né? Outra coisa que a gente pode representar No relacionamento é a cardinalidade mínima e máxima. Vou explicar para vocês jázinho. Para facilitar a compreensão, eu trouxe aqui para vocês um programa chamado BR modelo. Também vou deixar na descrição aí e onde vocês podem fazer o download desse
programinha, tá? Ele não precisa ser instalado, não. Isso é bacana. Então a gente consegue através dele criar um diagrama entidade de relacionamento, tá? E esse diagrama é o nosso modelo Conceitual. Então aqui na esquerda você clica aqui na no retângulo para criar uma entidade. Então vamos partir da da seguinte ideia, onde você precisa de um banco que vai armazenar eh funcionários cadastrados, né, ali para controlar pagamento, não sei o que mais. E departamentos, por exemplo, uma um exemplo comum. Então, ó, uma entidade, vou clicar aqui e vou colocar funcionário, tá? Vou colocar sem assento, tá,
Pessoal? Funcionário. Normalmente na programação, né, nos projetos, a gente não não se coloca esses assentos. Então, funcionário e eh departamento. Legal. Atributo. Para criar um atributo, aqui, ó, do lado esquerdo, você tem a bolinha. Então, vou clicar aqui no funcionário, ó. Então, o funcionário tem o quê? Ele tem nome. Ele tem Eh a data, vou colocar idade, tá? Normalmente é data de nascimento, mas vou pôr idade. Pronto, duas informações e um atributo chave para identificar esse funcionário. Então, pode ser o CPF. Legal. Então, a gente pode utilizar aqui o CPF como atributo identificador. Legal. Eu
tenho outra entidade que é departamento, né? Então, eu preciso cadastrar os meus, armazenar No meu banco, eh, os departamentos ali, eh, que eu tenho. Então, eu posso colocar como atributo identificador um código, tá? Código departamento ou código, eu vou chamar de ID, tá? ID e departamento, o nome do departamento. Legal, tá bom? Dois atributos. E aí, ó, o funcionário ele tem um relacionamento com departamento. Então, a gente vai aprender agora sobre Relacionamento. Então, eu consigo aqui através dessa linha, ó, desses dois conectores, ó, eu clico no funcionário em uma entidade, clico na outra, ele já
cria aí o relacionamento. Então, entidade, entidade, relacionamento. O relacionamento aqui é de quê? de lotação, por exemplo. Qual que é a semântica, o sentido desse relacionamento? É um relacionamento de lotação. Então, a gente vai ter Funcionários em departamentos, lotados em departamentos e em um departamento a gente vai ter eh funcionários lotados, tá? E aí entra um um outro conceito que é que a gente acabou de falar da cardinalidade mínima e máxima. Vocês estão vendo aqui esse parênteses com zero e n? O zero significa cardinal, esse primeiro parâmetro aqui antes da vírgula representa a cardinalidade mínima,
né? Qual que é o mínimo de eh de instâncias dessa entidade que precisam Estar relacionadas com a outra? Qual que é a depois da vírgula a gente tem a cardinalidade máxima? Então aqui, ó, no caso, ó, e um funcionário, ele vai est lotado em quantos departamentos no mínimo? Então a gente tem aqui as opções, ó, no mínimo um, no máximo um, né? Um e um, ou seja, mínimo e máximo. Ou seja, um funcionário vai estar lotado em no mínimo um departamento e no máximo em um. Ou seja, quando eu for persistir um Funcionário, eu vou
ter que indicar obrigatoriamente o departamento em que ele está lotado, porque a cardinalidade mínima é um. Se fosse zero, aí a gente sabe que o eh ele pode não estar lotado em nenhum departamento. Então, seria um relacionamento, digamos assim, eh opcional, né? Mas nesse caso não é obrigatório. Então, o funcionário ele tem que estar lotado em um departamento e um departamento ele pode Ter no mínimo zero ou vários funcionários. do N representa vários, tá? Então, cardinalidade mínima e máxima. Um departamento ele vai estar eh vão estar lotados em um departamento, no mínimo nenhum funcionário, ou
seja, eu posso ter um departamento sem nenhum funcionário cadastrado e posso ter vários, tá? No mínimo nenhum, no máximo vários. Então, essas são as três representações possíveis, 0, 1 e n, tá? Atributo identificador, a gente já falou, né? Aquele atributo que permite identificar de forma inequívoca um registro lá no no banco de dados, né? Aqui alguns exemplos CPF, CNPJ, matrícula, código, Renavan, são valores que não se repetem, que são únicos normalmente. Ou você pode ainda criar um outro, né? como eu falei, um campo, um atributo código e atribuir um código único para cada eh elemento
que você vai registrar no Banco, que no caso o carro ele usou chassi, monstro usou código, relacionamento, né, que a gente acabou de representar, eh, é possível que essas entidades elas possuam relacionamento. normalmente tem que a partir desses relacionamentos que você consegue buscar. Então, por exemplo, eh, eu quero, eu quero consultar no banco todas as parcelas atrasadas do do cliente tal. Então, essa busca ela se dá através graças aos Relacionamentos, tá? Então, a partir do código do atributo identificador do funcionário, CPF, por exemplo, eu consigo ali buscar todas as parcelas eh em uma condição específica
para esse cliente listar isso na aplicação. E os relacionamentos são representados através de um losango que a gente acabou de de representar aqui, né? Ó, um depart um departamento ele pode Ter eh nenhum ou vários funcionários e um funcionário ele pode estar lotado em um no mínimo um departamento no máximo um, tá? E essa e a leitura ela é sempre nesse sentido, tá pessoal? É sempre nesse sentido de uma instância dessa vai estar relacionada com quantas da outra? uma instância dessa, ou seja, dessa entidade funcionário, ou seja, um funcionário vai estar eh lotado em quantos
departamentos? Aí você lê lá do outro lado, entendeu? Então, ó, um Funcionário vai estar em no mínimo um departamento, máximo um. Um departamento vai ter nenhum ou vários funcionários. Essa é a leitura. Relacionamento binário é um relacionamento eh entre duas entidades distintas, tá? Então aqui, ó, funcionário e projeto. Uai, professor, aqui eu na cardinalidade eu tenho só um valor. Então, quando eu tenho só um valor, normalmente aqui é a representação da Cardinalidade máxima, né? Então aqui um funcionário ele vai trabalhar, ele pode trabalhar em vários projetos em um projeto podem trabalhar vários funcionários. E aqui
a gente tem, ó, alguns exemplos de objetos cadastrados, né? Ou seja, entã e entidades, instâncias dessas entidades. Então aqui no caso, ó, o funcionário F1, F2 e F3. Ó, o F1, ele tá trabalhando só no projeto um. Ó, o F2 tá tá trabalhando no projeto 2. O F3 tá Trabalhando no projeto 1 e no projeto dois, tá? Então aqui são relacionamentos binários, relacionamento ternário, quando envolvem eh pelo menos aí aqui no caso em específico três entidades envolvidas no relacionamento. Então aqui, ó, eu tenho um relacionamento de fornecimento, tá? De de peças eh fornecedores fornecendo peças
para determinados projetos. Então, ó, um fornecedor pode fornecer várias peças para vários Projetos. Uma peça pode ser fornecida por vários fornecedores, né? Ou seja, uma mesma peça, sei lá, um parafuso. Eu posso ter vários fornecedores desse parafuso e esse e o parafuso ele pode ser oferecido para vários projetos, tá? E da mesma forma um projeto ele pode ter vários fornecedores e várias peças sendo fornecidas a ele. Legal. E aqui a gente tem os atributos, ó. Novamente vamos recapitular aí, ó. Atributo comum, né? Um atributo simples, nome, endereço, eh, quantidade. Olha, o relacionamento ele pode ter
atributo também, tá? que o relacionamento fornece, tem um atributo chamado quantidade e a bolinha aqui, ó, com o nome e com underline. Que que é esse underline que a gente viu? É o atributo chave, o atributo identificador. É outra forma de representar o atributo Identificador. Cardinalidade, a gente já falou, relacionamento um para um, né? Aqui no caso, ó, um funcionário, ele trabalha apenas em um departamento e um departamento trabalha apenas um funcionário. Isso aqui é uma é um exemplo, né? Claro que na prática não se dá dessa forma, mas é um exemplo, tá? Ah, relacionamento
1 para n, OK? é quando uma entidade a está associada a vários números, né, de entidades de uma eh de uma outra entidade. Então, quando Um objeto aqui, no caso, ele pode estar relacionado com várias instâncias da outra entidade, tá? Então aqui no caso, ó, um departamento, ele tem vários funcionários e um funcionário ele tá apenas em um departamento. Outro exemplo, ó, o aluno ele pode estar inscrito em apenas um curso, né? E em um curso eu posso ter no mínimo um e no máximo vários alunos, tá? Ou seja, eu posso ter algum curso sem
Nenhum aluno? Se cair uma questão de concurso assim, não. Segundo essa representação aqui, esse diagrama entidade de relacionamento ou modelo entidade de relacionamento, tá falando que o curso eles tem ele tem que estar relacionado com no mínimo um aluno. Na hora de cadastrar o curso, eu já tenho que informar o aluno, OK? da forma que está representado. Ó, um aluno deve necessariamente estar inscrito em um curso e um curso eh podem estar inscrito Um ou vários alunos. Outra possibilidade é o relacionamento com a cardinalidade N para N. Então a gente viu um para um, um
para N para N, ou seja, vários para vários. Ó, aqui, ó, um funcionário, ele pode trabalhar em vários projetos e em um projeto podem trabalhar vários funcionários, OK? Essa é a cardinalidade N para N. É, essas observações aqui, ó, isso aqui vão, isso aqui vai ser útil na Nossa próxima aula quando a gente for aí eh gerar o modelo relacional. né, que de como que isso vai ficar eh trazendo aí mais detalhes de implementação, porque aqui lembra que o modelo conceitual é um modelo abstrato, né? é uma coisa mais pro cliente entender, ele não traz
tantos detalhes de implementação. E aqui já tá trazendo uma dica para se criar o modelo relacional, Que é um pouco mais descritivo, que o esse relacionamento ele vai acabar virando uma tabela também, tá? Então, normalmente as entidades lá no modelo físico do banco, elas acabam virando eh uma tabela e o relacionamento ele pode ou não virar uma tabela. Se o relacionamento for muitos para muitos, ele comumente vai virar uma tabela. Legal? Na próxima aula que a gente vai falar de modelo relacional, a gente vai entrar eh a fundo nesse Assunto aí, beleza? Então, relacionamento N
para N. Aqui a gente tem, ó, fornecedor fornecendo eh aqui um pedido, né, vários produtos em um pedido e um produto tendo vários fornecedores. Participação parcial. Que que é isso, pessoal, né? Se você encontrar essa terminologia em alguma questão de concurso, aí, ó, eh, uma instância da entidade A pode existir sem se relacionar com nenhuma instância da Entidade B. É, é aquilo que a gente chama de cardinalidade mínima eh zero, né? O que a gente chama de relacionamento opcional, tá? a gente pode chamar dessa forma também, um relacionamento opcional, que é a participação parcial. Então,
se você observar que a cardinalidade mínima é zero, é uma participação parcial. Então, um funcionário, ele gerencia nenhum ou um departamento, né, pelo zero aqui na cardinalidade mínima é Uma participação parcial. Participação total é quando tem que quando a gente tem aqui, ó, cardinalidade mínima um, né? Quando tem que estar relacionado com pelo menos uma instância da outra entidade. Então aqui, ó, uma obra ela tem que ter aqui, ó, um escritor, né? No mínimo um. Legal. Dependência existencial. É o mesmo exemplo que a gente tem aqui, né? A obra não pode existir sem um escritor,
né? Você não pode ter uma obra eh registrada, persistida no banco sem ter o respectivo escritor daquela obra, né? Então aqui no caso, ó, você não pode ter um funcionário sem um departamento. Então aqui é uma dependência existencial. ocorre quando é uma entidade, ela está condicionada, a existência dela está condicionada à existência de outra entidade. Então, se você observar isso no diagrama, significa uma dependência existencial, Tá? Então, entidade, essa entidade depende dessa para existir. Entidade fraca. Na entidade fraca, você também tem essas duas linhas ou aquela linha negritada, tá, pessoal? Que dá dependência existencial. Só
que a entidade fraca, ela também ela tem aqui o o retângulo com duas linhas, tá? Ó, não. E o que que a entidade fraca é? é uma entidade que não possui identidade própria. A sua chave primária É composta da chave estrangeira, eh, que vem lá da da outra entidade da qual ela depende, tá? E aí junta esse valor que vem daqui ela depende mais um um identificador dela. Então aí essas duas formam o identificador dessa inticidade fraca. Como assim, professor? Então, por exemplo, eh, você, vamos pensar aqui no no num plano de saúde, você tem
um um paciente que ele tem vários dependentes, né? Um cliente que tem vários Dependentes. Então, eh, a entidade dependente ela depende do do cliente ali para existir, né? ao qual ela está, de quem ela é dependente. Então, ela pode exigir ali eh o atributo identificador dessa entidade para compor sua própria identificação, ou seja, o CPF do pessoa titular do do plano de saúde. E aí junta-se mais um código próprio dela, então, sei lá, o dependente um. Então, juntando o valor um mais o CPF da pessoa, você sabe quem é o dependente Que você tá procurando.
Então, se for um segundo dependente dessa pessoa, então número dois e a o CPF da do titular plano. Então, com isso você tem aí o atributo chave composto, tá? Então essa é uma entidade fraca, entidade que não possui uma identidade própria. Ela depende ali de eh outra entidade para existir. E o seu identificador é composto ali de um identificador próprio mais o identificador da entidade de cola Depende, chamado também de dona, tá? Ó, um exemplo aqui, ó. O pedido ele pode ser no mínimo um ou vários itens, né? E os itens eles estão em um
pedido. Então aqui, ó, itens é uma entidade fraca que depende de pedidos para existir. E qual que é o atributo chave, né, desse dessa entidade? E a gente tem aqui um atributo composto, né? Chave composto. Então, ó, e quais são o que Que compõe essa chave? o número do item, só que o o só o número não é o suficiente para identificar o item. Então a gente precisa de mais informação. E a informação é a que vem lá da entidade dona do relacionamento, de quem ela depende, que é o número do pedido, né? Então o
número do pedido mais o número do item. Aí os dois atributos são identificadores de um item específico, tá? Relacionamento com grau maior do que dois, né? Ou seja, o ternário. É o que a gente já viu, né? Então aqui, ó, um fornecedor, ele pode fornecer para vários projetos várias peças, tá? Relacionamento ternário. E você pode ter representações diferentes para o mesmo modelo entidade de relacionamento. Então, presta atenção nisso, pessoal, tá? Então, só recapitulando, aqui a gente tem uma entidade, aqui a gente tem um Atributo código fornecedor. Código fornecedor é um atributo o quê? Um atributo
chave, né? Ó, o underline aí, ou seja, ou também um atributo identificador. Fornecedor e projeto tem um relacionamento que ele tá chamando de fornece cardinalidade N para N, né? E a mesma coisa aqui de fornecedor para peça também tem um relacionamento n para n e de peça para projeto, que é um outro Exemplo. E aí nós temos outros conceitos, né, de agregação, por exemplo, ó, é uma limitação do modelo entidade de relacionamento em que não é possível expressar relacionamentos entre relacionamentos, tá? A agregação é uma abstração através da qual os relacionamentos tratados como entidades são
tratados como entidades de nível superior. Então aqui, por exemplo, né, Aquilo que eu falei, pessoal, eh, no modelo entidade de relacionamento, não é possível você relacionar uma entidade com um relacionamento. Então, por exemplo, eh, um projeto, um funcionário, ele trabalha em vários projetos. Em um projeto trabalham vários funcionários, mas e a as máquinas aqui no caso, ó, a as máquinas elas deveriam estar relacionad, vamos supor que o que o Projetista ele queria relacionar a máquina com o relacionamento trabalho. Então o funcionário João trabalhando no projeto X, ele vai usar tais máquinas, mas eu não posso
relacionar a entidade com o relacionamento. Como é que eu posso fazer isso? Uma das formas é a entidade associativa que a gente falou lá no começo, ou a agregação, que vai virar isso aqui, ó. Eh, você transforma todo a entidade, os relacionamentos, ó, com quem ela vai Se ligar num numa como se fosse uma entidade maior, né, que na verdade uma agregação representada dessa forma. Então, se você vir isso na prova, tá aqui, duas entidades relacionadas em um retângulo maior, você tem uma agregação. Agora sim, eu consigo relacionar a máquina com essa agregação. Então, de
novo, o funcionário João trabalhando no projeto X, ele vai poder utilizar n Máquinas, eh, uma, duas, três máquinas específicas. A funcionária Maria trabalhando no projeto Y, ela vai poder usar duas máquinas, 10 máquinas, não sei. Então, a agregação nos permite eh modelar esse relacionamento de entidade com um relacionamento, OK? Entidade associativa no mesmo sentido, tá, pessoal? Então, ó, quando você quer aqui, ó, no Caso, eh, relacionar medicamento, né, a prescrição de medicamento com a consulta, né? Então, uma consulta do médico João com a paciente Maria gerou uma prescrição de n medicamentos, mas eu não posso
representar isso ligando aqui, ó. Eu não posso ligar um relacionamento em outro. Então, ó, como é que a gente faz isso? Ou agregação ou transforma a entidade em uma entidade Associativa. Agora sim, eu tenho aqui uma consulta que envolve um médico e um paciente. E nessa consulta eu tenho aqui, eu posso ter vários medicamentos prescritos, né? O, olha a pegadinha aí. necessariamente aqui eu vou ter vários medicamentos prescritos? Não, aqui tá trazendo só a cardinalidade máxima, né? Então eu posso ter vários medicamentos prescritos, mas não tá falando da mínima, então pode ser Que eu não
tenha nenhum também. E da mesma forma, o medicamento ele pode ser prescrito para várias consultas, né? É sempre a leitura lá do outro lado, tá? uma um medicamento vai ser prescrito para várias consultas, pode ser, né? OK. Aqui eu tenho um outro exemplo maior, tá? Então vocês podem aí estar eh olhando, ó. Então você tem entidade, você tem um atributo representado de outra forma. E eu e vejam que eu trouxe aqui para vocês várias Representações de modelos entidade de relacionamento. Ou seja, isso tudo aqui é eh são modelos conceituais de banco de dados, tá? Lembra
disso? Questão mais básica que você não pode errar. O modelo entidade de relacionamento, ele representa o modelo conceitual do banco de dados. E aí eu trouxe para vocês várias formas diferentes de representar as mesmas coisas. Então aqui o atributo, ó, representado com uma bolinha negritada, Né, toda preenchida. Esse aqui é um atributo chave, mas ele também pode ser aquela bolinha com underline. Vocês viram? Legal. Aqui o relacionamento, aqui uma entidade associativa, né? aqui um autor relacionamento, ó, a disciplina ela tem como pré-requisito eh outras entidades, né? Ou seja, outras disciplinas, mas da mesma entidade, né?
Não necessariamente o relacionamento tem que ser Entre ocorrer um relacionamento, eh, um autor relacionamento, que é o que a gente tem aqui, tá? Beleza? Então, por exemplo, a a disciplina banco de dados dois, ela pode ter como pré-requisito o banco de dados um, né? Então isso aqui é um exemplo de autor relacionamento. Outra questão aqui, ó, generalização e especialização, pessoal, foi a aqui é um um uma Anotação, né, uma representação que a gente trouxe ali nos primeiros slides. Então, ó, nós temos aqui, ó, um conjunto de entidade. Ele pode ser dividido em categorias, né? Então,
por exemplo, ó, um cliente, você pode ter tipos diferentes de cliente e isso é o que a gente chama de eh especialização, tá? Então, quando você pega uma entidade mais genérica e a partir dela você propõe outras entidades Mais especializadas, daí o nome especialização. E generalização é quando você faz aqui a leitura no sentido inverso, né? Então, que uma pessoa eh ela ela é um tipo de cliente, né, de forma mais genérica, ela é um cliente, tá? Então isso aqui você pode chamar de generalização ou especialização. Isso aqui o quê, professor? Esse eh que era
para ser um triângulo aqui, né? É um triângulo. Então, ó, um cliente ele pode ser do tipo pessoa física ou Pessoa jurídica, tá? E para que que eu vou representar, para que que criaram isso, né? Essa esse mecanismo que provém aqui da herança, né? Ó, em algumas situações, você pode ter entidades que compartilham atributos incomuns, mas ao mesmo tempo elas possuem atributos próprios, específicos de cada uma. Por exemplo, ó, tanto pessoa física quanto pessoa Jurídica possuem pode possuir um código identificador, né, que poderia ser o nosso atributo chave aqui, né, era só colocar um underline
e um atributo simples monovalorado, que é o nome, né? Toda toda pessoa física, jurídica tem um nome, né? Então, eh, esses atributos comuns a ambas entidades especializadas, eles ficam numa entidade mais genérica, né? Aquilo que é comum aos dois fica na mais Genérica. E aí você coloca como atributo nas específicas, nas especializadas, apenas atributos que são únicos delas. Então, ó, aqui o SIC, eu não não me recordo exatamente o que que significa essa sigla, mas é possivelmente aqui o o código de identificação, né, o CPF, talvez, algo assim. Então, é um código da pessoa física,
né, e o sexo da pessoa. A pessoa jurídica não possui sexo. Então, esse é um atributo único, específico da pessoa Física, né? E a pessoa jurídica possui um identificador aqui, poderia ser, por exemplo, CNPJ, né? É um atributo próprio de pessoa jurídica. Mas, ó, vejam bem, se na questão de concurso perguntar quais são os atributos que pessoa jurídica tem, ela possui o CNPJ, mas também os atributos da sua entidade mais genérica, cliente, ou seja, código e nome. Então, pessoa jurídica possui código, nome e o CNPJ. Pessoa física possui código, nome, Sexo e o CPF, tá?
Então você vai conseguir identificar uma especialização se você observar aqui no no relacionamento um triângulo e não um losângulo. Um losângulo, tá? Eh, aqui, ó, certos atributos aparecem somente em algumas subclasses, né? aquilo que eu falei. Outra outra questão também que pode ocorrer, ó, que é a especialização total ou parcial. Vamos Lá. Eh, total, toda a instância da superclasse, que que é a superclasse, professor? É a entidade mais genérica aí na herança, tá? Então, ó, pessoa física é um tipo de cliente, pessoa jurídica é um tipo de cliente, né? Então, essa entidade mais genérica é
a superclasse, tá? Então, a superclasse ela precisa estar associada a uma única instância eh está associada a uma a instância Correspondente de alguma subclasse, tá? Então, um cliente ele vai ter que estar relacionado, ele vai ter que ser pessoa física ou pessoa jurídica, tá? Aqui no outro caso, ó, motorista é um tipo de funcionário, secretária é um tipo de funcionário, é uma especialização ou generalização parcial. Por que parcial? Porque eu posso ter aqui, ó, é uma instância da superclasse, ou seja, eu posso ter um funcionário que não é nem Motorista nem secretária, tá? Então aí
nesse caso é uma generalização parcial, um funcionário que ele não obrigatoriamente ele precisa ser de um tipo e das entidades especializadas, tá? Então eu posso ter um funcionário que não é nem motorista, nem secretário parcial total. cliente, ele tem que ser ou pessoa física ou jurídica, ou ele vai ser um, ou ele vai ser outro obrigatoriamente. Aí é uma Generalização total. Outra coisa, generalização ou especialização exclusiva e não exclusiva. O que que é exclusiva? Ó, cada instância da superclasse pode estar associada a, no máximo, uma instância de uma subclasse. Ou seja, uma pessoa, ela é
ou é homem ou é mulher. Aqui, segundo essa modelagem, né? Aqui nesse outro exemplo, ó, não exclusiva, uma pessoa, ela pode ser professor, mas também pode ser um aluno. Pode ser professor em um curso e aluno em outro curso. Então, exclusiva é quando, eh, uma instância da dessa entidade mais genérica está relacionada com a apenas uma instância de uma entidade especializada. Na não exclusiva, uma única instância da mais genérica eh pode estar relacionada com várias instâncias, é com mais do que uma eh entidade especializada, né? Pessoa pode ser professor e pode ser um aluno também.
Finalizando, pessoal, herança múltipla. Então, ó, você tem aqui é várias heranças, né? Em cadeia. Você tem aqui uma um veículo que é a mais genérica. E o veículo pode ser terrestre ou aquático, né? Então que eu ten uma generalização. E o por sua vez, ó, aqui o veículo terrestre, ele pode ser um automóvel ou um veículo anfíbio. E da onde que vem a herança múltipla? É Quando você tem uma entidade que ela é ela é do tipo de mais do que uma entidade específica. Então aqui no caso, ó, o veículo ele é terrestre e é
aquático. Ou seja, essa é uma entidade onde a gente tem como herança múltipla, né? Uma entidade que ela herda características de mais do que uma entidade, né? Então é como um filho que erda características do pai e da mãe. Então isso aqui é um exemplo de herança Múltipla, tá? Então o veículo anfíbio vai herdar os atributos aqui da entidade terrestre e da entidade aquático, OK? Então se você vira isso na prova, você já sabe que é uma herança múltipla, tá? Aqui de terrestre para veículo não é uma herança múltipla, né? tá herdando apenas de uma
única entidade. Aquático também tá herdando apenas de veículo. Só há herança múltipla aqui em veículo Anfíbio. Legal, pessoal? Então é isso. É muita informação, eu sei que é. Cabe a você o quê? Eh, pega aí, vai na descrição do vídeo, baixa esse PDF, faz a leitura de forma calma, dá uma, tenta aprender, tenta decorar, se for necessário, a essas representações, tá? À medida que você for trabalhando, você for resolvendo questões, você vai se familiarizar com isso e vai ser mais tranquilo, tá? Então, precisar, precisa Eh rever algum conceito que você tá lendo, não entendeu direito,
volta aqui na aula, vai no vídeo, vai lá no ponto específico onde eu falo eh de tal coisa e estuda aquela questão que eu tô trazendo. Beleza, pessoal? Qualquer dúvida, deixa o comentário aí que eu vou ter satisfação em ajudar vocês. E novamente eu vou est colocando aí os vídeos com as questões comentadas. responda muitas questões. Então, o passo a passo é esse. Assista as aulas, Responda as questões e vai eh criando mecanismo para revisão desses conteúdos. O PDF que eu tô disponibilizando vai ajudar bastante vocês. Beleza, pessoal? Bons estudos, vamos seguir firme aí até
a aprovação. Um grande abraço, até mais. E aí, pessoal, beleza? Começando mais uma aula. Eu sou o professor Arnaldo, professor de informática do Instituto Federal de Tocantins e hoje a gente vai responder questões sobre modelagem Conceitual de dados, que é um assunto que está previsto aí para o cargo de escriturário, agente de tecnologia no Banco do Brasil, concurso de 2023. Mas claro que você pode usar esse conteúdo para outros concursos também. Então vamos lá. Se você não assistiu a aula sobre modelagem conceitual, eu fortemente recomendo que você a assista. Vou deixar ela aí no na
descrição do vídeo e depois você vem responder questões, OK? Então vamos lá. Eh, eu fiz aqui uma seleção, um filtro com questões mais recentes sobre modelagem conceitual de dados aqui na no site do Q concursos, disciplina banco de dados e eh questão ano 2023, 22 e 21, né? Buscando trazer aí questões mais recentes de fato, apesar de que esse é um assunto antigo, tá? Então vamos lá. uma questão aqui de 2022 para o Instituto Federal do Rio Grande do Sul, técnico informática. Então, ela diz assim o seguinte, ó. Assinala é Alternativa que apresenta uma ferramenta
utilizada na modelagem conceitual de um banco de dados relacional, né? Ele quer saber qual e dessas alternativas aqui diz respeito a uma ferramenta utilizada na criação eh de um modelo conceitual. A gente viu na aula que eh o processo de construção de banco de dados, ele passa por algumas etapas, né? A primeira etapa é com base nos requisitos, a gente vai criar um modelo conceitual através de um Diagrama entidade de relacionamento ou um modelo entidade de relacionamento. Depois desse modelo conceitual, a gente vai criar o modelo lógico através do modelo relacional, ou seja, é um
modelo intermediário. E aí na terceira etapa a gente tem eh finalmente o modelo físico, né, que é o banco propriamente dito com sua estrutura definida. Legal. Então, o modelo conceitual, ele é o mais abstrato, ele não tem tantos detalhes de implementação, detalhes Técnicos de como programar, de como criar e aí vai, tá? é uma coisa mais próxima do cliente. Então, como eu falei, o que que a gente utiliza para criar um modelo conceitual, para representar o modelo conceitual, um diagrama entidade relacionamento, né, ou um modelo entidade de relacionamento. Então, a primeira alternativa aqui já nos
diz qual é a resposta, tá? Essa prova de conceito não não tem nada a ver com o Modelo conceitual. Fluxograma também não. Teste de mesa, diagrama, entidade de relacionamento. Essa aqui não tem erro, tá? Beleza? Parabéns, você acertou. Tô fazendo aqui agora junto com vocês essas questões, tá? Questão número dois. E essa é pra Prefeitura de Pedra Branca do Amapari. Beleza? Na MAP para analista em TI fala o seguinte, ó. Segundo o Coronel e Rob, o projeto de banco de dados Focaliza em como a estrutura do banco será utilizada para armazenar e gerenciar todos os
dados do sistema de usuário final. Na figura seguir, podemos observar o processo de modelagem de um banco de dados, eh, que são determinados pelas etapas de modelagem conceitual, modelagem lógica e modelagem física. Foi o que eu acabei de falar, né? A gente tem esses três modelos. Modelo conceitual determina a forma como os dados eh estarão dispostos no Banco. Modelo lógico determina a lógica dos dados dentro da estrutura do banco. Eh, aí tem modelo físico, determina as estruturas físicas do banco de dados e das informações em si. A partir desse cenário sobre a modelagem conceitual, é
correto afirmar que alternativa A, na modelagem conceitual determina-se o escopo do projeto para poder determinar o que será realizado e qual processo será necessário ser observado na empresa para Realizar a modelagem do banco de dados. E aí é uma questão de desmembrar eh essa assertiva toda e buscar alguma afirmação aqui que invalide, né, que esteja errada, né, no sentido de tentar cortar algumas alternativas, né? Então aqui tá falando que no modelo conceitual determina se o escopo do projeto e qual o processo será necessário para ser ser observado para realizar a modelagem do banco. essa questão
De qual processo será observado. Isso aqui eu eu vejo que essa questão de observar processos, eh, isso aqui vai estar mais relacionado na é uma etapa na no levantamento de requisitos, né, que vem antes da criação do modelo conceitual. Então, eh, como que a gente cria o modelo conceitual? A partir da necessidade do cliente, que é o os requisitos, né, que são os requisitos. Então eu vejo Que essa questão de observar é uma técnica que pode ser utilizada no levantamento de requisitos antes da criação do modelo conceitual, tá? Então eu cortarei essa alternativa. Eh, na
modelagem conceitual é realizado um levantamento das necessidades que o software deverá possuir. Como eu falei, né? É o levantamento das necessidades, ele é antes, né? Vamos pra próxima. Deixa essa questão Aí. Na modelagem conceitual é uma descrição concisa das informações que o software deverá possuir de acordo com os requisitos. Descrição concisa das informações que o software deverá possuir de acordo com seus requisitos. Agora sim, vocês estão vendo, ó, eh, que que eu falei, né, que o modelo conceitual ele é uma representação mais alto nível, mais abstrata, né, do das do que que a gente tem
eh no modelo conceitual. Aí, ele é representado através do modelo entidade de relacionamento. Então, nós temos eh no modelo conceitual entidades, atributos e relacionamentos, né? As entidades representam o que podem vir a ser uma tabela lá no modelo físico. Eh, os atributos são as informações que serão armazenadas e os relacionamentos são como essas entidades eh relacionam-se entre si, né? Então, é através dos relacionamentos que eu Consigo, por exemplo, pegar um cliente e buscar todas as informações relacionadas a ao cliente X, ao cliente Y, né, graças aos relacionamentos. Então, esse é o isso é o que
tem no modelo conceitual, que é feito a partir dos requisitos. Então, ó, de acordo com os meus requisitos, né? Então, eu creio que essa questão aqui, ela é uma forte candidata, está correta. Vamos para D. Não respondam. Eh, leiam todas as alternativas, tá? Não Vá já falar é essa aqui, né? Normalmente as questões elas costumam te induzir ao erro, né? Às vezes coloca, começa com informação correta, seu cérebro já pensa, já decide que aquilo ali tá correto e aí você não lê mais as outras questões, então tem que analisar todas, OK? D. Na modelagem conceitual
é estabelecido um tempo para realizar a modelagem. Nesta fase, muitos problemas podem ser encontrados e rapidamente solucionados. Estabelecer tempo para realizar tempo para realizar modelagem. Isso aqui não existe, né? Claro que a gente tem prazo para entregar os trabalhos, mas no modelo, o modelo em si não estabelece tempo nenhum. Na modelagem conceitual se estabelece a quantidade de mão de obra para desenvolver o software? Também não. Vamos ver se tá certo a alternativa C. Perfeito, pessoal. Espero que vocês Tenham entendido aí, tá? Na modelagem conceitual, eh, ela é uma descrição concisa das informações que o software
deverá possuir, beleza? Informações. O que que informações? Atributos, as entidades, né? As tabelas e os relacionamentos de que são feitos de acordo com os requisitos. Quem assistiu a aula no primeira, na primeira página do PDF que eu mostro, eu trago justamente eh esse fluxo, tá? Começando Lá na nos requisitos para depois criar o modelo conceitual. De uma olhada lá na aula, pessoal, ó. De acordo? Essa aqui é um é um é para analista em TI, desenvolvimento de sistemas, tá? Instituto AOCP 2021. Acerca de conceitos relacionados à modelagem de dados, julgue o seguinte item. Em um
projeto de banco de dados, o modelo conceitual busca definir como as tabelas serão utilizadas, utilizadas, né? De novo, em Um projeto de banco de dados, o modelo conceitual busca definir como as tabelas serão utilizadas. Não, pessoal, eh, eu creio que essa que essa assertiva está errada, né, equivocada. Por quê? Eh, o modelo conceitual, novamente, ele traz a descrição das informações que nós teremos ali, né, os atributos, as entidades e os relacionamentos. Mas como essas informações serão utilizadas e por quem, não é? Eh, nessa etapa que a gente define esse tipo de coisa. Então eu Julgo
que essa eh afirmação está errada. OK. Ó, questão de 2022 aqui para Petrobras, paraa analista de sistemas processos de negócio. Diz o seguinte: Quanto aos conceitos relativos à arquitetura de dados, julgue o item a seguir. O desenvolvimento de soluções inicia pela modelagem de dados conceitual. que é feita geralmente pelo gestor de dados de negócio ou outro profissional Acompanhado de sua supervisão e ou orientação. Aqui a gente tem que olhar com cuidado, né, cada afirmação que é dada. Aqui está falando conceitos relativos à arquitetura de dados. Legal. eh o desenvolvimento de soluções, né? E a gente
já pensa que tipo de soluções isso aqui nos induz a pensar que são soluções para banco de dados, né? Quando ele fala de modelagem e dados conceitual. Então, o desenvolvimento de Soluções inicia pela modelagem de dados conceitual, está correto, né? A partir dos requisitos, a gente tem o primeiro modelo, que é o modelo de dados conceitual. Depois a gente tem o modelo lógico, depois modelo físico. Modelo conceitual ele é representado pelo diagrama entidade de relacionamento. O modelo lógico é representado eh pelo modelo relacional e o modelo físico é modelo físico. Então a primeira etapa aqui
eu De diria que está correta, né? Segunda etapa e é feita geralmente pelo gestor de dados do negócio. Hã, vamos lá. Gestor de dados. Normalmente quem projeta um banco de dados é o o DBA. Se eu não apesar que o DBA ele é administrador do banco de dados, né? Não necessariamente ele projeta. Pode ser aqui feita geralmente pelo gestor de dados do negócio. Faz sentido, né? Ou outro profissional Acompanhado da supervisão do gestor de dados, né? Então a gente pensa que no gestor de dados não como cara responsável pela implementação, né, pelo armazenamento, criação de
projetos que envolvem aí a gerenciamento de dados, né? Então eu creio que sim, que essa questão está correta. Então vamos ver se está correta mesmo. Perfeito, pessoal. Questão correta. Beleza. Desvolvimento de Soluções inicia pela modelagem de dados conceitual, que é feita geralmente pelo gestor de dados do negócio ou supervisionado por ele. Beleza? A dificuldade aqui é a essa questão do papel, né? Porque nem não é em todas as instituições que nós temos essas figuras, né? São raríssimas instituições ou empresas que que há em que há de fato um eh um papel como esse específico, né?
Um cara para trabalhar só com isso. Beleza, show de bola. Vamos Pra próxima. Questão de 2021, banca CESP, prova da Polícia Federal para escrivão de Polícia Federal. Então, vamos lá. No que diz respeito à modelagem conceitual, julgem, julgue o item que se segue. Se uma tabela de banco de dados tiver 205 atributos, então isso significa que ela tem 205 registros, né, pessoal? Essa aqui é uma questão muito fácil, né? Isso aqui é normalmente o o escrivão não é um profissional de TI, Né? Não necessariamente. Então, eh, é um meio que uma pegadinha, mas obviamente essa
questão está errada, né? Por quê? O que são os atributos? Vamos lembrar da aula aí, vídeo na descrição, tá? Para quem não assistiu a aula sobre modelagem conceitual de dados. Os atributos são informações, né, são as informações, os dados que serão armazenados e ali naquela entidade, naquela tabela. Então, se eu tenho uma Entidade ou tabela, pessoa, por exemplo, cliente, melhor, cliente, tá? Eu vou cadastrar, eu quero cadastrar os clientes, então eu vou ter uma entidade cliente e aí quais informações que eu quero armazenar do cliente, né? Eu vou pedir todas as informações dele, não, né?
Até se você oferecer um um formulário de cadastro, o cliente vai vazar, né? Ninguém vai gosta, ninguém gosta de responder muita informações. Então, quais são as principais Informações que eu tenho que armazenar do cliente? Então, vamos lá. Sei lá, CPF, nome, data de nascimento, endereço, OK? Quatro informações. Então, esses são os quatro atributos que serão armazenados, né? Mas isso significa que se eu tenho lá dos e quatro atributos que eu vou ter quatro registros. O que que são os registros, pessoal? Quando você cadastrar um cliente, né, por exemplo, castar o primeiro cliente No meu na
minha base, nessa tabela cliente. Então, com as minhas informações, eu preenchi lá, vou coletar aquelas informações, vou gravar, é o meu nome, Arnaldo, a data de nascimento e o endereço. Peguei as minhas informações e aí foi gravada uma primeira linha, um primeiro registro naquela tabela ou ainda tupla, beleza? Eh, saiba disso que a gente tem diversas nomenclaturas paraa mesma coisa, tá? No banco de dados. Então, eh, faça um Esquema para você lembrar disso. Então, vamos lá. Uma linha na tabela, um registro ou uma tupla significa diz respeito à mesma coisa, tá? que é um cadastro
ali, um preenchimento na tabela do banco de dados. Beleza? Então, não, né? Eu posso ter apenas eh um cadastro no banco de dados, uma única um único registro, vamos usar o termo que tá aqui, contendo as 205 informações, os 205 atributos que se pede ali naquela tabela, né? Beleza? Então, os registros são eh os atributos, as informações que eu estou armazenando, mas pode pode ser apenas a de um registro. Beleza? Então, totalmente errada essa questão. Vamos pra próxima questão de 2021. é aqui para técnico e em TI da Universidade Federal do Espírito Santo, se eu
não estiver errado, diz o seguinte: no contexto de modelagem de dados, a figura seguir apresenta um diagrama entidade Relacionamento, ferramenta que pode ser utilizada para criar um esquema conceitual para um banco de dados antes de sua implementação em um SGBD, sistema gerenciador de bancos de dados. Então, vamos lá. Eu tenho aqui uma uma um diagrama, né, entidade de relacionamento. Ele traz o seguinte, ó, uma entidade, departamento, e aí eu tenho eh o atributo, a um atributo, olha aqui o nome, o nome do atributo com Underline. Que que significa isso? Segundo a nossa aula, um atributo
chave, um atributo identificador. Então, nome e número são atributo chave. Opa. Então, a gente tem aqui é uma chave composta, né? Eu tenho dois atributos identificadores que juntos eles vão nos permitir identificar uma um departamento específico de forma inequívoca, tá? Então o projetista ele julgou que só o número ou só o nome não seria suficiente para identificar um departamento. Legal? Para ter certeza que aquele departamento é de fato o que o que ele tá procurando. Então, chave composta aqui. Beleza? Aqui eu tenho gerente, que é um atributo simples, monovalorado, né? Apenas um um único gerente
vai ser informado aí. data de início do gerente que ele trabalha, vai trabalhar no departamento, gerenciar o departamento. E aí a eh localizações, né? E aqui eu tenho um atributo com uma linha eh dupla, né? Uma Linha dupla. E o que que significa essa linha dupla, pessoal? Isso aqui é o atributo multivalorado, por isso que ele colocou até no plural aqui, localizações, né? Que que é o atributo multivalorado? São atributos que em que você pode armazenar mais do que uma informação, né? Como o telefone, né? A gente, uma pessoa, ela pode ter vários telefones, então
você pode castrar vários telefones para aquela pessoa. E aqui localizações Tá dizendo que é um atributo multi valorado, que é diferente do atributo composto. Lembra? O atributo composto é um um atributo que possui várias subinformações diferentes, mas que juntas compõe uma informação maior, como por exemplo o endereço. Então vamos para para as alternativas. Eh, sobre a figura é incorreto afirmar que atenção aí nas no que tá em caixa alta, né? E tá Procurando o que tá errado. Vamos lá. A departamento aqui a entidade é um tipo de entidade, opa, correta, que define uma coleção ou
um conjunto de entidades que têm os mesmos atributos. Perfeito, pessoal. Eh, o que que é entidade? É justamente e é o que vai virar uma tabela, né? Ali vou armazenar todas as informações relacionadas aqui, nesse caso, a departamento, né? Então eu vou ter aqui uma coleção de departamentos Que vão ser cadastrados. Aí vou cadastrar o primeiro departamento, o segundo, né? O departamento de TI, o jurídico, o de contabilidade e aí vai. Beleza? Mas você vai cadastrar apenas uma única vez. Normalmente você tem um único registro referente ao departamento de TI, ao departamento jurídico. Beleza? É
uma coleção de entidades que t os mesmos atributos. Perfeito. Beleza. Então, uma coleção, Uma coisa que me coloca uma pulga atrás da orelha é esse de entidades, né? Uma coleção de entidades. Na verdade é uma entidade só. A gente vai ter aqui uma coleção de registros, né? Com os atributos iguais. Mas vamos deixar ela aqui. Não vou cortar não, tá? E nem marcar que tá eh na verdade tá procurando a incorreta, né? Então vamos deixar ela aqui. Gera, início gerente. Ou seja, esses Dois atributos aqui simples são atributos ligados a departamento. Perfeito. Até aqui tá
certíssimo. Conforme representado pelas linhas retas entre as formas. Perfeito. Essa está totalmente correta. Não tem erro. Então a gente já corta ela porque ele tá querendo saber a incorreta. Nome e número são atributos chave de departamento. Atributo chave, nome e número, underlinezinho aqui. Perfeito, né? A outra notação para isso é o quê? Aquela bolinha preenchida, correto? Que podem identificar cada entidade de maneira exclusiva. Certíssima essa afirmação. Então, a gente já corta. D. Segue-se uma notação próxima daquela proposta originalmente por Chen, né? É a anotação de Peter Chen. Eu eu acho que eu falo isso na
aula também, tá? Essa anotação que a gente tá usando aqui para fazer o diagrama entidade de relacionamento é aquela ali orientada, né, definida por Peter Chen. Porém, outras notações são possíveis, tá correta também. Essa anação aqui é a que mais se aproxima de Peter Channel. Eh, mas eh existem outras anotações possíveis? Sim. Então é uma questão que tá correta. Então vamos cortar também. Localizações é um atributo composto. Atributo composto. Localizações. Que que eu falei? Atributo. Is aqui é um atributo multivalorado, né? Não é um atributo composto. Aqui tá falando que é um atributo composto ligado
a departamento e pode ser dividido em subpartes representando atributos mais básicos. Não, não é atributo composto. Atributo composto seria endereço. O endereço você tem ali a pode ter a quadra, né? Você pode ter o a alameda ou número aqui na minha cidade. Então você consegue desmembrar em partes menores, mas aqui Não. Aqui em localizações a gente tem várias informações de localizações. Então o departamento ele pode ter três localizações cadastradas ali em único registro, né? Então tá errado que tá definindo aqui. Isso aqui é uma definição de atributo mulvalorado e não composto. Então achamos uma que
tá errada de fato, né? Eu tinha ficado aqui com a pulga atrás da orelha com Essa coleção de entidades, mas é essa aqui tá totalmente errada. Então essa aqui tá muito errada, né? Então a gente vai nessa aqui. Afirmação correta. Vamos ver se é essa mesmo. Perfeito, pessoal. Acertamos. Tô fazendo junto com vocês, viu? Ó, prefeit para auditor fiscal da receita municipal. E cargo, cargo bom, hein? Paga bem. Prefeitura de Criciúma, Santa Catarina, 2022. Então, vamos lá. Analisa as afirmativas abaixo sobre modelos, entidade relacionamento. Três afirmativas. Vamos ver. Ele quer saber, ó, quais dessas estão
corretas. Então, a um, eh, modelo entidade de relacionamento são modelos abstratos, correto? Cujo objetivo é descrever de forma conceitual um banco de dados. Então, o modelo entidade de relacionamento ou diagrama entidade de Relacionamento é um modelo abstrato. Sim, é alto nível, não traz detalhes de tantos detalhes de implementação. Eh, descreve a forma conceitual do banco. Perfeito, perfeito. A um está corretíssima, né? Modelo conceitual através do diagrama entidade de relacionamento. Modelo lógico, que é o segundo modelo, através do modelo relacional. E o terceiro modelo é modelo físico. Então, modelo conceitual, lógico e Físico. Diagramidade de relacionamento,
modelo relacional e o físico. Então, questão um está correta. A gente já pode até cortar aqui, ó. O que não tiver a um, a gente já tira, viu? Ó, aqui tá falando que é só dois e três, então a gente conseguiu cortar só uma. Vamos pra próxima. Dois. As entidades representadas no modelo correspondem aos atores envolvidos na operação do software do respectivo banco de dados. [Música] Ã, vamos lá. Vamos para essa três aqui que eu acho que essa aqui tá mais fácil da gente cortar. Ó, a três, o produto da modelagem, né? O resultado da
modelagem é um diagrama escrito na notação BPMN, que isso aqui é business pro modeling notation, né? Isso aqui é para para modelos de processo de negócio, pessoal. Isso aqui é uma anotação para Representar modelos de processo de negócio, que é um assunto que normalmente está relacionado, que cai em concursos da área de TI. Mas a o modelo entidade de relacionamento ou diagrama, ele serve para definição de modelo conceitual. O BPMN é outra anotação que serve para especificar um modelo de processo de negócio. Então essa questão tá errada, né, pessoal? Essa aqui tá errada. Beleza? Eh,
então eu tá falando que o o produto da modelagem é um diagrama inscrito na notação BPMN. Não é um modelo entidade de relacionamento, um dia um diagrama entidade de relacionamento, né? Mas que não tem nada a ver com BPMN. Então o que tiver a alternativa três, a gente aqui corta, né? Se tiver a três, a gente corta, que a gente sabe que a três está Errada. Agora é saber se a dois está certa ou não. Então vamos nela. As entidades representadas no modelo correspondem aos atores envolvidos na operação do software do respectivo banco. Então, todas
as entidades que eu tenho no modelo, entidade de relacionamento, elas tratam dos atores, né? Ou seja, o que que são os atores? Eh, são pessoas ou outros sistemas que vão operar o software, né, do respectivo banco, não, né, pessoal? As entidades Elas dizem respeito àos dados que serão armazenados, mas não necessariamente tem relação com um ator. Beleza? Entenderam? O ator é aquele cara ou outro sistema que vai eh operar as funções do software, né? Mas as entidades não t nada a ver com isso, né? Elas servem para armazenar os dados eh que buscam atender a
necessidade ali do negócio. Então, questão dois, eu julgo está errada também. Vamos ver se é Isso mesmo. Questão eu entendo que apenas a afirmativa um está correta, pessoal. Se eu errar também não tem problema, tá? Eh, concurso é assim, né? Muitas pegadinhas. A gente tá aqui aprendendo juntos com base na nossa aula. Por enquanto a gente acertou todas. Vamos ver se acertou essa também. Acertamos. Perfeito. Questão correta. Espero que vocês tenham Entendido aí e o que estava certo ou errado. Qualquer dúvida, deixe um comentário. Vamos pra próxima. São nove questões, tá? Estamos acabando. Eh, essa
aqui é para analista de desenvolvimento de sistemas, eh, de um órgão aqui que eu não sei exatamente do que que se trata, mas que fala, ó, em um racatom, né, que são essas esses desafios em que as equipes participam de programação, cada equipe Pode ter de três a cinco pessoas, tá? Para auxiliar as equipes, o evento conta com mentores em diferentes especialidades. Quando necessitar de auxílio, o membro da equipe registra solicitação de mentoria. Nessa solicitação deve constar o participante que solicitou o auxílio, o mentor solicitado e a hora da solicitação. Ao final da competição, cada
participante recebe um certificado em que constam seus dados pessoais de sua equipe. Cada Mentor recebe um certificado onde constam seus dados pessoais e o nome das equipes que pediram a sua ajuda. Ah, tá. Então, a tá descrevendo aqui o modelo que tá sendo representado, hein, pessoal? Entenderam? Aí é um evento, então é um sistema que vai armazenar informações do para o evento, né, que paraa emissão do certificado. Então vamos lá. Questão boa. A gente tem as equipes. Cada equipe Pode ter de três a cinco participantes. Eh, o a gente tem para auxiliar as equipes os
mentores, tá? Que não são os participantes, aí são os mentores que vão ajudar. E aí a equipe que precisar de auxílio, ela registra uma solicitação de mentoria, tá? Beleza? Aí nessa solução de mentoria tem que ter eh o participante que solicitou o auxílio, o mentor Solicitado e a hora da solicitação. Ao final da competição, cada participante recebe um certificado. Então vamos lá. Utilizando o modelo antiedade de relacionamento, o analista modelou conceitualmente uma base de dados que atende esses requisitos informacionais. Essa base está representada no diagrama conceitual abaixo, conforme anotação gráfica eh enhauser, a qual é
baseada na proposta De Peter Chen. Considere que os atributos indicados são os necessários e que as cardinalidades dos relacionamentos capturam corretamente as restrições do domínio, né? Quem não sabe o que é cardinalidade, vai lá na aula, link na descrição. Considerando a modelagem entidade de relacionamento acima, qual ou quais relacionamentos são dispensáveis e poderiam ser eliminados sem prejuízo para os requisitos Informacionais a serem atendidos por esse banco. Ah, tá. Então, a gente tem aqui um um modelo e ele tá dizendo que nós temos um relacionamento aqui que é desnecessário. Então, ó, qual ou quais, né? Pode
ser que tenha até mais do que um. Quais relacionamentos aqui são dispensáveis que não são obrigatórios e podem ser cortados? Tá? de forma que ainda a gente consiga eh atender esses Requisitos, beleza? Quando for lá depois do evento gerar o certificado, a gente consiga com base nessas informações. Então, vamos lá. Ah, o participante, ele vai ter que, a gente tem aqui as entidades, ó, participante, equipe, né? Então, o participante ele tá em uma equipe, né? Ele compõe uma equipe, lembra da cardinalidade? Vou aumentar aqui para melhorar a visualização para vocês. Ó, um participante, ele tá
em uma equipe e em uma equipe nós temos trê, no mínimo três e no máximo cinco participantes, compondo ela, né? E aqui contas os atributos que fazem parte de participante e equipe, né? Aqui atributo chave de participante é o CPF, tem nome, formação e equipe tem aqui alguns atributos. Então, ou seja, a partir de uma equipe, se eu buscar uma equipe, eu consigo listar, vamos supor equipe sei lá, A. Então, eu consigo Buscar todos os participantes da equipe A através do registro da equipe A. Legal. E aí eu preciso também o quê? Armazenar o quê,
pessoal? Eh, aqui os mentores, né? Eu tenho os mentores cadastrados e o o mentor ele pode eh ser ele pode ser solicitada a participação dele aqui, né, para ajudar um participante, né, é o que tá falando aqui, ó. Cadê? Eh, quando necessitar de auxílio, o membro da Equipe, ele registra solicitação de mentoria. Então eu precisa solicitar um mentor, né? Eu preciso ter alguma forma de solicitar esse mentor. Beleza? Ó, na solicitação deve constar o participante que ele solicitou o auxílio, ou seja, quem que pediu ajuda, o mentor que foi solicitado e a hora da solicitação.
Perfeito. Então aqui a gente é o que a gente tem aqui, ó, né? Então, ó, um participante, ele pode Solicitar nenhum, ó, no mínimo zero, né? Ou seja, nenhum ou n vários, nenhum ou vários mentores para ajudá-lo, né? E um mentor, ele pode ser solicitado por nenhum ou vários participantes. Então, a gente tem aqui um relacionamento n para n, né? E nos relacionamentos N para N, ou seja, de muitos para muitos, ah, normalmente esse esse relacionamento aqui, ó, ele vai virar Uma tabela. Quando você tem um relacionamento n para n, o relacionamento geralmente vira uma
tabela própria, ou seja, não é só a entidade que vai virar uma tabela lá na frente, tá? Então, o relacionamento também vira, vai virar uma tabela própria, vai ter uma tabela chamada solicitação, vai colocar algum nome aí para representar as solicitações eh de mentores por parte dos participantes. E aí você vai ter lá a a Chave eh que identifica o participante e a chave que identifica o mentor, né, o CPF de cada um. e mais um terceiro atributo, que é a data e a hora eh em que foi realizada essa solicitação. Então, pessoal, a gente
já sabe que solicitação não pode ser cortado, tá? Ele quer saber quais relacionamentos são dispensáveis. Solicitação não é. Então, vamos cortar aqui, ó. Não, onde tiver solicitação a gente corta. Negativo de forma alguma. Composição. Eh, eu preciso do relacionamento composição. Preciso, né? Porque senão eu não vou conseguir descobrir em que equipe cada participante tá e vice-versa, né? Quais participantes compõem cada equipe. Então, composição eu tenho que ter, é o que permite identificar isso. Então, composição eu não posso cortar. onde tiver composição, eu corto. Certificado. Eu preciso desse relacionamento certificado paraa equipe? Não, né, pessoal? Que
de acordo com as solicitações, eu já consigo eh emitir o certificado pro mentor, né? O que que tem que trazer no certificado? Ó, eh, cada participante recebe um certificado em conta seus dados pessoais e da sua equipe. Então, com base nessas informações, eu já tenho os participantes cadastrados, eu consigo já gerar os certificados e a equipe da qual ele faz parte. E o mentor, ele vai receber o certificado Também eh com os nomes das equipes que solicitaram seu auxílio, né? Como é que eu consigo então, professor? Se eu não tenho a ligação do mentor com
a equipe, como é que eu vou conseguir gerar o certificado informando qual equipe que ele ajudou? Ora, se aqui na solicitação eu tenho o participante e o mentor, então vamos lá. Eu quero a solicitação do mentor, vamos supor, João. João ajudou um participante. Então eu vou lá, falo quem que o João ajudou. Ajudou a participante Maria. Então vou lá na Maria. E aí, a Maria faz parte de qual equipe? Da equipe A. Opa. Então, beleza, eu já consigo através desses relacionamentos eh eh imprimir, né, gerar o certificado para cada mentor, eh informando a equipe eh
em que os participantes que ele ajudou estavam. Beleza? Então essa questão eu vejo que a alternativa errada, eh, a alternativa correta, né, que onde consta um relacionamento que é Dispensável é alternativa A, certificado. Vamos ver. Perfeito, galera. Vamos pra última questão dessa aula. Então, ó, questão de 2021, Defensoria Pública Estadual na Paraíba para analista de sistemas. Ela diz o seguinte, ó, modelo entidade de relaçamento é um dos padrões de modelagem conceitual mais difundido e utilizado, tá? analise as afirmações a seguir. Então, ó, um, o eh o conceito fundamental da abordagem do modelo Entidade de relacionamento
é a entidade. É um dos conceitos fundamentais, tá? Trata-se de um conjunto de objetos da realidade modelada sobre os quais deseja se manter informações do banco. Perfeita, questão um, corretíssima. Ó, estão corretas apenas. Então, onde não tiver um, a gente já corta. Não tem um, não tem um. Dois, um relacionamento é um conjunto de associações entre entidades. Perfeito. No diagrama entidade de relacionamento, um relacionamento é comumente representado por um losângulo, que deve ser ligados por linhas aos elementos que representam as entidades e participam do relacionamento. Correta? Questão dois, está correta, né? O relacionamento é representado
pelo losango. Esse comumente me deixou assim, mas eh pode ser que eu tenha outros tipos de de relacionamentos representados de Outra forma, né? Uma entidade associativa, uma agregação. Eu vou vou aceitar o comummente. Então a dois a gente julga que tá certo também. Então onde tiver a dois a gente já deixa as duas aqui já tem. Beleza? Três. A cardinalidade é o dado que está associado a cada ocorrência de uma entidade ou relacionamento. Ao transformar o modelo entidade de relacionamento no modelo Físico, as cardinalidades passam a ser os nomes dos campos contidos na tabela. Nada
a ver, né? Os nomes do campo são os atributos que são três totalmente errada. Então vamos cortar onde tiver três, tá? Três tá errado aqui, ó. Essas três aqui, ó, possuem a alternativa três. Então, só reafirma que a três, essas aqui estão erradas mesmo, né? Então, todas também é errado. Três está errada. Generalização e especialização gera a ideia de herança De propriedade. Sim, né? A generalização ou especialização estão fundamentadas na ideia de herança. Falei isso na aula. Assistam a aula. da propriedades significa que cada ocorrência da entidade especializada, ou seja, eu tenho pessoa, pessoa jurídica,
pessoa física. Então, da especializada, pessoa física. Então, cada ocorrência dessa entidade, além dos próprios a atributos, né, também vão ter as propriedades da entidade mais genérica. Sim, é o que eu falei na aula, né? A entidade especializada, ela possui os atributos da mais genérica mais os atributos que são próprios, específicos dela. Daí o motivo de se criar uma eh especialização ou generalização. Beleza? Então, alternativa A corretíssima, né? Vamos ver. Perfeito, pessoal. Olha aí, acertamos todas as questões. Bacana. fiz junto com vocês aqui. Então, o conteúdo que eu passei Para vocês na aula sobre modelagem de
dados foi suficiente para que a gente resolvesse todas essas questões eh tranquilamente, questões mais recentes, né, de 2021 para cá, e que não tivemos grandes problemas para resolvê-las. Beleza? Espero que tenha ajudado. Qualquer dúvida, deixe um comentário, assista a aula. Legal? Faça anotações, utilize mecanismo de revisão, deixe seu comentário, deixe seu like, compartilha com quem também tá estudando Pro concurso do Banco do Brasil ou outro concurso que tenha esse assunto e estou à disposição de vocês. Grande abraço. Bons estudos. E aí, pessoal, beleza? Na aula de hoje a gente vai falar sobre abordagem relacional, que
como vimos na aula anterior de banco de dados, o projeto de banco de dados, ele passa por três etapas. A primeira etapa, desenvolvimento do modelo conceitual, que é o modelo mais alto nível, mais Abstrato. Depois a gente vai para um modelo intermediário, que é o modelo lógico, que é feito através da abordagem relacional que a gente vai estudar hoje. E a terceira etapa que é o modelo físico, OK? Então, conceitual, lógico e físico. Modelo conceitual representado pelo diagrama entidade de relacionamento. O modelo lógico, ele é feito através da abordagem relacional, através do modelo relacional e
modelo físico, que é o modelo que é o banco Propriamente dito no seu estado final. Legal? Então, vamos lá falar mais sobre abordagem relacional, modelo relacional de dados. Ó, o banco de dados relacional, ele é composto por tabelas, né? O que a gente chama de relações. Então, aquilo que a gente viu na aula anterior, eh, no diagrama entidade de relacionamento como sendo uma entidade, normalmente vai virar uma tabela ou também uma relação, tá? Se você não assistiu a aula Anterior, eu recomendo que vocês a assistam, tá? que a gente tá aqui numa sequência de eh
estudos, beleza? Então, vamos entender o seguinte. Para tratar de um mesmo assunto, nós temos nomenclaturas diferentes. Então, uma tabela no banco de dados também pode ser chamada de relação e lá no diagrama entidade de relacionamento a gente pode também chamar de entidade, tá? E uma tabela é composta por o quê? Um conjunto de linhas. As linhas são os cadastros, Né? são aqueles dados que a gente persiste ou armazena no banco de dados. Então, se eu cadastro um produto numa em uma tabela do meu banco de dados, eu vou ter ali uma linha referente ao produto
Y ou X, com todos os dados relacionados à aquele produto. E a linha, por sua vez, é composta por vários campos. Os campos são o quê? Os atributos, né? A gente viu isso lá no diagrama entidade de relacionamento. Os atributos dizem respeito às Características eh daquele objeto que tá sendo armazenado na tabela, né? São as informações que vão ser armazenadas ali na tabela. Então, se eu quero cadastrar um produto, quais informações, quais campos eu desejo armazenar desse produto? um código de identificação, o nome, o valor, o fabricante, não sei o que mais, data de validade.
Então, todas essas informações que eu coloquei agora são os atributos ou Campos. Seguindo, ó, cada campo ele é identificado por um nome, então eu vou mostrar para vocês, tá? E os valores do campo eles são atômicos, ou seja, eles são indivisíveis, tá? E monovalorados. Então, se eu vou cadastrar um produto qualquer, sei lá, uma caneta, vou cadastrar uma caneta, então eu vou persistir, né? Vou armazenar uma linha na minha tabela de produtos com o código que representa essa caneta, o nome, né? caneta azul, por Exemplo. E eh eu só vou lá no no valor, por
exemplo, desse produto, eu vou poder armazenar apenas uma única informação. Vou ter que falar: "Não, esse produto ele custa R$ 1, R$ 2." E eu não posso dizer que esse produto ele custa R$ 1 e R$ 2 ao mesmo tempo. Por quê? Porque ele é um porque esses campos são monovalorados. Então eu eu só consigo cadastrar uma única informação. Aqui a gente tem a Representação de uma tabela no banco de dados, tá aqui chegando no modelo lógico ali, caminhando para o modelo físico. Então nós temos, ó, uma tabela com os campos produto ou ID, ou
seja, um número de identificação pro produto, o nome do produto, tá? o valor unitário e a quantidades. Então, eu tenho aqui nessa tabela quatro campos, quatro eh atributos, OK? E observem que cada linha dessa, eh, eu tenho duas linhas que eh se referem a dois produtos cadastrados, Um notebook e uma impressora. OK? chave primária. Um conceito importante pra gente entender aqui o que é uma chave primária. Vocês lembram na aula passada quando a gente estava lá falando sobre o modelo conceitual de banco de dados, que é o modelo que antecede o modelo lógico, eh a
gente falou lá sobre atributo identificador ou atributo chave, né, que são representados pela aquela bolinha preenchida ou com o Underline no nome do atributo. O atributo identificador, pessoal, é aquele atributo que permite que eu consiga localizar determinado, é, item de forma inequívoca, né? Então, por exemplo, se eu pesquisar na tabela cliente o meu CPF, vai é para retornar apenas um único registro, porque só é para ter um único cliente com CPF, igual ao meu, né? Porque o CPF é um campo único e esses campos que são únicos, que não se Repetem, eh, a gente pode
utilizar eles para ser o nosso atributo identificador. Isso lá no modelo conceitual. Quando a gente traz pro modelo lógico, ou seja, através da abordagem relacional, aí a gente tem a chave primária. Então, esse atributo identificador é conhecido, é chamado de chave primária, tá? que é uma coluna ou uma combinação de colunas cujos valores permitem distinguir uma linha das demais dentro da tabela. Então eu tenho aqui, Ó, um atributo simples. Convênio ID é meu minha chave primária. Então toda vez que eu pesquisar o valor 001 é para me retornar Unimed. Toda vez que eu pesquisar 002
é para me retornar plano saúde. Legal? Então esse é o me chave primária. Existe também aquele cenário em que você tem mais do que um campo, né? Você tem dois campos ou três campos compondo, né? Que juntos compõem a chave primária e de uma Tabela. Então, por exemplo, aqui, ó, aqui eu não tenho o nome da tabela, mas pode ser a tabela eh dependente, né? talvez num plano de saúde, onde você tem lá o o cliente e os dependentes dele. Então, só o número do dependente não é o suficiente para eu eh localizar de forma
inequívoca um dependente X. Então, por quê? Ah, eu posso ter aqui, ó, Maria é o dependente número um. Um do empregado é um, né? João é o dois. Só que aí eu posso ter um um outro dependente que também é o 01, né? Mas é o 01 de um outro cliente do plano. Então não é a Maria, vamos supor que ela é 01 do Carlos, só que eu posso ter um um Joana que é 01 do Fernando, né? Então, ou seja, só o número do dependente, ou melhor, duas Marias, né? uma Maria que é dependente
do João, por exemplo, e uma outra Maria que também é o que é o dependente número um do Fernando. Então, eu tenho duas Marias Que são 01. Então, como é que eu vou saber qual Maria? Daí a necessidade de se adicionar mais um campo que é o código do empregado, né? é que é a chave primária do empregado. Então, se eu pegar a chave primária do empregado, o código do empregado mais o número do dependente, agora sim eu consigo localizar de forma inequívoca o dependente que eu quero. Então, traz para mim a o a dependente
Maria eh número um do empregado E1, que pode ser o João. Beleza? Então, chave primária serve para isso, para identificar uma linha na tabela e não pode se repetir, tá, pessoal? Olha aqui, ó, lá no modelo conceitual, a gente tem aqui as entidades, né? Livro, autor e exemplar. São três entidades, dois relacionamentos, né? Eh, aqui, ó, livro possui um ou vários exemplares. O exemplar tem um Livro, se refere a um livro, né? E o livro ele é escrito por um ou vários autores. E um autor ele escreve nenhum ou vários livros. Beleza? Aqui a gente
tem os atributos. Bolinha preenchida é o atributo chave, né? Legal. Isso no modelo conceitual. Se você não tá entendendo nada desse modelo conceitual, vai na aula aí sobre modelo conceitual nessa playlist de banco de dados, tá? Você vai conseguir localizar essa aula. Vou deixar na descrição do Vídeo. E aí, ó, esse mesmo modelo, ele vai acabar virando isso aqui, ó, o modelo lógico, tá? que é o modelo lógico onde você tem mais detalhes acerca do do que vai virar do projeto de banco de dados. Olha, olhem só, no modelo conceitual, as informações são bem alto
nível, abstratas. Qualquer pessoa, é, é fácil pras pessoas entenderem isso aqui, né? Você só você explicar, ó, esse retângulo é a entidade Que vai virar uma tabela. Então, ah, vou ter uma tabela livro com os atributos ISBN, páginas e título. OK. Mas e pro desenvolvedor, pro programador, qual que vai ser o tipo do dado e etc? Então, no modelo lógico que é desenvolvido a partir da abordagem relacional, a gente tem esse modelo, ó. Vejam só, a gente tem aqui, ó, tabela livro, que tem, ó, ISBN, título e páginas. E aqui eu já tenho mais Informações,
como por exemplo, o tipo do dado que vai ser armazenado, que é aqui no caso textual, tá? Então, ó, vejam só o atributo identificador que é o ISBN, olha como ele ficou. Ele ficou com asterisco. Ou seja, pessoal, aqui no modelo lógico, a chave primária, ela é representada através desse asterisco, OK? chave primária representada através da asterisco. Exemplar. O exemplar, ó, tem o o identificador dele é número. Então, Tá aqui, ó, número, ó, um asterisco. Número é a minha chave primária, tá? Mesma coisa aqui para autor, ó. Autor CPF, tá aqui, ó. CPF como chave
primária. Professor, e esses dois asteriscos? E por que que essa tabela escrita apareceu aqui, né? Porque, ó, vejam só, o o relacionamento possui, ele não virou uma tabela, mas o relacionamento escrito virou uma Tabela. Vou explicar para vocês. Diz assim, a gente chega lá. Mas primeira coisa que eu quero que vocês vejam é que eh por padrão as entidades definidas no modelo conceitual, elas viram tabelas no modelo lógico. Entenderam? De novo? A entidade que é representado por esse retângulo no diagrama entidade de relacionamento, ela normalmente vira uma tabela no modelo lógico, vira uma Tabelinha própria,
OK? Ou seja, o programador ele vai pegar, ele vai ver que ele tem que ter que construir uma tabela lá no banco de dados. Professor, então significa que todas as entidades vão virar tabelas? Não. Beleza? Normalmente sim, geralmente sim, mas não todas. Cuidado, qualquer afirmação nesse sentido, eh, buscando generalizar em uma prova de concurso, você já desconfia, já coloca os seus o seu pé atrás. Legal? Então, normalmente Uma entidade vira uma tabela. Vou falar sobre esses dois asteriscos aqui, pessoal, e agorinha sobre essa questão do relacionamento virar a tabela. Outro outro fator, chave estrangeira. A
chave estrangeira é o que vai de fato nos permitir eh relacionar duas tabelas, ou seja, duas linhas de tabelas diferentes. Como assim, professor? Vamos supor que eu tenho um produto, né? A gente falou da tabela Produto, tabela eh, sei lá, uma um alimento qualquer, um pacote de arroz, né? é um produto cadastrado no sistema de um supermercado. Tem um produto lá que que se refere a um pacote de arroz da marca tal, OK? E eu posso ter uma outra tabela para representar categorias, né, departamentos, categorias de produtos. Então, sei lá, tem a categoria, uma, eu
vou ter nessa tabela uma categoria Cadastrada que pode ser eh o departamento, a categoria alimentícia, né, de produtos alimentícios. OK? Então, ó, esse arroz que tá lá na na tabela produto, ele vai ser da categoria produtos alimentícios, tá? Então, mas como é que eu vou conseguir descobrir isso, né? Então, a partir do momento em que eu buscar o produto, traz para mim lá todas as informações do arroz, tal, vão vir as informações. Ah, eu quero saber qual que É a categoria dele para saber onde é que eu vou exibir ele pro cliente lá no aplicativo.
Aí eu preciso, a partir desse produto, eu tenho que ter alguma informação que vai me permitir buscar qual é a categoria desse desse produto. Ah, isso é o que a gente chama de chave estrangeira. Até o nome, né, nos permite já racionalizar do que que se trata. Então, é uma coluna ou uma combinação de colunas cujos valores aparecem necessariamente na chave primária de uma tabela. Pode ser outra tabela ou na própria tabela. Vamos ver aqui aquele exemplo lá do do plano de saúde, ó. Então, tenho tabela convênio e paciente. Convênio, ó, eu tenho aqui a
chave primária convênio ID número 1 e do e o nome do convênio Unimed Plan Saúde. Eu tenho uma outra tabela chamada paciente, que possui aqui Quatro colunas, né? Paciente ID. Aqui o paciente ID possivelmente é a chave primária de paciente, né? Convêni o ID, o nome do paciente e o RGD. OK? Vejam só que aqui em convênio ID eu tenho o código do convênio. Não tenho o nome aqui, por exemplo, 02 é Plan Saúde, não tá aqui Plan Saúde, Plan Saúde, porque essa informação ela tá em outra tabela, tá? Essa informação ela está em outra
tabela que é na tabela Convênio. Ou seja, o que que eu tenho aqui? Eu tenho a chave primária, tá vendo aqui, ó? Aparece necessariamente na chave primária, ou seja, chave estrangeira é o é a chave primária da tabela eh que ela tá referenciando. Então, vejam só, o paciente 300 aqui, ó, que é o marco, ele é do convênio 01. Qual é o convênio 01? Então, se eu pegar essa chave estrangeira, for lá na chave Primária da tabela convênio e buscar 01, eu vou descobrir que o convênio dele é Unimed. Segunda linha aqui da tabela paciente.
Se eu pegar aqui, ó, a Márcia, a Mácia é do convênio 02. Então, a partir desse identificador, se eu for lá na tabela convênio e buscar na chave primária, lembrem, a chave estrangeira aponta paraa chave primária, na tabela referenciada, chave estrangeira aponta para a tabela, paraa chave primária da Tabela referenciada. Então, se eu pegar a chave estrangeira 02, for lá na tabela convênio e buscar o a chave primária 02, eu sei então que a Mácia é do plano saúde e a Flávia também é do Plan Saúde. Legal? Isso é uma chave estrangeira, tá, pessoal? Chave
primária, ela fica na própria tabela que tá que tá sendo modelado, OK? Então, aqui a chave primária de paciente, paciente ID. E a chave estrangeira é quando você precisa eh Associar uma linha com outra linha de outra tabela ou da mesma tabela. Dica importante, nem sempre a chave estrangeira vai apontar pra outra tabela. Ela pode apontar pra própria tabela. É a aquela questão do autorreferenciamento. Como assim, professor? Eu posso ter, por exemplo, uma tabela funcionário com, vamos supor que essa tabela fosse funcionário. E aí eu tenho funcionário marco. E eu poderia ter uma chave estrangeira
para dizer o Identificador do supervisor. Quem que é o supervisor do marco. Então eu tenho, sei lá, o código do do funcionário, que é a chave primária, e eu tenho aqui o código do supervisor. Então, ó, o código do supervisor vai apontar pra mesma tabela, só que para uma linha diferente, né? É, vamos supor que o código do supervisor que o a supervisora do Marco fosse a Mácia. Então, eu teria aqui na no código Do supervisor a chave primária da Márcia. Vamos supor aqui, ó, 301. Teria 301 aqui. OK? Então isso é um autorreferenciamento, existe
essa possibilidade, mas normalmente você vai ver chaves estrangeiras apontando para outras tabelas. E a chave estrangeira é representada, ó, por esses dois asteriscos aqui, ó, que vocês estão vendo, ó. Legal. Um, dois, chave Estrangeira, um asterisco, chave primária. Ó, a existência de uma chave estrangeira, ela tem algumas restrições, tá? Como, por exemplo, ó, a inclusão de uma linha na tabela eh que contém a chave estrangeira, ela deve garantir que a o valor da chave estrangeira apareça na coluna da chave primária referenciada. Legal? O sistema gerenciador de banco de dados chamado, conhecido como SGBD, ele Nos
garante algumas propriedades, algumas restrições para eh visando garantir a integridade dos dados. OK? Então, eh, uma delas é esta de que a chave primária, a chave estrangeira, ela tem que apontar para uma chave primária que exista. Outro conceito, domínio especifica os tipos de valores que a coluna pode assumir, tá? Então, quando você ouvi falar de domínio, qual é o Domínio? tá? De uma de uma coluna, de um campo. Domínio, são os tipos de dados que aquela coluna, que aquele campo pode assumir. Então, a gente tem, ó, alguns tipos alfa numéricos, só numérico para armazenar data,
para armazenar boleano. O que que é o boleano, professor? Buan. É, são campos que só permitem dois tipos de valores, verdadeiro ou falso. Só vai ter uma dessas informações num campo boleano, se ele é verdadeiro ou se é Falso, tá? Ou nenhum, né? Tem essa outra possibilidade e não tá preenchido, caso não seja obrigatório. Mas se for ter valor, ou é verdadeiro ou falso, tá? Então, por exemplo, num banco de dados de um jogo, por exemplo, quer saber se um se um inimigo, né, é um elemento que participa lá do software, se ele tá vivo
ou não. Então, está vivo, é um poderia ter um campo que me dava essa informação e lá vai ter verdadeiro ou falso, ou tá vivo ou não tá. Esse é um campo Boleano. Legal. Aqui a gente já consegue ter mais informações acerca dos campos, né? Então aqui, ó, o ISBN é um campo numérico com 12 dígitos. O título é um campo textual com até 100 dígitos. Beleza? Restrições de integridade, né? É aquilo que eu falei, o SGBD, ele vai buscar garantir alguma a integridade do banco pra gente de forma geral. E como é que ele
Consegue eh estabelecer isso? Através das restrições de integridade. Vamos aprender quais são. E essa é uma questão que cai em concurso, tá, pessoal? Integridade de domínio. O que que é integridade de domínio? É o valor do diz que o valor do campo ele deve obedecer a definição dos valores admitidos pra coluna. Como assim? Se eu falar que aqui, ó, o título, perdão, o ISBN é um campo numérico, então eu não posso colocar um Caracter textual, tá? Então, se eu tô falando que SBN é um, o domínio dele é do tipo numérico, então eu não vou
lá e digitar A ou B, tá? Então o banco ele não vai permitir esse isso, ele não vai aceitar por conta da integridade de domínio. Então integridade de domínio diz que em campo só pode aceitar dados do tipo para o qual ele foi projetado, tá? O nome já nos dá um Norte, beleza? Lembra? domínio são diz respeito aos tipos de dados que vão ser permitidos naquela coluna do banco. Segunda restrição. Restrição aqui a integridade de vazio, tá? Que que é integridade de vazio, pessoal? especifica que o campo ele pode ou não ser vazio. Caso não
seja, um valor deverá ser obrigatoriamente informado. E aí aqui já tá falando, chaves primárias Sempre devem ser diferentes de vazio, né? Você não pode ter uma chave primária não preenchida. Então, se eu vou carçar um produto, eu não posso carçar um produto sem formar a chave primária ou que isso seja inserido de forma automática, tá? pelo pelos sistemas, mas eh quando a chave primária, ela tem essa integridade vazio, ela não pode ser vazia ou nula, tá? Você também pode ouvir essa Expressão, né, de campo nulo. Legal, não pode ser. Então, integridade vazio diz se aquele
campo ele pode ou não ser vazio. Se liguem na no nome, né, para que já dá o norte. Mas se atentem também, porque às vezes a pegadinha que cai nas provas é os caras inventam algumas integridades que não existem, tá? Integridade de sei lá o quê. O cara inventa qualquer coisa. Então observem no que de fato existe, tá? Integridade de domínio, Integridade de vazio, os dois primeiros que a gente viu agora. Outro, integridade de chave. Define que os valores da chave primária e alternativas devem ser únicos. O que que é integridade chave? É uma restrição
que nos diz que os valores da chave primária e alternativas devem ser únicos. Eu não posso ter, por exemplo, uma chave primária, sei lá, CPF, né, da tabela cliente. Eh, eu não posso ter esse valor Repetido para dois clientes diferentes, né? Então, o meu CPF não pode ser cadastrado comigo e um outro funcionário e um outro cliente. OK? Então, se o senhor tá dizendo que eh eu não posso cadastrar eh duas linhas para Arnaldo. Não. A ideia no de você ter no banco é apenas um único registro que se refere a mim como cliente no
banco daquela empresa. Legal. Não posso ter, não faz sentido eu ter dois Arnaldos Cadastrados, né? Então, sei lá, de uma empresa lá e aí eu tenho contas, dívidas, eh, com um cadastro e com com dois, três cadastros. Não, eu tenho apenas um único cadastro que centraliza ali todas as informações a meu respeito, tá? Então, a integridade de chave vai garantir que a chave primária ela seja única. Legal? Existe também a chave alternativa, que é aquele campo que eh não é chave primária, mas ele também é Único. Então, na própria tabela cliente, por exemplo, que eu
exemplifiquei agora, eu posso ter a tabela CPF, mas você o projetista pode escolher não utilizar a tabela CPF como chave primária. Ele pode criar uma coluna código funcionário, uma coluna própria para isso. Então, ele criou uma coluna código funcionário, que é a chave primária. O CPF também vai tá lá, mas ele não quer usar o CPF como chave primária. Então, o CPF, por ser único, Ele é uma chave alternativa. CPF é uma chave alternativa nesse caso, porque eu já tenho uma coluna que é chave primária, código do funcionário, mas o CPF também poderia ser uma
chave primária por ser único, mas o projetista resolveu não fazê-lo. Então ele, essa é uma chave alternativa. Legal. Qualquer dúvida, deixa um comentário aí. Integridade referencial. Essa é uma que cai com frequência, viu? A Integridade referencial, ela tá relacionada lá com a chave estrangeira, né? Ela diz o quê? Que ó, os valores dos campos que aparecem numa chave estrangeira, eles têm que aparecer na chave primária da tabela referenciada. Como assim, professor? Aqui, ó, vamos nesse exemplo aqui, ó. Aqui eu não falei, ó, que o Marco Túlio ele é do convênio 01. Então, a chave estran
aqui na tabela paciente, convênio ID é uma chave Estrangeira que aponta pra chave primária da tabela convênio. Qual que é a chave estrangeira que tá aqui? 01 001. Então, se eu for lá na tabela convênio e procurar pela chave primária 01, vou descobrir que ele é da Unimed. Então, a integridade referencial vai dizer que eu não posso não ter, se aqui na na chave estrangeira tá 01, aqui no convênio tem que ter uma linha com o código 01. Você não vai poder, por exemplo, ó, eu ir lá no banco e excluir essa linha aqui referente
a Unimed 01. Vamos supor que eu que algum utilizador do sistema, algum analista, algum eh administrador de banco de dados foi lá e excluiu essa linha Unimed. O SGBD, por conta da integridade referencial, não vai permitir que essa exclusão seja feita. Por quê? Porque ele vai ver que a linha, a tabela convênio Unimed, código 01, está sendo Esse esse código convênio ID01 está sendo referenciado através de uma chave estrangeira por outra linha em outra tabela, OK? Isso é integridade referencial. Então, quando eu olho a chave estrangeira e vou lá procurar a chave primária, que essa
chave tá para onde essa chave tá apontando, tem que ter alguma linha referente a essa chave estrangeira Lá. Entenderam? Isso é integridade referencial. Legal, pessoal? Então, ó, integridade de domínio, os valores que podem ser armazenados no campo. Integridade de vazio, campo pode ou não ser vazio. Integridade de chave, chave tem que ser única. Integridade referencial, a chave estrangeira, ela tem que apontar para uma chave primária que exista. E essa chave não pode ser excluída caso seja, esteja sendo referenciada. Beleza, pessoal? Por essa aula por enquanto é isso. Qualquer dúvida, deixe o seu comentário. Você pode
mandar e-mail para mim também, tá aí o meu e-mail, tá? Na descrição do vídeo vou deixar o link para você baixar esse material também. Caso você goste de estudar lendo, você tem esse material aí para você fazer a leitura com as principais anotações e pontos, tá? Para uma revisão rápida também. E qualquer Dúvida, deixa o comentário também. Vou deixar na descrição do vídeo um link para um grupo. Então, caso você queira estudar informática para concursos, esse grupo gratuito. Então, você pode entrar lá de graça através do desse link para fazer parte aí da do nosso
grupo de estudos. Então, todo material que eu desenvolvo, né, qualquer novidade eu coloco lá para vocês em primeira mão. Valeu, bons estudos e até a próxima. E aí, pessoal, beleza? Eu sou o professor Arnaldo, professor de informática do Instituto Federal de Tocantins. E na aula de hoje a gente vai aprender a como mapear o modelo entidade de relacionamento para o modelo relacional, transformar o modelo conceitual no modelo lógico. Isso, claro, dentro do contexto aí da construção de um projeto de banco de dados. Então, vamos lá. Ao construir o projeto de banco de dados, a gente
precisa levar alguns objetivos básicos em consideração. Então, primeiro Deles, claro, né, buscar a boa performance das instruções de consulta e alteração no banco. Então, a gente sabe cada m cada vez mais o cliente ele quer a informação de forma instantânea. Então essa operação que é realizada no banco de dados e que por sinal envolve um volume muito grande de dados, essa informação é essas esses processamentos têm que ser feito de forma rápida, de forma eficiente, né, com boa performance. Então, ter isso em Mente. O banco, ele tem que ser simples, né? Claro, para manutenção também
e otimizar o espaço de armazenamento. Então, esses três princípios básicos aí, norteadores, boa performance, ser rápido, né, eficiente, eh simples para desenvolver e manter e ocupar o menor espaço possível, né? Eí também tá relacionado à eficiência de recursos, até porque isso é muito caro. Alguns princípios que são eh necessários Aí que são seguidos, tá? Então, primeira coisa, evitar junções desnecessárias. Então, para alcançar aquilo que a gente acabou de falar, o que que nós podemos fazer? Qual é o passo a passo? Quais são as boas práticas? Uma primeira dica, né, é evitar junções desnecessárias. Então, o
que que é junção desnecessária? Pessoal, a gente estudou na aula anterior sobre chave estrangeira, né? Isso lá na no modelo relacional, modelo lógico. Se você tá perdido aí, link na descrição para você conferir essa aula. A chave estrangeira, ela referencia, né, uma linha na em outra tabela ou na própria tabela, mas referencia uma outra linha através da chave estrangeira que aponta paraa chave primária. Só que para que essa busca seja possível no banco de dados, ele faz o que a gente chama de junção, né? Então, para você pegar a chave estrangeira, vamos supor que é
a chave número um, e você ter que ir lá na chave, na tabela referenciada e buscar na chave primária qual que é a chave estrangeira que tá sendo buscada, você tem que comparar um por um. Então, vamos supor que eu tenho aqui, ó, eu quero essa linha que é a chave estrangeira número um, né, que é o departamento, ele é ele é o cliente, funcionário, ele é do departamento 10. Então, departamento 10, Eu preciso ir lá na tabela departamento, em todos os departamentos cadastrados e conferir. Então, eu vou comparar esse com o primeiro departamento. Então,
aqui é o 10, esse é o 10 é igual a 1. Não. Então, esse não é o departamento que ele tá procurando. Departamento 10. Vamos lá. Segunda linha do departamento. Dois é o que ele tá procurando, não. Então, ele vai procurar, vai comparar essa linha da chave estrangeira com todas as linhas da chave. Primária da tabela referenciada até ele localizar qual que é a chave estrangeira apontada. Então ele vai a quando ele achar o número 10, então 10 ig. Ah, então esse é o departamento que ele tá procurando. Isso é o que a gente chama
de junção. E a gente já pode imaginar que isso é um processo custoso. Você imagina lá no sei lá, num num aplicativo de uma rede social, no Instagram. Vamos supor que que o sistema Vai listar ali as suas publicações. Então ele precisa procurar na tabela dele lá de uma tabela gigantesca, né, com volume muito grande de dados, quais são as publicações suas. Então ele vai comparar isso para buscar essas informações, eh, caso, né, seja feito através do de um de um banco relacional, mas eu creio que eles utilizam um no SQL, tá legal? Então, isso
é uma junção, evitar junções desnecessárias porque isso é custoso, tá? Caso você queira ler Todas as informações desse PDF aqui, link na descrição, eh, ajuda você que gosta de estudar de forma própria, autônoma, né, lendo. Como é que eu posso evitar junções desnecessárias? Olha esse exemplo. Eu tenho aqui, ó, tabela pessoa, tabela telefone. Pessoa tem a chave primária primária ID e campo nome, telefone tem o ID da pessoa e o número. Eh, aqui o relacionamento é um para um, tá? E aí a gente já vai agora aprender essa questão do de mapear os Relacionamentos, tá,
pessoal? Então, vamos lá. Quando você tem um relacionamento desse um para um, essas informações podem estar numa mesma tabela. Então, por que não, se a pessoa só pode armazenar no mínimo um, no máximo um telefone, por que ter uma tabela separada para telefone? Quando o relacionamento é um para um, né, olhando a cardinalidade máxima aqui, ó, um para um, uma pessoa tem um telefone, o telefone tem uma pessoa. Você pode ter Essas informações em apenas uma única tabela. Então eu trago o campo número de telefone e coloco aqui na tabela pessoa. Então você tá evitando
uma junção aqui, né? Uma junção desnecessária, que toda vez que a que o sistema fosse ter que procurar o número da pessoa, ele ia ter que comparar as linhas dessas duas tabelas. Colocou tudo numa tabela só, você tem uma uma junção aí e evitada. Legal? Então, relacionamento um para um, você pode Virar uma tabela só. Primeira dica aí, questão de mapeamento, diminuir o número de chaves, tá? Cada chave, ela possui um índice. O índice do banco de dados é aquele referente a um livro também, tá? Aquele que nos permite localizar com mais facilidade onde tá
a informação que a gente quer. Também tem isso no banco de dados, no SGBD. E quanto mais chaves você tem, mais índice você tem. E isso ocupa espaço em disco. Professor, Qual é o passo a passo para transformar um modelo entidade de relacionamento em um modelo relacional? A gente tem aqui três passos básicos. Primeiro, fazer ali a o mapeamento das entidades e os seus atributos. Segundo, os relacionamentos e os atributos. Terceiro, generalização e especialização. Se você não sabe o que é generalização e especialização, temos aí a playlist com a aula eh aulas de banco de
dados, tá? Para concursos ou para Outras finalidades também. Então, tem a gente tem uma aula em que a gente fala lá na na modelagem conceitual de dados sobre generalização e especialização. Falar da uma conferida. Então, três passos. Primeiro modelar as entidades ou atributos, depois relacionamentos e atributos, depois generalização ou especialização. Beleza? Modelar as entidades primeiro. Então, ó, a cada entidade do modelo entidade de relacionamento, ele eh cada entidade vai Virar uma tabela. Primeiro passo é esse. Como assim, professor? Isso aqui não é uma entidade empregado. Então eu já vou pegar essa entidade empregado e já
vou transformar em uma tabela. Aqui na dependente é então vou virar uma tabela também. Primeiro passo é esse, fazer a modelagem entidade para tabela, tá? Temos alguns cenários em que ah, não necessariamente uma entidade vai virar uma tabela, tá? Mas eu vou explicar isso para vocês. Isso é no caso de generalização ou especialização, tá? Cada atributo da entidade vai virar uma coluna na tabela, né? Claro. Então, ó, se aqui tá código do empregado e o nome, então esses atributos vão virar um campo, uma coluna na tabela, tá? Segundo passo, os atributos identificadores, eles vão virar
a chave primária novamente. Então aqui, ó, código empregado. Aqui a a o atributo chave Código vai virar uma chave primária. Beleza? Então, recapitulando, entidade vira a tabela, o atributo vira uma coluna na tabela, o atributo identificador vira uma chave primária na tabela. Ó, aqui já tá já tá trazendo uma dica legal pra gente, ó. Em alguns casos, quando o relacionamento é um para um, pode haver fusão de tabelas. Foi o que a gente viu na agora, né? Nesse exemplo aqui, ó. Uma fusão de tabelas. Relacionamento um para um pode Virar uma, pode ocorrer uma fusão
de tabelas, tá? Aí é uma questão do projetista, de você como projetista avaliar se você quer ou não isso. Outra dica, eh, de preferência por nomes curtos mais explicativos, né? Então, por exemplo, aqui, ó, eu tenho umas colunas, né, DT Nascimento, a gente já infere que é data de nascimento e tal, mas CT e RT não dá para saber o que é isso, né? Então, atribua nomes explicativos até por uma questão de Manutenção, para que outro profissional consiga dar manutenção. É, nesse código também, ó, não é recomendado incluir no nome da coluna o nome da
tabela. Então, por exemplo, ó, endereço pessoa não precisa, só endereço é o suficiente. A única exceção aqui é a chave primária, tá? Porque ela pode aparecer com como chave estrangeira em outra tabela, né? Eh, na chave primária não tem problema você repetir o nome da tabela. Então, ID pessoa não tem Problema. Mas eh outros atributos, tipo nome, pessoa, endereço, pessoa, não precisa. Só nome, só endereço. Relacionamento identificador. Eh, a gente sabe, eu mostrei para vocês na na aula sobre modelagem conceitual, essa questão do relacionamento identificador, né, que são aquelas tabelas que eh dependem de outra
tabela para existir, né, como uma tabela, uma entidade fraca, né? Ou seja, ela tem, ela depende Da chave para você localizar eh um registro em uma tabela, uma entidade fraca que não existe por conta própria, você precisa da do atributo identificador também da entidade eh referenciada, né, ou seja, dona do relacionamento. E isso é determinado, delimitado através de um relacionamento identificador. Vamos pro exemplo para entender melhor. Empregado pode ter nenhum ou vários Dependentes. Um dependente pode ser de nenhum ou vários empregados, né? O empregado tem o atributo chave código e o nome. O dependente tem
o número e o nome. Mas o dependente só a aqui a o atributo número não é suficiente para identificar um dependente. Por exemplo, vejamos o seguinte situação, ó, em que um dependente ele é o número um. Então esse é o João, é o dependente número um da Maria. Só que eu posso ter um outro dependente Também chamado João, que também é o número um do Carlos. Legal? Então você tem dois dependentes diferentes com o mesmo nome e o mesmo número, só que eles são de empregados diferentes. Então isso que quer dizer que o atributo deles
não é o suficiente para identificar de forma inequívoca um registro. E a gente sabe que a chave primária tem que nos permitir localizar um registro específico de sem equívocos, OK? E Duplicidades. Então aí nesse caso, isso aqui seria uma chave, uma entidade fraca, né? precisa marcar aqui mais uma um outro retângulo interno. E aqui temos uma um relacionamento identificador que normalmente é marcado através de uma linha dupla ou mais negritada. E aí, como é que vai virar isso aqui, ó? O código do empregado vai ser vai fazer parte da chave primária de Dependente. Entenderam? o
código do empregado, ou seja, a chave primária dele vai fazer parte da chave primária do dependente. E aí nós vamos ter o seguinte, ó, na tabela dependente, ó, os atributos nome, o número que já estão aqui, mais o atributo código do empregado. Ou seja, a chave primária do dependente vai ser composta pelo código do empregado e o número do dependente. Chave primária composta. Então, relacionamento identificador a gente faz Dessa forma. Você pega os atributos da entidade fraca, né, o número e o nome, por exemplo, coloca aqui chave primária, vem como chave primária e traz também
a chave primária da entidade eh da tabela que é dona do relacionamento, ou seja, o código do empregado, nesse caso também veio para cá. Qualquer dúvida, deixa um comentário. Olha aqui, ó. Aqui a gente consegue Visualizar melhor, tá, pessoal? O relacionamento identificador, ele é delimitado por essa linha negritada. Então, o que que quer dizer aqui, ó? Que a empresa ela tem um relacionamento com o grupo, né? A empresa ela faz parte de um grupo e o grupo ele pode ter nenhum nenhuma ou várias empresas. Só que a empresa eh ela tem um relacionamento Identificador com
grupo, ou seja, ela depende de grupo, né? Então para eu localizar uma empresa de forma inequívoca, eu vou ter que trazer como é que vai virar isso aqui. Isso é o modelo conceitual. E como que isso vai ficar no modelo lógico? Então eu vou ter uma tabela empresa com o atributo nome, número da empresa, só que eu vou ter que trazer também o código do grupo pra tabela empresa. Então, código empresa, código Grupo, perdão. Então, a tabela empresa vai ficar nome, número da empresa, código do grupo. Sendo o número da empresa e o código do
grupo é a chave primária, sendo uma chave primária composta. A gente tem uma outra situação aqui interessante, ó. Ó, quando uma entidade que possui um relacionamento identificador referencia uma entidade que também tem um relacionamento identificador, você precisa Propagar essa chave por vários níveis. Como assim, pessoal? Aqui, ó, empresa tem um relacionamento identificador com grupo. Empregado tem com empresa, dependente com o empregado, tá? Tudo relacionamento um para n, tá? Um para n, ó. Um para n, um para n, 1 para n. É só olhar aqui a cardinalidade máxima, tá? E aí, como é que ocorre essa
propagação, ó? Então, ó, a empresa tem Como chave primária o número da empresa e o código do grupo, né, que herdou lá da tabela grupo. Legal. Então, o código do grupo vai ser uma chave estrangeira que aponta para cá, pra chave primária da tabela grupo, mas também vai ser a chave primária da tabela empresa, né, junto com o número da empresa. Isso mesmo, tá? Então você quando você pode ter uma coluna que é chave estrangeira porque ela aponta para outra tabela e também é chave primária. Olha o sublinhado aqui, né? Entenderam? E aí entra aquilo
que a gente acabou de falar, né? Aí a gente tem um relacionamento identificador de empresa com grupo e de empregado com empresa também. Então, nesse caso, o empregado vai ter que herdar a a as chaves da empresa. Então, ó, qual vai ser a chave primária de empregado? o número do empregado mais o número da empresa e o código do Grupo. Mesma coisa aqui, ó. Dependente tem um relacionamento identificador com empregado. Então, ó, o dependente vai ter o número do dependente, não número de sequência, mais o código do número do empregado, número da empresa e o
código do grupo. Entenderam? Então, nesse caso, se cair numa prova de um concurso aí, por exemplo, ou na sua faculdade, essa situação de um relacionamento identificador eh que tá relacionado com Outro identificador, né? Então, você tem que propagar essa chave de forma sequencial. Beleza, pessoal? Vejamos agora como implementar os relacionamentos, ou seja, como mapear os relacionamentos de um diagrama, entidade de relacionamento para o modelo lógico. O fator determinante para traduzir isso é a cardinalidade mínima e máxima. Essa essas são informações eh relevantes aí pra gente decidir sobre as estratégias para esse mapeamento. E aí Nós
temos três opções para mapear relacionamentos, que são tabela própria, ou seja, criar uma tabela própria para um relacionamento, é adição de colunas, vocês vão ver, vocês vão entender, e fusão de tabelas, tá? Fusão de tabelas a gente já viu, né? Acabou de ver. Então, relaçamento um para um. Normalmente temos aí uma fusão de tabelas. Tabela própria. Quando é que eu crio uma tabela própria? Por regra, pessoal, a tabela própria ela vai ocorrer quando o Relacionamento é n para n. E professor, como que eu sei se o relacionamento é n para n? Analisando a cardinalidade máxima,
né? Tá aqui, ó. N. Cardinalidade mínima e máxima. N para N. Ou seja, um engenheiro pode atuar em vários projetos e em um projeto podem atuar vários engenheiros. Professor, não sei o que é cardinalidade. Assista a nossa aula aí sobre modelagem conceitual de dados, onde eu explico isso. Então, relacionamento n para n é o caso aqui. A Atuação vai virar uma tabela própria. Não é obrigatório, mas por regra é relacionamento n para n, o relacionamento vira uma tabela. Ou seja, engenheiro vai ser entidade engenheiro vai ser uma tabela, projeto vai virar uma tabela e atuação
vai virar uma tabela. E quais vão ser os atributos dessa dessa tabela, professor? Função. A gente já tá vendo aqui que função, atuação tem um atributo função. Eu vou ter aqui também, eu preciso relacionar o Engenheiro e o projeto, né? Então eu vou ter uma chave estrangeira, código engenheiro, código projeto. Então três atributos. Função, você já coloca o que já tá aí, função e as chaves das tabelas envolvidas. Então, ó, código engenheiro, código projeto. Função, código engenheiro, código projeto. Professor, e qual vai ser a chave primária para a tabela atuação? vão ser as duas chaves
das tabelas envolvidas no Relacionamento, ou seja, código engenheiro e código projeto, tá? Então a gente vai ter esse resultado, ó. Atuação vai ter aqui, ó, função, código projeto, código engenheiro e a chave primária vai ser código engenheiro e código projeto. Beleza, pessoal? Então, esse é o passo a passo. Essa é a regra geral, né? Não, a única para se mapear um relacionamento N para N. O relacionamento vira uma tabela própria. Você pega os atributos que já tem no relacionamento, vai virar uma Coluna e aí você vai adicionar as chaves estrangeiras, eh, como sendo aí as
chaves primárias das tabelas envolvidas no relacionamento, que no caso código engenheiro, código projeto, que por sinal também vão ser chave primária na tabela do relacionamento, OK? Então, nesse caso, código engenheiro e código projeto na tabela atuação vão ser chaves estrangeiras e também compor a chave primária da tabela Atuação. Na lá na tabela engenheiro, código engenheiro é só chave primária mesmo. Na tabela projeto, código projeto é só chave primária. Adição de colunas, pessoal. Quando que a gente adiciona uma coluna? Normalmente em relacionamento um para n. Você quiser ler tudo isso aí, vai tá aí esse PDF
na descrição do vídeo, tá? Relacionamento um para N. Vamos lá. Departamento está lotado. Em um departamento estão lotados, podem estar lotados vários Empregados. E um empregado ele tem que estar lotado em um departamento. Relacionamento um para N. Novamente tô analisando a cardinalidade máxima. Um para N. Nesse caso, a gente adiciona uma coluna na tabela N. Relacionamento um para N, adição de coluna na tabela N. Vou falar de novo. Relacionamento 1 para N. Adição de coluna na tabela N. Como assim, professor? Aqui na tabela N, ó, a gente tem código do empregado, que é a chave
primária, e a o atributo aqui que vai virar coluna título. Vamos adicionar uma coluna na tabela N. Então aqui empregado vai ter uma chave estrangeira que vai apontar para o código do departamento. Empregado, vai ter um código do empregado, chave primária, o título, e vai ter uma chave estrangeira que vai apontar para o código do departamento. Legal. Então, a adição de coluna, essa é A regra mais geral para relacionamento um para n. Entenderam, professor? Não posso então aqui no departamento ter uma chave estrangeira que aponta pro código do empregado, né? Então eu vou buscar o
departamento 10, código 10. Aí eu vou eu vou ter aqui uma chave estrangeira que aponta pro empregado. Não, porque você só vai conseguir cadastrar único departamento, né? Você só pode cadastrar cada departamento uma única vez. E aí o departamento tem, sei lá, 10 funcionários. Como é que você vai colocar aqui na chave estrangeira código empregado 10 empregados diferentes? Não dá. Dá para cadastrar só um, né? Porque é um campo é monovalorado, né? Então, um para n, chave a coluna adicional na tabela N. Você vai, você vai ter esse resultado. Fusão de tabelas. Quando que a
gente aplica a fusão de tabelas? normalmente no relacionamento um para um, tá pessoal? Aqui no caso, ó, Conferência é organizada por uma comissão, a comissão organiza uma conferência, relacionamento um para um. Inclusive, inclusive a gente tem aqui um relacionamento identificador. O que que você vai fazer? É um para um, você pode transformar tudo isso aqui numa tabela só, né? Então você vai ter aqui, ó, uma tabela chamada conferência com o código da conferência. sendo a chave primária e as colunas, Nome, data e endereço. Então, essas são as regras, tá? Existem outras possibilidades, você pode conferir
aí. Qualquer dúvida você deixa um comentário que vai estar disponível para vocês fazerem a leitura, mas esse é o padrão para que normalmente cai em concurso também, tá pessoal? Então, o relacionamento eh n, o relacionamento vai virar uma tabela própria. Relacionamento um para n, a Gente vai adicionar uma coluna extra, né, chave estrangeira, lá na tabela N. Relacionamento um para um, fusão de tabelas. Temos ainda alguns casos aqui no caso de relacionamentos de grau maior do que dois, né? Ou seja, ternários, por exemplo, ó, não existem regras específicas nesse caso, tá, pessoal? Então, mas tem
alguns passos que podem ser seguidos. Então, o relacionamento ele é transformado em uma entidade, tá? E esta nova entidade é ligada através de Um relacionamento binário a cada uma das entidades que participam do relacionamento original. E aí você aplica as regras para cada relacionamento binário, tá? Então aqui, ó, no no caso de um relacionamento ternário, o relacionamento vai virar uma tabela. Então, eu vou ter uma tabela cidade, distribuidor e produto e também uma tabela distribuição. E aí você vai fazer a análise da eh como se fosse um relacionamento binário de distribuição Para distribuidor, de distribuição
paraa cidade, de distribuição para produto, tá? ão fazendo toda essa análise que a gente viu agora. Então, eh, se for ah, um para n, adição de coluna, se for n para n, tabela própria. E aí vai. Beleza? Então é isso, pessoal. Qualquer dúvida, deixe o seu comentário aí, tá? Se esse vídeo foi útil para você, se inscreva, deixa o like e compartilhe com seus colegas que estão aí nessa jornada de estudos. Valeu, grande abraço e até a Próxima. E aí, pessoal, beleza? Eu sou o professor Arnaldo, professor de informática do Instituto Federal de Tocantins. E
na aula de hoje a gente vai responder questões sobre modelo relacional de dados, né? É o que a gente também conhece como modelo lógico em um projeto de banco de dados. Se você não entende nada sobre esse conteúdo, tem aí na descrição do vídeo eh algumas aulas e uma playlist sobre esse assunto e com a preparação também mais ampla aí para Banco de dados, eh, voltados aí para concursos, tá? Então, assista essas aulas e volte aqui para responder as questões. Então, vamos lá. A primeira questão é para Cfaz, né, Secretaria da Fazenda da Bahia, prova
para agente de de tributos estaduais, área de TI, 2022. Então, vamos lá. Aqui fala o seguinte, ó. Considerando as restrições do modelo de dados relacionais e os esquemas de banco de dados, tá? Eu falei sobre isso na aula aí, tá? Aula sobre eh Modelo relacional de dados. Então, quais são essas restrições? Aí, ele quer saber aquelas que não podem ser expressas diretamente nos modelos de dados e, portanto, devem ser expressas e impostas pelo programador da aplicação, denominam-se restrições. Então, vamos lá, pessoal. Como eu disse na aula, né? Eh, o SGBD para garantir a segurança do
banco de dados, ele implementa algumas restrições, eh, visando aí a integridade Do banco. Então, nós temos restrições de chave para impedir que uma e para dizer que uma chave ela tem que ser única, integridade referencial, né, para garantir que sempre uma chave estrangeira vai estar apontando para uma chave primária que exista. Nós temos integridade eh de vazio para dizer se o campo pode ou não ser vazio. Nós temos integridade de domínio, né, que diz quais são os tipos de dados que Podem ser armazenados naquele campo. Legal. Então, essas são algumas restrições já implementadas por qualquer
SGBD, sistema gerenciador de banco de dados, caso banco de dados relacionais. Mas aqui o enunciado da questão tá dizendo que existe um outro modelo que tem que ser feito pelo uma outra restrição, né, que tem que ser implementada pelo programador. Restrições, vamos lá, de domínio, a gente acabou de explicar, né? É uma que Já é implementada pelo SGBD. Programador não precisa se preocupar com isso. O SGBD já vai garantir que em uma coluna numérica não seja colocado caracter textual inerentes, né? Algumas existem algumas restrições aqui que, segundo meu conhecimento, elas foram inventadas, tá? Não existe
aí. Isso aqui foi inventado pelo por quem criou a questão, tá? Quem fez a questão. É só pode ser essa alternativa semânticas, tá? Então, a primeira dica é exclui aquela que você Tem certeza que não é. Então, de domínio a gente exclui, de atributo também não. Explícitas, inerentes, semânticas é o que faz mais sentido, né? Tô fazendo junto com vocês. Vamos ver se tá certo. Beleza, pessoal. Questão correta. Vamos paraa próxima. Aqui a gente tem uma outra questão que eu já havia resolvido por sinal da BAN super para analista de teste que diz o seguinte,
ó. A respeito da arquitetura de banco de dados relacional, julgue o item a seguir, né? A atomicidade, uma das propriedades essenciais de um modelo relacional de banco de dados, define todos os elementos que compõem uma transação completa do banco de dados. Então, vamos lá. Primeira coisa, para responder questões da CESP do tipo verdadeiro ou falso, eh, você precisa aí desmembrar essa questão em e analisar cada fragmento de forma isolada. Se tiver alguma coisinha errada, toda a questão tá errada, né? É mais fácil você Identificar questões erradas. Agora, para dizer que uma questão tá correta, você
tem que afirmar que todos os fragmentos do enunciado estão corretos. Então, é mais difícil, né? Então vamos lá. Primeira coisa, a atomicidade é uma propriedade aí relacionada a transações em banco de dados relacionais. O SGBD ele já garante essa essas propriedades que são atomicidade, consistência, isolamento e durabilidade, Né? É o que a gente conhece aí através do memônico como acide, né? atomicidade, consistência, isolamento e durabilidade. Atomicidade. A transação, ela precisa ser realizada na sua totalidade. Ou o banco eh realiza toda a operação, todas as op suboperações ali em uma transação. Se uma der errado, ele
faz o rollback, ele desfaz tudo que foi feito, tá? Então, eh, isso é atomicidade. Ou faz tudo ou não faz nada. Consistência, O banco, ele tem que estar sempre em um estado consistente. Então, a atomicidade ela vai buscar também essa consistência, né? Não, não vai permitir que o banco fique em um estado inconsistente, tá? Então, consistência, isolamento, as transações, né? né? A gente sabe que em um banco a gente tem várias simultâneas transações sendo realizadas eh em conjunto. E aí essas transações precisam ser isoladas, tá? Então de modo que uma não eh interfira na outra
para não acarretar sujeiras ou outros problemas aí que são possíveis em um banco de dados. Legal, pessoal? Então, atomicidade, consistência, isolamento e durabilidade. Então, as alterações decorrentes das transações, elas têm que ser eh tem que persistir, elas têm que ser permanentes, tá? Então, quando ocorrer uma uma mudança, aquela alteração tem que ser permanente, eh, persistir no banco, tem que ser durável. Legal? Então, ó, a atomicidade, uma das propriedades essenciais de um modelo relacional de banco de dados, né? Esse é um conceito mais relacionado a transações, né? Aí a gente tem que fazer aquela análise sempre
com o pé atrás, que por mais que você saiba o conteúdo, tem aquelas pegadinhas ou aquelas visões bem peculiares dos dos elaboradores das questões, né? Então o cara tá dizendo que é a atomicidade é uma propriedade essencial de um modelo relacional de Banco de dados, né? É, podemos dizer que que sim, mas tá mais relacionado a transações. Mas vamos lá. E define todos os elementos que compõe uma transação completa. Transação completa, atomicidade, tem tudo a ver, né? Lembra do que eu falei, né? Ou faz tudo ou não faz nada. Todos os elementos da transação que
compõe uma transação completa do banco de dados. Então sim, eu isso aqui tá correto, totalmente correto. Esse fragmento aqui eh faz Sentido para mim, né? É uma propriedade essencial de um modelo relacional de banco de dados. Então vamos lá, questão correta. Vamos pra próxima. Outra questão da Barra Sul para analista de teste também, que é a seguinte, ó. A respeito da arquitetura de banco de dados relacional, julgue, né? O modelo relacional de banco de dados não separa as estruturas de armazenamento físicas das estruturas de dados lógicas. Assim, eh, DBAs podem Gerenciar tanto o armazenamento de
dados físicos quanto o acesso a esse dados. Então, vamos lá. Segundo as nossas aulas, o projeto de banco de dados ele é composto de três etapas, né? O modelo, primeiro modelo conceitual, depois o modelo lógico, depois modelo físico. Modelo conceitual é um diagrama, entidade de relacionamento. O modelo lógico é o modelo relacional. E o modelo físico é a terceira etapa, né? é o quando você pega O modelo lógico, que tem ali um pouco mais de detalhes do que o modelo eh conceitual e transforma ele no modelo físico, né? na verdade é o que mais se
aproxima do modelo físico, traz mais detalhes de implementação. Aqui já tá, a gente já tem uma outra perspectiva, né, de que o modelo relacional eh seria o modelo lógico, aqui tá falando, né, estrutura lógica e o modelo físico como sendo a mesma coisa, né? O modelo lógico, ele Vai virar o modelo físico, vai, né? O modelo, o DBA, ele vai criar a tabela segundo o modelo relacional, os dados ou o modelo lógico. Só que ele tá falando que não se não há separação dessas estruturas e que o DBA ele pode gerenciar tanto o armazenamento quanto
o acesso. Isso aqui tá correto, né? Um DBA pode sim gerenciar tanto o armazenamento quanto o acesso aos dados, mas essa questão aqui de não separar as Estruturas, pessoal, eu diria que é está errada, tá? Vamos ver. Beleza? Entenderam, pessoal? Aí é aquela pegadinha, né? a gente tem que ficar ligado aí eh quanto a essas afirmações. Essa é uma questão que pode induzir muitos a a achar, inclusive pessoas experientes, que ela tá correta, né? Eu a primeiro a primeira vista fiquei assim com o pé atrás e tô aqui fazendo com vocês a primeira vez Que
eu faço essa questão. Então o que me fez achar estranho foi essa dizer que não há separação das estruturas, tá pessoal? Então lembra do que eu acabei de falar sobre as etapas de um projeto de banco de dados? Então vamos pra próxima. Ó, essa é uma questão aqui para analista de sistemas. Eh, para essa BNB, eu não sei o que é essa BNB. Se alguém souber, coloca no comentário aí, por favor. Ó, julgue o item a seguir sobre o Modelo relacional de dados. Um modelo de dados relacional, cujo esquema é visto como um gráfico em
que os tipos de relacionamento são arcos e os tipos de objetos são nós, é um modelo de banco de dados projetado como uma abordagem flexível para representar objetos e seus relacionamentos. Então vamos lá. Modelo de dados relacional. Esse é o modelo lógico, né, pessoal? É, é a segunda etapa de um projeto de Banco. Tá falando que o esquema ele é visto como gráficos, tá? Na verdade, o que é o gráfico? É o diagrama entidade de relacionamento, né? É o modelo conceitual e não o modelo relacional. E aí ele faz aqui, ó, gráfico em que os
tipos é de relacionamento são arcos. É o que a gente tem no modelo lógico, né? são as tabelas ligadas por linhas simples. E lá no diagrama entidade de relacionamento, a gente tem os losangos ligando às Entidades, né? Então, esses arcos aqui, não sei da onde que ele tirou, né? E aí ele fala: "É um modelo de banco projetado como uma abordagem flexível para representar objetos e seus relacionamentos. Na verdade, não é objetos, né? São tabelas e seus relacionamentos. o modelo de dados relacional e no conceitual a gente tem entidades e relacionamentos. Então eu diria que
essa questão está errada por essas questões. Vamos Ver. Legal. Se atentem a esses detalhes, tá, pessoal? Então o projeto ele tem essas três etapas: modelo conceitual, modelo lógico, modelo físico, diagrama, entidade de relacionamento, modelo relacional, modelo físico. Mais uma questão, questão da Petrobras, aí banca CESP para analista de sistemas, tá? E aí fala o seguinte, ó. abordagem relacional e entidade de Relacionamento permitem modelar os dados em diferentes níveis de abstração. Então, vamos analisar a primeira parte, né? A abordagem relacional e entidade de relacionamento permite modelar dados em diferentes níveis de abstração. Primeira coisa, a abordagem
eh quando a gente fala de entidade de relacionamento, é modelo conceitual, é apenas um único nível de abstração, né, que é o o nível mais Alto, mais fácil de ser compreendido por usuário comum. Eh, a abordagem relacional pode ser que envolva aí também eh a questão do do de todas as etapas do projeto, né, de criar o modelo conceitual, depois o modelo lógico através da abordagem relacional, né? Então você tem dois níveis de abstração. Então, eh, pode ser que essa primeira parte esteja correta, né? Mas eu ainda não tenho 100% de certeza. Mas vamos lá.
Mas quando fala Que os dois permitem, é, pode dizer que sim. Eu diria que tá correta essa toda, né? Ou seja, aqui a gente tem o modelo conceitual e aqui a gente tem o modelo lógico. Então são níveis diferentes de abstração. Direi que tá correta essa primeira etapa. Vamos paraa segunda. A engenharia reversa de arquivos é um processo que permite a obtenção de um modelo lógico não relacional a partir de um modelo lógico relacional. Aqui nós temos uma inversão, Pessoal. A engenharia reversa de arquivos é, na verdade, um processo que permite a obtenção de um
modelo relacional a partir de um modelo eh não relacional, entendeu? Então aqui tem uma pegadinha, pessoal, inverter os conceitos aqui, tá? Então, engenharia reversa de arquivos é o é o processo que permite a obtenção de um modelo lógico Relacional a partir de um modelo lógico não relacional, tá? Então essa questão está errada por conta deste trecho aqui, segundo a minha análise. Se você viu alguma coisa que eu não vi, por favor, compartilha aí eh os comentários aí sua experiência conosco. Então é errada. Vamos ver se é isso mesmo. Beleza, pessoal? Compreendido? Então, eh, para quem
não sabe que a engenharia reversa de Arquivos é o processo que permite a obtenção de um modelo lógico relacional a partir de um não relacional. Então, lembra disso, ó. Essa questão aqui eh, se eu não me engano, aqui Universidade Federal de Juiz de Fora para técnico em TI. Então, vamos lá. No que diz respeito às restrições do modelo relacional de banco de dados, analisa as afirmativas a seguir e assinale com verdadeiro ou falso. Então, olhar e dizer se é verdadeiro ou falso. Vamos lá, uma por uma. Uma chave primária deve ser necessariamente única, correto? Chave
primária tem que ser única. Então aqui já a gente já colocaria um vzinho aqui, né? V. Então, onde for f aqui a gente já corta. Então, F, né? Essa aqui é, tem que tomar cuidado, tá? Com essa questão de cortar, mas é uma que a gente tem certeza, né? Chave primária tem que ser única. Então, falso, falso, falso. A gente Tirou uma chave estrangeira não pode ser nula. Falsa essa afirmativa, né, pessoal? A chave estrangeira é aquela chave que aponta pra chave primária da tabela referenciada, né? Mas pode ser nula sim. O que vai dizer
se é nula ou não é ali a restrição de de vazio, né? Se o projetista definiu isso ou não. Então aqui essa segunda aqui assertiva está errada, então tem que ser falso, né? Então verdadeiro ou falso, beleza? que verdadeiro e falso. As duas estão Dentro. Vamos paraa próxima, terceira questão aqui. A integridade referencial especifica quais campos podem ou não ter valores vazios. Acabei de dizer, né, errado. Isso aqui é integridade de vazio que diz quais os campos são vazios ou não. A gente viu isso na nossa aula sobre modelo relacional de dados. Integridade referencial é
aquilo que diz que a chave estrangeira tem que apontar para chave, Vai apontar pra chave primária da tabela referenciada. E essa chave referenciada, ela tem que existir. Você não pode ter uma chave estrangeira que não aponta para nada. Isso é integridade referencial, tá? Inclusive você não vai conseguir excluir uma um linha, uma tupla cuja chave primária está sendo referenciada por uma chave estrangeira por conta da integridade referencial. Então essa alternativa está falsa também, que nos Leva a cortar essa letra B. Então é VFF. Se a última tiver correta, aí a gente vai tranquilo na letra
E, né? Se tiver errada, se for falsa, aí a gente tem que analisar tudo de novo. A integridade de domínio especifica que o valor de um campo deve estar de acordo com seu tipo. Perfeito. É isso mesmo. Isso aqui vai dizer que, ó, se você colocou lá que a coluna é numérica, só pode ter número naquela coluna. O SGBD não vai permitir Eh o contrário, tá? Então é aí, podemos ir tranquilos nela. Mais uma questão aqui para auditor eh do estado tecnologia da informação. Ele diz o seguinte: uma cardinalidade N para N modelo lógico de
um banco de dados relacional gera três tabelas no modelo físico. A gente viu isso aí na aula. Então, ó, n para n, né? Normalmente, lembra que eu não tô usando a palavra sempre, tá? Geralmente, normalmente, um relacionamento n para n Entre duas tabelas eh vai sim gerar o relacionamento vai virar uma tabela própria, ou seja, três tabelas, né? n para n, duas tabelas, eh, o relacionamento vai virar uma tabela própria, mas não é sempre, tá? Mas essa afirmação que ela, que eles estão trazendo está correta. Vocês só tem que tomar cuidado se tivesse aqui a
palavra sempre, uma Cardinalidade n para n sempre gera três tabelas. Aí a gente tá errada essa questão, né? E aí você pode recorrer pela anulação ou alter alteração aí do gabarito, segundo vários autores. Mas por enquanto o que tá aqui tá correto. Legal. A a pulga atrás da minha orelha aqui é a seguinte. Eh, a cardinalidade n para n vai gerar três tabelas. O relacionamento eh no meio de um de uma cardinalidade n para n vai virar uma Tabela, né, que é seria a terceira tabela. Mas normalmente é cria uma tabela, né? Mas se a
gente entender que a cardinalidade é a quantidade, né, com que uma instância de uma de uma entidade se relaciona com com a das outras, né? Então, por exemplo, um funcionário, ele pode trabalhar em vários projetos e em um projeto podem trabalhar vários funcionários. Esse é um Relacionamento n para n. Então aí a gente tem duas entidades n para n. para armazenar, ser possível armazenar essa múltipla relação, esse relacionamento vai ter que virar uma tabela própria. Então, dando aí origem à terceira tabela, três tabelas. Então, podemos dizer que está certa assim, ó. Uma questão aqui paraa
Prefeitura de Criciuma, Santa Catarina, para auditor fiscal da receita municipal. Diz assim: "São todos tipos de restrições ou Constraintes, né? Restrições e construentes, a mesma coisa, que podem ser expressos diretamente nos esquemas do modelo de dados relacional e esquemas de banco de dados. eh, relacional, tá? Eh, incluídas na linguagem de definição de dados DDL, tá? DDL é linguagem de definição de dados, que é o código SQL que a gente utiliza para criação da estrutura do nosso do esquema do nosso banco, né, das tabelas, das colunas, quais os tipos de dados e tudo Mais. Então ele
quer saber quais dessas listadas aqui, quais são as restrições que podem ser definidas aí eh diretamente eh nos esquemas do do banco, né, incluídas na linguagem de definição de dados DDL de domínio, né? Receção de domínio, pessoal, a gente viu, é diz respeito ao tipo de dado que vai ser armazenado numa coluna. Então, a gente que implementa isso através da DDL, né? Você vai lá e diz que a coluna nome vai Ser eh vai ser alfa numérico, né? Então vai ter caracteres e textuais e numéricos também que a idade, coluna, idade ou valor vai ser
numérico. Então você que define, o projetista que define isso, né? Essa restrição de domínio através do DDL. Então, a um está corretíssima. O que não tiver um a gente já elimina. Então, vamos lá. Ó, aqui não tem um, a gente corta. Assinala é a alternativa que indica todas as afirmativas corretas, Tá? Faça a leitura tranquilo, é, tranquilamente aí para não ter uma interpretação equivocada, tá? Ele quer saber quais são as corretas. Eh, integridade referencial. Vamos lá. A referencial é aquela, né, que a chave estrangeira vai ter que apontar para uma chave primária que exista, né?
E você não pode excluir essa chave primária caso ela esteja sendo referenciada por uma chave Estrangeira. Então, integridade referencial, ela é implementada através da chave estrangeira, da forign key. Você também pode ver no texto aí ou em alguma questão para concurso como forign key, chave estrangeira. Então, a três tá corretíssima. É a gente que implementa isso. Ah, a gente que implementa a chave estrangeira, né? E o aí o banco vai garantir a integridade referencial. Então, a três tá correta também. Onde Não tiver três, a gente corta. Aqui não tem três, cortamos. A quatro eh, integridade
de entidade. Ah, o que que é integridade de entidade, pessoal? Integridade de entidade é o seguinte. Ah, a gente tem integridade de vazio, que diz que o campo não pode ser vazio. E integridade de entidade, ela Diz que eh o campo não pode ser nulo, tá? Você não pode ter uma entidade aí com algum campo eh nulo, né? Você define isso lá. através do DDL, se você quer e not, né, ou não, tá? Você pode dizer que esse campo não pode ser nulo, not, isso é integridade de entidade. Legal. Você vai lá e fala que
o campo CPF ele é not, ou seja, ele não Pode ser nulo. Isso é, você tá dizendo pro pro banco ali que ele vai ter que garantir a integridade de entidade naquele ponto. Então, a quatro tá correta. Onde não tiver quatro, a gente corta também, tá? E aí sobrou aqui, ó, a do integridade semântica. Essa o nome já diz, né? Semântica. É, são, diz respeito aí à regras e do domínio da aplicação, né? São regras de negócio e outras outras restrições por conta do negócio, mas não é a coisa própria de qualquer banco relacional. Então
o nome já tá falando, é semântico, né, de acordo com o sentido dos dados ali, com a proposta com o que se quer alcançar. Então a do não faz parte aqui, a gente não consegue definir ela através da DDL. Então essa dois tá errada. Onde tiver dois a gente corta. Então aqui tinha dois corta, dois corta, então é 1 3 4, né? Só por essa semântica A gente já sabia qual que era a correta, né? Onde tem essa dois, tá errado. Então é isso, pessoal. Por hoje é só. Eh, se você não entendeu nada, vai
lá assistir a nossa aula sobre eh modelagem relacional de dados, tá? Qualquer dúvida você pode deixar o comentário e continuemos firmes aí até a aprovação no concurso público. Legal? Grande abraço, até a próxima. E aí, pessoal, beleza? Começando mais uma aula. Eu sou o professor Arnaldo, Professor de informática do Instituto Federal de Tocantins e em breve estarei tomando posse aí como auditor na área de TI no Tribunal de Contas do Estado do Tocantins. Na aula de hoje a gente vai falar sobre SQL, um conteúdo aí previsto e na área de banco de dados. Mas antes
da gente ir pro conteúdo diretamente, eu gostaria de deixar o convite para vocês ingressarem aí no nosso grupo no WhatsApp, onde vocês vão poder estar tirando dúvidas diretamente comigo, onde Vocês vão ter acesso a materiais exclusivos, como alguns PDFs que eu utilizo nas aulas, eh, lista de questões, entre outros materiais. E vocês vão estar ali também cercados de outros estudantes e até professores na área de tecnologia. para quem quer estudar eh informática para concursos, OK? Então, se você é um desses, tem o link aí na descrição do vídeo e também nos comentários. Então, vamos lá,
vamos Começar o nosso estudo sobre SQL. SQL é a principal linguagem utilizada em bancos de dados relacionais para executar diversas ações, diversas tarefas nesses tipos de bancos de dados. A tradução livre para SQL é linguagem de consulta estruturada e é através dela que a gente consegue inserir dados, manipular, criar o nosso banco de dados. E como que a gente faz isso? A linguagem esquela, ela fornece pra Gente alguns comandos através dos quais a gente consegue, como aqui, por exemplo, listado, inserir informações na tabela, deletar a tabela, alterar o conteúdo, a estrutura da tabela, entre outras
operações. Só pr para lembrar, quem quiser ter acesso a esse material, esse PDF, é pra leitura, posteriormente acessa o nosso grupo aí no WhatsApp, entra nele que lá você pode solicitar e eu encaminho para você esse material Para a leitura. Quem utiliza a linguagem SQL? A maioria dos bancos relacionais fazem uso da linguagem SQL como a sua linguagem padrão para manipulação desse banco de dados, tá? A linguagem por si só, ela não é um banco de dados, ela é utilizado em bancos de dados diversos para sua manipulação. E o banco de dados também, ele precisa
de uma outra coisa chamada sistema gerenciador de bancos de dados, que é o SGBD. Então, é através do SGBD Que a gente consegue ter aí outros sistemas que são necessários para que o banco de dados funcione. Um SGBD é a base para o SQL, sendo alguns dos mais conhecidos, uma SQL, o Postgre SQL e o SQL Server. Ó, em um SGBD, os dados eles são armazenados em tabelas compostas de linhas e colunas. Vamos entender primeiro o que são as linhas e o que são as colunas. Aqui a gente tem uma Representação de uma tabela, contratos.
E aqui em cima nós temos o que a gente chama de nome dos campos, são os nomes das colunas. Então essa tabela armazena e quais valores, quais tipos de valores? o número do contrato, o valor, a quantidade de parcelas e os juros. No outro sentido, a gente tem as linhas, né? As linhas, elas representam cadastros, inserções nas tabelas são também chamados de tuplas, Né? Linhas ou tuplas nas das tabelas. Então, nós temos aqui quatro linhas cadastradas. Foram cadastrados quatro contratos. Cada contrato tem o seu próprio valor valor, claro, mas eh todos fazem parte aqui da
tabela contratos e possuem essas quatro informações: número, valor, quantidade de parcelas e juros. E o que que o SQL pode fazer? Várias coisas. A gente consegue através da SQL fazer, realizar consultas. Buscar informações por diversos critérios. Quero saber a quantidade de contratos do usuário tal, do cliente tal. Quero saber a quantidade de vendas realizadas pelo vendedor X. Então você consegue realizar diversas consultas por critérios variados. A gente consegue também inserir e atualizar registros que são as linhas, eh, no banco de dados. a gente consegue deletar, a gente consegue criar novos bancos de dados, novas tabelas.
Podemos também especificar Permissões para essas tabelas. Quem pode realizar uma inserção nessa tabela? Quem pode deletar um registro dessa tabela? Os comandos SQL, eles podem ser agrupados em algumas categorias. Nós temos a DDL, que é a linguagem de definição de dados, onde nós temos comandos para definir a estrutura da tabela, a criação da tabela, a sua estrutura para deletar a tabela, para criar banco de dados. Nós temos também comandos eh da categoria DML, que é para Manipulação de dados, onde nós temos aí comandos para inserir dados, para deletar registros, né? registros, as informações que já
estão lá na tabela. Então, não é estrutura, é manipular os dados que estão lá. Nós temos também os comandos eh do DCL para controle de dados, OK? E aí nós vamos ver alguns desses comandos nessa aula, ó. Os comandos DDL são responsáveis pela criação, alteração e deleção de base de Dados, de tabelas, de índices, visões, entre outros. Então vamos pro primeiro comando, o comando create database. Esse comando ele é utilizado para criar uma base de dados. Então, por exemplo, se você vai criar, você tá desenvolvendo um sistema para uma sorveteria, por exemplo, e aí você
quer armazenar as ali os dados do seu do seu seus produtos, então você pode criar uma base de dados para atender a sua sorveteria. Então, Create database. E aí no nome do banco, você vai colocar o o nome que tem relação com o seu negócio, né? Então, create database sorveteria tal, por exemplo, né? Seria uma possibilidade. Então, o nome, se atentem ao nome do comando, né? Se você já tem um conhecimento básico de inglês, você já vai conseguir traduzir e ter noção de do para que que serve esse comando, né? Aqui, no caso, criar a
base de dados. Por outro lado, nós temos o drop Database, temos o create para criar e o drop para excluir o banco de dados. Se o banco de dados não lhe é mais útil, você quer excluir ele, você pode usar o drop database espaço, o nome do banco. Se atentem a sintaxe, tá? A gente tem aqui, primeiramente o comando drop database espaço o nome do banco. E aí aqui uma prestar atenção, né? Tomar muito cuidado para não excluir e algum banco com informações importantes, tá? Então, Create para criar e o drop para excluir, para deletar.
Outro comando muito utilizado é o create table. Então, uma vez que você criou o banco de dados em si, agora nós vamos criar as tabelas que irão armazenar as informações do nosso interesse. Então, para isso, a gente usa o comando create table. Create table separado, tá? Ou seja, criar tabela, espaço o nome da tabela. create table, espaço o nome da tabela. E Aí nós temos os parênteses para delimitar o início e o fim eh da estrutura da tabela, porque aqui dentro a gente vai informar a estrutura da tabela, quais informações que nós queremos armazenar, é
o nome, é a idade, a data de nascimento. Qual e para essas informações, qual vai ser o tipo de dado que eu espero que seja armazenado ali? Então, toda essa definição, ela vai ocorrer dentro do corpo aqui do comando, que é delimitado pela pelos parênteses, Tá? De abertura e de fechamento, tá? Então, o que que eu tenho aqui, ó? Coluna um e o tipo do dado. Coluna dois, o tipo de dado. Você vai fazer, vai informar para quantas você quiser, tá? Aqui eu trouxe trouxe algumas definições de tipos de dados aqui do MySQL, mas é
semelhante para outras outros bancos de dados também, tá? Mas se for do caso, você pode pesquisar no Google aí e ver exatamente quais são os tipos de dados Para o banco do seu interesse. Mas basicamente nós temos aqui os principais, o vchar, que é para armazenar eh um conjunto de caracteres. Professor, o que que é um conjunto de caracteres? Traduzindo, eh, eh são textos, palavras ou você quer é um tipo de dado que permite armazenar textos, números, caracteres especiais, acentuação e etc. Então, e é o tipo de dado que mais amplo Para aceitar e mais
diferentes tipos de de informações ali naquele campo, OK? Então, vaxar é para um conjunto de caracteres. Aí nós temos para armazenar só número o principal que vale a pena referenciar aqui, o wint, tá? É um dos mais utilizados aí para armazenar números, beleza? Números inteiros. O que que é o número inteiro? São números sem casa decimal. É um Número é sem casa decimal, tá? E aqui a diferença dele, ó, pro a gente tem o int, tem o small int e o big int. A diferença é a quantidade de dígitos, de informações que ele consegue armazenar.
Aqui no int é até 11 dígitos, no big int até 20, mas na maioria dos casos o int já atende, né? Você vai ver aí é a sua necessidade. Professor, e se eu quiser armazenar número com casa decimal? Aí nós temos o float, por exemplo, que permite armazenar número eh com ponto Flutuante. E aí você pode colocar alguns parâmetros, como por exemplo aqui, ó, a o tamanho da variável, né? Aqui o primeiro parâmetro dentro do parêntese, você vai informar quantos números você quer que sejam armazenados. E aí depois da vírgula, você pode informar aqui a
quantidade de casas decimais. Você quer até você quer armazenar até quantas casas decimais depois da vírgula, né? Duas. Que não, eu quero mais. Na minha aplicação é Importante que ela seja mais detalhada. Então, quatro casas, cinco, você vai dizer informando aí. Beleza? Nós temos também o decimal para valor numérico fracionário, beleza? entre outras possibilidades. Vamos criar algum tipo aqui. Eh, aqui também, ó, a gente tem eh tipos de dados para datas, tá? Então, date, o date time, time stamp e aqui a descrição de cada um. Vamos criar uma tabela. Ó, aqui eu Trouxe um um
editor online pra gente testar alguns comandos. Então, ó, eu vou aqui no no banco de dados postegl criar uma tabela. Então, como é que é o comando para criar tabela? Create table. Então, por exemplo, eh, cliente. Vou criar uma tabela chamada cliente. Vou abrir os parênteses e vou agora informar quais os dados que eu quero armazenar desse cliente. Então, Por exemplo, quero, eu preciso armazenar aqui algum número de identificação, tá? alguma alguma informação que me permita identificar o cliente. Então eu posso chamar aqui de ID cliente. Esse dado vai ser do tipo eh big int,
o inteiro grande, né? E vai ser a minha chave primária. Agora eu explico o que que é uma chave primária. E aí eu quero Armazenar o quê? também o nome do cliente. O nome vai ser um varchar, ou seja, vai ser um conjunto de caracteres. Legal. Quero armazenar aqui o conjunto de caracteres. Ele vai ser not. Vamos lá. O que que nós temos aqui? o nome da coluna, né, da informação que você quer armazenar, o tipo de dado que você espera receber naquela coluna. Aqui no Caso é o inteiro, ou seja, número decimal, eh, um
número sem casa decimal, né, o número inteiro, vai ser a minha chave primária que vai me permitir identificar um registro na tabela. Eu tenho a coluna nome, onde vai ser armazenado ali, claro, o nome do cliente. Essa coluna vai ser do tipo varchar, ou seja, ela vai eh permitir textos ali, né? E você pode especificar aqui também A quantidade de caracteres que esse que essa coluna vai ter no máximo, tá? Então aqui no caso, ó, no máximo 255 caracteres. Que mais? e not. O que que significa not? Aqui nessa terceira coluna, a gente tem o
que a gente chama de constraints. Constraints são regras eh relacionadas aqui à tabela ou aos campos, né, as colunas das tabelas. Aqui no caso notu significa que esse Campo não pode ser nulo. Ou seja, quando alguém for cadastrar um cliente, essa pessoa tem que obrigatoriamente informar o nome do cliente. Ela não pode deixar esse campo vazio. OK? Outra coisa que a gente pode armazenar aqui, o CPF, né, da pessoa, por exemplo, CPF seria uma possibilidade. Se você quiser armazenar só os números, você pode colocar inteiro, né? Lembra que o in permite 11 casas decimais? O
CPF tem 11, são 11 números. Então, eh, aqui para se você for armazenar só os números do CPF, o INT atende. Se você quiser armazenar os pontos, o tracinho, o ifen, aí você usa o vachear com mais campo. Vou deixar aqui como int também not nul, não pode ser nulo. E tá bom. Aqui é só um exemplo, tá? Aí você fecha o o parênteses e ponto e vírgula. Sempre finaliza o comando com ponto e Vírgula. Aí, ó, vou mandar executar. Ah, aqui, ó, ele bem lembrou, ó, aconteceu um errinho aqui no final, ó. A última
linha, a última linha você não precisa colocar vírgula, tá bom? Eu deixei aqui porque eu fui ia colocar outro campo e acabei desistindo. Mas você tem que lembrar disso, que na última linha e você não precisa colocar vírgula. Vírgula é só para separar as colunas. Chegou na última sem Vírgula. Beleza? Vamos ver se funcionou. Olha aqui, ó. Tabela cliente foi criada. Tá aqui nesse caso, ó, ainda no comando create table, a gente tem aqui, ó, o nome da coluna, ID e o tipo inteiro. O outro nome de coluna, né, aqui no caso chamada nome também,
tabela pessoa, tá? Vai ser o quê? Um conjunto de caracteres de até 100 dígitos. Endereço car conjunto de caracteres de eh até 200 dígitos. Idade também. Inteiro. E aí nós vemos aqui algumas constraints, né, algumas regras. Note nu, como expliquei, campo não pode ser nulo. Sabe aqueles campos que são obrigatórios, que sempre alguém que for preencher alguma informação lá, ela tem que informar esse campo? Você coloca not aqui na terceira coluna, tá? Eh, primary key. Que que é primary key, pessoal? especifica que uma coluna ela é chave primária. E o que consiste ser chave Primária?
Eh, uma coisa que nós precisamos em banco de dados é de algum mecanismo para que eu tenha certeza de que um registro, quando eu for buscar, por exemplo, as informações do seu cadastro num banco de dados, eu tenho a certeza de que aquelas informações são de fato eh referentes a você. Eh, eh, esses são os dados que eu estou procurando realmente, né? Porque nós temos banco de dados com milhões e milhões de de Registros. Então, como é que eu sei que é você? Através da chave primária. A chave primária é um é um valor que
ele eh não se repete, é único para cada registro. Por exemplo, o campos que poderiam ser chave primária, o CPF. Por quê? O CPF não é único, né? Eu não vou conseguir, por exemplo, ter cadastrado na tabela pessoa duas pessoas com o mesmo CPF. Eu só posso cadastrar uma única vez aquela pessoa com aquele CPF. Se precisar realizar alguma alteração Nos dados, eu vou alterar, mas eu não vou cadastrar um novo registro. Eu vou pegar aquele registro seu e vou alterar o endereço, por exemplo, tá? Então essa é uma chave primária. Aqui no caso, uma
outra prática comum é a gente definir uma coluna específica para ser a nossa chave primária, que é o que a gente chama de ID, tá? ID pessoa ou então só ID. E aí você pode colocar na frente da coluna do jeito que eu Especifiquei, no exemplo ali, ou pode colocar aqui no final, ó, primary key. E aí, entre parênteses, você vai ter que dizer eh qual a coluna que é a sua chave primária. Algumas informações sobre a chave primária. A chave primária, ela ela tem que possuir valores únicos e não pode ser nula. É, a
tabela tem que conter apenas uma única chave primária, OK? Mas eh nós temos a possibilidade de ter chave primária Composta, que é uma a continua sendo apenas uma única chave primária, mas ela é composta por mais de um campos, a junção de dois, três campos. E esses campos em conjunto, eles permitem a identificação de forma inequívoca de um registro. Tá? Então, mas continua tendo apenas uma única chave primária, ou seja, você pode fazer definir chave primária apenas uma única vez. Aqui, no caso, tá? Em um campo só, mas eu poderia colocar mais Campos aqui nessa
definição. Olha aí, a gente consegue pô chave primária na mesma linha da coluna, tá? Então aqui no caso ID vai ser chave primária ou colocando no final. Inclusive, ó, você tem a opção ainda de definir o nome dessa regra, o nome dessa constraint. Você coloca constraint, o nome dela, o nome você escolhe, mas não é obrigatório, tá? Você pode colocar direto primary key. E aqui no caso, ó, a chave primária composta, Composta pelo ID P nome, tá? Aqui é um exemplo, né? Beleza? Outro comando, drop table. O drop table serve para você excluir uma tabela
do banco de dados. Legal. Quer excluir uma tabela? Aquela tabela não é mais útil. Ele vai excluir a tabela toda. Beleza? Vai excluir toda a tabela. Então é drop espaço table espaço, o nome da tabela. Então, no caso, drop table, pessoa, drop table Produto. Outro comando que a gente pode utilizar também é o truncate table. Truncate table. Ele deleta os registros da tabela, tá? Ele não permite a recuperação dos dados excluídos. Tem que tomar cuidado com isso. Vamos atentar as características dos comandos, né? Então, o drop table ele deleta a tabela toda, beleza? ele deleta
toda a tabela. Então aquela tabela não existe mais. O trate table ele não deleta a tabela. A Tabela continua lá, mas ele apaga tudo que tem dentro dela. Ou seja, todos os registros da tabela são eliminados. E uma das características do trunk table é que ele não permite a recuperação dos dados excluídos. Então, tomar cuidado com isso. O comando é Juncate table, nome da tabela. Agora vamos responder uma questão, uma questão aqui da pro concurso da prefeitura de Blumenau em Santa Catarina, questão de 2022. E ela fala o seguinte: "E a sintaxe em SQL correta
para pagar uma tabela é?" Então, qual eh dessas informações, desses comandos está eh estão corretos aí, né, para deletar, para pagar uma tabela? Então, alternativa A, drop table in. Qual que é o comando para deletar a tabela? É o drop table. Drop table, né? Não tem win. Então, a gente corta isso aqui. Segunda Opção, drop table, nome da tabela. Im o banco. Quero deletar a tabela tal no banco tal. Não, não precisa desse in, né? Então corta. Drop table, nome da tabela and o nome do banco. Não é errado, né? Drop table, o nome do
banco. Aqui é a primeira opção. A segunda opção, drop table das opções restantes, né? Drop table, nome da tabela. O que que a gente quer apagar? Tabela. Então, qual que é o comando correto, né? O drop table. E aqui, caso na frente o nome da tabela, não é isso? A gente não quer apagar uma tabela table. Então, o que vem aqui na frente é o nome da tabela. Esse é o comando correto para apagar uma tabela. Questão da CESP de 2022 para Petrobras, cargo analista de sistemas engenharia de software. Ela fala o seguinte, ó. O
comando truncate pessoa. Então aqui pessoa a gente Entende que é o nome da tabela, né? Então, truncate pessoa permite excluir todos os registros da tabela de nome pessoa. E aí, segundo que a gente estudou, é isso mesmo que o command trunkcate faz? Exato, né? Comand truncate exclui todos os registros da tabela. E o detalhe é que ele mantém a estrutura da tabela, né? Ele não apaga a tabela. para apagar a tabela é o drop table, que no caso ele apaga todos os registros da Tabela, eh, aqui no caso a tabela pessoa. E aí com o
problema é que você não consegue depois recuperar esse essas informações. Então, correta, né? Questão correta. Aqui outra questão também para para Petrobras, para analista de sistemas, que fala assim: "O comando eh delete alunos permite apagar uma tabela de nome alunos. Ele tá falando que o comando eh delete alunos permite apagar uma tabela que se chama alunos. E aí tá Certo? O, a gente vai ver agora em seguida o comando delete, ele faz parte eh do conjunto de comandos DML, de manipulação de dados que servem para pagar o quê? Registros, tá? São os dados cadastrados, não
a tabela em si, não a estrutura da tabela. A estrutura, o que permite alterar ou criar são os comandos DDL, comandos de definição de dados. Beleza? O o delete faz parte de outro grupo de comandos que são comandos Para a manipulação de dados que a gente vai ver agora em seguida. Mas por enquanto a gente já consegue responder essa questão mesmo sem ter visto e o delete, porque qual é o comando que permite apagar uma tabela? É o drop table, não é? Drop table, delete não apaga a tabela, apaga registros. Então, como é questão errada.
Outro comando e de definição de dados é o outer table. Outer table ele é utilizado para adicionar, Deletar, modificar e modificar colunas em uma tabela. Então, por exemplo, você já criou uma tabela, você quer adicionar uma nova coluna, você vai e utiliza o comando outer table. também ele é muito utilizado para para adicionar ou remover regras, né, as chamadas constraints nas tabelas. Então, qual que é a sintaxe? Essa aqui, ó. Alter table. Você vai dizer, né? Eu quero alterar uma tabela, alter table, o nome da tabela. E aí, o que que você vai fazer? Aqui
no caso, ó, Tô, eu quero adicionar uma nova coluna. Então, add, nome da coluna, tipo do dado, outer table, nome da coluna. E aí você vai dizer o que você quer fazer, ó, adicionando a coluna peso do tipo float. Então, ó, nós temos aqui a tabela cliente, que ela possui o ID cliente e o nome, o CPF. Se eu quisesse colocar mais uma coluna aqui, como por exemplo a idade, como é que eu faria? Simples assim, ó. Outer table cliente. E aí, o que que eu quero fazer? É o mesmo comando, tá? Vou adicionar o
número da coluna. Vou adicionar a coluna. Qual coluna? Idade e o tipo. Idade é int. Pronto. Então, ó, estou alterando a tabela cliente e estou adicionando uma nova coluna do tipo inteiro. Você pode utilizar o comando alter table não apenas para adicionar Novas colunas, mas também para deletar uma coluna é já existente. Então aqui, ó, outer table, o nome da da tabela. E aí, drop column, você vai especificar qual coluna você quer deletar. Você pode também para modificar uma coluna, você quer modificar o tipo do dado, então essa é uma possibilidade, tá? Então, ó, aqui
no caso, ó, modify column, o nome da coluna e o novo tipo do Dado. Você consegue também renomear a coluna através do change. Então, ó, change, o nome antigo, nome novo, é, e o tipo do dado. Beleza? tudo dentro do comando outer table, que faz parte de dos comandos de definição de dados. Vamos ver agora algumas regras, algumas constraints que podem ser definidas eh associadas aí a colunas e às tabelas. As construints, elas são regras, né, como eu falei, são regras atreladas a Uma coluna, a uma tabela em si, que são regras que precisam ser
atendidas, né? Então vamos lá, vamos ver o que que a gente tem. Como definir? Primeiramente, do jeito que eu mostrei, né? Aqui, por exemplo, na criação da tabela, você tem a a o nome da coluna, o tipo do dado, que vai ser aquela coluna. E aqui na terceira e terceira coluna a gente tem eh as construentes, as regras. E aí você pode especificar aqui várias regras de uma Vez. Quais são as construentes mais utilizadas? A gente tem o not nul indicando que aquela coluna ela não pode ter valor nulo, ou seja, ela não pode ser
ser deixada e em branco, tá? Unique significa que o a o valor daquela coluna ele não pode se repetir, ele tem que ser único. Então, por exemplo, a coluna CPF, ela tem que ser eh única, né? Então, eu não posso cadastrar duas pessoas com o mesmo CPF. Então tem que Ser um valor único. Se se eu tentar cadastrar uma pessoa que já possui aquele CPF cadastrado, é o o banco não vai deixar, o sistema vai gerar uma mensagem eh de erro, por é aquele campo, ele tem que ser único. Primary key para indicar que um
campo é chave primária. E como a gente aprendeu aí, a chave, o primary aqui, a chave primária, serve para identificar uma linha na tabela de forma inequívoca, né? Aquele campo através do qual eu Consigo ter a certeza de que aquele registro é de quem eu estou procurando. E o a aqui, ó, a chave primária, ela implicitamente ela já inclui, ela já pressupõe o notu e o unique, né? A chave primária, ela não pode ser nula e ela tem que ser única. Então, se você colocar primer nem precisa colocar not e unic. Temos também o foreign
key, que é chave estrangeira. Agora eu vou falar sobre ela. Temos aqui o cheque, Eh, que serve para definir eh algumas condições específicas que precisam ser atendidas pela coluna. Então, por exemplo, eu quero que esse campo só possua eh valor números maiores do que zero. Então, você pode colocar um cheque para verificar uma condição específica. Então, para quer definir algumas condições específicas, cheque. Esse é essa construente, ela cai bastante em concurso, tá? se atentar ela aí ao uso Dela. Vale aí a pena um estudo mais aprofundado. O def serve para você definir valores padrões, tá?
Você defini um valor padrão para uma coluna. Então, se se aquele campo ele não for eh preenchido na hora de de inserir um registro no banco, eh já é atribuído o valor padrão que foi definido para ele. E temos também o índex, que é usado para criar e recuperar dados de uma tabela mais rapidamente, que é o o índice, tá? Você pode indicar que você quer que Aquele campo, aquele campo, quando eu falo o campo, é aquele é são as colunas das tabelas, né? coluna nome, coluna idade, e-mail. Você pode, por exemplo, indicar que um
desses campos ele vai ser o índice. E aí é o índice é semelhante à aquele índice do livro também, né? É um mecanismo através do qual você consegue localizar mais rapidamente um registro. Beleza? O not aqui um exemplo, ó. ID e nome not. Então, idade pode pode ficar em branco. Na hora de cadastrar um cliente, eu posso deixar idade em branco, mas não posso deixar o ID e o nome. O uni aqui no caso, ó, ID vai ser not e unic. Observem que a partir da terceira coluna eu posso colocar mais de uma constraint, mais
de uma regra. Então é só você separar por espaço, tá? Então aqui, ó, not new e unique, então ID vai ser não nulo e único. Chave estrangeira, foreign key. Eh, para quem não sabe o que é chave Estrangeira, eu vou deixar um o link para uma aula aí também de banco de dados, onde eu eu explico eh todos os os conceitos, né, o o fundamento por trás eh dessas dessas chaves, tá? do forign key, que é a chave primária, que que é a chave estrangeira. Mas a chave estrangeira é um mecanismo que nos permite eh
associar registros de tabelas diferentes normalmente, mas também às vezes da mesma tabela. Então, por exemplo, eu quero saber a qual categoria Um produto pertence. Eu tenho, sei lá, quatro produtos cadastrados. E aí eu preciso, eu tenho uma coluna que vai me indicar, que vai apontar paraa chave primária das categorias. Aqui desse lado, do outro lado, eu tenho, sei lá, duas categorias cadastradas. Vamos pensar a primeira categoria, categoria eh de produtos, né? Eu tenho móveis e eletrodomésticos. Então, eu tenho o ID da categoria, o identificador dela, por Exemplo, um. A a categoria móveis tem um identificador
um e o nome dela móveis. A segunda categoria eu tenho o identificador dois e o nome dela eletrodomésticos. OK? Essa é a tabela categoria. E aí eu tenho outra tabela chamada produto. Aí lá no produto eu tô cadastrando uma um sofá, tá? Então ele vai ser o identificador, sei lá, 100. Aí de nome sofá, o preço. E aí eu quero Colocar associar, eu quero dizer que esse sofá, esse produto, ele pertence à categoria eh móveis, não é? Que que eu vou fazer? Eu vou escrever móveis, não. Você vai colocar, você vai vai especificar uma coluna
que vai ter ali o identificador da categoria. E eu não falei que o identificador da categoria eh do móvel não é um. Então vou colocar lá valor um. OK? Então essa coluna que me permite Associar eh um registro com outro registro de outra tabela ou às vezes da mesma tabela, no caso do auto relacionamento, é o que a gente chama de chave estrangeira, tá? É um campo, ó, que se refere à chave primária de outra tabela ou às vezes da mesma tabela. Mas essa é uma outra outra característica, tá? A ch na chave estrangeira, na
foreign key, você vai ela vai sempre apontar pra chave primária de quem ela tá referenciando. Aqui no caso, ó, eu tenho pedidos, tabela pedidos, que tem o identificador. Tem aqui, ó, o identificador, eu já tô vendo que ele vai ser a minha chave primária para pedidos. Eu tenho um número que não pode ser nulo. E aí eu tenho a minha chave estrangeira, que eu tô chamando aqui de ID cliente. Ou seja, isso aqui é o identificador do cliente. Para que isso? Para quando eu pegar o pedido, eu consiga saber e de quem é esse pedido,
Qual é o cliente dono desse pedido. Então aqui através da coluna aí de cliente, eu sei. E como é que eu tô dizendo que ela é chave estrangeira? É pelo nome, não é pela constru, pela regra. Então tá aqui, ó. Foreign key. Tô dizendo que a coluna ID cliente. Então, foreign key. Aí, entre parênteses, você vai colocar o nome da coluna ID cliente. E ela referencia, referencia o quê, ó? Referencia a tabela cliente na coluna ID. Ou seja, lá na eu Eu tenho também uma uma tabela chamada cliente e essa tabela ela tem uma coluna
chamada ID, que é a chave primária dela. Ou seja, qual que é a regra aqui? Eu tô dizendo que na tabela pedidos a coluna ID cliente vai ser chave estrangeira. E essa coluna, por sua vez, ela referencia a tabela cliente lá na coluna ID, ou seja, ela aponta pra chave primária da tabela cliente, tá? E o Comando é esse, em inglês, tá? Forigny, nome da coluna, reference, nome da da tabela referenciada e a chave primária dessa tabela. Qualquer dúvida você pode deixar um comentário aí, fica à vontade. O cheque, o cheque ele serve para você
verificar algumas condições, né? Então aqui, ó, limita os valores que podem ser atribuídos a uma coluna. Então eu tenho aqui uma um comando, ó, Aqui um script, né, que para criar uma tabela chamada persons, né, que tá em inglês, tabela pessoa. E aí eu tenho as colunas ID, nome, sobrenome, idade e eu tenho um cheque aqui no final. E o que que eu tô querendo verificar? Isso aqui é uma constraint, tá, pessoal? Eu tô dizendo aqui, ó, que a a coluna idade idade, ela tem que ser maior ou igual a 18. Então, é assim que
você faz, Ó. Cheque, abre os parênteses e coloca a condição aqui dentro. Qual que é a condição que eu tô verificando, que eu tô eh atribuindo aqui a coluna? Que idade tem que ser maior ou igual a 18. Eu não vou permitir que alguém cadastre aqui uma pessoa com idade inferior a 18. Legal. E você pode também colocar regras aqui, ó, em múltiplas colunas. Aqui nesse caso, ó, o que que ele tá definindo aqui? O construente, não se preocupe, tá? Construente é chk person. Isso aqui é o nome da regra. É, mas isso aqui é
opcional. Você pode só colocar o cheque direto, tá? Então, cheque aqui no caso, ó, idade tem que ser maior ou igual a 18 e a cidade tem que ser igual a sennesses, aqui no exemplo, né? Ok? Então você pode colocar mais de uma regra, mais de uma restrição, só você separar aí com o, ok? Wend, ou seja, a condição à esquerda tem que ser verdadeira e a condição à direita também. Idade tem que Ser maior que 18 e a idade tem que ser igual a senness. Outra opção é você usar o o or de ou.
Então aí nesse caso basta que uma das condições seja verdadeira. de full é quando você quer definir um valor padrão. Então aqui no caso, ó, na na coluna aqui na no campo cidade é do tipo varr e eu tô definindo uma constraint, um valor padrão aqui no caso Palmas, cidade de Palmas. Então, se na ao cadastrar uma pessoa eh Não foi informada aí a cidade, então será atribuída a o valor será atribuído o valor padrão Palmas para essa coluna cidade. Aqui uma questão é para o TRT do Piauí que ela fala o seguinte, ó. Considere
um banco de dados SQL Server e eu tenho aqui a seguinte, o seguinte script, ó. Vamos dar uma olhada. Create table trt funk, né? Esse aqui é o nome da Tabela. Tá criando uma tabela. E aqui eu tenho o corpo da tabela. Então vamos lá. Eu tenho aqui a coluna número de matrícula que é inteiro, chave primária. Temos aqui eh nome funk, que não é o nome do funcionário, que é um vará not, não pode ser nulo. Nós temos o salário, que é um decimal, né, um valor decimal com até e 10 casas e dois
números decimais. Beleza? E aqui eu tenho uma uma regra que vai Ser definida, ó, constraint. E aqui na frente a regra que a gente vai ter que preencher possivelmente. Então vamos lá, ó. Para criar uma restrição, cujo nome seja valor positivo, de forma que o campo salário eh deva ser positivo e maior que zero, a lacuna um deve ser corretamente preenchida com Então vamos lá. Como é que eu faço para definir uma constru? Então, vamos lá. Eh, onde é que Vai ser aplicada essa regra? A coluna salária. Então, já vou colocar aqui na mesma linha.
Ele quer definir uma regra para o nome para construint. Tá vendo, ó? Uma restrição cujo nome seja valor positivo. Então, como eu falei, né? Definir o nome não é obrigatório, mas aqui no caso ele quer definir o nome para essa regra. Então e o nome vai ser valor positivo. Então qual é a opção correta Aí? Tá aqui, ó. Constraint opção A, valor positivo, is não tem esse is, né, pessoal? Então, a gente já viu aí várias constraints, não tem esse is. Eh, vamos ver outra aqui, ó, lá embaixo. Valor positivo, construint, valor positivo, validate. Validate.
Validate também não é uma constraint. Aqui em cima de novo, ó, validate, corta. E aí nós temos aqui, ó, duas Alternativas que fazem mais sentido. Cheque. Cheque, ó, salário maior, maior que zero e eh S valor positivo. Esse S a gente vê muito em SQL como forma de definir um apelido, né, um nome para alguma coisa. Mas a forma correta aqui de a sintaxe é constraint, o nome da constraint. Então, o primeiro valor aqui tem que ser o nome da construint, que é valor positivo. Então, ó, construint, valor positivo, Cheque. E aí o cheque é
a construente que me permite verificar alguma condição, que no caso, ó, o valor tem que ser positivo e maior que zero. Então, salário, a coluna salário tem que ser maior que zero. OK? Então, alternativa aqui correta aqui é a C, né? Tô definindo uma constraint que se chama valor positivo. Você pode escolher o nome que você quiser e a regra através do cheque. O que que ele vai checar? O que que ele vai verificar? Se o salário É maior que zero. Mais uma questão aqui da FCC de 2022 para o TRT Piauí, para técnico em
TI. Então ela traz aqui uma estrutura de tabela create table e trt funk com o número do número da matrícula, com o nome do funcionário e o telefone. E aqui a definição de uma constraint e a o campo pra gente informar essa constraint. E qual que é a questão? Fala assim, ó. Para criar uma restrição, cujo Nome seja matrícula única, de forma que os campos número de matrícula e número nome funk sejam únicos, a a lacuna um deve ser corretamente preenchida com é que nós vamos preencher isso aí? Ele quer dizer que número matrícula e
nome funcionário sejam únicos. Ele poderia ter colocado aqui na frente, né? Espaço unic. espaço unique, mas não quer colocar depois, sem problema. Vírgula, né? Separou aqui a última coluna e colocou a regra. Então, constraint. Agora aqui em seguida vem o quê? O nome da regra, matrícula única. Então aqui a gente já corta, ó, porque não não vem primeiro o nome da da regra aqui também. Então, ó, matrícula única, constraint, matrícula única. Esse é o nome da regra. Beleza? Aí agora vem a regra em si, que é unique, né? Então, unic e unique, as três opções
eh possíveis. Legal. E aí, como é que eu faço para dizer aqui que essas esses dois campos, Esse e esse, são únicos? Eh, aqui eu tenho a a separado por end, aqui por vírgula e aqui eu definindo o unique duas vezes, né? A resposta correta é AD, tá pessoal? Alternativa D, número matrícula, vírgula, nome e funk, né? E você pode colocar aqui mais colunas que você quer que sejam únicas. Vamos ver agora alguns comandos DML, comandos de Manipulação de dados. Primeiro deles é o select, tá? é o comando que nos permite buscar dados nas tabelas
do banco. E qual que é a sintaxe? Essa aqui, ó. Select. Você vai selecionar as colunas que você quer que sejam retornadas. Então, ó, eu quero selecionar a coluna um e dois. Aqui, no caso, quero selecionar a coluna nome e idade de onde? from clientes da tabela clientes. De novo, eu quero selecionar a as colunas nome e idade da tabela Clientes, tá? Então é select, nome das colunas from nome da tabela. Nós temos o select distinct, que é que permite eh retornar apenas os valores distintos, tá? como o nome já fala aqui, ó, select distinct
cidade from clients, ou seja, é para para selecionar eh todos os registros, né, da tabela clientes, trazendo ali a a coluna cidade. Só quando você usa o distint, você tá dizendo para para não trazer Registros que onde a cidade tá repetida. Então a ideia, ele quer saber quantas cidades ele tem ali cadastrada no todo, tá? Quantas cidades que eu tenho, né? Possivelmente é isso. Quais são as cidades que eu tenho? Então não faz sentido eu trazer a mesma cidade replicada. Vamos supor que eu tenho 100 pessoas cadastradas de cidades diferentes e aí eu quero saber
quais cidades que já foram informadas. Então eu posso usar um distinct, né? Select Distinct cidade. Então, traga para mim as cidades, mas traga eh apenas as cidades e sem se repetir, né? As colunas que são repetidas não traga. Beleza? Então, o distint tem esse comportamento. Nós podemos também na consulta especificar algumas alguns eh alguns filtros, né? algumas condições. Então, aqui, por exemplo, ó, select. Eh, uma opção também é você usar o asterisco. Asterisco é é como se fosse o all, eu chamo de all, né, de todos. Ou Seja, selecione todas as colunas. Se você colocar
dessa forma, ele vai trazer todas as colunas daquela tabela. Então, ó, selecione todas as colunas da tabela customers, onde é onde a coluna country, ou seja, país é igual a México. De novo, selecione todas as colunas da tabela customers, onde eh country é igual a México. Então ele vai selecionar eh os trazendo todas As colunas da tabela customers, eh, que são, ou seja, vai trazer todos os clientes ali que são do país México. Beleza? Então, o e permite que a gente eh defina condições para na consulta, beleza? paraa realização da consulta. E aí nós temos
vários operadores que podem ser utilizados aí na definição eh dessas consultas, como por exemplo o igual, né, que no caso, ó, onde país é Igual a México, mas eu posso ter outras coisas, por exemplo, onde um valor é maior do que tal, ou seja, eu quero buscar todos os funcionários, eh, onde o salário é maior. do que 10.000. Então, select asterisco from funcionários where e salário é maior que 10.000. Então, essa é uma opção. OK? Como assim, professor? Aqui, por exemplo, Ó, é select, traga todas as colunas da tabela eh funcionário where, ou seja, onde
eh vamos supor que eu tenho uma coluna lá chamada salário, onde salário for maior que 10.000. Ponto e vírgula. Lembrando que enquanto você não colocar o ponto e vírgula, ele entende que é um comando só, tá? Então eu colocar na linha de baixo ou na mesma linha não tem Importância. Então o que que eu tô dizendo aqui? Traga para mim todas as colunas da tabela funcionário, né? Aí só que quais registros que ele vai trazer? todo. Se você colocar só até aqui, ele vai trazer todos os registros, todo mundo. Mas quando você coloca uma condição,
aí ele vai começar a filtrar, não vai trazer todo mundo. E qual é a condição aqui? Onde o salário for maior que 10.000 ou então, sei lá, salário Menor que 10.000. Você quer dar um aumento, né, pro funcionário, quer saber qual que estão recebendo menos que 10.000, então menor que. OK. Então, é maior ou igual. E aí vai, a gente tem várias regras que podem ser definidas. Aí outras opções também, ó, é, a gente tem aqui o o di não igual, tá? O igual é o sinal de igual. E o diferente é aqui, caso, ó,
menor menor que maior que, tá? Em algum algumas versões SQL aqui a gente pode encontrar também o exclamação igual. Então ficaria assim, ó, onde o salário é diferente de 10.000 ou então assim diferente, tá? Ou seja, onde o salário não é 10.000. Quero todos os funcionários cujo salário não é 10.000 ou cujo salário é 10.000. Então são algumas condições de Busca. Temos aqui também o between. O between é quando você quer definir um intervalo. Então eu quero e cujo salário esteja ali entre 5.000 e 10.000, por exemplo. Aí você usa o Between, você tem o
like para procurar por um padrão também, para definir um padrão de busca. E o win. O win é quando você especifica e três possibilidades, quatro. Por exemplo, ali naquele exemplo anterior, a Gente tem aqui, ó, onde country é igual a México, ou seja, apenas os clientes do país México. Mas e se eu quisesse trazer do país México, do Brasil e da Argentina? Aí você poderia utilizar o in where country in México, Brasil ou Argentina. Como assim, professor? Essa forma aqui, ó. Quero todos os funcionários cujo eh País tá sem assento, tá, pessoal? In. Aí você
vai colocar aqui, ó, Brasil, Estados Unidos e Argentina. OK? Então, traga todas as colunas da tabela funcionário, mas traga apenas os registros funcionários, onde o país é um desses três, Brasil, Estados Unidos ou Argentina. Como falei, em algumas situações a gente Vai precisar especificar mais do que uma condição. E aí a gente vocês vão ver aí nas questões eh de concurso o uso de de alguns operadores, como por exemplo o e e o e o not. O e é o seguinte, é quando você quer especificar mais de uma condição. Então aqui no caso, ó, selecione
as colunas um e dois da tabela tal, onde tal condição e tal condição são verdadeiras. Aqui no caso, eu tenho três condições, né? Então Ele só vai retornar se as três condições forem verdadeiras, porque o e o nome já fala, né? onde isso e isso for e real, ok? Então você vai usar o end, o e o or é o ou. Então aqui no caso, ó, é onde, isso ou isso, não precisa que as duas duas condições sejam verdadeiras, tá? Vamos ver um exemplo, ó. Então, por exemplo, eu quero os funcionários cujo salário salário seja
maior que 10.000 e ao end e o país seja um desses três. Entenderam? Então aqui a gente mesclou duas condições, dois filtros, né? Quais são? salário maior que 10.000 e país se um desses três. Então aqui nesse caso só será retorn só serão retornados os funcionários eh onde essas duas condições forem verdadeiras, forem satisfeitas. Se o salário receber, se o funcionário receber menos que 10.000 1000 ou for de outro país que não um desses três, ele não será retornado na consulta, na busca, no select. Legal? Mas não, professor, eu gostaria que apenas eh se uma
dessas condições forem verdadeiras, já pode trazer. Aí você vai usar o, que é o, tá? Lembra que a gente tá e a programação é em inglês, né? Então, ó, onde salário for maior que 10.000 ou país for Brasil, Estados Unidos ou Argentina, um e se uma dessas condições forem verdadeiras, aí ele retorna ao funcionário também. É importantíssimo saber isso, tá? Muitas vezes as questões cobram quantos registros que serão retornados e aí você precisa saber dessas regras para ter essa contagem. Você pode achar ainda também o o not, tá? O not é o não, tá? É
a negação. Então, ó, onde essa condição não for verdadeira, então você usa o note, tá? É Uma negação. Outra opção que nós temos é o order buy, que nos permite aí ordenar o resultado, tá? Então, por exemplo, ó, selecione aqui, caso, ó, selecione todas as colunas da tabela customers. e ordene, né? Order by pela coluna eh country de forma decrescente. Que que significa esse isso? eh que ele vai trazer lá pela decrescente, se fosse Número, né, do maior pro menor, vai trazer os números eh os maiores números primeiro e depois os menores. Mas como é
country, né, texto, ele vai buscar, vai trazer primeiro a os países a lá da letra Z, né, da letra Z. e vindo pra letra A. OK? Se for ascendente, aí sim. Aqui, ó, as para ascendente, desque para descendente. Então, aqui no caso de baixo, ó, Selecione todas as colunas da tabela customers e ordene pela coluna country, pela coluna país, né? Country, de forma ascendente, ou seja, do A para o Z, beleza? Do A para o Z. E aí você e aqui no caso você pode ainda ordenar por duas colunas ao mesmo tempo. Então aqui ó,
country de forma acidente, ascendente e o nome do usuário de forma descendente. Então são duas regras de ordenação que vão ser aplicadas em Conjunto. Então galera, é eh parte do estudo aqui vai depender de vocês, né? é estudar mesmo, é olhar, é tentar decorar algumas coisas, tentar praticar algumas coisas. São muitos comandos, mas não é um bicho de sete cabeças, não. E o nome já nos indica, já nos auxilia no que que ele faz. Aqui no caso, order by, ordenar por, então a gente já consegue fazer essa leitura. Então, ó, selecione todas as colunas from
da tabela customers e ordene pela coluna country De forma ascendente. Então você já vai aprender a fazer a leitura dessa forma. De novo, quer ter acesso a esse material, entra no nosso grupo do WhatsApp, link na descrição, e você pode solicitar lá para mim que eu encaminho para vocês. Outro comando muito importante, muito comum, que é o comando para inserir registros na tabela. Como é que eu faço a inserção de registros na tabela? O comando é isso aqui, ó. Insert insert into nome da tabela, as colunas que eu quero preencher e os valores que serão
informados. Então aqui no caso, ó, inserir na tabela customers, eh, na coluna nome, nome, contact, address, c, eh, os valores tais. Então aqui ele referenciou algumas colunas e aqui os valores que vão ser colocados nessas colunas. Como assim, professor? Vamos Lá, então, ó. Vamos supor que eu tenho uma uma coluna, que no caso a gente uma tabela, a gente criou uma tabela chamada cliente. Ó, cliente tem o quê? Tem o ID cliente, nome, CPF e cidade, né? Vou colocar de novo aqui só para ficar mais fácil a gente visualizar, ó. Então, vamos supor que a
gente criou uma tabela, uma tabela chamada produto eh com as colunas ID, quero minúsculo. que vai ser um int eh notar logo primary aqui, tá? Minha chave primária e eu tenho o nome do produto que vai ser um [Música] varr e eu tenho o preço que vai ser um um decimal. com até 10 campos, duas casas decimais. Pronto. Então, ó, aqui eu tô criando uma tabela chamada produto, que vai ter eh uma coluna ID, eu vou chamar de COD, código, tá? COD vai ser o código que vai ser inteiro, vai ser minha chave primária. Eu
tenho também a coluna nome, que vai ser textual. E eu tenho aqui a coluna aqui na coluna nome eu vou pôr a quantidade de caracteres. Pronto, 50 caracteres. E eu tenho o preço, né, Coluna, terceira coluna, preço decimal com até 10 dígitos e duas casas decimais. Beleza? Como é que eu faria para inserir registros dentro dessa tabela? Comando insert in tool. Vou inserir na tabela produto, nas colunas cod. COD é nome e preço. Então aqui na nessa primeira no Primeiro parênteses, você vai colocar os nomes das colunas onde você vai inserir os dados, os valores,
tá? Então aqui, ó, por exemplo, insertube produto, quero inserir na tabela produto, eh, nas colunas cod, nome e preço, os valores, vales. E aí você vai colocar aqui os valores nessa mesma ordem, ó. Qual que é o primeiro o primeiro valor que eu que eu referenciei aqui? O COD, coluna COD, Ela é o quê? é o inteiro. Então tem que pôr um inteiro. Você não vai colocar um um conjunto de caracteres assim, ó, com aspas, né? As aspas que delimitam o conjunto de caracteres. O então aqui no caso é um número, então é o código,
sei lá, o código um, código um, vírgula. Segunda coluna agora nome, qual é o nome do produto? Sei lá, se cada uma caneta. OK. vírgula aí, lembra que o nome, ó, tem que ser entre aspas, tá? E agora o Valor, o valor é um decimal, então qual que é o valor? Qual o valor dessa dessa caneta? Então, sei lá, eh, 4,99. R,99 é o preço dessa caneta. OK? Então isso é o inserto. Eu vou inserir na tabela produto, na coluna COD, nome e preço, os valores tais. Ó, nós vamos testar agora o código que a
Gente acabou de fazer. E aí, se você quiser treinar também em casa, eh, eu recomendo você pesquisar no Google aí, eh, SQL Editor Online, você vai achar alguns. Esse do W3 Schools é bom, tá? W3 schools. Então, vou colocar aqui o código que a gente fez juntos aí, ó. Vamos criar uma tabela chamada produto com as colunas código, nome e preço. Beleza? Vamos Criar então. Run SQL. Eh, ó, mudanças ocorreram no banco. Então, tá aqui, A tabela produta foi produto foi criada, não tem nenhum registro ainda. Vamos inserir um registro aí. Então, como é que
a gente faz? Vamos colocar aquele comando que a gente fez lá. Insert into produto. Vou inserir na tabela produto, nas colunas cod, nome e preço, os valores aí, os valores que eu vou Preencher, né? Então, ó, o primeiro código vai ser um, o segundo vai ser eh o nome, né? Aqui no caso, ó, caneta e o preço é R,99. Legal. Então, vou apagar aqui agora o script de criação da tabela e vou cadastrar aqui a caneta. Então, ó, uma linha afetada. Então, cadastrou. Que que eu fiz agora, pessoal? Eu cadastrei mais dois novos produtos, tá?
Como é que eu faço isso, professor? para cadastrar dois ao mesmo tempo. É insert intu, nome da tabela, as colunas que você quer preencher dentro do parênteses separadas por vírgula e vales. Aí aqui fora que vem a diferença, ó. Ao invés de você colocar logo ponto e vírgula aqui na primeira, no primeiro cadastro, você separa por vírgula e Coloca mais. Então aqui eu tô cadastrando, ó, código 2, caderno 10,99. Fechei o parênteses desse primeiro produto, vírgula e vou informar o segundo agora, né? Eh, aqui nesse comando, né, que é o terceiro produto que eu tô
inserindo. Código três, borracha 6,99. Fiz o cadastro deles lá. Como é que eu faço para verificar agora? Então, ó, vou fazer um select para ver se funcionou. Como é que eu faço para Verificar? Select all from produto, ou seja, selecione todas as colunas da tabela produto. Olha aí, ó, ele retornou. Código um, ó, caneta 499, caderno, borracha, tá? Lembrando que a gente não coloca a assenta o ciddilha no código, beleza? Não é necessário e não é recomendado também. Se Ah, professor, se eu quisesse trazer apenas as colunas nome e e preço, você Vem aqui no
lugar do da do asterisca e coloca nome, selecionar coluna nome e preço da tabela produto. Então, tá aí, ó, coluna nome e preço da tabela produto. Ah, e se eu quiser trazer apenas os produtos, a, o nome e o preço, apenas produtos que custam mais do que R$ 6. Fácil, né? Só você colocar uma condição. Como é que é? Where e preço for maior que se? Então, tá aí, ó. Trouxe apenas os registros onde o preço é maior que seis. Tá aqui a borracha 6,99 e o caderno R$,99. Ah, e se eu quiser ordenar pelo
preço mais barato primeiro e não mais caro, você vem aqui e coloca order by preço de forma eh ascendente, né? Do mais barato para do menor para o Maior. Então tá aí, ó, do menor para o maior. OK? Ó, tô selecionando a coluna nome, preço e preço da tabela produto, onde o preço é maior do que seis. E eu tô pedindo para ordenar pela coluna preço de forma ascendente do menor para o maior. Vamos ver alguns, finalizando a nossa aula e vamos ver alguns últimos comandos DML. Nós temos aqui, ó, a a opção de verificar
é nos comandos e DML se o Campo é nulo ou não, tá? Então você consegue fazer algumas verificações, tipo, do tipo, ó, is ou is not, é nulo ou não é nulo, tá vazio ou não tá? que, por exemplo, ó, selecione o nome do cliente, o contato, o endereço da tabela clientes, né, customers, né, tô traduzindo aqui para vocês, onde o endereço é nulo, ou seja, tá trazendo informações daqueles clientes que não possuem um endereço Cadastrado, onde o endereço is, ou seja, a pessoa não preencheu, tá? Ela não preencheu isso ao cadastrar essa informação, ao
cadastrar aquele registro. Então você pode fazer isso através do SNU. Ah, e se eu quiser verificar apenas os registros eh onde esse campo ele não é nul não é nulo, ou seja, onde ele está preenchido, você coloca where, campo tal is not, ou seja, não é nulo. Então você tá verificando se aquele campo não é Nulo. Outra coisa que a gente consegue fazer é atualizar informações do registro. A, vocês lembram que a gente viu e o outer table, né, que é um comando DDL de definição de dados que serve para alterar a estrutura da tabela,
OK? Mas existe também um comando DML para alterar o registro em si, que é o update, que é esse cara aqui, ó, update. E qual é a sintaxe? Update, nome da tabela. E aí você vai usar o set. 7 sete coluna igual tal. Você pode Especificar mais de uma coisa separando por vírgula, onde a condição é essa. Como assim? Vamos lá. Olha aqui, ó. A gente tem aqueles produtos lá, né? Vamos ver aqui. Aqui, ó. Select all from produto. Vamos ver aqui, ó. Nós temos esses três produtos. caneta, caderno e borracha. Ah, e se eu
quiser alterar o preço da do caderno do caderno para R$,99, não é mais 10, é R$,99. Você pode fazer o seguinte, ó. Primeira coisa, a gente vai ter que buscar esse registro para alguma informação, né, por algum valor. Poderíamos buscar pelo nome, poderíamos, mas a forma mais legal é buscar pela chave primária, que é o código. Qual que é o código do caderno? Dois. Então vamos lá. Então, como é que nós vamos fazer assim, ó? Eh, Update. Qual que é o nome da tabela? Produto. Update. [Música] Produto. S. Vão colocar a coluna preço igual a
15,99, onde é COD, né? onde o código é igual a 2, ou seja, vai pegar o o produto de código dois, né, onde foi igual a 2, onde o código foi igual a 2 e vai atualizar, vai atribuir é preço igual a R$,99 para esse produto. Vamos ver aqui. Diz que deu certo. Vamos testar agora. Vamos rodar um select de novo. Select all from produto. Olha aí, ó o preço do caderno agora. R$,99. O valor dele foi atualizado, tá? Aqui, ó, R$,99. Então, esse é o update, nos permite modificar um registro. Outro outro comando que
nós temos é o delete, que permite e deletar um registro na tabela. O comando é esse aqui, ó, delete from, nome da tabela, onde a condição é tal. Observar que é importante a gente especificar uma condição na hora de deletar um registro, porque se você colocar o comando assim, ó, delete from, nome da tabela e executar, ele vai deletar todos os registros daquela tabela. ele vai limpar ela semelhantemente ao troncate, né, com algumas diferenças aí comportamentais, mas basicamente ele vai Limpar essa tabela, vai apagar todos os registros dessa tabela. Delete from, delete from, nome da
tabela. Então, por isso que a gente tem que colocar uma condição. Então, vamos ver aqui, ó. Por exemplo, se eu quiser deletar a borracha, tá vendo aqui, ó? borracha, né? Qual que é o código dela? Três. Então você pode fazer assim, ó. Delete from produto. Quero deletar da tabela produto Onde COD é igual a 3. Então, o produto cujo código é três, ele vai deletar. Vamos ver se funcionou. Select all from produto. Vou mandar rodar. Tá aí, ó. A borracha foi a foi deletada, né? O registro referente à borracha foi deletado da tabela, pessoal. Então
é isso, tá? A gente poôde ver, aprender hoje aí um pouco sobre os comandos DDL, comandos DML, todos fazendo parte aí da linguagem SQL. E é óbvio que você não vai aprender tudo em uma aula, né? Eu tentei trazer para vocês aqui um pouquinho de cada coisa, mas o SQL é muito mais do que isso, né? O banco de dados é uma área muito aprofundada. Existem pessoas que trabalham só com banco de dados. Então, eh, você jamais vai aprender em uma aula de 1 hora, de 2 horas tudo sobre SQL. Então, isso aqui é Para
dar um norte para você, eh, para você estudar. Então, continua estudando. Qualquer dúvida você pode deixar o comentário, tá? Então, utiliza os comentários do YouTube aí para tirar dúvida. Se você quer eh ter um contato mais próximo comigo para tirar dúvida também, você pode acessar o nosso grupo no WhatsApp aí, link na descrição, OK? E lá também você pode pedir esse material impresso. Então eu recomendo que vocês Eh entre no grupo, esteja junto conosco nesse estudo e na preparação. E vamos responder muita questão, pessoal. Respondendo muita questão de concurso. Você vai aprender o que que
cai, como que cai, qualquer dúvida. é só compartilhar com a gente, ok? Então, por hoje é só. Grande abraço e até mais. E aí, pessoal, beleza? Aqui é o professor Arnaldo e hoje a gente vai responder uma questão que eu deixei lá na comunidade do nosso canal, canal Arnaldo Júnior, e vocês responderam, pessoal aí inscrito respondeu eh essa questão e a alternativa mais escolhida foi a terceira opção. A gente vai aqui resolver essa questão juntamente. Então vamos lá. Eu deixei aqui um script, né, paraa criação de uma tabela. create table, nome da tabela, cargo. E
os campos foram o esses aqui, né? ID cargo, nome, salário, definindo a chave primária aqui Como sendo o ID cargo. Então você pode selecionar aí esse script, ó, já para te auxiliar, dá um conttrl C nele. Eu recomendo você, se você já tiver um banco de dados instalado, legal, você treina no seu, mas se você não não quer instalar, quer só treinar os comandos, você pode utilizar um editor online. Então você pesquisa aí. Eu tô aqui no editor online, coloca assim SQL online editor no Google vai te aparecer várias opções, você escolhe um e treina.
Vou Usar esse aqui do W3 Schools. E aí vou jogar aqui o meu código, ó. Então eu tenho aqui o código contendo algumas coisas, né? Então só para exemplificar aqui para vocês, eu tenho essa estrutura. Vou criar uma tabela chamada cargo e eu tenho aqui os campos ID cargo, que vai ser minha chave primária. Esse ID cargo é do tipo inteiro, não pode ser nulo e é Autoincremental. Tenho aqui a coluna nome do tipo vará, ou seja, é textual, né? Um conjunto de caracteres de até 255 posições também não pode ser nulo. O salário decimal
tem até 10 campos e mais dois campos decimais, né? Também não pode ser nulos. E a chave primária é o ID cargo. Então você pode aí rodar o comando. Aqui ocorreu um erro no editor por conta do auto increment. A ideia do auto increment aqui é fazer com que o Banco eh cuide da parte incremental, ele adicione, incremente ali o valor da chave primária, né? Então a gente não tem que se preocupar com isso. Lembrando que o auto increment ele é utilizado para no em bancos MySQL, OK? Se a questão do concurso esver tratando de
um banco post gre SQL, isso aqui não vai funcionar. Você vai ter que trabalhar com uma sequence, algo nesse sentido. Mas aqui tá tá dando erro no no editor Online. A gente vai só tirar ele daqui e a gente coloca esse ID de forma manual mesmo. Beleza? Então manda rodar. Pronto, ó, você fez mudanças no banco de dados. Show de bola. Agora vamos inserir algumas algumas coisas aí. Então, ó, como é que eu faço para inserir dados na tabela cargo? Então, vamos lá. Eh, eu vou colocar aqui mais perto pra gente visualizar. Então, ficaria assim,
ó. Insert Into é tabela cargo nas colunas ID, cargo, nome e salário. Values, os valores tais e tais. Show. Aí você vai colocar, né? Você tá falando, você quer inserir na nas colunas ID, cargo, nome, salário, os valores que a gente vai colocar aqui nesse Parênteses. Já que a gente vai inserir todos os valores, você pode omitir isso aqui, tá? Você pode, essa primeira coluna aqui é quando você quer especificar quais, esse primeiro parêntese, você quer especificar quais colunas você quer preencher. Como a gente vai preencher todas, você pode omitir. Então, o primeiro é o
valor. Então, vou falar que o que o primeiro ID cargo é o Um. Show de bola. Aí agora vou pro nome. Nome é um é um vará, então aspas. E aí eu vou colocar o primeiro cargo. Eh, o que que a gente pediu lá na na questão? Programador e DBA. Então, vou cadastrar aqui o DBA. DBA. Legal. E o salário, sei lá, o DBA ganha R$ 10.000. Beleza? A gente pode inserir mais do que um valor ao mesmo tempo. Show. É só você Separar por vírgula, ó. Separa por vírgula e coloca mais um parênteses aí,
ó. Aí, ó. O [Música] segundo é o programador, não é isso que eu pedi lá? Programador. Isso. Programador. Legal. Programador ganha 12.000. E vou colocar aqui um um terceiro que é O eh testador testador do dos programas. Então esse ganha R$ 8.000. Legal. Isso aqui é o suficiente. Eu tenho três opções. Vamos, vamos ver aqui no no editor. Os editores, esses editores onlines têm algumas peculiaridades, tá pessoal? A melhor forma de você treinar é no banco mesmo. Só que não eu tenho Aqui, mas no banco fica com a com a fonte muito pequena, ruim para
vocês visualizarem. Ah, mas eu Deixa eu ver se se eu só selecionando aqui ele executa só essa parte. Não, não, não executa. Então eu tenho que tirar isso aqui, ó, sem problemas, tá? Então, vou inserir na tabela cargo esses valores, tá? Aqui, ó. Você fez mudanças, três linhas afetadas. Então, funcionou. Bacana. A gente inseriu na tabela cargo três registros. Agora vamos selecionar tudo dessa tabela cargo para visualizar. Select all. Vou selecionar todas as colunas. from cargo, só para ver o que que tem lá. Tá aí, ó, dba programador e testador. Legal. Vamos pra questão. Que
que a questão tá trazendo, ó? Selecionar qual comando DML retorna às informações dos cargos cujo nome é DBA Ou programador. Então, só quero saber disso, as informações do DBA e do programador. Então, select all from cargo where. E aí, vamos lá, tem temos algumas alternativas, pessoal. Uma das formas, temos várias formas de se fazer. Uma das formas é exatamente essa que vocês mais marcaram aí, que é representando 85% do do que vocês responderam, tá? Tivemos aqui 46 votos, que é justamente aqui utilizando ou, Né? Então, por exemplo, ó, ah, o que que a gente tá
considerando aqui? O nome, tá? coluna nome tem como aquele quer saber onde o nome é igual a DBA ou programador. Então ficaria algo assim, ó. Select all from cargo where nome é igual a DBA ou você vai usar o war, né? coluna nome é igual A programador. Show. Então, selecione tudo, todas as colunas da tabela cargo, onde o nome é igual a DBA ou o nome é igual a programador. Se for igual a DBA, ele traz. Se for igual a programador, ele traz. Se não for igual a nenhum dos dois, ele não traz. Então, ó,
rodou. Tá aí todas as informações acerca do DBA e do programador. Legal. Uma outra alternativa, eu eu até coloquei aí nos Comentários que essa essa questão ela propositalmente coloquei aqui duas alternativas corretas, tá? A última alternativa também está correta. Quem acertou ela aí, quem marcou ela utilizando o win, né? O win é outra possibilidade que nós temos, ficaria dessa forma. Então, selecione tudo de cargo onde nome in, ou seja, onde o nome, onde a coluna nome está entre uma das especificadas a seguir, DBA ou eh programador. OK? Então, ó, se a coluna nome for uma
dessas, DBA, o programador vai vir, está dentro desses valores, né? Está em. Então essa é outra alternativa. Tá aí, ó. Ué, mas será que mudou mesmo? Vamos colocar aqui testador, né? Testador ou programador. Tá aqui. Programador, testador. Ele trouxe. Show de bola. Então você pode Também utilizar aí o o in legal o in. Você pode especificar quantas colunas você quiser aqui, quantos valores você quiser dentro do parênteses, separando-os por vírgula. O é mais uma alternativa. Outras consultas que poderíamos fazer aqui é do tipo, eh, quero saber quem quero trazer todos, mas eu quero ordenar pelo
maior salário. A gente pode fazer assim também, né? Ó, select all from cargo. Order buy, quero que Ordene eh pela coluna. salário de forma eh decrescente, né? ou seja, do maior para o menor. Então, selecione todos os registros do cargo de cargo e ordene pela coluna salário de forma decrescente. Então, com isso, nós temos aqui, ó, que ganha mais é o programador, depois o DBA e depois o testador. Se você colocar ascendente, ask, você tem do menor para o Maior. OK? Então essa é uma possibilidade também. Vamos dar uma olhada aqui na nossa tabela de
registros retornados. Nós temos aqui, ó, alguns valores. E se eu quisesse buscar, eh, por exemplo, pelos nomes de cargos que começam com a letra T, como é que eu faria? Bem, para fazer isso, você vai ter que utilizar aí o like, né? Então, where, onde a coluna nome like é do tipo, né? É do tipo, eh, não preciso de parênteses. Aí Você vai colocar aspas, né? é do tipo começa com a letra T e aí depois eu tenho N zero ou vários caracteres. Quando você coloca porcentagem representa 0, 1 ou múltiplos caracteres. Não dá para,
você não tá dizendo, eu posso ter aqui depois do T vai começar com T. A palavra que eu quero tem que começar com T. E depois eu posso ter nenhum ou vários caracteres, tá? Aí você vai usar a porcentagem. Se você quiser dizer que Tem apenas um caracter depois do T, você vai usar o underline. Legal. Então, underline para representar um caracter para representar 0 ou vários porcentagem. Então aqui, ó, vou mandar rodar. Selecione é da tabela cargo, onde a coluna começa com a letra T e termina com qualquer coisa. E aí ele trouxe para
mim o testador. Se eu colocar D de DBA, ele vai trazer o DBA. Aí se eu quiser que o que os que terminam com R, então, ó, começa com alguma coisa, zero ou vários caracteres aqui, mas no final tem que ter um R, né, que poderia ser o programador ou testador. Aí, ó, terminou com R. Programor, testador. Bacana. E se eu falar, não, eu quero que o segundo caracter, eu quero que tenha apenas três caracteres e o segundo caracter que ser o B, então para trazer O DBA. Então, poderia fazer assim, ó. Então, eu tenho
um caracter inicial, exatamente um, tá? Não sei qual é, não tô dizendo. E aí o segundo caracter tem que ser o B. E depois eu tenho que ter mais um caracter que eu não sei qual é, mas eu tô falando que o segundo caracter tem que ser um B e ao todo tem que existir apenas três caracteres. Aqui é para trazer o DBA, né? Então, ó, vou rodar, tá? Aí, DBA, OK? Se eh eu colocar a porcentagem também vai funcionar, né? Aqui, né? Porque eu tô falando, ó, eu quero que o segundo, eu tenho um
carácter inicial que eu não tô dizendo qual é. O segundo tem que ser um B e depois eu posso ter zero ou vários. Então aqui entraria também, né? Funciona também. Bacana, pessoal. Então, só a título de esclarecimento aí para vocês de Compreensão. Show. questãozinha aí para ajudar vocês na preparação. Eh, continuem firme, vão, aproveitem o tempo que vocês têm ao máximo, sem desculpas. Estude onde onde você puder. Ah, tem criança, tem bagunça no trabalho, sobrou 5 minutos, aproveita esse tema. Qualquer dúvida pode deixar um comentário aí. Grande abraço e até mais. E aí, pessoal, beleza?
Aqui é o professor Arnaldo e hoje a gente vai responder essa questão da CESGran Rio de 2022 para a Eletrobras, cargo analista de sistemas. Ela faz, diz o seguinte, a questão: O controle diário da utilização de pastas de metrô em uma cidade é feito por programas que utilizam um banco de dados composto pelas seguintes tabelas. Então nós temos aqui as tabelas, tabela passe, tabela regia. Antes de falar um pouco mais dessas tabelas, vamos entender aqui o resto do enunciado. Ó, a tabela passe contém uma linha para cada passe vendido pela Empresa que administra o metrô.
A data coluna e a coluna data expedição, né, ESP, informa a data de emissão do passe e a coluna num viagens informa o número de viagens em que o passe poderá ser utilizado. Então, bacana. A gente tem aqui o N, número de o número de identificação do passe, né? a data de expedição e em quantas vezes o passo poderá ser utilizado, que é o nome viagens. OK? A segunda tabela é regia. Ela contém uma linha para cada Viagem que o passe em que o passe foi utilizado. A coluna num roleta informa a roleta na qual
o passe foi inserido e a coluna data viagem informa a data em que o usuário inseriu o passe na roleta. OK? Então o que que nós temos aqui? Eh, nós temos aqui a tabela passe, que como falo o enunciado, para cada passe que for vendido, vai ser gerado, vai ser cadastrado um registro na tabela passe, né? E cada passe, por sua vez, vai ter um Número de identificação, que aqui no caso, ó, é minha chave primária, ó, primary key num, ou seja, coluna num é a nossa chave primária. Chave primária é aquele valor que identifica
um registro dos demais, que diferencia ele dos demais. A chave primária, ela é única, não pode se repetir, é exclusiva, OK? Então, por exemplo, numa tabela eh paciente, eu poderia ter, por exemplo, uma coluna CPF sendo a minha chave primária. Esse é um exemplo, né? É um Valor que não se repete, tá? Aqui no caso, tá usando uma coluna chamada num, que é para armazenar o número do passe, OK? Eu tenho a data de expedição do passe e tenho aqui eh o número de viagens, né? a quantidade máxima que a pessoa vai poder eh usar
aquele passe em viagens. Então, a gente observa que a tabela passe ela se relaciona com a tabela regia, registro de viagem. O que que eu vou ter na tabela registro de viagem? Para cada viagem que eu realizar Com um passe, eu vou ter um registro diferente. Então eu fui para um ponto A com aquele passe, passei na roleta, então pro ponto A, na data tal, no número de roleta tal, eu fiz uma viagem. E aqui eu tenho a coluna num. A coluna Num é que é uma chave estrangeira. Olha só, foreign key, chave estrangeira, coluna
num, que referencia a tabela passe na na coluna num da tabela passe. Ou seja, aqui, ó, a coluna num na tabela regia referencia a coluna num tabela Passe. Logo, aqui, num é uma chave estrangeira que aponta pra chave primária da tabela passe. Então, por exemplo, se eu tenho um passe com o número é 100, o número do meu passe é 100. Ele eu consigo fazer três viagens com esse passe. Então, eu vou ter um registro na tabela passe com as informações desse passe. Então, número 100, a data Y e consigo fazer três viagens com esse
passe, OK? lá. Se eu quando eu fizer a minha Primeira viagem, eu passar numa roleta com esse passe, vai ser registrado lá na tabela regia, vai ser inserido na tabela regia um registro com as informações dessa viagem que vai ter o quê? O número do passe, ou seja, o número 100 vai ser colocado aqui, tá? Na na tabela registro de viagem. Então, ó, eu fiz uma uma viagem com esse passe número 100 e passei na roleta eh a no dia tal. Aí no outro dia eu fiz uma segunda viagem com Esse mesmo passe e vai
ser inserido um novo registro na tabela regia. Então, eh, eu fui pra roleta, eu passei na roleta B, dia Y, e o número que vai ser registrado, o N, vai ser o N lá da tabela passe, ou seja, o 100 de novo, né? Então, eu consigo logo a gente tem aqui um relacionamento eh muitos para um ou um para muitos, depende da perspectiva, né? Então, eu tenho um passe para muitas viagens, OK? Então, um passe ele pode ter relação com vários Registros de viagem e uma viagem sempre vai ter relação com um registro de passe
só. Então, o relacionamento um para N, o que que a gente faz? Cria uma coluna chave estrangeira na tabela N. Então, aqui, ó, a N é aquela que você pode ter vários registros. Então, ó, eu não vou ter vários registros de viagem para um passe. Então, é aqui que eu vou criar uma coluna apontando pra chave primária da tabela passe, que é num, OK? Então, vamos analisar as Alternativas. A questão quer saber qual comando SQL não vai produzir um erro em tempo de execução, independentemente dos dados existentes nas duas tabelas que fazem parte do banco.
Vamos analisar a alternativa A. Inserte em to regiagem, ou seja, no registro de viagem, os valores 777 620 e uma data aqui, né? Formato de data. OK. Eh, vamos dar uma analisada na tabela registro de viagem. Olha aqui em cima, Ó. Eu tenho, beleza? Quando a pessoa coloca, quando a gente coloca assim, certin no nome da tabela e não coloca entre colchetes, eh, entre eh parênteses, quais colunas você quer preencher? Eh, significa dizer que você vai preencher todas as colunas. Então, aqui, no caso, eu tenho três colunas, num roleta e data viagem. Então, eu tenho
que passar três informações. Tem três informações aqui, tem, correto? E tem que ser na mesma ordem. A primeira Informação é o é o número da viagem, né? Tá aqui. A segunda, número da roleta, tá aqui 720. E a terceira é a data. Tá aqui no formato de data, correto? OK? Qual é o erro que a gente pode ter nessa nessa alternativa, pessoal? Que aqui tá falando o seguinte, ó, que vai produzir erro eh independentemente dos dados, né? Que não vai produzir, ou seja, as outras vão produzir. Então, qual é o erro dessa questão aqui? Porque
aqui justamente vai Depender dos dados que estiverem eh nas tabelas, porque o num que é a primeira informação, não é o o número do passe, não é uma chave estrangeira. Então, a ideia da chave estrangeira é apontar para uma chave primária que identifica o passe. Ou seja, para que isso aqui funcione, eh, lá na tabela passe, eu vou ter que ter um passe cadastrado com o número 777. Se eu não tiver um passe lá na tabela, Eh, um registro, né, um passe cadastrado com esse número, vai dar um erro de referenciamento aqui. Então, o sistema
ele busca garantir a questão da integridade referencial. Ele não vai permitir que se delete um registro eh que tá sendo apontado por outro registro. Então, se eu tenho passe que tá sendo, que eu tenho viagens que fazem referência a ele, eu não posso deletar esse cara. E da mesma forma eu não posso Cadastrar um eh uma chave estrangeira, vou registrar uma uma viagem, vou falar: "Ó, essa viagem foi usada com o passe 777", mas eu vou lá na tabela passe e não tenho esse passe cadastrado, então isso não pode acontecer. Então, o que que a
questão tá perguntando, ó, que é de não vai produzir erro independentemente da da do conteúdo, dos dados das duas tabelas. E aqui depende sim, se tiver a um passe 777 lá cadastrado vai Funcionar, mas se não tiver não vai funcionar. Então essa alternativa ela depende dos dados cadastrados, OK? A segunda alternativa traz o seguinte, ó, uma atualização da tabela. atualizar a tabela passe e vai colocar o quê? O número igual a 888, onde o número é igual a 444. Vamos pegar o mesmo exemplo. Eu tenho o passe 777, tá cadastrado, só que eu já tenho
registros de viagem com esse passe, sei lá, três registros. Esse passo foi usado três Vezes. Eu não posso, o banco não, por conta da integridade referencial, ele não vai me permitir que eu vá lá nesse passe e mude o número dele. Por quê? Porque aquele número, aquela chave primária, ela tá sendo apontada por outros registros e de outra tabela, mas às vezes pode ser da mesma tabela também. O importante é que ele ele tá sendo apontado por alguém, tá sendo referenciado, então você não pode alterar. Então aqui Novamente se o o aqui no caso é
o passe 888, se esse passe estiver sendo referenciado, você não vai conseguir eh atualizar, ele vai gerar um erro. Então essa questão também tá errada, tá? Imagina o seguinte, um outro exemplo, caso você não tenha compreendido ainda, você tem uma um empréstimo no banco, tá lá um contrato no seu CPF, seu nome, o seu CPF. Vamos supor que o CPF é o é o seu registro, é o número de identificação, OK? Ah, aí você tem um Empréstimo lá com as parcelas, OK? Aí vamos supor que que alguém lá do banco de dados, pessoa a uma
pessoa má com má influência, má intenção, ela vai lá e e de dentro do banco, ela ela muda os o o seu CPF, né? Muda o que tá lá. Então, eh, o que que vai acontecer? aquela aquele aquelas parcelas, aqueles contratos do empréstimo que tava vinculado ao seu CPF vai apontar para outro para outra pessoa. Então, eh Quando a chave primária já está sendo referenciada, você não pode mudá-la. Isso é por conta da integridade referencial do do SGBD. Então, questão B também depende dos dados. Questão C, eh, delete from ha viagem, onde a data viagem
tem a coluna data viagem, tem aqui, ó, data viagem foi igual a tal, né? Olha, aparentemente não tem nada de de errado, né? Deletar a tabela viagem, o registro onde a data da viagem é igual a isso aqui. Se ele achar Um registro, ele vai deletar. Se ele não achar, não vai surtir efeito nenhum. Mas também não vai gerar um erro, né? Ele quer saber o que não vai gerar um erro. Isso aqui não vai gerar um erro. Então vamos deixar aqui de standby. Vamos analisar as outras questões. A alternativa D. Insert passe. Aqui, ó.
Aqui eu tô informando. Eu quero inserir na tabela passe nas colunas num viagens e num Tenho elas lá. Tenho num e num viagens. Eh, os valores é 10 para número de viagens e num para passe, não é? Eh, vamos analisar que que a gente o que que poderia dar errado aqui, né? Se eu fosse inserir um registro com número de viagens 10 e passe e o número do passe 999. O único problema que eu tenho aqui É o seguinte, pessoal. Eu tenho três colunas e as três são do tipo not. O que significa not? Não
podem ser nulas. Então, todo o registro que eu for cadastrar, ó, aqui tá falando, ó, que é o Não pode ser nulo, a data de expedição não pode ser nula e o número de viagens também não pode ser nulo, né? Então, tá faltando informar o que aqui a data da expedição ou data ESP, né? Aqui, ó, not. E aqui nesse caso ele tá tentando, ele não tá Inserindo a data, então não vai conseguir cadastrar, vai dar um erro por conta disso. Eh, existe uma um campo que não pode, uma coluna que não pode ser nula,
que não tá sendo preenchida, então vai dar erro também. A última alternativa, deletar da tabela passe, né? Delete from passe, onde a data spar é igual a tal, né? onde a data de expiração, de expedição, não sei, foi igual a essa data. Qual é o erro dessa questão? Ó, a coluna que ele Tá referenciando aqui, ó. Data spar. Vamos lá na tabela passe. Eu tenho aqui a coluna data esp. Eu não tenho coluna data spir, ou seja, é uma coluna que nem existe. Então isso aqui vai gerar erro também, né? uma coluna que nem existe.
A única alternativa razoável aqui é a C. Então essa é a resposta. OK, pessoal? Qualquer dúvida pode deixar um comentário aí que eu auxilio vocês e bons estudos. Grande abraço. E aí, Pessoal, beleza? Aqui é o professor Arnaldo, professor de informática do Instituto Federal de Tocantins. E hoje a gente vai falar sobre a linguagem de programação JAB, conteúdo muito frequente aí em concursos públicos. E antes da gente resolver questões sobre esse assunto, a gente vai compreender os conceitos básicos dessa linguagem. Então vamos nessa. Primeira característica que nós temos aqui da linguagem é que Java é
uma linguagem Orientada a objetos. Quem tá fazendo parte aí do nosso grupo lá no WhatsApp eh de informática para concursos de informática, quem deseja estudar informática para concurso de informática, pode aí através do link na descrição ou nos comentários ingressar no nosso grupo. Lá eu já avisei a o aos estudantes que é primordial que antes da gente estudar Java, a gente entenda os conceitos relacionados à orientação a a objetos, paradigma de Orientação objetos, tá? Inclusive tem uma aula aí na descrição só sobre esse tema. Então, a orientação objetos, ela nos nos diz que eh o
os elementos que estão sendo ali representados acerca do sistema que a gente vai desenvolver ou vai representar, eles são tratados como classes, são representados através de classe. Então, por exemplo, se eu tenho um sistema que tenha um cadastro de pessoas ou de clientes, então eu posso, eu vou ter provavelmente ali uma classe Representando as características do cliente. Então, o que que o cliente tem em comum? Tem o nome, tem o CPF, tem outras informações. E o que que o cliente pode fazer no sistema? Ah, pode e fazer login, pode fazer e n funções, né? Então,
isso são os métodos. Então, nas classes, a gente tem propriedades e tem métodos. Propriedades descrevem características eh de elementos dessa classe, tá? E os métodos descrevem aquilo que esses Elementos podem fazer. Beleza? Para uma compreensão mais aprofundada sobre esse tema, link na descrição aí. Então, primeira coisa que a gente tem que entender que Java é uma linguagem orientada a objetos. Outra coisa, Java eh não possui ponteiros, tá? Não permite a manipulação direta de endereço de memória, como ocorre em outras linguagens, como C, por exemplo, tá? Então, segundo ponto, não possui ponteiros, não permite a Manipulação
direta de endereço de memória. Java também possui um mecanismo que é para gerenciar a memória, que é o garbage collector, tá? Traduzido aqui, é o coletor de lixo, beleza? é um mecanismo que vai ali eh liberar eh ou desalocar espaços de memória de acordo eh com o funcionamento do sistema, com o os fatores que que ele leva em consideração, tá? Então o garbage, você pode encontrar isso num Concurso em inglês ou em port traduzido, tá? em inglês é garbage collector. É o mecanismo que vai limpar aqueles dados que estão há mais tempo na memória, que
não estão sendo utilizados. Então é o mecanismo de gerenciamento de memória. Quarto ponto, Java também possibilita trabalhar com multitading. Multitading é e normalmente a gente tem uns nos sistemas eh principalmente nos sistemas síncronos, a gente tem uma uma Comunicação com uma linha de execução só. Beleza? Então o cliente ele faz uma requisição pro servidor, o servidor processa, busca um dado, alguma coisa e retorna isso, isso tudo de forma síncrona, tá? numa linha de execução, numa thread, uma uma trad de execução. O multitreading ele é permite através da linguagem de Java a gente trabalhar de forma
assíncrona, em que você um um elemento, um participante do sistema, É um participante A do sistema, ele pode enviar uma requisição e ele pode e efetuar outras operações sem ter que ficar ali esperando uma resposta daquela requisição que ele fez. Legal? Então ele permite essa comunicação assíncrona. que através de multitreadings, várias múltiplas linhas de execução simultâneas. Beleza? É outra característica da linguagem Java. É independente de plataforma, claro, porque a linguagem de Programação a gente vai codificar eh em linguagem Java. E aí você através de um compilador, é o Javac, tá? que é o compilador Java,
ele vai eh compilar esse código para uma versão intermediária, tá? Java é uma linguagem compilada, então ele vai compilar isso para uma um formato intermediário que é chamado de byte codes, OK? E aí depois eh vai ser feita a leitura, Interpretação dessa desse código compilado, tá? Então, a gente tem um arquivo Java, ele vai ser compilado, vai gerar uma linguagem intermediária e essa essa esse formato intermediário vai ser lido eh executando o que foi definido no sistema. E por conta disso ele é independente de plataforma. Então, tem o Java instalado, ele vai funcionar. Pode ser
então eh um sistema Windows, Linux, eh iOS, qualquer Outro sistema, ele é independente de plataforma. O Java possui também o mecanismo conhecido como o Java Virtual Machine, máquina virtual Java, que é o cara responsável pela interpretação dos byte codes que eu falei acima, tá? Então, quando você vai instalar o Java, você tem que instalar o compilador Java. E também você tem a máquina virtual Java para fazer a interpretação do código compilado. E Java também Permite o tratamento de exceções. Como que se dá o processo de compilação e interpretação na linguagem Java? Vamos entender alguns conceitos.
Nós temos, primeiramente, a execução. O que que é execução? Eh, na execução, a a máquina virtual Java, ela vai interpretar o programa em tempo de execução. Ela vai pegar o arquivo poncass, os byte codes, e vai fazer a leitura, a interpretação daquele código executando que foi definido no Programa, tá? Então, isso ocorre em tempo de execução. O que que é tempo de execução? é o período em que um programa permanece em execução. Quando você manda através de um comando executar um programa X, Java, ele vai eh iniciar ali o período de execução e vai encerrar
de acordo com o que foi definido no código fonte, tá? Tem alguns fatores que podem aí eh levar ao encerramento. Pode ser um código que começa e termina, tem um um Final definido ali e pode ser um outro que vai ficar em execução ao longo do tempo. Então esse enquanto ele tá em execução, a gente chama isso de tempo de execução. Tempo de compilação é o período em que o código é compilado para gerar o programa. Legal. Como eu falei, a gente tem inicialmente o código feito na linguagem Java. Ele vai ser compilado através do
compilador de Java. E esse tempo de compilação, esse período é conhecido Como tempo de compilação. Compreendendo melhor esse processo de compilação e interpretação, nós temos aqui um um fluxograma, digamos assim, uma representação de todo o processo. Nós temos aqui um arquivo teste. Java, que é o o código fonte escrito em Java. Ele passa por pelo compilador Java. Javac e o qual gera um código intermediário com a extensão ponto class. Tá? Então, lembre-se de lembre-se disso. A a linguagem Intermediária que é gerada depois da compilação no Java, ela tem extensão ponto class, que são os byte
codes. Então, ele gera um arquivo de mesmo nome, só que com a extensão ponclass. Depois, ao ser executado, esse arquivo, ele é passado para o a máquina virtual Java, que vai eh tem ali três componentes, né? o class loader que vai carregar dinamicamente as classes. A gente tem também eh a ação do verificador de byte code, que vai Garantir que que o que o código ele está adequado para ser executado e não vai gerar nenhum tipo de quebra na no interpretador, nenhum problema. E temos também eh a ação do compilador Justime, tá? O o git
ali é Justime Compiler, que é responsável por otimizar a execução, a performance de aplicações baseadas em Java. E aí ele vai gerar o código eh na linguagem nativa do sistema operacional Como resultado ali para o cliente. Qual é a sintaxe de um programa escrito em Jada? Todo programa ele deve ter um nome de classe igual ao nome do arquivo. Então, ó, aqui embaixo nós temos uma classe chamada main, essa que tá aqui em azul claro. Então, ó, public class, tá? Ah, como é que a gente define uma classe? a gente vai usar a palavra chave
class, você tem o nome da classe. Lembrando que e normalmente ele por Padrão ele começa com a primeira letra em maiúsculo, tá? Então aqui main é o nome da classe e o nome do arquivo também vai se chamar main.jjava. Esse public diz respeito à visibilidade dessa classe, tá? Então, aqui é uma classe pública, ela pode ser acessada de eh de fora de outros contextos eh e não somente de dentro da própria classe, tá? Então, a classe pública e o nome da classe é main. E aqui as chaves delimitam o início e o Fim da classe,
OK? Dentro da classe nós temos o método main. O método main, ele tá aqui delimitado em laranja, tá? E nós temos aqui as palavraschaves public static void main. O void nos diz que esse método ele não retorna a nada, é um método, tá? E o método, professor, o que que é o método? O método é muito semelhante às funções em JavaScript, por exemplo, tá? Em alguns em alguns Quesitos. Como por exemplo, eh, uma função ou método tem ali um bloco de código que vai ser executado quando esse método for invocado, tá? Então, o método ele
não vai ser executado de forma automática, com algumas exceções, tá? Mas de forma geral, ele precisa ser invocado para ser executado, assim como a função. Então, dentro dele você tem código que vai ser executado quando ele for chamado. Aqui no caso, o nome do método é o main, tá? É esse último nome aqui antes dos parênteses. Então, main, ele é void, ou seja, ele não retorna nada. Se você olhar aqui dentro, ele só imprime através do system out print ln a string hello world, tá? Ele imprime uma um texto, ele vai exibir um texto e
eh no log do sistema, tá? Então ele não retorna nada. Então por isso que a gente tem aqui o void e ele é um método é público também e estático, tá? Aqui entre parênteses a gente tem os Argumentos que são os parâmetros que são passados para o método quando da execução dele. Então aqui tá falando que esse método pode receber eh vários eh várias strings, tá? Que vão chegar aqui através da palavra-chave args, OK? Representando os argumentos. Então, ó, a classe é main e tem um método, como eu falei, todo programa Java tem que ter
um método principal chamado main, que é a que vai eh inicializar a execução do programa. É a partir dele que a execução Do programa começa, tá? Esse é executado eh de forma automática. Bacana? Esse é é um é uma exceção, assim como os métodos construtores. Momento oportuno a gente vai falar sobre isso. Bacana, pessoal. Então, lembre-se disso. Tem que ter o método main. Comentários. Como é que a gente faz para definir comentários em Java? Pode parecer uma coisa simples, mas já vi eh algumas Questões em concurso cobrando isso. Como é que se faz o comentário
na linguagem X ou Y? Então, só a a fins de para fins de conhecimento. Para você comentar uma única linha, você usa o barra barra. Para você comentar e mais de uma linha, você quer comentar um bloco de código ou de texto, quer fazer uma documentação, algo assim, você pode usar aqui o barra asterisco no começo e no final asterisco barra. Beleza? Então, aqui embaixo, ó, a gente tem eh todo esse código comentado Que tá aqui em verde. Variáveis, um assunto muito importante, eh, que vai nos nos capacitar a trabalhar com a linguagem e armazenar
dados. Ó, uma variável é um espaço em memória para armazenar valores. Então, primeiramente, a gente tem que saber isso. O que que é uma variável? é um espaço na memória para você armazenar um valor, um dado que vai ser utilizado possivelmente é posteriormente, né, em outro, é, logo em Seguida. E aí nós temos dados primitivos e não primitivos. O que são os dados primitivos? São tipos de dados que e já estão definidos na linguagem por padrão pra gente utilizar. Então, nós temos alguns tipos aqui, o int que é para trabalhar com números inteiros, sem casa
decimal. A gente tem o o float, que é para trabalhar com números com casas decimais, pontos flutuantes, né? o double, que também é igual, é semelhante ao float, só que ele Tem uma capacidade maior de armazenamento. O quanto que você vai conseguir armazenar de dado na variável com com cada um desses tipos aqui na coluna direita, eh, eu já tenho os valores, tá? Isso aqui é um quadro que eu peguei lá da do site W3 Schools. Você mesmo pode ir lá e pode dar uma conferida. Então, ó, por exemplo, o int ele permite um armazenamento
de até 4 bytes é na memória, tá? O float 4 também, o double É oito. Então, para números muito grandes que não são comportados aí, que não cabem em um float, você pode usar o double. Ó o boleano que interessante, tá? O boleano é um boleano, né? aquele verdadeiro ou falso. Ele só permite dois tipos de valores, verdadeiro ou falso. Como só permite esses dois valores, ele usa um um bit. E aí você pode usar o zero ou um. Pronto. OK? Então ele não precisa mais do que um bit para indicar se é sim ou
Não. E a gente tem outros também, tá pessoal? Aqui vocês podem consultar, podem também ir lá no na na no próprio site da linguagem Java, na documentação e olhar eh mais especificamente os todos os tipos disponíveis. Tipos não primitivos de variáveis, ó, são os chamados tipos de referência. E por que que eles têm esse nome? Porque eles se referem objetos. Como assim? Ó, nós vamos ver Aqui embaixo que tipos eh não primitivos, nós temos aqui uma string. E aí você vai observar que a a string ela permite armazenar texto, tá? Mas você vai observar que
ela a o S é maiúsculo, tá? Isso aqui é do jeito que é escrito mesmo. O S é maiúsculo porque isso aqui é uma classe. Então, se você observar os tipos primitivos, eles são escritos aqui, ó, com letras eh tudo minúsculo, tá? A primeira letra minúscula Também. As classes elas são eh elas possuem a primeira letra maiúscula. Então, uma string é uma classe, mas é uma classe que ela já vem na linguagem, já vem pronta pra gente utilizar, tá? e ela serve para você armazenar textos maiores. Então, se você, por exemplo, vai fazer um formulário
em que o usuário tem que digitar eh o nome completo dele, por exemplo, você vai ler aquilo lá eh da interface, né? Esse dado vai chegar no Servidor, o servidor pode armazenar temporariamente em uma variável do tipo string, beleza? Então, uma string, ela vai conseguir comportar esse texto que foi digitado pelo usuário. A gente tem os arreis também, que são estruturas em que você pode colocar vários elementos. Você pode ter um arrei de strings, um arrei de números, um arrei de de objetos, entre outros tipos. E as classes, tá? E por que que esses tipos
primitivos são chamados de tipos De referência? Como assim eles se referem a objetos? Então, voltando à orientação objetos, nós temos a classe. Então, vamos nesse exemplo do formulário que eu falei. Imagine aí um formulário de cadastro de cliente. O cliente chegou, colocou seus dados pessoais e aí isso vai num formulário HTML, por exemplo, ou feito eh na própria linguagem Java em uma interface gerada pelo pelo servidor. É, poderia, se fosse Java, poderia ser uma interface através Do JSF, mas você tem uma interface em que o usuário digita os dados e aí ele manda esse formulário
pro servidor que vai atender a requisição numa porta específica e vai fazer alguma coisa com aquele dado. Nesse caso, ele precisa ler os dados do input que vieram, né, eh, através do método HTTP e eh vai ler aqueles dados, colocar em um objeto e persistir esse objeto no banco de Dados. É, esse é um processo tradicional, tá? Mas o que que é o objeto? Então, nessa situação, eh, possivelmente o programador ele vai definir uma classe para cliente, para armazenar os dados do cliente. Então, lá nessa classe ele vai ter propriedades como nome, eh, CPF, data
de nascimento, sexo e aí vai, OK? Então, vai ler esses dados e eh ele vai colocar em um objeto que vai ser criado a partir da classe. Entendam a Classe como uma forma, uma fábrica para se criar objetos com a mesma característica. Então, o conceito de classe é aquele semelhante, aquele é que a gente já estuda na biologia, tá? Então são um conjunto de elementos que possuem é características em comum. Então, uma vez que você definiu a classe eh cliente, dessa forma que eu falei, você vai instanciar um objeto a partir daquela classe, um objeto
eh limpo, digamos assim, sem tá preenchido. Ele Tem os campos, nome, CPF e tudo mais, mas ainda não foi preenchido. Então você instancia a partir daquela classe, a partir daquela forma, um objeto e aí você lê os dados que vieram. eh, da requisição e você pega o esse, por exemplo, o nome e coloca lá na propriedade nome do objeto. Pega o CPF e coloca na propriedade CPF do objeto. Então, você vai populando, vai preenchendo o objeto. Quando ele tiver todo preenchido, você pega ele E persiste. É, você pode utilizar aí na no Java o JPA
para fazer a persistência desse dado no banco, OK? Então, os tipos primitivos eles referem se referem a objetos que foram criados a partir de classes. Olha aqui alguns exemplos, ó. A gente tem aqui um número é uma variável mais num, que é inteiro, que é a int, tá vendo, ó? Então, e tá sendo atribuído a essa variável o valor 5, o igual é um operador de atribuição. Então, ó, mais Num recebe 5. Aqui, ó, my float num é aqui é um número float, então foi definido o número float que tá sendo armazenado nessa variável. Observem
que em Java as variáveis elas são fortemente tipadas, né? Então, quando você declara a variável, você tem que indicar o tipo dela. É diferente do do JavaScript e outras linguagens. Aqui no Java você tem que falar, ó, essa é um Inteiro, essa variável é um float, essa é um char. Que que é o char? É quando você quer armazenar apenas um único caracter textual. Então, tá aqui, ó, the shar boleano true ou false? Aqui, ó, my bull, né? Tá recebendo o valor true e o a string, ó. Observem que a definição da string, pessoal, string
com s maiúsculo, tá? My tex recebeu hello. Outra coisa, como é que eu posso fazer para declarar muitas variáveis? Aqui em cima Eu tenho alguns exemplos, ó. Eu tenho que variável, as variáveis X, Y e Z. Então, para cada uma, eu fiz a declaração, né, intx e atribui o valor 5, valor 6, o valor 50. E depois utilizei aqui o system out print ln, né, que tá sendo utilizado aqui para imprimir a soma dessas três variáveis. Então está sendo somado aqui o valor de X, o valor Y e o valor Z. Então 5 + 6
+ 50 é o que vai ser exibido aqui, né? Então vai dar 61, correto? Eh, esse exemplo aqui eu peguei lá do W3 escolos, tá, pessoal? Inclusive recomendo o estudo eh através desse desse site, site muito bom para estudar eh linguagem de programação, front end, banco de dados, entre outras coisas. Então aqui você tem três linhas para declarar três variáveis. Aqui embaixo tá mostrando uma forma simplificada de você fazer isso tudo em apenas uma única linha, essas Declarações, né? Então aqui, ó, você coloca o int, o tipo do dado. Então aqui, no caso, as três
variáveis não são do mesmo tipo, são. Então você pode colocar tudo na mesma linha, ó. Int que é importante saber isso, pessoal? A gente já viu que na eh em concursos o pessoal gosta muito de cobrar trechos de código, o funcionamento de trechos de código. Inclusive a gente vai ter aí eh um vídeo só com questões Java, tá? Resolvendo Esses algoritmos, esses códigos. E aí, para você ter uma compreensão melhor disso, você tem que entender essas diversas formas eh através das quais o código, o Java pode aparecer, tá? Então essa é uma forma e quando
você olhar isso num código, isso não vai te causar estranheza, você vai entender que, ah, beleza, aqui eu tenho três variáveis que são do tipo inteiro e cada um tá recebendo um valor específico. Bacana? Qualquer dúvida pode Deixar um comentário aí. Outra coisa, ó, um valor para múltiplas variáveis, você consegue definir o mesmo valor para várias variáveis. Então, aqui, por exemplo, ó, eu tenho aqui a declaração das variáveis X, Y e Z. E na segunda linha, eu tô falando aqui, ó, que X vai receber Y, Y vai receber Z e Z vai receber 50. Então,
todo mundo aqui recebe 50, tá? Então essa é uma forma de você atribuir o mesmo valor para mais de uma variável, caso seja eh o desejado. Então aqui o que vai ser impresso vai ser o valor eh 150. O pessoal, nós temos aqui alguns grupos de operadores na linguagem Java que e o a compreensão desses operadores é fundamental para você conseguir resolver os códigos que caem no nos concursos. tá? Naqueles conjun, naquele tanto de código que aparece, sempre tem algum operador. Então você tem que saber os principais operadores. Então vamos entender eles. A gente tem
aqui alguns grupos principais, os operadores aritméticos de atribuição, de comparação, lógicos e os bit a bit. Eu fiz uma questão aí que envolvia isso, né? Um uma operação bit a bit. Muito interessante. Operadores aritméticos, pessoal, nós temos o operador de adição, que é o mais, tá? Isso aqui é um quadro que foi tirado lá do site W3 Schools, tá todo em inglês e Eu não faço questão de traduzir porque eh em programação, primeira coisa, quem trabalha com programação tem que é é natural ter que aprender o inglês. E depois eh em linguagens, em provas de
concurso, diversas vezes eu já vi cair os termos da de em tecnologias na no formato original em inglês. Então, a gente precisa desenvolver o inglês também nessa jornada, seja para concurso, seja para trabalhar eh no mercado privado. Então, A adição é representada através do mais, tá? Então aqui no caso, ó, um exemplo, ó, X + Y, você faz dessa forma para somar dois valores. Então aqui, possivelmente é, é e possivelmente não, essas variáveis foram declaradas, né, X e Y, e elas receberam algum valor. E aqui tá sendo feito a soma desses valores. Subtração, o menos.
Multiplicação, asterisco, divisão, é o barra. Então Aqui, ó, X di por Y. O módulo é o sinal de porcentagem, tá? E o que que é o módulo, professor? É o resto da divisão. O resto da divisão, tá? Então você consegue extrair o resto da divisão através do módulo. Ah, eu quero resultado da divisão, é o barra. Ah, eu quero o resto da divisão, o módulo que é sinal de porcentagem. Já vi que eles estão também os solicitando, empregando esse operador de módulo. Outra coisa que é muito comum, Por exemplo, o operadores de incremento ou decremento.
O mais, basicamente em quase todo for, laço de repetição do tipo for, você tem o mais, né, maioria deles. Então, que quando você observar mais mais em seguida, o que que significa? Isso que é um incremento. Então ele aumenta o valor, aumenta mais um na variável. Então aqui, ó, eh vai vai ser atribuído, vai ser acrescido e mais um na variável x. O menos menos é o contrário disso, o inverso disso, né? Ele vai decrementar um, tá? Então se você observar mais é um incremento menos decrá sempre o valor um. Vamos falar agora sobre os
operadores de atribuição, que são o mais comum deles, o igual, tá? O igual é o principal operador de atribuição, o mais utilizado, que serve para você eh dar valor a uma variável. Então, que, por exemplo, ó, X recebe 5, tá? Então, eh, o valor de x vai ser, o valor Que vai ter armazenado em x será 5. Às vezes você pode encontrar dessa forma, mais igual. O que que significa? Aqui, por exemplo, ó, x + = 3, ou seja, x vai receber x + 3. Ou seja, quando você tem mais igual, você tá somando ao
valor que já existe naquela variável. Então, x + = 3 é o mesmo que x vai receber x, ou seja, o valor que já tem x + 3. Então é como se fosse um incremento de 3, tá? Você tá incrementando o valor 3 ao valor já existente. O menos igual é o contrário disso. Então é um decremento, tá? Então aqui tá decrementando 3 do valor de x. O asterisco igual você tá multiplicando o valor de x por 3. Então, ó, x asterisco igual 3 é o mesmo que x vai receber x x 3, tá? O
barra igual é a divisão. Então você tá pegando o valor de x e dividindo por 3. O porcentagem igual é o módulo, né? Então você tem aqui, ó, X vai receber X módulo 3, tá? Aqui embaixo nós temos os operadores lógicos aqui, esse sinal de e comercial igual e e também esse essa barra aqui, esse pipe, né? Não lembro se a gente conhece como como pipe. É isso aqui é um operador lógico, tá? O e o ou. Você possivelmente vai conhecer o operador lógico Java ou de outra linguagem também usando e, né? Os dois símbolos
de e comercial, a gente vai ver logo à frente, e as duas os dois Pipes, né? As duas barras como ou. Mas a gente e tem a o emprego de apenas um único símbolo desse, que é o o operador lógico em nível de byte, tá? chamado eh bitwise. Então, por exemplo, aqui, ó, o e igual, então, x e = 3 é o mesmo que eh x vai receber x e 3. Então, vai ser feita aqui uma operação eh lógica com números inteiros. Possivelmente x aqui é um inteiro também, tá? Então, em nível de bit. Então,
para você conseguir compreender o Resultado disso, por exemplo, uma questão boa para cair num concurso, né? Eh, qual vai ser o resultado disso? Então, vamos supor aqui, por exemplo, ó, que x é igual a a 10, tá? E y é igual a 12. OK? E aí você tem a seguinte operação, ó. X eh, cadê o e X e Y? Qual vai ser o resultado disso, né? Quanto que isso aqui vai Dar? Então, vamos converter. Primeira coisa, o X, como é que fica? 10 em binário, né? X em binário. Então, 10 em binário é o mesmo
que e a gente tem um um vídeo aí só com a questão resolvendo uma operação nível de bit, tá? Mas aqui, por exemplo, você precisa converter isso para eh para binário. Então, como é que eu faço o 10? Ó, lembra que a gente tem o os valores, né? Você tem aqui, por exemplo, vou representar aqui oito Casas, tá? 2 3 4 5 6 7 8. Então, 1 byte, né, não é 8 bits. Então, eh, aqui no primeiro bit, o primeiro, a primeira casa à direita aqui equivale a um, tá? Então, isso aqui equivale a um.
A segunda casa, deixa eu colocar aqui para você entender melhor. Aqui é a segunda casa. É aqui equivale a um. Aqui equivale a 2, aqui equivale a 4, aqui a 8, Tá? Então, ó, como é que você, a gente sabe esses valores, pessoal? É só é 2 elevado 0 dá 1, 2 elevado eh a 1 dá 2. 2 elevado 2 dá 4, 2 elevado 3 dá 8 e assim sucessivamente. Então aqui você tem eh o deixa eu continuar aqui, 60, o 16, aqui o 32, aqui o 64 e aqui o 128, tá? Então o primeiro
valor 128, o 24 aqui no segundo, 32 aqui nesse terceiro zero, 16 aqui e aí assim sucessivamente, Tá? Então, eh, para números pequenos, a gente pode se concentrar mais nesses 4 bits à direita. Então, você, para agilizar o seu tempo no concurso, você já desconsidera esses à esquerda. E aí, como é que eu sei, professor, quanto que é 10 em e em binário? Ora, na é só você somar os valores que você precisa para dar 10. Então, preciso do quê? Do o 8. Aí, onde for esse valor, você coloca um, tá? um bit de ativação,
então um. Então quanto? 8 + 2, né? Então a representação do 10 em binário vai ser, ó, os 4 bits à esquerda 0 0 e aí 1 0 1 0 os 4 bits à direita. OK? Então isso aqui é o é é o 10 e o 12, quanto que é o 12 em binário? É mesma coisa, né? Vou pôr aqui, vamos mudar aqui. Vamos usar esse exemplo, ó. Para dar 12, a gente vai precisar do 8 + 4. E aqui no dois não precisa, né? Então você vem vem pegando o valor mais próximo da esquerda
pra Direita, o maior valor, mas que não vai passar, né? Tem que dar o valor exato. Então, ó, 12. Para chegar no 12, eu preciso do 8 e preciso do 4. Então, 8 + 4 dá 12. Então, ó, o resultado vai ser os 4 bits à esquerda 1100. Isso aqui é a representação, né? E qual que é o valor e quanto que é? Eh, eu fazendo aqui a operação lógica do e, o e para retornar eh para Retornar um, os dois valores têm que ser um, ok? Qualquer outra disposição vai ser zero. Então, ó, 0
e zer dá zero. Eh, aqui no caso 1 e zer dá zero também, tá? Aqui no 1 e 0. Um e um 1. Pronto. O restante aqui é tudo zero, né? A gente já sabe que é zero. Logo, quanto que dá isso aqui? É só a gente ver aqui, ó. Isso aqui é isso aqui, essa posição equivale a um. Essa segunda posição equivale a 2, 3, 4. Aqui é oito, né? Então equivale a 8, tá? E isso realizando o usando o operador lógico e tá pessoal? o e comercial, tá? É de o a condição e,
né? Então, lembra, lembre-se disso. Então, quando tiver utilizando operador lógico e em nível de bit, só vai ele só vai retornar um quando os dois valores forem um. Qualquer outra disposição vai ser zero. Outra opção é o esse cara aqui, né? O ou. Então, quanto que dá isso aqui? Utilizando os mesmos números lá de cima, ó. Vamos aqui, ó, pessoal, no ou é o seguinte, eh, se tiver o um, e ele só vai retornar zero quando os dois números forem zero. Qualquer outra situação vai ser um. Então aqui, ó, 1 e 1 vai ser 1.
1 e zer vai ser 1. 1 e zer é 0 e 1 vai ser 1, né? 1 e zer vai ser 1 também. zer e zero vai ser zero. E aí, quanto que dá isso aqui em decimal? É só a gente pegar, ó. Ó lá, ó. Tá vendo, ó? 111, né? Digamos assim. Então, a gente da direita pra esquerda tem um 0 1 1. Então, ó, dá 8 + 4 + 2. Você vai somar só onde tiver um. Então, dá e 14, né? 14. OK. Então 8 + 4 12 + 2 dá 14. Então a
questão se cai em concurso para vocês acertarem, tá pessoal? Isso aqui são operadores lógicos em nível de Bit, saibam disso. Aí nós temos aqui esse esse circunflexo, né, que isso aqui serve para exponenciação. Então aqui no caso, ó, e x circunflexo igual 3. É o mesmo que que x recebe x elevado é a 3. E aí nós temos aqui esse sinal de dois sinais de maior que igual e dois sinais de menor que igual, tá? Isso aqui é um operador de de shift ou de troca de transposição. Então aqui no caso, ó, x é Maior
ou igual maior igual eh maior que, perdão, né? Maior que duas vezes igual 3 é o mesmo que x vai receber x maior que maior que 3. Aqui nesse caso também vai ocorrer uma operação em nível de bit. tá? De transposição. Então, que você em que você vai pegar um número binário daquele e, por exemplo, eh, vamos fazer um exemplo aqui, ó. Considera esse exemplo aqui, ó. Então, vamos supor que a gente tem a seguinte situação, ó. X maior é maior que maior Que eh 2, tá? Quanto que vai dar isso aqui, pessoal? Isso aqui
a resposta basicamente essa aqui é simples, ó. Vamos supor que, ó, o X, quanto que vale o X? O X vale ali, ó, 10, né? Pegando só os últimos 4 bits ali. E aí, quando você coloca é 10, 10, ó, v vamos colocar a totalidade aqui para vocês entenderem melhor, ó. Isso aqui é o 10, tá, pessoal? Eh, quando você coloca, ó, X maior que maior que 2, você tá falando que vão ser acrescidos dois zeros aqui, eh, da esquerda pra direita. Então, ó, você vai colocar mais dois zeros e vai excluir dois zeros da
direita, tá, pessoal? E aí se você for, se tiver da de outra forma assim, ó, 10 e o o sinal for assim, você vai ter a inclusão de dois zeros do lado direito. Então aqui, ó, 0 Zer e vai tirar os dois da esquerda, tá? Então aqui tem uma transposição é de bits, OK? Só para fins de conhecimento. Operadores de comparação, nós temos aqui o igual igual. Isso aqui é para quando a gente quer verificar se um valor é igual ao outro. Então aqui no caso, ó, x é igual a a y, o valor de
x é igual ao valor de y. Então para isso, você usa igual a igual. muito comum o uso eh Em condições, né? Na hora de verificar uma condição específica, a gente tem o o diferente não igual, que é o exclamação igual, tá? Então aqui no caso tá verificando se x é diferente de Y. O valor de X é diferente de Y. Você tem o maior Q da mesma forma que que na matemática. Então aqui tá verificando se X é maior que Y. Aqui embaixo, se o X é menor que Y, você tem ainda o maior
ou igual, tá? Então, X é maior ou igual a Y. Se for, Ele vai retornar true. Se não, ele vai retornar false, né? Falso. E temos também um menor ou igual. Então, X é menor ou igual a Y. Os operadores lógicos, tá? A gente viu aqui a agora a pouco o operador lógico em nível de bit e nós temos operadores eh lógicos envolvendo eh duas duas eh declarações boleanas. Então aqui, por exemplo, ó, a gente tem o o e, tá? o operador lógico e que retorna, ele só retorna verdade, true quando as duas Condições, as
duas declarações ao redor dele são e verdadeiras. Então aqui no caso, ó, aqui nesse caso essa essa declaração toda só vai retornar true se as duas condições forem verdade. A primeira condição do lado esquerdo do E aqui tá verificando se o X é menor que Y. É, vamos, vamos imaginar que x seja 2. Então, 2 é menor que 5. Sim, true. Aí vai verificar a segunda condição. 2 é menor que 10. Sim, também 2 é menor que 10. Então vai retornar true aqui e true aqui. E se as duas condições forem true, ele vai retornar
verdade. Agora, se, por exemplo, eh, o x, a segunda condição fosse verificando se x é maior que 10, e aí aqui ele ia retornar falso, né? Então, na primeira ele ia retornar verdade e na segunda ele ia retornar falso. Então, true e falso ele vai retornar falso, tá? O e só vai retornar verdade quando as duas condições forem verdadeiras. Então, em algum exemplo Prático que você quer verificar se uma condição A é verdadeira e uma condição B também é verdadeira, você vai usar o operador lógico E. Então, por exemplo, esse esse cliente ele tem mais
de 30 anos de idade, ele tem filhos. Então, são duas condições que você quer verificar. você pode usar o operadológico e temos também o perodológico ou que ele ele para que ele retorne verdade basta que uma das condições sejam eh seja verdade. Então, Por exemplo, se ele tiver filhos, eh, for maior que que 30, eh, mas não tiver filhos, então eh aqui na primeira ele retornou verdade, true, e na segunda ele retornou falso. Não importa se uma das condições forem verdadeiras, ele vai retornar verdade. Então o operador lógico ou serve para isso, para quando você
quer verificar uma situação em que eh ao menos uma das condições é verdade, OK? Quer verificar se ao menos uma das condições é verdade? Você vai usar o ou Que é esse essas duas barras aqui, tá? Na na vertical, a gente chama de pipe também. Então aqui no caso, ó, vamos supor que x seja 2. Eh, 2 é menor que que 5? Sim. 2 é menor que 4, sim, também. Então, se as duas forem verdade, beleza, retorna a verdade também. Ele só vai retornar falso se as duas condições forem falsas. Temos também o operador lógico
de negação, que é a exclamação, tá? que ela que ela basicamente inverte o Resultado. Então, por exemplo, ó, retorna falso se o resultado é true. Então, se a condição toda retorna true, ele vai e negar isso, ele vai retornar falso, ele vai inverter o resultado. Se retornar falso, ele vai retornar true. Ok? Então isso aqui é operador lógico de negação. Vamos falar agora sobre as condições. Então quando a gente tá desenvolvendo um sistema, uma situação comum com a qual a gente tem que lidar é Verificar condições, verificar se uma condição X aconteceu ou uma condição
Y. Então, para isso, nós temos aqui algumas opções. Nós podemos utilizar o if, tá? O IF é o nosso operador para verificar eh se uma condição específica ocorreu ou não, é verdade ou não, para então decidir pela execução ou não de um código específico. Então nós temos o if, ó, ele só executa o código se a condição for verdade. Então if é se, né? Se tal Condição for verdade, então botando naquele exemplo lá, se o usuário, o cliente tem mais de 80 anos, eh, vai retornar true e vai executar o que foi especificado para para
essa condição. O ELS é o se não, né? Se não. Então ele só ele vai executar o código se a condição especificada no if for falsa, tá? O else ele funciona em conjunto com if. Então a gente tem um if, ele vai verificar uma condição. Se for verdade, ele vai Executar o que foi definido dentro do if. Embaixo a gente vai ter o else. Ou seja, se essa condição do if for falsa, a gente vai ter uma condição, uma específica e no elsce. Então, ah, não tem mais de 30. Então, nesse caso, ele vai eh
executar outro código para essa situação. Aqui, por exemplo, ó, eu tenho aqui a declaração de uma variável chamada time, tá? OK. Ela é do tipo inteiro, recebe um valor, tá recebendo aqui através do Operador de atribuição o 22. Então, time é igual a 22. E aí temos o if para verificar uma condição. A condição ela vai aqui dentro dos parênteses, tá? Que tá verificando se o tempo é menor que 12. Quanto que é o time? 22. 22 é menor e que 12. Falso, né? Não. Então ele não vai executar o código que tava especificado aqui
para essa condição. Se o time fosse 10, ia ser verdade. 10 é menor que 12. Sim. Aí ele ia imprimir o resultado bom dia e não ia Verificar as outras condições. Ele só ia executar bom dia. Tá? Mas aqui o o time é 22. Então, ó, 22 é menor que 12? Não, então vai retornar falso, tá? Essa operação, essa verificação toda vai retornar false. E aí ele não vai executar. Aí ele vai entrar aqui nessa segunda verificação, que é o else if. Então e o else if, você tá fazendo uma segunda verificação, que é a
seguinte, ó. O tempo, o time é menor que 18. 22 é menor Que 18 também é falso. Então ele não vai exibir boa tarde, ele vai pro else. Quando nenhuma das condições anteriores nessa estrutura for verdade, ele vai entrar no else, sempre vai executar o que tá no else, tá? Caso você tenha o else. Se não tiver o else, não. Mas tem o else. O ELS é quando, se nada der certo, se nada for verdade, executa o ELS. Ou seja, não é menor que que 12, não. Não é menor que 18 também Não. Então vai
pro else. Ou seja, ele vai exibir boa noite, tá? E essa aqui é algo lógico, né? Ou seja, se não for menor que 12 e não for menor que 18, logo é maior ou igual a 18. Então, já é noite. Boa noite. Para esse mesmo exemplo que eu acabei de dar, a gente tem uma uma opção eh que é o operador ternário, uma forma de você simplificar isso, eh, usando menos linha de código, tá? E e dá até um charme a mais. E muitas vezes na Questão ela pode aparecer dessa forma, a questão de concurso.
É é a mesma coisa foi definida aqui. Eh, quer dizer, tem algumas diferenças aqui, mas é é semelhante, só que feita através de uma de uma sintaxe diferente. Então, ó, eu tenho aqui uma variável tempo igual a 20. Eu tenho um resultado que é vai que é do tipo string, ou seja, ele vai armazenar um texto. E eu tô falando aqui, ó, o resultado vai receber alguma coisa. O Que que ele vai receber, pessoal? Nós temos aqui operador terário. Operador ternário, ele funciona da seguinte forma, ó. Ele tem aqui antes da interrogação a condição a
ser verificada e essa condição vai retornar true ou false. Se essa condição for verdade, ele vai retornar o que vem logo depois da interrogação. Ou seja, que que tá sendo retornado aqui? A string. Professor, como é que eu sei que é uma string? Pelas aspas, tá? Aqui na string a gente usa as aspas para definir o texto. O number, que é um número, não precisa de aspas. Então aqui vai ser retornado eh vai ser retornada a string bom dia e atribuída aqui ao resultado, tá? Se o tempo for menor que 18, mas não, o tempo
é igual a 20. Então 20 é menor que 18, falso. Então se a condição antes da interrogação for falsa, ele vai retornar o que vem depois dos dois pontos, pessoal. Que que vem depois dos Dois pontos? Outra string. Olha as aspas aqui, ó. Boa noite. Então o que vai ser armazenado aqui em resultado é boa noite. Então é como se fosse resultado, recebe boa noite e vai imprimir boa noite, ok? Então isso aqui é uma condição ternária, um operador ternário, ele tem essa característica, essa sintaxe, ó, da tem a condição, a interrogação e aí você
tem aqui e os dois pontos. Do lado esquerdo dos dois Pontos, você tem o que vai ser retornado se for verdade, do lado direito, é o se for falso, tá? Então, imaginemos que o tempo seja igual a 10. 10 é menor do que 18? Sim. Então, ele vai retornar o quê? O que vem logo depois da interrogação, bom dia, senão vai retornar boa noite. Beleza? Isso aqui é o operador ternário. O sutch. O switch é outra opção que nós temos para verificar condições, tá? Através do sutch, você consegue verificar a ocorrência exata de Valores específicos.
Então, por exemplo, aqui, ó, eu tenho aqui falando que eh o dia é igual a 4, né? D 4. Então, que a gente tem aqui a representação de dias da semana em inglês, tá? E aí a gente usa dessa forma, suit, a condição, o valor que tá sendo verificado, abre chaves e aí você tem aqui as verificações, tá? Então a sintaxe é essa, suitch dentro do parênteses, a condição. Então aqui no caso tô passando o valor 4, né? E ele vai verificar eh se o valor é igual ao que tá aqui. Então ó, aí para
isso a gente tem aqui o a palavra-chave case. Então case 6, ou seja, se dia for igual a 6, ele vai retornar o quê? Today is Saturday, né? Então, se eu não tiver enganado, é sábado, né? Então, today e Saturday. E aí, eh, através do break, o break ele serve para pular fora, quebrar a a verificação, tá? Então, ele vai imprimir isso aqui e já Vai, ele não vai verificar mais se é sete ou ou qualquer outra coisa. Então, aqui ele vai, se for seis, ó, case 6, ele vai imprimir essa mensagem. e já vai
logo em seguida, através do, por causa do break, sair dessa condição sem verificar mais nada. OK? Ele vai continuar a execução depois do sutch, né? Após o switch. Então, mas aqui no caso, ó, é 4, então case 6 não, falso. Então, ele não vai imprimir isso aqui. Aí ele vem para Baixo, case 7 é igual a 7 também não. Então não vai imprimir isso. Se nenhuma das condições forem verdade, ele aqui no caso ele tem aqui um o def que é para especificar um padrão. Então se não for nenhuma das das é como se fosse
um elce, né? Se não for nenhuma dessas condições, vai pro deful, pro padrão. Beleza? Então ele vai retornar isso aqui, ó. Looking forward to the weekend, né? Se fosse sete o valor, ele ia entrar nessa verificação, ó. Caso Sete, ele ia imprimir today is Sunday, né? É domingo. Beleza, pessoal? Então, esse é o suitch, essa é a sintax. É importante vocês compreenderem aqui como ela funciona, tá? suitch, a condição. E aqui é no caso em que você sabe os valores específicos eh a a serem verificados e não são muitos, né? Porque se você for fazer
case para 100 valores fica um trem viável, né? Mas fácil usar o wif mesmo. Mas se For for verificar duas, três condições, o case é legal. Valores específicos, né? laços de repetição. Nós temos em Java algumas opções para eh definir laços de repetição. E o que que é um laço de repetição? Alguns códigos eh a gente precisa que eles sejam eh reexecutados por determinada quantidade de vezes. Então, eh eu preciso que determinado código seja executado enquanto uma condição for verdade, tá? ou enquanto uma condição for Falsa ou precisa executar uma quantidade de código n vezes.
Então, para essas situações, você pode usar laços de repetição. Então, eu tenho aqui, ó, o wi o wi é uma opção para laço de repetição. Como é que ele funciona? você usa a palavra reservada wi e aí você dentro do parênteses você vai especificar a condição e aí na chaves você delimita o código que vai ser executado e enquanto a condição for verdadeira. Então o I significa Enquanto, né? Então qual que é a condição? Quanto i for menor que 5? Quanto que vale? Zero. Então vamos imaginar a primeira ocorrência, a primeira execução. 0 é menor
que 5. True, verdade. Então ele vai imprimir, ó. Vai imprimir o quê? O valor de i. Zero. Vai mostrar o zero na tela. E ele tá fazendo o que aqui, ó? I + mais. Ou seja, ele tá incrementando o i. Então ele executou a primeira vez, imprimiu o zero. Aí ele Incrementou I+ mais. Então o I agora não é mais zero, é 1, porque I + é o mesmo que I, recebe I + 1. Então aí vai verificar de novo para saber se ele executa o que tá dentro do do I ou não. 1 é
menor que 5? Sim. Então ele vai imprimir o um e vai somar mais dois. Segunda execução. Aí agora o i vai somar mais um, né? Então agora o i é 2. 2 é menor que 5? Sim. Então vai imprimir o três e vai somar mais um. 3 é menor que 5? Sim. Então ele vai imprimir o três, né? Vai imprimir o três e vai somar mais um. Quarta execução. Aí vai verificar 4 é menor que 5? Sim, né? Então ele vai executar de novo, vai imprimir o 4 e vai somar mais um. Então vai verificar
5 é menor que 5? Não, falso. Então aí quando a condição for falsa, ele pula o e continua a execução após o o laço wi, tá? Então, ou seja, aqui nesse caso ele vai imprimir dos valores e do zer ao 4, né? Vai Imprimir o 0, 1, 2, o 3 e o 4. Ok? Aí na ele não imprimiu o restante porque a condição foi falsa depois disso e ele não mostrou o valor C. Legal pessoal? Então esse é o IO. Ele executa um bloco de código enquanto a condição for verdadeira. O do wi, pessoal, o
duo é muito semelhante ao IO. É diferença aqui. No IO ele só entra, ele só executa a primeira vez se de cara a condição for verdade. Então é verdade, um é menor que Cinco, sim. Então ele executa. Se não for, ele não executa nenhuma vez. O duo ele executa pelo menos uma vez. Por quê, professor? Porque a verificação da condição ocorre no final. Então aqui no caso, ó, o i recebeu zero e aí ó, do aí as chaves, né? E o I depois com a condição. Então o que que ele vai fazer? Ele já vai
imprimir de cara aqui o I, vai imprimir o zero e vai somar mais um. Então ele vai fazer a verificação Quando? No final. I é menor que 5. Sim. Então ele vai executar de novo. Então observem que o do IO é praticamente igual ao Wio, né? A única diferença é que no du a verificação ocorre no final, então ele vai executar o código pelo menos uma vez. Você atentar a isso numa a hora de de resolver uma questão de concurso, tá? E professor, qual que é a melhor forma? Aquele aquela quantidade de código que às
vezes assusta se você tiver tempo, né? Aí a Questão de usar estratégia, a melhor estratégia, eu recomendo você ir pras questões mais rápidas, aquelas que é ou não é, sabe, não sabe, então mais direto ao ponto. E aí você deixa essas mais trabalhosas pro final. Numa dessa aqui, você a melhor forma é você pegar o lápis e você ir rasurando, simulando a execução do código passo a passo, tá? E aí, claro que a medida que você vai estudando, adquirindo experiência, programando também, você consegue Resolver algumas questões sem ter que simular tudo do eh cada linha
de execução, né? Mas a forma mais básica é essa, simular cada linha de execução, OK? Então, espero que tenham compreendido a diferença do IO para o do IO. No IO, a verificação é já no início. No du a verificação é no final. Logo, ele executa o código pelo menos uma vez. Terceira, terceira possibilidade para laço de repetição é o for, tá? É para para situações onde se Sabe a quantidade de vezes que um bloco de código será executado. Então aqui, por exemplo, a sintaxe é essa, ó, for. E dentro dos parênteses, você tem aqui é
basicamente três parâmetros, tá? três condições, eh, três condições, não, perdão, três parâmetros mesmo. Quais são eles? Aqui na primeiro, observem o ponto e vírgula separando esses caras, tá? Aqui na na primeira posição você tem a declaração De algumas variáveis, tá? Normalmente a gente tem aqui a declaração de contadores que vão ser usados aqui para verificar e a execução, a quantidade de vezes que tá sendo executado, OK? Então aqui no caso, ó, tá declarando uma variável do tipo inteira I e atribuindo o valor zero a ela. Então i = a 0. Aqui no meio, depois da
do primeiro ponto e vírgula, você tem a condição condição a ser verificada nesse laço. Então para ele Saber se ele vai executar ou não aqui o código dentro do fórum. Qual é a condição? Tá verificando se i menor que 5. Z0 é menor que 5? Sim, né? E aqui no na terceira opção a gente tem o incremento. Vamos entender a primeira vez. Na primeira execução o F vai fazer o seguinte, ele vai declarar as variáveis. Primeira execução. Então recebe zero. Pronto. Só na primeira e recebe zero. Aí ele vai verificar zero é Menor que 5.
Sim. Aí ele já vai pro código. Então ele vai imprimir o valor de i que é zero. Vai mostrar zero lá no na tela, no log. Ok. Show. Aí no final da execução entra essa terceira etapa aqui, ó. Esse esse terceiro parâmetro que é o incremento. Aqui no caso tá incrementando mais um, né? I mais, ou seja, i recebe I + 1. Então, ó, I agora depois da primeira execução, o I não é mais zero, é 1. Ok? Aí ele vem de novo aqui paraa condição. Aí na segunda, na segunda vez que ele vai executar
o código, ele não vai declarar de novo e igual a zero, tá? Essa declaração aqui à esquerda é só na primeira execução. Então, ó, agora i = 1, 1 é menor que 5. Verdade? Então, ele vai mostrar o um e vai incrementar mais. Terminou a execução do código toda, lá no finalzinho, ele incrementa mais um. Então, I agora é 2. 2 é menor que 5, sim. Então ele vai Imprimir eh o valor dois, né? E assim sucessivamente. Ele vai aqui, pessoal, basicamente imprimir o do valor zero ao valor 5. O 0, o 1, o 2,
o 3 e o 4, né? Perdão, do zero ao 4, tá? Ele vai fazer isso cinco vezes. Beleza? começou no zero, ó. Por que que ele vai fazer cinco vezes, professor? E ele só exibiu quatro, porque o primeiro elemento que ele exibiu foi o zero. Então, ó, na primeira Execução, o i é igual a zero. Então, ó, o incremento só é feito no final. Então, ó, zero é menor que 5. Sim. Então, ele já imprimiu o zero na primeira execução e aí no final ele incrementa mais um, entendeu? Então vai ficar 0 1 2 3
e quarta execução. Então imprimindo os valores do zero ao 4, tá? Eu acho que eu me confundi, né? Fala aí se eu me confundi. 0 1 2 3 4. Isso mesmo. Beleza? Então ele vai imprimir do valor zero ao Valor 4. Ok, pessoal? Então, no fósil você só tem que tomar cuidado com isso. A a condição vem no meio. Aqui do lado esquerdo você tem a declaração da das variáveis que vão ser normalmente usadas aqui e a o incremento aqui no terceiro parâmetro depois do segundo ponto e vírgula. E lembra que o incremento ele só
ocorre no final, tá pessoal? Depois da execução, o break, pessoal, o break serve para encerrar a execução de um Laço ou uma condição atrás do if, por exemplo. Então, aqui no caso, ó, eu tenho for i = 0, enquanto o i for menor que 10 e mais. Ou seja, a ideia aqui é imprimir eh do valor. Vai vai fazer aqui 10 impressões, né, inicialmente, tá? Olhando o força, ó, tá? e vai começar do zero. Então vai imprimir o zero, o 1, o 2, o 3, vai até o nove, né? Só que eu tenho um if
aqui, ó. Ele, então, antes de imprimir o Valor, ele tá verificando, ó, i = a 0. Se for, o que que é para acontecer? É para ocorrer um break, tá, pessoal? É um break, ou seja, para ele pular fora do laço, encerrar executando do laço, tipo, acabou. Beleza? É como se o o num jogo de futebol o dono da bola fosse lá, pegasse a bola e fosse embora. Não, acabou. Encerra aqui. Então é quebrar, tá? Break. Ou seja, quando o I chegar no zero, ele vai pular fora do laço. Então Vamos vamos simular a execução.
Ó, primeira execução. I = 0. OK? 0 é menor que 10? Sim. Então vai verificar. I = 4. 0 é ig 4? Não. Então ele vai imprimir o zero. Vai imprimir o zero, né? Tá na primeira execução. Vai imprimir o zero. Aí vai incrementar mais um. O i agora é eh o I agora é 1. Então 1 é menor que 10. Sim. Então é igual a 4. Não. Então ele vai ele vai mostrar o um, né? Vai mostrar o dois, vai mostrar o Três, né? 0 1 2 3 E aí quando chegar no 4 ele
vai esbarrar aqui, ó. E 4 = 4. Sim. Então ele vai quebrar e não vai imprimir o quatro. Ou seja, ele esse break não vai deixar que o quatro seja impresso. Do quatro em diante ele não vai mostrar mais. Ele vai encerrar o laço aqui. Então qual que vai ser o resultado desse desse código? Ele vai imprimir os valores 0, 1, 2 e 3, tá? São quatro execuções com esses valores. Começando no zero, vai até o três. Quando chegar no quatro, ele quebra e pula fora do laço, eh, encerrando a execução. Beleza? Claro que na
questão de concurso isso cai de forma bem mais complicada, mas aqui é só para você entender o conceito. Aprendeu? Agora você pode ir lá. A gente vai, eu vou fazer uma eh um vídeo com questões comentadas para vocês sobre esse tema e mas você já está apto a tentar resolver pelo menos. Tá diferente de você olhar e Que que é break. Você não sabe nem o que que é o break. Agora você já sabe, tem break, ele pula fora do laço ou da condição, como a gente viu lá no suitch. Nessa mesma linha a gente
tem o continue, né, o continue, que ele ele não quebra, encerra por vez a a execução, ele pula uma etapa. Como assim? Então, nós temos aqui a mesma condição, o for, que ele vai imprimir do zero a enquanto o i for menor que 10, ou seja, do 0 ao 9, ele vai mostrar do vai Incrementar de um em um, né? Vai mostrando o valor de i. Então vai mostrar o zero, 1, 2, o tr e assim até chegar no vai mostrar o nove também. Só que ele tem a verificação. I enquando o i foi igual
a 4, ou seja, quando chegar no valor 4, ele vai, ele falou aqui, ó, continue. Que que significa continue? Quando ele chegar aqui, ele não vai executar o restante do código que tá dentro do laço. Quando quando chegar no continue, Ele ele vai tipo pular a vez. daqui ele não executa esse system print ln, então ele não vai exibir o valor 4. Quando o i for igual a 4, ele vai executar o continue e ele vai pular paraa próxima. Então o o i = 5, né? aqui vai incrementar aí mais e vai ser igual a
5. Resolv e resumindo, ele vai mostrar o zero, vai mostrar o um, vai mostrar o dois, vai mostrar o três. Quando chegar no quatro, ele vai pular o quatro e vai pro próximo, vai pra próxima execução, Pra próxima iteração, tá? Esse ciclo de repetição de código que a gente chama de iteração, não é interação, é iteração mesmo. Ou seja, o que que o resultado disso aqui? Ele vai exibir do valor zero ao valor 9, com exceção do valor 4, porque quando chegar no 4, ele vai pular o restante do código, ou seja, ele não vai
imprimir aqui, ó. Quem é que tá imprimindo? Esse system out print ln. Beleza? Se esse system tivesse antes do if, ele ia Exibir, mas não tá depois. E por causa do continue, ele ele não executa o restante do código e vai paraa próxima iteração, pulando a exibição do quatro. Então vai exibir do z0 ao 9, mas não o 4, o valor 4. Legal? Então, entenda a diferença do break para o continue. Vamos falar agora sobre arrei. Pessoal, a gente já viu em outras linguagens de programação que o arrei serve para armazenar eh vários elementos numa
estrutura só, né? Então você, como você, Quando você quer colocar vários elementos em uma única variável, você pode usar o arrei como estrutura para para eh conter esses elementos. Então, como é que eu defino um arrei dessa forma, ó? Eh, aqui eu tenho o nome da variável cars, né? E ela de qual tipo? Uma rei de string. O que que tá me dizendo que é uma rei? Esses colchetes vazios aqui, ó. Tá? Então aqui, ó, string Colchetes, cars, ou seja, cars é uma rei de string. Então, você pode ler da direita pra esquerda. Cars é
um arrei de strings. E aí eu tô atribuindo já ele, eu já tô populando ele aqui de cara, né? Eu tô preenchendo esse arrei. E como é que eu defino o arrei de forma literal? Através aqui das chaves, tá, pessoal? Então, ó, eh, aqui eu tô passando quatro strings para esse arrei. Então, cars vai conter o quê? O os valores Volvo, BMW, Ford e Mazida. Então, essas quatro Strings é estão dentro do arrei cars. Observe aqui, ó, chaves e a separação dos elementos pela vírgula, tá? E aí eu tenho aqui um for. Que que esse
for tá fazendo? Então, vamos lá. I = 0, né? Vai ser, pelo que tô vendo aqui, vai ser o meu contador i = 0. Qual que é a condição pra execução do que tá dentro do fórum? Enquanto i for menor que cars. Lente. Lente, pessoal. é uma propriedade do arrei que indica a quantidade de elementos que eu tenho lá. Quantos elementos eu tenho aqui? Quatro. Então, cars p lent vai me retornar o valor 4. Então, legal que isso aqui é de forma dinâmica, né? Então, ó, aí o i quanto? É zero. Zero é menor que
4. Sim. Então ele vai fazer o quê? vai exibir o valor de cars na posição i. Então, quando você tá tratando com a reiz, você tem que indicar qual elemento que você quer acessar aqui no caso. E Como que você faz isso? Indicando depois do nome da variável do arrei o você vai usar os colchetes e o índice que você quer acessar. Você quer acessar a primeira posição, a segunda, terceira, quarta. Lembrando que a primeira posição começa no valor zero. Vou falar de novo porque isso é importante. A primeira posição, primeiro índice de uma rei
é a posição zero. Então aqui, ó, o que que vai ser vai ser exibido na primeira execução? Cars, na posição I, que é Zero, na posição zero, volvo. Então, ele vai exibir volvo. Aí vai incrementar e mais. Então aí agora é um. Vai verificar de novo. 1 é menor que 4. Sim. Então ele vai exibir cars na posição um. Qual que é a posição um? É a segunda posição, tá? BMW. Vai exibir BMW. De novo. Vai resumindo, ele vai exibir Ford, vai exibir Mazda até quando ele chegar no I = 4, né? que ele vai
incrementando. Aí o depois que ele exibir Mazida, o I Vai ser 4. É menor que 4, falso. E aí ele não exibe mais nada e segue a execução depois do forro, depois do laço, tá? Porque se você colocar, por exemplo, eh, menor ou igual a 4, ele iria executar mais uma vez, porque 4 não é menor, mas é igual a 4. Então, ele ia tentar acessar o o arreio na posição 4. Só que na posição 4 do arreio não tem nada, ó. Tem 0 1 2 3. Na 4 não tem. E então isso aqui ia
gerar um exceção, tá? Beleza? Uma exceção que é que é uma falha nesse sentido. OK, pessoal? Então isso é um arrei. Galera, eu trouxe aqui para vocês a as definições, alguns conceitos básicos da linguagem Java que nos permitem aprofundar mais o estudo e também nos capacita aí a tentar resolver algumas questões para concurso. Em breve vou estar disponibilizando para vocês o vídeo. Se quando vocês já não tiver assistindo, talvez já tenha. Só dar uma olhada aí na nos comentários ou na Descrição. Se tiver, você já vai visualizar aí o vídeo com resoluções de questões Java,
OK? É assim mesmo por etapa. Agora depois a gente pode estudar a parte de orientação objeto e de classes especialmente, tá? definição de classes, de métodos e o a orientação objeto, Java na orientação objeto, tá trazendo a perspectiva do Java segundo a orientação objeto, que também costuma cair em concursos. Beleza? Por hoje, Pela aula de hoje é o suficiente. Valeu, grande abraço, até mais. E aí, pessoal, beleza? Aqui é o professor Arnaldo, auditor em TI e hoje a gente vai falar sobre a linguagem de programação JavaScript. Lembrando que nós estamos aí numa série de aulas
de estudos focados aí no concurso do CERPRO, mas também estaremos eh visando o concurso do TCE TRE unificado assim que sair o seu edital. E já fica o meu convite para você Ingressar no nosso grupo de WhatsApp. Caso você queira estudar informática para concurso de informática, lá você vai encontrar conteúdo disponibilizado por mim. Então você vai ter lá PDF para leitura, vídeos, entre outras coisas. Os convido também a fazer parte do nosso programa de membros para você estar incentivando o trabalho no canal a continuidade e melhorando a qualidade do conteúdo trazido a vocês, além de
ter Alguns benefícios exclusivos como prioridade na nas respostas de comentários, entre algumas outras coisas. Então vamos para a aula. O que é o JavaScript, pessoal? Como eu falei, JavaScript é uma linguagem de programação e diga-se de passagem quem que é a linguagem de programação mais utilizada no mundo. Já tem algum tempo que é assim. Ela tipicamente eh funciona, né? Foi criada para funcionar na parte visual. Toda aplicação, um sistema web, por exemplo, eh, ele basicamente quando eu falo um sistema web, é um sistema que tem a parte visual e que também tem a parte que
integra um banco de dados e regras de negócio em um servidor backend. Então, basicamente, um sistema web, ele é composto pela parte visual, que a gente chama de front end, que é aquilo e com que o usuário interage. Então, a parte visual de um Site, de um aplicativo, eh é o que a gente chama de front end, OK? Só que muitas vezes a partir da interação com o front end, o usuário ele quer eh obter alguma resposta, ele quer interagir, ele precisa armazenar um dado, ele precisa buscar um dado. Então a partir daí surge a
necessidade de eh implementar alguma regra de negócio e muitas vezes um acesso ao banco de dados, né, para gravar os dados que o Usuário preencher ou para buscar dados que o usuário está pesquisando. E aí nisso entra o que a gente chama de back end, beleza? Então imag, vamos colocar um cenário aqui que é comum a todos nós, uma pesquisa no YouTube, você acessou a página inicial que lá o front end, aí tem o campo de pesquisa, você digitou e um artista lá, uma música que você quer ouvir. O que que vai acontecer? Você vai
eh disparar uma requisição para o back End. Então vai, eh, vai ter ali um servidor na no que a gente chama de back ending, que vai atender essa requisição, vai ler a palavra que você pesquisou e vai em um banco de dados ou em um web service buscar aquele conteúdo que você está pesquisando de acordo com os algoritmos estabelecidos, OK? E aí tem o banco de dados, né, que vai pode buscar no banco ou pode armazenar os dados no banco, como por exemplo quando você tá Preenchendo um cadastro, ok? Então você tem front end, back
end e o banco de dados. O JavaScript ele vai funcionar no tipicamente, né, normalmente no front end. No front end a gente tem o quê? o HTML para definir a estrutura da página, quais elementos que nós teremos na página. Ah, eu quero que tenha um input, ah, eu quero que tenha um botão. Ah, eu quero que tenha uma imagem. Então, e aquilo que você quer que tenha na página, você vai colocar através do HTML. O estilo, a aparência dessas dessas coisas você vai definir no CSS, OK? Então você vai falar, eu quero que tenha o
botão. Beleza, você vai colocar isso no HTML. Agora eu quero que o botão ele seja azul e que ele tenha eh a borda arredondada, que ele tem um pading, que ele tem uma sombra. Então a aparência você vai colocar no CSS. E aí a parte comportamental você define no JavaScript. Aí entra o JavaScript, beleza? você vai consegue dar interatividade, um comportamento dinâmico para a sua página. Então, quando eu clicar no botão, eu quero que aconteça alguma coisa. E se acontecer alguma coisa, você pode viabilizar através da do JavaScript, beleza? Então, HTML, você define o que
tem, CSS, aparência e JavaScript o comportamento. Eh, professor, mas o JavaScript só Funciona no front end? Não, eh, de um tempo para cá, a gente tem também o Node JS, que foi uma tecnologia criada para você que te permite justamente trabalhar a JavaScript do lado backend, ou seja, dá para você criar um sistema web completo só com JavaScript, fazendo front end, back end. Legal. Então vamos entender um pouco mais, pessoal, antes de de continuar no Assunto aqui, só lembrando que, professor, em nessa aula eu vou ficar fera em JavaScript? Nunca, né? Impossível. É facilmente para
você eh ficar razoável, conhecer o básico do JavaScript, isso levaria muita dezenas de horas, talvez, né? E muita prática também. Aqui a ideia da nossa aula é te dar um panorama geral sobre o que é a tecnologia, os principais conceitos, eh, e obter uma familiaridade com a tecnologia. A gente Vai ter aqui teoria, mas vamos ter também práticos, a gente vai implementar algumas coisas. Lembrando que estarei disponibilizando uma aula prática focada aí na pensando, né, na prova prática do do CERPR. Então, a gente sabe que uma das linguagens que podem cair é JavaScript. Nós teremos
uma aula só com exercícios mais avançados, mas para chegar lá você tem que aprender esse básico aqui. Então, minha recomendação é: faça essa aula, aprenda O básico, treine alguma coisa e aí a gente vai eh pra aula prática com exercícios mais avançados, OK? E aí, o que é o JavaScript? Ó, o JavaScript ele é padronizado pelo comitê ECMA TC39, chamado de ECMA Script. Então, se você observar o nome ECMScript, está falando do JavaScript, tá? E lá o ECM script, ele define a sintax, mecanismos de manuseio de erros, tipos, objetos, Funções. Aqui não tá na versão
mais recente, tá antigo, mas é só para vocês saberem, tá? Ema script é como é padronizado a linguagem JavaScript através do seu comitê. E o que que dá para fazer com o JavaScript? Pessoal, como eu falei, a gente dita comportamento e uma das coisas que a gente consegue fazer é mudar conteúdo HTML através do JavaScript. Então aqui, ó, a gente tá buscando, fiquem Tranquilos que eu vou explicar para vocês ainda nessa aula o que que é isso aqui, tá? Mas aqui você tá buscando lá na estrutura da página um elemento pelo ID. E aí, qual
ID que ele tá procurando? Demo, né? E aí, através do atributo winner HTML, ele está atribuindo um valor por meio aqui do igual. Então, uma das coisas que você consegue fazer é mudar o conteúdo de algo que já está lá, estático. Legal. e aceita, ó, aspas Duplas ou simples. Eh, você consegue também mudar atributos do dos elementos HTML. Vamos ver um alguma coisinha aqui, ó, na prática, eu tenho aqui uma página, um projeto HTML que eu criei agora, bem simples, um cabeçalho, um main e um rodapé, um footer. Beleza? Isso aqui é HTML. Se você
não sabe nada de HTML, recomenda aí dar uma olhada na a no nosso conteúdo de HTML no Canal. E aí defini aqui um CSS padrão. E aí a gente tem essa página aqui, ó, OK? Aula de JavaScript, professor Arnaldo. Ah, legal. Então, vamos colocar aqui um conteúdo, ó. Por exemplo, vamos supor que eu tenho aqui, ó, professor e aí aqui eu tenho parágrafo. Beleza? Eu vou colocar uma um ID para esse Parágrafo. Vou escrever aqui, ó, prof. Legal. Então, na nossa página, a gente só tem aqui a palavra professor que nós digitamos aqui. E aí
temos um parágrafo que tá vazio, ele não tem conteúdo nenhum. Vocês estão vendo esse parágrafo? Está vazio. Legal. Como é que eu faço para como é que eu faria para colocar algum valor aqui, mas de forma dinâmica através do JavaScript e não já deixar aqui, ó? Eu quero coloc Eu quero que Fique dessa forma, professor Arnaldo, mas eu quero que esse valor não esteja estático aqui no HTML. Eu quero que ele seja colocado de forma dinâmica. Como que eu posso fazer isso? Através do JavaScript. Então, primeira coisa, eh, você quer fazer alguma coisa com esse
elemento aqui, no caso, parágrafo. Então, o primeiro passo é buscar esse elemento, tá? Já fica uma dica aí para vocês quanto a JavaScript. Primeiro passo, você quer fazer, você Quer dar um comportamento para um elemento, quer alterar, você tem que, primeira coisa, buscar ele no seu HTML. E como que a gente faz isso? Através do document. Aqui, ó, document. O que que acontece quando você digita document, pessoal? O document acessar o dom da página. Professor, o que que é o don? O é o document object model, modelo de objeto de documento. Resumindo, eh, quando a
página é Carregada pelo pelo navegador, ele pega todos esses todos esses elementos que compõem o nosso o nosso documento HTML e os colocam em uma árvore de objetos. Beleza? Então ele cria uma estrutura de árvore, não tem nada que a gente eh estudou, aprendeu aí nas aulas de estrutura de dados, que a gente tem conteúdo no canal também. Então ele cria uma estrutura de árvore com esses Elementos. Bacana. E o esse isso é o dom. Então você consegue acessar o dom através aqui usando a palavra-chave document. E, ou seja, a partir dele, a gente consegue
invocar um método que nos permite buscar um elemento nessa árvore de objetos, que é o dom. Então, o que que a gente quer buscar? Um elemento, um elemento HTML. Qual Elemento HTML? O parágrafo. E aí existem várias formas de se buscar. A forma que a gente vai usar agora é através do ID, do identificador. Então aqui, ó, a gente não colocou um ID aqui, um atributo ID, qual que é o valor, prof? Então nós vamos buscar por meio desse ID. Então, ó, document.getget. Já apareceu aqui, ó, primeira opção. Beleza? Eh, e aí você já pode
selecionar. A minha dica é, começou a digitar, apareceu, você já dá enter para que você não erre eh a escrita, tá? Então, ó, get element by id, coloca parênteses e, entre aspas, o valor do ID que você tá pesquisando. Bacana? Então, ó, eh, a gente tem aqui o ID e o valor do ID. Então, o que que eu tô falando, ó? Eu eu quero ir lá no dom da página, na Estrutura eh total dela lá, né? E quero buscar um elemento pelo ID. Qual ID que eu tô buscando? Prof. Então, ele vai fazer uma varredura
por todos os elementos e vai procurar algum que tenha o ID prof, que é justamente o parágrafo que nós queremos. Ah, só para quem quiser elaborar um projeto desse também, eu vou est disponibilizando no aí na descrição do vídeo esse projeto, tá? E aí eu tô Utilizando aqui para editar o Studio Visual Studio Code. Bacana. É um programinha que você pode baixar aí, Visual Studio Code. É, e mas você pode usar qualquer editor aí ou de sua preferência, OK? Então, busquei o elemento. Eh, e aí o que que eu quero fazer com ele? Ponto. Eu
quero mudar o valor que tá dentro dele. Então, vou colocar inner HTML. Então, com o inner HTML eu consigo Ter acesso ao que tá aqui dentro. Beleza? Então, se eu tivesse essa palavra aqui escrito oi, eu ia, o que me seria retornado aqui seria o a palavra oi. Mas eu quero atribuir um valor lá para dentro. O que que eu faço? Então, ó, coloco i igual. E aí, entre aspas, para definir uma string, que a gente já viu esse conceito em outras linguagens de programação, uma string é um conjunto de caracteres. Como é que eu
defino uma String? aspas e aí você coloca o valor que você quer. Ponto e vírgula no final. Uma boa prática. OK? Então o que que a gente tá fazendo aqui? Vamos ver se funcionou primeiro. Não funcionou. O que que tá faltando? Coisa básica aqui, ó. A gente precisa, eu fiz um documento HTML e fiz um documento JavaScript. Só que para que esse JavaScript tenha efeito no meu HTML, eu preciso linkar esses documentos. E aí uma das formas é e Inclusive é a mais recomendada é você colocar antes do fechamento do Burry aqui a tag script
com a propriedade src e aí você vai apontar o caminho até o seu JavaScript, OK? Fica dessa forma, ó. script com src apontando para o seu arquivo JavaScript. Bacana. Então, se você não sabe exatamente onde tá seu arquivo JavaScript, ó, você coloca contrl espaço e seleciona ele. Lembrando que arquivos JavaScript eles precisam ser salvos com a extensão p JS. E aí é para funcionar. dessa forma, beleza? Então, o que eu, se eu alterar aqui, ó, altera lá também, ó. Naldo Júnior, Arnaldo Júnior. Então, a gente foi lá no Dom, buscou um elemento pelo ID e
eh alter acessamos aqui o seu conteúdo interno para atribuir. O igual Significa atribuir um valor. Qual valor? o valor que foi definido aqui na string. OK? Eu sei, pessoal, que pode parecer muito conteúdo e um conteúdo avançado. Às vezes você tá achando que tá eh estou falando, passando muito rápido pelos conceitos, mas lembrando que a o propósito da aula aqui é te dar um panorama geral sobre o JavaScript. De fato, para você aprender a programar JavaScript, isso vai muitas horas de prática, tá bom? E aí temos Aulas mais focadas, mais eh extensas sobre vários tópicos
no JavaScript. Só você pesquisar aí a descrição, é uma playlist e JavaScript aí no nosso canal que nós temos também, OK? Então você consegue mudar o conteúdo por meio do JavaScript e você consegue também mudar a alterar um atributo. Da mesma forma que a gente usa o Winner HTML para acessar, mudar o conteúdo interno, você consegue mudar um Atributo. Quando a gente pega um, busca um elemento, como aqui, ó, ele tá procurando um elemento pelo ID, algum elemento que tenha é o ID my e image, OK? O que que vai ser retornado, pessoal? vai ser
retornado o objeto, o elemento HTML todo. Então, do jeito que ele foi encontrado. Então, aqui, ó, parágrafo ID, tal, é o valor do ID, né, o valor interno. E e aí você consegue acessar também os atributos Dele. Quer ver aqui, por exemplo, ó. [Música] Ah, se eu fizesse assim, ó. Aqui, por exemplo, vou colocar num log, tá? Uma das formas de você visualizar para faz de fazer um um debug de uma forma mais simplificada é utilizando o log. Então, no log vai, vou mostrar para vocês aqui na no navegador, você consegue visualizar o conteúdo que
tá sendo Repassado. Então, ó, eu posso pegar tudo isso aqui e jogar dentro do log, que aí eu vou ver. Eh, o resultado disso, o resultado disso aqui, desse dessa expressão toda, vai ser impresso dentro do log, tá? Então, ó, se eu for aqui no meu navegador e apertar F12, olha aqui, ó. Vocês vão observar aqui na direita, ó, o meu log. Olha aqui. Então, o que que a gente pesquisou, ó? Document get element by ID. A gente procurou um elemento pelo ID e ele foi retornado para nós do jeito que ele encontrou lá. Não
é, não é exatamente isso aqui. Tá aí, ó. Se eu colocar aqui, ó, Arnaldo, vai aparecer Arnaldo também lá, ó. Bacana. E aí, se eu quiser pegar só o valor, isso aqui é o log, tá pessoal? Se você for no navegador, apertar F12 e procurar Aí console, você vai visualizar isso. Bacana, tá? Mas eu não quero o objeto todo, eu quero só o valor que foi o e digitado dentro do do elemento. Quando eu falar elemento, entendam elemento HTML. Você como é que faz? Lá no JavaScript você busca o elemento, depois você coloca ponto inner
HTML. Você tá lendo o valor interno desse HTML. Então, ó, que que voltou Para mim? Arnaldo. OK. Tá, mas não, vamos supor que eu quero eu quero pegar o valor do ID dele, que é um atributo, né? O elemento aqui é o é o P, é o parágrafo e o ID é um atributo cujo valor é prof. Então, se eu quisesse pegar o ID, você coloca ponto ID. Pronto. Olha aí, ó. Prof. OK. Então, é isso que eu tô, é isso que eu quero que vocês tenham em mente. Então, Uma vez que você eh buscou
o objeto, você consegue acessar o seu valor, você consegue acessar eh seus atributos, as suas classes, qualquer coisa daquele elemento. A gente consegue mudar o estilo. Então aqui no caso, ó, mesma coisa, ele pegou um um elemento pelo ID e aí ele acessou a tag style, o atributo style, perdão, né? Que é que é um atributo que existe no HTML. Aqui, ó, você pode vir aqui em Qualquer atributo e tag, né, elemento HTML e você colocar style. E aí você coloca uma cor, por exemplo, ó, color. cor, né? Color é red, então vai ficar vermelho,
tá vendo? Então eu defini um atributo com a cor red. Isso aqui é CSS, né? Aula seria uma aula de CSS. Eh, uma definição aqui em line, ou seja, no próprio elemento HTML. E aí, se eu for olhar lá, ó, o nome ficou vermelho, OK? Mas se eu quisesse fazer essa mesma coisa através do JavaScript, você colocaria, ó, ponto style, que é o atributo, né? Um atributo ponto o nome do atributo. Então, no caso, color, tá? Aí aqui no caso eu tenho que tirar do do console, tá? Ponto color vai receber e aí eu Coloco
a cor que eu quero. Beleza? Então, ó, acessei a o atributo style e defini uma propriedade chamada color e passei um valor para ela. Aí eu vou tirar essa que tá aqui já fixa, estática no HTML e vou colocar, tá? Aqui, ó, Arnaldo, a cor ficou amarelo. Beleza? Então, outra coisa que você Consegue fazer através do JavaScript é mudar o estilo de forma dinâmica. declarações. Bem, eh, a, se você olhar na documentação, uma recomendação de boa prática seria você colocar ponto e vírgula ao final de cada declaração. E o que que é declaração? É toda
aquela instrução JavaScript que você e dá para o computador. Beleza? Então o ponto e vírgula eles separam as declarações JavaScript. Só que detalhe, pessoal, é recomendável você colocar o ponto e vírgula, mas eh ele não é obrigatório. Então, se eu, por exemplo, tirar o o ponto e vírgula daqui, ele funciona também da mesma forma, OK? Não, ou seja, saiba disso, não é obrigatório, mas é recomendável, é uma boa prática. E você consegue também fazer Várias declarações na mesma linha. Então você pode colocar, separando por ponto e vírgula, você pode colocar tudo na mesma linha. Então
aqui no caso, ó, ele fez várias atribuições. Então, ó, o a variável A, vou falar o que é a variável agorinha, recebeu o valor 5, variável B recebeu 6 e o C recebeu a soma de A + B, que é 11, OK? espaço em branco. O JavaScript ele ignora múltiplos espaços, mas você pode Adicionar espaços em branco para tornar o seu script mais legível. Então, aqui no caso, ó, ele tá declarando uma variável através da palavrachave var person. Então, ó, var person, pessoa recebe eh head, OK? Então, ele tá definindo um valor pra pessoa, o
nome da pessoa. O igual é é um operador de atribuição, né? Por meio do igual, você Consegue adicionar um valor para uma variável, beleza? E aí você pode colocar tudo junto, mas é legal você colocar um espaço em separando os operadores e para ficar mais legível, beleza? é uma boa prática, facilita a manutenção, entendimento do código. Outra coisa que é possível fazer em JavaScript, definir um bloco de códigos, um bloco de declarações, de Instruções. E isso é possível graças às funções, OK? Então, nós temos aí o conceito de função, que é nada mais é do
que isso, um bloco de instruções que precisa ser essa função para executar, para ser executada, ela precisa ser invocada. Ela não é executada de forma automática, como aquele código que eu acabei de colocar. Então, tudo que tá dentro de uma função, a gente define uma função assim, ó, através da Palavra-chave function. Então, se você observar function é a palavra-chave para definir uma função. Se cai na prova, você já sabe. Beleza? Function é a palavrachave para definir uma função. Então, nós temos aqui function, espaço, o nome da função. E aí o nome da a função, ela
tem aqui os parênteses, beleza? que é para definir, caso uma função ela receba parâmetros, entradas de dados, eh você coloca esses esses Parâmetros dentro da desses parênteses. Então, nome da função, parênteses, chaves. As chaves aqui delimita o corpo da função. E aí tudo que tá aqui dentro eh só vai ser executado quando a função for invocada. Então aqui no caso ele tá mudando os valores de dois elementos, né? Aqui o identificado como demo 1, demo 2. Existem várias palavraschaves também. Eu tenho aqui é uma listagem. A gente não vai falar de tudo porque senão vai
a Aula vai ficar muito extensa, mas novamente se você tiver lá no nosso grupo, você vai ter acesso a um link para o drive com vários PDFs, incluindo o dessa aula para você estudar posteriormente. Então, eh, às vezes cai, né, questões e perguntando sobre uma palavra chave X ou Y de uma linguagem de programação. Então, aqui você tem várias, tá? Eh, aqui é o function para definir uma função. O o return, ó, sai da função ou Retorna algum valor, né? E trycat para implementar gerenciamento de erro, o VAR para declarar variáveis. E aí a gente
tem várias outras, OK? Syntax. Vamos lá. No a gente tem valores, tipos de valores distintos. Você tem também valores fixos ou chamados literais e valores variáveis. Ou seja, eh aí entra o Conceito de variável. O que que é uma variável? a gente vai falar eh agorinha sobre isso, mas eu quero que você entenda agora que existem eh formas de você armazenar um valor e aquele elemento que armazena o valor, ele pode ter o seu conteúdo alterado, ou seja, ele é variável, não é estático, não é fixo. E aí existem formas lerais e dinâmicas de você
declarar valores, Tá? Aqui no caso, ó, é John D é uma declaração aqui de uma string, como eu falei, né? Um conjunto de caracteres. Então, se você observar aspas ou aspas simples, que nem tá aqui, ó, qualquer uma funciona, tá? Isso aqui é uma string declarada de forma literal, OK? Uma string declarada de forma literal. Outra possibilidade seria outro tipo de dado são os dados numéricos, que são é só você digitar um Número 10, inclusive você pode colocar com casa decimal, então 10.5. E isso é um valor numérico, OK? Então, por exemplo, ó, vamos declarar
uma variável. Eu vou pegar aqui, aqui a gente tem, né, Arnaldo, esse elemento parágrafo que não tem aqui eh valor nenhum, tá? É só o parágrafo vazio. Então, vamos lá. O que que a gente vai fazer? a gente vai armazen declarar uma variável para armazenar Esse elemento HTML. Então, toda vez que eu precisar desse acessar esse parágrafo para fazer alguma coisa com ele, ele já vai estar numa variável facilitando aí o meu acesso. Então, como é que eu faço para declarar uma variável? Palavra-chave var. V var o nome da variável. Então aqui eu tenho o
nome, o nome da variável vai ser nome, porque é lá onde eu quero colocar o nome do professor, OK? Então Aqui, ó, nome e eu vou atribuir alguma coisa a essa variável. Beleza? Então aqui que eu tô fazendo? Eu tô buscando o elemento pelo ID, que é aquele parágrafo, e a gente viu que ele retorna, né? ele retorna o parágrafo todo mesmo. E aí eu tô pegando esse parágrafo e tô colocando ele numa variável. Como é que eu eu falo que eu tô colocando? Porque eu tô usando aqui operador de atribuição igual. Então, estou atribuindo
esse Elemento para uma variável que eu chamo de nome. Então, toda vez que eu quiser acessar de agora em diante aquele parágrafo, eu não preciso colocar isso aqui tudo, é só eu digitar nome. Então, se eu colocar, ó, nome pon inner html, olha, olha a string literal, ó, aspas. Se eu colocar aqui, ó, Júnior, é o Arnaldo Júnior, e eu for lá no navegador, eu vou ter lá Arnaldo Júnior. Tá aqui, ó, professor Arnaldo Júnior. OK. E se eu quisesse, colocar um um valor numérico? Então, por exemplo, vamos supor que eu tenho aqui, ó, eu
quero a idade, tá? Então, vou chamar aqui, ó, de aid idade e eu quero imprimir a idade aqui dentro, OK? Então, ó, eu defini um atributo ID para esse parágrafo que eu chamei de idade e não tem nenhum valor. Eu quero colocar isso de forma dinâmica. Você pode colocar, você tem que buscar aquele elemento de novo, né? Então, ó, eu vou chamar de var idade, vai receber dó. Como é que a gente faz para buscar lá no no dom? Quero buscar no meu HTML. Primeira coisa, document para acessar o dom da página, estrutura com todos
os objetos. E aí eu vou usar o get element by ID para buscar um elemento pelo ID. Qual que é o ID que eu defini Lá? Idade. Então vou colocar aqui, ó, idade. Pronto. Então, idade. E agora vai apontar para o quê? Para esse parágrafo aqui. Beleza? Por que, professor? Porque eu busquei ele e atribuí a variável idade. E aí agora eu falo, eu coloco assim, ó, idade. Pinner HTML. vai receber. E aí eu vou colocar um número, OK? 31. Então essa é a forma de você Declarar eh o número. Então, ó, atualizei, tá aí,
ó, 31. Bacana. O legal de uma variável é que você pode alterar ela. Então, ó, ponto iner HTML, agora vai receber, sei lá, 30. Então, o que vale é o que tá por último, porque a execução é de cima para baixo, né? Salvo eh uma função, a ordem de de invocação. Isso aí é conteúdo pra próxima pras próximas aulas. Beleza? Mas Basicamente o o navegador vai lendo aqui as instruções de cima para baixo. E aí no aqui na linha quatro eu falo que a idade, né, o conteúdo interno daquele objeto idade, daquele elemento HTML idade
será 31. Só que embaixo eu falo por último que não vai ser 30 e o que vale é o que tá por último. Por isso que o valor ficou 30. OK? Então essa é a forma de você declarar uma [Música] Um uma variável do tipo numérica, OK? E aqui uma string que existe um número com casa decimal também, ó. Então se colocar, vamos supor 30 pon 2, então tá lá ó 30.2. Beleza? E existem outros tipos de variáveis também, só para vocês saberem, ó. Existe boleano. Boleano é assim, ó. Tipo, ovar Eh autorizado, quer saber
se pessoa tá autorizada ou não. Aí você pode colocar true pra verdade. Então, se for identificado com que eh o valor é true, você pode fazer dar um comportamento específico. Caso contrário, outro comportamento, tá? E a outra possibilidade é o false, OK? O falso. Então você tem a variáveis do tipo boleano, você pode permite dois valores apenas. True, verdadeiro, falso. False, que é falso. Beleza? Verdadeiro ou falso. Ó, variáveis, como a gente acabou de ver, a gente declara através da palavra-chave var. Beleza? O igual é usado aqui para atribuição. Então aqui, ó, ele declarou uma
variável X e ele fez atribuição em outro momento. Você pode fazer atribuição na declaração da variável quando você cria ela. E vejam que o V é só na hora da Criação, da declaração da variável. Depois, toda vez que você quiser manipular aquela variável, é só você referenciar o nome diretamente, não precisa povar de novo, ok? Então, X vai receber 6. OK, pessoal? Existem aqui operadores aritméticos, tá? E vamos falar sobre os operadores aritméticos. você consegue, ó, eh, realizar somas, subtrações, multiplicações e Divisão. Como é que eu Qual é o operador de de soma? É o
mais subtração. É o menos, né? Aqui tracinho, multiplicação, asterisco, divisão, a barra. Então, por exemplo, ah, vamos, eu vou declarar aqui a variável var a recebe 10. Vou declarar outra variável. Var B recebe 5. OK? E aí, se eu quiser exibir no log o resultado dessa soma, então, ó, Console. log. E aí eu posso colocar assim, ó, A + B. Lembra que o mais é um é um operador de a de adição, né? Ele vai realizar uma soma entre e o conteúdo da variável A mais o conteúdo da variável B. Então isso vai aparecer lá
no console. Então, tá aqui, ó, 15. Legal. Lembrando, para você acessar o console do seu navegador, você vai usar o apertar F12 no navegador ou então o botão Direito inspecionar, se eu não me engano. E aí você procura aí a aba console. Então, tá aí, ó, 15. Se eu quisesse exibir só o valor de A, tá aí a 10. Legal. E se eu quiser colocar a eh multiplicar a por b? Então, ó, A x B asterisco. Então, 10 x 5, OK? Tá aqui, ó, 50. Subtração menos divisão e a barra. Então, 10/ 5 2 operador
de de atribuição. A gente viu, para atribuir um valor a uma variável, utiliza-se o igual. Comentários. Eh, parece bobeira. Ah, em termos pensando em concurso, né? Porque claro, na prática isso aqui é é um uma boa prática, né? Então, recomenda-se no mercado profissional ou qualquer lugar que você tiver Trabalhando numa instituição. Então, você quer, se você quer construir um código de qualidade, além do do das dos elementos inerentes ao código em si, à organização do código, os comentários são de fundamental importância, porque eles norteiam o analista que vai analisar o código. Então, se até você
mesmo para posteriormente você conseguir dar uma manutenção naquilo que você fez. E aí, às vezes se você vai dar essa manutenção Anos depois, você não lembra o que que você tava idealizando enquanto lógica de negócio. Então o comentário ele vai mostrar, ó, aqui está sendo realizada uma soma aqui, você tá fazendo tal verificação aqui. Então é o comentário é fundamental. E para concursos já vi questões cobrando como fazer comentário numa linguagem X ou Y. Então é importante saber também, legal como comentar no HTML, no JavaScript, no CSS, no SQL. Então no JavaScript, quer comentar uma
linha só barra barra, quer comentar um bloco de linhas, é você vai usar o barra asterisco asterisco barra assim, ó. Tá aqui, ó. Por exemplo, quero comentar a linha do console que aí não vai exibir nada lá. Barra barra não. Quero comentar todo o código barra asterisco. E aí lá no final onde você quer encerrar o coment o o Comentário, você coloca asterisco barra. Tá vendo? Então aqui nesse caso só o console que vai ser exibido aqui é a linha quatro, OK? Barra barra comentar uma única linha barra asterisco. Asterisco barra para comentar um bloco
de código. Saída de dados. Existem algumas saídas eh padrões para o JavaScript, tá? Então, nós temos o inner HTML, que nos dá acesso ao conteúdo interno de um Elemento HTML. E a gente utilizou ele agora. Então, a gente buscou um elemento através do método get element by ID. E depois que a gente pegou aquele aquele elemento, a gente usou o ponto para acessar um atributo dele, tá? E o que que é o atributo, professor? O atributo é uma característica, uma informação acerca de um objeto. E a gente vai falar mais sobre Esse tipo de dado
mais à frente, mas é uma característica. Então o inner HTML te dá acesso ao quê? Ao conteúdo interno daquele elemento. OK? E aí, só que se você quiser atribuir, você coloca um igual depois do inner HTML e passa o valor que você quer, que foi o que a gente fez para definir o nome e a idade. Saída, você tem o document, que é uma possibilidade também. Você tem um alerta, que é uma Caixinha que aparece no navegador. Então, window. Alert alert. E aí aqui dentro do dos parênteses você coloca o valor que você quer passar
e o log que a gente usou também, console.log, que é aquela saída que o usuário não vai ver, tá? Se você colocar logs no seu código, o usuário final ele não não vai ver aquilo, eh, a não ser que ele abra lá a a inspeção, né? Mas olhando o navegador em si, a página em si, ele não vai ter, não vai visualizar isso. O alerta não, aparece uma caixinha na cara dele, né? Na no meio da tela, aparece uma caixinha de alerta. Bacana. Ah, só para uma coisa que eu lembrei aqui agora, quando a gente
falou de que é importante você saber, ó, variável, né? Para quem nunca programou, uma variável nada mais é do que um espaço na memória para gravar um Dado, ok? Quando você declara uma variável numa linguagem de programação, você está reservando na memória do computador um pequeno espaço para você gravar um dado, de modo que você pode recuperar esse esse dado posteriormente e alterar ele ao longo de sua existência, tá bom? Saiba disso, ok? Então, ó, o inner HTML, como a gente viu, então ele tem aqui, ó, um parágrafo com ID demo. Então, ele busca esse
elemento lá no nocument, no domina, Né, pelo ID e acessa o inner HTML para entrar aqui dentro do do valor do conteúdo do parágrafo. E aí ele usa o igual para atribuir um valor. Então, o que que vai ser impresso lá dentro? A soma de 5 + 6, right, ó, apenas deve ser utilizado para teste, tá? Então, isso aqui é para um caso bem específico pra saída de dados. o alerta, aquela caixinha que eu falei que aparece na Tela, o log aqui nesse caso, pessoal, ele tem aqui, ó, código HTML e JavaScript no no mesmo
arquivo, né? Aqui é um trecho de código. Isso aqui possivelmente faz parte de um de um arquivo HTML. você tem duas formas, eh, basicamente, né, inicialmente de atrelar o seu HTML ao JavaScript. Uma é no próprio elemento HTM da forma Que a gente fez aqui, na verdade, tá? Então, quando você coloca, como é que eu faço para vincular um arquivo HTML padrão a um arquivo JavaScript externo, você usa aqui, ó, dentro do no antes do fechamento do meu budy, eu uso coloca tag script e o atributo src apontando pro meu arquivo. Outra possibilidade é eu
tirar o o src e jogar o meu código JavaScript aqui dentro, entendeu? Então, ó, pronto. Aqui eu tenho um código JavaScript dentro do meu HTML. É uma possibilidade também só para a título de conhecimento. Log, como a gente viu, eh, funcionando também. operadores. E aí nós temos, ó, a a operadores de atribuição, de adição. Isso aí a gente já viu. Operadores de multiplicação. Aqui são exemplos práticos, tá? E aí, quais são os operadores Aritméticos? Vamos lá. Adição é o mais. Subtração, menos, multiplicação, asterisco. Eh, exponenciação, asterisco, asterisco. Divisão barra e porcentagem é o quê, pessoal?
Módulo. E o que que é o módulo? É o resto da divisão, tá? E isso é útil. É, em casos que você quer saber, por exemplo, se um se o número é ímpar ou par, utiliza-se basicamente o módulo, Né, o resto da divisão. E aí você vai saber se é ímpar ou par, né? Se não, se retornar zero é par, por exemplo, e se retornar um valor ímpar, não é isso? Então, muito usado para esse tipo de coisa. operador de incremento e decremento. Isso aqui vale a pena a gente ver e realizar um teste. Então,
ó, a gente tá usando aqui o o Console. E aí, vamos supor que eu queira exibir o valor de A, então vai aparecer 10 lá no meu console, OK? Mas se eu colocar assim, eh, aqui, por exemplo, ó, a mais, que que vai acontecer? Vamos ver o valor que vai ser impresso. Então, ó, declarei a como sendo 10 e depois eu incrementei a mais. Que que acontece? Isso aqui, ó, é como se For como se você fizesse isso assim, ó. A vai receber a + 1, então vai pegar o valor que já tem nele e
vai incrementar mais 1. Isso é o mesmo que a mais. Então se eu for aqui, ó, ó o valor que apareceu o 11. OK, pessoal? Apareceu o valor 11. E se eu colocar aqui dentro, ó, A+ mais, vamos ver o que que vai aparecer. Uai, apareceu 11 de novo. Por quê? E se eu colocar assim, Mais? Opa, agora apareceu 12, pessoal. Aqui é o X de uma questão. Eu vou até dar um zoom aqui para facilitar a visualização aí para vocês. Essa é uma pegadinha que eu já vi cair várias vezes em concurso, inclusive em
outras linguagens, acho que em Java também. Essa questão do incremento a gente, beleza, a gente já sabe que o mais serve para incrementar mais um. menos decrementa -1. Mas existe uma diferença grande aqui, eh, não grande, mas tem uma diferença caso você use o mais antes da variável ou depois na operação, OK? O que que o a linha 5 tá fazendo? exibindo no log, eh, é o resultado dessa dessa expressão, dessa declaração JavaScript. E aí, quando você coloca o mais antes, o que que ele vai fazer? Antes de realizar o log, ele vai eh Incrementar
o mais um. Então, primeiro ele vai incrementar e depois ele vai imprimir o log. Então, por isso que apareceu 12, né? Porque aqui, ó, eh, aqui o A começa como 10. Aí aqui eu incremento mais um, ou seja, nesse nesse ponto, vamos usar aqui o a comentário. Nesse ponto o A é igual a 11, OK? Porque eu incrementei mais um. E aí aqui eu, quando eu falo, ó, Incrementa mais um de novo, exibe o A, ou seja, qual o valor que vai aparecer? 12. Só que se você colocar o mais depois, muda a coisa. Por
quê? Primeiro ele imprime o a através do log. Depois que ele que ele realiza o incremento. Isso aqui, ah, professor, significa que o A ele eh ele ele continua valendo 11, não, ele mudou para 12. Só que o que importa aqui é o momento dessa alteração. Quando O incremento, o mais tá depois, primeiro ele realiza a operação, depois ele imprime, eh, perdão, primeiro ele ele realiza a operação, depois ele faz o incremento. Então aqui ele imprimiu. Então o a que antes da dessa desse último incremento era 11. Aí agora depois que ele imprime, ele faz
o incremento. Então no final disso, o A ele tá assim como 12. Se você colocar aqui, Ó, eh, para imprimir de novo o A, ó, vou imprimir só o A. Qual o valor que vai aparecer lá? O 12. Ó, no primeiro log apareceu o 11 e aí ele incrementa mais um, né? Então, ou seja, o a foi para 12 e aí no segundo log ele imprime o valor de a que é 12, OK? Então, só para vocês ficarem atentos aí nessa pegadinha, não caia nisso aí, tá? Coisa boba, mas pode pegar. Então, ó, aqui, por
exemplo, se eu colocar o mais mais antes ou depois, Para esse código não vai fazer diferença, né? Por quê? o o valor de aqui no log eu tô exibindo o valor de a e o a aqui nesse ponto é 11, não é isso? 11. Tá aí. Se eu colocar o mais antes ou depois aqui não faz diferença. Por quê? Eu ah, ele fez o incremento lá atrás, né? lá na frente que ele mandou imprimir. O problema na é na hora de realizar uma Operação. Então, quer ver outro exemplo aqui, ó? Vamos somar. Eh, se eu
quisesse aqui, por exemplo, realizar aqui, ó, A + B, OK? A + B. E e se eu fizesse assim, ó, A+ mais. Vamos ver que que que será que ia acontecer aqui. A mais e eu coloquei dentro de um Parênteses e depois o B. Valor valor, vamos ver o valor que vai ser impresso. 15. Ele imprimiu o 15, então. E antes ou depois vai dar na mesma? Não, né, pessoal? Aí entra essa questão que eu acabei de falar, né? Eh, o quando você coloca o mais mais antes, ele primeiro realiza o incremento, depois ele vai
pra operação. Olha a pegadinha que pode cair aí, né, pessoal? Se eu coloco mais mais depois, O que que acontece? Primeiro ele ele vai realizar a operação, ou seja, ele vai somar a + brimir isso. Então, 10 + 5 = 15. Já apareceu aqui 15. Depois ele vai e realizar o incremento, tá? Então, depois disso aqui, o A passa a valer 11. Mas aqui no na hora da impressão, ele somou o A + B primeiro depois que ele incrementou A. Então olha aí uma Pegadinha que pode cair numa prova, né? Então, saiba se você observar
que o mais vem antes e aí você tem a certeza de que o incremento vai ser realizado primeiro depois a operação, que aqui no caso é a soma. Então aqui, ó, a recebe mais 1, então passa a ser 11. E aí que ele vai somar e vai imprimir no log. Então por isso que agora você tem 16. Beleza? Não caia nessa pegadinha, pessoal. Operadores de comparação. Eh, pessoal, nós temos aqui vários operadores de comparação que é para quando você quer verificar se uma é uma condição, tá? Para verificar, por exemplo, se um valor é igual
a a outro, usa utiliza-se o igual igual. Eh, existe também uma forma de de você verificar além do valor o tipo da variável, que aí é o são os três iguais, OK? Quando você tem três Iguais, aí você tem uma eh uma comparação do valor e do tipo da variável, não só do valor. Beleza? A gente vai fazer o exemplo. Você tem o o diferente quando você quer verificar se o valores não são iguais, que aí é a exclamação igual, ou então exclamação igual igual quando você quer comparar se os valores são diferentes e os
tipos ou os tipos das variáveis são diferentes também, tá? Temos o maior Q, menor Q, maior ou Igual, menor igual e o operador ternário. Então, vamos lá. H, por exemplo, se eu quis, se eu quiser verificar uma condição, por exemplo, se o a, vamos ver aqui, ó, por exemplo, vou declarar a variável idade, recebe 17. Se eu quiser verificar se eh se a pessoa tem permissão ou não, se ela maior de Idade ou não, a gente utiliza-se para isso o if, para verificar uma condição. E aí dentro do parênteses você especifica a condição verificada. Então
no caso, quero verificar se idade é maior que maior ou igual a 18. Se for maior ou igual a 18, eu quero eh chaves, né, pessoal? Eu quero realizar tal Operação. OK? Então, por exemplo, eu quero exibir lá no log, ó, a string é autorizada. Bacana? Então, ó, se a idade for maior ou igual a 18, eu quero imprimir autorizado. Vamos ver se se vai imprimir. Claro que não, né? Aqui no caso vai aparecer nada. Vamos supor que eu coloque aqui 18. Então, é para aparecer lá no console Autorizado. Vamos lá. Tá aí, ó. Autorizado.
OK. Como vocês podem ver aqui do lado direito, [Música] ã, eh, e se eu quisesse, caso verificar a condição contrária também, para isso, você usa o else, né? Caso a condição o if não seja verdadeiro, a gente entra no else, que é o senão, tá? O if é se essa condição for verdadeira, ou seja, se daqui retorna e Retornar um true, ele vai realizar o que tá aqui dentro. Se não, aí executa o que tá dentro do else, que é eh não autozado. Então, por exemplo, ó, vou colocar 17, né? Então aqui no caso vai
se verificar se a idade é maior ou igual a 18. Se for vai colocar autorizado, se não, vai imprimir no log não autorizado. Então 17 é menor que 18, então vai é para aparecer não autorizado. Beleza, pessoal? Qualquer dúvida você já deixa o comentário aí, OK? Não fica com a dúvida, não. Deixa o comentário. Se eu não responder, um colega vai responder. Legal. E aí a questão do do igual, ó. Se eu colocar igual igual, eu verifico, eu tô verificando se a idade é igual a 18. Então posso colocar assim: você tem 18 anos. Se
for igual, né? Então aqui no caso eu tô verificando se o valor que vai que tá dentro da variável idade é igual a 18. Então 18 ig. Sim. Então você tem 18 anos. Ã, agora e se eu colocasse assim, ó, três iguais, que que ia Aparecer? Apareceu você tem 18 anos. Por quê? O valor que eu tô definindo aqui, ó, de forma literal, é um número, um number. E aqui o valor que eu atribuí a variável também é um number. Tá até aparecendo aqui, ó. Cadê? Apareceu aqui agorinha. Aqui, ó. Vá a idade do tipo
number. Agora, e se eu colocasse a idade como sendo uma string? E aí eu vou colocar aqui, ó, tipos diferentes, tá? Aqui no caso vou colocar valor e tipos iguais. Então o que que ele vai verificar, ó? Se eh esse 18 aqui o o conteúdo da variabilidade é igual em valor e tipo ao 18. Vamos ver o que vai aparecer, ó. Tipos diferentes. Por quê? Por mais que o valor seja igual 18, os tipos são diferentes, porque isso aqui é um number. E o que tá em idade? Idade é uma string, porque eu coloquei aspas,
é Uma outra pegadinha que pode ficar em concurso. Então se atente essa questão de string e number, ok? Então, ó, quando tem três iguais, tá verificando valor e tipo. Quando tem só dois iguais, tá tá verificando apenas se os valores são iguais. OK? Aqui, no caso, ó, vai aparecer valores iguais, porque por mais que sejam de tipos diferentes, agora eu tô verificando só o valor. Então, ó, valores iguais. Eh, operadores lógicos. Isso aqui vem lá da do raciocínio lógico. Quem já estudou raciocínio lógico sabe conceito disso aqui, né? Então você tem um operador lógico e
o lógico ou e a negação. Como é que é o e? H aqui, por exemplo, ó, vamos supor que a idade seja eh 18 e eh a profissão. Vamos ver, por exemplo, um sistema, eh, Que o cara quer verificar duas condições, a idade e a profissão. Então, se a profissão for igual for eh, vou pôr aqui auditor, então se ele for auditor e a idade, vou pôr aqui a idade de 30 anos. E aí eu quero verificar se o cara pode ser conselheiro ou não. Para ser conselheiro de um Tribunal de Contas, Você tem que
ter no mínimo eh 35 anos de idade, né? Tem existem algumas profissões do serviço público que você tem que ter no mínimo 35. Acho que ministro do Supremo também, não é? Então, ó, aí eu tenho que verificar duas condições para saber se o cara pode ser um conselheiro. Então, ó, pode ser cons leheiro. Se ele não atender, vai Aparecer não pode. Quais são as condições? E aí, no caso, nem se auditor, né? Mas no caso é o cara ser formado uma profissão, vamos supor, é direito. O cara tem que ter formação em direito, acho que
é contabilidade, outras coisas assim, economia. Então, ó, se a formação, né, eu vou eu vou mudar aqui a profissão para Formação. E aí, pessoal, outra coisa, já aproveita aqui, ó, na hora de declarar variáveis, nada de acento de caracter especial, tá? Então, se a formação for igual a direito e cadê aqui e idade for maior ou igual a 35, pode ser conselheiro, tá? Essa é uma condição hipotética, tá, pessoal? Aqui Na na prática existem outras coisas. Então aqui no caso, ó, só vai poder ser se o cara tiver formação em direito e tiver mais do
que 34 anos, né? Maior ou igual a 35, de 35 para cima. Aqui no caso vai ser falso por o operadológico e ele só retorna true. E para que tudo para que o if aqui ó execute o que tá aqui dentro, o retorno dessa expressão todo tem que ser true. Senão ele vai executar o que tá no else. Então aqui no caso, no quando a Gente usa o e lógico, você tá quer verificar duas condições. E ele só vai retornar true. A única condição para ele retornar true é se as duas condições, as duas expressões
ao redor do e lógico forem retornarem true também, forem verdade. Então vamos lá. A formação em direito aqui, ó. Formação é igual a direito. É, o que tá em formação é direito. Direito é igual a direito. Sim. Então aqui vai retornar true. A idade é maior ou igual a 35? Não. A idade é igual a 30. Então 30 é maior ou igual a 35. Falso, né? Porque o que que ele vai verificar aqui, ó? É o valor que tá em idade. Qual o valor que tá em idade? 30. 30 é maior ou igual a 35?
Não. Então ele vai retornar falso nessa segunda expressão e vai exibir lá, ó. Não pode. OK. Se eu colocar 35, sim, agora ele vai colocar pode Ser. OK. Porque aí as duas condições passaram a ser verdadeiras. No entanto, vou voltar a idade para 30. Eh, se eu colocar o lógico, o é diferente, né? O para que ele retorne true e basta que uma das condições seja verdadeira. Se as duas forem verdadeiras, ótimo, ele vai retornar true também. Mas o ou o nome já fala, né? Se ou essa condição for verdade ou essa outra, né? Se
essa condição for verdade ou essa outra também for verdade, eh, ele vai retornar verdade. Então aqui, ó, a idade é quanto? 30. 30 é maior ou igual a 35? Não, falso. Então aqui vai retornar falso. No entanto, do lado de cá essa condição é verdadeira porque a formação é direito. Aqui tá verificando se é igual a direito. Então só por conta disso, como a gente tá usando ou se uma Das condições forem verdade, ele vai retornar verdade. Então vai continuar exibindo aqui. Pode ser conselheiro. Mas se eu mudar, ó, que é formação em TI. Agora
ele não vai poder ser conselheiro. Por quê? As duas condições são falsas, né? Então aqui, ó, a formação é é direito, não falso. Então isso aqui vai retornar falso. A idade é maior do que igual Maior ou igual a 35? Não é 30. Então aqui vai retornar falso também. Como as duas condições são falsas, no ou lógico, ele retorna falso, tá? Espero que você tenha entendido, pessoal. Se não entendeu, deixa o comentário aí. E o o a exclamação é a negação, então ele vai inverter. Aqui, por exemplo, ó, se a idade for maior ou igual
a 35, pode ser Conselheiro, né? Então, a lá vai imprimir, ó. Pode ser por maior igual a 35. Mas se eu colocar o não, com a exclamação, o que que ele vai fazer? Ele vai negar tudo isso. Então, o qual que é a nega a negação, o que que ele retorna aqui? True. Qual que é a negação do true? Falso, né? Qual que é a negação da verdade? A falsidade, né? Do verdadeiro é falso. E a negação do falso? verdadeiro. Então aqui, ó, quando você observar uma exclamação, você vai Colocar a palavra não. Então, ó,
a idade não é maior ou igual a 35, vai retornar o que aqui falso, né? Porque é sim. Beleza? Então, ó, no que que ele retornou falso. Por quê? Porque na verdade é sim maior ou igual a 35. Beleza? Então, o a interrogação ela é a negação da operação. Então, você leia dessa forma. Se não eh Eh aqui no caso, né, se a idade não for maior ou igual a 35, vai exibir, pode ser conselheiro. Ou seja, vou colocar aqui 30, tá? Aí, ó, D. A detalhe, né, pessoal? Você tem que eh aqui, ó, envolver
toda a operação, tá? Então, eu tô negando não só a a idade aqui, do jeito que tava, ele tava negando só a idade. Você precisa envolver com parênteses toda a operação. Então, aqui, ó, vai retornar alguma Coisa para mim que é verdadeiro ou falso. Eu tô verificando, ó, se a idade é maior ou igual a 35. idade é 30, ou seja, vai retornar falso. E aí ele vai negar o falso, ou seja, vai ficar verdade. Então, ó, se verdade pode ser conselheiro. OK, pessoal? Então, por hoje é isso, tá? Né? Por essa aula, tá? já
é o suficiente, a aula já ficou bem extensa. Então, na próxima aula a gente continua Falando aí sobre tipos de dados em JavaScript. Como eu falei, JavaScript é um conteúdo bem amplo, né, que demandariam dezenas de horas de estudo. Aqui é mais pra gente dar uma noção geral para fins de concurso público. Valeu. Se essa aula foi útil para você, deixe o like aí, se inscreva, compartilhe, ajude aí no na divulgação desse conteúdo que pode ajudar e muitas pessoas. Grande abraço, bons estudos e sucesso. E pessoal, Beleza? Aqui é o professor Arnaldo, auditor TI e
hoje a gente começa a nossa segunda parte da aula de JavaScript. Se você não é inscrito no canal, já te convido a se inscrever, a compartilhar o nosso conteúdo, a se inscrever também no nosso grupo de WhatsApp para est recebendo ali conteúdos em primeira mão, diretamente de mim e também a fazer parte do nosso grupo de membros, de modo que você tenha acesso aí a alguns conteúdos exclusivos e também esteja Contribuindo com a continuidade do nosso trabalho. Então vamos lá falar sobre os tipos de dados em JavaScript. Nós falamos na primeira aula de alguns tipos,
né? A gente falou sobre string, sobre números. Vamos revê-los aqui rapidamente só para fixar o conhecimento. Ó, em JavaScript, as variáveis podem armazenar diferentes tipos de dados. E essa é uma outra característica do JavaScript, tá, pessoal? Não é uma uma linguagem fortemente tipada, que nem, por exemplo, o Typescript, que é derivado do JavaScript, ela é fortemente tipada. Você tem que definir o tipo do da do dado que vai ser armazenado naquela variável. Aqui em JavaScript a gente tem esse dinamismo de modo que uma variável eh aqui, por exemplo, X, ela começou como indefinida, tá? indefinido,
undefined é um tipo de dado em JavaScript. Saiba disso. Então, quando Você não especifica um valor, quando você não atribui um valor de um tipo A ou B, essa essa variável ela passa a ser do tipo indefinido. Aí aqui embaixo, ó, essa mesma variável, ela some valor numérico, ela passa a ser um number. Então, X agora é um number, 5. Em seguida, X passa a armazenar. a string John, ou seja, agora X não tem mais C, mas sim a string John, ou seja, Agora X é uma string. Então essa é uma característica do JavaScript, tá?
Ele e essa linguagem ela permite esse essa tipagem dinâmica. Ó, string. String a gente já falou, é uma série de caracteres. A gente pode utilizar aspas simples ou duplas. Tá? Aqui, ó, a gente tem três variáveis e você pode escolher colocar envolver o texto ou a palavra, entre aspas simples ou dupla. Um pequeno detalhe, se você precisar eh referenciar uma aspa simples no meio da palavra, como por exemplo aqui, ó, it's or right. Aqui no its tem aqui e a gente precisa dessa aspa simples, né? Para para tornar isso possível, as aspas que você vai
coldo tem que ser do tipo contrário, tem que ser tipo assim, se dentro você tiver usando a aspa simples, fora você tem que usar a dupla e vice-versa. Se dentro você quiser Utilizar aspas duplas, como aqui na terceira string, ó, envolvendo Johnny, é, ó, he called Johnny. E aí vai aparecer no texto Johnny, entre aspas mesmo. Se você deseja isso aí, você tem que colocar aspas simples ao redor, ok? Só lembra disso. Você inverte. Aspas simples dentro, dupla fora. Dupla dentro, simples fora. Ok? Para não cair em nenhuma pegadinha é boba como essa. Number, tipo
numérico, pode ser Escrito com ou sem casa decimal. Aqui, ó. Temos duas variáveis X1, X2. A primeira aqui com casa decimal, a segunda sem casa decimal. Você a coloca o ponto, tá, para representar a casa decimal. Tipos boleanos, né? Eh, são aqueles que retornam true ou false, verdadeiro ou falso. Beleza? Não tem um terceiro tipo, é um terceiro valor possível pr esse tipo de de variável. É, sim. é Verdadeiro ou falso. Então aqui, ó, a gente tem as variáveis X, Y e Z que foram inicializadas. E aí, ó, aqui tá, a gente tá fazendo, tá
verificando uma condição se x o se o conteúdo de x é igual ao conteúdo, o valor de Y. X é 5, Y é 5 também. Então, ó, retorna true, retorna a verdade. Essa operação retorna a verdade. OK? Aqui retorna falso porque Z é 6 e X é 5, Né? Elas não são iguais. Arreis são utilizados para armazenar múltiplos valores em uma única variável. O arrei é um tipo de dado muito utilizado, né? É quando você, o nome já tá aqui, acabei de falar, né? Quando você quer armazenar muitas eh vários valores, múltiplos valores em uma
única variável, a gente define de forma literal um arrei através dos colchetes, ok? Colchetes define um arrei e os itens do arrei são Separados por vírgula. Primeiro índice começa no zero. Vou explicar isso aqui, fiquem tranquilos. Então aqui, ó, a gente tem um arrei com três string. Vocês estão vendo? Ao invés de colocar uma única string, ele tá colocando aqui, ó, e a variável cars, né? Carros e definiu um arrei e atribuiu essa variável, OK? E aí, ou seja, é um arrei com três strings, três marcas de carro aqui, né? E vamos ver isso na
prática. Vamos lá, ó. Eu vou apagar isso aqui e vou colocar eh vou declarar um arrei também aqui, ó. Var eh carros vai receber colchetes. Beleza? E aí você vai colocar as strings, né? Então, por exemplo, MW Fiat e Honda. Pronto. Beleza. Se eu colocar no log, por exemplo, assim, ó, como é que eu faço para exibir o primeiro elemento desse arrei? Eu quero pegar o primeiro valor que é BMW, é só você colocar o nome da variável colchetes, OK? Cochetes. E dentro do colchetes você vai colocar o índice que representa a posição desejada. E
aí um detalhe, Pessoal, a primeira posição, ela é referenciada pelo valor zero, ok? Então, ó, 0 1 2 de novo, 0 1 2. Então, se você quer o primeiro valor, você tem que colocar zero. Decora isso, tá? Isso em qualquer linguagem de programação. Você quer pegar o primeiro elemento de um rei, posição zero. Beleza? Então, ó, quero carros na posição zero. E aí isso vai aparecer lá no console, ó, F5. Tá aqui, ó. BMW. Ah, professor, mas só aparece no log aqui. Como é que eu faço para pôr na tela? Eu quero aparecer no que
apareça no texto. Ol, vamos colocar, vamos reprisar um pouco aí da última aula, ó. Então, por exemplo, ó, ó. Marca. É, vamos supor que você quer exiber bem aqui dentro, aqui no parágrafo, tá vendo? Quero que apareça aqui a marca eh especificada lá. Você pode fazer o seguinte, ó. Agora a gente só precisa buscar esse parágrafo para colocar um valor dentro dele. Então, ó, eu vou criar uma variável chamada marca e vou buscar ele. Como é que a gente faz? Lembra aí da primeira aula para acessar a árvore de objetos da nossa página, documentid para
pegar pelo ID. Lembrando que essa não é a única forma de buscar elementos, existem várias, OK? Então aqui a gente já vai ter o parágrafo. Então a gente foi buscar o elemento HTML pelo ID marcas, ou seja, ID marca. Então esse parágrafo vai ser retornado e vai ser atribuído essa variável marca. Legal. Aí você pode fazer assim, ó. Quer exibir lá? Você coloca, ó, marca pon innertml, né? para para colocar um Valor lá ou para ler o valor de dentro do parágrafo para atribuir. Para atribuir é só colocar um igual depois do iner HTML o
valor que você quer. Qual o valor que eu quero passar? Algum valor do arrei? Ó, eu quero o primeiro valor do arrei carros. Vamos ver. Tá aí, ó. Marca PMW. Show de bola. Quero o segundo valor é o Um. Apareceu aqui, né? Aqui também, ó. Tá aí, Fiat. OK. E assim sucessivamente. Então, de novo, posição zero, posição 1, posição do OK? Ah, e se eu quiser exibir os três, uma coisa comum é a gente utilizar, por exemplo, o laço, um laço de repetição. O laço de repetição é quando você quer eh que determinado código seja
Executado uma x quantidade de vezes. Então, a gente faz um laço de repetição. Vou fazer um laço aqui, ó, for, que é um dos laços mais tradicionais aí, tá? Então, a gente declara uma variável, podemos utilizar o o VAR ou ou LED. Vou usar aqui o VAR. VAR é X = 0. Então a gente defini um contador que aqui é a condição. Então enquanto x for menor que carros ponto Lente x mais. E aí você pode exibir no log, ó. OK? Aqui no log você coloca, ó, quero exibir carros na posição X. Aí eu vejam
o log aqui, ó. Pronto, exibiu os três, ó. BMW, Fiat e Honda. Como professor? Explica aí. Não entendi nada desse desse trecho de laço de repetição. Pessoal, isso aqui é um é Um for simples, entre aspas, né? Depois que a gente no começo é pode parecer complicado, mas depois que você entende é tranquilo. Já vi cair em questões de prova discursiva de TI de nível superior pedindo a implementação de um laço de repetição. Beleza? E o detalhe, a prova pedir assim, ó, faça um laço de repetição em qualquer linguagem que você quiser. Olha Que que
top. Então, sabendo um em um, acabou. Mas isso aqui é basicamente é é semelhante a várias linguagens. Então vamos lá, pessoal. O for ele tem três parâmetros. Vocês estão vendo aqui separados por ponto e vírgula. O primeiro, o segundo e o terceiro. O primeiro é aqui é onde a gente inicializa alguns algumas variáveis ou contadores. Normalmente a gente e inicializa aqui contadores. Para quê? para te permitir percorrer cada índice Do arrei, cada posição do arrei. Então eu implementei aqui, inicializei x como zero, né? x como sendo zero. Então, o valor de x, valor inicial de
x é zero. O segundo parâmetro aqui é a condição que vai ser verificada para que o conteúdo interno do laço, ou seja, que tá entre as chaves, seja executado. Esse conteúdo só vai ser executado se essa condição for verdadeira. Vou falar de novo. O que tá dentro do laço só vai ser Executado se a condição for verdadeira. Então vamos. E aqui no na terceira parte é um incremento. Vou chegar lá agorinha. Vamos eh simular aqui a primeira execução do código. Então é o navegador vai chegar aqui e vai verificar. Ah, beleza. X é igual a
0. Ele vai fazer isso uma única vez. vai inicializar a variável x = 0, que nem tá aqui. X var x recebe zero. E aí ele vai verificar a condição X. Quanto que é X? Zero. Zero é menor que carros ponto Lente. Que que é lente, gente? Carros. Vamos lá. Carros é um arrei, não é? Como é que o senhor sabe que é arei? Professor, cochetes. Beleza. Carros é um arrei. Todo coch, todo arrei possui uma propriedade chamada lente. É que é essa aqui, ó. Ela é padrão. E o que que ela faz? Ela retorna
a quantidade de elementos que você tem no arrei. Quantos elementos eu tenho lá? Três. 1 2 3. Ah, professor, mas você falou que começa no zero, gente, não confunda, tá? A gente tem aqui três elementos. A, na hora de percorrer os índices do arreio, aí sim começa a primeira posição, é a posição zero, mas começando no zero no um, não deixa de ter três elementos. Então, o comprimento do arrei 3, OK? Então, zero é menor do que 3, verdade? Então, ele vai entrar e vai Executar o que tá aqui. E o que que ele tá
executando aqui? Tá exibindo no log a o valor da posição X de carros. Quanto que vale X no começo? Zero. Então, carros na posição zero. Quem é carros na posição zero? BMW. Por isso que você tem aqui, ó, BMW. OK? Aí ele volta. pra segunda execução para verificar se vai entrar no laço de novo. Professor, ele vai inicializar X como zero, eh, como sendo zero de novo? Não. A aqui do lado esquerdo ele só executa na primeira execução, beleza? Ele inicializa na primeira execução. Ele não vai repetir isso mais, ele vai só verificar a condição
a partir da segunda execução. Então, o X aí o que que ele faz, pessoal? Detalhe, esqueci de falar. Depois que ele executa o que tá aqui dentro, aí sim entra o terceiro parâmetro aqui, que é implementar o que tá definido. Aqui no caso é um incremento, mas poderia ser um Decremento. E um incremento pode ser do tanto que você quiser. Aqui eu tô incrementando mais um, ou seja, X vai receber mais um. Ou seja, depois que ele exibiu carros na posição zero, que é a BMW, ele vai incrementar X + 1. Então o X passa
a ser 1. E aí ele vai verificar de novo. X que é um é menor do que carros ponto lente, que é 3. Um é menor do que três, verdade? Aí ele entra de novo aqui e executa, ou seja, carros na posição Fiat. Foi lá e exibiu Fiat. Perfeito. Aí o que que acontece? final da execução, incremento de novo. Então agora X ganha mais um, ou seja, X agora é 2. Do é menor do que 3, verdade? Então ele vai exibir carros na posição dois. Carros na posição dois é Honda. Beleza? Terceira execução, né? E
aí, eh, ele vai incrementar x + 1. Então, x agora passa a ser 3. 3 é menor do que 3. Não, falso. Aí ele encerra o e termina a execução do Laço, né, e continua depois do laço, o que tiver definido depois do laço. Beleza? Então isso é um laço de repetição e muito útil, muito utilizado. Qualquer dúvida deixa o comentário aí. Professor, não entendi, explica de novo. Tem como fazer um vídeo só falando sobre isso? Na hora aqui só mostrando, ó, que o arrei pode ser declarado em múltiplas linhas. Não precisa ser uma linha
só. Você pode Quebrar a linha aí, tá vendo? Tá. Ah, e a gente pode fazer a rei também de número, de objeto. Que que é objeto? Vou explicar agorinha. Arrei de arrei. Beleza? Ah, outra coisa, tem como você declarar a um arrei através desse dessa dessa chamada aqui, ó, new array. E aí você passa os elementos. Eh, lembra o que a gente falou de forma Literal? Olha aqui. Essa é uma forma literal de declarar um arrei. Essa aqui não é uma forma literal. Beleza? Que você tá chamando eh um método que vai criar, beleza? Ali
no método construtor da reanciar um novo objeto a partir dessa classe, né? Mas eh não, dessa forma você tem uma, segundo a documentação, um desempenho melhor em termos de velocidade, tá? Pois trata a variável como um objeto e o objeto ele é ele é mais complexo e ocupa mais espaço. Então, eh, você declarar a forma uma uma rei de forma literal vai te trazer melhor desempenho. Mas é claro que um programinha pequeno não vai fazer, vai ser relevante isso, né? você não vai nem perceber essa diferença. Aqui a gente já falou acessar os índices do
arrei. Vamos falar sobre objetos. Bem, ó, outra forma, outro tipo De objeto, tipo de dado em JavaScript é o objeto. Legal. [Música] E esse conceito vem da da do paradigma orientado objetos, que a gente inclusive tem uma aula aí no canal. Então, quem vai estudar Java, por exemplo, eh, tem que saber, né, para trabalhar com Java, eh, não que tem que saber, mas uma aplicação, se for desenvolver um Sistema, eh, vai ter que aprender, né, a a trabalhar com orientação objeto, eh, e outras linguagens também. E aí no JavaScript tem como você trabalhar seguindo essa
abordagem de orientação a objetos. E o que que é um objeto, pessoal? É um tipo de dado em que você pode ter propriedades e métodos. Que, por exemplo, ó, ó, eu posso aqui criar um uma variável chamada Pessoa. Eh, vou chamar aqui de cargo. Cargo de um concurso público. E como é que eu faço para definir um objeto, pessoal? A gente viu que string é aspas, número é só pôr o número boleano true ou false, arrei cochetes e objeto chaves. Beleza? Então aqui, ó, você tem um objeto cargo. E aí a questão do objeto, veja
essa seguinte situação, ó. Imagina se a Gente tivesse aqui, ó, var é o cargo, o nome do cargo. Nome do cargo é programador salário. Vamos pôr aqui 10.000. OK. A gente tem aqui duas informações acerca do mesmo eh do mesmo ser representado, do mesmo objeto, né, do mesmo elemento Representado. Então aqui a gente tá falando propriedades de um cargo e a gente pode juntar essas propriedades em um objeto só, definindo um objeto em JavaScript. Então poderíamos ter aqui, ó, nome, cargo, dois pontos, o nome do cargo, programador separa por vírgula, nome da propriedade, Salário. Ou
seja, da forma como eu coloquei aqui, eu tenho duas propriedades em um mesmo objeto e aí no em uma variável só. Então eu não preciso declarar 1000 variáveis, né? Entenderam, pessoal? E de onde que vem esse conceito? Só resumindo aí, eu, para quem quer se aprofundar, eu recomendo a aula de orientação objetos tem aí no canal. Mas resumindo, quando a gente vai desenvolver um sistema e você quer Representar algum objeto, algum elemento daquele contexto que você vai desenvolver, eh, a gente define uma classe. Então, por exemplo, se eu tenho no meu sistema um cadastro de
produtos, eu vou criar uma classe que vai representar todos os produtos. E o que que é a classe? A classe, ela tem eh atributos e métodos, propriedades e métodos. O que são as propriedades? São as características. Então, o que que o produto tem? Nome, Eh, a descrição, o valor, data de validade, vencimento, né? A categoria. Então, ou seja, são informações comuns a todos os produtos. Você lembra do conceito de classe da biologia? Eh, então, ou seja, é uma forma de você agrupar elementos com características semelhantes. Então, eh, todos os produtos eles vão ser de uma
mesma classe. Então, a gente, normalmente você cria uma classe chamada produto. E aí, todo produto que você quiser cadastrar No sistema, o que que acontece? a gente instancia, você a partir da classe você cria um objeto com aquelas características, ou seja, ah, eu quero cadastrar um novo produto, o que que eu faço? Eu vou lá na classe produto, crio um objeto a partir dela e aí eu vou ter um objeto da classe produto. Só que esse objeto ele tem o quê? As características, assim como eu e você, tem nome, tem eh várias informações, né? Em
comum. E aí você vai preenchendo, ah, o nome do produto é é notebook, o valor é tal, a categoria informática, entendeu? E aí cada objeto que você precisar criar, seja para gravar no banco ou para manipular ele, eh você vai ter que criar um objeto com essas informações. Bacana? E, ou seja, tem propriedades. Eu fosse uma eh ser humano, né, eu preciso de um cadastro de clientes. Então, você cria uma classe Cliente e a partir da classe cliente você vai criar os objetos clientes. E o e o que que esse essa classe, né, esses objetos
poderiam ter de propriedades em comum? H, nome, RG, CPF, sexo, data de nascimento. Beleza? São essas características comuns a todos os clientes, OK? Isso são as propriedades. O objeto, ele também possui métodos que são ações, aquilo que ele pode fazer. Então, o que é que um Um cliente ele pode fazer no sistema? Então, você tem os métodos, né? Ele pode, sei lá, fazer login, pode eh tem permissão para fazer uma coisa A ou B, uma ação A ou B. Então, essas ações são os métodos, OK? Então aqui, ó, é um objeto, beleza? Ele não foi
criado diretamente a partir de uma classe, mas poderia ter sido, tá? Então, mas aqui é um objeto que eu coloquei na variável cargo, que tem duas propriedades, nome, Cargo. Vou colocar só nome, né? Já tá dentro de cargo, fica autoexplicativo. Nome, salário. OK? E aí você pode se a se eu quiser exibir alguma coisa, alguma informação do objeto, aí você a referencia cargo ponto nome cargo ponome atualiza, ó lá, ó. Programador cargo ponto salário 10.000. Beleza? Então essa é a forma que você utiliza para acessar Propriedades do objeto. Olha aqui, ó, mesmo exemplo. Quer dizer,
um outro exemplo mais a mesma linha, né? Então aqui, pessoa, primeiro nome, último nome, sobrenome, né? Idade, cu do olho. Bacana, ó. E além daquela forma que eu mostrei para acessar uma propriedade do objeto, você tem outra também, ó. Então, a primeira que eu mostrei foi essa aqui, né? o o objeto ponto o nome da Propriedade. Só que tem essa outra forma, o objeto colchetes, entre aspas o nome da propriedade. Outra coisa que você pode implementar, métodos que são ações, aquilo que pode ser feito, é aquilo que um objeto, uma ação que um objeto pode,
executar. Beleza? Eh, vou falar sobre o Os métodos aqui. Vale vale a explicação. Mas antes, pessoal, um detalhe, ó. Uma outra coisa que a gente pode fazer em JavaScript é funções. Como é que eu criei uma função? function, nome da função. Aqui, por exemplo, ó, exibir eh dado vai esse aqui vai ser o nome da Minha função, parênteses e chaves para definir o corpo da função. Que que é a função? é um bloco de código. Então, por exemplo, ó, se eu quiser exibir aqui, ó, os dados do programa do cargo aqui, por exemplo, ó, exibir
cargo. Então, eu vou, vamos supor que eu queira colocar aqui, então quero colocar aqui dentro Desse parágrafo, ó. as informações do cargo. Então, o que que eu posso fazer, ó? Então, eu vou lá buscar aquele aquele elemento, né? Poderia fazer fora, né? Mas vou pôr aqui dentro. Cargo, vai receber document. Getel elementid cargo. Beleza, fui buscar o cargo pelo ID e coloquei nessa variável. Aí, o que que eu quero fazer? Eu quero colocar o como conteúdo interno dele os o a nome, o nome e o salário do cargo. Então, ó, eu vou faz concatenar uma
string. Como é que eu faço? Então, aqui, ó, isso aqui é uma string, não é? Cargo é tal. Como é que eu faço para exibir o valor do cargo aqui? concatenar uma juntar o valor dessa string com o valor que tá aqui na propriedade de nome. Você concatena a string. Tem Várias formas, uma mais simples essa aqui, ó. Só usar o mais. Então, ó, cargo ponto nome. Que que vai aparecer aqui, ó? Vai, aqui eu tenho uma string e aqui eu tenho outra string. O mais vai juntar essas duas, concatenar. Então vai aparecer cargo, espaço,
dois pontos, espaço e o valor que tá aqui, programador. Só que para que a função seja executada, ela precisa ser invocada, tá? Você tem que chamar Ela aqui, ó, exibir cargo. Se você não chamar ela, e você chama dessa forma, exibir cargo e os parênteses para porque você quer o resultado da função, tá? Depois a gente entra nesse mérito aí do parênteses ou não, senão a aula vai ficar muito extensa. Lembrando que que o nosso foco não é que você fique PhD em JavaScript, porque senão a gente precisaria de dezenas de horas disso tudo, mas
só que você tem uma base geral Para que possa fazer um concurso público. Eh, bom, cargo, deixa eu ver o que que eu errei aqui. Cargo indefinido. Vamos lá. Aqui cargo ID cargo. Beleza. Então, busquei o elemento pelo ID cargo e aí eu falei cargo piner innertml vai receber essa string concatenado com cargo Ponto nome. E aí a dica para vocês aqui, ó. Eh, apareceu indefinido. A gente Ah, tá, entendi. Por quê? Eh, a dica que eu ia falar, pessoal, é usar o F12, tá? Você abre aqui o console porque se tiver ocorrendo algum erro,
vai aparecer aqui. O erro aqui, tá? É porque eu coloquei o mesmo nome aqui, ó, pra variável cargo e aqui dentro também. Beleza? Então aqui eu vou chamar Só de C. Entenderam? Aí então agora sim. Esse C é o é o parágrafo lá do meu elemento HTML. E aqui o cargo é o objeto de onde eu quero ler o nome. Agora vai. Entendeu? F5 programador. Tá aí, ó. Cargo programador. Beleza. Aí nem precisa desse outro aqui, né? Que a gente já tá colocando lá dentro. Então, tá aí, ó, cargo programador. Bacana. E aí, se você
quiser, você pode concatenar as duas informações, ó. Então, quero concatenar mais coisas. Coloca mais, outro mais. Então, ó, vou pôr ponto e vírgula e vou colocar, ó, salário. E aí vou concatenar outro string, que é o cargo ponto salário. Então, eu tô concatenando quatro strings, tá vendo, ó? essa aqui com o valor que tá lá no cargo mais eh ponto e vírgula, né, para Separar salário dois pontos e o valor que tá no salário. Então agora vai aparecer, ó, programador salário 10.000. OK? Show. E se eu tivesse um método que me retornasse essas informações todas?
É só você criar um método. E o que que é o método, professor? É como é na implementação aqui é como é uma função, né? Só que no contexto de um objeto, de uma classe, a gente chama de método. Então, Por exemplo, ó, info, eu vamos supor que seja um método que eu chame, eh, que eu chamei ele de info, que a o propósito dele é trazer as informações do cargo. Então, ó, qual é a sintaxe para definir aqui? É objet propriedades num objeto, nome do da propriedade, dois pontos. o valor. Se for string, coloca
como string, for número, como número e etc. E separa por vírgula, tá? Lembrando que o Último elemento não precisa da da vírgula. E método, mesma coisa no começo, né? O nome, dois pontos. Aí aqui na frente você vai colocar function. Você vai definir uma função function, abre chaves e aqui dentro você vai colocar o que que você quer que essa função realize. No meu caso, eu quero que ela retorne. Então vou colocar o return essa essa concatenação toda. Então, Ó, cargo. E aí eu vou colocar aqui, ó, mais é aí você pr acessar um objeto
daqui, a gente coloca, ó, dis do para acessar uma propriedade do objeto, você coloca dis ponto o nome da propriedade. Então, ó, nome eh vírgula salário mais então ó, desponto salário ponto e Vírgula. Vou explicar isso aqui agorinha. Então aqui, ó, na hora que você chamar a função exibir cargo, eu posso aqui, por exemplo, eh simplesmente ã chamar o método info, que já vai me trazer todas as informações do cargo. Então, ó, cargo pinfo, tá aí, ó, cargo programador R$ 10.000. OK? Vamos entender e melhor essa questão do Método. Definição do método. Nome, dois pontos,
function, parênteses e chaves, definindo o corpo do método. OK? O método, ele pode ou não retornar alguma coisa. Aqui tá retornando. Como é que eu sei? Palavra-chave return. Se você vê isso na prova, você sabe que return é para retornar alguma coisa. E o que que ele tá retornando? Uma string. E ele tá concatenando várias strings e vai retornar uma string só. Então o que que ele tá concatenando, ó? A string cargo mais o valor que tá na propriedade de nome. E por que que eu coloquei o dis, pessoal? Nome não é uma propriedade desse
mesmo objeto em que tá o método. Sim. Então, para você acessar um objeto, eh, um, uma propriedade ou um método da mesma classe ou do mesmo objeto, você usa a palavra-chave dis, beleza? Então, ó, dis nome, ou seja, tá lendo aqui e tá concatenando com o símbolo, o cifrão aqui, né? Símbolo de Reais e a o valor da propriedade salário. OK? Então você vai ter aí eh uma concatenação de todas as informações acerca do objeto. Legal, pessoal. E aí, como é que funciona essa execução? A gente criou o objeto, criamos uma função que busca a
um parágrafo pelo ID lá no HTML. E a gente tá colocando um valor dentro desse parágrafo, que é o quê? o valor retornado pelo método info do Objeto cargo, isso aqui, tá? Mas se você tirar a chamada da função, nada vai acontecer. Por quê? De novo, função só vai ser executada se você invocar ela, ok? Ela não é autoexecutada, não. Bacana? Saiba disso. E outro detalhe pra gente finalizar essa parte aqui de função, só para você ter uma noção, tá, pessoal? Eh, do jeito que está aqui o valor de Cargo, a gente ele tá pegando
aqui de fora, né, que é uma propriedade global, ou seja, ela eh está fora do escopo de alguma função. Então, qualquer eh função que eu tiver aqui dentro vai conseguir acessar carro. E diferentemente de C, por exemplo, ó, C tá dentro, é um escopo, loco, tá vendo aqui, ó? Variável local. Então, ou seja, C só é visível dentro da função exibir Cargo. Aqui fora não é. Beleza? E aí, do jeito que tá aqui, eh, o cargo eu tô pegando de fora. E se eu quisesse passar um parâmetro paraa função, então, por exemplo, aqui, ó, é
possível você fazer, ó, eu quero passar um objeto para pra função exibir cargo. Então, vou passar, ó, cargo. Quem é cargo? Essa variável aqui, ó. E ela é o quê? Um Objeto, tá? E aí você, se você quiser passar um parâmetro paraa função, você tem que receber esse parâmetro, OK? Então, aí você dá um nome. Então, por exemplo, eu vou chamar de eh de objeto, tá? Vou chamar de obj, só para não confundir. O obj, tá? Então, aqui dentro eu poderia fazer assim, ó. Obj ponto info, porque aí eu teria as informações do mesmo jeito.
Legal? Não entendi, professor. Olha, vamos lá. Isso aqui é o cargo um, né? E se fosse um cargo dois? Cargo 2, DBA ganha 9.000. E aí, ó, na primeira eu vou Chamar a função várias vezes, ó. Chamei a primeira, passei cargo um. Na segunda, eu vou passar cargo dois, ou seja, eu tô passando outro objeto nessa segunda vez. E aí, o que que ele vai fazer? A função vai receber esse objeto cargo e vai, é como se ele tivesse colocando numa outra variável lá um argumento quando ele recebe o parâmetro. Aqui eu tô chamando de
quê? De OBJ. Então é o cargo ele vem para cá, para obj. E aí lá dentro eu tô eu tô chamando O método info desse objeto para exibir os dados do cargo. Então quando eu chamar a primeira vez, quem vai ser passado? O objeto cargo um, né? programador. Quando eu chamar a segunda vez, eu vou passar o objeto com as informações do DBA. Então, ó, o resultado vai ser isso aqui, ó. Eh, ah, tá, mas aí um detalhe, né? Eu tô exibindo no mesmo lugar. Eh, o que que a gente pode fazer aqui Para exibir
lá também? Vou fazer isso aqui, ó. Tive cargos. Vou criar uma div e eu quero exibir aqui dentro as informações, tá? Então, vou fazer isso aqui, ó. Vou eu vou pegar aqui a a o elemento cargos, tá? Quem vai ser cargos? É aquela div. E aí eu vou criar um dinamicamente um objeto aqui, ó. um parágrafo V pon document pon create element aqui, ó. Então vou criar um elemento dinamicamente. Que que que você tá fazendo, professor? Eu tô criando um parágrafo. Então, vou criar um parágrafo e vou colocar aqui no que eu chamo de P.
E aí eu vou vou fazer o seguinte, ó. Eh, aqui, ó, p. Innertml, ou seja, criei um Parágrafo, coloquei um conteúdo interno nele, o que conteúdo? As informações do objeto. OK? Então, assim, ó. Eu vou criar um parágrafo, vou colocar as informações do objeto aqui e aí por fim adicionar esse parágrafo dentro de cargos, que é a div. Então, ó, cargos pon appen childild p. Então, o que que eu vou fazer, ó? Eu tô pegando o Parágrafo e tô colocando dentro da div dessa forma, só que dinamicamente, né, pessoal? Eu coloquei aqui visível para só
para vocês terem uma noção. Então, de novo, devagar e aí você reprisa aí quantas vezes forem necessárias. Que que a função bicic vai fazer? Vai receber um objeto que representa as informações do cargo lá dentro. Eu tô buscando a div eh ID cargos, né? E eu Poderia até melhor colocar ela fora para não ter que ficar buscando toda vez, né? Mas deixa aí. Então, tô indo buscar aquela div e aí eu tô criando um parágrafo dinamicamente, colocando aqui na variável P. Só que quando você cria, ele não aparece lá no seu HTML. Você tem que
colocar lá. Eu criei, coloquei um conteúdo interno para esse parágrafo. Qual conteúdo? conteúdo, a string retornada pelo método Info do objeto, que é o que foi passado, né? E depois eu vou lá na div e adiciono um elemento filho, coloco um elemento dentro da div cargos, né? Que é o quê? O parágrafo que eu acabei de criar. E aí toda vez que eu chamo o método, eu ele ele reexecuta isso aqui. E aí no fim das contas você vai ter, ó, as informações do cargo, programador e DBA. OK? Uma coisa que pode parecer boba, mas
É eu acho que é importante vocês saberem. Professor, como é que eu sei quando é um atributo e quando é um um método? A gente viu que o objeto ele pode ter atributo e método. O método tem isso aqui, ó. Normalmente, né, vai ter o parênteses, tá? Então, que objeto ponto info parênteses, né? Aqui, ó, create elemento, tá vendo? Que recebe um parâmetro também, que é uma string com o Nome do elemento que você quer criar, a tagzinha HTML, né? Beleza? Aqui, ó, get element by é um método também. E o que que é a
propriedade aqui, ó? Não tem parênteses. Tá vendo, ó? Aqui já fala, ó, property, né? Não tem parênteses. Então, ó, P. Inner HTML, o lente do arrei também que a gente fez agorinha, né? Tipo arrei p lente é uma propriedade. Beleza? Então, ó, Propriedade, método, propriedade, características, método, são ações que aquele objeto pode eh executar. Outro tipo possível em JavaScript é o indefinido, tá? Quando você cria uma variável, não especifica nenhum valor, ó, ela fica como sendo indefinida, undefined, OK? Dom, document object. Pessoal, já falei sobre o DOM, né? O navegador, ele na execução, na Leitura
da nossa do nosso arquivo HTML, ele cria uma árvore de objetos que ele chama de DOM, que é o document object, tá? E aí você, todos aqueles elementos que tem no seu no seu documento HTML, eles vão para dentro dessa árvore. E como que a gente acessa ela? Através da de document, né? Ó, um modelo de objeto padrão e interface de programação HTML. Meio de pegar, alterar, adicionar e deletar Elementos HTML. A gente consegue sim criar elementos de forma dinâmica. Vocês viram que eu que eu fiz aqui, né? Se vocês repararam, ó, que que eu
fiz aqui? Aqui em cima eu tô buscando um elemento no document. Aqui eu tô criando um elemento no documentio desses métodos, tá vendo? Então você consegue e alterar a estrutura da página de forma dinâmica. Então, olha aqui, ó, uma Árvore representando um arquivo HTML, ó, o elemento root HTML. Aí dentro dele ele tem um o head e o budy. Dentro do head tem um title e o texto. Dentro do do budy você tem os elementos visíveis lá pro usuário, né? Tag A, H1. Tá vendo? Outra coisa que é legal diferenciar também JavaScript é existem, isso
é HTML também, né? Existem ah os elementos. E quando a gente fala elemento, são os elementos HTML, são as tags, não tem as tags que a gente põe entre o símbolo de menor e maior que então ó, HTML, bud1, então e o head title, isso são elementos. Por isso que quando eu falo elemento, elemento HTML. Só que existem eh outros tipos de objetos dentro do dom, não só elementos, OK? Ah, existem eh nós e existem também textos. Então, tá aqui, ó, texto, text, Tá vendo, ó? Então aquele valorzinho que você digita dentro da tag é
o texto. Então ele vai pro domina, mas não como um elemento, como um texto. Ok? É bom saber essa diferença porque existem métodos do tipo get element, create element, ou seja, para criar ou para buscar elementos HTML. A gente tem métodos que podem ser executados sobre os elementos HTML, como a gente Viu. Olha aqui, ó. O get element by ID é uma das formas de buscar um elemento pelo ID. A gente usou ele várias vezes ao longo dessas duas aulas. Ah, e o inner HTML, uma propriedade, tá vendo? uma propriedade para pegar ou alterar o
conteúdo de um elemento, não é? Aqui no caso, ele tá fazendo o quê? Pegando ou alterando? Ele tá alterando, né? Ele tá atribuindo o valor à Propriedade eh a esse elemento que ele buscou pelo ID, que é o parágrafo. Entendido? Só que existem outras formas de se buscar elementos também, ó. tem como buscar elemento eh pelo nome da tag e pela classe também e outras formas. Existem várias formas. Então, por exemplo, ó, ah, aqui nos cargos, eu vou simplificar tudo aqui para não confundir Vocês, tá? colocar aqui P eh, parágrafo. Beleza? Se eu quisesse colocar
um texto aqui dentro, mas sem definir um ID assim, né? Da daquele jeito, como é que é, gente? Aqui, sem colocar um ID assim. Eu quero só pegar o parágrafo sem colocar ID, pegar pelo tipo do dado. Você pode fazer assim, ó. Eh, document.ggetement by tag name, ou seja, Eu tô buscando elementos pelo nome da tag. Aí você coloca aspas e o nome da tag. Qual tag? P. Beleza? Só que aí tem um detalhe, pessoal, ó. Olha só aqui, ó, os dois métodos, ó. Get element by ID. O get element by ID que a gente
estava usando anteriormente, ele tá no singular, vocês estão vendo por quê? Porque o ID só retorna um único elemento. E por quê? Porque o ID é como Se fosse o CPF. Ele é único, ele deve ser único. Você não deve repetir o mesmo ID no mesmo documento, HTML. Entenderam? Não se deve fazer isso. Ah, o parágrafo não é diferente. Você pode ter vários parágrafos na na sua página. Vários. Beleza? Então aqui, ó, aqui eu tenho um, aqui eu tenho parágrafo dois e eu posso ter vários. Então, no parágrafo, ele vai retornar uma coleção de objetos,
Ó, baseado no tipo de elemento especificado. Então, ó, primeira coisa que vocês têm que saber é isso. Então, é importante diferenciar esses métodos, essa questão do do plural e do singular, tá? Então, o ID só retorna um, ok? Tá? Então, se eu quiser exibir uma informação no primeiro parágrafo, então justamente por retornar mais de um elemento, que que ele falou? Ele retorna uma coleção. Então, quando você quer especificar qual parágrafo você quer, se você quer o primeiro, o segundo ou terceiro, é como se fosse um rei. Você tem que pôr o colchetes indicando. Não, eu
quero o primeiro parágrafo que você achar na página, posição zero. Beleza? E o que que eu quero fazer com ele? Quero colocar um textinho, ó. Eh, Oi. Que que vai aparecer? Oi. Tá vendo, ó? Um, apareceu oi. O dois não apareceu nada. Se eu colocar aqui, ó, um, que que ele vai acontecer? Ó, no dois que ele colocou oi. Entenderam? No um ele não colocou. Por quê, pessoal? Então, de novo, o que que o navegador vai fazer com esse método, ó? Buscar todos os elementos pelo nome da tag. Qual tag? P. Então, ele vai procurar.
Opa, achei um Parágrafo. Então, vem pra lista, primeiro elemento. Ah, achei outro parágrafo, vem pra lista, segundo elemento. OK? e assim sucessivamente. Ele vai varrer a o documento todinho, procurando todos os parágrafos e vai trazer todo mundo. Ou seja, no final disso aqui, ele vai ter uma rei, uma coleção de objetos. É como se fosse uma rei, né? E aí justamente por isso, você tem que especificar dessa coleção que você Me retornou. É, eu quero o segundo, posição um, não, eu quero o primeiro, posição zero. E o que que eu quero fazer com ele? Quero
mudar o conteúdo interno e coloquei alguma coisa. Beleza? Entenderam? Aí então aqui a gente tá buscando elemento pelo nome da tag. Você pode buscar elemento também pelo nome da classe. Então vou colocar bem aqui, Ó. Time de futebol, ó. Flamengo e ó, Vasco. Beleza. [Música] Ã, eu vou vou colocar no log, no uma variável aqui, ó, var time, ó, document. Get element by class name. Uma uma terceira opção de você buscar elementos pelo nome da classe. Buscar elementos pelo nome da classe. E qual que é o nome da classe? Aí a gente tem que Definir
aqui, ó. Classim. Class team. Essa não é uma aula de de HTML, nem de JavaScript. nem de CSS, mas a classe é uma forma de você, por exemplo, é muito utilizado na hora de de estilizar, né? Então você quer aplicar o mesmo estilo para todo mundo, para para um grupo que específico, você usa classes. Então, ó, todo mundo que que Fizer parte da classe time vai receber o estilo tal, uma cor vermelha. Entenderam? E o ID é quando você quer, por exemplo, estilizar ou referenciar um único objeto, um cara específico aqui. Não, eu quero um
todo todo botão, eu quero que tenha o mesmo estilo, a mesma cor, o mesmo formato. Você define uma classe e coloca as propriedades desse botão, né? As características aqui, ó. Então, esse Seria um caso desse. Então, eu tenho vários aqui, dois parágrafos da mesma classe, time. E aí eu quero buscar um eh esses elementos pela classe. Qual que é a classe? Time. Só que vamos lá. Aqui o que que vai me retornar? Times, né? Por ele vai buscar todos os elementos da classe time. Então, ele vai retornar uma coleção de objetos. Professor, mas se tiver
só um mesmo assim vai continuar sendo uma coleção, um arrei. É como se Fosse um arrei com um elemento só. Entenderam? Assim, ó. Como se fosse assim, ó. Um arrei com um elemento só, ó. Flamengo. Pronto. Entenderam? Mas não deixa de ser um arrei. Continua sendo um arrei, uma coleção, né? E aí na hora de você, então eu busquei todo mundo da classe time e coloquei na variável times. E aí se eu quiser exibir num log, por exemplo, ó, então eu quero Times na posição zero, ou seja, quero o primeiro time que você encontrou. Tá
aqui, ó, do lado direito, ó. Tá vendo aí? Ah, professor, ele retornou o parágrafo. Retornou porque ele buscou o elemento todo. Ah, eu quero só o o conteúdo interno aqui. Fácil demais. Pon iner. HTML. Tá aí, Flamengo. Se eu quiser pegar o segundo elemento, um Vasco. OK, entenderam? Então, a gente viu aí como buscar elemento pelo ID. pela tag, pela classe, né? Só se atentar essa diferença. Quando você busca com ID, só retorna um elemento. Então você não precisa colocar cochetes. Quando você busca pelo nome da tag ou pela classe, retorna uma coleção de elementos.
Então aí você tem que indicar a posição, qual o elemento que você Quer. Tem como mudar atributos dos elementos, né, que é mudar propriedades. A gente viu através do inner HTML. Tem como mudar um atributo, ou seja, tem como mudar a a classe, como mudar a atributos lá do HTML. Tem como mudar o estilo, a gente já viu isso também. Tem como colocar eh existem métodos para você definir atributos. Tem como você criar elemento e deletar elemento. A gente usou isso na aula de hoje, né? Criar elemento. Create Element. Você tá criando um elemento, beleza?
Tá. Aí se eu quisesse criar um elemento lá, mais um time, né, e colocasse aqui dentro do main, ó, eu poderia, vamos, vou pôr aqui, ó, main var main, vai receber document by tag name. Eu vou buscar o elemento pelo nome da tag. Qual tag? Main, só que eu posso ter vários, né? Então, mas eu quero, eu sei que só tem um, então ele vai ser o Meu primeiro, posição zero, entenderam? Então, ele vai buscar lá, vai achar só esse cara aqui, ó. E aí eu quero ele que é o primeiro que foi encontrado e
coloco, vou colocar ele aqui. Para quê? Vocês vão ver aí. Aqui eu vou criar um elemento dinâmico, ó. É, vou criar um novo time. Então, document. create element, ou seja, para criar um novo elemento que não tem, eu quero colocar um terceiro aqui, ó, um terceiro Time. Então, qual o terceiro elemento? Vai ser é um parágrafo também, né? E aí eu vou lá, ó. Time piner innertml vai receber. Ah, deixa eu ver um time aí. Fala aí nos comentários qual time que você torce aí. Eh, deixa eu ver. Opa, aqui Palmeiras. Beleza. Tá. Só que
quando você cria, ele não aparece lá. Já falei isso, né? Você tem que colocar na se no seu HTML. Então, como é que eu vou Colocar? Eu vou colocar aqui, ó, no main. Como eu não busquei o main lá, busquei aqui, ó. né? Eu vou fazer, eu vou falar, ó, man. Child. Então, eu tô adicionando um novo elemento filho no final, ou seja, quando fala elemento filho é dentro do main. Então, ele vai criar um terceiro aqui, ó, com o nome Palmeiras, não é? Então, ó, apen time. Beleza? Então, se a gente for lá agora,
você vai ter o Flamengo, Vasco e Palmeiras. A gente criou o terceiro elemento aqui, ó, de forma dinâmica via JavaScript. E aí, aqui embaixo, a gente tá buscando os caras todos lá pelo pela classe time, né? Estamos buscando os elementos pela classe time. E se eu colocar dois aqui, vai retornar o Palmeiras. Não, né? Não vai, né? Por que que não vai? Porque não existe um terceiro Elemento com a classe time. Como assim, professor? Você não acabou de criar? Vamos lá. Que que eu fiz? Criei um elemento parágrafo. Então, vamos lá. Criei um parágrafo. Vou
criar ele aqui fora, só para vocês entenderem. Criei um parágrafo. Que que eu fiz aqui nessa linha? Coloquei um conteúdo interno nele através do inrier HTML. Então, o que que eu escrevi lá? Palmeiras. Que que eu fiz depois? Adicionei esse cara dentro do main através do método appen child. Então, fui lá, peguei esse cara, coloquei dentro do main, lá no final do main. Pronto. Mas aí, o que que tá acontecendo aqui embaixo? Aqui embaixo eu tô procurando todos os elementos da classe time, né? Só que aí, vejam só, Palmeiras não tá com a classe time.
Como é que eu faço para criar uma classe? Pessoal, tem um método específico para você adicionar a classe para elemento. É esse aqui, ó. Você pega o o elemento elemento HTML que você criou. Classlist P add. ADD é para adicionar uma nova classe. Tem outro outros métodos aqui, tá? Tem o remove para remover, tem o cont para verificar se tem ou não uma classe esse elemento ele tem a classe tal, você pode Usar, mas eu quero adicionar. Qual classe que eu quero adicionar? time. Então, fui lá nesse parágrafo e adicionei a classe time. Então, ó,
classe. Agora sim, quando eu for buscar lá o terceiro elemento, o terceiro elemento com a classe time. Como assim terceiro, professor? Eu tô ficando doido, lembrem-se, primeiro elemento a posição Zero, segundo elemento, posição um, terceiro elemento, posição dois. Tá, agora sim apareceu Palmeiras. Beleza. Aqui é porque eu adicionei aqui, né? Vou tirar. Tá aí, ó. Palmeiras não entendeu. Repete, reprisa. no seu tempo. Tem como criar elemento, tem como remover elemento, tem como adicionar um elemento filho. A gente usou esses dois, tem como Substituir, beleza? Então, tem várias vários métodos que v que te permitem dar
essa Isso aí só nos mostra, né, o o potencial do JavaScript. Eu já desenvolvi jogos. Se você pesquisar o meu o meu repositório no GitHub, eu tenho jogos lá, vocês podem consultar à vontade, eh, de jogo feito só com HTML, CSS e JavaScript. Tem um potencial incrível, pessoal. Então, por essa aula e já basta, já é o suficiente, já é muito conteúdo, né, e passado de uma Forma rápida. E, mas como eu falei, é, isso aqui é só pra gente ter um panorama geral, ter um uma noção do básico aí de JavaScript, das da dos
conceitos, né? E esse conteúdo aqui, ó, eventos HTML DOM, é é um conteúdo importante, mas a gente vai fazer uma terceira aula de JavaScript porque, eh, senão essa aula vai ficar muito extensa, beleza? Mas valeu. Qualquer dúvida deixe seu comentário, não fique com dúvida. Então, utilize Essa comunidade. Vamos nos ajudar pra gente crescer, tá, pessoal? Lembre-se, ah, mas se eu ajudar meu colega, eu vou est eh é um concorrente a mais. Gente, não existe isso. A, a concorrência é consigo mesmo, tá? Você tem que melhorar a cada dia ou amanhã você tem que ser melhor
do que você é hoje. Então, continua estudando, faça o seu que você vai ter vaga, cada um vai passar no seu momento, beleza? Importante é continuar estudando. No mais, grande abraço, Obrigado. Seja aí membro do nosso canal, entra aí no nosso grupo de WhatsApp, se inscreva, compartilhe, vamos difundir aí conhecimento. Grande abraço, fiquem com Deus e até mais. E aí, pessoal, beleza? Aqui é o professor Analo e nessa aula a gente vai falar sobre HTML. Essa que é uma linguagem para estruturação de páginas do web. Então vamos direto para o conteúdo entar falando sobre o
que que é, qual o conceito e as principais Características. Bem, é o texto traz aqui que trata-se de uma linguagem de marcação padrão para a criação de páginas. O web, como eu falei, é a linguagem que se utiliza para criar a estrutura de páginas web. E aí quando eu falo estrutura, é porque normalmente em uma página web nós temos a a estruturação da página, os elementos que compõem essa página, né? Então, eu tenho um texto, eu tenho um parágrafo, eu tenho um cabeçalho, eu tenho uma Imagem, um vídeo. Então, é o que que você quer
que tenha na página. Mas nós temos também a o CSS que traz a estilização, tá? Então, basicamente, na construção de uma página web, nós temos três eh tecnologias que trabalham em conjunto, que é o HTML para dar a estrutura, os elementos que você quer que apareçam na página. Nós temos o CSS para dar a estilização a aparência, a cor, efeitos com borda, sem borda. E nós Temos e normalmente o JavaScript para dar dinamismo, para dar comportamento. Então essas três tecnologias juntas, elas permitem aí a criação de páginas web eh ricas e dinâmicas e estilosas também.
OK? Então, quando a gente fala de HTML, nós estamos falando da parte de estrutura, quais são os elementos que nós vamos querer que que essa que a nossa página tenha. Então, por isso que aqui a gente falou, ó, que descreve a estrutura da página, Consiste em uma série de elementos. Os elementos eles são representados através de tags que eu vou mostrar para vocês que nós temos a tag de abertura, de fechamento e ali a escrita do elemento que nós queremos representar. E aí os elementos eles dizem ao navegador como exibir o conteúdo. Olha, isso aqui
é uma imagem, olha, isso aqui é um parágrafo, olha, esse é um parágrafo de nível maior, de nível menor. Então, eh, aplique-se um estilo, eh, X ou Y. Então, Eh, essas são algumas características básicas do HTML, tá? Então, entenda isso. HTML, quando a gente fala de HTML, nós estamos falando de elementos que vão compor a nossa página web. Aqui tem a estrutura de uma página HTML simples e e ela começa lá com a declaração eh doc HTMLs, que diz para mim que essa é uma página HTML 5, tá? Então é exclamação doctype HTML. Já vi
que estão cobrando isso aqui. Pode parecer uma bobeira, mas é uma Possibilidade. Legal. E aí nós temos as tags que compõem a página em si. Nós temos HTML, tá? E aí você vai ver que nós temos a tag de abertura e de fechamento de abertura, né? Então, HTML. HTML é a tag que é o contêiner paraa nossa página web. Então, tudo que tá dentro da página tá dentro de HTML, a o documento como um todo, tá? Então, eu tenho a tag de abertura e lá No final eu tenho a tag de fechamento. Dentro do HTML,
eu tenho duas outras tags muito importantes, que é o head e o budy. O head traz para mim metadados, informações acerca da página, informações que vão trazer, como por exemplo, a codificação aqui, o TF8, o título da página que vai aparecer lá na aba do navegador, tá? Mas eh o conteúdo que você visualiza mesmo na página, em uma página web, ele fica dentro do budry, dentro do elemento budry. Legal. A parte visível da página fica dentro do budry. Então nós temos HTML, container em geral, o head para informações ali de controle, metadados acerca da página
e nós temos o budry para informações, conteúdo do documento, né, aquilo que vai aparecer na página. OK? O que são tags? Normalmente elas são colocadas em par. Nós temos ali a tag de abertura e a tago, tal como nesse exemplo aqui, ó. tag, o nome da tag, né, de abertura. E Aí ela se repete ao final, só que agora com a barra de fechamento. Essa aqui é a tag de fechamento e o conteúdo vai entre elas, tá? Olha aqui um um outro exemplo, ó. Eu tenho aqui a estrutura de uma página web. Eu tenho a
tag HTML, ele é como contêiner de tudo, né? Eu tenho ali o head como cabeçalho, contendo o título, tá? E aí você tem essa possibilidade de de alinhamento, né? Então, uma um elemento vai dentro do outro, tá? Um elemento HTML. E aí dentro do B, eu tenho aqui, ó, o H1, eu tenho o P, o elemento P duas vezes. Legal. O H1 vai trazer para mim um cabeçalho e o P é um parágrafo. Então eu tenho aqui um cabeçalho e dois parágrafos dentro do pury. E aí observem, ó, eh, que o que o parágrafo ele
não está dentro do cabeçalho, tá? Por quê? Porque o Cabeçalho abriu aqui, ó. H1 abriu aqui. E aí na mesma linha, ó, this is a heading. Isso é um cabeçalho. Na mesma linha ele fechou só. Então ele abriu o parágrafo. Ou seja, o parágrafo eh não foi escrito dentro do H1, como está acontecendo com esses elementos em relação ao budry. Observem que o H1, o par e os dois parágrafos estão dentro do budo mais eh embaixo. Legal. No cabeçalho eu tenho as a tag meta, tá? Lembra que eu falei que não no cabeçalho nós temos
e informações acerca do documento, acerca da página? Então tá aqui, ó. eh, descreve metadados dentro de um documento HTML. Então, dentro do R, você pode ter algumas informações como eh aqui o Sharet, que é o o conjunto de caracteres, qualquer codificação, que tá falando que vai ser o TF8. Nós podemos ter a eh aqui o metadado description. E Aí o nome é do jeito que tá mesmo em inglês, tá? O nome da da tag aqui, ó, name description. E aí o conteúdo, content, o conteúdo você coloca é o que você quiser colocar. Então aqui tá
falando, ó, eh esse conteúdo aqui foi retirado lá do da W3 Schools. Então ó, free web tutorials, tá? Tutoriais para o web. Recomendo demais. Ótima qualidade, a qualidade do conteúdo deles, tá? E aí nós temos aqui, ó, keywords, ou seja, palavra-chaves, temos O autor e nós temos a viewport. Isso aqui é uma informação para quem quer trabalhar é a parte de responsividade. OK, pessoal? Então, ó, essa tag meta, ela traz as informações de metadados e aí traz um conceito novo, que é o de atributo, tá? Os elementos HTML, quando eu falo de elemento, tô falando
da tag, tá? eles possuem atributos que são informações adicionais sobre aquele elemento. Então, por exemplo, ó, aqui e Essa tag meta, ela pode ter name e content. São dois atributos e eles são representados dessa forma, ó. O nome do atributo é igual o valor. Então, você tá falando, ó, o nome vai ser X, o conteúdo vai ser Y. É assim que a gente define informações para os atributos. Então tá aqui, ó, atributo name e aí ele colocou description, keywords, viewport. E aí o atributo content repassando ali os seus respectivos Conteúdos. Vamos falar agora sobre elementos
HTML. Então o que que nós podemos ter em uma página HTML? vamos descobrir eh juntos aqui. Então, ó, cabeçalhos é é o tipo de coisa que é que tem que que existe eh na maioria das páginas HTML. Então, elas são defin os cabeçalhes são definidos com as tags H1 e aí nós temos uma variação de H1 até H6. E e qual para que que serve? Qual que é a diferença, professor? O H1 ele vai trazer aquele cabeçalho de maior Relevância, sabe? Como se fosse, por exemplo, na página inicial ou ou de um site, ou se
você pegasse ali um jornal, uma revista, é o é o cabeçalho principal de nível um, H1. Dentro dessa sessão, você pode desmembrar em dois outros subconteúdos e aí você pode trazer ali um um subcabeçalho de nível um pouco inferior. Aí você poderia trabalhar com eh especificar esse cabeçalho como um H2. E por sua vez, dentro desse Subconteúdo, você poderia ter uma subsessão com um uma outra parte de conteúdo relacionado. E ali você poderia ter também um sub cabeçalho desse dessa outra subseão e aí você poderia trabalhar um H3. Então, à medida que você vai eh
aumentando esse número, né? Então, do H1 até o H6, você vai especificando cabeçalhos de menor relevância. O H1 é o mais importante de maior relevância, OK? Então aqui, ó, Tenho H1, H2 e H3 sendo especificado aqui neste exemplo, tá? Ó, este é um cabeçalho H1, este é um cabeçalho H2, é um cabeçalho dois, né, de nível dois. E este é um cabeçalho eh de nível três. Outro elemento que toda página praticamente tem é o parágrafo, tá? Então parágrafos são comuns. E como que a gente especifica um parágrafo HTML? Utilizando a tag P. Então é o
que vocês estão vendo aqui. Aqui eu tenho dois Parágrafos, ó. Este é um parágrafo, este é outro parágrafo. Ou seja, ó, o P abriu aqui e fechou logo em seguida. Então, essa primeira linha, então a este é um primeiro parágrafo. O segundo parágrafo, ele só começou depois na declaração da tag de abertura dele, só ocorreu depois da tag de fechamento do parágrafo anterior. Então, ah, ou seja, esse parágrafo ele e ele não é um subparágrafo, né? Ele é um é um parágrafo à parte, né? E os dois estão Ali no mesmo nível, um está dentro
do outro, OK? Lembra disso? P parágrafos. Outro elemento comum é o a tag A, tá? que é utilizada para especificar links. Links, aqueles que quando a gente clica, a gente é direcionado para um endereço específico. E aí, detalhe, você pode ser redirecionado para eh um um endereço fora, né, da do seu domínio ali do site, né? especifica, por exemplo, eh você tá No seu site, a pessoa clica no link, ela pode ir lá pro site do Google, por exemplo. Então, eh essa especificou-se uma URL apontando para o site do Google. Legal? Mas pode também redirecionar
para páginas dentro do próprio site, dentro do próprio domínio. E como que a gente faz isso? Utilizando o atributo HRF. Normalmente você vai ver o elemento A vindo ali atrelado, né, especificado no mínimo o atributo HF. E o que que o HF eh faz? Ele é o que especifica a URL, para onde vai ser direcionado quando o usuário clicar no link. Então aqui, ó, nesse exemplo, eu tenho o elemento A, que aqui tá com o conteúdo desa link. deixa um link e o atributo hf pontando para lá o site do wyschools.com. OK? Este endereço, ele
é um caminho absoluto porque a gente tem um caminho desde lado do protocolo, HTTP do pontos e htps, né? dois pontos barra barra e o caminho completo para o o Endereço destino. Mas nós poderíamos ter também aqui um caminho relativo, ou seja, só barra imagens barra eh contato, ou seja, considerando ah o domínio atual, ele vai procurar ali um documento com aquele nome. Ou seja, eh, se eu tô numa página, a página home, por exemplo, página principal, e ela tá numa pasta específica lá no meu site, e aí dentro desse documento, eu tenho um link
que aponta para eh imagens, contato, por Exemplo. Esse documento ele tem que tem que ser considerado onde que ele está nessa nesse diretório para especificar o caminho, de modo que eh o navegador consiga localizar o documento, tá? Então, normalmente utiliza-se aí o caminho relativo, considerando a a localização atual. Nós temos aqui a o elemento IMG, que também é super comum, utilizado para especificar imagens. Então, ó, essa tag img, ela define imagens e ela também eh faz uso aí do atributo src, né, de um atributo que é é fundamental, digamos assim, para o MG. E o
src ele ele indica a o caminho até a imagem, a origem da imagem, o sece, né? Onde é que tá a imagem? Então aqui tá falando, ó. E aqui tá utilizando um caminho relativo, justamente nesse conceito que eu falei, ó. Eh, ou seja, na pasta atual, localize um arquivo chamado W3escools. Eh, jpg. Legal. a gente poderia colocar, por exemplo, ah, não, esse documento ele não está na página atual, ele tá na na pasta acima dessa, um nível acima dessa, eh, em que está sendo representado esse elemento img. Aí você poderia colocar ponto ponto barra, né?
o ponto ponto ele sai da página e aí procurar fora da página, ou seja, um nível acima o arquivo é desejado. Esse conceito de caminho absoluto relativo é Aquilo que a gente estuda lá no Linux, por exemplo, né? E no Windows também tem eh esse tipo de de conceito, tá? Para navegação entre os diretórios. OK? Aqui nós temos outros atributos também, como alt, que é que é um conteúdo alternativo que vai ser representado caso o navegador não consiga carregar a imagem. E temos dois outros atributos, wid e rate, ou seja, a largura e altura da
imagem. Outro Elemento HTML eh muito utilizado é são as listas, tá? E as listas elas podem ser ordenadas e não ordenadas. As não ordenadas são especificadas utilizando a tag U. U, ok? E as ordenadas são especificadas utilizando a tag O. O U significa de un order, ou seja, não ordenado. E o O é de ordered, ou seja, ordenado, tá? E aí esse essa lista ela, seja ela ordenada ou não, ela possui os itens da lista, os elementos que vão Estar na lista, né? Então numa lista de compras, por exemplo, ah, eu quero arroz, feijão, óleo,
açúcar. OK? Como é que eu especifico os itens da lista por meio da tag li? O elemento li é utilizado para especificar os itens da lista. Então aqui neste exemplo, eu tenho aqui uma lista na ordenada acima, onde eu tenho ali, ó, os itens café, chá e leite. E na lista ordenada eu tenho esses elementos que se repetem. O primeiro é uma lista não ordenada e o Segundo é uma lista ordenada. Então, muita atenção, cuidado para não se confundir. Uma dica é você estudar o inglês, né, origem, da onde que veio essa tag, né? O
que que ela eh o que que ela quer dizer? Normalmente o nome tem uma relação com o texto original inglês. Então, o o é de ordered, ou seja, ordenado. Tabelas. Tabelas. você também pode encontrar tabelas e isso pode ser eh exigido de você em um concurso, por exemplo. E aí nós temos aqui, ó, a a Especificação, um exemplo de tabela, tá? As tabelas organizam os dados em linhas e colunas, tá? tal como num Excel, por exemplo. E aí nós temos o o elemento que especifica, né, a tag que especifica uma tabela é o table. Table
especifica uma tabela. E aí nós podemos ter eh na tabela linhas. Como é que eu eh especifico uma linha na tabela, professor? utilizando a tag eh tr, né, ou tr. E o o o r se vem de row. O que que é row? Linha. Então, ou seja, table Row, linha da tabela. Então, nessa tabela, eu tenho três linhas, ó. E ela começa, abre aqui e fecha aqui. Abre aqui é na a aqui na na primeira, segunda, terceira, quarta, quinta, sétima linha, né? E aí eu tenho três elementos, fecha de novo. E aí eu tenho a
terceira linha especificada. Então são três linhas, eh, basicamente, e cada linha possui, ã, os seus conteúdos, né? Aqui na Primeira linha eu tenho a tag. O que que é o H? Vem de header. Header é cabeçalho. Ou seja, ah, numa tabela nós não temos o cabeçalho dela. E aí a gente vem as temos as colunas com os dados em si, né? Então, a primeira linha normalmente traz pra gente o cabeçalho e é o que tá sendo especificado aqui, é th, ou seja, cabeçalho, header. E aí tá tá aqui falando, ó, que eu vou ter uma
coluna empresa, contato e país. E aí o TD é o De de dado a informação, é o conteúdo. Então, ó, a a o primeiro caso aqui, ó, botei, ó, a a empresa Alfreds, eh, Father Kist, o contato Maria Anders e o país Alemanha. E aí na vou ter umas na terceira linha, né, porque a primeira linha é cabeçalho, a segunda linha conteúdo, a terceira linha conteúdo também. Na terceira linha, eu vou ter eh aqui, ó, centro comercial eh M Tezuma. O contato é o Francisco Xang e a O país México. Legal. Então, eh, tente estudar
na considerando o inglês da palavra, né? Então, table especifica tabela, o th especifica, é o cabeçalho, né? vem de table header, o especifica linha, ou seja, table row e o TD especifica o dado de tableira. Bacana, não erre é por conta dessas dessas letrinhas. Só lembrar do da origem em inglês. Um outro elemento que é super Comum é a div. A div é utilizada como um contêiner para outros elementos. Então, quando você quer agrupar elementos, então, ah, eu quero colocar aqui nesse trecho um cabeçalho, uma imagem e um parágrafo. Então, você pode agrupar aquilo em
uma div, tá? Mas a div ela não é carregada de de efeito semântico. Ou seja, quando você olha lá, div, você não sabe do que que se trata. Você só sabe que aquilo é um contêiner. Eh, o HTML5 já trouxe elementos semânticos que dizem De fato, é, que também são contêiners, mas que indicam para que que eles servem. Ah, isso aqui é um é um menu de navegação, esse é o conteúdo principal da página. Aqui na na div não, a div eh ela não é carregada de efeito semântico, OK? saiba disso, caso cobrado em um
concurso. E, ó, comumente utilizado para agrupar sessões em uma página. Então, aqui, ó, tem o div agrupando um cabeçalho e dois Parágrafos. Elementos vazios também podem ocorrer em HTML, então são elementos que não possuem tag de fechamento. Por quê? Porque eles não possuem conteúdo. Como um exemplo é a tag BR. Então ela não, você não vai ver BR e aí depois o BR com a barra. Eh, você vai ver o BR uma única vez isolado ali, né? Eu falo assim, eh, na verdade você pode utilizar várias vezes na página, mas ele não vem Atrelado a
uma tag de fechamento. O UBR ele ele insere um um uma quebra de linha, né, um break line. E aí, ó, a aqui, por exemplo, ó, tenho o parágrafo e aí bem no meio do parágrafo, eu tenho uma quebra de linha, né, line break. Então, ó, quebra a linha. E aí, ou seja, esse conteúdo não vai aparecer na mesma linha. A partir desse trecho onde tá escrito eh paragraph, ele vai ser eh exibido na linha de Baixo. Característica importante que você deve saber é que o HTML ele não é case sensitivo. HTML não é case
sensitivo. Então, se você coloca a tag que você digita com P maiúsculo ou P minúsculo num parágrafo, não vai fazer a menor diferença para ele, tá? Tá? Mas a recomendação segunda a W3C é utilizar o lower case, ou seja, tudo minúsculo. Anota aí, tá? Então, HTML não é case Sensitive. Atributos. Então, pra gente encerrar, vamos falar sobre atributos. Nós já vimos vários aí e ao longo dessa aula. Então, os atributos eles são informações adicionais acerca dos elementos. Então, os elementos HTML, eles podem ter eh nenhum ou vários atributos, cada um para especificar uma coisa acerca
daquele atributo. E eles são definidos na tag de abertura, tá? O atributo você vai ver ele na tag de abertura. E a nessa nessa estrutura, né, com o nome igual o valor, entre aspas. Então, um exemplo, ó, o HF utilizado junto com o elemento A, que é o link, o HRF faz o quê? aponta para URL, para onde vai ser direcionado. Aqui no atributo eh eh aqui no elemento img, na verdade, nós temos o atributo src, que significa sece e ele aponta para onde? Pra imagem que vai ser exibida, eh, caso eh na renderização na
em uma página web. OK? E aí nós temos vários outros atributos que podem ocorrer numa página HTML. Nós temos ali junto num IMG, por exemplo, nós podemos ter o wid e o rate, especificando largura e altura. No IMG, nós podemos ter o atributo alt, que fornece um texto alternativo, caso a imagem não seja e carregada, tá? Então a imagem não pode ser carregada por algum motivo, vai exibir um texto no lugar dela. Isso especificado onde? No alt style é utilizado para adicionar Estilos. Então existem formas diferentes de você aplicar estilo. Normalmente, como eu falei no
começo dessa aula, utiliza-se CSS ou alguma tecnologia baseada em CSS para estilizar, mas o estilo ele pode ser aplicado em line, ou seja, ali direto no elemento a HTML, como utilizando o atributo style. Então você coloca atributo style. E aí você especifica estilos, borda, cor, fonte e aí vai, tá? O atributo lengue lá na no elemento HTML, tá? Aquele contêiner geral da página, declara o language, ou seja, o idioma da página, o title, por exemplo, que define informações extras sobre um elemento. E aí, vai, nós temos vários atributos, tá? Importante é que você olhe e
reconheça que aquilo é um atributo. OK, pessoal? Então é isso. A ideia foi dar um panorama geral para vocês sobre o que é o HTML, os principais conceitos, elementos, atributos e eh como que ele é utilizado. Bacana? Então é isso, eh no mais, valeu, grande abraço, bons estudos e até a próxima aula. E aí, pessoal, beleza? Aqui é o professor Arnaldo, começando mais uma aula e nessa aula a gente vai falar sobre HTML na versão 5. Em especial, nós vamos trazer aqui algumas novidades que ocorreram eh quando do surgimento do HTML na versão 5, que
são os elementos semânticos. Então vamos direto para o conteúdo. Como eu falei, uma das grandes Novidades do HTML5 foram os elementos semânticos. E professor, o que que é um elemento semântico? Bem, o elemento semântico é aquele que ele já por si só carrega um sentido. Quando a gente olha para um elemento semântico, nós sabemos qual o tipo de conteúdo que nós iremos encontrar dentro daquele contêiner de conteúdo, digamos assim. Como exemplo, nas versões anteriores, utilizava-se muito e ainda hoje utilizas A divupar elementos HTML. Então, se eu quisesse fazer uma sessão eh um catálogo ou um
se eu quisesse de alguma forma agrupar elementos HTML, utilizava-se a div. O problema da div é que quando a gente olha e você vê o nome div, você não sabe e exatamente que tipo de conteúdo você vai encontrar ali, muito menos o navegador. Desse modo, ficava complicado entender exatamente o tipo de conteúdo Que nós tínhamos ali na nossa frente. Agora, com os elementos semânticos, nós já sabemos eh que tipo de conteúdo nós vamos encontrar. Então, por exemplo, eh alguns dos novos elementos que foram eh criados são o header, que é para especificar cabeçalho, o nave,
que é para especificar o principal menu de navegação. E aí não estamos falando de qualquer menu, mas sim o principal. Eh, section para criar sessões, article Para criar artigos, aside para especificar um conteúdo que tenha relação com o conteúdo principal, mas não é o conteúdo principal, é um conteúdo correlacionado. E o foot para o footer para especificar o rodapé. OK? Vamos, vamos entender um pouco mais esses elementos. O primeiro, o article. O ártico ele define um artigo a tal como nesse exemplo Especificado mostrado aí no slide. Então nós temos aí, por exemplo, o article, elemento
article, e aí ele tem um cabeçalho H1 e ele tem um parágrafo. Então o article é um contêiner que que envolve aqui as informações pertinentes a um artigo específico. E aí se eu quisesse mais de um artigo, eu poderia especificar mais de um article. Aqui nesse caso, é apenas um artigo falando sobre o Google Chrome, tá? E ó, especifica um conteúdo independente que Faz sentido por si só. Outro elemento trazido pelo HTML5 foi o header, que é um contêiner para um conteúdo introdutório para fazer aquela abertura, o cabeçalho e pode haver vários dentro de um
documento. Então aqui, por exemplo, ó, eu tenho um artigo, um article, e aí eu quis especificar um header, um cabeçalho, eh, para esse artigo. E aí esse cabeçalho tem algumas outras informações. Então você pode utilizar o Header em eh diferentes pontos dentro da página, desde que seja uma sessão onde você quer que haja um cabeçalho, uma introdução, você pode especificar o elemento header. Então o navegador na hora de fazer a leitura, ele já vai saber que ali ele vai encontrar um conteúdo introdutório, beleza? E esse tipo de de elemento semântico ajuda inclusive na na no
sistema de busca de de ranqueamento dos sites lá nos sistemas de busca como o Google. OK? Então é importante utilizar e saber eh para que que serve esses elementos semânticos. Temos também o elemento main, que é um contêiner para o principal conteúdo da página, conteúdo principal, sabe? Eh, você tem uma página que vai falar que vai trazer, por exemplo, um catálogo de carros, é um site de venda de veículos. Então, na primeira página você tem lá um catálogo contendo eh os veículos, né? Esse esse catálogo de veículos é o principal conteúdo daquela página. Não é
um rodapé, não é uma informação correlacionada, eh, mas sim a o catálogo em si. A pessoa tá indo lá para ver, eh, veículos. Então, o catálogo de veículos é o principal conteúdo daquela página. Para isso, nós podemos especificar o main para contemplar, para eh ser o contêiner do principal conteúdo da página. Aqui neste exemplo vocês vão ver que nós temos o Main com H1, um parágrafo e dentro desse main eu tenho um artigo. É uma possibilidade também. section. O elemento section, como o nome já diz, ele especifica sessões no documento, como capítulos, cabeçalhos, rodapés, entre
outros. Eh, sessões. Uma sessão é quando você quer, por exemplo, agrupar os conteúdos, eh, criando sessões específicas. Eh, a gente vê muito um uso, um exemplo de utilização Disso nesses sites mais eh atuais, em que você tem uma uma estilização do tipo punanners, né? Então você tem ali uma faixa com conteúdo e depois você vem com outra faixa trazendo outro conteúdo. Então cada faixa dessa a gente pode interpretar como uma sessão diferente, tá? Não necessariamente, claro, mas eh poderíamos tratar dessa forma. Então, na na voltando, por exemplo, do site veículos, poderíamos ter ali o catálogo
Com os veículos, nós poderíamos ter uma outra sessão, eh poderemos ter veículos novos, veículos usados, poderemos ter eh notícias, eh seria um outro um uma outra opção de sessão. E para cada um destes contêineres, nós especificaremos uma section. Aqui, nesse caso, nós temos uma sessão com cabeçalho H1 e um parágrafo específico, eh, correlacionado a esse cabeçalho. Elemento nave. O elemento nave é um elemento importante porque Basicamente a maioria das páginas, não todas, t. E para que que serve o elemento nave? Ele serve para especificar o principal menu de navegação da nossa página. Define o conjunto
de links de navegação. Agora, quando eu falo o principal menu de navegação é o seguinte: ah, nós podemos ter um menu no forma mais tradicional na parte superior, né? Ou ou num sistema que vai abrir no smartphone ali no hambúrguer, Né? Você clica no hambúrguer, ele abre. ou ainda no mais atual, né, você ter ali o menu no rodapé de páginas que abrem aí smartphones. Legal. Mas além desse menu principal de navegação, pode haver eh esse menu pode se repetir em outros locais ou ainda eu posso ter outro conjunto, outros conjuntos de links que remetem
a um outro conteúdo. Então, eh, esses outros links, eles não precisam estar emve. o nave, eu vou colocar dentro dele apenas os links ali Relacionados ao principal mecanismo de navegação da página, que é o o conhecido como o menu. Legal? E aí nós temos aqui um exemplo, ó, nave. E aí você vai usar naturalmente lá o a para especificar o elemento link, tá? Então aqui eu tenho dois, quatro links de navegação eh ali apontando, sendo apontados ali no no atributo HF. Elemento figure utilizado para Especificar figuras para inclusão de imagens. Eh, é uma boa prática
de acessibilidade especial tributo, out, isso que é importante. Então, ó, vocês vão ver que ah, eu posso utilizar aqui o o elemento img dentro de um elemento figur e aí eu tenho lá o outficando um conteúdo alternativo caso a imagem não possa ser carregada pelo navegador, tá? Então essa imagem tem aqui o SRC que aponta para uma imagem, o altro alternativo, a Largura e a altura. E o elemento figure, ele pode vir também, você pode usar juntamente com ele o figo figure. Ele deve ser colocado como filho do elemento figure. Então, ou seja, o figure.
Então, como vocês podem ver, ó, figure ele abre, é o é o primeiro elemento e o último. Ele abre e fecha o conteúdo todo. O fig caption, tanto a tag de abertura, de abertura quanto de Fechamento, estão dentro do elemento figuri. Então eu tenho aqui, ó, figylia e Italy. Beleza? Então essa é uma possibilidade de você utilizar o elemento eh fig caption dentro do figure para especificar uma legenda para figura. Temos ainda como elemento semântico o details, que especifica um conteúdo adicional que pode ser escondido pelo usuário. Então, vocês já viram aquele Mecanismo que em
que a gente você tem ali de forma visual inicialmente um texto introdutório e aí depois você tem ali um leia mais, né? Ou seja, existe ali uma parte de conteúdo que está oculta, que a pessoa tem que clicar para ela conseguir visualizar a o conteúdo na sua totalidade. Então isso pode ser eh construído através do details, por exemplo. Então aqui nesse caso, ó, nós temos lá detils abrindo e fechando. E dentro dele nós temos ali o Elemento summary, que especifica o sumário, que é a parte visível, tá? Logo de cara, qual que é a parte
visível? Está dentro do sumari, beleza? É o sumari. A gente é portuguando aí. E aí tá aqui copyright 1999 a 2018. Então essa é a parte visível. E aí o que tá fora do do sumari, digamos assim, eh fica oculto. A pessoa vai ter que clicar para eh expandir e aí eh o navegador mostrar todo o conteúdo. Beleza? Então, lembre-se disso. O details permite adicionar esses conteúdos que em que você pode ocultar parte desse conteúdo e o sumário vai trazer a parte visível do conteúdo desejado. Legal, pessoal? Então é isso para essa aula bem simples,
direto ao ponto, para você entender os principais eh conceitos e características dos elementos semânticos trazidos junto com o HTML 5. Legal? Então é isso aí, bons estudos, grande abraço e até a próxima. E aí, pessoal? Na aula de hoje a gente vai falar sobre orientação a objetos. Em que consiste esse conceito? Orientação objetos é um paradigma para desenvolvimento de sistemas que busca representar os elementos do mundo que a gente está modelando, com o qual a gente tá trabalhando, como se fosse objetos. Então, tudo que a gente vai representar no sistema, a gente representa na forma
de um objeto, classes e objetos. Isso traz uma série De de benefícios. Quais são eles? O primeiro é que facilita a reutilização de código. Então a gente, uma vez que usa esse paradigma, a gente implementa as coisas de uma forma em que se torna mais fácil reutilizar código, evitando o retrabalho que pode ocorrer eh em muitas equipes de de desenvolvimento. Então, a gente desenvolve de uma forma que fica mais fácil você reutilizar algo que você já implementou e já tá pronto e fácil de Ser acoplado a qualquer outro sistema. Esse paradigma torna mais fácil também
a compreensão do código, fica mais fácil de manter. É um paradigma utilizado internacionalmente. Então qualquer pessoa que o conheça consegue trabalhar com ele e fica fácil implantar isso em uma equipe como um todo. É uma linguagem universal. E para trabalhar com orientação objetos, a gente precisa compreender alguns conceitos. O primeiro deles é o conceito de classe. O que é Uma classe? Uma classe é uma representação de um elemento que a gente tá querendo modelar. Então, é é uma representação de um objeto do mundo que a gente vai implementar, trazendo pro nosso dia a dia. Por
exemplo, todo mundo tem uma uma conta no Facebook e cada usuário pode ser visto pelo sistema do Facebook como provavelmente é como uma Classe que é uma representação do usuário que criou uma conta. E cada classe possui uma série de características acerca daquele objeto que a gente tá querendo representar, no caso, o usuário, o usuário do Facebook. Então, o usuário é uma classe. Quais as características que essa que esse usuário possui? Todo mundo, todo usuário possui nome, sexo, idade, uma série de informações próprias desse objeto, dessa classe que é o usuário. Uma série de Informações
específicas dessa classe. Então, descreve um conjunto de objetos individuais, né? é é uma representação de um elemento do domínio com o qual a gente tá trabalhando. Uma classe é composta de atributos e métodos. O que são os atributos? Os atributos são essas essas características específicas eh das quais acabei de falar, nome, idade, etc. Aqui eu tenho Um outro exemplo. Num contexto de um sistema bancário, como se tivéssemos desenvolvendo um sistema para um banco, a gente provavelmente teria uma classe para a conta. O que que toda conta tem de característica? Ela tem o número, ela tem
o nome do dono da conta, ela tem um tipo, ela tem um saldo, um limite, uma série de informações. Então, essas informações acerca da classe são chamadas de atributos, Métodos. Os métodos dizem respeito àilo que a classe pode fazer. Então, no mesmo domínio de um sistema bancário, o que que um um uma conta pode fazer? Quais são as funções que ela pode executar? A gente tem aqui alguns exemplos. sacar uma quantia X, depositar uma quantia, imprimir o nome do dono da conta, informar o o saldo, tirar o extrato. Então são alguns métodos, algumas ações que
essa classe consegue executar. Aqui eu tenho uma representação através de um diagrama de classes. Nas próximas aulas a gente vai falar sobre isso. Então isso aqui é uma classe. Eu tenho aqui um retângulo com três seções. A primeira primeira linha aqui diz o nome da classe, aqui no caso é produto. Aqui na segunda sessão eu tenho os atributos, quais são as características, informações acerca dessa classe. E na última sessão eu Tenho os métodos, o que que essa classe consegue realizar. Então, vejamos. Produto poderia ser uma classe de um sistema de vendas online, por exemplo, um
sistemas da da Amazon, da Americanas. Então eu tenho lá uma classe chamada produto com essas informações acerca do produto. Então observem que o produto é um objeto, é uma representação de algo do domínio dessa empresa. Então ele tá representando um objeto dentro da Empresa. Lá no caso da da americanas é um objeto que ele quer vender. Então eu tenho aqui quais são os atributos que um produto poderia ter. código, nome, descrição, preço de compra e de venda. E aqui a gente já consegue, por exemplo, através do preço da compra e da venda, a gente já
consegue saber qual foi o fatoramento, o lucro, né, quantidade em estoque e uma série de informações. Lado esquerdo eu tenho o nome do atributo. Do lado direito aqui Eu tenho depois dos dois pontos, eu tenho o tipo de retorno, não, o tipo desse atributo. atributo inteiro, só número, atributo string decimal e etc. Aqui na na última sessão, os métodos, o que que esse produto, o que que essa classe pode fazer? a gente consegue, por exemplo, inserir um produto, alterar as informações do produto, excluir um produto. Então, num No sistema de vendas da Americanas, por exemplo,
a gente poderia ter a função de cadastrar produto. E aí, para que a gente consiga realizar isso, a gente, através dessa classe, a gente vai criar um objeto do qual vou falar a seguir. E dentro desse objeto a gente vai inserir as informações desse produto que a gente acabou de cadastrar e vai salvar isso no banco. É, é assim que funciona na Prática. Objeto. O que que é um objeto? O objeto é uma instância da classe. Veja o seguinte, a classe é como se fosse uma forma, uma forma e de um chocolate, de um picolé,
de algo nesse sentido, uma forma de gelo. Então ela dá as características do elemento que vai ser gerado a partir dela. Então você tem uma forma de chocolate e ela tem um formato, uma série de características. E uma vez que você coloca o chocolate lá, depois de pronto, você retira. Então esse chocolate que saiu com base na forma é o objeto. Então ele é uma instância da classe. Então ele foi gerado a partir daquela classe, é uma representação daquela classe. Outro exemplo, no caso lá do Facebook, eu teria a classe usuário, mas um objeto poderia
ser o João. O João é um é um uma implementação Daquela classe. Então, João, 30 anos de idade, sexo masculino, não sei o que mais. Então, isso é um objeto, é uma instância da classe, representa uma entidade no mundo real que possui uma identidade. Informação importante aqui, cada objeto possui seus próprios valores para cada tributo. E o objeto pode representar, objeto e a classe entidades concretas ou abstratas. concretas, carro, produto, a gente falou sobre alguns Aqui. E abstratas também. Por exemplo, num jogo, a gente, se a gente vai implementar um jogo, a gente tem lá
a figura do dos inimigos, dos personagens, das entidades. Então, eh, inimigo pode ser uma classe também com suas características. Inimigo tem o nome, o tipo, quantidade de vida, poder, se não sei o que mais. Então, essas são características dessa classe abstrata que é inimigos. Por exemplo, aqui um outro exemplo. Eu tenho Aqui a classe é isso aqui, ó. número, cliente, saldo e limite são alguns atributos da classe, mas nesses três quadrados eu tenho a representação dos objetos, que são a a instanciação daquela classe. Então, por exemplo, primeiro objeto, número número da da conta, conta número
tal é do cliente João, saldo tal, limite tal. Um outro objeto que foi gerado com base Na classe conta. número, o número é diferente. Veja que é um outro valor cliente. Então são informações acerca de um objeto específico que foi gerado com base na classe. Um outro exemplo para facilitar a compreensão, eu tenho a classe aqui funcionário com três atributos: nome, data de nascimento, salário e dois métodos: informar salário e calcular idade. Então, vejam que a classe ela é Só o esqueleto, é só a forma do que vai ser gerado. E aqui eu tenho dois
objetos, duas instâncias da classe. Helena Reis, nasceu dia tal, salário tal, e aqui o Mário com suas informações também. E os métodos, né? Os métodos são uma as ações que essa classe consegue executar. Um outro exemplo, um outro exemplo é esse aqui, ó. Eu tenho aqui um diagrama Que representa classe cachorro. E o cachorro ele possui alguns atributos, tamanho e raça. Tamanho do tipo inteiro, né, que é um número, um número sem casa decimal, inteiro. Então, qual o tamanho desse cachorro? e raça string, que é uma um conjunto de caracter caracteres alfaéricos, pode ter texto,
número, caracter especial e etc. E por fim, as ações, o o os métodos que essa classe consegue executar aqui, no caso, Latir e poderia ser ter uma série de outras coisas. Isso aqui é uma abstração para facilitar a nossa compreensão. Entendido os conceitos de classe e objeto, a gente precisa entender agora o conceito de herança. Em alguns casos, se faz necessário, eh, acontece de repetir informações. Então, a gente tem classes com informações iguais. Então, nessas situações, muitas vezes dá Para utilizar o conceito de herança e reutilizar propriedades, características, os atributos e os métodos. Então, por
exemplo, eu tenho aqui uma uma chamada de superclasse funcionário com nome, data de nascimento, salário e dois métodos. E com base nessa classe, eu tenho duas subclasses. Isso aqui é um diagrama de classes, como eu falei. E o que representa esse relacionamento de Herança é essa seta fechada. Como vocês conseguem observar aqui, a seta fechada, ela fica encostada na superclasse. Então, gerente e programador são duas espécies de funcionário. São duas subclasses da superclasse funcionário. O que quer dizer isso aqui, pessoal? Então, gerente foi gerado com base em funcionário. E o que que a herança diz
para mim? que as Características que funcionário possui vão ser dadas pelo gerente. É o que o nome já diz, herança. Então a subclasse ela erda as características da superclasse. Falando de novo, a subclasse erda as características da superclasse. E para que que eu preciso definir esse relacionamento? para evitar eh reescrever atributos em classes distintas. Então, se gerente programador Possui também possui nome, data de nascimento e salário, esses atributos que são comuns aos dois, eu coloco na superclasse. Então, quando tem uma herança assim, como vocês conseguem ver aqui, representada, tá dizendo para mim que o gerente
além da da do atributo projeto, vai ter também os atributos nome, data de nascimento e salário. E programador, além do atributo linguagem, que diz qual A linguagem com a qual ele trabalha, ele vai ter também os atributos nome, data de nascimento e salário. E para que isso? Se não fosse assim, se a gente não utilizasse herança, esses atributos teriam que estar em gerente e em programador. Usando herança, a gente eh otimiza a utilização de de memória, por exemplo, então a gente vai ter menos replicação de informações. Beleza? Então, Novamente, eu tenho aqui duas subclasses, gerente
e programador, e elas herdam os atributos e os métodos do funcionário. Então, o gerente faz tudo que o funcionário pode fazer, mais as coisas específicas do gerente e os atributos específicos e as ações específicas. programador possui os atributos e os métodos de funcionário e também os atributos e os métodos específicos do programador. Essa é uma Herança dentro do mundo de orientação a objetos. Ó, uma classe pode ser definida genericamente e depois refinada através de subclasses. Cada subclasse herda as propriedades de sua superclasse e adiciona suas particulares. As propriedades da classe base não precisam ser repetidas
na classe derivada. Como eu falei, reduz a repetição de código e consequentemente melhora o uso De memória, o desempenho, tudo mais. Um exemplo aqui, eu tenho uma classe super classe, uma classe também chamada de classe Pie, chamada veículo. E ela possui alguns atributos: modelo, velocidade, passageiros e combustível. E aqui eu tenho duas classes vilhas, carro e avião. Observem que carro é um tipo de veículo e avião também é um tipo de Veículo. E professor, quando é que eu vou criar uma superclasse? Quando é que eu sei que eu vou ter que utilizar uma herança? Quando
você observar que existem duas classes aqui, por exemplo, carro e avião, que possuem atributos iguais, velocidade, passageiros, combustível, modelo, aqui a mesma forma, ó, eh, modelo, velocidade, passageiros e combustível. Observem quem são atributos iguais nos dois. Então, ao invés de Repetir em cada um, a gente cria uma superclasse. Então, carro e avião também são veículo. Então, são uma é uma derivação de veículo. Então, a gente cria essa superclasse e pega esses atributos comum comuns aos as duas classes e coloca na classe pai. Então aqui na classe filha a gente não precisaria mais ter essas propriedades
aqui definidas na superclasse e e deixa deixaríamos aqui apenas as propriedades específicas da classe filha da Subclasse. Um outro exemplo, uma superclasse pessoa que possui lá o nome e o endereço e duas subclasses, pessoa física e jurídica. Isso aqui é um exemplo muito comum. Em qualquer sistema de compras ou de vendas, a gente tem lá o cadastro da pessoa e você pode definir isso lá. Você tá vendendo pra pessoa física ou para pessoa jurídica? Porque se o cadastro for de Uma pessoa física, a gente vai ter que colher o CPF. Se for de uma pessoa
jurídica, é o CNPJ. Então lá quando a pessoa tiver preenchendo o formulário, ela vai definir isso e quando for cadastrar programaticamente a gente vai gerar um objeto, instanciar um objeto ou da classe pessoa física ou da pessoa jurídica, dependendo do que foi informado. E vai salvar isso no banco de dados. Outro conceito, Polimorfismo. Como o nome já diz, polimorfismo diz respeito a aquelas situações onde se há várias formas de se realizar uma mesma coisa, uma mesma ação. Uma mesma operação, ela pode se comportar de modo diferente em classes distintas. Existem aqui dois cenários de aplicação
do polimorfismo. O primeiro é de sobreposição. O que que é a sobreposição dentro do polimorfismo? Eu tenho aqui uma superclasse empregado e três subclasses. Vejam aqui O relacionamento de herança, a seta fechada na superclasse. Uma das das subclasses são a a é assalariado, depois eu tenho comissionado e orista. Então, novamente, as propriedades que estão aqui são herdadas por essas subclasses também, bem como este método aqui. E a assalariado tem aqui um atributo salário que é só dele. Comissionado tem outras Informações. E onde tá a sobreposição? Vejam que as quatro classes possuem o método vencimento. Então,
a forma de obter qual é o valor que esse empregado recebe, quanto que esse que esse empregado ganha. Então, eu tenho um método lá, uma ação que vai dizer para mim o quanto que ele ganha e onde é que tá a sobreposição. Justamente aqui nesse nesse contexto onde cada classe vai Implementar a forma de obter o vencimento do empregado de forma diferente. Então eu tenho aqui um uma forma de através da classe empregado obter o vencimento deste deste funcionário através desse método vencimento da classe empregado. Mas aqui em assalariado eu também buscando através da classe
assalariado, eu também consigo obter o vencimento do empregado. Então esta este método está sobrepondo o método que está lá na Superclasse. Beleza? Esta é uma sobreposição e também uma representação de polimorfismo. Então eu consigo obter o vencimento através da classe pai e através da classe filha. Então, este é o polimorfismo. Outro conceito dentro do polimorfismo é a sobrecarga. Aqui na sobrecarga eu tenho é quando numa mesma classe eu tenho várias implementações de um mesmo método. Então Aqui, por exemplo, eu consigo, poderia ser, ao invés de soma, poderia ser aqui uma uma classe chamada calculadora. E
lá dentro dela, eu tenho aqui três métodos para somar valores. Observem que são que o nome do método é o mesmo, soma. Então são três formas de se fazer uma mesma coisa. Somar. O que que muda? É o tipo de parâmetro que este método vai receber. Aqui na primeira soma, ele vai trabalhar com dois números inteiros. Aqui na segunda soma duas strings e aqui na terceira dois números double. Double é número com casa decimal inteiro, sem casa decimal. Então são três formas de se realizar a mesma coisa, a mesma operação. Este é um polimorfismo do
tipo sobrecarga. Então, dentro da mesma classe, eu consigo executar a mesma operação de três formas diferentes. Na sobreposição, observem que há o conceito De herança relacionado. Então, a subclasse, ela eh reimplementa o que tá lá na superclasse. sobrepõe um método na superclasse e a sobrecarga são formas de se fazer a mesma coisa dentro da mesma classe. Não há herança. Aqui um exemplo aqui de polimorfismo também. Eu tenho aqui uma classe animal com nome, sexo e raça e três métodos: emitir som, dormir e caminhar. E eu tenho aqui uma série de De classes especializadas, de subclasses.
E observem que em cada subclasse ela possui uma forma própria de emitir o seu som. Observem que emitir som é uma reimplementação, é, está sobrepondo um método que tá na superclasse, emitir som. Então, o tigre ele emite um som de uma forma diferente, o lobo de uma forma diferente, o gato. Então, eles estão fazendo uma a mesma coisa que emiti um som, só que Eles geram resultados diferentes, fazem de uma forma específica. Este é o polimorfismo. Para finalizar, o conceito de abstração e encapsulamento. Abstração. Eh, em algumas situações a gente não tem muitos detalhes sobre
como uma classe vai ser implementada. A gente só sabe que ela vai precisar existir no nosso sistema. Então, nestes casos, a gente vai utilizar o conceito de classe abstrata. Que ó, permite postergar decisões de desenvolvimento. Aqui eu tenho uma figura ilustrativa. Muitas vezes a gente sabe que um objeto vai ter que existir. Aqui, como a gente consegue ver, tem o gato e duas pessoas com pensamentos diferentes. Então, e uma senhorinha, ela vê o gato de uma forma e um veterinário vê o gato de outra forma. Mas de todo jeito eles sabem que a gente vai
precisar da figura do Gato no nosso sistema, por exemplo. Mas como que ele vai ser implementado? Aí é uma questão, pode ser uma questão futura. Olha, um exemplo prático. Eh, eu tenho aqui um um diagrama de classes com a classe, uma superclasse abstrata. A classe abstrata, ela é representada pelo nome em itálico. Se vocês observarem o nome da classe em itálico, é uma classe abstrata e ela possui aqui um método ativa. E eu tenho três Subclasses, bomba d'água de combustível e atômica. cada uma eh sobrescrevendo, olha aqui o polimorfismo, sobreescrevendo um método na superclasse. Então,
cada um tem uma forma própria de ser ativada. E o que que muda, pessoal? Como quando eu falei para vocês, a classe abstrata, ela não traz muitas informações sobre como ela vai ser implementada. Então, na prática, ela não pode ser Instanciada. O que vai ser instanciado ou vai ser uma bomba de água de combustível atômica. Então, não, eu não posso gerar um objeto através dessa classe abstrata e sim só vou poder gerar objeto através das classes especializadas das subclasses. Entendido? Não posso gerar objeto através da classe abstrata. Encapsulamento. Para finalizar, encapsulamento é uma forma de
proteger os dados de uma classe. Então, Algumas informações a gente não quer tornar ela totalmente acessível para fora. É uma questão de segurança também para o sistema para aplicação. Vou mostrar para vocês. Olha essa figura aqui dentro. Nesse círculo interno, eu tenho os atributos de uma classe, saldo, nome do titular, CPF, eh, histórico de transações, então, que aparentemente é uma classe de uma conta. Só que eu não quero tornar esses Dados acessíveis em todo o meu sistema. Então, por exemplo, se um hack conseguisse acessar, invadir o meu sistema, ele poderia facilmente ter acesso a qualquer
a quaisquer uma dessas informações. Então, através do encapsulamento, a gente protege esses atributos. Como que funciona isso? A gente não vai deixar o saldo acessível. A gente vai implementar um método aqui, get saldo, pegar o saldo que vai retornar o saldo. Então, os objetos externos, as classes externas vão conseguir ter acesso à classe conta para pegar o saldo apenas através do método get saldo. Então, se uma outra classe, uma outra classe quiser pegar o saldo, ela vem aqui nesse método get saldo. E o get saldo vai retornar o saldo daquele objeto que ela tá procurando.
Eu tenho aqui um outro método, sacar e depositar novamente. Então eu não vou retirar um valor ou Acrescentar um valor à propriedade de saldo de forma direta. Eu vou fazer isso através dos métodos. Então, novamente, o encapsulamento é uma forma de proteger os atributos internos do objeto. Eu só vou torná-los disponíveis através dos seus métodos, das suas interfaces. Aqui um exemplo, eu tenho uma conta, tem um tipo, o tipo do cliente, a data de abertura, o saldo e os métodos sacar e depositar e calcular valor da tarifa de Manutenção. E uma conta poupança e e
conta de investimento, que são duas subclasses que possuem uma um método sobrepondo o método lá na superclasse. Então observem que para que eu consiga retirar um valor do saldo, eu vou usar o método sacar. Ah, e como é que funciona isso na prática? não tô entendendo direito na prática. Veja um exemplo, quando a gente faz um Um uma transferência, por exemplo, ou um saque num caixa num caixa eletrônico de qualquer banco, Banco do Brasil, por exemplo, eu tenho lá R$ 1.000, vamos supor, existe uma um objeto que representa a minha conta no sistema do banco,
conta do professor Arnaldo. Eu tenho lá R$ 1.000. Quando eu saco lá R$ 200, o sistema não vai de forma programática, ele não vai lá na propriedade de saldo e vai colocar saldo Menos 200. ele vai usar o método sacar para fazer isso. Então, o método sacar está encapsulando eh essa propriedade saldo. Então, não vou conseguir acessar saldo diretamente. Ele vai lá, vai chamar o método sacar e vai decrementar o valor que eu saquei e aí eu vou ter um novo saldo. Então é isso aí. Qualquer dúvida vocês podem fazer o comentário aí no no
no próprio vídeo aqui no YouTube ou através de e-mail. Fiquem à Vontade para postar suas dúvidas. Valeu, até a próxima. E aí, pessoal, beleza? Começando mais uma aula. Eu sou o professor Arnaldo, professor de informática do Instituto Federal de Tocantins. E hoje a gente vai aprender um pouco sobre aprendizado de máquina ou machine learning. Mas antes da gente entrar no conteúdo, eu gostaria de estender a vocês o convite para ingressarem aí no nosso grupo de WhatsApp para quem quer estudar Informática, para concursos de informática. Lá vocês vão ter acesso a PDFs para leitura, materiais que
eu desenvolvo ao longo do meu trabalho enquanto professor, questões para resolução, entre outras vantagens, outros benefícios. Beleza? Então vamos agora para o conteúdo. Vamos começar aqui entendendo a definição de aprendizado de máquina. E é importante a gente de cara já deixar Bem clara a distinção entre aprendizado de máquina e inteligência artificial. A inteligência artificial, ela é mais macro, ela ela opera num campo maior do que a o aprendizado de máquina. A inteligência artificial, ela de forma simples falando, ela busca analisar o meio no qual o sistema está inserido e obter dados e a partir desse
dados tomar decisões mais certeiras, mais inteligentes. O aprendizado de máquina, Por sua vez, é uma subárea dentro da inteligência artificial. E o a definição que eu trouxe aqui para vocês, uma delas é a seguinte: trata-se de do ramo da inteligência artificial, de um ramo da inteligência artificial focado no uso de dados e algoritmos para imitar a forma como os humanos aprendem, gradualmente aumentando a taxa de acerto. Então, uma coisa que é importante destacar aqui é que o aprendizado de máquina, ele faz uso de Métodos estatísticos, de algoritmos para tendo como entrada alguns dados e a
partir desse desses dados, por meio do processamento implementado ali através do método estatístico, ele vai gerar uma saída, eh, buscando prever alguma uma informação ou classificar dados, classificar informações ou predizer algum comportamento futuro, por exemplo. E uma característica do de um Sistema desse é que ao longo das experiências que ele vai tendo, ele vai melhorando a sua taxa de acertos. A gente pode também falar que o aprendizado de máquina é uma técnica que melhora a performance de sistemas, aprendendo a partir de experiências via métodos computacionais. É isso mesmo. A gente vai ver mais à frente
que existem algumas formas diferentes eh desses algoritmos de aprendizado de máquinas Funcionarem, mas todos eles têm essa característica em comum de aprender com as experiências que eles vão eh adquirindo ao longo do trabalho, ao longo do processamento. A gente também pode falar que aprendizado de máquina é um treinamento de algoritmos a partir de métodos estatísticos para fazer classificações e predições. a gente pode a partir eh do aprendizado de máquina identificar, por exemplo, potenciais clientes para terem uma vantagem Exclusiva ou classificar clientes entre bons e maus pagadores, ou identificar, por exemplo, se um e-mail que tá
chegando é um spam ou não. Nós temos n aplicações para este esta área de conhecimento e permite descobrir insites em projetos de mineração de dados, tá? O que que são os insightes? insites são aquelas aquelas descobertas importantes para um negócio, para a alta gestão de uma empresa, para que ela possa tomar decisões Estratégicas com base nessas informações, como, por exemplo, um uma grande rede de supermercados, a gente pode, um insite seria, por exemplo, a partir da aplicação de uma técnica de aprendizado de máquina, o analista de o cientista de dados Ele descobriu que pessoas que
compram eh pão compram café e leite, costumam comprar café e leite. Então isso é um insite, uma informação importante que pode, por exemplo, ajudar A alta gestão, as gerências superiores a disporem os os produtos de forma mais inteligente, claro, sempre buscando ali o lucro, né, no caso de uma empresa. Então, por exemplo, ela poderia, já sabendo disso, colocar perto do pão o o leite e o café. E é o que acontece. Legal. Nada é à toa, né? Essas grandes empresas elas fazem uso dessas informações, dos dados. hoje, e, eh, os nossos dados eles já estão
na internet, então tem-se muitas Informações acerca dos usuários e com base nessas informações, as empresas compreendem o seu público alvo e, naturalmente vendem para ele ou oferecem o conteúdo que mais lhes agrada. Uma outra coisa que é importante deixar a gente deixar bem claro é que aprendizado de máquina não não se confunde também com com big de tá ou big data aí, né? A portuguando. O big deida trata da dessa questão da gente processar, né, e tratar uma grande Quantidade de dados. legal você ter armazenado, né, através de um um data. A gente tem a
nossa aula sobre Dataware aí também, Data Lake. A partir dessa grande quantidade de dados, as empresas aplicam esses métodos de inteligência artificial, de aprendizado de máquina para obter essas informações privilegiadas que que eu tô retratando para vocês agora, OK? Então, o Big Dida e o aprendizado de máquina, eles caminham em conjunto. E como funciona, Professor? Basicamente, a gente tem três passos. O primeiro é o processo de decisão. Os algoritmos são utilizados para fazer uma classificação ou uma predição. A gente pode chamar de predição ou previsão, né? A partir de dados rotulados ou não produz uma
estimativa. Legal. Então, nós temos algoritmos diversos que são implementados. Aí nós temos também entrada de dados, tá? Então, a gente tem Sempre essa questão da entrada de dados. Esses dados podem ser rotulados ou não. Professor, o que que é o dado rotulado? É um dado que já vem classificado. Um dia desses aí no nosso grupo do WhatsApp surgiu uma questão, eu acho que eu coloquei para vocês uma questão que tratava justamente sobre sobre um funcionário do Banco do Brasil ter que classificar lá se o o quais eram os clientes aptos a receberem um cartão VIP,
né? E aí o o analista ele teve como Entrada, ele já já tinha ali um banco de de informações acerca dos clientes que já inclusive tinha uma uma indicação prévia, um rótulo indicando se aquele cliente era bom ou não, se era bom ou mau pagador, se estava devendo algo nesse sentido. Então isso já são dados, mas já são dados rotulados, por ele já possui ali informações acerca da classificando o o cliente em bom ou mau pagador, por Exemplo. Beleza? Então isso é um dado rotulado. O dado não rotulado são essas informações que vêm, mas não
tem uma classificação prévia. o algoritmo vai através da observação das da dos métodos estatísticos, ele vai classificar, vai separar esses elementos eh dentro da amostra de acordo com características em comum, vai classificar, OK? Então esse é o primeiro passo. O segundo passo é o que a gente chama de função de erro, que busca ali Que avalia a predição do modelo, né, que verifica se o modelo, por exemplo, o algoritmo, ele pode ter ali já alguns exemplos de sucesso. Então ele observa o o que foi previsto, né, a predição do modelo, o resultado, e compara com
outras experiências ou com outros resultados de sucesso. E ali ele consegue avaliar se o se foi satisfatório ou não o que que pode ser melhorado, né? Terceiro passo é o processo de Otimização do do modelo, que busca reduzir a discrepância entre exemplos conhecidos e o modelo estimado. Na otimização, a gente vai ter também esse processo de eh avaliar o resultado alcançado, eh o que se esperava alcançar, não é? E como que essa como que ocorre essa essa otimização, professor? Uma das formas é ajustando os pesos. Então você recebe dados como entrada, informações diversas, o seu
nome, o seu CPF, a os Seus hábitos de de navegação, de compra. E pode-se, por exemplo, mudar o peso que se dá a cada um desses atributos. Então, pode ser que para para indicar eh um produto para você ou um conteúdo que que talvez você vá gostar, ele o algoritmo considere como mais importante como tendo maior peso um atributo A ou B. OK? Então, observem isso, que você que o algoritmo ele pode dar pesos diferentes para cada uma dessas características. Legal? E isso Vai, claro, ocorrer. Esses ajustes podem ocorrer pelo algoritmo, mas normalmente ali com
a supervisão do cientista de dados. OK? Aí nós, onde que isso é aplicado, né? Nós temos aqui alguns exemplos, né? onde que o aprendizado de máquina é aplicado. Todos nós temos contato com com o resultado de do da aplicação de um aprendizado de máquina diariamente. Nós vemos, por exemplo, na recomendação de conteúdo, isso que eu Acabei de dizer. Então, todos já passamos pela experiência de quando a gente sabe quando a gente tá navegando no Google, por exemplo, o Google começa a oferecer para nós conteúdos relacionados ao nosso gosto. O YouTube também faz isso da mesma
forma. a gente pode questionar alguma coisa ou outra, mas eles a partir do de dados que eles coletam de nós, eles vão ali eh moldando o conteúdo de acordo com o nosso gosto e também, claro, oferecendo produtos, Serviços para consumo. Outra coisa é na tradução de textos, então identificar frases, expressões e o significado dessas expressões. Então, na tradução também a gente tem a aplicação disso. No combate a fraudes em sistemas de pagamentos ou ou vários outros sistemas cibernéticos, a gente tem o o emprego dessa tecnologia para a identificação dessas dessas ações fraudulentas, né? Então, por
exemplo, o um sistema bancário, ele Tem mecanismos para identificar se foi você ou não que fez uma aquisição. Então, por exemplo, vamos supor que que a gente perdeu um cartão de crédito e aí, sei lá, eu moro aqui na cidade de Palmas, Tocantins, faço aquisições aqui, mas sei lá, de repente de manhã 8 horas eu fiz uma compra aqui e aí sei lá, 10 horas ocorreu uma compra em São Paulo, né? Ah, fica o o sistema bancário pode, a partir desses dados cruzar informações e e Verificar que não faz sentido se horas ele tava numa
cidade, 2 horas tá em outra e não é um um local habitual do cliente estar, então isso já pode, o algoritmo pode destacar isso aí como uma fraude, né, que seria uma um outlier, é um um ponto fora do padrão, uma uma eh anomalia comportamental. Beleza? Então, o normal seria o quê? Se eu tô aqui na cidade, eu possivelmente eu ter uma rota de consumo até chegar na cidade tal. Então, se o banco observa Que eh eu fui fazendo compras com cartão no meio do percurso ao longo de um tempo, aí sim tem mais sentido,
né? Então, possivelmente, nesse caso que eu acabei de retratar, o sistema pode identificar um caso de clonagem de cartão, por exemplo. Bancos de dados autônomo também é outra aplicação, entre várias outras que vocês nem imaginam. Fundamentos básicos do aprendizado de máquina. Vamos compreender aqui, Primeira coisa, a terminologia, né, as palavras inerentes a essa tecnologia. Então, ó, para conduzir uma um aprendizado de máquina, eu tô chamando aqui de AM pra gente abreviar. Primeiramente, precisamos de dados. Legal. E nós temos aí o o todo desses dados que entram, que são analisados por um algoritmo, compõe o que
a gente chama de conjunto de dados, tá? é um conjunto de registros onde cada um contém a Descrição de um evento ou de objeto. Nesse exemplo que eu retratei para vocês, a gente pode ter um como entrada de dados, né, um conjunto de dados ali com registros contendo informações a meu respeito, a seu respeito. Então, cada objeto desse que traz essas nossas informações é o que a gente chama aqui de de um registro e faz parte de um conjunto de dados ou data set. Um registro também pode ser chamado de instância ou Amostra. Então, eu
tenho informações de consumo, de todos os consumos realizado realizados eh na cidade tal, em uma empresa X. Então eu posso daquele todo, daquele conjunto todo, extrair algumas amostras para serem analisadas de acordo com a intenção do algoritmo. O registro possui também atributos que descrevem o evento ou o objeto. Então, é, a gente vê também do tipo, tem, existem sistemas que Armazenam um histórico do preço de um produto. Então, você tem ali, você pode ter ali um histórico de de registros contendo informações, atributos acerca daquele produto. E aí, o que são os atributos? É o nome
do produto, é o preço que ele que ele teve no período tal. Então, no ano de 2020, esse violão custava eh R$ 1.000. No atualmente esse violão custa, sei lá, R$ 2.000. Então são atributos que você tem acerca do registro que foi Armazenado, que tá sendo analisado pelo algoritmo. Outra coisa, aprendizado e treinamento. Esse processo todo que que a gente tá descrevendo aqui é o que a gente chama de aprendizado de treinamento. Processo de usar algoritmos para aprendizado de máquina, visando aí construir modelos a partir de dados. Então você pode chamar isso de aprendizado ou
de treinamento. Dados de treinamento são os dados utilizados na fase de treinamento, Onde cada amostra é um exemplo de treinamento. Todas as amostras formam um conjunto de treinamento. Um conceito importante dentro do aprendizado de máquina é o conceito de hipótese. E a hipótese nada mais é do que o resultado gerado pelo algoritmo, tá? Então é uma das possibilidades ali eh que foram que foi gerada a partir do algoritmo de aprendizado de máquina. Então, na maioria dos algoritmos de Aprendizado de máquina supervisionado, o objetivo é descobrir uma possível hipótese a partir do espaço de hipóteses que
poderia mapear as entradas para as saídas adequadas. Então, dentro desse conjunto de possibilidades, na hora do algoritmo determinar um resultado ou prever um valor, um número ou classificar alguma coisa, eh, ele tem diversas possibilidades. E aí o algoritmo ele Vai escolher o que ele considera como sendo a melhor possibilidade, a melhor hipótese para aquela situação. Ou seja, aqui apresenta uma menor taxa de erros. Legal? Então isso é uma hipótese. E é importante que vocês saibam que desse conjunto de hipóteses, o que ele chama aqui de espaço de hipótese, o algoritmo vai escolher apenas um. Então,
o espaço de Hipóteses representado como h maiúsculo, aqui vou mostrar um gráfico para vocês. Ele é um conjunto de todas as hipóteses jurídicas possíveis. E aqui os jurídicas entendam como como hipóteses válidas que estão de acordo com os critérios estabelecidos, configurados para o algoritmo. Então o algoritmo ele tem que escolher a melhor hipótese que descreve a função alvo ou os resultados almejados. Então o que que é uma hipótese? Uma hipótese a gente pode ser Compreendida também como uma fórmula ou função G que é obtida para aproximar a função alvo, tá? Mas o que que é
a função alvo? A função alvo é uma função que tem um domínio X, que são as entradas, e os contradomínios Y, que são as saídas. Para vocês entenderem melhor, tenho esse gráfico aqui, ó, essa imagem que que trata aqui da produção eh de hipótese final, né? Então, o algoritmo ele recebe dados e ele vai ter que gerar uma hipótese, ele Vai ter que escolher, né? Então, por exemplo, se um um sistema ele recebeu um conjunto de dados, ele um antivírus, ele vai ter que classificar aqueles antivírus como sendo um vírus ou não, é um cavalo
de Troia ou não é um cavalo de Troia. Então, ele tem várias possibilidades na hora de de classificar aqueles dados todos que chegaram, tá? Então, ó, nós temos aqui o A chamada função alvo, a qual me referi agora a pouco. Então, a função alvo, ela é desconhecida, ela tem x de entrada. Então, x aqui representa a entrada, os dados que vão vir, né? E com base nessa entrada, essas informações vão ser analisadas pelo algoritmo e ele vai gerar a saída, os dados de saída, que são os dados classificados, ó. Então, do que chegou aqui, isso
é vírus, isso não é vírus, que é representado aqui através do Y. Então, X entrada, Y saída. Então, essa é a função alvo, uma função. Eh, lembra que a função é a mesma coisa também que hipótese. É uma hipótese desconhecida, tá? Função alvo que ainda não que é desconhecida, é o começo do algoritmo, tá? Aí ele vai realizar diversos treinamentos lá dentro. Então, com base nos dados, ele vai eh efetuar vários testes por meio de métodos estatísticos e outras eh e outros métodos. Ele vai aprender alguma Coisa, né? Então, a ideia é o sistema aprender
simulando o comportamento humano, né? Como que você aprende? Como que eu aprendo? É por tentativa e erro? É fazendo? Muitas vezes, sim, né? Então, essa é uma das formas. Então, então eu tento pelo um caminho A resolver um cálculo, não foi. Vou tentar pelo caminho B, pelo caminho C. Então, eu tenho vários treinamentos e de acordo com com essas experiências Obtidas, no final eu vou chegar a uma hipótese, a uma conclusão que eu acho que é que é a correta, que é a mais certeira, que é a hipótese final, tá? Então, lembra disso, você tem
a o algoritmo inicial, você tem a entrada dos dados, você tem a etapa de treinamento de testes e depois o aprendizado, né? O algoritmo vai aprender e vai gerar a hipótese final. Bacana? E aí você dentro dessa Desse aprendizado, você tem o espaço de hipóteses, que são todas as possibilidades para eh gerar um resultado. Vamos entender melhor. Ó, eu tenho aqui uma essa imagem que traz aqui algumas representações. Vamos entender, por exemplo, como se fosse um sistema de e-mail em que ele tem que classificar se o e-mail é spam ou não. Então, a gente poderia
entender que o mais é é spam e o menos é e-mail normal, não é spam. E aí eu tenho aqui quatro elementos, quatro Dados que entraram que eu não sei o que eles são e eu vou ter que classificar eles, né? Então, a entrada e eu vou ter que gerar a saída. E aí eu já tenho algumas informações prévias aqui, ó. Isso aqui é um spam. Então esse cara é ou não é? Então eu tenho várias possibilidades. Uma possibilidades ou hipótese, né? Eu tenho várias hipóteses. É essa de separar aqui nesse ponto os dados. Então
daqui Pra esquerda, eh, por exemplo, pode ser spam ou não. E daqui pra direita pode ser, é, não é spam, né? Aqui é spam e aqui não é spam. E aí o os os valores aqui trocados, pode ser fal falso negativo ou falso positivo. Mas resumindo, eu tenho uma possibilidade de classificação. Aqui eu tenho outra que é outra forma de eu de eu delimitar esses dados separando aqui eh dois elementos à esquerda e dois à Direita. Então, todas essas possibilidades de separação na geração do resultado final é é o que a gente chama de de
espaço de hipóteses, tá? Então, o conjunto de todas essas hipóteses caracterizam o espaço de hipóteses. E cada uma dessas linhas aqui representa uma hipótese e em especial, tá? Então são formas diferentes de eu agrupar os dados, os elementos que estão sendo Considerados. Então, voltando aqui, ó, a gente tem eh a função, né, a função que é chamada de função G, que é a hipótese inicial, que ela obtida para aproximar a função alvo. Então, ela vai buscar alcançar a função alvo. E a função alvo é justamente aquela que a gente viu no gráfico, né? Essa aqui,
ó, que vai ter uma entrada e vai gerar uma saída. Então, quando ele fala aproximar aqui, é tentar fazer com que o a hipótese final seja a mais certeira possível, porque é importante a gente saber que nem sempre o resultado que é apontado pelo algoritmo é de fato o melhor resultado na prática, tá? Então, o algoritmo com base na nas informações dele ou nas suas configurações, ele vai indicar alguma coisa para você, né? Então, a gente tem várias aplicações, mas, por exemplo, na Indicação de conteúdo, ele ter que escolher se se ele vai indicar um
vídeo A ou B para você. O YouTube, por exemplo, ele quer te agradar o máximo possível e aí ele tem que escolher, cara, qual que será que ele vai gostar mais, é esse vídeo ou esse vídeo? porque eu quero que ele fique mais tempo aqui. Então, eh, pode ser que ele indique um que não seja o mais certeiro. Então, essa diferença do que de fato é o Melhor e do que foi indicado, ó, di é o que chama de viés. Então, a viés é a diferença ao quadrado da melhor função e da função alfa. diferença
ao quadrado da melhor função e da função alvo. Beleza? Então, ó, função alvo é o que se pretende eh é aquela hipótese inicial. Bacana? E aí a melhor função é o que de fato representa ali eh o que realmente é melhor, o Melhor resultado possível. O conjunto de hipóteses, ele é tendencioso com relação à função alvo, tá? Então, toda a configuração, os dados, eles são direcionados para se buscar atender um objetivo. Então, você tem uma uma condução, o cientista de dado muitas vezes, ele vai conduzir o sistema em um caminho, tá? Pode ser que o
sistema ele ele mude de direção, né? Mas você tem ali uma tendência em cima do conjunto de Hipóteses. Bacana. E aí nós temos dois tipos de aprendizado, duas classificações mais eh reconhecidas, tá? Que é o aprendizado supervisionado e o não supervisionado. Nós temos outras outros tipos de aprendizado também. Eu vou retratar inclusive mais um deles aqui, mas eh basicamente os amplamente divulgados e conhecidos são dois: aprendizado supervisionado e não supervisionado. O aprendizado supervisionado, ele faz uso De um conjunto de dados rotulados para treinarem os algoritmos para fazerem classificações ou previsões. ao longo da entrada de
dados, o modelo pode ter seus pesos ajustados. Foi aquilo que eu falei, né? Então, ó, uma das características do aprendizado supervisionado é que ele tem como entrada dados já rotulados, ou seja, já classificados. Então, foi o que eu falei no começo da aula, né, do analista que teve que colocou como entrada do dos Dados do algoritmo dados já rotulados com informações contendo se o cliente já era um bom cliente ou não. Então, é um dado que ele já veio pré-classificado. Bacana. Então isso é é é o conceito principal ali na classificação de de um algoritmo
com aprendizado supervisionado. Bacana. E ó, é utilizado, por exemplo, na classificação de spams, OK? Né? Então você já tem ali, ó, Você vai, por exemplo, oferecer pro sistema de e-mail já um conjunto de de dados, já mostrando, ó, e-mail, sistema, se você, por exemplo, observar dados, e-mails que seguem esses padrões, você já tem aí um indício de spam. Então, são, ou seja, os dados que entram para esse algoritmo, eles já possuem uma classificação. Ele já tá falando, ó, isso aqui é um spam. Se você vê algo semelhante, já saiba que isso é um spam. E
a gente já consegue observar que, por Exemplo, em sistemas de antivírus também a gente tem muito isso, né? A as assinaturas de milhares de vírus conhecidos. E aí essas assinaturas, ou seja, elas entram como dados e aí o os dados já estão classificando. Ó, isso aqui, esse tipo de dado já é um vírus, já é um cavalo de troia, por exemplo. Então, já são dados que já vêm classificados. Então isso define um aprendizado supervisionado, tá? Eu eu vi algumas Questões, por exemplo, tentando trazer ou confundir o o eh confundir a gente no sentido de que
a supervisão é basicamente ter a interação humana, não necessariamente, tá pessoal? Esse não é o cerne da coisa. O conceito principal aqui no aprendizado supervisionado você tem a entrada de dados já rotulados, já classificados, tá? O não supervisionado, ele tem entradas de dados, mas não Classificados. Ele vai ter que descobrir se aquilo, por exemplo, é um é um spam ou não. Seguindo o mesmo exemplo, OK? Ele não tem, ele já tem dados, mas não não tá dizendo o que é. Como assim, professor? Não entendi. Eu vi um exemplo muito bom na internet estudando, que que
é trazendo aí o contexto do do da educação, do aprendizado infantil. Então, por exemplo, o aprendizado supervisionado seria eu pegar, por exemplo, uma uma Página com diversas frutas e ali já ter o nome, né, já indicando. Então, a criança vai ver, ó, isso aqui é uma maçã, olha, isso aqui é é uma laranja, isso aqui é uma melancia. Então, já tem uma uma classificação lá, já tá dizendo o que é, né? Ou então eh, ó, isso aqui é fruta, isso aqui é uma fruta, isso aqui é uma fruta. Então isso já é classificado. O aprendizado
não Supervisionado é quando, por exemplo, você tem os dados, você tem aqueles elementos, as frutas, objetos, mas não tá dizendo que é fruta. E aí, como é que a criança vai vai descobrir? Ah, é olhando as características. Então ela vai olhar e vai falar: "Ah, isso aqui parece ser uma fruta". Então, ah, isso aqui, isso aqui eu acho que é uma fruta. Ah, isso aqui eu também acho que é uma fruta. Ah, isso aqui eu acho que que é um que é um eh um outro produto, então Ele já vai separar para outro lado. Então,
eh, ou seja, são informações que não vieram rotuladas. E aí a de acordo com as características, ele foi lá e descobriu e classificou segundo o que ele o que ele tava eh levando em consideração. Legal. Então isso é aprendizado supervisionado. Não vá nessa de que ah, o supervisionado é quando tem interação humano e o não supervisionado é quando não tem Interação humano. Não. Na na realidade ambos em algum momento vão carecer da interação humana. até o um mecanismo, um um aprendizado de máquina não supervisionado vai ter que em algum momento ser configurado, ser ajustado, ter
seus pesos alterados ali por uma um cientista de dados. Métodos que são utilizados no aprendizado supervisionado. Nós temos redesorais e nave beers, você tem regressão linear, regressão logísticas, É logística, floresta aleatória e o support vector machine. Mais à frente eu vou explicar para vocês alguns desses métodos. Aprendizado não supervisionado. O aprendizado não supervisionado tem como característica a classificação, a análise de dados não rotulados. Então, ele faz uso de algoritmos e aprendizado de máquina para analisar e agrupar dados. Mas esses dados eles não vêm com nenhuma indicação prévia. Ele tem, chega o dado pro algoritmo, o
algoritmo vai analisar essas informações e a partir da dos critérios considerados e do algoritmo vai gerar a classificação à previsão que ele considera como sendo eh a mais correta, mais assertiva. Bacana? Então, saiba disso. Aprendizado não supervisionado, os dados de entrada não são rotulados. aprendiz dado supervisionado, os dados de entrada já Vêm rotulados. Só lembrar desse exemplo do do vírus, né, do do antivírus, por exemplo. Então, o algoritmo ele já recebe um conjunto de dados que já indicando ali eh alguns possíveis vírus. Então, ó, esse tipo de dado, isso aqui já é um vírus. Então
o algoritmo usa isso como um parâmetro para comparação. Ah, então eu tenho um outro dado aqui, já que esse aqui é um vírus, então esse aqui possivelmente também é. Legal. E aí o Não supervisionado ele vai ter que descobrir, né? Então o que que é isso? Aí ele vai agrupar. Isso aqui é mais para classificação, né? Então, por isso que nesse caso do antivírus é mais utilizado o supervisionado. O não supervisionado a gente vai ver muito em classificações e sistemas para classificação de dados, porque aí ele vai agrupar segundo critérios em comum, né? Então, ou
seja, fazem parte de uma Mesma classe, descobrem padrões escondidos e agrupamento de dados sem a necessidade de intervenção humana. Então, por conta própria, ele consegue descobrir isso, né? Não precisa o o humano indicar, ó, isso é tal coisa, isso é tal coisa. Mas não se confundam, não quer dizer que que não tenha que que de forma nenhuma tem intervenção humana, que ele tá falando sem a necessidade de intervenção, mas não quer dizer que, ou Seja, não precisa, ele consegue se virar, mas pode ser que tenha. Às vezes é necessária a intervenção humana, tá, para, por
exemplo, ajustar os pesos que vão ser considerados nesses dados. Então, às vezes, para falar, ó, algoritmo, o que o que você tá indicando não é necessariamente o o melhor, né? Então, pode ser pode ser necessário realizar eh alguns ajustes para que os resultados sejam mais certeiros. por descobrir eh pode Descobrir similaridades e diferenças entre em informações e por conta disso é ideal para explorar estratégias de vendas, segmentação de clientes e reconhecimento de imagens e padrões. Olha aí algumas das aplicações possíveis. estratégias de vendas, eh, são essas, como por exemplo, eu citei, de organizar produtos de
uma forma lógica para que venda mais, né? Então aquele aquele corredor no supermercado direto pro caixa, tem aqueles produtos Ali, mas não não é de forma aleatória, eles já foram pensados para eh para o consumo. métodos utilizados aí no no aprendizado não supervisionado. A gente tem o principal component análisis, nós temos o singular value decomposition, redes neurais também, ou seja, as redes neurais podem ser utilizadas tanto no aprendizado supervisionado quanto no aprendizado não Supervisionado. Nós temos clasterização via o o caminhos, tá? Esse caminhos já vi já vi muita questão sobre ele. Então a gente vai
ter mais aí na frente uma explicação melhor sobre o Camins. Então Camins é um um método, um algoritmo que opera dentro do aprendizado não supervisionado e métodos de clusterização probabilísticos. A título de conhecimento, eu trouxe aqui para vocês o aprendizado por reforço. O Aprendizado por reforço, ele é semelhante ao aprendizado supervisionado, mas o algoritmo não é treinado com dados de amostras. O aprendizado por por reforço, ele busca aprender através da tentativa e erro. Então, de acordo com as experiências que ele vai obtendo, a partir dos resultados, eh, ele vai ali ajustando o o seu aprendizado.
Mas como assim? Como como onde que isso poderia Ser aplicado, por exemplo, professor? E e como que ele vai saber se ele eh acertou ou se errou? Vocês já possivelmente já se depararam com a questão depois de uma indicação de um conteúdo, seja no Google ou no YouTube, ã, o sistema te perguntando, esse conteúdo é do seu gosto? É isso mesmo? Você gostou da indicação? Então, e nada disso é à toa, né? Quando você responde: "Não, não gostei". Ou seja, ele vai entender como erro. Opa, opa. O Algoritmo indicou um conteúdo que não foi de
agrado do cliente, então ele errou na na predição, na previsão. Legal. E aí ele vai tentar de novo por outro caminho com outra hipótese. Legal. Algoritmos de aprendizagem de máquina. Então, vamos lá, galera. Eu tô trazendo aqui para vocês uma noção geral sobre os principais algoritmos. você não vai ficar PhD no algoritmo, tá? Isso aqui Para você dominar as redes neurais, você tem que é uma vida de estudo, tá? você tem que entrar de cabeça no estudo eh da matemática, entre outros elementos ali que são considerados aqui no caso das redes neurais também da biologia,
outras áreas de conhecimento, estatística, para você entender como isso funciona de de fato eh por baixo do pano. Mas a nossa ideia aqui é trazer uma um noção Geral do que é e como funcionam esses algoritmos, que é o suficiente pra gente e conseguir responder as nossas questões aí nos concursos, tá? Então, o que são redes neurais? Elas simulam a forma como o cérebro humano funciona e pensa. E como é? estabelecendo ali eh diversas ligações entre os neurônios, tá? Então, nas redes neurais, a gente tem a uma estrutura matemática que visa simular uma Uma célula
biológica cerebral, OK? Então, é uma uma tentativa de representar uma representação de uma célula eh biológica como ela é na na realidade. Então, ó, possui um grande número de nós de processamento ligados. São boas para reconhecer padrões e para aplicações, como tradução de linguagem natural, reconhecimento e criação de imagem. Eu trouxe aqui uma um gráfico, uma imagem para vocês para facilitar a Compreensão. Então, nós temos, ó, entradas aqui, quatro entradas pro algoritmo, pesos que foram eh dados a a essas entradas. Bacana. Então, a gente já aprendeu que é possível você alterar os pesos, eh, indicando
o que é ou não mais relevante, mais importante na busca. E aí você tem descobertas intermediárias, né, os neurônios intermediários. E aí, por fim, você tem os neurônios de saída que são Eh representam o resultado do algoritmo. Legal. As redes neurais, elas são retratadas também como uma caixa preta. Então o o que ocorre no centro dela às vezes é difícil de você controlar. Então você tem as entradas, você estabelece pesos paraas informações, pros dados que vão entrar nessa nesse algoritmo, mas eh como ele de fato funciona lá dentro é bem complexo e é difícil às
vezes de você Mapear isso. E aí o algoritmo vai gerar uma saída é X ou Y. Nós temos também a regressão linear, que é o algoritmo utilizado para predizer valores numéricos. Observem, deem uma atenção especial para essas essas eh esses destaques que eu deixo aí no conteúdo paraa leitura, tá? Então, ó, regressão linear para é para predizer valores numéricos. Eh, não quer dizer que é o Único algoritmo, mas ouviu falar de predizer valores numéricos? A gente tem aí regressão linear como uma das principais alternativas. É baseado no relacionamento linear entre dois valores diferentes. Por exemplo,
pode ser utilizado para prever os preços de casas baseando-se no histórico de preços da área. OK? Então, com base na numa série de informações de dados históricos acerca, por exemplo, aqui das casas na Região, esse algoritmo pode ali prever o valor, eh, determinar estatisticamente, né, qual seria o valor mais apropriado para para um imóvel naquela região. Regressão logística é o algoritmo de aprendizado supervisionado que faz previsões com base em variáveis de respostas categóricas. E o que seriam isso? São respostas do tipo sim ou Não. Bacana. São aquelas respostas que só tem o caminho A ou
caminho B. Ou é ou não é. Pode ser utilizado em aplicações como classificação de spans e controle de qualidade em uma linha de produção. Então o produto tá saindo lá. Beleza? Em algum ponto vai olhar, atende a a os critérios mínimos para comercialização, sim ou não? Atende, vai para um lado. Se não atende, vai para outro lado. Spam, né? O algoritmo, o sistema do e-mail vai ter que vai ter Que decidir. Chegou o e-mail, isso aqui é um spam ou não é? É um vírus ou não é? Então ele vai olhar e por meio da
regressão eh logística, ou seja, é, lembra que é um algoritmo de aprendizado supervisionado, ou seja, ele já tem uma entrada, já tem uma amostra ali com dados já indicando o que seria cada coisa, o que é o que não é, né? Então, por exemplo, do spam, né? Então, ó, e-mailos com essas características já já são indicativo de Spams. Então, o dado que você tá analisando se assemelha a algum desses? Sim. Então, é um spam. Vai para um lado. Não, não é um não se assemelha. Ah, então possivelmente não é um spam. Pode ter outros critérios,
né? E ele também pode aprender com com as experiências próprias. Mas segundo esses critérios, ele vai ter que escolher se é ou não é. Então isso é o o que caracteriza a regressão logística. Eu tenho aqui um um gráfico. Se vocês quiserem se aprofundar Mais no estudo sobre esses métodos, eh eh eu coloco aí, ó, na de onde foi retirada a imagem. Você pode pesquisar e estudar. Nós temos aí artigos bem bacanas para vocês, e irem mais fundo aí no no estudo, OK? Então, olha aí, ó. Nós temos aqui um modelo que recebe três entradas
com com peso eh igual para as três entradas, representado ali no 1, 2 e 3, né? E gera, vai ter que que decidir se a saída é ele tá feliz ou não, ou tá triste. Tá feliz ou tá triste? O o algoritmo, por exemplo, pode escolher isso, utilizar um sistema desse para indicar um produto, um chocolate que pode amenizar a sua dor, que pode te trazer te trazer uma alegria momentânea, né? Ou então eh alguma outra coisa de acordo com a intenção do algoritmo, né? Clusterização é outro método eh importante, é utilizado para basicamente fazer
o que a gente chama de agrupamento de Dados. Outra característica da clusterização é um é um método de aprendizado não supervisionado. Então, quando a gente fala de cluster, separar em clusters é basicamente agrupar, classificar. Então eu tenho, sei lá, uma série de de alunos que chega numa escola e aí eu preciso agrupar eles em turmas diferentes. Então, de acordo com alguns critérios, eu posso falar: "Não, você vai pro primeiro ano, você vai pro Segundo, você vai pro terceiro". Então, eu consigo ali com base na nesses dados de entrada agrupá-los por características. E uma dessas características
pode ser a idade, pode ser eh o nível de conhecimento, depende do do da função alvo do que se pretende alcançar, tá? Então, a clusterização é faz parte do aprendizado não supervisionado, tá? E esses algoritmos podem identificar padrões em dados, ó. Computadores podem ajudar os cientistas de dados identificando diferenças entre dados que humanos podem não perceber. Essa é outra vantagem, né? Então o computador, justamente por ele poder cruzar essa quantidade de informações absurdamente maior do que o cérebro humano pode comportar, ele consegue visualizar e identificar coisas que nós, enquanto humanos, eh, temos a limitação de
fazê-lo. Então, o sistema computacional, Ele é eficiente nessa forma. E nós temos aí eh ocorreu um boom, né, ultimamente com o lançamento do do chat GPT. Creio que a maioria de vocês já ouviu falar sobre esse tema, que é a uma IA que faz de tudo, que que compõe, que compõe música, que eh cria artes, cria quadros, cria imagens. e já vi a aplicação da IA em, por exemplo, eh, operacionalizando como um advogado, defendendo um réu. Claro que numa situação bem específica, ambiente Controlado, mas você a gente já consegue imaginar o quanto isso poderia ser
mais eficiente do que do ser humano, né? Porque nesse caso, por exemplo, do da advocacia, um sistema desse, ele consegue cruzar informações, jurisprudências, decisões, eh, numa escala global e muito mais ampla e aprofundada do que o ser humano pode armazenar na cabeça. Então, essa é isso é uma demonstração do quanto a IA e o Aprendizado de máquina e dentro da IA, né, estão cada vez mais presentes nas nossas vidas. Olha aqui um exemplo de clusterização. Nós temos aqui, ó, um conjunto de dados não rotulados, lembra, né? É aprendizado não supervisionado. Então, um conjunto de dados
é não rotulados, é o que ele chama aqui de unlabeled, né, professor? Mas e tudo em inglês faz parte da TI, né? Quem tá estudando, fazendo uma graduação, Estudando eh na área de TI ou que quer prestar concurso na área de TI, o a compreensão do inglês é fundamental. Então tem termos que eu mantenho em inglês, tá? Eu não faço questão de traduzir. E muitas vezes a gente vê a esses termos caindo na nas provas em inglês também. Então não, muita coisa não tem tradução. Então, ó, dados não rotulados como entrada. E aí a partir
do da clusterização, você tem o os dados já Agrupados em clusters diferentes, né? o que ele classificou ali como verde, azul e vermelho. O algoritmo utilizado nesse exemplo aqui é o camins. Então a gente já descobre que o camins é um algoritmo de clusterização, logo ele é para aprendizado não supervisionado. Beleza? Para você não errar uma questão sobre o caminhos, normalmente cai algo mais superficial. Então, o Camins é um algoritmo de Clusterização para aprendizado não supervisionado. Por quê? que ele vai ter que descobrir e eh agrupar esses dados e aí sim aplicar os rótulos de
acordo com o que ele descobriu. Árvores de decisões é outro método utilizado. É utilizado tanto para prever valores numéricos, né, lá da regressão linear, vocês lembram, quanto para classificar dados em categorias. Utilizam uma sequência de ramificações de decisões relacionadas. São fáceis de validar e auditar, diferentemente da rede neural, né, por conta daquilo que eu falei, né, ele ser identificado muitas vezes eh se referem a ele como uma caixa preta dada eh a não transparência qu, por exemplo, de um de uma árvore de decisões. É mais fácil a gente visualizar o comportamento da árvore de decisões.
Então, a árvore de decisões, ela funciona dessa forma, é simples, ó. Ela é representada como se fosse uma Árvore na estrutura de dados. Temos aí nossa aula de estrutura de dados também e no canal. Então, nós temos ali o nó, que é a raiz da árvore, né? E aí ela vai se ramificando em subnós, né? E como é que funciona as árvores de decisões? Olha aqui, por exemplo, ó. É, nessa pesquisa, ele tá querendo saber se a pessoa ela é eh fit ou não, né? Ou seja, se ela está em forma ou não está em
forma. Aí tenho aqui os critérios Levados em consideração. A idade é menor que 30? Sim ou não? Então, sim. Aí pergunta, come muita pizza? Se sim, então não está em forma. Se não, está em forma. Aí, no caso contrário, tem aqui, ó. A pessoa tem e tem menos de 30 anos, não pode ter 30 ou mais. Então, vem para cá. eh, faz exercícios de manhã, sim. Então, a pessoa eh fit, senão não faz, né? Claro que isso aqui não não necessariamente é O retrato da realidade. Isso aqui é apenas um exemplo que foi retirado dessa
fonte, mas só pra gente ver eh o funcionamento do algoritmo, né? Então, árvores de decisões funcionam dessa forma. E aí a gente tem as árvores aleatórias, que ela junta várias árvores de decisões para tomada de decisão, tá? Como assim, professor? Ó, ela prevê um valor, uma categoria, combinando os resultados de um número de árvores de Decisões. Olha aqui, eu tenho aqui, por exemplo, eh, três árvores de decisões que foram consideradas nesse algoritmo. Então, tenho a árvore um, a árvore dois e a árvore três. OK? Aí, com base nessa nessas decisões, o algoritmo verificou, ó, que
na abre um ele identificou que isso aqui é é uma uma maçã. Com base na árvore dois, ele também a árvore dois identificou que Isso que a entrada seria uma maçã. A árvore três, por sua vez, identificou como uma banana. Ah, professor, mas eu não tô conseguindo fazer uma relação com algo prático. É, a gente pode voltar naqueles exemplos que eu que eu falei para vocês novamente, né? Então, o algoritmo vai ter que que indicar se um e-mail é um spam ou não, ou se um arquivo é um vírus ou não é o vírus. Então,
e ou com base na decisão do usuário, por exemplo, eh, eu, o algoritmo vai ter que decidir qual conteúdo que eu vou exibir para ele, né? A, aí ele tá na dúvida. Então, é uma palavra com ambiguidade que tem dois sentidos. Então, ele quer dizer, no exemplo lá da cobra, né? Ele tá pesquisando cobra enquanto substantivo, enquanto animal. ou cobra enquanto o verbo Cobrar. Então, ele pode usar eh experiências anteriores do próprio usuário. Então, em um dado momento, não num numa na lá na primeira indicação do algoritmo, o usuário falou que não, de fato, é
isso que eu tô querendo. O algoritmo foi lá e falou para ele, ó, é isso que você tá querendo? Ele foi lá e falou, é. Ah, beleza. A segunda vez o algoritmo recomendou outra coisa relacionada a esse conteúdo e aí ele falou: "Não, é o Que eu tô querendo". Na terceira vez ele falou, ele recomendou algo na no mesmo sentido e o usuário falou: "Não, não é isso que eu tô querendo". Então, ele tem três árvores de decisões desse usuário acerca do conteúdo que tá sendo indicado pelo algoritmo. E aí, com base nessas três, ele
vai avaliar uma quarta vez. a ele vê, não, pelo histórico dele, a gente tá acertando mais o que tá errando. Então, possivelmente é sim. Nesse caso aqui, Ele tá querendo classificar se é uma maçã ou não. Então, ó, nas duas experiências, né, iniciais, o algoritmo identificou como uma maçã, na terceira, que foi é uma banana. Então, eh, pela mai pelo voto da maioria, o algoritmo entende aí que classificou na no final e como uma maçã mesmo. Então, na árvore aleatória, você tem isso, a utilização de várias árvores de decisões como como critério na decisão final.
Vamos falar agora sobre Processamento de linguagem natural. é um ramo da IA focado em dar aos computadores a habilidade de entender textos e palavras ditas da mesma forma que humano. O processamento de linguagem natural, ele tá em nossas vidas de diversas formas, mas o foco desse tipo de processamento é aproximar o o comportamento do computador ao comportamento que um humano, um humano Teria em dada situação. Como por exemplo, ao em um sistema de atendimento ao cliente, por exemplo, é comum a gente muitas vezes interagir com com um computador, com o sistema. E isso por vezes
pode incomodar o cliente, mas se o sistema, a a IA, ela consegue dar a ao computador um comportamento mais natural, que se aproxima mais ao comportamento humano, Você pode minimizar esse efeito negativo por parte do cliente. Então o cliente pode não se incomodar tanto e isso não vai prejudicar a imagem da empresa, dar mais satisfação pro cliente. Com isso, você fazendo com que o computador pense mais próximo de um ser humano, você consegue também proporcionar um comportamento mais humanizado, digamos assim. Então, muitas vezes, por exemplo, ao compreender a fala do cliente, o que o Que
o cliente queria dizer para um computador pode ser mais complicado, né? Às vezes no a gente sabe num país que nem o nosso com linguagens diversificadas regionais, existem muitas expressões que em um ponto significa uma coisa e em outro ponto significa outra. Mas um ser humano, pela experiência, por conhecer os dois lados, muitas vezes vai saber o que o que a pessoa quis dizer ou não. Mas o computador nem sempre tem essa Habilidade. Mas por meio da inteligência artificial, você consegue dar essa essas dar essas informações para ele para que ele consiga entender. Ah, você
tá querendo dizer isso? E aí você, o computador age de uma forma mais humanizada. Nós vemos, por exemplo, em em veículos mais modernos, em carros mais modernos, a função de de comando por voz. Esses dias eu vi um exemplo que eu até achei engraçado. O cara tava dentro de uma Mercedes e aí Ele deu o seguinte comando pro carro: "Mercedes, por favor, colocar na temperatura máxima". E segundo ele, pela fala dele, a gente viu que ele ele queria colocar no mais gelado. Ele falou: "Temperatura máxima". Mas o sistema entendeu da forma mais correta, né, mais
tradicional. Então, temperatura máxima seria maior temperatura. Então, ele foi e colocou o carro na temperatura mais quente que tinha. E aí o cara, ele Queria, na verdade, temperatura máxima, ele quis dizer com menor temperatura. Então, o erro aí foi do do operador do sistema, né? Então, o os sistemas computacionais têm que lidar com essas especificidades, com essas diferenças eh que são inerentes a ao ser humano. E isso ocorre através do processamento de linguagem natural. Visa tornar realidade a ideia de conversar com uma máquina sem a Preocupação de códigos. Combina a computação linguística com estatística, machine
learning e deep learning. tarefas que um sistema de processamento de linguagem natural pode eh em que elas podem ser empregadas. reconhecimento de discurso, parte de de marcação de discurso. parte de marcação de discurso é é justamente identificar num numa fala, no frase, então num comando desse, por exemplo, que eu retratei pro computador, o sistema e em uma palavra Que pode ser um verbo e um e um substantivo ao mesmo tempo, o computador tentar descobrir o que ele tá querendo dizer, se é de acordo com a frase, se aquilo é um verbo ou se é o
substantivo. E a partir dessa identificação, ele vai tomar a decisão mais correta. remover ambiguidade de palavras, eh, dessa mesma linha, reconhecimento de nomes de de entidades. Então, muitas vezes na fala, num discurso, eh, na na tradução de um De um texto, o o tradutor identificar que uma palavra remete a um nome, né, a um nome próprio, a um nome de de uma de uma entidade, o nome de de um de um órgão, de de alguma coisa que não demanda tradução, por exemplo, né? Então, análise de sentimentos, conseguir se aproximar mais do dessa parte emocional do
ser humano, compreender, dar emoção, né, para o para o sistema, geração de linguagem natural, entre outras Aplicações. Eu trouxe aqui um um uma imagem que retrata diversas aplicações, tá? Então aqui, ó, na tradução de linguagem, no filtro de e-mail, na análise de sentimentos, em chatbots, monitoramento de rede social, sumarização automática, predição textual, buscas online, análise de documento e a assistente de por meio de smartphone. Então você tem diversas aplicações, pessoal. Esse conceito de Processamento de linguagem natural, ele é ele é mais profundo, ele demanda, eu entendo que ele demanda uma aula própria. Legal. Então, em
breve eu vou estar disponibilizando para vocês, se não estiver na data desse vídeo, uma aula própria sobre eh processamento de linguagem natural, pessoal. Então, é isso, tá? A a nossa ideia aqui foi dar uma noção geral para vocês sobre o que é o aprendizado de máquina, o machine learning. Você, Claro que você não vai virar um expert numa aula eh no com um tempo desse. Isso aqui demanda a um estudo muito mais aprofundado. Mas para fins de concurso, o primeiro passo é esse, a gente ter uma compreensão geral sobre o tema. E aí, se você
tiver tempo, você aprofunda mais. nos eixos, naquelas matérias que você julga se é mais importante ou que tem mais dificuldade segundo os critérios que você eh está utilizando, né? E aí, por sinal, eu já pergunto: será que você Utiliza os critérios corretos na hora de escolher o conteúdo a ser estudado? O machine learning pode te ajudar nessa linha. tem busca alguma ferramenta que pode trazer, por exemplo, eh, dados estatísticos que vão te indicar de forma mais correta o que é mais importante ou não. Essa é uma aplicação. Legal? Qualquer dúvida pode deixar o seu comentário
aí no YouTube. Valeu, grande abraço, bons estudos e até a próxima. M.