fala pessoal aqui é o Fábio da boson Treinamentos e esse vídeo é o primeiro vídeo do nosso curso completo de lógica de programação com português estruturado bom que passa é o seguinte você que acompanha o canal aqui da boson Treinamentos e se não acompanha deveria estar acompanhando e já deve saber que temos cursos de lógica de programação aqui no canal divididos em vários vídeos são mais de 40 vídeos em cada curso Total uns 80 e poucos vídeos e aí pensando na sua comodidade na facilidade de encontrar o material e para vocês poderem estudar com com
com mais afinco né com mais performance eu resolvi fazer o seguinte fiz um apanhado de todos os vídeos de lógica de programação com português estruturado que temos aqui no canal juntei todos esses vídeos refiz a edição Na verdade até gravei alguns novamente para substituir porque a qualidade não tava tão legal e juntei tudo num único vídeo grandão então agora aqui você vai ter esse curso de lógica de programação completo num vídeo só que você pode assistir do começo ao fim eh dividido em capítulos ou que você pode assistir aos poucos né assistendo cada um desses
capítulos quando for mais conveniente para você e aí fica mais fácil até para você guardar o link do vídeo compartilhar com os seus amigos mandar pelo WhatsApp mandar por por e-mail redes sociais etc e eu acredito que assim fica mais fácil para para para vocês poderem estudar da mesma forma que o curso de Python que eu postei no final do ano passado também um curso grandão com mais de 9 horas de duração esse curso de lógica de programação chega mais ou menos a quase 9 horas de duração também talvez até ultrapasse um pouquinho então é
um curso que tem bastante conteúdo beleza Eh primeira aula vou explicar o que que é lógica de programação logo na sequência depois a gente vai fazer a instalação do Portugal Studio que é a a ferramenta que vai ser utilizada tanto no Linux quanto no Windows e depois aí os conceitos de lógica eh e muita mão na massa o curso é codificação praticamente do começo ao fim excetuando-se ah a introdução Zinha básica que eu já vou fazer sobre o que é lógica O que é programação O que é algoritmo esses conceitos que a gente precisa conhecer
depois é mão da massa e aprender programação aprender lógica de programação para poder depois se aventurar com linguagem de programação legal então sem mais delongas espero que vocês gostem desse cursso e espero que aprendam bastante deixem o seu like aqui se vocês gostarem façam comentários à vontade legal e a gente se vê então nas próximas aulas vamos dar o início então ao nosso curso de lógica de programação completo com português estruturado aqui na Moon treinamentos que que a gente vai aprender nesse curso bom veremos o que é lógica de programação a definição desse assunto uma
revisão muito rápida de arquit ura de computadores entender o conceito de algoritmos a linguagem português estruturado e entender as instruções dessa linguagem instruções para entrada e saída de dados entender o que são os tipos de dados variáveis e constantes trabalhar com expressões e operadores Além disso veremos como trabalhar com estruturas de decisão condicional com as bibliotecas da linguagem estruturas de repetição como usar bibliotecas para gerar números aleatórios e como trabalhar com arrays os vetores E no fim trabalhar com funções e uma breve introdução às estruturas de dados Ed e para tudo isso a gente vai
precisar baixar e instalar o Portugal Studio que também será ensinado muito em breve essa aqui é a cara da ferramenta Portugal Studio uma ferramenta gratuita que a gente vai usar nesse curso não se intimide com esse código que você tá vendo aí porque até o final do curso você vai dominar esse código inteirinho e muito mais do que tá sendo mostrado aí mas antes disso vamos começar bem pelo comecinho uma breve revisão de arquitetura de computadores Bom primeiramente você vai ser um programador de computadores então o que que é um computador computador é uma máquina
uma máquina cujo uso cujo intuito é processar informações que a gente vai chamar de dados de forma eletrônica utilizando cálculos matemáticos na forma binária ou seja o computador é uma máquina que automatiza o cálculo realizando computação exemplos de computadores incluem o computador tradicional que você já tá acostumado que é o PC personal computer computador pessoal um Imac um smartphone também é um computador mainframes que são computadores de grande porte servidores de rede servidor de internet um notebook que é de certa forma similar a um PC tablet super computador dispositivos embarcados e muito mais para todos
esses tipos de equipamentos que a gente vai chamar de computador e o programador encontra linguagens e aplicações específicas que ele pode programar Então esse curso de lógica de programação é o primeiro passo que você vai dar para se tornar um programador em uma linguagem qualquer que você vai escolher depois para qualquer desses dispositivos e outros bom e um computador no geral Tem o quê né Tanto faz ser um PC um servidor notebook etc ele é composto de duas grandes partes principais que a gente a vai chamar de hardware e software sendo que o hardware é
a parte física do sistema são as peças os componentes eletroeletrônicos o monitor o teclado CPU que é o processador do computador eh memória RAM o disco rígido etc isso a gente vai chamar de hardware já o software é a parte lógica do sistema são os programas que vão rodar em cima daquele hardware da máquina eh aplicativ ativos apps né no celular a gente vai falar em apps são programas é software Isso inclui o sistema operacional que aqui eu chamei de soo então o sistema operacional também é software e também é programado como por exemplo Linux
Windows macos e assim por diante então alguns exemplos de hardware e software numa tabelinha pra gente poder comparar hardware placa mãe processador memória RAM teclado Chipset software a gente vai ter sistema operacional editor de texto planilha navegador Gui que significa interface gráfica e assim por diante outros exemplos de hardware incluem mouse monitor placa de rede etc e outros exemplos de software jogos não todo joguinho de computador é um software o antivírus o próprio vírus também é um software os apps de celular e assim por diante todas essas categorias de software são programadas usando linguagens de
programação e é exatamente isso que você vai aprender ou pros dar o primeiro passo nesse curso como programar para escrever software e os computadores eles realizam o que a gente chama de processamento de dados então o que que é o processamento de dados que depende de uma entrada o processamento e uma saída isso aqui é a relação entre o hardware e software o fluxo de processamento dos dados então um computador ou uma máquina qualquer dessas que a gente citou ela recebe dados na entrada informações que ela captura do mundo externo processa ou seja trabalha transforma
calcula algo em cima desses dados e devolve uma saída pro usuário na forma de um dado processado de alguma coisa útil para ele e eventualmente a gente armazena esses dados em algum lugar para uso posterior Então esse aqui é o fluxo de processamento de dados e como é que a gente gera esse fluxo de processamento como é que a gente cria os programas que vão executar o processamento o processamento é executado por programas por programação e o primeiro passo pra gente poder trabalhar com programação é entender o que é lógica de programação Então pergunta básica
o que que é lógica de programação Vamos definir aqui o tema central desse curso porém antes de responder a essa pergunta de forma assertiva vejamos alguns conceitos importantes primeiro que é um programa Então como é que a gente define programa Vamos fazer uma definição básica aqui programa é um conjunto de instruções que são executadas numa ordem conveniente Correta que contém todas as tarefas as operações que são necessárias para poder resolver um problema então a ideia de um programa é resolver problemas usando computador ou equipamentos similares os programas são executados no computador por um componente especial
chamado CPU que a sigla unidade central de processamento ou processador ou microprocessador que trabalha em conjunto com a memória RAM do computador que é memória principal do sistem ação nós já vimos o que é um programa o que que é programação é o processo de realizar algumas tarefas específicas para resolver os problemas construindo o programa de computador então programação é o ato de construir ou de criar um programa de computador isso se faz escrevendo-se códigos estruturados usando ferramentas específicas e linguagens também bastante específicas que a gente vai chamar de linguagens de programação alguns exemplos de
linguagens muito usados em programa incluem o Python c+ mais csharp Java JavaScript Rust existem literalmente centenas de linguagens de programação aqui no canal da boson treinamentos nós temos vários cursos voltados a várias dessas linguagens como por exemplo Python JavaScript PHP entre outras bom já vimos o que é programa e programação e o que é lógica bom lógica de acordo com o dicionário é um raciocínio conduzido ou avaliado de acordo com princípios estritos de validade ou seja um raciocínio que é baseado em princípios de validade também o estudo das leis do pensamento ou do raciocínio de
novo correto então correto válido ou ainda conjunto de regras e técnicas para poder distinguir o raciocínio correto do incorreto existe o raciocínio correto aqui na nessa nossa ciência e existe o incorreto que não vai funcionar Então você percebeu que a palavra-chave aqui é raciocínio então lógica tá vinculada a raciocínio bom a gente já viu então o que que é programa programação e lógica vamos juntar as coisas que que é a tal da lógica de programação então Vamos definir lógica de programação como sendo um paradigma de programação Baseado Em lógica empregando sentenças frases palavras estruturadas para
construir algoritmos que são sequências dessas instruções para realizar tarefas específicas um paradigma é um exemplo típico ou um modelo de alguma coisa a representação de um padrão a ser seguido então um padrão a ser seguido de programação baseado em lógico Em lógica e aqui o termo chave é tarefa específica a gente escreve programas para realizar tarefas que a gente precisa para resolver nossos problemas executadas de forma automática por uma máquina e de que forma a gente aplica essa lógica e cria esses programas o que que a gente usa para criar programas para criar programas a
gente vai usar linguagens de programação que que é uma linguagem de programação é um conjunto de regras que a gente vai usar para criar os programas de computador essas regras elas são usadas para expressar algoritmos já já vou chegar no conceito de algoritmo também Eh esses algoritmos são escritos portanto numa linguagem de programação gerando um arquivo um texto na verdade que a gente a gente vai chamar de código fonte então código fonte é o texto do nosso programa escrito numa linguagem qualquer quase como escrever uma poesia você usa uma um idioma uma linguagem humana para
escrever uma poesia ou uma prosa um texto uma notícia tá gerando assim aquela notícia escrita aqui a gente tem um conceito similar só que usa uma linguagem de programação para gerar um texto que a gente chama de código fonte que vai se transformar posteriormente em um programa e as linguagens de programação que são muitas elas são classificadas em três níveis principais Então os níveis são linguagem de máquina que é o nível mais baixo das linguagens de programação que é a linguagem que o computador o hardware do computador entende diretamente aqui as instruções são representadas por
valores binários que a gente chama de bits representados pelos valores zero e 1 e dentro da máquina representados na verdade por níveis de energia elétrica de tensão elétrica alto e baixo mas a linguagem de máquina mesmo a gente pode programar nela trabalhando com bits diretamente zeros e uns só que a gente não vai fazer isso isso aí a gente fazia nos anos 50 antes do Advento das linguagens de programação de nível mais alto hoje a gente vai ter as linguagens de baixo nível que foram criados também no final dos anos 50 mas ainda são usadas
que é uma linguagem que usa instruções próximas à linguagem de máquina porém já são compreensíveis por seres humanos Porque utilizam siglas mnemônicos có e o exemplo mais clássico de linguagem de baixo nível é a linguagem assembly lá no blog da bos treinamentos eu tenho alguns artigos que explicam do que se trata o assemble até alguns exemplos de código para você testar mas deixe para ver isso mais pra frente quando você já tiver bem ambientado Em lógica de programação porque é difícil programar em linguagem de baixo nível o que a gente usa no geral são as
linguagens de alto nível porque elas são muito mais próximas à linguagem que o ser humano utiliza Nossa linguagem do dia a dia então csharp Python Visual Basic linguagem C tá todas elas são linguagens de alto nível algumas são mais simples outras mais difíceis de aprender mas todas elas são perfeitamente aprendí né Por quem tem interesse em programação legal escrevi o meu código então usando uma linguagem de programação e ten o meu código fonte que que eu faço com ele agora como é que eu transformo um código que é um texto em um programa bom para
transformar um código em um programa A gente precisa com converter esse código da nossa da linguagem que a gente usou que a gente escolheu pro código de máquina que lembra lembra-se aquela linguagem abaixo do baixo nível a linguagem de máquina que o computador entende isso a gente faz por meio de dois processos pode ser feito por meio de compilação gerando um código de máquina executável ou um processo chamado interpretação que gera um código intermediário que vai ser interpretado por um software específico na máquina para você programador é interessante conhecer e saber que Existem os esses
dois processos que algumas linguagens funcionam com um processo outras linguagens funcionam com outro processo isso vai te ajudar quando você for mais experiente é escolher a linguagem adequada para cada caso mas para começar a escrever código não tem muito problema se você não entender direitinho a diferença entre compilação e interpretação mas mesmo assim lá vai compilação tradução de todo o código fonte em um ou mais arquivos executáveis ou seja gera diretamente um programa executável E para isso é usado um programa especial chamado compilador linguagens compiladas incluem c e c+ mais por exemplo que geralmente geram
programas muito rápidos em sua execução porém mais complexos de criar já o processo de interpretação gera um arquivo intermediário um código objeto por assim dizer que vai ser avaliado por um software específico que você precisa ter na máquina que é o interpretador para rodar o programa em si então exemplos Python csharp ou JA são linguagens interpretadas elas são no geral mais fáceis de escrever mas não t exatamente o mesmo nível de performance que as linguagens compiladas o que não significa de forma alguma que sejam inferiores tá Elas têm seu uso específico para cada tipo de
problema que você se deparar no mundo do desenvolvimento de software vai ter a linguagem mais adequada a ferramenta mais adequada Não tem melhor e pior a não ser que você tente usar ferramenta e que não é muito adequada para um uso que Depende de outra ferramenta legal mas todas as linguagens são importantes entre si bom e quem é que faz esse trabalho todo quem é que programa quem programa é o programador aqui eu tenho uma definição bem básica da Wikipedia sobre o que é um programador então programador é alguém que escreve desenvolve ou faz a
manutenção de software num sistema grande ou ainda alguém que desenvolve software para uso em computadores pessoais ou seja o programador é o cara que faz o software que cria o software também chamado de desenvolvedor ou codificador Apesar de que existem pequenas diferenças nessas terminologias Então a gente vai entender essas essas diferenças mais paraa frente mas a princípio a gente vai tratar isso aqui tudo como uma coisa só então programador desenvolvedor codificador é a pessoa que escreve os programas de computador usando instruções ou seja códigos em uma ou mais linguagens de programação criando os códigos fonte
e Esses códigos a princípio eles terão o formato de algo que a gente chama de algoritmo para entender o que é um algoritmo a gente precisa entender primeiro o que é uma sequência lógica que que é uma sequência lógica é uma sequência de Passos ou de tarefas que devem ser executadas numa ordem específica até atingir um objetivo ou solucionar um problema que você precisa solucionar então sequência lógica aqui por exemplo eu tenho vários Passos cada um desse desses retângulos é um passo eh pra gente criar uma sequência lógica e resolver o seguinte problema comprar um
refrigerante no mercado Imagine que você tem um robô um Android e você quer instruir esse Android aí até o mercado para comprar um refrigerante para você que instruções você dá para esse Android né para esse robô para ele realizar a compra no Mercado supondo que você já está na na na calçada em frente ao supermercado bom aqui eu tenho algumas das instruções que você pode utilizar então pegar uma garrafa de refrigerante dirigir-se à fila do caixa ent entrar no mercado sair do mercado veja são todas instruções ou Passos importantes que devem ser realizados porém só
vai funcionar a a tua compra se esses Passos estiverem numa ordem correta ou seja se a sequência for lógica essa técnica aqui de descrição dos Passos para para resolver um problema tem um nome técnico chama-se descrição narrativa então vejamos Qual é a descrição narrativa ou a sequência lógica para comprar um refrigerante no mercado usando esses passos que eu acabei de mostrar primeiramente tem que entrar no mercado se o robô vai entrar no mercado depis vai pegar um carrinho ou uma cestinha vai andar até a sessão de refrigerantes porque é lá que devem estar os refrigerantes
vai pegar uma garrafa de refrigerante na gôndula aqui não especifiquei qual é o refrigerante tá garrafa qualquer vai colocar a garrafa no carrinho não é para isso que ele levou o carrinho dirigir-se a fila do caixa pagar pelo refrigerante de preferência E então sair do mercado está comprado o refrigerante veja aqui esses Passos eles são todos importantes devem ser feitos você não pode pular um desses passos mas talvez não sejam suficientes mas aqui nesse momento O importante é saber que esses Passos devem ser realizados e estão na ordem correta agora olha só tente verificar essa
sequência aqui dê uma olhada na sequência pause o vídeo por uns segundos leia a sequência e me diga essa sequência tá certa ela vai funcionar Então veja só pegar um carrinho dirigir-se a fila do caixa saíram do mercado bom ele saiu do mercado vai comprar o refrigerante onde agora pegar uma garrafa na gôndula a gôndula fica dentro do mercado entrar no mercado veja são exatamente as mesmas instruções só que elas estão numa ordem totalmente incorreta então isso aqui não vai funcionar então uma lição importante para você que vai ser programador e vai aprender lógica é
que não basta só conhecer as instruções você tem que saber como ordenar as instruções também então não basta só saber como é uma linguagem você tem que saber como ordenar as declarações da linguagem para que a lógica tem efeito para que ela faça sentido e o programa efetivamente funcione essa minha sequência aqui por exemplo não vai funcionar a anterior funcionaria dito isso a gente pode definir o que é um algoritmo então a gente vai definir algoritmo como sendo uma sequência de instruções ordenada ordem específica finita significa que ela acaba em algum momento porque ela tem
que resolver o problema de alguém entregar essa resolução Então ela acaba tem fim e é não ambígua Ou seja as instruções elas não são confundidas umas com as outras Quando eu digo para realizar uma ação a máquina vai entender exatamente qual é a ação que ela tem que realizar e não vai confundir com uma outra ação similar e essa sequências dessas instruções elas são executadas por um sistema para realizar uma tarefa então o algoritmo ele tem que ter fim tem que se comunicar com o mundo exterior para capturar e devolver dados e executar essas instruções
num tempo finito uma dica para você que vai escrever o código é que cada linha de um algoritmo que você escrever que é um texto tem deve executar uma única instrução ou uma única tarefa n então cada linha realiza uma pequena tarefa uma pequena parte da tarefa n então eu tenho um problema grande cada linha que eu escrever vai resolver um pedacinho dela sequencialmente como se fosse uma receita de bolo né se você já viu uma receita de bolo como fazer um bolo e unte a forma com manteiga quebre os ovos jogue a farinha tem
uma ordem correta estrita explícita eh e cada uma das instruções realiza um pedacinho do processo de fazer um bolo aqui é a mesma coisa só que em vez de um bolo você vai ter um código fonte e no final um software pronto façamos um exercício então de algoritmo tente Você montar um algoritmo para preparar um café usando papel de filtro e coador né então um coador papel de filtro uma caneca em cima do fogão imagina que você tem um fogão uma caneca de de alumínio de ao inox um filtro né com com coador e você
vai jogar pó de café ali e fazer um café bem simplório N sem cafeteira nada disso como é que você descreveria o algoritmo para realizar essa ação se por exemplo você precisasse ensinar o teu robô a fazer isso pausa o vídeo pega papel e caneta ou lápis e tenta escrever as instruções lembra uma instrução por linha fazendo uma sequência de passos para realizar esse café para fazer esse café para nós aí depois volte aqui para visualizar uma resolução sugerida e ver o que que você acha conseguiu Então olha só aqui é uma resolução sugerida com
20 Passos eu não vou ler os 20 passos na tela não vou ficar aqui esse tempo todo lendo você pausa o vídeo e lê e leia os passos para você entendu o que foi feito mas basicamente aqui temos uma ordem que funciona então vou até o armário abre o armário pegue o coador pegue o papel de filtro coloque o papel de filtro no coador pegue a garrafa térmica coloque o conjunto sobre a garrafa veja que aqui eu tô sendo preguiçoso e colocando direto em cima da garrafa térmica o coador peg o pó de café coloque
cinco colheres de pó no coador então especifiquei a quantidade de pó isso é importante você tem que ser específico explícito quando escreve uma instrução pro computador realizar se eu escrevesse só assim coloque o pó de café no coador quanto pó de café uma colher de chá ou o pacote de 1io kg inteiro Hum você tem que especificar tem que ser explícito e assim por diante na última instrução instrução número 20 O café está pronto eu fiz com 20 passos na na prática você precisa de mais passos do que isso para poder fazer esse teu café
mas no processo de programação a gente trabalha assim a gente define as as principais instruções primeiramente n na sua sequência e depois a gente vai fazer o que eu chamo de refinamento de ações Como assim refinamento de ações esse algoritmo funciona mas existem outras ações que devem ser realizadas e que estão entremeadas com essa essas 20 que eu coloquei e Muitas delas podem ser desdobradas em ações menores que são as ações não primitivas quando você não consegue mais desdobrar nenhuma ação você tem as ações primitivas que são as instruções básicas da linguagem você chegou nas
instruções básicas da linguagem exemplo de refinamento uma das ações que a gente tem ali é ferver a água então tá escrito lá ferva água legal mas como é que a gente ferve água ess meu robô não souber ferver água tenho que ensiná-lo também então aqui um refinamento da ação ferver água peguei uma ação e disse pro robô olha para você ferver a água pegue a caneca leve a pia coloque embaixo da torneira Abra a torneira encha de água feche a torneira leve a caneca ao fogão Acenda o fogão espere a água entrar em ebulição espere
a água ferver Então esse é um refinamento Eu peguei uma das instruções já desmembre em várias outras veja que mesmo assim talvez eu precise continuar refinando né talvez eu precise instruir o meu robozinho sobre como é pegar uma caneca como Abre a Torneira Gira pra esquerda paraa direita para cima para baixo é uma alavanca tem sensor como que é essa torneira hum eh acender o fogão como é que acende o fogão é um botão que acende o fogão é elétrico precisa de um acendedor a Faísca fósforo como é que é o esquema Então tudo isso
pode ser refinado então importante mais uma lição importante é quando você for escrever um código de computador fazer um programinha Primeiro passo é você entender exatamente o que o programa tem que fazer você precisa na sua mente e preferencialmente usando papel mesmo né ou um um bloco de notas do computador listar as ações que o programa Vai realizar na ordem correta antes de tentar codificá-las até porque não dá para codificar algo que você não sabe o que deve ser feito então Primeiramente você determina o que deve ser feito e depois você vai fazer a c
modificação tudo bem Vamos fazer um exercício de refinamento tente você agora refinar esta ação acender o fogão como é que você instruir o teu robô a acender o fogão caso ele não saiba como fazer isso fogão da tua casa aí tá pode ser um fogão qualquer pause o vídeo e escreva esse refinamento com alguns passos uns 8 10 passos aí no papel depois volte aqui para ver uma resolução sugerida conseguiu Então olha só como eu acenderia o meu fogão aqui primeiramente verificar se o gás tá ligado Se não tiver gás ferrou não dá para acender
esse meu fogão aqui se o gás não tiver ligado ligá-lo veja que eu tenho um condicional aqui isso é uma condição E se ele não tiver ligado o que que eu faço tem que ligar senão não vai ter café localizar a boca a ser usada girar o botão correspondente para abrir o gás não é para girar um botão diferente da boca que eu vou usar né senão só vai encher o ambiente de gás pressionar o botão para acender a boca enquanto o fogo não acender continuar pressionando o botão Olha só isso aqui é uma estrutura
de repetição que vocês vão aprender como fazer mais para frente no curso depois que o fogo tiver aceso solto o botão e aí eu coloco a caneca sobre a boca acesa para fervura alguns dos Passos eles podem ter a ordem trocada às vezes por exemplo eu poderia já estar com a caneca sobre a boca e apertar o botão para acender pode funcionar em alguns fogões pode não funcionar tudo depende do aparelho que você tenha aindo equipamento que você tem Tá mas a ideia básica é essa aqui é fazer o refinamento uma vez refinado eh cada
um dos Passos refinados cada um dos Passos que você bolou que você imaginou pra lógica do teu programa Aí sim é hora de começar a codificação legal gente bom então vimos e nessa introdução O que é lógica O que é programação O que é lógica de programação O que é algoritmo O que é software programa hardware e software linguagem de programação linguagens de Alto baixo nível e de máquina como fazer um refinamento de ações tá então a gente viu bastante coisa nesse início e o próximo passo agora é começar a programar né a estudar a
lógica de programação aprender a lógica e aplicar em cima disso só que para isso a gente vai precisar instalar um programa A gente vai precisar do Portugal Studio que vai ser o programa que a gente vai usar para escrever os códigos que a gente vai usar para aprender lógica então na sequência próxima lição instalação do Portugal Studio Olá pessoal aqui é o Fábio da bosam Treinamentos e neste vídeo eu vou mostrar como baixar instalar e executar o Portugal Studio no Microsoft Windows o Portugal Studio é uma aplicação desenvolvida exclusivamente para o ensino de programação mas
precisamente de lógica de programação e foi criado no laboratório de inovação tecnológica na educação da Univale Universidade do Vale do do Itajaí lá em Santa Catarina o portugol Studio tem então eh a mesma ideia do visual G que a gente já utilizou aqui em outros vídeos ou seja o ensino de lógica de programação utilizando português estruturado porém o Portugal Studio é um pouco mais moderno por assim dizer e tem algumas vantagens sobre o visual G que eu vou mostrar assim que a gente tiver terminado de fazer a instalação então vamos fazer o download e a
instalação da aplicação bom para obter o Portugal Studio que é um software gratuito você vai entrar neste site Light acad univale.br bportugal e logo de cara você tem um botãozinho Hub e aqui descendo no final da página em assets nós temos e os arquivos para você baixar então a versão pro Windows é essa daqui Portugal Studio 2.7.5 na data que eu gravei esse vídeo e ele também tem uma versão Stand Alone uma versão portable que você não precisa instalar na máquina então se você não tiver privilégio de administrador não puder instalar aplicação no computador ou
não quiser você pode também baixar essa versão descompactar e utilizar da mesma forma que a gente também tem no visual G mas eu vou instalar no computador então a gente vai baixar esse arquivo 122 me para Windows que na verdade eu já baixei é só dar um cliquez aqui e ele começa o download mas eu vou cancelar esse download vou abrir minha pasta de downloads porque eu já baixei anteriormente para ir mais rápido e tá aqui Portugal Studio 2.7.5 para Windows duplo clique para executar o instalador o aplicativo deseja permitir negativo de um fornecedor desconhecido
faça alterações sim clica em sim aqui e aí ele vai abrir o instalador pra gente iniciando a instalação Por favor aguarde então a gente espera um pouquinho enquanto isso eu vou Minimizar essas janelas do fundo e aqui tá o programa de instalação do Portugal Stúdio que é muito simples né não tem não tem segredo nenhum basta a gente clicar em avançar o acordo de licença você vai aceitar é a licença G GPL então é software livre tranquilo Você pode ler a licença se quiser aceita os termos avançar tem uma apresentação Zinha que diz que o
Portugal estudo é um software livre de código aberto licenciado pela lgpl significa que você pode utilizar e modific inclusive livremente muito bom né então clica em avançar tem os termos de uso avançar de novo e aí ele começa a fazer a instalação propriamente dita ação é rápida você vai ver que não tem muito segredo e o Portugal estúdio ele tem um monte de recursos Leais que a gente vai vai dar uma olhadinha depois editor de código ele traz códigos de exemplo para você estudar a linguagem tem ajuda inspetor de variáveis depuradores que basicamente todo ideia
possui ele tem configuração para projetor né caso você esteja dando aula com aplicação numa sala de aula e utilize um projetor e assim por diante Então vamos aguardar enquanto ele vai finalizando a instalação quase finalizada agora tá criando desinstalador legal ã vamos clicar em avançar aqui ele tem essa essa telinha de abrindo os arquivos tá configurado como programa padrão para abrir arquivos com extenção ponp tá de de portugol beleza só clicar em avançar e finalizar tá instalado no computador inclusive ele já criou um atalho na área área de trabalho Portugal estúdio Vamos abri-lo então clique
duplo no atalho ele vai abrir o Portugal Studio aqui embaixo aparece escrito Light L na verdade é uma sigla significa laboratório de inovação tecnológica na educação Então vamos aguardar enquanto ele abre aqui é importante ó Firewall Windows ele bloqueou alguns recursos a gente vai permitir o acesso tá clica aqui em permitir o acesso beleza E aí essa é a tela inicial do Portugal Stúdio aqui ele abriu com com as dicas ele mostra algumas dicas legais para você para você aprender a usar a aplicação eu vou desmarcar essa opção mostrar dicas ao iniciar e vou fechar
a janelinha e aqui a gente tem então o Portugal Studio configurado no computador Nós temos dois grandes painéis esse painel Zão central com os itens novo arquivo abrir arquivo ajuda e plugins a gente pode instalar plugins para estender a funcionalidade do Portugal Studio posso mostrar isso em outro vídeo inclusive novo arquivo para criar um novo programinha e abrir arquivo para abrir um existente e ajuda você sabe do que se trata e aqui do lado ó no painel do lado direito nós temos exemplos n temos exemplos por categorias então exemplos de códigos para entrada e saída
famoso H mundo por exemplo operações aritméticas temos bibliotecas um recurso muito legal do Portugal estúdio que permite que você trabalho com arquivos tem biblioteca para cálculos matemáticos texto bibliotecas gráficas internet e assim por diante então É bem interessante esse recurso de mais para frente em outro vídeo eu vou mostrar como é que a gente usa as bibliotecas no Portugal Stúdio Além disso você também tem recursos para música e para jogos Olha que interessante tem alguns joguinhos já codificados que você pode abrir o código analisar estudar e aprender a fazer os seus próprios joguinhos muito bom
ã vamos clicar aqui no um dos exemplos por exemplo ham mundo clique duplo Ok E aí ele mostra o código da aplicação aqui clicando nesse botãozinho aqui da engrenagem a gente pode aumentar o tamanho da fonte então eu vou clicar algumas vezes pra gente poder enxergar melhor o código beleza e essa aqui é a estrutura né a estrutura básica de um programinha utilizando a linguagem do Portugal Studio o programa ele começa com a palavra palav programa né o o código fonte na verdade começa com essa palavra abre e fecha Chaves e tudo que tiver aqui
dentro faz parte do programa ele sempre traz uma função início que é similar à função Main que aparece na linguagem C no c+ mais no Java e assim por diante então o início ele faz o papel da função M abre e fecha Chaves e aqui dentro a gente escreve o programa principal no caso é o famoso há há mundo e a instrução para escrever uma informação na seta do console a função escreva igualzinho no visual G tá entre aspas o olá mundo para rodar o programa a gente clica nesse Play aqui em cima ele vai
rodar e vai vai exibir aqui embaixo no console a saída do programa Olha só olá mundo e aqui a gente também pode configurar esse console aumentando o tamanho da fonte pra gente poder visualizar melhor o resultado Olha que legal ã e aqui a gente vai programar então Eh utilizando português estruturado para criar programinhas de exemplo para estudo de lógica de programação lembre-se isso aqui é para estudar e aprender lógica não é uma linguagem de programação para você fazer aplicativos de verdade aqui você vai aprender lógica e vai posteriormente utilizar uma linguagem de programação qualquer ou
mais de uma para escrever aplicativos no mundo real sempre que você cria um item novo no programa o item vai aparecer aqui nessa lista localizar e aqui embaixo a gente tem um inspetor de variáveis que é um é um recurso muito legal pra gente fazer depuração do programa você consegue olhar dentro de uma variável e ver o que que tá armazenado nela durante a execução do programa né devo mostrar isso posteriormente também em vídeos sobre como fazer depuração no Portugal Studio A gente tem aqui o botãozinho passo a passo que também a gente utiliza para
depuração o X é para encerrar e interromper execução de um programa ou travou ou você codificou errado entrou no Loop Infinito ou por algum motivo qualquer você quer parar o programa xizinho salvar e salvar uma cópia abrir e um novo arquivo um arquivo já existente na verdade e a ajuda legal e aqui em cima aparecem as abas com com os scripts abertos aqui a tela inicial do Portugal e aqui o programinha que a gente acabou de abrir beleza gente Olá pessoal aqui é o Fábio da Bon Treinamentos e nesse vídeo eu vou mostrar como baixar
instalar e rodar o Portugal Studio no Linux vou usar para isso a distribuição Linux Debian mas as instruções que eu vou mostrar aqui servem paraas outras distribuições Linux também o Portugal Studio é uma aplicação que foi desenvolvida na Universidade do Vale do Itajaí em Santa Catarina cujo propósito é o ensino de lógica de programação e de programação em geral dessa forma ele é mais ou menos similar ao visual G porém o Portugal ele tem alguns recursos extras que tornam essa aplicação bastante interessante eu tenho utilizado o Portugal Studio nas minhas aulas na escola onde eu
trabalho o Portugal Studio ele tem versões para Windows Linux e também para macos num outro vídeo Eu já mostrei como instalar no Windows e agora eu vou mostrar como instalar no Linux Então vamos lá Primeiro passo é obter o Portugal Studio E para isso você vai entrar nesse site l. acad.unoesc.edu.br o seu sistema operacional então clicando em download ele já vai baixar a versão Pro Linux se você estiver utilizando o Linux caso você queira ver as versões disponíveis clique em outras versões como eu vou fazer aqui aí você vai cair na página do github do
projeto e rolando a tela para baixo aqui embaixo no finalzinho a gente tem os assets que são os instaladores então instalador para Linux 32 ou 64 bits nós temos pra macos esse osx.dmg e pro Windows um executável e também a versão portable pro Windows uma versão Stand Alone e o código fonte da aplicação também está aqui bem geralmente você vai baixar a versão 64 bits Mas se você tiver no sistema Linux um pouco mais antigo baixa a versão de 32 que é essa daqui o arquivo vem zipado então é só dar um clique no Arquivo
ele vai baixar 124 a 125 m de tamanho eu já baixei na verdade para dar uma acelerada aqui no vídeo e o arquivo já está aqui na minha pasta de downloads então eu vou abrir Abrir só para mostrar atividades vou abrir aqui arquivos downloads tá lá Portugal Studio 2.7.5 é a versão versão para Linux 64 bits beleza como é que a gente instala essa aplicação eu vou mostrar como instalar pelo console pelo terminal então eu vou fechar aqui a pastinha de downloads e vou abrir um console um terminal beleza estamos no Terminal eu estou no
Então vou entrar no diretório de downloads CD downloads e agora com LS l a gente vê o arquivo lá dentro Portugal Studio 275 Linux x64 r.zip muito bom então tá baixado o arquivo agora a gente precisa descompactar esse arquivo então para isso eu vou utilizar o utilitário unzip unzip Bastando para isso passar o nome da do arquivo que eu quero descompactar então dou enter descompactou então se eu der uma olhadinha agora na pasta a gente tem esse arquivo aqui Portugal Studio 275 Linux 64 Run tá que é um script de instalação por ser um script
de instalação ele precisa ter permissão de execução pra gente poder rodar o script ele não tem essa permissão como a gente tá vendo aqui ó Então a gente vai dar permissão de execução para esse arquivo como é que eu faço isso você vai usar o comando ch mod seguido do valor 755 para o arquivo Portugal Linux 64r enter vou limpar a tela e vou dar um ls-l de novo veja que agora ele até marca em outra cor aqui no meu terminal Mas o mais importante é aparecer o x aqui dizendo que eu tenho permissão de
execução nesse script agora eu posso executá-lo para fazer efetivamente a instalação do Portugal Studio se você tá na dúvida do que é esse do que são esses comandos PW WD LS ch mod etc Não deixe de seguir os vídeos de Linux que a gente tem aqui no canal de curso básico de Linux e certificação lpi temos mais de 150 vídeos só de treinamento básico de Linux aqui no canal para vocês legal bom vamos fazer a instalação então para instalar a gente precisa ter privilégio de administrador então para isso eu vou usar sudo Claro que se
você tiver logado com usuário root não precisa colocar o sudo E aí a gente coloca ponto barra para dizer que a gente quer executar um script e o nome do script tá que é o Portugal Studio 275 Linux x64.rar tão rápido assim você começa a digitar o nome do arquivo dá um t autocompleta para você bom feito isso é só dar um enter coloca a senha a sua senha enter de novo aí a gente Aguarda alguns instantes vai aparecer esse acordo de licença que você tem que ler você vai pressionar enter vai dando enter aí
pra gente ver o acordo de licença você aceita essa licença sim ou não Y de Yes É sim então a gente coloca o Yes enter aí aparece a apresentação do Portugal Studio um software livre de código aberto licenciado pela lgpl muito legal assim você pode usar e modificar esse software livremente tá e quer instalar sim você coloca de novo Y enter E aí ele começa a instalação da aplicação script perfeitamente funcional muito legal muito rápido muito bem feito então vamos aguardar enquanto ele termina a instalação do Portugal Studio e a gente pode abrir e testar
o Portugal Studio aqui no Linux beleza a configuração do Portugal Studio foi finalizada em seu computador Maravilha posso fechar o terminal posso fechar o navegador também não vou utilizar o navegador mais fechar as abas e agora eu vou abrir o portug stud clicando aqui em atividades mostrar aplicativos Isso aqui vai variar dependendo da sua interface gráfica evidentemente Mas é só você procurar a aplicação que tem um link aqui Portugal Studio tá instalado tá vendo Então dou um cliquez Vamos abrir o Portugal no Linux e dar uma olhadinha rpa Face dele para entender um pouquinho como
é que ele funciona então quando você abre o Portugal Studio ele vem com essa tela de dicas quando você abre a primeira vez temas dicas de como usar a aplicação trocar o tema como acessar arquivos recentes a árvore de exemplos que tá aqui do lado e assim por diante eu vou desmarcar o mostrar dicas ao iniciar e vou fechar essa telinha E aqui nós temos a tela então Inicial e principal do Portugal Stúdio nessa área maior aqui do lado esquerdo NS temos as opções de criar um novo arquivo para estudar a lógica abrir um arquivo
de script já existente acessar a ajuda manual do Portugal e trabalhar com plugins que permitem estender a funcionalidade do Portugal Studio ele tem um monte de recursos na verdade ele tem o editor de código que a gente já vai ver tem essa árvore de exemplos onde nós temos vários códigos de exemplos divididos por categorias por exemplo entrada e saída operações aritméticas algoritmos sequenciais Olha que legal permite trabalhar com vetores matrizes na verdade com arrays uni e bidimensionais E olha que legal nós temos aqui várias bibliotecas disponíveis bibliotecas para trabalhar com cálculos matemáticos com texto utilitários
bibliotecas gráficas calendário e internet então dá para fazer muita coisa legal no Portugal Stúdio e também eh algumas aplicações para música e jogos alguns jogos inclusive que você pode abrir para estudar o código e aprender a fazer os seus próprios jogos e tem alguns jogos clssicos aqui como o joginho da serpente e o pong bom e velho pong Além disso nós temos aqui embaixo um inspetor de variáveis que vaier assim que a gente abri um código que permite você olhar o conteúdo das variáveis durante a execução programa fazer depuração eu vou abrir um código qualquer
desses exemplos só para mostrar o Portugal estudio em ação deixa eu pensar eu vou abrir um de operação aritmética simples então clique duplo aqui dou ok nessa telinha E aqui está o código né o código desta pequena aplicação clicando aqui em cima nesse nessa engrenagem a gente pode personalizar um pouquinho a aparência do da nossa janela por exemplo aumentando o tamanho da fonte aí você vai enxergar melhor o código beleza Eh aqui embaixo na área do console onde vai aparecer o resultado a gente também pode personalizar aumentando a fonte aqui já vou deixar aumentada bom
essa parte central aqui é o editor de códigos é onde você vai efetivamente criar os códigos que você vai utilizar para seu estudo os programas sempre começam com a palavra programa abre Chaves e fecha a chave no finalzinho e todo o programa Vai ter uma função início que equivale a função Main que você encontra em linguagens como C CSP ã c+ mais Java etc aliás o Portugal Stúdio ele é baseado na linguagem C E no PHP de acordo com os autores e você vai ver que a a sintax dele é bem similar mesmo a linguagem
C lembra um pouquinho linguagem C C mais mais tá Ah ele permite trabalhar com bibliotecas e também permite trabalhar com algo parecido com orientação objetos Mas isso é assunto para vídeos posteriores vamos executar esse programinha aqui que pelo que eu estou vendo pede pra gente digitar dois números e faz algumas operações a aritméticas com eles como é que eu executo o programinha você clica nesse botãozinho de play aqui em cima clicou no botãozinho aqui embaixo no console já aparece Digite o primeiro número vamos supor que eu digite 14 dou enter Digite o segundo número 23
dou enter E aí ele mostra o resultado a soma subtração multiplicação e a divisão dos dois valores Olha que legal aqui a gente tem uma área de declaração de áveis que também podem ser dec declaradas de forma Global fora da função início instruções como escrev lê aqui você vai lembrar são parecidas com as do visual G né a gente já trabalhou muito com visual G aqui no canal da boson treinamentos no nosso curso de lógica de programação e tem instruções muito parecidas operadores aritméticos quebra de linha né função escreva e assim por diante comentários tem
tudo que a gente precisa para aprender lógica de programação para valer aqui do lado direito embaixo como eu citei nós temos us a área ah paraa inspeção de variáveis a lista das variáveis que você usou no programa aparecem aqui desse lado direito e aqui do lado esquerdo no painelzinho a gente tem executar passo a passo também para fazer depuração de script e o botãozinho X para você interromper execução um programa por um motivo qualquer os botõezinhos para você salvar e salvar uma cópia que agora em vez de um dis quetinho foi colocado um pen drizin
aqui de ícone Ah o botãozinho para você abrir um arquivo salva e ajuda né Tem um atalho para ajuda aqui e aqui as guias para você acessar a página inicial e e os scripts que estejam porventura abertos como os algoritmos são representados vejamos nesta lição como realizar a representação de algoritmos para poder escrever seu código posteriormente então Existem várias formas da gente poder representar um algoritmo e algumas delas incluem o uso de fluxogramas diagramas de shopping o português estruturado que a gente vai utilizar ao longo do curso e obviamente usando linguagens de programação bom o
que que é um fluxograma fluxograma é um diagrama que descreve o fluxo de dados da aí o nome fluxograma eh o fluxo de dados e das instruções E para isso ele vai usar desenhos geométricos formas geométricas básicas que vão simbolizar entrada e saía de dados processamento de dados e o próprio fluxo desses dados eu indico o uso do fluxograma para algoritmos de pouca extensão mas que são complexos cuja cuja lógica é complicada e os quais acabam causando problemas na hora de fazer uma codificação então às vezes desenhar literalmente né desenha que fica mais fácil então
você desenha o fluxograma os principais símbolos para fluxograma são esses daqui esse primeiro símbolo que é um retângulo com os lados arredondados indica o início ou fim de um programa ou de um subprocesso o fluxo de dados é indicado por uma seta indicando de onde vem e para onde vão os dados um bloco retangular é processamento e manipulação de de dados em si entrada e saída de dados vai utilizar esse trapézio já um losango significa estrutura de decisão condicional que a gente vai estudar também mais paraa frente se o diagrama for grande e ocupar várias
páginas porque a gente geralmente desenha esse diagrama ou no papel ou utilizando algum software de desenho eh de de fluxogramas como flog rithm Então você vai utilizar o conector para dizer olha esse fluxograma tá numa página e continua em outra é a mesma coisa o conector de página off page né de uma página para uma outra página a entrada de dados manual via teclado indicada por ess por esta outra forma geométrica e existem outras formas além dessas Essas são suficientes pra gente ver esse exemplo de fluxograma em Ação Suponha que eu preciso eh criar um
algoritmo para calcular a nota média de um aluno baseado em quatro notas de provas que um usuário vai entrar no sistema e então verificar se ele foi aprovado e o critério para aprovação é se a nota média dele for igual ou superior a sete então eu vou entrar com quatro notas notas distintas o sistema tem que calcular a média e dizer se o aluno foi aprovado como é que eu desenho isso na forma de um fluxograma você faz mais ou menos o seguinte Inicia o programa setinha de direção entrada de dados via teclado e aí
eu escrevo dentro da forma geométrica o que que vai acontecer ali entrar com as quatro notas na sequência Qual o próximo passo já entrei com as quatro notas vamos calcular a média aritmética tu vai ter uma fórmula para calcular essa média média foi calculada agora vamos determinar se o aluno tá aprovado ou não isso é uma condição então condição vai usar o losango e dentro do losango vai a pergunta a média calculada é maior ou igual a seete sim ou não se for sim o aluno está aprovado e eu escrevo na tela a mensagem aprovado
se for não olha só um outro ramo um outro desvio um caminho diferente para indicar que ele foi reprovado e depois disso ambos os caminhos levam ao fim do programa eu uso e essa mesma forma geométrica que eu usei no início para representar o fim então a ideia do fluxograma é isso de forma gráfica visual mostrar o fluxo dos dados e onde estão as instruções o processamento as condições o início e o fim do progr progama para facilitar seu raciocínio lógico na hora de criar algoritmos Então essa é uma ferramenta que você pode usar mas
não é obrigado a usar se eu fosse criar uma sequência lógica escrita por extenso né uma descrição narrativa como a gente fez no Exercício lá do do do café e de uma aula anterior eu faria isso entrar com as quatro notas calcular média aritmética das notas verificar se média maior ou igual a se se sim mostrar mensagem aprovado se não mostrar a mensagem reprovado fim do algoritmo Olha só as instruções em sequência a gente pode representar de uma forma ou de outra Além disso existe uma outra ferramenta que não é tão usada mas que é
interessante conhecer que é o diagrama de chapping que foi desenvolvido por Isaac Nassi Ben schneid e ampliado por net Shopping essa é uma um tipo de diagrama que substitui o fluxograma tradicional por um diagrama de quadros que às vezes facilita um pouco e o entendimento do Flux de informações dentro do programa a codificação do algoritmo isso aqui também é conhecido como estrut ograma caso você queira pesquisar mais a fundo a respeito e basicamente um diagrama de shopping é isto aqui ele é top Down significa que começa em cima e termina embaixo e aí a gente
tem esses esses retângulos tá vendo cada linha dessas aqui é um retangulo Zinho na verdade e as instruções vão sendo colocadas aqui escritas por extens dá o início leia as notas 1 2 3 e 4 aqui representando as notas pela pelas letras pelos códigos N1 n2 N3 n4 você vai aprender que isso são variáveis depois soma recebe o somatório dessas notas a média é a soma dividido pelo número de notas que no caso são quatro e aí aqui a gente tem a decisão condicional então top Down ele vem descendo chegou aqui pergunta a média é
maior ou igual a sete sim ou não se for Sim toma o caminho da esquerda Está aprovado se for não toma o caminho da direita está reprovado que você pode inverter à vontade e no final escreva o resultado na tela Então essa variável resultado tem o a palavra que vai aparecer pro usuário no final e aí finaliza o programa então é a mesma coisa que o fluxograma só que utilizando uma anotação gráfica distinta essa é uma outra forma de representar o algoritmos e finalmente o português estruturado que é o que a gente vai usar ao
longo do curso tá paraas nossas aulas que é uma técnica narrativa eh que permite a elaboração de algoritmos estruturados como se fosse uma linguagem da de programação mas não é uma linguagem real de programação por isso o código gerado com português estruturado é chamado de pseudocódigo porque ele é quase um código de verdade então um exemplinho só um tira gosto do que é um código em português estruturado Olha o mesmo programinha que recebe as notas do aluno calcula média e diz se ele foi aprovado ou reprovado só que aqui em português estruturado programa para indicar
o início do programa área de declaração de variáveis com os tipos cadeia real etc início do programa função de entrada instruções para ler os dados cálculo da Média utilizando expressões aritméticas o condicional para verificar a condição e colocar na tela a mensagem final que é o resultado então não se preocupe se isso aqui parece complicado porque você vai aprender tudo isso e muito mais como eu já citei ao longo do curso Então logo logo você vai você já vai estar sabendo como criar esse tipo de algoritmo aqui sozinho porque é isso aqui que a gente
vai usar ao longo do curso português estruturado do pseudocódigo Então a partir de agora a partir da próxima lição que a gente vai fazer é mão na massa é só codificação de agora até o final do curso Espero que você se divirta e nos vemos na próxima aula Olá pessoal aqui é o Fábio da boson Treinamentos e neste vídeo damos continuidade ao nosso curso novo de lógica de programação com Portugal Stúdio eu vou explicar nesse vídeo O que são os tipos de dados em lógica os tipos de dados são muito importantes quando você vai criar
variáveis que é o nosso assunto do próximo vídeo porque os tipos de dados determinam Que tipo de informação você pode armazenar na memória da máquina para processamento Quanto espaço essa informação vai utilizar e que tipos de operações você pode realizar sobre elas Então vamos falar sobre os tipos de dados os principais tipos de dados em lógica a partir de agora bem o que são então esses tipos de dados e sua importância Em lógica de programação primeiramente os dados são informações brutas que vão ser processadas pelo computador por exemplo o nome de uma pessoa o nome
de um usuário o preço de um produto um Um item de informação qualquer que a gente precise processar dentro do programa e cada dado que vai ser armazenado ou processado ele é classificado em um tipo o tipo indica como o dado vai ser armazenado e tratado na memória do computador por exemplo se é possível fazer cálculos com dado Quanto espaço de memória ele vai ocupar e até mesmo os tipos de Opera ações que podem ser executadas sobre eles a gente costuma dividir os tipos de dados aqui nessa área de lógica em quatro tipos principais quatro
categorias dados numéricos dados de caracteres dados lógicos e dados de referência os dados de referência a gente não vai estudar aqui a gente vai estudar mais paraa frente porque eles estão relacionados com classes structs e outros tipos de dados os tipos numéricos Como o próprio nome diz lidam com números e são subdivididos em duas categorias tipos de número inteiro e tipos de número real o tipo inteiro é para números inteiros números que não t casas decimais que não são fracionários podem ser positivos ou negativos por exemplo 5 250 e - 95 são números inteiros usados
por exemplo pra gente armazenar a idade de uma pessoa a idade de um cliente já o tipo real se refere a números que são fracionários que T casas decimais números quebrados por assim dizer podem ser positivos e netiv também por exemplo 5.0 45.23 - 20.6 e 1 so 3 que é um número real porque ele é uma fração Nóe que aqui eu tenho o número 5.0 e o número 5 ambos se referem à mesma quantidade só que o c tá sendo representado como inteiro porque não tem a parte fracionária e o 5.0 tá sendo representado
como real porque eu trouxe a parte fracionária e aqui eu tô usando ponto em vez de vírgula porque geralmente dentro das linguagens de programação vai ser reconhecido do ponto no lugar da vírgula mas pro usuário a gente vai geralmente exibir a vírgula no lugar do ponto isso a gente vai tratar também na no momento mais adequado os tipos de caracter se referem a caracteres isolados ou em sequência em grupos contendo letras números e símbolos ou seja alfanuméricos e sempre que a gente trabalhar com um tipo caracter os dados em si eles são representados para armazenamento
por exemplo entre aspas no código pode ser essa a aspa única ou a aspa dupla aí Existem algumas pequenas diferenças se a gente trabalha com um tipo de caracter único ou de um caracter de cadeia e a gente vai ter esses termos também cadeia string alfanumérico shar e outras terminologias que dependem muito da linguagem de programação que você vai usar o importante é quando você armazena um dado com o tipo caracter esse dado não será empregado para cálculos se você quiser fazer cálculos com aquele dado ele deve ser evidentemente armazenado com o tipo numérico correspond
ente real ou inteiro o tipo lógico É um tipo que pode assumir um de dois estados verdadeiro ou falso true ou false também representados pelos valores numéricos um ou zero e o tipo Lógico é muito conhecido pelo nome de tipo boleano ou boolean que tem a ver com George Bull que é um matemático que basicamente inventou a álgebra binária e como o tipo lógico lida com dois estados são estados binários zero ou um falso ou verdadeiro Esses são os principais tipos de dados que a gente vai trabalhar em lógica de programação e onde eu uso
isso a gente utiliza os tipos de dados na hora de declarar variáveis e constantes e no próximo vídeo eu vou mostrar o que são as variáveis e como é que a gente cria as variáveis atribuindo um destes tipos que a gente acabou de estudar tipos numéricos inteiros ou reais tipos de caracter que pode ser caracter único ou carrio de cadeia grupos de caracteres e o tipo lógico verdadeiro ou falso bom então o que que são as variáveis uma variável é um local reservado na memória do sistema na memória RAM do seu computador esse local ele
vai ser usado para armazenar de forma temporária os dados que estão sendo processados dentro do seu programa esse local reservado que a gente vai chamar de variável tem algumas características importantes por exemplo as variáveis sempre T um nome paraa identificação até para você poder saber com qual variável você tá lidando no momo elas T um endereço que é o endereço físico da memória que foi alocada para essa variável o tipo de dado associado que diz respeito ao tipo de informação que pode ser armazenada na variável e os tipos de dados a gente estudou na aula
passada um tamanho que depende do tipo de dado ou seja Quanto espaço aquela variável vai ocupar e finalmente e o mais importante o valor ou conteúdo que você está armazenando dentro daquela variável a gente pode supor a área da memória do computador como sendo essa divisão ah na forma de uma tabela que você tá vendo na tela eu tenho uma série de pequenas divisões contêiners que são áreas que podem ser reservadas pra gente gravar dados veja que essas áreas Elas têm um número que a gente pode dizer que é o endereço da variável e algumas
delas duas para ser mais exato tem as palavras idade e nome são os nomes das variáveis então aqui eu aloquei um pedacinho da memória para ser a minha variável idade e um outro pedacinho da memória para ser a minha variável nome elas contêm dados olha número 65 pra idade e a palavra Ana pro nome as demais posições da memória não tem nada não estão alocadas não estão sendo usadas como variáveis os endereços de memória existem mas veja que elas não têm nomes não foram alocadas como variáveis então eu posso alocar áreas da memória para gravar
dados como eu fiz nesses dois exemplos aqui você vai notar que eu dei os nomes idade e nome para essas duas variáveis por assim dizer para dar nomes para as variáveis a gente precisa seguir algumas regrinhas algumas Convenções também então eu não posso dar qualquer nome que eu queira para uma variável as variáveis elas podem ter um ou mais caracteres mas o primeiro caracter sempre tem de ser uma letra ou seja não pode começar com números também não pode ter espaço em branco no nome da variável senão na hora que você executa o programa ele
vai entender que são duas variáveis ou mais separadas por espaços você não pode usar símbolos com raras exceções existem alguns símbolos que você pode us em variáveis que dependem ainda da linguagem de programação que você tá usando Mas no geral Não É aconselhável usar símbolos você pode usar os números livremente exceto na primeira posição na primeira letra da variável primeiro caracter tem que ser uma letra e você não pode usar palavras reservadas da linguagem Então as linguagens têm comandos instruções que são palavras reservadas que você não deve usar como nome de variável evidentemente se na
hora de executar o programa ele vai entender que aquilo é uma instrução e não uma variável exemplo clássico instrução while ou instrução if pra gente fazer estrutura de repetição e condicional você não deve criar variáveis com esses nomes e no português estruturado seria a instrução enquanto e a instrução C você não deve criar variáveis com esses nomes então depois a gente dá uma olhadinha nessas regras de variáveis pergunto para vocês quais desses nomes de variáveis que vocês estão vendo nessa lista são válidos pausa o vídeo olha um por um pensa um pouquinho e determine quais
deles são válidos e quais não são e eu já volto para mostrar quais desses nomes a gente pode usar como variáveis conseguiram descobrir Então os nomes válidos dessa lista são esses daqui nome item pode ser usado tranquilamente só tem letras começa com letra não tem espaços veja que são duas palavras nome e item mas a gente como não pode usar espaço a gente juntou os dois nomes utilizando uma notação especial de programação que a gente chama de cas que justamente é isso primeira palavrinha começa com letra minúscula e as demais palavras que compõem o nome
da variável ou do elemento de programação começam com letra maiúscula isso é bastante utilizado e é uma convenção legal a segunda variável letra Y beleza posso usar não é muito recomendável criar variáveis com uma letrinha só porque fica meio ilegível do que se trata mas funciona CNPJ também funciona e produto dois Ok tem a palavra produto tem o número dois mas não tem espaço entre eles e o dois está no lugar certo agora as outras quatro estão erradas por quê um telefone não pode começar com número endereço um quase dá para usar mas o cedilha
pode causar problemas então não se recomenda rua e número Aquele e Comercial não pode ser utilizado talvez em alguma linguagem de programação que aceite Mas no geral você não deve usar esse símbolo e a última totalmente errada por produto espaço dois a gente não pode ter espaço no nome da variável Beleza agora que você já sabe como dar nomes para as variáveis como é que eu declaro no programa para declarar a variável a gente primeiramente tem que especificar Qual é o tipo de dado que ela vai armazenar e depois o nome da variável ou nomes
das variáveis porque a gente pode declarar criar várias variáveis de uma vez só geralmente a gente declara as variáveis no comecinho do programa Mas elas podem ser declaradas em outras partes do programa também conforme a necessidade o importante é que elas sempre sejam declaradas antes de serem usadas Então nós vamos lá pro Portugal agora e eu vou mostrar como é que a gente declara variáveis tô no Portugal Studio vou criar um novo arquivo pra gente programar e nesse arquivo eu vou criar variáveis então eu posso criar variáveis aqui em dois pontos distintos nessa área entre
a palavrinha programa e antes da função início nesse caso eu posso criar uma uma variável vamos supor uma variável do tipo cadeia essa variável vai se chamar res res de resultado por exemplo cadeia é um tipo de dado que existe aqui no Portugal Stúdio é um tipo de dado de caracter tá Para que que serve o tipo cadeia pra gente criar eh uma variável que permita armazenar um ou mais caracteres por exemplo o nome de uma pessoa o nome de um produto um endereço e assim por diante então é um tipo de caracter só que
para vários caracteres e se eu quisesse criar uma variável do tipo real para colocar um número fracionário ou um número com casas decimais então só escrever real o tipo da variável e o nome na sequência por exemplo N1 vamos supor a nota da de uma avaliação de um aluno e eu posso criar várias variáveis em sequência se elas forem do mesmo tipo Bastando para isso colocar uma vírgula e acrescentando nomes de mais variáveis Olha só N1 n2 N3 e n4 beleza Esta área aqui antes da função início a gente chama de área para variáveis globais
então eu vou escrever isso aqui em cima na forma de um comentário variáveis globais porque quando você declara uma variável aqui ela pode ser usada em qualquer ponto do programa ela vai ser reconhecida em qualquer parte dentro de outras funções aqui dentro do início em qualquer lugar do programa que você precise utilizá-la por isso global então se você precisa de uma variável que vai ser usada e reutilizada de uma função para outra você declara como Global mas também dá para criar variáveis dentro de funções por exemplo aqui dentro do início poderia criar uma variável apagar
essa instrução vamos supor uma variável chamada do tipo real chamada média nesse caso a gente tem uma variável local ela foi criada dentro da função início ela só vai existir aqui dentro tudo que eu codificar dentro dessa função início vai enxergar essa variável mas se eu criar uma função externa e tentar acessar essa variável eu não consigo é como se ela não existisse na prática não existe fora da função início bom outros tipos de dados que a gente pode utilizar para criar variáveis aqui no Portugal estudio são por exemplo o tipo lógico para variáveis lógicas
vamos supor que eu queira criar o tipo lógico achou uma pergunta Achou sim ou não verdadeiro ou falso o tipo inteiro que a gente usa bastante para variáveis que são números inteiros então inteiro idade por exemplo e um outro tipo de variável para caracter que é o caracter Aqui termina com um R não tem o e no final tá foi criado assim e a gente pode colocar aqui por exemplo símbolo nome da variável símbolo Qual a diferença de cade e caracter cadeia um ou mais caracteres caracter caracter único um único símbolo uma única letra inha
que você vai armazenar nesta variável então tem uma diferença de um tipo para outro basicamente nas linguagens de programação reais para valer a gente tem o tipo shar ou Car para caracter e string para cadeia que funciona exatamente dessa mesma forma e como é que eu atribuo valores para essas variáveis como é que eu coloco um valor dentro de uma variável bom pra gente colocar valor na variável a gente vai utilizar um caracter que é o operador de atribuição Qual que é o operador de atribuição de valores é o sinal de igual então o sinal
de igual serve pra gente pegar um valor e colocar dentro de uma variável então aqui dentro da função início por exemplo eu poderia dizer que a variável idade que eu criei lá em cima é igual a 25 a gente Lê isso aqui assim idade recebe 25 Então dentro dessa variável tem o número 25 um outro exemplo res que é uma variável do tipo cadeia recebe o resultado sei lá aprovado e veja que o resultado como é uma string é uma cadeia de caracteres a gente precisa colocar entre aspas isso é importante essas aspas aqui se
você não colocar entre aspas quando rodar o programa Vai dar erro que mais vamos supor que a nota 1 N1 é igual a um valor como 7,5 então 7.5 veja que eu uso ponto aqui dentro do programa quando eu tô codificando se a nota dois for igual a nota 1 eu também posso fazer esse tipo de atribuição n2 recebe N1 Olha que interessante eu posso atribuir o que tá numa variável para outra então o conteúdo dessa variável é copiado para dentro de n2 que mais o símbolo vamos supor que o símbolo fosse a letra x
então eu coloco entre aspas o x e veja que aqui no Portugal quando quando se trata de uma variável tipo caracter a gente coloca aspa simples essa aspa única aqui se você colocar a dupla também vai ter problemas para executar o o programinha isso varia de uma linguagem para outra sempre é importante você consultar a documentação e finalmente a variável achou por exemplo poderia receber o valor verdadeiro e veja que a palavra verdadeiro Eu não coloco entre aspas porque ela não é uma string ela é um valor lógico ela representa o valor um o valor
true em inglês veja que quando eu escrevo verdadeiro inclusive o próprio programa marca na cor azul para dizer que se trata de uma palavra reservada da linguagem agora veja que interessante aqui no Portugal a gente tem aqui no painel do lado direito essa área localizar que tem os nomes das variáveis que você declarou embaixo a gente tem um inspetor de variáveis que é essa parte do painel aqui vazia eu posso pegar uma variável daqui e arrastar Aqui para baixo por exemplo N1 n2 achou idade rest de resultado e símbolo subir um pouquinho veja que as
variáveis estão todas aqui elas inclusive são codificadas por cores dependendo do tipo da variável aqui nesse programa tá para ajudar você a entender o que tá acontecendo e se eu executar o programa se eu mando rodar o programa clicando nesse botão ou apertando shift f6 o programa é executado cria essas variáveis na memória reserva o lugar para elas atribui os valores que eu coloquei aqui e finaliza veja que aqui na área do console que é onde aparece o resultado do processamento do programa não tem nada mas se você olhar aqui na área das variáveis no
inspetor de variáveis todos os valores que eu atribuí eles aparecem aqui veja o aprovado no res 7 me o mesmo valor para as duas variáveis N1 e n2 verdadeiro em achou 25 idade x para o símbolo O inspetor de variáveis é muito importante porque ele ajuda você a procurar problemas no seu código quando ele não tá funcionando você inspeciona o que tem dentro de uma variável durante a execução do programa para verificar se aquele valor é o que deveria estar ali ou não E aí tentar fazer o que a gente chama de depuração que é
justamente corrigir eliminar erros de programação a gente vai ter uma aula mais para frente especificamente só para ver as técnicas de depuração disponíveis como por exemplo essa técnica aqui que é executar o programa passo a passo tranquilo gente Então nesse vídeo eu expliquei o que são variáveis mostrei os tipos de variáveis que a gente tem no Portugal estúdio expliquei a diferencia entre variáveis globais e locais e mostrei como é que a gente declara variáveis e como é que a gente atribui valores a elas além de mostrar como é que a gente utilizo O inspetor de
variáveis para visualizar o que tem dentro de uma variável durante a execução de um programa Fala pessoal aqui é o Fábio da Ballon Treinamentos e nesse vídeo vamos falar sobre Convenções de nomes em programação uma convenção de nomes ou de nomenclatura é um conjunto de regras que a gente usa na hora de de criar nomes para identificadores identificadores como nomes de variáveis de funções métodos classes propriedades interfaces e Outros tantos e As convenções de nome eh se referem especificamente à forma como a gente representa sequências de caracteres nesses identificadores essas Convenções são recomendações pra gente
nomear os identificadores e são consideradas boas práticas Mas no geral não são obrigatórias tá e elas são especificamente úteis quando o identificador por exemplo o nome de uma variável é composto por mais de uma palavra nesse caso elas vão ajudar a gente a criar esses nomes de forma que eles sejam pelo menos legíveis E por que a gente utilizaria uma convenção de nomes bom por alguns motivos interessantes e primeiro que se você trabalha em equipe e compartilhando o seu código ter uma convenção de nomenclatura ajuda todo mundo a entender todo mundo mundo né ou seja
manter uma padronização na nomenclatura nos nomes dos elementos dentro do código que todo mundo possa seguir Isso facilita depois a leitura do código não só escrita mas também a leitura do código você bate o olho e já sabe por conta da daquela convenção utilizada quem é uma classe quem é uma variável quem é uma constante né e assim por diante então facilita a leitura facilita a escrita do código e o compartilhamento do código com outros membros da equipe assim o código fica mais limpo mais elegante e mais fácil de debugar também então se você precisar
da manutenção no código um código bem organizado e com identificadores seguindo algum tipo de padrão Vai facilitar bastante a sua vida a gente não pode confundir as Convenções de nome com Convenções de codificação que é um assunto bem mais amplo que se referem a recomendações para orientação de como criar um código completo em uma linguagem qualquer levando em consideração por exemplo organização de arquivos Como são feitos os comentários indentação do seu código estilos aplicados e também a convenção de nomes Tá então não confundir convenção de codificação como um todo com convenção de nomenclatura ou convenção
de nomes que na verdade é um subconjunto das Convenções de codificação que são bem mais extensas e a gente vai falar sobre elas em um outro vídeo beleza bom vamos dar agora uma olhada nas principais convenções de nome que a gente pode utilizar na hora de criar identificadores bom a gente começa o nosso estudo de Convenções de nomes falando sobre algo que não é exatamente uma convenção de nomes Então existe uma espécie de convenção chamada flat Case tá no flat Case você escreve o identificador todinho com letras minúsculas e se tiver mais de uma palavra
as palavras todas juntas sem nenhum tipo de caracteres passando não é uma convenção propriamente dita tá aqui eu tenho alguns exemplos ó pagamento mensal raio da circunferência nome funcionário poderiam ser nomes de variáveis por exemplo bom eu disse que isso aqui não é exatamente uma convenção e isso aqui não deveria ser utilizado em um código adequado escrito em qualquer linguagem que seja porque dificulta a leitura dos nomes as palavras todas juntas sem nenhum tipo de separação entre elas tá E deve ser evitada para não dificultar o desenvolvimento a leitura escrita do código tá a gente
encontra flat Case por exemplo em nomes de hashtags Tá mas espero não encontrar isso em códigos que vocês vão escrever já o cal Case aqui sim a gente tem uma convenção amplamente utilizada cal Case significa simplesmente que você vai escrever nomes de variáveis que são compostos com as palavras todas juntas em minúsculo só que a partir da segunda palavra com as iniciais em maiúsculo então por exemplo pagamento mensal P minúsculo a primeira palavra mas a segunda o m é maiúsculo raio da circunferência primeira o r minúsculo o d e o c maiúsculo e assim por
diante isso aqui já facilita a sua vida tá porque você já consegue só batendo o olho ver a separação entre as palavras e ler com mais facilidade os nomes dos identificadores e aqui no caso eh se a primeira letra do identificador for maiúscula também você tem um outro caso chamado Pascal Case que também é muito empregado então no Pascal Case Você ainda tem as palavras todas juntas Só que cada Inicial é maú também chamada deer C cas oer no caso de maiúsculo em inglês então os mesmos exemplos só que com a primeira Inicial só pode
ser a primeira Inicial né mas a inicial de cada palavra em maiúsculo Beleza então Pascal case e Cal Case são duas das Convenções mais empregadas em programação uma outra convenção um pouco mais recente do que essas duas que também é muito usada hoje em dia é o Snake Case também chamado de und case por usar este símbolo de und que tem aí no seu teclado provavelmente perto do número zero tá E aqui as letras todas em minúsculo só que a separação entre palavras se dá utilizando este caracter o und aí fica bem fácil você ler
os nomes dos identificadores Dessa forma não pagamento mensal raio da circunferência nome funcionário fica muito claro muito direto e objetivo tá Python utiliza muito o Snake Case certo é dá um pouquinho mais de trabalho na hora de escrever evidentemente tem que itar esse caracter adicional mas na hora de ler fica muito mais simples e se o Snake Case estiver todo em maiúsculas você tem um screaming snake case screaming de gritando né a gente costuma dizer que quando o texto tá todo em maiúsculas a gente tá gritando tá na internet então texto todo em maiúsculas aqui
screaming Snake Case pagamento mensal rioo da circunferência nome funcionário texto todo em maiúsculas não é tão fácil de ler mas a gente costuma utilizar muito isso aqui por exemplo para nomes de constantes tá também chamado de macr case porque eh também é utilizado bastante na criação de macros se só as iniciais forem maiúsculas não todos os caracteres Então a gente vai chamar isso aqui de Pascal Snake Case ou ainda title Case Tá mas não se preocupe muito com esses nomes todos o importante é lembrar dessas dessas Convenções mais tradicionais uma outra convenção interessante é o
kebab cas tá e na qual as palavras são separadas por um ifen então pagamento tracinho mensal raio tracinho D tracinho circunferência nome tracinho funcionário também fica fácil de ler tá as letras aqui todas em minúsculo no caso você vai encontrar isso aqui por exemplo em códigos CSS n utilizados para estilização de páginas da web é muito comum utilizar Kebab Case nesse caso tá e se tiver em maiúsculas de novo é só você colocar a palavra screaming na frente você tem o nome do da ção screaming Kebab Case Essa é também chamada de cobol case porque
é um tipo de codificação que a gente usa em programas em cobol um outro tipo interessante é o train Case parece o Kebab Case mas só as iniciais das palavras são maiúsculas é uma espécie de mescla de Pascal case com Kebab Case dá para fazer misturas né entre essas Convenções tá o TR Case então é uma outra variante já não tão utilizada quanto as anteriores além disso a gente pode ter também Convenções híbridas são Convenções que além de mostrar como deve ser escrito é o nome do identificador também acrescentam algum tipo de significado Extra a
ele então o nome do identificador traz o estilo né diz qual é o tipo do identificador e também outras informações como o tipo do dado né ou ainda o propósito para que que serve aquele identificador e assim por diante nos exemplos nós temos tbl pagamento a gente coloca um prefixo Zinho na frente com alguns caracteres para indicar do que se trata Esse identificador aqui poderia ser o nome de uma tabela de um banco de dados por exemplo tabela de pagamento mensal DB raio da circunferência que poderia ser o tipo de dado do raio da circunferência
um double muito usado STR nome funcionário STR clássico string então o nome do Funcionário é uma string bom aqui eu tô falando especificamente do hungarian Case da notação húngara ah a notação Húngara é a mais comum desse tipo de notações híbridas mas elas não são muito utilizadas mais hoje em dia tá ah por quê alega-se Por exemplo que o tipo do dado não precisa tá codificado no nome do identificador porque os compiladores sabem qual é o tipo do dado que você tá usando ou qual é a função específica de cada identificador existem inclusive algumas personalidades
que são bastante críticas com relação ao uso desse tipo de convenção híbrida por exemplo anotação unga entre elas estão Linux torbs a pessoa que escreveu Kernel do Linux e bearne straw strup que é o cidadão que escreveu a linguagem de programação CMA mais uma das linguagens mais importantes da história da Computação Beleza vai ficar seu critério utilizar ou não isso aqui eu às vezes uso né Por fins didáticos porque eu quero mostrar pro aluno do que se trata aquele elemento Mas no geral eu prefiro evitar também legal bom e qual com convenção de nomes usar
então Afinal de contas você vai escolher a convenção que for mais adequada aí pro seu projeto mas sempre entend mente o seguinte conversar com o pessoal da equipe com o time de desenvolvimento e chegar num acordo em comum para que todos usem as mesmas convenções e idealmente consultar Os guias de estilo das linguagens a maior parte das linguagens tem um guia de estilos que mostra ou ou sugere como o código deve ser escrito e lá nesse Guia em algum lugar Vai est escrito Ito Como deve ser a convenção de nomes então pr pra maioria das
linguagens existe isso tá E aí olha que interessante vamos ver alguns exemplos o Java tem o Java code conventions tá um documento cujo link eu vou deixar aqui embaixo na descrição do vídeo para você consultar né que fala tudo sobre a forma de escrever código em Java e lá dentro tem a convenção de nomes alguns dos elementos que eu tirei de lá para mostração que as variáveis atributos e métodos recomenda-se fazer em kem ok classes interfaces Pascal case e as constantes screaming Snake Case Então você precisa conhecer mais de uma convenção no JavaScript existe o
Douglas crockford conventions e lá diz que variáveis constantes funções e métodos deveriam usar cel Case classes Pascal case e as variáveis globais screaming Snake Case o Python o Python em si tem um guia de estilos bastante famoso inclusive que é o PEP 8 tá eh que diz muito a respeito de como escrever códigos em Python Python é inclusive uma linguagem famosa por ter códigos elegantes e bem estruturados eh e As convenções de nomes do Python dizem coisas como por exemplo variáveis funções e métodos usando Snake Case é muito usado em Python as classes com Pascal
case e as constantes com screaming Snake case de novo você deve estar percebendo que as constantes geralmente São escritas utilizando essa convenção tá Ah esse link do Python e os demais também vou deixar aqui embaixo na descrição do vídeo vídeo finalmente a linguagem PHP pra gente encerrar não vou falar sobre todas as linguagens que existem aqui no vídeo tá PHP também tem o seu PHP standards recommendations lá tá escrito que as classes deveriam usar Pascal case as funções Snake case as constantes screaming Snake case e os demais elementos como variáveis métodos e propriedades C Case
também uma das das notações mais empregadas beleza gente então resumindo tenho aqui uma tabelinha com As convenções que a gente estudou e o nome de uma variável de exemplo escrita em cada uma das Convenções para você pausar o vídeo e comparar né verificar o que que é mais legível o que que é menos legível eu já adianto para mim menos legível flat Case Com certeza tá os demais todos são mais legíveis mas os screaming da vida né os todos em maiúsculos também só devem ser usados em casos específicos como macros ou por exemplo nomes de
constantes também não fica legal código cheio disso eh tudo em maiúsculos fica um pouco mais difícil de ler beleza gente e aí deixo as minhas referências para vocês código limpo e arquitetura limpa do Martin dois livros muito excelentes sobre como escrever um código decente eh e eu vou falar sobre esses livros também em um outro vídeo tá vou gravar um vídeo analisando Ah esses esses dois livros e outros livros também e tem o guia de estilo do do Python mas eu vou deixar aqui embaixo na descrição do vídeo todos os guias de estilo que a
gente citou aqui no vídeo e mais alguns outros Olá pessoal aqui é o Fábio da boson Treinamentos e neste vídeo vamos falar suscintamente sobre o escopo de variáveis Em lógica de programação na última aula estudamos O que são as variáveis e vimos como fazer a declaração de uma variável dentro de um programa e vimos também que as variáveis podem ser declaradas em pontos distintos do programa e isso nos leva ao conceito de escopo de variáveis o que que é o escopo da variável basicamente o escopo se refere ao local onde a variável é declarada e
acessada e ao seu tempo de vida ou seja a duração da variável Durante quanto tempo aquela variável está disponível para ser utilizada pelo programa quando a gente declara uma variável dentro de um escopo específico ela só pode ser utilizada naquele escopo no qual ela foi criada ou seja declarada e existem dois grandes escopos para as variáveis quais são eles são as variáveis globais e as variáveis locais portanto escopo global e escopo local qual a diferência essa tabela que vocês estão vendo aí mostra as principais diferenças entre um escopo global e um escopo local uma variável
com escopo Global ela é visível em todo o programa ela tem um escopo amplo por isso Global já uma variável local ela só é visível e portanto acessível no local onde ela foi declarada que geralmente vai ser uma função uma variável declarada dentro de uma função que é algo que a gente vai estudar mais pra frente aqui no curso de lógica Mas você já precisa ter em mente essa diferença do local de variáveis no geral as variáveis globais são declaradas no início do programa ou no local especial existe sempre uma área específica pra gente colocar
as variáveis globais e em algumas linguagens a gente utiliza comandos ou códigos específicos para definir uma variável como global e as variáveis locais como eu acabei de citar são declaradas dentro de funções ou métodos as variáveis globais existem durante todo o tempo de vida do programa então elas geralmente são criadas quando você Inicia o programa e continua existindo até você fechar o programa já as variáveis locais elas existem somente enquanto a função na qual elas foram declaradas estiver sendo executada Ou seja a variável local não existe ainda quando a função é chamada quando essa função
é executada a variável local é criada e quando a função encerra a variável local ela é desalocada e a principal aplicação das variáveis globais É permitir o compartilhamento de dados entre funções afinal de contas eu consigo acessar o valor que tá dentro de uma variável global de qualquer parte do meu programa já as variáveis locais elas somente podem ser utilizadas dentro da função ou método na qual elas foram declaradas e são empregadas dessa forma pro processamento de dados que dizem respeito apenas aquela função e que não devem ser acessados diretamente em outras partes do programa
então ambas ambos os tipos de variáveis são importantes mas cada uma com o seu uso específico vamos lá pro Portugal Studio fazer um exemplo agora pra gente ver eh o escopo de variáveis em Ação tô aqui no Portugal Studio vou criar um novo arquivo beleza e nesse arquivo a gente vai demonstrar e o esquema de escopo global e escopo local bom bom aqui no Portugal Studio A gente cria as variáveis globais aqui em cima logo depois da palavra programa abriu Chaves nesta linha geralmente a linha três a partir da linha três a gente coloca código
para variáveis globais então eu vou criar uma variável do tipo real que eu vou batizar de número e essa variável vai receber um valor 10.0 Ou seja já vou inicializá-la Note que por ser Global não precisaria inicializá-la nesse momento poderia inicializar a variável em outro ponto do programa mas eu vou deixar inicializada a variável Beleza agora eu vou criar variáveis dentro da função início veja função Então o que eu crio dentro deste início dentro dessas Chaves aqui serão variáveis locais que só existem dentro da função início se você só tiver a função início no seu
programa ou seja se só tiver a função principal essas variáveis locais vão ser utilizadas durante todo o tempo de vida do programa também porque você não vai acessá-las de outra partes mas elas são variáveis locais e para isso eu vou criar uma variável também do tipo real que eu vou chamar de num local número local e esta variável vai receber o valor 12.0 beleza e agora eu vou colocar uma função escreva e vou mandar escrever na tela o conteúdo da variável número que é uma variável Global tá ali em cima concatenado com uma quebra de
linha que é o Barra n Você já conhece certo então número mais o Barra n deixa tirar isso aqui legal deixa eu colocar um comentário aqui em cima também para você não se perder Isso aqui é uma variável global e esta daqui é uma variável local ela só existe aqui na função início e logo na sequência eu vou pedir para escrever na ela também o conteúdo dessa variável num local então num local eh concatenado com uma quebra de linha também beleza Vamos começar com isso vou executar o meu programa Ah deixa eu colocar aqui as
variáveis no inspetor de variáveis também pra gente poder analisar Beleza então executo ele mostra aqui embaixo 10 e 12 tranquilo número 10 número local 12 veja aqui as funções escreve estão dentro da função início então quando eu mando escrever num local ele vai escrever o valor dessa variável porque ela também está na mesma função início estão ambos no mesmo escopo já a variável número está fora da função início Mas ela está aqui nessa área de variáveis globais então eu também consigo acessar essa variável por conta disso como ela é Global ela é válida aqui fora
e ela é válida aqui dentro também bom o que eu vou fazer agora agora eu vou criar uma outra função então fora da função início Olha só eu vou dar um enter aqui pular uma linha inclusive e vou criar uma outra função com a palavra função funcão no caso que vai retornar um valor real e o nome dessa função vai ser e calcula beleza função calcula vai fazer um cálculo qualquer dou enter abro Chaves e aqui eu vou colocar um código veja que ele já fechou as chaves para mim não se preocupe se você não
entende muito bem como é que funciona esse esquema de criar funções porque a gente vai ter aulas sobre isso mais paraa frente aqui eu só preciso da função para demonstrar as variáveis globais e locais e aqui dentro eu vou criar uma outra variável V usar o tipo real também e eu vou chamar essa variável de n calcula ela vai receber o valor 5.0 5.on z0 beleza não calcula E aí essa função vai retornar vou usar uma função chamada uma instrução chamada retorne esse não calcula multiplicado pelo valor de uma variável global que é a nossa
variável número lá de cima então retor não calcula vezes número então sempre que eu executo essa função o valor desta variável aqui que é Global vai ser multiplicado pelo valor desta outra que é local como isso aqui tá acontecendo dentro da função vai funcionar porque eu consigo acessar a variável número aqui dentro ele é Global E aí aqui na minha função principal dentro do início eu vou colocar uma instrução Escreva na qual eu vou pedir para escrever na tela o retorno da função calcula ou seja o que a função calcula vai executar concatenado com uma
quebra de linha para não ficar bagunçado Então nesse ponto essa função ela é executada o código que tá dentro dela roda tá E ela vai retornar o que for calculado com esta fórmula aqui beleza então vamos rodar Deixa eu só colocar Ah esse não calcula aqui também no inspetor de variáveis rodando tá lá ó 50 é o valor beleza não calcula vale 5 x 10 50 perfeito então a gente consegue acessar essa variável número por ser Global tanto na função início que é a função principal do programa é onde o programa começa a iniciar a
rodar por isso que chama início com quanto em outras funções como essa função calcula que eu acabei de criar só que a função início tem sua própria variável local que é num local e a função calcula também tem sua variável local que é a n calcula variável local também agora o que será que aconteceria se eu tentasse retornar nessa função Não esse não calcula vezes número que é Global mas sim não calcula vezes num local no local essa variável aqui ó que será que acontece se eu tentar fazer isso Hum será que vai aparecer o
resultado aqui bom vamos testar veja que na verdade ele já marcou aqui com vermelhinho embaixo dizendo que tem alguma coisa errada mas a gente vai testar isso aqui então rodando Olha só apareceu uma mensagem de erro na linha 15 que é justamente essa linha Ele tá dizendo assim a variável num local não foi declarada neste escopo ou seja ele tá dizendo pra gente que esta variável era uma variável local que foi criada em outro lugar do programa portanto ela não é válida ela não existe aqui dentro essa função calcula não enxerga essa variável como se
ela não existisse no programa mas na verdade ela existe dentro da função início Então essa é a grande sacada e diferença entre variável global e local a variável global é o acesso de qualquer lugar a local somente no escopo onde ela foi criada então aqui não adianta fazer isso mas se eu voltar a minha variável número global e rodar aí ele volta a funcionar porque essa variável sim é acessível aqui e da mesma forma se aqui no meu programa principal eu tentar acessar diretamente essa variável não calcula o que será que acontece vamos testar escreva
E aí eu quero que ele coloque na tela este valor aqui da variável num calcula então num calcula e vou concatenar também com a minha quebrinha de linha beleza veja que ele já tá dando erro aqui ó já tá indicando que tem alguma coisa errada se eu coloco o cursor do mouse em cima e deixa um pouquinho ele vai dizer a variável não calcula não foi declarada neste escopo a gente já viu que ela funciona o cálculo funciona e retorna a valor mas se eu tento acessar ela diretamente fora do escopo no qual ela existe
o programa não enxerga ela não existe aqui dentro ela existe só na função calcula E assim se eu tentar rodar o programa ele dá erro veja que ele nem escreve as outras variáveis que funcionam ele já dá erro direto e não faz nada na linha 10 justamente aqui é que está o erro certo então essa variável não pode ser acessada fora do escopo dela então vou tirar essa variável daqui e agora sim o programa volta a funcionar beleza gente então variáveis globais e variáveis locais elas são igualmente importantes é escrever um programa em qualquer linguagem
inclusive né muitas várias linguagens a maioria das linguagens Tem suporte a variáveis globais locais e aí dica para finalizar que que é melhor usar variável global ou variável local você vai usar o que você precisar depende da finalidade da variável porém a existência de muitas variáveis globais num programa pode acabar ocupando muito espaço na memória não utilizado durante a maior parte do tempo e também eh se houver algum tipo de alteração indesejada ou não prevista no valor da variável global é mais difícil de você identificar quando você tá tentando depurar ou seja corrigir erros no
programa então É aconselhável que você Evite a declaração de variáveis globais quando não for estritamente necessário quando não for aquela variável que realmente vai ser usada por todas as funções ou por várias funções dentro do programa Beleza gente então tá aí variáveis globais e variáveis locais escopo de variáveis bem Vamos então explorar a entrada e saída de dados no Portugal Stúdio para isso eu vou vou criar um novo arquivo vou clicar aqui no sinal de mais e vou utilizar esse pequeno script para mostrar as instruções pra entrada e paraa saída de dados veja que quando
a gente cria um novo arquivo né um novo programinha já aparece dentro da função início a instrução escreva com a mensagem Hola mundo automático aqui nesse programa Isso aqui é uma das funções que a gente vai estudar mas não agora essa aqui é uma função de saída de dados eu vou começar pela função de entrada de dados então eu vou apagar essa instrução e vou mostrar a instrução instrução leia a instrução Leia é uma instrução que lê valores ou teclas digitadas pelo usuário no teclado e armazena numa variável na memória então eu vou criar uma
variável na memória aqui em cima fora da função início que eu vou chamar de valor e vai ser do tipo inteiro então inteiro valor e aqui na tela eu posso emitir a instrução Leia valor então como é que funciona essa instrução Leia é o nome da instrução É o comando e dentro dos parênteses a gente coloca a variável que vai receber esse valor então quando essa instrução for executada o que o usuário digitar no teclado vai ser armazenado na variável valor na forma de um valor inteiro de um número inteiro Então olha só eu vou
executar o programa veja que o cursor fica piscando aqui embaixo esperando o usuário digitar alguma coisa então eu vou digitar o número sete por exemplo e dou enter beleza programa finalizado veja que não deu erro porque o valor 7 foi armazenado na variável valor legal deixa eu puxar minha tela um pouquinho para cá vou executar de novo só que dessa vez colocando a variável valor aqui embaixo na área de inspeção então valor aqui vou executar de novo o meu programa ele tá o cursor tá aqui embaixo piscando esperando o usuário digitar alguma coisa como você
pode ver eu vou digitar por exemplo o número no dou enter e veja que o valor 9 aparece aqui nessa área indicando que o valor no foi armazenado dentro da variável valor beleza eu posso por exemplo criar uma outra variável do tipo cadeia por exemplo chamá-la de nome cadeia nome e também usar a instrução Leia com essa variável nome então ao executar o programa Ele vai esperar o digitar um número dou enter veja que agora o cursor continua piscando ele tá esperando digitar um nome então eu posso escrever meu nome aqui e dar enter beleza
programa finalizado Se eu colocar a variável nome aqui nessa área e rodar de novo o programa a gente consegue ver o conteúdo das duas 10 e Fábio enter estão lá os valores beleza capturados com sucesso então é assim que a gente que a gente deve agir para inserir dados inserir valores dentro de um programa mas olha só como é que o usuário sabe que ele tem que escrever o nome dele ou tem que escrever um valor qualquer Não aparece nenhuma indicação disso aqui certo porque eu preciso de uma de uma instrução de saída de dados
ou seja que mostre os dados informações na tela do computador pro usuário e aí que a gente vai utilizar a instrução escreva Então vou jogar essa aqui para baixo e vou mostrar o uso da instrução escreva então instrução escreva escreve dados na tela do computador é o computador que tá escrevendo não é você usuário tem que ficar bem claro isso então com a instrução Leia quem lê os dados é o computador e com a instrução escreva quem Escreve os dados é o computador vejamos exemplos a gente pode usar a instrução escreva da seguinte forma escreva
abre o parêntese e coloca um dado qualquer para ser escrito por exemplo número 15 também posso mandar escrever um valor de cadeia um valor de string entre aspas sempre por exemplo a palavra pizza eu vou apagar essas duas instruções aqui em de baixo pra gente poder olhar só a instrução escreva em Ação então ao executar o programa aparece 15 e pizza ou seja os dois valores que eu coloquei aqui veja que eles vieram os dois juntos encavalados porque a instrução escreva escreve um valor e deixa o cursor na mesma linha Então o próximo valor que
eu mandar escrever vai aparecer logo na sequência e eu posso eliminar esse problema utilizando uma quebra de linha para acrescentar uma quebra de linha aqui eu posso fazer o seguinte clico depois o número 15 coloco uma vírgula e dentro de Aspas eu coloco o caracter Barra n o Barra n é interpretado como uma quebra de linha ou seja ele vai pra linha de baixo então se eu executar agora o programa olha aparece o 15 aqui e a palavra pizza embaixo Então sempre que você quiser forçar uma quebra de linha você coloca entre aspas o Barra
N E no caso da pizza aqui já está entre aspas então aqui eu não preciso colocar mais aspas basta colocar o Barra n na frente e o cursor Vai para baixo Olha só ao executar agora ele colocou um espaço em branco aqui embaixo ele pulou uma linha veja que no exemplo de cima como eu tinha um valor numérico eu tive que colocar uma vírgula para separar esse valor do valor barra n que é uma string que é um valor de caracter então caracteres cadei sempre entre aspas e números sejam números reais ou inteiros sem as
aspas sempre na instrução escreva E aí com a vírgula eu consigo efetuar a operação de concatenação ou seja juntar um valor com o outro vamos ver então o exemplo completo vou apagar todas as instruções daqui e as variáveis e agora vou criar um programinha que pede pro usuário digitar o nome dele a idade e o salário e depois exibe mensagens na tela então para isso eu vou criar uma variável do tipo inteiro que eu vou chamar de idade eu vou criar uma variável do tipo cadeia que vai ser o nome e uma variável do tipo
real que vai ser o salário dele legal três tipos diferentes aqui na função início eu uso a instrução escreva para colocar uma mensagem na tela dizendo pro usuário por exemplo digitar seu nome então digite seu nome dois pontos e aí eu vou colocar o Barra n para ter uma quebra de linha que assim aparece na linha de baixo o cursor para ele digitar o nome dele aí eu vou ler o nome quer dizer o computador vai ler o nome com a instrução lei e armazenar na variável nome Opa depois eu V com outra instrução outra
instrução escreva escreva entre com sua idade de novo coloco um barra n porque eu quero mudar de linha fecho as aspas fecho parêntese porque é uma mensagem e mando ele ler a idade beleza e finalmente com a mesma instrução escrevo eu coloco digite seu [Música] salário fecha o parêntese e na linha de baixo a gente faz a leitura do salário ou seja o que o usuário digitar vai para dentro da variável salário então aqui é a área de captura de informações vou pular uma linha para organizar mais meu código e agora eu vou colocar mensagens
mostrando os dados que o usuário digitou Então escreva eu quero que apareça assim nome a frase nome Deixa eu concertar Esse letra O aqui então a frase nome espaço fecho aspas vírgula nome vírgula abro aspas barra n fecho aspas então o que que eu fiz aqui vai aparecer escrito nome dois pontos espaço o conteúdo da variável nome que é o nome que o usuário digitou e fica capturado aqui em cima e uma quebra de linha para ir pra linha de baixo e na linha de baixo com a instrução escrevo eu coloco outra mensagem coloco por
exemplo a idade do cara então idade espaço fecho aspas vírgula a variável idade ou seja nesse ponto vai aparecer o conteúdo da variável idade vírgula e de novo uma quebra de linha quebra de linha você usa se precisar evidentemente não é obrigatório e finalmente Escreva de novo você já deve saber o que vai acontecer aqui certo salário coloca o espaço vírgula variável salário vírgula e uma quebra de linha na verdade como essa aqui é a última linha do meu programa não vou precisar colocar essa quebra de linha programa acaba aqui então tranquilo vamos executar para
ver se funcionam essas instruções de entrada e saída de dados mando rodar o programa digite seu nome Ó o cursor aqui embaixo Então vou escrever o nome do cidadão no meu caso meu nome Fábio enter beleza entre com sua idade 45 digite seu salário veja que pro salário não coloquei o Barra n né então o cursor permanece na mesma linha então Digite o salário vamos supor 15.50 Eu uso o ponto aqui porque é um número real 15 50 equivalente dou enter E aí aparecem as mensagens na tela nome Fabio idade 45 salário 1500.5 né ele
tirou o último zero porque ele arredondou esse valor e tá aí as mensagens escritas na tela com a instrução escreva do jeito que eu pedi para ele escrever e é assim que a gente usa as instruções de entrada e saída de dados no Portugal Studio instrução Leia entrada de dados no computador colocando os dados na variável indicada entre parênteses instrução escreva mostrando dados na tela pro usuário dados de mensagens como Strings dentro de aspas variáveis você pode colocar também o nome da variável o conteúdo dela que vai ser exibido ou valores numéricos direto separando Sempre
quando você tiver cadeias de caracteres de variáveis ou valores numéricos com uma vírgula para fazer a operação de concatenação beleza e é isso nos próximos vídeos vamos falar então sobre operadores dos mais variados tipos tipos como aritméticos relacionais lógicos e outros vamos lá então vamos estudar os operadores aritméticos Em lógica de programação um operador aritmético é um símbolo que nós utilizamos para criar expressões aritméticas ou seja cálculos matemáticos simples que a gente acaba utilizando muito nos nossos algoritmos nos Nossos programas em lógica nós temos estes operadores aritméticos básicos que você vê na tela a soma
que é simbolizada pelo sinal de mais a subtração sinal de menos multiplicação é sempre um asterisco cuidado não é a letra x como a gente usa na matemática convencional a gente vai usar um asterisco para multiplicar números a divisão é a barra inclinada E também temos uma operação chamada de módulo que é o resto da divisão inteira quando você divide um número pelo outro se você fizer uma divisão inteira não uma divisão exata você vai ter um resto por exemplo 9 di 2 é 4 e sobra 1 porque 4 x 2 é 8 para 9
1 esse um é o resto da divisão que é retornado pela operação de módulo uma operação bastante utilizada e em computação em geral por exemplo para verificar se o número é par ou ímpar né um algoritmo clássico que a gente costuma criar durante os cursos é este Desta forma a gente consegue criar expressões aritméticas aqui eu tenho várias expressões vários exemplos expressões aritméticas pra gente treinar um pouquinho mentalmente tá sem codificar ainda então por exemplo eu posso dizer que uma variável x recebe o retorno da expressão 2 x 3 Quanto que é 2 x 3
6 então x Vale 6 Y recebe o retorno de 5 x 2 x 2 então 5 x 2 10 x 2 de novo 20 Z recebe o retorno de 4 módulo 2 olha aqui o operador de módulo então a divisão inteira de 4 por 2 4 di 2 dá 2 e o resto é 0 esse resto é o que vai ser colocado em Z então quanto vale Z Vale 0 w é 8 di 4 2 k é 7 di 2 nesse caso aqui a gente vai ter o valor 3,5 3,5 x 2 iG 7 e
aqui a gente tem uma variável M recebendo retor de w que a gente já calculou anteriormente mais x x 3 então quanto que é w w é 2 e x x é 6 Então a gente tem 2 + 6 x 3 aqui tem que tomar cuidado porque existe um esquema chamado ordem de precedência dos operadores aqui operadores como a multiplicação e a divisão tem precedência sobre soma e subtração ou seja expressão desse tipo a multiplicação e divisão são executadas primeiro então primeiro a gente vai fazer x x 3 e depois somar o resultado com W
cuidado isso era da Matemática não é exatamente uma regra da lógica é uma regra da matemática que a gente tem que seguir aqui então quanto Valeria M Valeria 6 x 3 18 mais o w que é 2 20 e eventualmente a gente precisa inverter Essa ordem de precedência como é que a gente faz isso a gente faz isso usando parênteses Então quando você envolve uma um pedaço da expressão em parênteses você tá dizendo pro programa para ele calcular primeiro que tá dentro dos parênteses e depois continuar o cálculo com o que tá fora independente da
ordem de precedência Então nesse caso eu tenho m - k divido por 2 sem os parênteses eu deveria fazer primeiro k dividido por 2 porque a divisão tem precedência como eu coloquei parênteses primeiro a gente vai fazer m - k e o resultado dividir por 2 faça a conta aí descubra quanto quanto eu vou ter aqui na minha variável n Beleza então é assim que a gente cria expressões aritméticas utilizando os operadores aritméticos vamos agora fazer um programinha de exemplo um programinha para somar dois números lá no Portugal Studio então eu vou criar um programinha
para somar dois números inteiros para isso eu vou declarar uma variável aliás vou variáveis do tipo inteiro que eu vou chamar de x y e z três eu vou precisar E aí vou colocar uma mensagem na tela logo de cara pedindo pro usuário digitar o número então entre com um número o usuário vai digitar um número e esse número ele vai ser lido pelo programa e armazenado em x Beleza depois eu peço de novo pro usuário digitar um segundo número digite outro número e esse segundo número vai ser enado na variável Y se a gente
já estudou sobre variáveis no vídeo passado e aí a gente vai realizar a soma dos dois números como é que a gente faz isso eu vou armazenar em Z o resultado E é muito simples Z recebe X + Y só isso E aí é só escrever na tela o resultado a soma dos números é e concatena com a variável Z então concatenar é a vírgula beleza a soma dos números é Z e agora a gente vai executar o programa para testar então vou clicar aqui para executar o programa Entre com um número se entre com
outro número 3 A soma dos números é 9 6 + 3 = 9 muito bom aqui só consertar ficou faltando uma letra letrinha o e é legal colocar o espacinho aqui para não ficar tudo encavalado né vamos testar de novo então entre com um número 12 outro número 19 a soma é 31 perfeito conseguimos criar um programinha que soma dois números bom e agora eu tenho um desafio para vocês o desafio é esse que você está vendo na tela melhore o código do exercício anterior de modo que ele exiba além da soma também a subtração
multiplicação divisão e o módulo do dos dois números digitados pelo usuário tente você fazer esse programinha aí então o programinha agora tem que fazer além da soma mais essas quatro operações e exibir os quatro resultados Tente fazer esse desafio e se você quiser se você conseguir posta aqui embaixo nos comentários o código que você usou tá nos comentários aqui do vídeo beleza bom vou fazer um segundo exemplo então pra gente estudar um pouquinho melhor o esquema de operações aritméticas vamos lá eu vou criar um outro programinha então que vai vai servir pra gente calcular o
delta de uma equação do segundo grau ou seja um pouco mais complexo do que simplesmente somar dois números você vai lembrar que uma equação do segundo grau é uma equação no na na forma AX + BX + C = 0 e o delta seria o valor B qu - 4 x a x c só lembrar como é uma equação do segundo grau eu quero calcular esse Delta apenas então para isso eu vou apagar esse programa aqui todo e vou escrever do zero o programinha pro cálculo desse Delta que que eu vou precisar em termos de
variáveis variáveis do tipo inteiro eu vou chamar de a b e c né para seguir a norma matemática e também vou criar uma variável Delta para armazenar o resultado beleza e aqui eu vou colocar uma mensagem no programinha logo de cara que vai ser a mensagem cálculo do Delta Deixa eu ver se eu consigo escrever Delta aqui isso Alt 30 no teclado coloca um triângulo que vai servir de Delta é um cálculo do Delta de uma equação do sego grau barra n para pular uma linha beleza bom a gente vai pedir pro usuário digitar os
números então eu vou criar essa interface zinha aqui com as frases Digite o valor de a beleza E aí o valor será lido e a gente vai colocar esse valor na variável a eí vou fazer a mesma coisa pro B e pro C Inclusive eu vou copiar e colar isso aqui simplesmente modificar para B e C pra gente acelerar um pouquinho o vídeo então Bele com esse treo aqui a gente CONSEG captur os valores de A e C E aí eu vou colocar um outro Escreva na tela para mostrar qual é a equação que vai
ser calculada então eu vou colocar assim equação e vou concatenar o valor de a com x qu x qu com B com x simplesmente x concatenar também com a variável c e vou concatenar no final com 1 igual a 0 isso aqui é para mostrar a equação Zinha na tela né cujo Delta vai ser calculado Eu acho que eu fiz certo aqui mas na hora que eu executar eu vou descobrir se tá certinho mesmo esse essa minha concatenação desses valores Bom agora vamos calcular vamos utilizar os operadores aritméticos que a gente aprendeu Então vamos lá
vou colocar aqui um comentário cálculo do Delta como é que a gente calcula isso então Delta é b qu - 4 x a x c então eu vou dizer que a variável Delta recebe o valor de B Quad como é que a gente faz B qu pode ser b x b o número vezes ele próprio é o número ao quadrado menos 4 que multiplica a variável a que multiplica C veja que no caso eu não preciso colocar parênteses nessa fórmula porque ela já vai ser avaliada na na ordem correta então o b qu que seria
b x b vai ser avaliado primeiro 4 x a x c e depois é subtraído esse treo do lado direito do B qu É isso mesmo que a gente quer então não precisa de parêntese nesse caso tudo que eu preciso é escrever na tela o resultado Então escreva barra n Delta da equação da equação é o delta da equação é E aí a gente concatena com a variável Delta que contém o resultado final certo então tá feito um programinha vamos testar né vamos ver se ele funciona Beleza eu vou subir aqui um pouquinho até pra
gente enxergar direitinho mais um pouquinho então vou executar cálculo do Delta de uma equação de segundo grau Digite o valor de a vamos supor que seja 2 B 5 e c 2 de novo então a equação é 2x + 5x + 2 = 0 o delta da equação é 9 perfeito você pode fazer na mão o cálculo para tirar a prova e vai chegar nesse mesmo valor 9 um Delta positivo significa que a equação tem duas raízes reais e a gente poderia inclusive eh complementar o programinha calculando essas raízes mas aí envolve o uso de
raiz quadrada E para isso a gente vai precisar utilizar a biblioteca matemática que é assunto para um outro vídeo aqui do nosso curso de lógica de programação beleza gente Então nesse vídeo eu mostrei para vocês como utilizar operadores aritméticos e criar expressões aritméticas para realizar cálculos Em lógica de program fala pessoal aqui é o Fábio da Bon Treinamentos e nesse nesse vídeo damos continuidade ao nosso curso de lógica de programação usando Portugal Studio nesse vídeo vamos falar sobre os operadores relacionais também conhecidos como operadores de comparação que a gente utiliza no geral para fazer a
comparação entre dois valores dois operandos e retornar um resultado que vai ser utilizado no processamento subsequente dentro de uma aplicação então sem mais delongas vamos pros operadores relacionais Em lógica de programação bem para que que servem esses operadores relacionais então eles permitem estabelecer relações Como o próprio nome diz entre dois valores que a gente vai chamar de operandos e essa relação na verdade é uma comparação uma comparação do valor que tá à esquerda com o valor que tá à direita do operador a gente pode aplicar operadores relacionais em qualquer tipo de dados desde que os
operandos sejam de mesmo tipo Ou seja a gente pode comparar inteiro com inteiro ponto flutuante com ponto flutuante lógico com lógico e string com string mas não string com inteiro ou inteiro com ponto flutuante por exemplo e os operadores relacionais sempre vão retornar um valor lógico dependendo do resultado da comparação que no final das contas é uma pergunta tô perguntando se um operando A é igual é maior é menor do que um operando b a resposta sempre vai ser sim ou não verdadeiro ou falso e por isso a gente também chama os operadores relacionais de
operadores de comparação e nesta tabela nós temos os operadores relacionais utilizados Em lógica de programação as operações igual a diferente de maior que menor que maior ou igual e menor ou igual a São representadas por esses operadores Note que a operação de igualdade que é a mais utilizada é representada por dois sinais de igual juntos não é um sinal de igual só não um sinal de igual é atribuição quando você coloca um valor dentro de uma variável para comparar dois elementos e verificar se eles são iguais entre si dois sinais de igual uma exclama e
o sinal de igual é a diferença entre dois elementos verificar se eles são diferentes entre si já o sinal de maior verifica se o valor à esquerda é maior do que o valor à direita e o sinal de menor faz o inverso verifica se o valor à esquerda é menor do que o valor à direita e assim por diante vejamos algumas expressões relacionais supondo que eu tenho duas variáveis do tipo inteiro A e B que receberam por atribuição o valor 5 qual será o resultado de cada uma dessas expressões relacionais aqui à esquerda Lembrando que
as expressões relacionais que utilizam os operadores relacionais são na verdade perguntas então o primeiro exemplo a = 5 é uma pergunta eu tô perguntando se o valor de A é igual a 5 a resposta vai ser verdadeiro ou falso nesse caso aqui é verdadeiro B é igual a 6 falso a é menor que B falso A é igual a B verdadeiro a a é diferente de B falso veja esse outro exemplo aqui um pouco mais complexo B é diferente de a + 1 nesse caso primeiro toda a expressão que tá do lado direito tem que
ser resolvida e o resultado dela que vai ser comparado com o que tá do lado esquerdo então a + 1 5 + 1 é 6 estamos perguntando na verdade se B é diferente de 6 sim verdadeiro e aqui o inverso então primeiro toda a expressão que tá do lado esquerdo tem que ser resolvida para então fazer a comparação com o que está do lado direito a x 2 é maior ou igual a B 5 x 2 10 é maior ou igual a 5 verdadeiro então lembrando as expressões relacionais sempre vão retornar um valor Lógico que
pode ser verdadeiro ou falso bom Vamos agora pro Portugal Studio e vamos criar uma pequena aplicação Zinha pra gente ver os operadores relacionais em Ação bom estou aqui no Portugal Studio vou criar um novo arquivo beleza e eu vou utilizar essa pequena aplicação Zinha para mostrar então como é que a gente trabalha com os operadores relacionais eu vou começar declarando algumas variáveis aqui na sessão de variáveis eu vou criar três variáveis do tipo lógico então do tipo Lógico que eu vou chamar de x y e z e vou criar duas variáveis do tipo inteiro que
eu vou chamar de N1 e n2 pra gente capturar dois números que o usuário vai digitar e aí eu vou fazer compara ações Entre esses números então na minha função início eu começo pedindo pro usuário digitar um número digite um número vou capturar este número e colocar na variável N1 então leia N1 e depois eu vou pedir pro usuário digitar outro número então eu vou duplicar esse código aqui só vou mudar aqui para outro número e vou ler o número e colocar em n2 Beleza agora eu começo as comparações vou pular uma linha aqui no
código e vou na variável x eu vou colocar o resultado da comparação de igualdade entre os números então x vai receber N1 = n2 veja que interessante atribuição igualdade então aqui eu estou perguntando se N1 é igual a n2 verdadeiro ou falso e guardando o resultado em X então aqui embaixo eu vou colocar um escreva alguma coisa do tipo são iguais uma pergunta e aí eu vou concatenar com o valor de x que é a variável que tem o resultado E vou colocar também uma quebrinha de linha para não encavalar com as minhas próximas comparações
beleza aí eu vou simplesmente copiar esse código Aqui para baixo e vou fazer a próxima comparação na variável Z por exemplo eu vou verificar se o N1 é maior do que o n2 E aí eu vou perguntar N1 vírgula é maior é maior que aí eu vou colocar aqui na frente n2 é uma pergunta não uma pergunta então eu coloco aqui dentro dos parênteses uma interrogação e vou concatenar com o resultado da operação que está em Z então montei aqui uma string de resultado perguntando se N1 é maior que n2 e exibindo resultado verdadeiro ou
falso e finalmente paraa variável Y eu vou perguntar se eles são diferentes entre si então N1 é diferente de n2 resultado vai aparecer dentro da variável y e aí eu escrevo na tela escreva novamente a pergunta são diferentes tudo vai depender dos números que o usuário digitou certo e aí coloco o resultado concatenado Isso aqui é uma concatenação mais simples Beleza então eu vou digitar dois números e aí O resultado vai aparecer dependendo da das três comparações que eu vou fazer entre eles então vamos executar digite um número se digite outro número se são iguais
verdadeiro 6 é maior que 6 falso são diferentes falso perfeito as comparações resultaram exatamente no que era esperado vou executar de novo com outros valores digite um número nove digite outro número 15 são iguais falso veja que agora a comparação de igualdade retornou falso 9 é maior que 15 falso são diferentes verdadeiro esses números são diferentes entre si Então essa comparação de diferença retornou o valor verdadeiro onde que a gente vai usar muito esses operadores relacionais essas perguntas que a gente faz vou usar muito isso em estruturas de decisão condicional e também em Loops de
repetição que são os assuntos dos nossos próximos vídeos Então nesse vídeo eu mostrei para vocês os operadores relacionais que a gente costuma utilizar em lógica de programação e nas linguagens de programação variadas fala pessoal aqui é o Fábio da boson Treinamentos e neste vídeo damos continuidade ao nosso curso de lógica de programação com Portugal estúdio vamos falar na nossa aula de hoje sobre operadores lógicos também conhecidos como operadores bu anos bom para que que servem os operadores lógicos são operadores que nos permitem trabalhar com mais de uma condição relacional numa mesma expressão fazendo comparação entre
essas condições os operadores que a gente vai estudar são os operadores e ou e não e esses operadores assim como os operadores de comparação Ou relacionais eles também Retornam valores lógicos Afinal são operadores lógicos ou seja eles Retornam true ou false e a diferença desses operadores Plus de comparação é que esses operadores lógicos eles também recebem na entrada deles valores lógicos true ou false ou seja os operandos também são valores lógicos vamos começar estudando rapidamente o operador lógico e Aqui nós temos uma tabela que a gente chama de tabela verdade que é um tipo de
tabela que a gente utiliza para mostrar todas as condições de entrada e saída de um operador lógico Então essa é a tabela verdade para o operador lógico e com duas condições sendo avaliadas e retornando um resultado no caso do operador lógico e ele pode trabalhar com mais de duas condições você pode encadeá-los e o resultado como você tá vendo ele somente será o valor lógico verdadeiro Se todas as condições testadas pelo operador se todos os operandos também forem verdadeiros se um dos operandos uma das condições de entrada for um valor falso o resultado já será
falso então por exemplo se eu tiver aqui as variáveis a b e c e atribuir o valor falso para a verdadeiro para B ao fazer a e b que é uma expressão lógica significa valor de a operador lógico e valor de B qual será o resultado que vai ser armazenado em C então falso e verdadeiro como a gente vê na tabela verdade tem como resultado falso muito legal você deve estar se perguntando Tá mas para que que serve isso isso aqui a gente usa muito associado a a estruturas de decisão condicional como o c para
determinar o que vai acontecer na sequência do programa analisando-se condições lógicas variadas e a gente vai usar bastante isso nas aulas daqui para frente inclusive vejamos o outro operador Lógico que é o operador ou temos aqui a tabela verdade dele e veja que a tabela verdade é mais ou menos o inverso da tabela do operador lógico e então aqui a gente tem o resultado sendo falso Apenas quando todas as condições de entrada Ou seja todos os operandos forem falsos também se um deles for verdadeiro o resultado já será verdadeiro é como se você pudesse escolher
verdadeiro ou falso eu sempre vou escolher o verdadeiro quando ambas as condições forem falsas não tem escolha o resultado será falso então no nosso mesmo exemplo variáveis A B e C se eu atribuir falso a a e verdadeiro a b qual será o resultado da expressão A ou B falso ou verdadeiro é verdadeiro então o valor da variável c será igual a verdadeiro ou true em inglês e finalmente o operador Lógico não esse é um operador um pouquinho diferente como você tá vendo ele só tem um valor de entrada uma condição de entrada ou um
operando e a saída é sempre o inverso dessa entrada então a gente chama esse operador lógico de operador inversor porque ele inverte um valor lógico e e também é um operador unário porque ele trabalha com apenas um valor de entrada então ele Analisa esse valor e o resultado é sempre o inverso dele então se a for verdadeiro e eu tentar armazenar em b não a é assim que a gente escreve a expressão Qual será o valor de B será o inverso de verdadeiro que é falso assim como o inverso de falso é verdadeiro muito bem
essa é a parte teórica dos operadores lógicos e ou e não vamos fazer um problema de exemplo agora no Portugal estúdio para entender melhor como é que é que funciona isto estou aqui no Portugal Studio e vou criar um programinha pra gente estudar um pouco melhor os operadores lógicos meu programinha vai ser o seguinte eu vou declarar três variáveis já vou declarar aqui em cima três variáveis do tipo caracter então caracter que você já sabe é um tipo de variável usada para armazenar um caracter único é uma letra do teclado por exemplo Elas serão j1
J2 e J3 e porque eu chamei de j e porque são três essas variáveis elas vão simbolizar o estado lógico ou o estado de janelas Então vamos supor que eu queira criar uma aplicação Zinha para controlar um sisteminha de automação ou um sistema de alarme dentro de uma residência que vai verificar o estado das minhas janelas janela do quarto janela da cozinha janela da sala por exemplo Então eu chamei de j1 J2 J3 e o programinha ele vai me retornar valores lógicos depend da janela estar aberta ou não então eu posso ter por exemplo sensores
acoplados a essas janelas conectados a um sistema eletrônico e quando o sensor é ativado A janela está aberta quando ele não tá ativado A janela está fechada e assim eu consigo controlar o meu ambiente sabendo se a janela foi aberta ou não é um sistema de segurança para isso eu vou precisar também de uma variável do tipo Lógico que eu vou chamar de estado para armazenar o estado das janelas e isso é em termos de variáveis agora eu vou codificar o programa em si bom para ir mais rápido e a gente não perder muito tempo
eu simplesmente vou atribuir direto aqui no código os valores pra janela eu vou eu vou estabelecer o seguinte letra F significa janela fechada letra a janela aberta Então vamos supor que lá o meu sensor que tá conectado na janela tá mandando esses caracteres F dizendo que ela tá fechada a dizendo que ela foi aberta Então vamos supor que a primeira janela está fechada a segunda janela está fechada também e a terceira janela está tudo fechado para começar as três janelas fechadas agora o que eu quero fazer é o seguinte eu quero saber se alguma das
janelas está aberta ou melhor ainda se a primeira janela está aberta vamos supor que j1 seja a janela da sala quero saber se a janela da sala está aberta então eu vou colocar uma mensagem aqui com escreva janela 01 aberta aberta consertar aqui bom se ela estiver aberta então ele vai mostrar true ou falso verdadeiro ou falso na tela e para isso basta a gente fazer uma pergunta j1 janela 1 igual a a a gente estabeleceu que a significa aberta Então se o valor da variável j1 for igual a a deve aparecer uma mensagem dizendo
que ela está aberta vou executar pra gente testar vamos lá ó janela um aberta falso realmente ela está fechada Olha a letra f de fechado aqui tá bom se eu colocar o a aqui e executar o programa ele vai dizer para mim que a janela está aberta assim ó verdadeiro A janela está aberta o sensor tá disparado ali dizendo que a janela está aberta Ok vamos supor agora que eu quisesse verificar se alguma dessas três janelas está aberta não só a primeira mas se qualquer uma delas está aberta então alguém pode tentar entrar na minha
casa pela sala ou pelo quarto por exemplo então eu quero saber se alguma janela foi aberta vou usar minha variável estado para armazenar para receber o retorno de j1 ig a a ou seja tô perguntando se a primeira janela está aberta aqui eu tô usando um operador relacional que você já sabe da aula passada ele retorna a valor lógico e esse valor lógico eu vou utilizar juntamente com o operador ou para verificar se a janela dois está aberta E como eu mostrei agora a pouco a gente pode ter várias condições de entrada então eu posso
colocar outro o aqui ou J3 = a A então o Estado ele vai ter um valor verdadeiro ou falso que vai depender do retorno dessa expressão lógica inteira aqui Se isso for verdadeiro ou Se isso for verdadeiro ou se isso for verdadeiro qualquer um dos três que for verdadeiro estado será verdadeiro ou seja eu terei alguma janela aberta e vou exibir na tela uma mensagem para indicar isso Então escreva vamos lá p lular uma linha alguma janela aberta alguma janela aberta aí eu concatenou com conteúdo da variável estado beleza vamos testar executo alguma janela aberta
true sim tem alguma janela que tá aberta sim beleza não sei qual Na verdade eu sei a janela um que tá aberta por causa da instrução anterior mas se não tivesse a instrução anterior não saberia qual só saberia que tem sim uma janela aberta agora se as três estiverem fechadas e eu executar ele vai dizer alguma janela aberta falso porque falso ou falso ou falso retorna falso de acordo com a tabela verdade que a gente acabou de ver mas se qualquer uma delas estiver aberta o operador ou retorna true Então tá lá true que é
verdadeiro n ele mostra como true aqui na saída do Portugal Studio beleza vamos supor que eu tenho um alarme conectado aqui quero saber se esse alarme está desligado desligado ou seja se ele não foi acionado eu posso fazer o seguinte mais uma mensagem escreva a a gente coloca alguma coisa do tipo alarme desligado o alarme está desligado como que eui alarme tá desligado o alarme tá desligado quando nenhuma das janelas estiver aberta tá fechada o alarme não tá disparado mas se se uma das janelas for aberta o alarme dispara se alguma das janelas for aberta
a variável estado terá o valor verdadeiro true E aí para saber se o alarme está desligado basta inverter esse estado lógico ou seja basta eu colocar aqui um não estado quando aqui for verdadeiro aqui vai ser falso quando aqui for falso aqui vai ser verdadeiro ou seja quando o estado for falso significa que não tem nenhuma janela aberta certo então o alarme está desligado por portanto não estado falso fica verdadeiro alarme desligado verdadeiro não está ativo então se eu executar ele vai dizer alarme desligado falso ou seja o alarme tá disparando tá então esse é
o uso do operador não a gente usa quando a gente precisa inverter um estado lógico digamos que o meu circuito eletrônico precise dessa instrução para poder ser acionado agora se eu quiser saber se todas as janelas estão abertas não apenas se uma delas está aberta bom aí eu posso utilizar uma instrução parecida com esta daqui porém em vez do operador ou eu coloco o operador e E aí lembrando da tabela verdade o operador e só retorna verdadeiro ou true quando todas as condições de entr também forem verdadeiras então isso aqui tem que ser verdadeiro isso
aqui tem que ser verdadeiro isso aqui tem que ser verdadeiro pra variável estado agora nesse ponto do programa ter o valor verdadeiro ou seja todas as janelas abertas se uma delas não estiver aberta que vai acontecer que estado será falso e aí a gente coloca uma uma mensagem escreva ou paraa linha de baixo todas as janelas abertas Será que todas estão abertas Vamos concatenar com o conteúdo de estado e agora a gente executa todas as janelas abertas falso tem alguma janela aberta true então sim tem alguma janela que está aberta verdade mas não são todas
agora e se eu abrisse todas a a e a executo o programa E olha que interessante a primeira janela tá aberta sim tem alguma aberta sim o alarme tá desligado Não ele tá disparando todas as janelas estão abertas sim true perfeito então agora como todas as entradas do operador e são verdadeiras são true o resultado também é true e se todas as janelas estiverem fechadas pra gente encerrar fff eu executo o meu código primeira janela está aberta falso tem alguma aberta falso o alim tá desligado sim está desligado todas as janelas estão abertas falso também
se não tem nenhuma aberta todas não estão abertas legal então essa é a ideia do uso dos operadores lógicos veja que isso aqui é uma aplicação bem prática eu poderia realmente pegar um microcontrolador um sisteminha eletrônico e colocar um programinha desse tipo dentro dele para controlar sensores que eu coloco na minha casa para valer né no sisteminha de automação mas a gente usa muito isso em programação em geral e a gente vai vai trabalhar bastante com esses operadores lógicos mais pra frente quando trabalharmos com os ionais porque é lá dentro que a gente costuma fazer
a maior parte dos Testes lógicos fala pessoal aqui é o Fábio da Bon treinamentos Neste vídeo vamos falar sobre associatividade e precedência de operadores em programação Esse é um assunto muito importante Quando você vai construir expressões que usam dois ou mais operadores na mesma expressão porque os operadores eles podem ter precedências ou prioridades diferentes entre de si e mesmo quando não tem a gente tem regras de associatividade que vão ditar Qual dos operadores ou qual das operações vai ser executada primeiro então a gente pode definir as regras de precedência como sendo regras que especificam qual
operador vai ser avaliado primeiro quando operadores com precedência diferente são adjacentes numa expressão já as regras de associatividade vão especificar qual operador vai ser avaliado primeiro quando os operadores TM a mesma ordem de precedência e são adjacentes em uma expressão como é que a gente avalia isso nós temos aqui uma tabela grandona que você tá vendo que mostra a associatividade e a ordem de precedência e a prioridade de precedência os operadores que estão em cima no início no topo dessa tabela tem prioridade ou seja uma precedência maior em relação aos que estão mais para baixo
aqui no final da minha tabela ela essa tabela vou deixar o link aqui embaixo na descrição do vídeo depois desse artigo para você olhar um artigo que fala sobre operadores em geral em programação e nessa tabela também tem a associatividade a associatividade pode ser direita paraa esquerda ou esquerda paraa direita significando o quê Qual operador vai ser executado Primeiro qual operação vai ser executada primeiro a operação que está à esquerda ou que está à direita dentro de uma expressão então aqui Ed esquerda para a direita o a operação à esquerda executada primeiro e depois a
operação à direita e alguns operadores não são muitos mas alguns deles têm a associatividade invertida primeiro à direita depois à esquerda então não confunda os dois conceitos precedência é uma coisa associatividade é outra aqui a gente pode ver por exemplo que operações de exponenciação tem precedência sobre operações unários que tem precedência sobre operações de multiplicação divisão e módulo é que também tem uma lista de operadores eh que por sua vez tem precedência sobre as operações de adição subtração e assim sucessivamente até o final da nossa tabelinha aqui eu também tenho alguns operadores lógicos operadores bit
a bit os operadores condicionais e o último o operador de atribuição que sempre é executado por último e na verdade são vários os operadores de atribuição que nós temos os símbolos que eu uso aqui eles são genéricos Mas dependendo da linguagem de programação eles podem variar um pouquinho por isso é sempre importante consultar a documentação da sua linguagem da linguagem que você tá usando Então qual é a ideia vamos dar uma olhadinha aqui no quadro então suponhamos que eu tenho uma operação assim do tipo a + b vezes c como é que vai ser executada
essa expressão em uma linguagem de programação qualquer bom de acordo com a ordem de prioridade que a gente viu na tabela a multiplicação tem prioridade superior a a adição então este trecho aqui vai ser executado primeiro e o resultado dele vai ser somado com o outro trecho com essa segunda operação e aí a gente vai ter o resultado final da nossa expressão isso aqui é ordem de precedência OP então a operação de multiplicação tem precedência sobre a operação de soma beleza mas e se eu quisesse alterar Essa ordem eu conseguiria sim o operador com a
maior ordem de precedência de todos são os parênteses Então deixa eu apagar aqui se a gente tiver essa expressão aqui e por acaso eu precisar por algum motivo realizar primeiro a soma e depois a multiplicação o que eu vou fazer é colocar parênteses aqui os parênteses vão forçar esse trecho a ser executado primeiro e o resultado dele então vai ser multiplicado por C como a gente vai ver em exemplos práticos já já então aqui nós nós temos ordem de precedência deixa eu limpar aqui de novo agora Suponha que eu tenha isso aqui a + b
- c Você pode considerar essas letras como sendo variáveis por exemplo nesse caso tanto a adição quanto a subtração tem a mesma ordem de precedência Então qual delas vai ser executada primeiro agora entra em scena a associatividade que vai nos dizer De qual lado começa eh a execução dessa expressão no caso a associatividade aqui é da esquerda para a direita Então primeiramente vai ser executado essa soma e esse resultado aqui vai ser subtraído de C nesta ordem vai ser feita essa operação e claro se você quiser alterar a ordem você vai colocar parênteses por exemplo
aqui aí eu forço este trecho aqui para ser executado primeiro e o resultado dele então vai ser somado com a então isso a gente chama de associatividade Vamos ver outro exemplinho aqui rápido então suponha uma expressão maior a - c + b vezes 3 o asterisco é vezes Esse asterisco bonito que eu fiz aqui - C sobre 2 então o que que vai ser executado primeiro aqui primeiro a multiplicação e a divisão então neste caso este trecho e este trecho são executados primeiro E aí o resultado desses trechos vai ser executado juntamente com os demais
aí ficam apenas subtração e somas Então a gente vai ter a- C mais isso aqui menos isso aqui e aí entra em Ação associatividade Isso aqui vai ser executado primeiro aqui depois aqui depois aqui certo nesta ordem da esquerda paraa direita se a associatividade fosse inversa a gente teria primeiro essa operação aqui depois com c e depois com a não é o caso bom acho que deu para ter uma ideia de como funciona esse esquema de ordem de precedência E associatividade então vamos ver alguns exemplos práticos eu vou abrir aqui o Portugal Studio e vou
digitar vou criar umas variáveis e e simular alguns exemplos de precedência e associatividade e a gente vai rodar noos programinhas bom eu tô aqui no Portugal Stúdio e tenho aqui algumas variáveis já pré declaradas para acelerar um pouquinho então as minhas variáveis A B C D J F e g não usei o e porque o e é uma palavra reservada aqui então a vale 5 B10 C também vale 5 D2 j4 F é uma variável do tipo lógico que vale verdadeiro e g vale falso eu vou usar elas pra gente fazer alguns exemplos de precedência
e associatividade então eu vou usar essa função escreva para mostrar aqui embaixo os resultados do nosso processamento vamos lá então vou começar com essa expressão aqui bem simples A + B - C - D quanto será que resulta essa expressão pensa um pouquinho pausa o vídeo Tenta descobrir quanto que dá essa expressão E aí na sequência a gente executa aqui vamos ver quanto é que dá isso olha só dá oito Por que que dá oito Bom aqui os operadores têm todos a mesma ordem de precedência então a expressão é avaliada de acordo com a associatividade
a associatividade aqui é esquerda paraa direita então primeiro Face a + b 5 + 10 15 - C 15 - 5 10 - d 10 - 2 8 Portanto o resultado que está aqui está corretíssimo bom agora Suponha que que tivéssemos isso aqui olha só a + b x d nesse caso temos operadores com precedências diferentes e aí a associatividade não conta mais o que conta é a precedência e a precedência da multiplicação divisão módulo é maior do que da soma e subtração então Primeiro vai ser executado b b x d depois o resultado somado
com a b x d é 10 x 2 20 + a que é 5 a gente espera que apareça 25 aqui embaixo vamos ver se tá certo 25 perfeito Mas e se não fosse esse o resultado esperado E se eu precisasse somar com b primeiro e depois multiplicar o resultado por D dependendo da Fórmula é assim Então nesse caso eu preciso alterar a ordem de precedência como é que eu faço isso usando o operador de maior precedência de todos que são os parênteses então eu boto um parêntese aqui e coloco outro parêntese aqui englobando a
expressão que eu quero forçar execução primeiro e agora quando eu executo olha só só o resultado é 30 porque a + b é 5 + 10 15 x 2 30 então um resultado diferente muito bom vejamos um outro exemplo de associatividade agora então vamos supor que eu tenha o seguinte olha só que interessante d - c + j quanto que dá isso aqui bom os operadores têm mesma ordem de precedência Então o que conta agora é associatividade e nesse caso é esquerda pra direita então primeiro a gente vai fazer d - c e depois somar
o resultado com o J executando o valor é 1 D é 2 - C que é 5 dá -3 -3 + 4 1 perfeito agora olha que interessante eu vou englobar essa soma aqui em parênteses para forçar essa soma a ser executada primeiro ou seja Estou invertendo a associatividade padrão nesse caso você deve imaginar vai dar o mesmo resultado afinal de contas é só soma e subtração será vamos executar deu -7 agora Então veja c + j 5 + 4 dá 9 d d vale 2 2 - 9 é - 7 então sim Existe diferença
na ordem das operações mesmo que você tenha só somas e subtrações ou multiplicações e divisões dependendo de que lado você começa o resultado pode ser diferente isso é algo que confunde bastante o povo quando tá estudando matemática matemática básica mesmo então fic ligeiro com isso quando você tiver criando algoritmos de programação vejamos um exemplo agora com operador Lógico eu criei duas variáveis lógicas f e g Suponha que eu quero fazer isso ó f igual G diferente de falso quanto que retorna a isso vamos ver retornou falso por quê esses dois operadores também TM mesma ordem
de precedência então aqui o que conta é associatividade esquerda paraa direita então primeiro a gente faz f é igual a g verdadeiro é igual a falso não não é é falso e falso é diferente de falso não também não é é falso meio confuso né mas o resultado É esse mesmo falso certo posso inverter isso usando um operador unário aqui na frente desse falso o não por exemplo E aí ao executar o resultado passa a ser verdadeiro porque isso aqui vai ser executado antes disso aqui o operador unário ele tem precedência no caso unário é
o operador que age sobre um único operando no caso sobre esse operando que é o valor falso um exemplo um pouquinho mais complexo agora vamos supor assim ó F variável F ou f e falso ou G quanto que retorna isso hein quanto será que retorna isso bom a gente pode pensar aqui ele vai retornar e f ou f depois fazer e falso ou G mas na verdade se você lembrar daquela tabelinha que eu recomendo que você acesse tá o link aqui embaixo na descrição do vídeo a operação lógica e tem prioridade sobre operação lógica ou
E então este f e falso vai ser executado primeiro F é verdadeiro verdadeiro e falso dá falso então isso aqui é falso a gente tem então verdadeiro ou falso que dá verdadeiro verdadeiro ou falso de novo continua dando verdadeiro por isso apareceu verdadeiro aqui embaixo então toma cuidado paraas operações lógicas também a ordem de prioridade é super importante e se a gente precisar alterar isso aqui por algum motivo basta colocar entre parênteses por exemplo eu vou forçar esse F ou f primeiro como se fosse uma associatividade forçada E aí nesse caso Olha só o resultado
vai ser falso porque f F verdadeiro ou verdadeiro é verdadeiro só que aí verdadeiro e falso dá falso e falso ou falso continua sendo falso tá por isso falso o nosso resultado aqui beleza bom eu poderia ficar fazendo um monte de exemplos aqui mas tudo recai nessas mesmas ideias ordem de prioridade dos operadores e associatividade quando eles estiverem mesma ordem de prioridade então sempre com tá a tabelinha lá do link tá no link também eu tenho uma descrição dos principais operadores tabelas com vários tipos de operadores para você conhecer e a ordem de precedência a
suas atividad de cada um deles O link tá aqui embaixo na descrição de vídeo e espero que vocês tenham entendido do que se trata esse assunto que é tão importante para quem estuda lógica de programação e trabalha com programação em geral Olá pessoal aqui é o Fábio da B treino e neste vídeo demos continuidade ao nosso curso de lógica de programação desta vez Vamos iniciar o estudo das estruturas de decisão condicional ou estruturas de controle de decisão que que é uma estrutura de controle de decisão é uma estrutura de código que permite tomar uma decisão
durante a execução do programa decidindo Assim que caminho o programa Vai tomar na sequência de acordo com uma condição que é imposta ou seja basicamente o programa em determinado do ponto Faz uma pergunta um teste lógico e dependendo do resultado desse teste Lógico o programa ele vai realizar uma ação na sequência ou uma outra ação diferente aqui no curso vamos trabalhar com as estruturas de controle de decisão condicional simples composta e encadeada para começar e nesse vídeo eu vou falar especificamente da estrutura de decisão condicional Simples então vamos lá estudar o desvio condicional simples O
desvio condicional simples tem por finalidade de tomar uma decisão de acordo com o resultado de uma condição e essa condição é um teste lógico uma pergunta que a gente faz durante a execução do código a estrutura é mais ou menos a seguinte se uma uma ou mais condições retornarem o estado lógico verdadeiro então instruções determinadas pelo programador serão executadas e a estrutura chega ao fim então as instruções elas só são executadas se as condições Retornam verdadeiro se as condições Retornam falso nenhuma instrução que você coloca aqui nesta parte do desvio condicional será executada a sentasse
pra gente criar isso usando português estruturado é muito simples palavrinha mágica C entre parênteses a gente coloca a condição de teste um teste lógico uma pergunta que vai retornar verdadeiro ou falso abre Chaves e aí eu venho com as instruções que serão executadas se esta condição retornar verdadeiro se a condição retornar falso nenhuma dessas instruções será executada aí a gente fecha as chaves e podemos prosseguir com a execução normal do programa com outras instruções quaisquer que não tem nada a ver com essa instrução C vejamos um exemplo desvio condicional simples um programinha para calcular a
nota média de um aluno e colocar um resultado na tela esse programinha ele vai calcular a média de um aluno baseando-se em notas que a gente vai entrar duas três quatro notas e se a média for maior ou igual ao valor 7 pré-estabelecido que é a nossa condição a gente vai mostrar na tela o resultado aprovado caso a média não seja maior ou igual a 7 o programa não faz nada e simplesmente finaliza porque o desvio condicional é simples então no desvio simples a gente só trata quando a condição retorna verdadeiro é só o que
nos interessa quando a condição retorna falso não interessa então eu vou codificar isso aqui no Portugal Stúdio pra gente dar uma olhadinha como é que funciona o condicional simples eu vou começar criando duas variáveis para pra gente guardar duas notas eu vou trabalhar só com duas notas para ir mais rápido duas variáveis do tipo real que eu vou chamar de N1 e n2 e vou criar uma variável do tipo real para guardar a média do usuário e essa média calculada é que vai ser utilizada no nosso na nossa condição no nosso condicional no programa em
si eu vou colocar uma mensagem do tipo entre com a primeira nota entre com a primeira nota e aí o programa vai ler essa nota e colocar na variável N1 depois o programa Vai colocar outra mensagem entre com a segunda nota programa vai ler essa nota e colocar na variável n2 tranquilo até aqui aí a gente faz o cálculo da Média média é igual N1 + n2 divido por 2 média aritmética no caso veja que a gente coloca essa soma entre parênteses pro cálculo sair correto né para ele não dividir n2 por 2 e depois
somar com N1 que seria incorreto e agora eu vou utilizar o condicional simples Então a nossa condição é a seguinte se a média for maior ou igual a seete é para escrever aprovado na tela então eu crio o condicional assim C abro parêntese venho com a condição de teste Qual é a condição é a pergunta que eu quero fazer pro programa eu quero perguntar pro programa se a média do cidadão é maior ou igual a sete então escrevo média variável média maior ou igual operador de comparação e o valor estabelecido é o s e fecha
o parêntese é importante aqui que a condição Esteja dentro de parênteses aí eu abro chave dou enter o programa que já fechou a chave para mim automaticamente e aqui dentro Eu tenho então um bloco que vai ser executado se por acaso esse teste retornar verdadeiro eu não tenho como saber se ele é verdadeiro ou falso porque isso vai depender das notas que o usuário vai digitar então eu simplesmente coloco a mensagem alguma coisa do tipo resultado dois pontos aprovado beleza mando pular mando ir pra linha de baixo aqui é isso essa frase só aparecerá na
tela se este condicional retornar verdadeiro e aí para ficar mais interessante depois de finalizar este C eu vou colocar uma outra instrução do tipo sua média sua nota média foi e vou concatenar com o valor da variável média Então qual que é a ideia aqui essa instrução sempre vai ser executada independente do resultado se é aprovado ou não já o resultado aprovado só vai ser executado se a média for maior ou igual a 7 porque este resultado está vinculado a uma condição do condicional c da estrutura C Então agora eu vou rodar o programa Entre
com a primeira nota vamos supor sete segunda nota 8,5 enter resultado aprovado sua média final foi 7.75 então como 7.75 é maior ou igual a 7 então a instrução que tá aqui dentro é executada V executar mais uma vez Agora vamos supor que a nota foi menor foi qu na primeira prova e 5.8 naa prova enter sua média foi 4.9 veja que não apareceu a mensagem de resultado por quê Porque 4.9 é menor do que 7 não é maior ou igual Então esse teste lógico retornou falso quando ele retorna falso essa instrução aqui ou o
conjunto de instruções que eu tiver aqui não será executada ou não serão executadas e ele pula pra próxima execução do programa que é mostrar a nota na tela tranquilo gente então isso aqui é um desvio condicional simples um testezinho lógico uma pergunta simples que vai ter um um resultado um código associado que vai ser executado se por acaso este teste retornar verdadeiro antes de finalizar vou criar um outro teste um pouquinho mais complexo vamos supor agora que eu quisesse avaliar não a média maior igual a s mas a média entre 5 e 7 Então nesse
caso eu posso criar um condicional aqui uma condição um pouco mais complexa eh utilizando o operador lógico poderia fazer algo mais ou menos assim se a média for maior ou igual a 5 e olha só utilizando o a estrutura lógica e o operador lógico e E aí eu crio uma outra pergunta um outro teste média menor do que S Então agora eu tenho duas condições condição um e condição do o operador e só retorna verdadeiro se ambas forem verdadeiras Ou seja somente se a média for maior ou igual a 5 e menor que 7 ou
seja entre 5 e 7 é que o código aqui será executado E aí não posso esquecer de colocar tudo isso dentro de parênteses esses dois parênteses aqui são da condição um esses dois da condição dois mas eu preciso de um parêntese geral que é paraa minha pro meu condicional C saber que ele tem que avaliar isso aqui tudo em conjunto então o retorno dessa instrução toda será verdadeiro ou falso E aí vai executar o código que tá aqui dependendo desse resultado e claro se o cara tiver com a nota entre 5 e 7 não tá
aprovado ele está de recuperação recuperação e agora eu vou testar o nosso programinha então executo entre com a primeira nota vamos supor que ele tirou sete e oito veja que nesse caso não mostra a mensagem porque a média 7,5 não está entre 5 e 7 Mas se por acaso ele tirou seis numa prova e 6. 7 na segunda prova resultado recuperação porque a média foi 6 pon do 35 que está entre 5 e 7 então avaliamos o resultado dessa expressão composta um pouquinho mais complexa utilizando inclusive o operador lógico e o condicional simples executou o
código que está associado beleza gente então a gente viu nesse vídeo o condicional simples no próximo vídeo vamos falar sobre o condicional composto que permite avaliar também o que acontece quando o resultado desse teste Lógico é falso Olá pessoal aqui é o da bosam Treinamentos e neste vídeo damos continuidade ao nosso novo curso de lógica de programação utilizando Portugal estúdio vamos falar nesse vídeo sobre as estruturas de decisão condicional compostas no vídeo passado eu falei sobre a estrutura de decisão condicional simples que é o uso do comando C para tratar uma decisão e saber o
que vai ser feito na sequência no programa e agora a gente vai falar sobre a estrutura de decisão composta que é o c com o cão que vai nos permitir tratar o O Retorno de uma condição Quando ela for verdadeira e também bem quando ela for falsa então vamos lá continuando o nosso estudo sobre as estruturas de desvio condicional vamos falar do desvio condicional composto no vídeo passado a gente falou do desvio condicional simples mostrei um exemplo e agora vou trabalhar em cima daquele mesmo exemplo para mostrar o desvio composto a ideia aqui é a
seguinte a gente vai ter condições de teste para serem avaliadas se essas condições retorna um valor verdadeiro um bloco de instruções associado vai ser executado só que agora se a minha condição de teste retornar falso Eu também teria um bloco de de instruções para serem executadas um segundo bloco de instruções assim com o desvio condicional composto eu consigo testar a minha condição tanto pro valor verdadeiro quanto pro valor falso e ter blocos de instrução separados para execução em cada um dos casos esse fluxograma mostra como é que funciona o desvio condicional composto eu vou ter
o meu teste lógico em algum ponto do programa se o teste retorna verdadeiro executo um bloco de instruções se retornar falso executo um outro bloco de instruções diferente e aí o programa Segue o seu fluxo normal no caso do programinha que nós construímos na aula passada estávamos testando se a média do aluno era maior ou igual a 7 em caso afirmativo colocando a mensagem aprovado na tela mas quando a média não era maior ou igual a 7ete o programa não fazia nada porque ele só testava o valor se verdadeiro agora com o desvio condicional composto
a gente vai conseguir testar também o valor se falso Ou seja quando a média do usuário não for maior ou igual a sete o que acontece nesse caso Se isso for falso eu quero exibir na tela a mensagem reprovado e depois finalizar o meu programa e como é que eu consigo fazer isso eu consigo utilizando a seguinte sintaxe se condição for verdadeira abro Chaves Então e e executo as instruções caso essa condição retorne verdadeiro fecho a chave e aí eu venho com a palavra chave senão o senão vai tratar a condição Quando ela for falsa
então o senão abro o chave e venho com as instruções caso essa condição testada aqui em cima retorne falso e depois eu fecho a chave que eu abri pro senão o senão vem logo depois dessa chave de fechamento do C porque ele na verdade faz parte de um mesmo grande comando c c não então se condição verdadeira executa instruções senão executa outras instruções Então vamos pro nosso programinha que escreve os no vídeo passado e vamos acrescentar uma condição para verificar se o aluno não foi aprovado e colocar uma mensagem diferente na tela aqui está o
nosso programinha vamos relembrar que ele utiliza duas variáveis N1 e n2 do tipo real para capturar as notas e uma variável também do tipo real chamada média para armazenar a média que vai ser calculada o usuário entra com as duas notas a média calculada E caso a média seja maior ou igual a 7 aparece o resultado aprovado então quando eu testo esse programa coloco a primeira nota 7 a segunda 8 resultado aprovado com média 7,5 mas se eu executar esse programinha com notas mais baixas por exemplo 4 e 6 ele mostra a média mas não
dá o resultado por quê Porque nesse caso a média c é menor do que sete então esta condição está retornando falso e o código associado ao você não é executado mas mais nada é executado então agora a gente vai acrescentar logo depois desta chave de fechamento a condição senão com o senão a gente vai acrescentar um bloco de códigos que vai ser executado sempre que essa média for menor do que sete para isso É só escrever senão abro chave beleza e agora eu venho com o bloco de códigos que eu quero executar pode ser uma
linha de código podem ser 1000 linhas de código Depende do que você precisa fazer eu vou colocar a seguinte mensagem escreva resultado e neste caso se o cidadão não tirou uma média maior ou igual a 7 ele está reprovado beleza barra n aqui fecho o aspa fecho parêntese e abro o parêntese aqui que ficou faltando legal agora a gente pode testar veja que eu também tenho que fechar essa chave que eu abri pro senão e note o seguinte não tem condição de teste pro senão legal a condição de teste é uma só e se ela
for verdadeira executa o primeiro bloco de código se ela for falsa se o seu retorno for falso executa o bloco que tá associado ao senão então não tem uma segunda condição de teste aqui não é necessário e você não deve colocar e agora eu vou testar clico então para executar o programa entro com a primeira nota vamos supor oito segunda nota nove resultado aprovado média 8,6 beleza 8 E5 é maior ou igual a 7 retornou verdadeiro executou este código aqui agora eu vou testar com uma nota baixa vamos ver executo vamos supor que na primeira
prova o aluno tirou se e na segunda ele tirou TR enter média 4,5 4,5 é menor do que 7 isso aqui retorna falso e então ele executa esta instrução escrevendo então na tela o resultado reprovado que você vê aqui embaixo resultado reprovado então mde 4,5 retorno falso executo o bloco associado ao senão bloco de códigos associado da instrução senão toda essa estrutura é o condicional composto porque é chamado de composto então Relembrando porque eu tenho um teste composto eu posso testar o valor quando ele é verdadeiro e quando ele é falso também executando códigos diferentes
para cada uma das situações e se eu tiver mais do que duas situações mais do que dois testes para fazer como é que eu devo proceder nesse caso a gente pode trabalhar com o condicional encadeado ou condicional aninhado que é nosso assunto do próximo vídeo neste vídeo aprendemos a utilizar o condicional composto Em lógica de programação prosseguindo então com o nosso estudo de lógica de programação vamos falar hoje sobre o desvio condicional encadeado nas aulas passadas já falamos sobre o desvio condicional simples e o composto e agora a gente vai falar sobre o encadeado também
chamado de desvio condicional aninhado e esse é um tipo de desvio condicional que é usado quando a gente precisa verificar condições de testes sucessivas na qual uma ação vai ser executada quando uma dessas condições retornar um valor verdadeiro ou seja dependendo de um conjunto anterior de condições que foram testadas este fluxograma mostra como funciona um desvio condicional encadeado a gente vai ter uma condição de teste um que se retornar verdadeiro vai ter o seu Bloco de instruções executado Mas se a condição de teste um retornar falso nós vamos ter uma segunda condição de teste que
vai ser testada se ela retornar verdadeiro teremos então um outro bloco de instruções sendo executado e se por acaso essa segunda condição também retornar falso nós podemos ter um outro conjunto de instruções para serem executadas e na prática a gente pode estender esses testes condicionais em quantos níveis a gente precisar por exemplo assim aqui eu tenho 1 2 3 4 C níveis de teste cinco testes lógicos e sempre que um deles retorna falso o próximo teste é realizado e sempre que um teste retorna verdadeiro o conjunto de instruções associado é executado E aí finaliza a
estrutura condicional e se todos os testes lógicos retornarem falsos a gente vai ter um conjunto de instruções específico para esse caso que vai ser executado nesse caso no Portugal Studio A gente vai usar um código parecido com isso a gente vai usar a instrução C colocar uma condição de teste aqui entre parênteses e dentro do bloco de Chaves as instruções que vão ser executadas se por acaso essa condição for verdadeira se ela retornar verdadeira agora se essa primeira condição retornar falso nós vamos fazer um segundo teste para isso a gente vai acrescentar a instrução senão
C que nós não tínhamos visto anteriormente então senão C E aí eu posso colocar uma segunda condição de teste dentro do bloco aqui eu coloco as instruções que vão ser executados se a primeira condição for falsa e a segunda for verdadeira se a segunda condição de teste também retornar falso a gente vai cair no bloco sen não e aí as instruções caso todas as instruções retornem falso e claro eu posso colocar quantas instruções sen não c eu quiser entre o c e o c não sempre começa com o c sempre termina com o c não
e eu posso ter tantos c não c quanto necessários para fazer todos os testes condicionais que eu precisar por isso a gente chama de teste em cada adado vejamos um exemplo criar um algoritmo para cálculo da média aritmética das notas de um aluno numa disciplina já fizemos isso nos outros vídeos mas só que agora vai ter uma diferença esse algoritmo vai mostrar como resultado a mensagem aprovado se a média do cidadão for maior ou igual a 7 recuperação se a média for maior ou igual a 5 e menor que sete ou seja se estiver entre
cinco e sete e reprovado se a média ficar abaixo de cinco veja que temos mais de dois casos de teste se fossem só dois casos um único C seria suficiente mas aqui eu tenho três casos ele pode est aprovado reprovado ou de recuperação montando um fluxograma para resolver esse exemplo nós teríamos isso primeiro teste se a média maior ou igual a 7 se for verdadeiro e já tá aprovado e acabou se for falso eu faço um segundo teste ok a média do cidadão não é maior ou igual a 7 Mas será que é maior ou
igual a c ou seja entre c e S se for verdadeiro ele está de recuperação se esse segundo teste também retornar falso aí não tem jeito ele está reprovado e o algoritmo finaliza vamos programar isso lá no Portugal Stúdio para ver como é que funciona então vou criar um novo programinha aqui no Portugal Studio novo arquivo e nesse programinha eu vou criar algumas variáveis eu vou trabalhar só com duas notas para ir mais rápido então duas notas do tipo real vou chamar de N1 e n2 e também vou criar uma variável do tipo real para
armazenar média beleza na função início eu coloco uma mensagem do tipo entre com a primeira nota então o cidadão vai digitar a primeira nota vou ler essa nota e colocar na variável N1 beleza e aí a gente vai fazer o mesmo pra segunda nota vou até copiar e colar o código aqui embaixo só vou modificar pra segunda segunda nota e também o nome da variável será n2 aqui tranquilo a gente fez isso nos outros vídeos Não tem segredo calculamos a média média recebe a soma de N1 + n2 tem que estar entre parênteses para forçar
primeiro a soma e depois a divisão pelo número de de notas e agora a gente começa o bloco condicional se a média for maior ou igual a 7 ou 7.0 então que que vai acontecer eu vou escrever na tela a mensagem aprovado aprovado vou colocar também uma quebrinha de linha aqui beleza é isso agora se a média do cidadão não for maior ou igual a 7 ele não tá aprovado mas também não tá reprovado ainda a gente tem que fazer o segundo teste e nesse caso eu acrescento um c não c e o outro teste
dentro de parênteses esse teste vai ser se a for maior ou igual a 5.0 se a média foi maior ou igual a 5.0 Então nesse caso a mensagem é diferente a mensagem é recuperação recuperação n fecho aqui e coloco um e aqui no meio beleza tranquilo e se por acaso a média do cidadão também não for maior ou igual a 5.0 ou seja se retornar falso tanto o primeiro quanto do segundo teste Lógico eu vou colocar um bloco senão no senão não vai teste lógico novo certo lembre-se sempre disso O senão vai ter um bloco
associado se todos os demais retornarem falso e se todos retornarem falso a mensagem é reprovado reprovado Infelizmente o aluno foi reprovado beleza Opa tirar isso aqui Tranquilo então aqui o condicional em cada deado e fora do bloco depois do senão eu vou colocar uma mensagenzinha só para Conar colocando a média do cidadão Qual foi a média dele então a média final foi o que tá na variável média beleza Tá feito vamos testar o programinha agora para ver se ele tá funcionando de acordo tá então vou executar entre com a primeira nota vamos supor que foi
oito e a segunda foi nove então aprovado com médian 8,5 o primeiro teste lógico aqui retornou verdadeiro então ele já colocou na tela a mensagem aprovado beleza executando de novo segundo teste vamos supor que ele tirou seis na primeira prova e sete na segunda recuperação Então agora ele executou este segundo bloco porque o primeiro retornou falso a média é 6,5 6,5 não é maior ou igual a 7 mas 6,5 é maior ou igual a 5 então este bloco aqui retornou verdadeiro e essa mensagem foi exibida perfeito tá vamos executar mais uma vez só para testar
o último caso agora vamos supor que na primeira prova ele tirou seis mas na segunda ele tirou dois reprovado média 4 4 não é maior ou igual a 7 falso não é maior ou igual a 5 falso caiu no bloco cão mensagem reprovado perfeito Então é assim que funciona um condicional encadeado você faz um teste se ele retornar verdadeiro já executa o que tem que executar e acabou caso contrário faz um outro teste se retornar verdadeiro executa um outro bloco de código diferente e acabou se retornar falso faz outro teste e assim sucessivamente e se
caso todos retornarem falso você vai ter o bloco senão no final para ter ali um um código a ser executado Beleza então é isso e agora eu tenho um desafio para vocês modifiquem esse programa que a gente acabou de criar para solicitar também o número de faltas do aluno então além de perguntar as duas notas também perguntar Quantas faltas ele teve na disciplina E caso o aluno tenha 10 ou mais faltas ele vai receber a mensagem reprovado independente da Média mesmo que o cara tenha média 10 se ele tiver 11 faltas ele tá reprovado por
faltas tentem modificar esse programa para funcionar para fazer isso que tá sendo pedido e postem a sua solução aqui nos comentários abaixo legal vamos ver se vocês conseguem resolver esse desafio de lógica de programação Então é isso nesse vídeo falamos sobre o condicional encadeado no próximo vídeo vamos tratar vamos começar a estudar as estruturas de repetição Em lógica de programação que são extremamente importantes fala pessoal aqui é o Fábio da boson Treinamentos e neste vídeo Vamos estudar o comando escolha caso Em lógica de programação o comando escolha a casa é um comando da família do
das estruturas de controle com condicional e ele é empregado para que seja possível escolher uma opção dentre um número específico de condições existentes e eliminando a necessidade da gente usar C então encadeados vários CS encadeados como a gente viu na aula passada isso vai simplificar a codificação do algoritmo em alguns casos facilitando Inclusive a depuração e a atualização do algoritmo como é que funciona esse comando ele testa uma condição que geralmente é um valor armazenado numa variável e dependendo do resultado desse teste vai executar um bloco de código associado Aqui nós temos a sintaxe do
escolha caso como é que funciona a gente vem com a palavra chave escolha dentro de parênteses a gente coloca a opção que a gente quer testar como eu disse geralmente uma variável que contém um valor que vai ser testado abrimos Chaves e aí a gente vem com os casos daí o nome escolha caso caso valor um que que é esse valor um é um valor que vai ser comparado com o valor da opção aqui dentro dos parênteses se o valor um for igual da Opção este bloco de comandos aqui vai ser executado E logo na
sequência a instrução pare para que os próximos casos não sejam comparados com a opção porque é desnecessário a gente já descobriu a opção correta agora caso o valor um não seja igual ao valor da Opção vai ser testado o próximo valor o próximo caso Então se o valor dois for igual à opção este bloco de comandos é que vai ser executado e depois a instrução Pare que vai finalizar a estrutura escolha sem testar as próximas isso aqui você pode fazer várias vezes em sequência e no finalzinho do escolha caso a gente vai ter um caso
contrário o caso contrário ele vai ter um bloco de comandos associado que somente vai ser executado se nenhum dos casos anteriores corresponder à opção testada é como se fosse uma espécie de ELS lá do do C então c não o c não do C então Legal vamos ver um exemplo do comando escolha casaso lá no Portugal Stúdio vamos pra prática tô aqui no Portugal Studio vou criar um novo arquivo legal E aí eu vou fazer o seguinte eu vou fazer um programinha que pede pro usuário digitar uma letra essa letra vai ser lida e dependendo
da letra que for lida for digitada ou seja o caso da letra que for digitada eu vou exibir uma mensagem qualquer na tel para isso eu vou usar uma variável do tipo caráter que eu vou chamar de opção opcão no caso apenas essa variável vai ser suficiente já para mim aqui na função início eu peço logo de cara pro usuário digitar uma letra Então digite uma letra aí a gente vai avaliar que letra foi essa programa Vai ler a letra digitada e colocar na variável opção certo agora vamos para o comando escolha então escolha e
dentro do parêntese a variável que tem o valor que eu quero verificar no caso a variável opção então escolha opção abro chave e agora eu venho com os meus casos então Suponha que o usuário digitou a letra A então caso letra A veja que como eu usei o tipo caracter eu tenho que colocar essa essa letra a entre aspas simples tá se eu tivesse usado cadeia em vez de caracter no tipo seriam aspas duplas então caso a caso seja a letra a dois pontos para iniciar o bloco de códigos deste caso e aí eu venho
com os comandos que serão executados no caso escreva vamos supor sei lá letra digitada letra A beleza então tá aqui e aí não posso esquecer da instrução pare eu vou colocar a instrução pare para que os próximos casos não sejam avaliados também aqui eu vou vou dar um tabz inho para deixar bem edentado o meu código e venho com um segundo caso agora então Caso seja a letra B vamos supor dois pontos e aí eu vou vir com outro bloco de códigos escreva letra digitada letra B beleza tá aí E também o pare para não
avaliar as próximas instruções eu posso fazer isso quantas vezes eu precisar em vez de usar um C então c não c de novo então c não c de novo e assim por diante tá beleza vamos supor que eu tenha só esses dois casos aqui e o usuário Então vai digitar uma letra que pode ser a b mas pode ser uma outra letra qualquer se ele digitar uma letra que não for uma dessas duas eu vou ter um caso contrário que vai avaliar esse caso né da letra não corresponder ao que tá na variável opção e
E aí é só escrever caso contrário uma mensagem como escreva você digitou outra letra Beleza então suficiente deixa só arrumar esse e aqui ok e deixar ident adinho Só isso tá pronto o nosso comando escolha caso então caso o valor dessa variável seja a letra A vai aparecer essa mensagem se for letra B vai aparecer essa se for uma outra letra qualquer vai aparecer esta mensagem vamos executar para ver o que acontece então eu executo o programa digite uma letra a letra digitada a perfeito de novo letra B letra digitada B perfeito e se eu
testar uma última vez vamos supor com a letra x você digitou outra letra caiu no caso contrário Então foram avaliados os casos A e B em comparação com o conteúdo da variável opção e nesse último caso caso contrário apareceu a mensagem você digitou outra letra Na próxima aula eu vou mostrar como é que a gente pode usar o comando caso para criar um menuzinho de acesso que é um uma estrutura bastante comum que a gente queria Em lógica de programação e que muitas aplicações de linha de comando utilizam um menuzinho no qual você vai escolher
um item uma opção digitar essa opção E aí uma função associado ou um bloco de códigos associado vai ser executado Olá pessoal aqui é o Fábio da Bon treinamentos Neste vídeo eu vou mostrar como utilizar bibliotecas no Portugal estúdio uma biblioteca é um arquivo que contém código pré-programado que você pode importar dentro da sua aplicação para adicionar funcionalidades e o Portugal Stúdio traz uma série de bibliotecas disponíveis pra gente poder incrementar os nossos programinhas durante o estudo de lógica de programação assim Neste vídeo eu vou falar um pouquinho sobre essas bibliotecas e mostrar como é
que a gente pode utilizá-las no programinha com alguns exemplos simples vamos lá bem pessoal Então logo após essa breve explicação sobre bibliotecas vamos ver como usar bibliotecas no Portugal Studio A gente vai começar entrando na ajuda do Portugal Stúdio e Aqui nós temos duas grandes categorias a ajuda da linguagem principal que tem as estruturas de repetição condicionais etc e uma ajuda separada paraas bibliotecas e expandindo cada uma delas a gente tem acesso às funções e também as constantes que essas bibliotecas nos fornecem aqui por exemplo as funções e constantes da biblioteca de arquivos temos bibliotecas
para tratar de arquivos calendários gráficos internet bibliotecas Matemáticas e muitas outras como você pode ver aqui algumas são mais úteis do que outras por exemplo na biblioteca útil de utilitários nós temos a função sorteia que é utilizada para gerar números aleatórios que a gente trata em um outro vídeo especial sobre essa sobre essa função temos também a função aguarde que eu vou mostrar já já como é que funciona e para usar uma das funções você precisa saber como que essa função deve ser empregada para isso basta clicar em cima de uma função por exemplo eu
vou abrir aqui matemática vou clicar na função raiz então pra gente trabalhar com raiz a gente sempre vai ter esse formato aqui função um tipo de dado que é o tipo que essa função retorna então quando ela for executada ela vai retornar alguma coisa nesse caso retorna um número real o nome da função e depois os dados que a função precisa para rodar que são os argumentos no caso Esta função precisa de um radicando que é o número pro qual você quer tirar a raiz quadrada e o índice que na verdade pode ser diferente de
dois não necessariamente uma raiz quadrada pode ser uma raiz cúbica uma raiz quarta e assim por diante basta colocar o índice aqui só que para essa essa função poder ser utilizada você precisa importar a biblioteca matemática dentro do programa é a mesma coisa para qualquer outra função além de funções nós temos também constantes por exemplo em matemática temos o pi que eu vou mostrar já já como usar que não é uma função é só um valor é um valor que tá já armazenado previamente armazenado na forma de um valor constante que não pode ser alterado
que você pode utilizar dentro dos seus programas então para visualizar a ajuda de qualquer função de qualquer biblioteca basta você expandir a biblioteca correspondente e acessar a função que você deseja algumas tem bastante a biblioteca de gráficos por exemplo tem um monte de constantes e funções definidas bom vamos ver exemplos então de uso das bibliotecas eu vou aqui pra tela principal do Portugal Studio vou criar um novo arquivo e vou vou rodar aqui quatro funçõe de quatro bibliotecas diferentes para isso eu preciso incluir as bibliotecas na minha aplicação como é que eu faço isso as
bibliotecas devem ser incluídas sempre nesta área entre o programa e a função início e devem ser sempre as primeiras instruções do programa então você não deve por exemplo declarar variáveis ou criar vetores e depois incluir a biblioteca não vai funcionar primeiro você inclui a biblioteca ou as bibliotecas necessárias e depois você vem com as variáveis constantes vetores matrizes etc então eu vou incluir aqui com a instrução inclua biblioteca a gente sempre vai trabalhar assim inclua biblioteca E aí você dá o nome da biblioteca por exemplo vamos supor que Eu queiro usar a biblioteca calendário eu
escrevo caalendário isso é suficiente pra gente usar a biblioteca calendário vou incluir uma outra biblioteca inclua biblioteca vamos supor que eu V usar a biblioteca matemática Então e o padrão é o mesmo para outras bibliotecas e se você quiser você pode simplesmente clicar aqui no painel de utilitários do lado direito na biblioteca desejada e o comando já vai ser incluído aqui automaticamente por exemplo biblioteca de texto eu clico na caixinha e aparece ali texto outra biblioteca de utilitários eu clico na caixinha e a biblioteca é inclusa aqui a ordem que você inclui as bibliotecas não
é importante o importante é que elas venham sempre antes da declaração de outras variáveis por exemplo eu vou usar também uma variável do tipo cadeia que eu vou chamar de nome em um dos exemplos que eu vou utilizar aqui e então eu declaro essa variável logo depois da definição das bibliotecas da inclusão delas Dá um enter aqui para separar e agora a gente vai começar utilizar essas bibliotecas eu vou começar mostrando uma constante que temos na biblioteca matemática tá então para isso eu vou usar o comando escreva e vou pedir para ele escrever na tela
o retorno de matemática ponto e olha só quando você escreve o nome da biblioteca e põe o pontinho aparece uma lista com definições com funções específicas que você você pode utilizar no caso eu vou escrever pi pi é uma constante então eu executo o programa e aparece aqui embaixo Olha que legal o valor de Pi então basta chamar matemática pon pi e eu tenho o valor de Pi para ser utilizado em cálculos por exemplo calcular a área de uma circunferência PR ao quadrado veja que eu tenho que escrever o nome da biblioteca pontinho e o
nome da Constante ou função não necessariamente eu preciso escrever tudo isso eu posso criar eases que são apelidos paraas bibliotecas para facilitar depois a digitação do código como é que eu faço isso aqui em cima na hora de incluir a biblioteca eu posso fazer o seguinte logo depois do nome da biblioteca eu dou um espaço dois sinais de menos e um sinal de maior uma setinha estilizada e aí eu coloco uma letrinha ou uma palavra ou um conjunto de letras por exemplo letra M minúscula Isso significa que dentro do meu programa principal a biblioteca matemática
será conhecida pela letra m de modo que eu posso substituir matemática pon pi por m. pi quando eu executo o programa ele mostra o pi do mesmo jeito e aí fica muito mais fácil digitar os códigos porque eles ficam mais simples vamos ver um exemplo agora com a biblioteca de texto eu vou pra linha de baixo Vou escrever uma mensagem barra n para pular a linha digite seu nome Beleza vou digitar meu nome o nome será Líder armazenado na variável nome que eu queria aqui em cima do tipo cadeia e depois eu vou pedir para
escrever o nome na tela Então escreva o nome que foi digitado vou dar um barra n aqui concatenado com a variável nome então se eu escrever o nome aqui se eu digitar o programa digito seu nome Fábio ele é Coado da mesma forma que eu digitei tá vendo Fábio agora vamos supor que eu quisesse ou precisasse que todas os caracteres estivessem em maiúsculas como é que eu faço para converter em maiúsculas bom eu poderia na verdade pedir pro usuário digitar tudo em maiúsculas mas ninguém garante que o usuário Vá fazer isso então eu posso usar
uma função da biblioteca texto para forçar o nome a ser exibido em maiúsculas como é que eu faço isso fazer assim ó em vez de simplesmente concatenar o nome do usuário aqui eu apago essa variável E aí eu vou concatenar com a minha biblioteca texto que aliás eu vou criar um alas para ela também ó t esse vai ser o Alias da minha biblioteca então eu vou concatenar com t ponto e aí eu vou escolher a função caixa caixa underline alta que é uma das funções disponíveis e dentro dos parênteses essa função ela vai receber
a variável ou o texto que é para deixar em caixa alta com maiúsculas no caso é o conteúdo da variável nome agora quando eu executo o programa prama digite seu nome mesmo que eu digite ele com minúsculas ele é exibido todo em maiúsculas Olha que Beleza vou comentar esse comandinho do Pi para ele não ficar aparecendo aí nos próximos exemplos tá agora eu vou fazer um outro exemplo utilizando a biblioteca de calendário então na biblioteca de calendário a gente tem funções para trabalhar com dias da semana meses do ano ou os anos e vamos supor
que eu precisasse numa aplicação ler o ano atual para utilizar por exemplo num de intervalo de datas ou alguma coisa do gênero então eu posso fazer o seguinte ó escreva vou dar barra [Música] n estamos no ano de ano D conceno com uma função da biblioteca calendário vou dar um apelido para ela como C se quiser escrever calendário por extens funciona do mesmo jeito Evidente mas eu quero trabalhar com c ponto E aí eu vou trabalhar com uma função chamada ano underline atual essa função você abre e fecha a parênteses não põe nada dentro ela
não recebe argumento então algumas funções não recebem argumentos outras recebem essa não recebe porque ela vai ler no sistema operacional o ano atual E vai retornar esse ano na forma de um número inteiro então fecho o parênteses do Escreva agora eu executo o programa escrevo meu nome de novo estamos no ano de 2021 Olha só Então esse ano foi lido do sistema a partir do uso de uma biblioteca Então como é que eu faria isso se eu não tivesse a biblioteca como é que eu acesso o sistema operacional da sua máquina leio a informação que
está ali armazenada de data e hora e trago para dentro do Programa Bem complexo isso bem difícil com a biblioteca é extremamente simples bom para finalizar eu vou utilizar agora a minha biblioteca de utilitários eu vou fazer o seguinte V pular uma linha aqui aqui eu vou colocar um codigo Zinho bem simples para gerar números de 1 a 10 então eu vou colocar aqui para inteiro i igual a 1 ol vou começar em zero quero começar em zero de 0 a 10 I menor ou igual a 10 e mais mais então se você já assistiu
o nosso vídeo sobre estruturas de repetição já sabe que isso aqui é um laço para que vai executar 10 vezes um comando e o comando que eu quero executar é Escreva o valor deixa eu consertar aqui escreva o valor da variável I concatenado com uma quebra de linha para ficar um valor em cada linha Beleza eu vou comentar todo esse código aqui em cima na verdade ó barra asterisco e aqui asterisco barra para não executar nada disso quero que apareça apenas isso aqui pra gente não se confundir então eu vou executar Esse comando ó vou
subir aqui um pouquinho até pra gente ver ele completo veja ele gerou os números de uma 10 instantaneamente é bem rápido né quase instantâneo Mas e se eu precisasse de uma temporização se eu precisasse que as instruções fossem executadas de tempos em tempos por exemplo a cada 5 segundos A cada 10 segundos a cada 1 segundo alguma coisa do gênero a gente tem uma função que faz isso aqui que está justamente aqui na biblioteca de utilitários vamos dar aqui um um Alias para ela vou chamá-la de U E aí logo após a função escreva eu
vou simplesmente chamar o ponto e a função essa primeira que apareceu aqui aguarde clique em aguarde e aí a gente tem um o parâmetro intervalo que é um número inteiro que representa em milissegundos o tempo no qual o programa Vai ficar pausado então o programa Vai pausar por exemplo 1000 milissegundos que equivale a 1 segundo então o programa vai escrever na tela o número Ah que tá na variável I vai esperar um segundo antes de rodar o loop e escrever o próximo número e assim se eu executar o programa você vê que ele coloca os
números um por vez de segundo em segundo queramos um temporizador aqui então bem tranquilo utilizar essa função da biblioteca de utilitários e veja que o uso dessa função já diferente a gente só chama a biblioteca a função Passamos um parâmetro ela executa uma função né ela não retorna um valor como é o caso de caixa alta por exemplo da biblioteca de texto que retorna O valor Com base no nome for ndo e também não é uma constante uma constante ip da biblioteca matemática beleza pessoal Então nesse vídeo eu mostrei como que a gente utiliza bibliotecas
no Portugal Stúdio que serão muito úteis pra gente estudar algoritmos mais complexos mais paraa frente por exemplo a gente vai usar muito a biblioteca de utilitários com a função aleatório nos nossos próximos algoritmos bom então Vamos lá gente vamos ver como gerar números aleatórios no Portugal Stúdio eu estou aqui com a interface do programa aberto e a primeira coisa que a gente vai fazer é clicar na ajuda vamos dar uma olhadinha na documentação do Portugal estúdio a geração de números aleatórios se dá por meio da inclusão de uma biblioteca então eu vou expandir as bibliotecas
e a biblioteca que a gente vai precisar é a biblioteca Util de utilitários expandindo aqui a gente vai ter a função sorteia que é justamente a função que permite gerar números aleatórios e aqui a gente tem a descrição de como funciona essa função sorteia ela é uma função que retorna um número inteiro então aqui a gente pode gerar números aleatórios inteiros e ela recebe com argumentos dois valores um número inteiro que é o valor mínimo e um número inteiro que é o valor máximo que são os limites da faixa de valores que poderão ser gerados
então um número aleatório entre o mínimo e o máximo vai ser sorteado Daí foi batizado como função sorteia e esse número vai ser retornado e agora vou mostrar como é que a gente usa isso aqui para gerar o número aleatório então eu volto aqui na tela do Portugal clico em novo arquivo e a gente precisa começar incluindo a biblioteca então simplesmente vou dar o comando inclua biblioteca Util de utilitários opcionalmente você pode usar um alas para essa biblioteca um apelido com este comandinho essa setinha estilizada e uma letrinha por exemplo a letrinha u indicando assim
que sempre que eu digitar o u aqui no progama principal estou me referindo a biblioteca de utilitários e opcionalmente é só clicar aqui em Util na caixinha e a biblioteca é incluída automaticamente então agora na função início do meu programa eu vou colocar uma mensagenzinha basicona do tipo gerar números aleatórios beleza e a gente vai gerar um número aleatório para começar então eu vou colocar o número aleatório vou colocar dentro de uma variável Então deixa eu criar uma variável do tipo inteiro que eu vou chamar de num essa variável vai receber o retorno da função
que gera o número aleatório E aí a gente vai escrever que num recebe u que é o nome da minha biblioteca ponto e aí já aparecem as funções disponíveis no caso eu quero a função sorteia então eu clico aqui em sorteia ou digito sorteia fica seu critério E aí nós temos dois parâmetros para preencher o valor mínimo e o valor máximo vamos supor que eu queira gerar um número aleatório entre 1 e 10 então eu coloco 1 dou um Tab e 10 legal ele vai gerar um número entre 1 e 10 aleatoriamente e vai colocar
na variável E aí eu posso mandar escrever na tela número gerado e concatenar com a variável beleza é isso aí que a gente precisava vamos executar o programa número gerado 2 se eu executar de novo se se executar de novo novo um se eu executar de novo oito e assim sucessivamente cada vez que eu clico aqui para gerar um número ele gera um número aleatório que não tem como prevê pode ser um número que já foi sorteado antes ou um número totalmente diferente é imprevisível por isso que a gente chama de número aleatório então gerar
um número aleatório no Portugal studo é muito fácil e muito útil sem trocadilhos porque assim a gente consegue por exemplo popular um vetor de inúmeras posições ou matrizes n para uso e em programas mais complexos por exemplo vamos supor que eu queira gerar vários números aleatórios de uma vez vou usar um laço para para isso para escrever o número na tela então eu vou fazer o seguinte eu vou apagar essa instrução vou manter essa daqui e vou criar um laço para para inteiro i igual a vamos supor um começando em um e menor ou igual
a 100 quero gerar 100 números aleatórios e mais mais então agora o que que eu faço eu vou gerar um número aleatório num recebe de novo o ponto sorteia posso digitar direto não preciso preencher os valores se eu quiser é só lembrar de colocar o valor mínimo aqui vírgula e o valor máximo aqui então por exemplo número entre 1 e 200 beleza aí eu quero escrever na tela o número gerado só que vou escrever 100 números porque vou gerar esse 100 números então recorto e colo esse código aqui mando executar E aí ele vai gerar
Olha só 100 números para mim aí Claro a gente precisa fazer um ajuste aqui porque o código ficou todo encavalado como é que a gente faz isso eu vou tirar a frase número gerado legal e vou concatenar o num com uma quebra de linha simplesmente isso quero que apareçam só os números sem a frase número gerado E aí quando executo eles aparecem numa lista Beleza então a gente você pode executar da forma que você precisar estão aí 100 números que foram gerados aleatoriamente não tem como prever Qual é o número que vai ser gerado na
sequência podem ter repetições é possível que haja repetições dos números para evitar repetições você precisa criar um algoritmo Zinho que verifique se o número já foi gerado ou não e peça para gerar outro número caso já tenha sido gerado isso é algo que a gente vai aprender a fazer nas aulas sobre vetores Então é isso nesse vídeo s curto eu mostrei como gerar números aleatórios no Portugal Studio que vai ser bastante útil pra gente aprender a trabalhar com outros tipos de algoritmos Olá pessoal aqui é o Fábio da balson Treinamentos e neste vídeo damos continuidade
ao nosso curso de lógica de programação com Portugal Stúdio Hoje vamos falar sobre estruturas de repetição as estruturas de repetição são extremamente importantes no desenvolvimento de aplicações em programação em geral e hoje eu vou falar especificamente sobre a estrutura enquanto e nos próximos vídeos Vamos explorar outras estruturas como por exemplo a estrutura para e o encadeamento de estruturas de repetição Então vamos estudar agora a estrutura enquanto Em lógica de programação bem gente então A ideia é seguinte é muito comum em programação a gente precisar repetir trechos de códigos partes do programa diversas vezes em sequência
para isso a gente vai usar uma estrutura chamada de laço de repetição ou loop em inglês que vai efetuar a repetição do código quantas vezes forem necessárias pra gente sem que a gente precise repetir o código em si dentro do nosso programa então esses Loops ou laços de repetição eles podem ser criados com diversos tipos de estruturas sendo que uma das estruturas mais comuns é a estrutura enquanto que é o objeto deste vídeo como é que funciona a estrutura enquanto ela vai realizar um teste lógico uma pergunta um teste de condição no início do loop
no início do laço e e sempre que esse teste retornar o valor verdadeiro um bloco de comandos associado a estrutura enquanto vai ser executado após cada execução desse bloco de código o teste é realizado novamente ou seja a pergunta é feita novamente e se ela retornar verdadeiro o bloco é executado outra vez e isso continua indefinidamente Até que a pergunta ou teste lógico retorne falso nesse momento a estrutura enquanto ela é encerrada então o laço Para de repetir o bloco de código e o programa volta pro fluxo normal dele A ideia é mais ou menos
como você tá vendo aqui nesse fluxograma a gente testa uma condição que é uma pergunta se a condição retornar verdadeiro executamos um bloco de instruções e um loop volta pra condição e você testa essa condição de novo se retornar verdadeiro executa de novo as instruções e assim sucessivamente até o momento em que essa condição retorna falso quando ela retornar falso as instruções não serão mais executadas e o laço é encerrado e é importante que você programador forneça uma maneira dessa condição Em algum momento retornar falso porque se a condição nunca retornar falso você fica preso
dentro desse loop o que geralmente é um erro de programação que a gente chama de Loop Infinito você fica preso aqui o programa não faz mais nada pode chegar mesmo até a travar o programa e você ter que encerrá-lo então de alguma forma você tem que prover algum tipo de instrução aqui dentro para fazer essa condição retornar falso em algum momento como é que a gente programa O Enquanto aqui no portugol a sintasse é bem simples palavra enquanto condição que é o teste que é uma pergunta na verdade eh retornando verdadeiro ou falso quando ela
retornar verdadeiro as instruções dentro desse bloco delimitado pela chave serão executadas e sempre em loop vão ser constantemente executadas Até que a condição retorne falso aí essas instruções elas são ignoradas o loop é encerrado e o programa ele volta ao seu fluxo normal executando as instruções fora das chaves vejamos então um exemplo pra gente começar a programar com a estrutura enquanto vou criar um programinha que imprime na tela os números de 1 a 10 usando a estrutura enquanto algo mais ou menos assim enquanto o número for menor ou igual a 10 escrevo o número na
tela e aí eu vou usar sempre uma instrução de atribuição pra gente incrementar esse número para que em algum momento esse teste condicional aqui retorne falso senão os números ficaram sendo eh escritos na tela eternamente Então vamos fazer isso aqui no Portugal como eu quero escrever números eu vou usar uma variável do tipo inteiro que eu vou chamar de n dentro da minha função início eu vou inicializar essa variável com o valor um já que eu quero escrever os números de 1 a 10 então eu digo que ele começa com um E aí usando a
função enquanto enquanto enquanto o qu enquanto o número for menor ou igual a 10 Essa é a minha condição de teste faça faça o quê Escreva na tela o valor que está dentro da variável num E aí eu vou concatenar também com uma quebra de linha para ficar um número embaixo do outro beleza só isso aqui então se o número é um ele vai fazer esse teste lógico perguntando número é menor ou igual a 10 sim um é menor ou igual 10 verdadeiro então ele vai escrever o número na tela mas veja aqui se eu
fizer o código desta forma o número sempre vai ser um então isso aqui sempre vai retornar verdadeiro e ele sempre vai escrever o número na tela e nunca mais vai parar a não ser que você Feche o programa então eu vou usar aqui uma instrução de incremento Olha aquele legal num mais mais essa instrução aqui equivale a num recebe num mais um com esta instrução ã o valor da variável não vai ser incrementada ou seja Valia um passa a valer dois vai ter fazer o teste lógico na sequência perguntando se n é menor ou igual
a 10 verdadeiro e escreve o número dois na tela depois incrementa para três faz o teste lógico escreve na tela e assim sucessivamente até chegar em 10 chegou em 10 ele vai testar vai ver que 10 ainda é igual né a 10 e vai escrever pela última vez o número na tela no próximo incremento no 1 passa a valer 11 e 11 não é menor ou igual a 10 então o teste lógico retorna falso e encerra o loop então executando tá aí números de 1 até 10 você tá vendo aqui embaixo no cantinho de 1
até 10 foram gerados e executados com sucesso se eu colocasse em vez de 10 100 cliquez inho e ele gera os números Olha só de 1 até 100 repetiu 100 vezes essas instruções em questão de um par de segundos muito rápido e muito útil como você tá vendo vejamos um segundo exemplo agora eu quero escrever um algoritmo que pede pro usuário digitar o nome dele e vai escrever na tela a frase bem-vindo e o nome do usuário na frente mas não é para um usuário só é para um número indeterminado de usuários não sei quantos
usuários Vão colocar o nome ali então é uma estrutura de repetição porque ele tem que ficar perguntando o nome do usuário escrevendo a mensagem na tela e encerrar o programa A gente vai dizer se o usuário pressionar a tecla x especificamente o progama encerrado na prtica o loop vai ser encerado então vamos fazer isto eu comear criando uma variável do tipo cadeia aqui emima paraar o nome do usuário string então cadeia nome e aí aqui dentro eu vou apagar tudo isso aqui vou escrever o programinha assim primeiro peço uma mensagem coloca uma mensagem do tipo
digite seu nome ou x para parar beleza aí o usuário vai digitar o nome o programa Vai ler o nome do usuário e colocar na variável nome beleza aí eu venho com a estrutura enquanto enquanto o qu enquanto o nome for diferente de x que é a nossa condição de parada faça Escreva na tela a mensagem que eu quero que é bemvindo bem-vindo e concatenou com a minha variável nome Olha que legal beleza e aí embaixo Eu repito isso aqui escreva digite seu nome ou x para parar para que ele peça mais uma vez o
nome do usuário certo então tá aí programinha vai ficar pedindo para pro usuário digitar o nome dele vai vai ler esse nome e escrever a mensagem quando ele digitar x esse teste aqui vai retornar falso X é diferente de X não falso aí ele vai sair do loop enquanto E aí vai escrever essa mensagem que eu vou colocar fora do laço Até logo beleza vamos testar então executo o programa digite seu nome ou x para parar Então coloco aqui Fábio enter bem-vindo Fábio digite seu nome o X para parar pela Maria enter bem-vindo Maria digite
seu nome ou x para parar se eu digitar x Até logo e ele finaliza o programa como previsto legal aqui é interessante colocar como a gente viu ficou encavalado Então antes do digit seu nome a gente põe um barra n uma quebrinha de linha aí fica mais formatador coloca o Fábio beleza fica um em cada linha Ana um em cada linha x ele para note que nesse PR programa eu precisei colocar fora do laç enquanto a mensagem pedindo pro usuário digitar o nome e li Esse nome que é pra gente poder fazer o teste pela
primeira vez e então entrar no bloco aqui dentro do bloco Eu repito esse mesmo código mas tem uma outra forma um pouco mais elegante de fazer isso então vou refazer esse mesmo programinha Agora usando enquanto só que de uma forma um pouquinho mais interessante eu vou apagar essas duas mensagens daqui e vou apagar na verdade tudo que tá dentro do enquanto e vou apagar também essa condição deixar só essa estrutura eu vou continuar usando essa variável nome para pegar o nome do usuário só que agora eu vou dizer o seguinte eu não vou colocar nada
aqui fora da do laço enquanto tá o que eu vou fazer é o seguinte enquanto verdadeiro eu vou usar o valor lógico verdadeiro deixa eu colocar isso aqui um pouquinho para cá para ficar mais legível Beleza então enquanto verdadeiro enquanto o valor for verdadeiro esse Escreva aí eu peço pro usuário digitar o nome dele digite seu nome ou x para sair beleza e aí eu leio o nome do usuário colocando na variável nome feito isso dentro da variável nome vai ter o nome que o usuário digitou certo como é que eu vou colocar minha condição
de saída agora eu não tô testando mais a variável nome aqui dentro simplesmente coloquei verdadeiro e você sabe que quando a condição ali dentro é verdadeira tem o valor l verdadeiro loop ele fica repetindo infinitamente então aqui eu vou fazer o seguinte eu vou usar um condicional c e vou dizer que se nome for igual a x que é a nossa condição de parada continua sendo a mesma então execute a instrução pare nós temos essa instrução aqui no Portugal e nas linguagens de programação também nas linguagens de programação aparece como Break geralmente e essa instrução
ela simplesmente para a execução do loop externo do loop onde ela está inserida Então ela tá inserida dentro desse loop desse laço enquanto ela para a execução transformando esse verdadeiro em falso então isso aqui vai fazer com que o loop seja encerrado abruptamente neste exato ponto se por acaso o nome não for igual a x aí sim eu peço para escrever na tela a mensagem final que eu quero é que é bem-vindo bem-vindo concatenando com o nome e aqui o posso concatenar com uma quebra de linha para ficar formatados olha que beleza tranquilo então tá
aí e o escreva Até logo eu deixo fora do laço Então veja que ficou um pouco mais elegante o meu código eu não preciso ficar repetindo essa mesma instrução aqui fora para capturar o nome eu uso o valor lógico verdadeiro direto dentro do enquanto e isso fica repetindo infinitamente mas este C que está aqui dentro é uma condição de parada se o nome for igual a x ele para vamos testar executo digite seu nome ou x para sair Fábio bem-vindo Fábio digite seu nome ou x para sair Mônica bem-vindo Mônica digite seu nome o X
para sair x Até logo encerrou quando eu digitei X Ele executou a instrução para e saiu imediatamente do loop sem Executar a próxima instrução ou o próximo bloco de instruções Beleza então essa é uma forma da gente usar o laço enquanto também uma forma um pouquinho mais elegante inclusive então eu mostrei nesse vídeo que que são as estruturas de repetição como funciona a estrutura enquanto de forma básica aqui no Portugal Studio Em lógica de programação e mostrei alguns exemplos práticos do uso dessa estrutura que eu espero que você Tente repetir aí no seu computador existem
outras estruturas de repetição no próximo vídeo a gente vai falar sobre a estrutura para que é muito utilizada também tão importante quanto a estrutura enquanto e posteriormente a gente vai misturar as duas estruturas vamos fazer encadeamento de estruturas enquanto dentro de enquanto para dentro de para e depois o para dentro de enquanto e vice-versa dando continuidade então ao nosso curso de lógica de programação com Portugal Stúdio vamos falar hoje sobre a estrutura de repetição para que é mais uma estrutura de repetição que a gente costuma utilizar bastante Em lógica no vídeo passado falamos sobre a
estrutura enquanto e agora vamos complementar com a segunda estrutura extremamente importante tão importante quanto a estrutura enquanto com a estrutura para Podemos construir estruturas de loop para casos onde a gente sabe de antemão Quantas vezes o bloco de códigos vai ser repetido ou seja o número de repetições que devem ser realizadas por exemplo a gente já sabe de antemão que o laço tem que se repetir 10 15 20 ou 1000 vezes que seja a gente utiliza a estrutura para nesses casos caso a gente não saiba previamente a quantidade de repetições que serão necessárias a gente
pode usar a estrutura enquanto nesse caso a sintaxe da estrutura para é bem simples só que um pouquinho diferente do que a gente viu pra estrutura enquanto usamos a palavrinha para abrimos parênteses E aí a gente vai trabalhar com uma variável contadora essa variável contadora ela é inicializada para um valor de início a gente determina qual vai ser o valor de Fim dessa variável então ela vai variar do valor inicial até o final e a gente determina o incremento ou seja de quanto em quanto essa variável ela vai mudar do início até chegar no fim
geralmente o incremento é mais um de um em um pra gente fazer a contagem de um em um item a contagem ela pode ser no sentido direto crescente ou no sentido inverso decrescente abrimos Chaves e aqui dentro do bloco de Chaves a gente coloca as instruções que vão ser repetidas o número de vezes que a gente configurou aqui em cima na inicialização do para ou seja basicamente o que nós fazemos é isso inicializando uma variável essa variável vai ser incrementada até chegar num valor final e enquanto isso ocorre as instruções são executadas para cada um
dos incrementos e no final o laço de repetição é interrompido e o programa Segue o seu fluxo normal de execução vejamos um exemplo quero imprimir na tela os números de 1 a 10 que nós fizemos no vídeo passado por enquanto só que dessa vez usando a estrutura de repetição para então quero exibir esses números aqui de 1 a 10 como é que a gente faz isso basicamente O que teremos de fazer é isso aqui inicializar um contador com o valor um variar esse contador em incrementos de um até chegar em 10 e escrever o valor
desse contador na tela contador ele vai variando de 1 até 10 a gente escreve o valor dele que é o que a gente deseja Então vamos codificar isso no Portugal vou criar um novo arquivo beleza bom a gente vai fazer o seguinte então eu vou criar uma variável do tipo inteiro que eu vou chamar de contte vai ser minha variável contadora para controlar o nosso laço para e aqui dentro da função início eu simplesmente vou colocar o laço para E aí eu vou inicializar esse laço então eu digo que a minha variável conte ela recebe
o valor um que vai ser o valor inicial separo as partes da configuração com ponto e vírgula aí eu vou dizer qual que é o o limite final até onde vai essa Contagem Então eu quero que vem ocorre enquanto conte for menor ou igual a 10 porque vai de um até 10 incluindo o 10 ponto e vírgula e o meu incremento como é que eu vou incrementar essa variável eu quero incrementar de um em um então eu faço conte mais mais se eu quisesse fazer O incremento negativo bastaria colocar conte menos menos fecho o parêntese
abro a chave e aí a gente codifica aqui dentro as instruções que vão ser executadas pro contador indo de um até 10 de um em um no caso eu quero simplesmente escrever na tela o valor dessa variável cont que já tem os números que eu quero exibir e eu vou concatenar também uma quebra de linha por exemplo para ficar um número em cada linha isso aqui é opcional você pode colocar os números todos na mesma linha se assim eu desejar e tranquilo tá feita a configuração do nosso laço para eu vou executar esse laço agora
beleza você vê aqui embaixo no conso Olhe que os números de 1 a 10 foram gerados ó 1 2 3 4 5 6 7 8 9 10 e o programa foi finalizado com sucesso então geramos os números de 1 até 10 Se eu quisesse fazer o inverso poderia fazer o contador inicializado em 10 indo até um aí no caso maior ou igual a 1 e faço o meu contador menos menos utilizo esse operador de decremento se eu executar Esse comando aí eu tenho a contagem inversa de 10 até 1 então o nosso laço par ele
pode fazer uma contagem crescente ou decrescente e vai executar o bloco de códigos que tá aqui dentro o número de vezes que você configurou aqui vejamos um segundo exemplo agora um pouquinho mais interessante vamos escrever um algoritmo que gere cinco números para você jogar na loteria e mostre na tela esses cinco números eu quero que os números sejam gerados aleatoriamente de forma automática e aleatória e quero que eles estejam no intervalo de um a 50 números para você jogar na loteria mesmo então a gente vai utilizar a biblioteca de números aleatórios que eu já mostrei
Como trabalhar em outro vídeo só que dentro de um laço para para gerar esses números cinco vezes então vamos lá eu vou apagar tudo isso que eu fiz aqui para começar o programinha do zero Beleza então o que que eu preciso para gerar os números aleatoriamente você vai lembrar que eu preciso colocar a biblioteca de utilitários do Portugal Studio Então a gente vai incluir essa biblioteca com o comando inclua biblioteca e o nome da biblioteca é útil de utilitários e vou criar uma variável do tipo inteiro que eu vou chamar de n para fazer o
controle das repetições com n eu vou controlar Quantas vezes o meu código vai ser repetido e só isso agora no início dentro da minha função início eu vou colocar uma mensagem na tela por exemplo gerar colocar o g maiúsculo nmeros da loteria pontinho Beleza vou colocar um barra n também para ter uma quebra de linha Então vai aparecer essa mensagem na tela vou gerar os números da loteria quero gerar cinco números então eu vou executar cinco vezes a função que utiliza a biblioteca Util para gerar um número aleatório eu sei exatamente quantas vezes eu tenho
que gerar esses números então eu uso um laço para para isso vou configurar ele da seguinte forma eu vou usar aquela variável n inicializada em um ponto e vírgula essa variável ela vai variar de 1 até 5 então eu faço enquanto n for menor ou igual a 5 de um a c são cinco vezes desde que o incremento seja de um em um então eu coloco o incremento de um em um com n mais mais fecho o parêntese tranquilo abro chave e agora eu codifico aqui o código que vai ser executado cinco vezes pelo laço
para no caso eu quero escrever na tela o retorno do método sorteia da biblioteca útil então eu escrevo útil de utilitários ponto e aí o método é o sorteia ele até mostra aqui para mim já o método sorteia então sorteia valor mínimo um valor máximo 50 então ele vai gerar números entre 1 e 50 na dúvida sobre Como funciona essa biblioteca assista o nosso vídeo sobre bibliotecas E também o vídeo sobre números aleatórios no Portugal Stúdio tá aqui no canal gente bom eu não quero que os números fiquem encavalados então eu vou concatenar isso com
um espaço dessa vez eu quero todos os números na mesma linha em vez de um embaixo do outro e fecha o parêntese da função escreva só isso então esta linha de código vai ser executada cinco vezes de N1 até 5 pelo nosso laço p e vai gerar os números aleatoriamente vamos executar para ver o resultado então clico aqui em Play beleza gerar números da da loteria cinco números gerados entre 1 e 50 49 3 32 46 26 se eu clico de novo ele vai gerar outros cinco números diferentes sempre números diferentes pode acontecer de números
virem repetidos como vieram aqui como é que a gente trata Isso você precisa colocar aqui dentro uma variável de controle para verificar se o número gerado já já foi gerado ou não e descartá-lo Em caso positivo e isso pode ficar como um desafio para você fazer será que você consegue evitar que um número repetido seja exibido como aconteceu aqui é perfeitamente possível não é tão complicado mas dá um trabalhinho em escrever esse código fica como desafio para vocês tranquilo Além disso eu posso utilizar no lugar desses números aqui dentro variáveis então eu poderia pedir pro
usuário por exemplo dizer quantas vezes ou quantos números ele quer que sejam gerados aí eu capturo esse valor numa variável e utilizo a variável aqui então vamos supor que eu queira fazer isso eu vou criar uma nova variável eu vou chamar de vezes a variável E aí eu escrevo aqui na tela a mensagem digite quantos números deseja gerar beleza e aí o eu vou ler o que o usuário vai digitar na variável vezes Então aqui tem o número de vezes que o laço para vai rodar Então em vez de colocar o número cinco aqui eu
simplesmente coloco a variável vezes então ele vai rodar de um até vezes um número qualquer que o usuário vai vai configurar sempre indo de um em um rodando o programa digite quantos números deseja gerar vamos supor que eu queira 10 números dou enter aí ele gera 10 números como você tá vendo aqui ó 3 6 9 10 números perfeito então a gente consegue controlar o laço para utilizando variáveis também não só variável de controle em si mas também os próprios valores passados podem estar dentro de variáveis o que dá um nível ainda maior de controle
pro número de repetições tranquilo gente Então nesse vídeo eu apresentei para vocês a estrutura de repetição para Em lógica de programação no próximo vídeo eu vou mostrar como é que a gente faz uma repetição encadeada ou seja um um laço para dentro de outro laço para ou um enquanto dentro de um enquanto ou ainda posso mesclar os dois tipos de estruturas para dentro de enquanto enquanto dentro de para Por exemplo fala pessoal aqui é o Fábio da boson treinamentos nesse vídeo damos continuidade ao nosso curso de lógica de programação com Portugal estúdio vamos continuar estudando
as estruturas de repetição falando hoje sobre a repetição encadeada então nas últimas aulas a gente estudou as estruturas enquanto e para mostrei Como utilizar essas estruturas para repetir trechos de código e agora vou mostrar como combinar duas ou mais estruturas de repetição em um único trecho de código ou seja como utilizar o encadeamento de estruturas de repetição então a gente pode ter as estruturas aninhadas ou seja uma estrutura de repetição qualquer executada dentro de uma outra estrutura por exemplo um laço enquanto dentro do enquanto ou enquanto dentro do para ou vice--versa para em para para
e enquanto a repetição encadeada seria mais ou menos isso aqui eu tenho aqui do lado direito um código basicão utilizando a estrutura para no qual eu utilizo um laço externo variável la ext e um laço interno variável la int nesse exemplo aqui eu vou fazer um laço que conta de um até três ou seja o laço externo vai repetir três vezes e o Interno também três vezes para cada iteração do externo o laço interno repete três vezes então os comandos internos são repetidos três vezes para cada iteração dos Comandos externos você pode ou não ter
comandos aqui tá depende da da necessidade do seu programa Então o que a gente vai ter mais ou menos isso aqui a gente tem uma primeira iteração do laço externo e aí sequencialmente a gente tem as iterações internas depois a iteração externa as internas de novo dentro da segunda interação e na terceira e última interação externa os três laços internos novamente ocorrendo E aí os dois laços de repetição finalizam e você para e você prossegue com o fluxo normal de execução do programa Então essa é a ideia da gente ter uma repetição encadeada e você
pode ter mais de um nível disso eu poderia ter para essas repetições internas outros níveis evidentemente acrescentando mais complexidade ao nosso algoritmo mas eh esse uso de estruturas de repetição em adas permite que a gente crie algoritmos complexos e de bastante utilidade vamos ver alguns exemplos agora de algoritmos que utilizam esse tipo de repetição alinhada lá no Portugal Studio eu vou criar aqui um algoritmo simples na verdade não é tão simples assim porque começa a ficar mais complicadinho quando a gente começa a encadear as estruturas Mas de qualquer forma é um algoritmo pequeno que vai
utilizar duas variáveis contadoras que eu vou criar aqui em cima do tipo inteiro então eu vou chamar de inteiro eu vou chamar de Conte a e conte B essas minhas variáveis duas variáveis contadoras uma para estruturar de repetição a e outra para b e eu vou utilizar laços para aninhados ou encadeados né são sinônimos para fazer contagens então eu vou criar um laço externo usando para Conte a Iniciando em um eu quero que ess laço seja executado cinco vezes então enquanto Conte a for menor ou igual a 5 e claro eu vou utilizar o operador
de incremento beleza abro a chave e o que que vai acontecer aqui então para cada uma das execuções desse laço externo eu quero que uma mensagem seja escrita na tela Então escreva E aí eu vou escrever assim rodada espaço e vou concatenar com o valor do contador pra gente saber em que em que iteração exatamente que a gente está E aí eu vou colocar uma quebra de linha também que eu quero uma por linha certo beleza e agora eu vou encadear outra estrutura de repetição eu vou colocar outro para aqui dentro esse para ele vai
usar o outro contador o cont B também Iniciando em um e também executando cinco vezes então cont B B menor ou igual a 5 de novo então enquanto ele for menor ou igual a 5 ele vai executar alguma coisa E aí cont B op b maiúsculo mais mais legal o que que esse laço interno vai fazer ele também vai escrever na tela um valor Então [Música] escreva a mensagem valor encadeada com o valor da variável B E aí também quero um embaixo do outro vamos supor barra n Beleza então o que vai acontecer aqui é
o seguinte para cada iteração desse laço externo O interno vai ser executado cinco vezes então ele vai executar cinco vezes isso aqui mostrando os cinco valores de conte B depois vai incrementar o externo mostrando o valor de Conte a e executar de novo cinco vezes o interno e assim sucessivamente até que o laço externo finalize o externo é o que controla toda a execução então a estrutura só finaliza quando o laço externo terminar beleza vamos executar para ver o que acontece Então olha só aqui embaixo a gente tem rodada um laço externo e os valores
1 2 3 4 e 5 laço interno Terminou as iterações internas incremento o laço externo rodada dois e aí os valores 1 2 3 4 C veja que eu coloquei um espaço aqui antes do valor para ficar mais legível aqui o resultado depois a rodada três laço externo valores de 1 a c rodada quatro e por último rodada cinco perfeito Era exatamente o que eu queria fazer beleza gente muito bem então eu mostrei o encadeamento de um laço para dentro de outro laço para a gente também pode misturar os tipos de Laços eu não vou
mostrar todos os tipos de encadeamentos porque senão fica muito grande o vídeo e é tudo meio parecido na verdade mas eu vou mostrar o encadeamento agora de um enquanto compara então eu vou eu vou apagar tudo que eu fiz aqui para começar do zero explicar passo a passo apagar até as variáveis e vou criar tudo de novo agora eu quero eu quero um programinha que pergunte pro usuário quantos números ele quer que sejam gerados automaticamente e o programinha vai gerar automaticamente a quantidade de números que o usuário pediu por exemplo se o usuário quiser 10
números o programa gera 10 números automaticamente 10 números aleatórios se ele quer três números vai gerar três números e assim por diante então se você assistiu o nosso vídeo aqui do canal sobre números aleatórios você vai lembrar que nós temos que incluir uma biblioteca especial para para fazer a geração de números aleatórios que é a biblioteca de utilitários útil é o primeiro comando que a gente põe aqui sempre E aí eu vou declarar uma variável para Contagem que vai ser do tipo inteiro eu vou chamar essa variável de conte apenas vou usar só uma variável
de Contagem porque a variável de contagem é usada no laço par eu vou ter só um para o para vai estar dentro do enquanto mas eu também vou precisar de uma outra variável que vai ser a variável para determinar a quantidade de vezes que o laço vai rodar que é o usuário que vai informar essa variável será variável quan vou chamar de quant de quantidade então duas variáveis do tipo inteiro beleza vamos programar então a função principal do programa eu começo escrevendo uma mensagem na tela pedindo pro usuário digitar um valor qualquer E aqui nessa
função escreva eu vou colocar uma mensagem para o usuário dizendo que para ele sair do programa programa basta ele teclar um valor por exemplo zero então se ele não quiser nenhuma repetição el não quiser gerar nenhum número sai do programa então zero beleza formado pro usuário e agora eu venho com meu laço enquanto então eu faço um Enquanto Aqui eu vou usar aquela técnica do verdadeiro enquanto o valor for verdadeiro ou seja tô gerando um laço infinito aqui vai ficar rodando esse laço diversas vezes abro a minha chave e dentro do enquanto eu coloco uma
mensagem escreva alguma coisa do tipo quantos números deseja gerar E aí eu leio o valor que o usuário vai digitar e coloco na minha variável quant legal ali dentro vai ter o número de de de valores que o usuário quer gerar beleza logo após ler essa variável já sabemos a quantidade de vezes que o programa vai rodar aí eu vou colocar minha condição de parada então se a quantidade escolhida for igual a zero significa que o usuário não quer executar uma vez mais o programa então eu chamo a instrução pare e o pare vai sair
do laço enquanto finalizando a estrutura toda agora se quantidade não for igual a zero eu chamo o laço interno e aí encadeamento de laço de repetição eu vou fazer aqui para contador Iniciando em um enquanto o contador for menor ou igual a quantidade que o usuário escolheu então não põe o número direto põ a variável que tem o valor e incremento o meu contador beleza configurei então o nosso laço para rodando de um até a quantidade o que que vai acontecer nesse caso vou gerar os números aleatórios neste laço interno então com a função escreve
eu mando escrever na tela o retorno da função Util pon sorteia que você deve lembrar lá do vídeo de números aleatórios e vamos supor que eu queira sortear o número entre 1 e 100 por exemplo beleza um valor entre 1 e 100 vai ser gerado tá e fecho aqui esse parêntese Tranquilo então esse laço de repetição tá encadeado dentro do enquanto junto com outras estruturas normalmente a gente vai acabar tendo outras estruturas também vou executar o programa para sair do programa tecle zero quantos números deseja gerar vamos supor que eu quero gerar três números aqui
ele gerou os três números e aí ele volta quantos números deseja gerar vamos supor que eu não quero gerar mais nada zero programa finalizado bom agora que o programa tá funcionando direitinho a gente só faz a Perfumaria né a gente dá uma ajustadas mensagens por exemplo aqui precisa colocar um barra n quantos números quer gerar aqui a gente precisa colocar um espaço e também é bom colocar um barra n aqui no comecinho assim ele vai mudar de linha sempre que a gente fori executar o programa e ele fica mais legível dessa forma então quero gerar
oito números beleza gerou oito números aqui e pergunta de novo quantos eu quero gerar tá aqui na parte de baixo da tela zero não gera mais nada beleza os números eles estão todos grudados então o que que a gente precisa fazer para resolver isso aqui basta a gente concatenar isso aqui com um espaço se você quiser os números na mesma linha tá E aí é só gerar de novo deixa eu tirar esse barra ainda aqui ficou muito para baixo quantos números quer gerar seis tá aí seis números gerados tá e assim por diante beleza assim
você vai gerando os números Quantos você precisar até zerar e finalizar o programa Então mostrei nesse vídeo como a gente pode trabalhar com um laço de repetição dentro de outro laço seja um para dentro de um para um para dentro de enquanto e evidentemente dá pra gente fazer enquanto dentro de para e enquanto dentro de enquant também de acordo com a necessidade do seu progama e de posse desses conhecimentos sobre estruturas de repetição e condicionais nos próximos vídeos a gente começa a estudar as estruturas de dados em lógica de programação comase aos arrays de uma
e duas dimensões o que a gente costuma chamar de vetores e matrizes prosseguindo com o nosso curso de lógica de programação faremos Uma Breve introdução às estruturas de dados que que são estruturas de dados são formas de armazenamento e organização dos dados na memória do computador Para quê Para que eles possam ser usados de uma forma mais eficiente a gente usa as estruturas de dados em muitos mas muitos tipos de aplicações algumas delas são bem especializadas inclusive orientadas para tarefa bem específicas e outras estruturas de dados são de uso bem geral e inclusive elas são
usadas para gerar ou para compor outras estruturas de dados que são mais complexas até o momento a gente tem armazenado dados na memória do computador apenas usando variáveis e às vezes constantes agora a gente vai ver que é possível a gente armazenar dados complexos utilizando essas estruturas de dados Então em vez de armazenar apenas um valorzinho um dado um numerozinho por exemplo dentro de uma var variável a gente consegue armazenar conjuntos de valores por exemplo E assim a gente pode definir uma estrutura de dados como sendo um tipo de dado composto e a gente vai
classificar essas estruturas em dois grandes tipos as estruturas de dados homogêneas e as heterogêneas E isso tem a ver com o tipo de dado primitivo que elas contém dado primitivo são aqueles tipos que a gente estudou no comecinho do curso inteiro real caracter cadeia lógico são os tipos de dados mais simples e uma estrutura de dados homogênea ela somente permite que você grave dentro dela dados do mesmo tipo Ou seja todos inteiros ou todos reais ou todos lógicos por exemplo já uma estrutura de dados heterogênea permite a mistura dos tipos de dados então eu posso
ter na mesma estrutura um dado do tipo inteiro um tipo real uma cadeia um caract e assim por diante Quais são as estruturas de dados mais comuns são os arrays listas filas pilhas árvores e hashes e existem outras além dessas algumas São relativamente simples como os arrays que a gente vai estudar neste curso e outras são mais complexas como as filas as pilhas as árvores por exemplo que na verdade você vai estudar num curso de ciência da computação ou de análise de sistemas lá na faculdade aqui no nosso curso de lógica de programação o que
nos interessa são os arrays que são estruturas de dados muito importantes muito úteis e que podem inclusive ser usadas para implementar as outras estruturas que estão listadas E como você tá vendo aqui na descrição os arrays eles podem ser vetores matrizes ou ainda cubos então o que que é um Array Vamos definir o Array que é o que a gente vai estudar aqui no curso é uma estrutura homogênea Ou seja somente permite dados do mesmo tipo que vai representar um conjunto de elementos Então você vai ter mais de um dado dentro do Array a gente
consegue acessar os dados no Array de forma individual eles então são dados separados usando para isso uma posição de índice que é um número uma espécie de endereço assim como num prédio de apartamentos a gente vai ter números para identificar os apartamentos individuais apesar de todos os apartamentos pertencerem ao mesmo prédio num Array a gente vai ter algo semelhante você vai ter várias posições para gravar dados mas todas elas pertencem ao mesmo Array só que elas são distintas entre si no geral os arrays T tamanho fixo aqui no curso a gente vai trabalhar com um
Array genérico padrão comum que tem tamanho fixo ou seja o número de posições ou de elementos que ele suporta é fixo uma vez definido você não pode ter mais elementos do que aquilo para que que servem os arrays eles TM inúmeras aplicações por exemplo aqui algumas aplicações bem simplórias conter valores de um experimento aou simulação em intervalos de tempo vamos supor que eu colete dados em intervalos de tempo e quero armazenar esses dados para análise posterior posso gravar no Array para não usar um monte de variáveis distintas guardar sinais gravados por instrumentos de medição pixels
de uma imagem dados 3D então a gente pode usar arrays para aplicações em duas dimensões ou em três dimensões por exemplo a gente usa arrays para transferir dados por exemplo entre uma aplicação cliente e uma aplicação servidor via web é muito comum esse uso de arrays linguagens como PHP implementam arrays e que são muito importantes e bastante direcionados para essa tarefa e veremos algumas Outras aplicações dos arrays também durante as próximas aulas bom quais são os tipos de Array a gente tem arrays de uma duas ou três dimensões a dimensão significa a forma na qual
os dados estão estruturados dentro desse Array seja na forma de uma fila de dados na forma de uma tabela de dados ou na forma tridimensional então o Array de uma dimensão que se parece mais ou menos com a sequência de dados a gente vai chamar chamar de Vetor o Array de duas dimensões que se parece mais ou menos com uma tabela a gente vai chamar de matriz e o Array de três dimensões que se parece mais ou menos com um cubo a gente vai chamar de cubo e aqui no curso a gente vai estudar os
dois primeiros os vetores e as matrizes que o que a gente realmente utiliza Em lógica de programação os cubos tem um uso muito específico a gente não vai abordar cubos aqui mas trabalharemos com vetores e com matrizes e na próxima aula a a gente começa o estudo dos vetores parte um eu vou mostrar como é que você declara E como é que você inicializa o vetor ou seja como é que você cria e coloca dados dentro desse vetor e também como é que você acessa esses dados bom o que que é um vetor um vetor
é um Array de uma dimensão portanto é uma estrutura que permite armazenar um conjunto de valores na forma de uma lista de dados os vetores armazenam apenas dados de um mesmo tipo então eu posso ter um vetor de inteiros um vetor de reais um vetor de caracteres mas não vetores de valores misturados de tipos misturados aqui na tela a gente tem uma figura que representa um vetor esse vetor seria um vetor de nome e notas então o vetor ele tem um nome Assim como as variáveis TM nomes e o vetor tem posições que são locais
onde a gente armazena os dados dentro dele lembra eu falei que um vetor ele permite arenar um armazenar um conjunto de dados o vetor é como se fosse uma variável as variáveis permitem armazenar apenas um dado por variável já um vetor permite armazenar n dados dependendo da quantidade de posições que ele possui aqui cada retangulo Zinho Verde desses aqui tá representando uma posição do vetor e cada um deles pode eventualmente armazenar uma informação um dado diferente e os vetores eles permitem acessar os dados individuais por meio de números de índices que representam as posições os
índices eles sempre começam a contar a partir do zero Então a primeira posição do vetor ou seja o primeiro dado armazenado no vetor ele vai ser acessado por meio do nome do vetor mais o número de índice como se fosse o endereço dele então notas zero equivale a essa posição então a informação que eu tiver aqui dentro eu acesso por meio dessa notação a informação que tiver aqui notas um é a segunda posição do vetor ou o segundo elemento do vetor e assim sucessivamente o Vetor pode ter quantas posições você precisar na sua aplicação Porém
Aqui em lógica os vetores eles têm tamanho fixo ou seja eles são imutáveis você não pode aumentar a quantidade de posições de um vetor depois de tê-lo declarado depois de ter criado esse vetor na prática algumas linguagens de programação tem estruturas de dados do tipo vetor que permitem sim que você aumente ou diminua o tamanho da estrutura e uma outra observação importante os números de índice começam com zero Como eu como eu citei de modo do que para um vetor de quatro posições Ou seja que vai armazenar quatro elementos a última posição será a posição
três ou seja o número de elementos menos 1 porque ele começa em zero e não em um tem que ficar esperto com isso porque isso é fonte de erros de programação constantes erros do tipo tentar acessar um elemento numa posição que não existe no vetor como é que a gente declara um vetor é bem simples especifica o tipo de dados eh que serão armazenados no vetor dá o nome pro vetor seguindo as mesmas regras de nomeação de variáveis que a gente já conhece né não pode começar com número tem que ter letras símbolos no geral
não são suportados não pode ter espaço etc e Diferentemente das variáveis a gente vai ter que informar quantas posições o vetor terá ou seja Quantos elementos ele será capaz de armazenar e isso a gente faz abrindo colchetes especificando o número de elementos e fechando colchetes Então esta instrução aqui declara um vetor qualquer por exemplo se eu quiser quer criar um vetor de nome notas com 10 posições do tipo real basta escrever real que é o tipo de dado espaço notas que é o nome do vetor e dentro dos colchetes o tamanho dele quantas posições ele
vai armazenar que são as posições de zero até 9 lembre-se disso 10 posições de 0 a 9 porque é 10 - 1 = 9 é a última posição para inserir dados no vetor também é bem simples é só fazer atribuição como se fosse para uma variável qualquer com a única di que você tem que informar Em qual posição do vetor o dado vai ser inserido então por exemplo se eu quiser atribuir um valor pra primeira posição do vetor notas eu especifico que notas na posição Zero entre colchetes recebe um valor qualquer por exemplo aqui o
valor 7.5 também é possível inserir dados no vetor durante a sua declaração Bastando para isso ao declarar o vetor por exemplo inteiro vetor igual passando uma lista de valores dentro de Chaves importante an aqui notar que são Chaves e os valores separados por vírgulas aqui são valores numéricos se fossem caracteres Strings cadeas a gente colocaria entre aspas e veja que interessante dentro dos colchetes Agora eu não preciso especificar o tamanho do vetor o tamanho ele vai ser inferido a partir da quantidade de elementos que você tá passando assim você já consegue declarar um vetor e
ao mesmo tempo já atribuir valor para esse vetor e já poder sair utilizando Mas no geral o que a gente faz é criar um vetor especificando só o tamanho dele e durante a execução do programa é que a gente vai preencher o vetor com dados que são gerados por meio de processamento ou que o usuário digita ou que são obtidos em outra fonte qualquer beleza dito isso vamos ver um exemplo então de declaração e atribuição de valores a vetores eu vou criar uma aplicação nova aqui no Portugal Studio pra gente trabalhar com vetores e aqui
eu vou criar um vetor eu vou criar aqui na área global de declaração de variáveis um vetor para para valores re então tipo real eu vou criar aquele vetor de notas só que eu vou criar com quatro posições disponíveis Então dentro dos colchetes eu coloco o número 4 também vou criar uma variável comum só pra gente fazer umas comparações do tipo real que eu vou chamar de minha nota Beleza então Ten o vetor de quatro posições criado e uma variável qualquer que eu chamei de minha nota agora aqui no programa eu vou pedir pro usuário
digitar uma nota então uma nota o usuário vai digitar essa nota programa Vai ler a nota e vai armazenar na primeira posição do vetor notas como é que eu faço isso eu especifico o nome do vetor Como se eu tivesse especificando uma variável e Informo que eu quero colocar o dado na posição zero que na verdade é a primeira posição do meu vetor Beleza então quando o usuário digitar uma nota qualquer ela vai ser gravada aqui dentro excelente E aí eu posso na sequência mandar escrever na tela o conteúdo dessa dessa posição do vetor como
é que eu escrevo mesmo esquema eu acesso dessa forma o nome do vetor e dentro do colchete dos colchetes o número da posição que eu quero acessar perfeito antes de executar esse programinha pra gente testar eu venho aqui no meu inspetor de variáveis e vou colocar tanto a variável minha nota quanto o vetor notas pra gente inspecionar durante a execução veja que ele mostra o vetor notas naquele formato né como se fosse uma tabelinha uma lista de dados na verdade com as posições começando em zero e indo até TRS e não tem nada dentro dele
tá vazio então eu vou executar o programa executando pedi uma nota eu vou digitar uma nota por exemplo 7,5 quando eu dou enter a nota é copiada pra posição zero do meu vetor Olha só agora aqui ó a posição zero tem o valor 75 meio as demais posições estão vazias Note que para colocar dados no vetor eu não preciso especificamente colocar na ordem da das posições de índice eu posso inserir dado na posição que eu quiser então por exemplo se em vez de colocar um dado na posição zero eu quisesse colocar na posição dois bastaria
especificar aqui posição dois vou executar de novo digite uma nota se dou enter E aí ele ecoou na tela 6.0 porque é do tipo real e ol só posição dois tá com valor seis as demais posições estão vazias elas estão alocadas na memória estão disponíveis pra gente usar Porém não tem nenhuma informação lá dentro ainda apenas na posição dois é que eu coloquei o valor 6.0 Lembrando que esta é a terceira posição é o terceiro elemento do meu vetor Além disso eu posso atribuir os valores de uma posição do vetor para uma variável e vice-versa
não preciso simplesmente ler ou escrever diretamente então eu posso fazer assim minha nota recebe o que está no vetor notas na posição do E aí eu posso mandar escrever na tela conteúdo da variável e conceno com minha nota minha nota Beleza deixa eu só colocar uma quebra de linha aqui e agora vou executar o programa digite uma nota vamos supor oito dou enter e aparece conteúdo da variável oito o mesmo conteúdo que tá na posição dois do vetor né veja que interessante eu copiei de um para outro e aqui a gente tem minha nota 8.0
e a posição 2 preenchida eu também posso eh colocar numa posição de um vetor um valor que está em outra posição do vetor por exemplo eu poderia fazer o seguinte logo na sequência aqui notas na posição eh três que é a última posição recebe notas na posição do vamos supor vezes 2 então eu faço um cálculo com o valor que tá numa posição do vetor e armazeno em outra posição do mesmo vetor executando o programinha digite uma nota C beleza 5.0 que é o escreva notas dois conteúdo da variável 5.0 e olha só olhando aqui
na posição 3 tá o valor 10 que é 5 x 2 perfeito então a gente conseguiu criar um vetor de quatro de quatro posições atribuir valores ao vetor ler os valores e utilizar valor do vetor em cálculos e aí você deve estar se perguntando legal o vetor tem quatro posições E se eu quisesse preencher todas as quatro ou melhor e se o vetor tivesse 50 posições eu precisasse preencher essas 50 posições como é que eu faria bom Existem várias técnicas para isso a gente pode preencher com dados que vem do usuário com dados que são
gerados aleatoriamente e geralmente a gente utiliza laços de de repetição para nos auxiliar e no próximo vídeo é isso que a gente vai fazer eu vou mostrar como é que a gente trabalha com vetores e laços de repetição para tanto para preencher o vetor quanto para fazer a leitura dos valores que estão armazenados lá dentro então é isso nesse vídeo eu mostrei como criar ou seja declarar e atribuir valores a vetores usando lógica de programação no Portugal Studio nessa segunda aula sobre vetores Vamos aprender a manipulá-los com o laço para a ideia é a seguinte
a gente pode usar um laço para na hora de atribuir ou de ler valores que estão armazenados nas posições de um vetor e a gente vai usar mais ou menos esta sintasse você vai ter um vetor por exemplo um vetor de inteiros com 10 posições E aí com o laço para a gente vai iterar entre as posições sempre Começando na posição zero e indo até a última posição que é sempre o tamanho men-1 por isso eu coloquei I menor do que 10 poderia ser também i menor ou igual a nove que é a última posição
do vetor e aí basta que você acesse o vetor naquela posição I aqui nesse caso por exemplo eu tô atribuindo as posições do vetor dadas pela variável i o valor do próprio I multiplicado por 2 dessa forma a gente atribui valores a cada uma das posições do vetor e também podemos ler as posições que estão no vetor de forma bastante análoga usando o laço para de zero até a última posição do vetor e posso mandar escrever na tela o vetor naquela posição específica como eu fiz aqui concatenando uma quebra de linha vejamos um exemplo precisamos
de um programa que permita entrar com quatro notas de um aluno armazenar essas notas na memória Ou seja no vetor calcular a média dessas quatro notas a média aritmética e exibir a média na tela e no final exibir as notas usadas no cálculo da média o segredo aqui é logo após exibir as notas usadas no cálculo significa que essas notas elas tem de ficar disponíveis no final do programa posso fazer isso usando quatro variáveis distintas mas é muito mais fácil usando um vetor porque se eu tivesse muito mais notas por exemplo 100 notas precisaria usar
100 variáveis O que é totalmente desaconselhável Então vamos fazer esse programinha utilizando vetores vamos lá pro Portugal Studio então eu tô aqui no Portugal Studio vou criar um novo arquivo e vamos programar isso bom eu vou precisar para esse programinha de uma variável tipo real para armazenar o somatório das notas e outra para armazenar a média calculada então soma e média Vou precisar de uma variável do tipo inteiro que eu vou chamar de I para fazer a iteração com o laço para e finalmente eu vou precisar do vetor que vai ser do tipo real o
nome dele vai ser notas por exemplo e ele vai ter quatro posições para quatro notas beleza no meu programa principal meu primeiro passo vai ser zerar a variável soma para garantir que não tenha nada lá dentro ela vai acumular valores tá então zerei soma e aí eu peço pro usuário escrever as notas na tela eu vou fazer de uma forma simplificada vou colocar só uma mensagem assim digite as quatro notas do aluno beleza e aí eu vou escrever na sequência vou digitar na sequência na verdade as quatro notas para isso eu vou usar o laço
para então eu vou colocar alguma coisa mais ou menos assim para e igual a z0 ou seja minha variável I começa em zero enquanto o I for menor do que 4 ou ainda menor ou igual a 3 O que dá no mesmo tá e mais mais incremento de um em um que que eu vou fazer em cada iteração desse laço programa vai ler o que o usuário digitou e colocar no vetor notas na posição dada pela variável I minha variável contadora E aí como eu quero no final ter a média aritmética eu também vou usar
a variável soma para acumular os valores das notas para isso eu vou usar este operador que é o operador de soma com atribuição e a variável soma recebe o que está no vetor notas na mesma posição i na posição atual da iteração este operador ele vai acumular o valor em soma ele não vai só atribuir substituindo o que tá em soma ele vai somando os valores com o que já está dentro da variável por isso a gente chama isso de acumulação depois que terminou esse laço para é só calcular a média média igual soma o
que tá na variável soma acumulado dividido pelo número de notas quatro notas no caso vou mandar limpar a tela para isso existe uma instrução chamada limpa para deixar a tela limpinha para não ficar aparecendo o que a gente acabou de digitar antes de prosseguir eu já vou testar o programa então eu vou colocar tá aqui na minha área de inspeção de variáveis o vetor notas vou executar o programa e ele pede as quatro notas do aluno Então olha só eu vou colocar aqui a primeira nota enter segunda nota enter terceira nota enter veja que ele
não pede de novo para digitar as quatro notas só fic aguardando digitar porque eu escrevi o programa assim uma mensagem só para ir mais rápido quinta nota enter beleza Olha só as quatro notas foram inseridas aqui dentro do meu vetor a gente consegue ver 6 4 5 e 9 perfeito bom o programa Originalmente também pede pra gente escrever na tela a média e as notas usadas então eu vou continuar agora pulando uma linha aqui programando primeiro a média escreva a média é E aí eu conceno isso com a variável média mais uma quebra de linha
beleza você vai mostrar a média na tela e aí para mostrar as quatro notas que estão dentro do vetor notas eu uso outro laço para na verdade bem parecido com esse eu vou só copiar esse laço para I = 0 I menor ou igual 3 i mais mais só que agora em vez de Leia notas é Escreva notas na posição I beleza eu não preciso evidentemente acumular mais nada aqui e aí eu vou concatenar isso aqui com uma quebra de linha para ficar uma nota embaixo da outra Tá então vamos testar rodando digito as notas
6 5 8 7 enter beleza lá a média é 6,5 e as quatro notas uma embaixo da outra e você pode dar uma melhoradinha nisso colocando uma mensagenzinha junto formatando essa saída um pouquinho melhor tranquilo e só para finalizar eu vou mudar aqui esse menor ou igual a 3 para menor do que 4 para mostrar que você também pode trabalhar dessa forma menor do que o que o tamanho do vetor no no caso não uso o igual aqui porque o igual eh remeteria uma posição não existente no vetor ele vai de zero a três então
se eu executo esse programa digitando as notas beleza ele funciona da mesma forma vetorzinho preenchido e a média calculada certo então é assim que a gente usa um laço para para iterar pelas posições do vetor e acessá-las tanto paraa leitura quanto paraa escrita e no próximo vídeo especificamente eu vou mostrar uma rotina de troca de valores entre variáveis que vai servir para você trocar os valores de uma variável a com uma variável b e vice-versa o que vai ser bastante útil no desenvolvimento de algoritmos mais complexos um pouquinho mais à frente fala pessoal aqui é
o Fábio da Bon treinamentos nesse vídeo do nosso curso de lógica de programação vamos ver uma rotina para troca de valores entre variáveis Qual que é a ideia aqui em muitos casos é bastante comum Inclusive a gente precisa trocar valores que estão armazenados em duas variáveis entre si ou seja o valor de uma variável a vai para uma variável b e o valor da variável B vai pra variável a porém a gente não pode simplesmente atribuir o valor de uma variável diretamente pra outra porque se a gente fizer isso um dos dois valores vai ser
perdido a primeira variável que recebeu o valor atribuído recebe esse valor e o seu valor original desaparece aí você não consegue fazer a troca como é que a gente resolve esse problema com uma rotina bastante simples para troca de valor A ideia é mais ou menos a seguinte a gente vai precisar de uma variável auxiliar que aqui eu chamei de aux e duas variáveis as quais TM os valores que a gente quer trocar entre si aqui eu chamei de x e y então Suponha que a minha variável X tem o valor 20 armazenado e a
variável Y tem o valor 10 eu quero trocar esses valores eu quero mandar o valor de X para y e de Y para x bom como é que eu faço isso eu vou usar uma variável auxiliar inicialmente Primeiro passo é tomar o valor de uma das duas variáveis pode ser qualquer uma delas por exemplo y e copiar para essa variável auxiliar então variável auxiliar agora tem o mesmo conteúdo que a variável y o próximo passo é atribuir o valor que tá na variável X para a variável Y veja se eu não tivesse a variável auxiliar
realizar essa operação implicaria na perda do valor original de Y por isso que eu preciso da variável auxiliar porque o valor de y está lá dentro E aí como você já deve est deduzindo o próximo passo é tomar o valor que está na auxiliar e passar paraa variável x pronto trocamos os valores das duas variáveis Então essa é a sequência que a gente precisa utilizar para construir essa rotina uma rotina que é bastante simples como você vai ver então vamos para o Portugal Stúdio para codificar isso aqui rapidamente Então vamos lá tô aqui no Portugal
Studio vou codificar a rotina de troca de valores entre variáveis eu vou precisar de três variáveis eu vou usar variáveis do tipo inteiro mas na prática você pode usar qualquer tipo de dado para essas variáveis se você tiver trabalhando com texto usa variável do tipo KD se esver trabalhando com valores lógicos variáveis lógicas aqui eu vou trabalhar com números inteiros então inteiro variável x variável y e variável auxiliar igualzinho a gente viu no diagrama eu vou pedir pro usuário entrar com os valores então entre com o valor de x com o valor de x Leia
x e depois simplesmente entre com o valor de y e leia Y vou copiar e colar o código aqui para acelerar valor de y ou seja da segunda variável leia a segunda variável e agora sim eu vou criar rotina de troca de valores como é que é essa rotina de troca de valores então lembrando o mecanismo lá do diagrama primeiramente a variável aux auxiliar recebe o que está em Y depois a variável Y recebe o que está em x e finalmente a variável x recebe o que está em aux na nossa variável auxiliar fizemos aqui
uma triangulação basicamente aí eu posso escrever na tela os resultados então x agora vale concatenou com x e mais uma quebra de linha beleza e a mesma ideia para variável y y agora vale porque o valor foi trocado conceno Y vamos rodar o programinha para ver o que acontece então rodando entre com o valor de X Suponha que X tem o valor 15 entre com o valor de y e y tem um valor diferente 100 bem diferente enter tá lá e x agora vale 100 valia 15 e y agora vale 15 valia 100 Olha só
trocamos os valores é isso então rotininha PR PR troca de valores entre entre duas variáveis é bem simples são apenas essas três linhas que você precisa utilizar para realizar essa tarefa que parece muito simples mas é de extrema importância na construção de vários tipos de algoritmos como os que a gente vai construir de agora em diante aqui no curso algoritmos para lidar com valores que estão armazenados dentro de vetores a gente vai ver algoritmos para ordenação algoritmos para pesquisa de dados em vetores e esses algoritmos acabam usando esse tipo de rotina por isso nessa aula
a gente falou sobre esse assunto e já na próxima aula vamos falar sobre a ordenação de Valores em arrays mas precisamente ordenação de vetores fala pessoal aqui é o Fábio da Ballon Treinamentos e neste vídeo vamos falar sobre ordenação de vetores bom qual é a ideia da ordenação de vetores ou de arrays de uma dimensão é possível ordenar os valores que estão armazenados dentro de um vetor tanto em ordem crescente quanto em ordem decrescente qual a importância disso bom algoritmos mais complexos como por exemplo algoritmos alguns algoritmos de busca de valores precisam que os vetores
estejam ordenados entre outros tipos de algoritmos que só funcionam ou funcionam melhor com um Array com seus dados em ordem crescente ou decrescente por isso a importância de você conhecer algoritmos para ordenar os arrays existem vários métodos para ordenação de arrays e um dos mais simples chama-se selection sort que é o que a gente vai trabalhar nessa aula aqui eu vou usar um vetorzinho de três posições bem pequeno para fazer as demonst trações porque se eu fizer com o maior pode demorar demais além do selection sort existem outros métodos de ordenação de vetores também como
esses que você tá vendo na tela Bubble sort cocktail Shake sort hip sort insertion sort merge sort ou quick sort a palavra sorte significa ordenar em inglês e essas técnicas Elas têm várias diferenças entre si principalmente no tangente a performance e o algoritmo que eu vou trabalhar aqui não é exatamente o dos mais performáticos mas é um dos mais simples pra gente que est começando a estudar algoritmos e estruturas de dados em lógica de programação Então como é que funciona a ordenação de um Array ou de um vetor de uma dimensão a gente vai precisar
de uma variável auxiliar E na verdade a gente vai precisar daquele algoritmo de troca de valores de variáveis que vimos na aula passada que utiliza a variável auxiliar para fazer a troca dos valores que estão em duas variáveis Então vamos supor um Array com três posições como você tá vendo aqui posição zero posição um e posição dois esse Array tá vazio por enquanto e a variável auxiliar Que também está vazia eu vou preencher esse Array coloquei três valores um valor em cada posição desse meu Array desse meu vetor 5 3 e 1 são os valores
nesta ordem Eles foram inseridos eu quero ordenar esse vetor em ordem crescente de valores Portanto o vetor está totalmente desordenado como é que eu faço como é que eu aplico esse algoritmo de ordenação selection sort Primeiro passo é a gente comparar as duas primeiras posições do nosso vetor então a gente compara os valores que estão nessas duas posições e se a segunda posição tiver um valor menor do que a da primeira a gente faz a troca dos valores de uma posição para outra usando a variável auxiliar nesse caso a posição zer tem o número C
a posição 1 tem o número 3 portanto a segunda posição ela é tem um valor menor do que a primeira então a gente joga esse valor na varável auxiliar transfere o valor ou copia o valor da posição zero para posição um e copia o valor da variável auxiliar para a posição zero trocamos de lugar na sequência a gente compara ainda a posição zero com a próxima posição então A ideia é essa eu vou comparar a posição zero com a posição seguinte e troco os valores se a posição seguinte tiver um valor maior do que a
da posição atual se não tiver um valor maior a gente mantém os valores nos locais onde eles estão E aí ainda na nessa primeira posição zero eu comparo o valor com o da próxima posição e a mesma coisa se o valor da próxima posição for menor a gente faz a troca sen não mantém os valores nos locais respectivos E aí você vai fazendo isso sucessivamente até a última posição do vetor no caso aqui comparando o valor da posição zero com o da posição dois nós temos que o valor da posição dois que é o número
1 é menor do que três portanto a gente copia o número um esse valor um para variável auxiliar aplicando a rotina de troca de valores colocamos o valor três que tá na posição zero lá na na posição do e copiamos o valor da variável auxiliar para a posição zero efetuamos a troca a gente faz isso sucessivamente até o final do nosso vetor no caso chegamos ao final do vetor que a gente faz agora agora a gente passa pra próxima posição então a gente já fez a comparação da posição zero com todas as demais posições e
fizemos a troca quando necessário agora a gente vai para posição um a próxima posição e faz a mesma coisa a gente compara a posição um com a próxima posição se o valor da próxima posição for menor efetuamos a troca caso contrário os valores ficam Onde estão no caso 3 é menor que 5 então a gente copia o três para paraa variável auxiliar e efetuamos a troca dos valores e assim sucessivamente até o final do vetor Se eu tivesse mais posições nesse vetor eu continuaria fazendo a mesma coisa eu passo para a posição dois comparo com
a posição tr depois com a posição quatro depois com a posição CCO até o final do vetor eu vou fazendo isso até chegar na última ou melhor na penúltima posição do vetor a qual eu comparo com a última e troco se for necessário E aí neste momento o Array estará totalmente ordenado que é o caso agora Array totalmente ordenado usamos aqui o algoritmo selection sort que tem uma performance que não é exatamente das melhores mas é um algoritmo de implementação simples ele não usa um vetor auxiliar paraa ordenação como outros tipos de algoritmos usam somente
uma variável auxiliar ocupa menos memória por conta disso e ele é rápido quando você ordena vetores pequenos se o vetor for muito grande a performance fica bastante degradada então ele é bastante lento para vetores de tamanho grande o número total de comparações que são feitas para fazer essas trocas é de n qu - n so 2 independentemente do vetor est ordenado ou não ou seja se ele já está ordenado ou se não está ordenado ainda se você aplica esse algoritmo n - n sobre 2 é o número de comparações n é o número de elementos
do vetor então se eu tiver por exemplo três elementos do vetor 3 - 3 so 2 é é 9 - 3 di 2 9 - 3 dá 6 di por 2 3 número total de comparações que é exatamente o número de comparações que fizemos nesse exemplo anterior você pode voltar ao vídeo e contar o número de comparações de números que foram feitas foram feitas três comparações no total tal bom vamos codificar isso aqui agora que é o que interessa mais pra gente no momento vamos aprender a codificar o selection sort vamos lá pro Portugal Studio
tô aqui no Portugal Studio eu já tenho um pedacinho do algoritmo criado para acelerar um pouquinho o processo e aqui eu criei algumas variáveis três contadores conte conte a e conte b e uma variável auxiliar e já deixei criado o vetor de três posições que eu chamei de Vet e Já criei um laço para para preencher o Array com números que eu mesmo vou Então escreva Digite o número o número vai ser lido e colocado nas posições nas três posições desse vetor então se eu executo aqui o meu código ele vai pedir para eu digitar
três números e o vetor tá preenchido a gente pode até colocar o vetor aqui na área de inspeção de variáveis executar de novo e ver os valores sendo colocados lá dentro veja que estão fora de ordem porque eu inseri os valores fora de ordem e agora A ideia é criar o algoritmo que ordena esses valores pra gente então vamos lá eu vou pular uma linha aqui depois desse laço para E aí a gente vai fazer a ordenação do Array como é que ela é feita a gente vai usar um outro laço para para isso eu
vou usar o meu contador a esse contador a ele começa em zero ele vai até 2 então menor ou igual a 2 por quê 0 1 2 são as três posições que eu tenho no vetor e ele vai ser incrementado de um em um beleza dentro dele eu vou fazer o quê eu vou criar um outro laço para então para que vai usar o outro contador o contador B esse contador B ele não vai começar em zero ele vai começar sempre na próxima posição depois da posição de Conte a então é sempre igual a Conte
a mais 1 por que conte a+ 1 Conte a vai controlar o valor que a gente tá comparando com os demais e contte B vai controlar os demais valores que estão sendo comparados com o valor base Então se a gente tá comparando o primeiro valor do vetor com os demais o primeiro valor tá na posição zero e o valor que vai ser comparado com ele o próximo valor é 0 + 1 portanto Conte a + 1 quando Conte a for igual a 1 conte B vai ser Conte a + 1 = 2 e assim sucessivamente
então a gente sempre começa a comparação comparando o valor com o próximo e depois com o próximo e depois com o próximo por isso a gente faz essa soma mais um aqui e aí ele vai rodar até o final do vetor do mesmo jeito ou se B menor ou igual a 2 com o incremento de um em um também Beleza então tá aí o que que a gente vai fazer então nessa comparação se os valores que estão sendo comparados no caso se o valor base for maior do que os valores comparados a gente faz a
troca porque a gente quer os valores menores no início do vetor não no final a gente quer fazer uma classificação crescente Então se o vetor na posição Conte a que é a primeira posição tiver um valor maior do que o vetor o mesmo vetor na posição con b então o que que vai acontecer a gente vai aplicar o algoritmo de troca de posições então aux recebe o que tá no vetor na posição con B E aí o vetor na posição conte B recebe o que tá no vetor na posição Conte a ou seja tô transferindo
o valor maior para essa posição posterior e o vetor na posição Conte a recebe o valor menor que é o valor que estava em conte b e que agora está na variável auxiliar Só isso tá feita a troca Então sempre que o valor posterior for menor do que o valor anterior a gente faz a troca caso contrário a gente mantém como está tranquilo e aí de depois de feita a ordenação a gente vai simplesmente exibir na tela os resultados então eu uso um laço para vou usar aquela min minha variável do início que vai de
zer até 2 menor ou iG 2 mais mais e aí eu mando escrever na tela o valor do vetor na posição conte Vamos colocar esses valores aí um do lado do outro por exemplo então eu conceno com um espaço só isso então vamos rodar o programinha para ver o que acontece erro a expressão não foi finalizada corretamente Ah sim Claro Esqueci de colocar um parêntese fechando aqui em cima beleza rodando de novo Agora sim então eu vou colocar três números fora de ordem 6 4 e oito por exemplo enter os números aparecem na ordem crescente
4 6 8 o vetor está ordenado e agora para escalar isso aqui para um vetor de qualquer tamanho basta você alterar aqui em cima o tamanho do vetor e alterar os valores que estão aqui nos contadores dentro dos laços para onde é dois aqui basta você colocar aí o o número da última posição do vetor que é sempre o tamanho do vetor menos 1 Então se fosse um vetor por exemplo de cinco posições a última posição aqui vai ser a posição quatro então coloco 4 4 4 aí a gente vai criar um vetor de quro
posições de cinco posições no caso que eu vou executar agora digitar cinco números 6 2 5 3 8 totalmente fora de ordem Mas eles são ordenados Olha só 2 3 5 6 e 8 e se a gente tiver números repetidos vamos testar Então 6 4 2 2 e 1 olha só ele ordena direitinho mesmo que haja números repetidos porque quando o número é repetido Ele simplesmente mantém os números na posição onde ele eles estão em vez de fazer a troca Então tá aí algoritmo de ordenação de vetores selection sort em alguns vídeos extras Vamos estudar
também outros tipos de algoritmos para ordenação de vetores como o Bubble sort por exemplo ou quicksort e na próxima aula da nossa sequência principal Vamos iniciar o estudo da pesquisa de dados em vetores usando algoritmos específicos também fala pessoal aqui é o Fábio da boson Treinamentos e nesse vídeo vamos falar sobre o algoritmo de ordenação de vetores Bubble sort em outros vídeos Eu já falei sobre outros tipos de algoritmos interessantes como selection sort e hoje a gente vai falar sobre a ordenação por bolhas um algoritmo que a gente costuma estudar e em cursos introdutórios de
estruturas de dados ou um pouco mais avançados de lógica de programação bom Quais são as principais características do Bubble sort com relação a performance você tá vendo aqui na tela no melhor caso se o vetor já estiver ordenado e você aplicar esse algoritmo sobre ele serão executadas n operações sendo que n é o número de elementos do do vetor então se você tiver um vetor com 10 elementos e eles já estiverem ordenados aplicando esse algoritmo serão executadas n operações ou seja 10 operações no caso mas é óbvio que se o vetor já está ordenado você
não precisa aplicar esse algoritmo ele vai ser aplicado em vetores não ordenados nesse caso serão realizadas é n quadrado operações no pior caso quando o vetor está totalmente desordenado a gente vai chamar isso de complexidade quadrática com notação Bigo n quadrado por conta disso esse tipo de algoritmo não é recomendado para programas que precisem de velocidade e principalmente que operem com elevada quantidade de dados quanto mais dados você tiver para ordenar quanto maior o tamanho do seu vetor muito mais tempo ele vai levar para ser ordenado e e como ele funciona especificamente vamos dar uma
olhadinha numa animação bom eu estou aqui nesse site interessante hacker earth.com que tem vários algoritmos e simulações de algoritmos pra gente poder estudá-los um deles é o Bubble sort então para esse Bubble sort para essa simulação eu vou usar um Array de cinco posições pequeno para ir mais rápido com layout de Array e vou deixar ele gerar para mim automaticamente os números que farão parte do Array você pode digitar aqui dentro também quais valores você quer dentro desse array vou rodar eí ele gerou para mim esse Array com cinco números Ele tá dizendo que serão
necessários até 31 passos para conseguir ordenar este Array bom como é que ele funciona a gente vai iniciar o algoritmo E aí a ideia é a partir do início do algoritmo posição zero a gente vai pegar pares de valores um valor e o seu valor subsequente na posição subsequente e compará-los sempre que o valor subsequente for menor do que o anterior é feita uma troca porque a gente quer é sempre o valor maior como sendo o próximo valor nesse caso aqui por exemplo a gente vai comparar 534 com 864 864 é maior então ele já
está na posição que ele deveria estar então conforme eu vou fazer a comparação Olha só pego esses dois valores e comparo 864 é maior do que 534 ou ainda 534 é menor do que 864 sim então a gente deixa como está e passamos para o próximo par agora eu vou para 864 com 46 nesse caso o próximo valor é menor então aqui a gente tem que fazer a troca é feita a troca dos dois valores a gente sempre quer o valor maior na na próxima posição na posição subsequente fez a troca a gente move pro
próximo par agora eu vou comparar o 864 com o 12 o 12 é menor não é então é feita a troca e depois a gente compara o próximo par 864 com 660 nesse caso o o 660 é menor não é então a troca é realizada no final dessa primeira grande iteração que foi do começo até o final do nosso vetor a gente já tem garantido que o último valor do vetor é o maior de todos então a gente não precisa mais se preocupar com esse valor esse aqui é o maior de todos já sabemos que
ele já está em ordem Então o que a gente faz agora a gente reinicia a gente volta lá pra primeira posição e vamos comparar os dois primeiros itens de novo e aí se o item subsequente for menor a gente faz a inversão no caso é então invertemos beleza e a gente vai fazer no mesmo esquema de dois em dois invertendo quando necessário nesse caso aqui não vai ser necessário inverter então eles já estão em posição E aí o 660 também já está no lugar certo veja que a gente não precisa compará-lo com o próximo porque
o próximo a gente já está já sabe que é o maior valor ele já está no lugar certo então a gente ignora esse último vai fazer sempre sempre menos um E aí a gente volta pro início do Array E aí de novo comparamos os elementos e fazemos a troca quando necessário nesse caso aqui não vai ser necessário fazer a troca Esse valor já está na posição aí voltamos pro início do Array e fazemos uma última comparação como só temos dois elementos agora é só fazer uma comparação trocar ou não no caso não é necessário trocar
então o Array está totalmente ordenado é assim que funciona o nosso algoritmo Bubble sort beleza como é que a gente implementa isso vou usar o Portugal Stúdio pra gente implementar isso Em lógica de programação mas é mais para vocês entenderem a estrutura do algoritmo em si Então vamos lá pro Portugal Studio aqui eu já tenho um programinha iniciado que cria um vetor de 10 posições preenche com números aleatórios e mostra na tela esse vetor preenchido Já tá pronto isso então eu vou executar e a gente vai ver aqui embaixo vários números tá deixa eu colocar
aqui s espacinho para eles não ficarem encavalados concatenando aí você vai ver os números gerados Olha só beleza Tá Eles não estão em ordem como você pode ver tá tem número número quro antes do 69 depois o 62 depois o 12 no final enfim não estão em ordem Então agora eu vou criar o algoritmo Bubble sort em forma de uma função que eu vou declarar aqui embaixo vou criar a função Bubble sort e a gente vai programar essa função então para colocar esse Array gerado dinamicamente automaticamente em ordem Então vamos lá que eu vou fazer
essa função aqui ela vai receber um valor inteiro na verdade um conjunto de valores inteiros que eu vou chamar de Val Val de valor pode chamar do que você quiser aqui mas eu tenho que colocar os colchetes porque o que ela vai receber como parâmetro como argumento é um vetor certo vai receber um vetor OK aí o que que eu preciso para colocar os dados desse vetor em ordem preciso preciso saber quantos elementos ele tem para que a minha função possa operar em qualquer vetor de qualquer tamanho então eu vou dizer que a minha variável
compre de comprimento aqui em cima eu declarei as variáveis temp e j e compr temporária i j para controlar Loops Eu usei o i aqui para preencher e Mostrar o conteúdo e compre de comprimento e essa variável comprimento vai receber retorno de U pon número número de elementos que é uma função aqui do do Portugal Stúdio que retorna o tamanho do vetor o vetor é esse cara aqui Val tá que foi passado como argumento Então dentro da variável compra eu sei quantos elementos tem este vetor e aí a gente vai iniciar um laço para vou
usar o i aqui Iniciando em zero e ele vai rodar enquanto o I for menor que o comprimento ou seja vai até o final do vetor e vai incrementar de um em um esse é meu laço externo é aquele laço externo que vai movendo vagarosamente os pares de valores para comparação até chegar no final do vetor e os pares em si vão ser controlados por um outro laço para interno aqui eu vou usar minha variável J também Iniciando em Zero Certo Só que essa variável vai rodar enquanto o J for menor e aqui a gente
tem que ficar esperto porque não é necessariamente até o final de acordo com com o andamento né do nosso algoritmo conforme os valores os pares vão sendo comparados entre si a gente vai tendo No final sempre o valor mais alto de todos e aí a gente não precisa mais comparar esse o último valor nem o seu antecessor nem o seu antecessor e assim por diante então ele vai rodar até que J seja menor que o comprimento menos o valor de I menos 1 sempre esse menos um porque a gente vai descartando um a cada iteração
completa então em cada iteração um valor fica no lugar certo já no final ou na região final do vetor e j+ mais porque a gente vai incrementar de um em um então aqui tá o segredo do Bubble sort é aqui que a gente controla os pares de valores que vão sendo comparados entre si tá E essa comparação vai ser feita várias vezes né para cada número que a gente consegue estacionar no final do vetor a gente incrementa esse laço externo e começa tudo de novo comparando do começo até chegar nesse J menor que comprimento Men
i - 1 beleza O que que a gente faz para cada um dos pares Então se o nosso vetor na posição J for maior que o vetor mesmo vetor na posição j+ 1 ou seja se a próxima posição for menor que anterior ou pense assim também se a posição anterior for maior do que a posterior que que a gente faz a gente faz a troca troca os valores de posição a gente usa aquele Vel bom algoritmo de troca de valores de variáveis para isso que eu us a variável temp ela recebe o que tá em
J na posição atual depois o vetor na posição J recebe o que tá na próxima posição estamos trocando eles de posição próxima posição é j 1 é sempre a próxima posição não pula posições e finalmente essa posição j+ 1 deixa eu deixar tudo juntinho aqui para ficar igual j+ 1 vai receber o que tá em temp beleza Tá feito aí o nosso algoritmo e é isso Acabou temos a função Bubble sort programada então grande segredo é esse conjunto de laços para que vão controlar as bolhas então cada par de valor é uma bolha n cada
par de valores que vão subindo até chegar no final e depositam ali o maior valor que foi obtido Beleza agora a gente vai testar Eu Vou Chamar esse Bubble sort aqui antes de mostrar o conteúdo do vetor então Bubble sort é o nome da minha função e ela recebe como argumento o vetor que eu quero preencher que no caso eu chamei de Vetor mesmo ali em cima Então é só escrever aqui dentro vetor Beleza agora eu vou executar e vamos ver se os valores aparecem ordenados aqui embaixo rodando tá lá 10 valores e olha só
todos em ordem então bubbl sort conseguiu efetivamente ordenar esses valores vou rodar de novo olha todas as vezes que eu rodar os números vão aparecer ordenados Beleza então é isso gente esse esse algoritmo aqui O Bubble sort por ser simples a gente viu que ele é bem simplesinho mesmo poucas linhas de código então ele é frequentemente usado para apresentar conceito de algoritmo de ordenação em curso de computação porém muitos pesquisadores acham E recomendam que esse algoritmo não deveria ser usado como exemplos e ser sub distribuído por outros como insertion sort e o selection sort que
a gente tem aqui no canal inclusive mas de qualquer forma como ele aparece muito em cursos de programação e em livros tá aí a explicação do algoritmo para você não ficar perdido e entender como ele funciona e assim eu finalizo Nossa aulas sobre algoritmo Bubble sort nos vemos em mais aulas futuras sobre estruturas de dados lógica de programação e assuntos correlatos Nesta aula vamos estudar a pesquisa linear em vetores na pesquisa linear também chamada de pesquisa sequencial em um Array a gente vai procurar um valor dentro desse Array fazendo comparações comparando o valor procurado com
os valores que estão em cada uma das posições do Array a partir da primeira posição do Array até o final do vetor ou até encontrar o valor que a gente tá procurando para isso a gente vai precisar de uma variável para armazenar o número que você vai pesquisar uma variável para armazenar na posição que você tá olhando no momento e saber qual é o valor que tá armazenado naquela posição do vetor pesquisado por exemplo vamos supor que eu vá Pesquisar o número dois neste Array aqui que tem três posições posições 0 1 e 2 com
esses valores armazenados bom a gente começa na posição zero o número pesquisado é dois e na posição zero do vetor o valor armazenado é qu então o que que eu faço para começar comparo o valor pesquisado com o valor que está nessa posição e faço na verdade duas perguntas eu pergunto se o valor da posição é menor do que 2 porque as posições vão de 0 1 até 2 A Última posição é 2 se for verdadeiro significa que eu não cheguei no final do vetor ainda e tenho outros valores para comparar no caso aqui é
verdadeiro e também verifico se a posição do vetor contém ou não o valor que eu tô procurando no caso eu tô perguntando se os valores são diferentes se forem diferentes é porque eu não achei o valor então eu continuo pesquisando no caso aqui 4 é diferente de número do número procurado sim verdadeiro não cheguei no final do vetor Então o que eu faço Olha a próxima posição na posição 1 o valor armazenado é 7 bom 1 é menor do que 2 verdadeiro não cheguei no final do vetor e o valor 7 é diferente de do
também é verdadeiro então não encontrei o número ainda que que eu faço vou pra próxima posição e assim sucessivamente até chegar ou no final do vetor ou encontrar o valor no caso aqui posição menor que dois falso estou na posição dois então eu já sei que cheguei no final do vetor não preciso não preciso Não Devo continuar pesquisando e de qualquer forma a posição do vetor é diferente do número falso porque 2 é igual a 2 então eu encontrei o valor na última posição então se eu não tivesse terminado a minha busca porque que cheguei
na última posição teria terminado porque encontrei o número neste caso Beleza agora vamos codificar isso lá no Portugal Studio Então estou aqui no Portugal Studio vou abrir um novo arquivo beleza bom a gente vai lembrar que eu vou precisar de uma variável que que vai ser do tipo inteiro para armazenar o número procurado e uma variável para armazenar a posição que eu tô comparando e Lógico eu vou precisar de um vetor então eu vou criar um vetor vou chamar de Vet mesmo um vetor de TRS posições para ficar igual ao da animação que a gente
acabou de ver três posições primeiro passo a gente vai criar o Array e preencher então criar Array e preencher eu vou usar um laço para para isso inteiro I começando em zer enquanto o I for menor do que TR porque são três posições que eu tenho e mais mais então o que que eu vou fazer eu peço pro usuário digitar um valor para armazenar no Array Então escreva digite um valor beleza suficiente deixa eu arrumar aqui essas aspas e botar uma quebra de linha bom E aí na sequência a gente vai ler esse valor e
vai colocar no vetor na posição I Tranquilo isso aqui você já sabe fazer já fizemos isso em em outros momentos tá colchetes pro vetor agora eu vou pedir na sequência depois de preenchido do vetor pro usuário digitar o valor que vai ser pesquisado então valor a pesquisar uma mensagenzinha escreva qual valor quer pesquisar o valor será lido e armazenado na variável num E aí eu já aproveito para inicializar a variável posição que tem que ser igual a zero afinal de contas eu vou começar o vetor com as verificações a partir da posição zero e agora
sim vamos implementar o algoritmo que nos interessa que é o algoritmo de pesquisa linear no Array no Array unidimensional como é que a gente faz bom eu vou usar um laço enquanto para isso e esse enquanto ele vai ser usado pra gente verificar aquelas duas condições quais são elas enquanto a posição for menor que do e o vetor na posição for diferente de número então aí a gente vai fazer as comparações aqui só para funcionar direitinho a gente vai colocar cada uma dessas operações dentro de seus próprios parênteses então enquanto posição menor que 2 e
o vetor nesta posição for diferente de número certo porque nós temos aqui esse operador lógico no meio Eu quero fazer o e o e lógico entre este valor e este valor aqui então enquant isso aqui tudo for verdadeiro a gente simplesmente incrementa a posição só isso só isso e fecha o laço enquanto tá esse laço enquanto ele vai rodar até quando até que ou você chegue no final do vetor ou o vetor na posição seja um valor diferente de número finalizou bom Agora eu preciso saber se o número foi encontrado ou não para isso eu
vou usar um c e faço a seguinte pergunta o vetor na posição em que parou o laço enquanto for igual a número então é porque eu encontrei o valor ou seja o valor está presente no vetor então coloco uma mensagem número encontrado no vetor beleza na posição pós e sen não se o vetor naquela posição não for igual a número significa que o número não foi encontrado então a mensagem vai ser diferente vai ser assim escreva número não encontrado legal só isso Vou até apagar esse finalzinho aqui para ficar bem diferente a mensagem só isso
que a gente precisa Então só repassando enquanto não chegar no final do vetor e ao mesmo tempo o número for diferente do número procurado vai incrementando ou seja vai olhando as próximas posições se chegar no final do vetor e não encontrou o número acabou o laço enquanto se encontrar o número esse diferente aqui vai dar falso porque o número encontrado é igual ao número procurado E aí o laço enquanto também finaliza né porque verdadeiro e falso dá falso e falso finaliza o l enquanto como você já aprendeu E aí a variável pós vai ter a
chave da posição onde parou o vetor aí é só verificar se naquela posição o número é o que os usuário tava procurando ou não vamos executar para testar agora vamos lá vou colocar o vetor aqui na área de inspeção de variáveis número da posição e o número procurado Então vamos lá rodando vamos primeiramente preencher o vetor vamos supor que temos esses valores aqui no vetor 6 4 e 8 qual valor quer pesquisar hum vamos supor que o usuário quer pesquisar o valor seis enter número encontrado no vetor veja número seis tá onde tá na posição
um olha só a contagem parou na posição um por isso que eu pergunto aqui embaixo se o vetor naquela posição é igual ao número sim 6 É iG 6 então foi encontrado Você pode até exibir aqui na tela incrementar na mensagem Em qual posição foi encontrado o valor se você quiser fica como exercício para você vamos testar outro caso agora do usuário Pesquisar o número que não tá no vetor Então vamos supor 4 6 e 8 e o usuário vai pesquisar o número no enter número não encontrado Então veja número igual a 9 o vetor
foi até a posição dois e encerrou e na posição dois Quem tá lá é o número 8 que é diferente de nove então o número não foi encontrado legal perfeito só arrumar aqui n ficou digitado errado e aqui o ideal também sempre colocar um espacinho para ficar bem formatado o seu algoritmo Tranquilo então é assim que a gente faz uma busca linear Não tem segredo é só ajustar seu laço enquanto para ir até o final do vetor e verificar se o número foi encontrado ou não e depois com o c você ajusta Qual a mensagem
ou na verdade Qual a ação que vai ser tomada aqui eu coloquei mensagem is podia ser outra coisa podia disparar uma outra função disparar uma outra rotina qualquer no programa Nesta aula Vamos aprender um outro método interessantíssimo de pesquisa em vetores a pesquisa ou busca binária o que que é a pesquisa binária num Array num vetor na pesquisa binária também conhecida em inglês por binary search Um item ele é procurado numa lista ordenada de itens os itens do vetor de forma muito eficiente muito mais eficiente do que na pesquisa linear que vimos na outra aula
como é que funciona a pesquisa binária a lista de itens ou seja o vetor ordenado ele é dividido ao meio E aí o elemento procurado ele é sempre comparado com o elemento no meio dessa lista a gente vai chamar essa parte que está sendo buscada de espaço de busca se o elemento não é encontrado imediatamente essa parte que foi dividida na metade é dividida na metade novamente e aí o elemento é procurado em uma das duas metades e assim sucessivamente várias divisões pela metade até encontrar o item ou até concluir que o item não está
presente no vetor Então ela se chama pesquisa binária porque por causa disso o espaço de busca do vetor é sempre dividido ao meio ou seja dividido por dois daí o nome binário temos aqui um exemplo do paradigma dividir e conquistar dividimos o problema em pedaços menores em partes menores para conquistá-lo mais facilmente suponha esse vetor preenchido com esses números aqui 386 421 9735 para encontrar um valor nesse vetor ele precisa estar ordenado veja que tenho aqui a representação de Vetor num formato que a gente chama de árvore no caso aqui seria uma árvore de pesquisa
binária aqui os elementos estão em ordem 1 2 3 4 5 6 7 8 e 9 crescendo da esquerda pra direita são exatamente os mesmos elementos do vetor original veja que o número três por exemplo que aparece duas vezes também aparece duas vezes aqui para encontrar um elemento aqui basta ir dividindo o vetor em metades e procurando o elemento naquele local por exemplo quero saber se o número seis está presente nesse vetor eu encontro a parte central do vetor que nesse caso vai ser o 4ro veja que todos os itens são números inteiros então não
pode ser o 4,5 a gente tem que escolher a parte central E aí eu comparo o valor que eu tô procurando com essa parte se for maior do que essa parte do que esse valor Central eu vou continuar procurando o elemento do lado direito se for menor eu vou procurar do lado esquerdo Então 6 é maior que 4 eu vou pro lado direito e comparo com a parte central dessa outra metade que no caso vai ser o número sete se for maior do que sete eu procuro a direita se for menor eu procuro a esquerda
no caso a esquerda está os seis veja que em apenas 1 2 3 Passos eu cheguei no número o que pode ser uma grande vantagem em relação a uma pesquisa linear na qual eu deveria comparar item por item até encontrar o valor ou concluir que ele não está no vetor O que é importante numa busca binária é que o vetor no qual você vai fazer a busca ele tem tem que estar ordenado senão é impossível descobrir o elemento central e separar os itens maiores para um lado e menores pro outro então sempre ordenado o primeiro
passo ordenar o Array depois a gente faz a procura utilizando o algoritmo de busca binária suponha então aquele nosso vetor ordenado os valores estão todos aqui em suas respectivas posições e eu quero pesquisar o número sete dentro dele como é que eu faço eu vou precisar de algumas variáveis auxiliares para poder implementar esse algoritmo de busca binária eu vou precisar de variáveis que aqui eu vou chamar de inicial meio final e encontrado as variáveis Inicial meio e final são ponteiros que vão dizer em que parte do vetor que eu estou que que eu tô olhando
no momento já a variável encontrada é uma variável do tipo Flag sinalizadora que vai me dizer se eu encontrei ou não o valor por isso ela vai ser uma variável do tipo lógico e ela vai começar como falso porque eu não encontrei nada ainda então Suponha que eu queira pesquisar o número sete a a variável Inicial é a posição inicial do vetor no caso a posição zero Seria onde tá esse número um aqui e a posição final é a posição 9 porque esse é um vetor que tem 10 posições então AF final é sempre 10
- 1 9 Então vai de 0 a 9 e a posição do meio eu não sei ainda nós vamos ter que descobrir qual é a posição do meio a posição central do vetor vai depender dele ter o número par ou ímpar de elementos nesse caso temos um número par então não existe um elemento Central específico a gente vai ter que escolher um dos dois elementos centrais e como é que a gente vai fazer isso colocamos os valores de Inicial e final encontrado é falso e meio está vazio primeiro passo determinar o meio aqui a gente
determinou que o meio vai ser a posição número 4ro 0 1 2 3 4 que por acaso tem um valor 4 armazenado também lá dentro poderia ser outro valor então tá lá posição no meio poderia ser a posição cinco também a posição Central para este vetor aía funcionar da mesma forma próximo passo a gente vai comparar o número que eu tô pesquisando com o valor que está na posição Central 7ete é igual a 4 não então não encontramos o valor ainda mas 7 é maior do que 4 se 7 é maior do que 4 e
este vetor está ordenado então eu tenho certeza absoluta que o valor que eu tô procurando está do lado direito do vetor e não do lado esquerdo ou seja todas essas posições aqui anteriores eu já posso descartar não vou precisar prar comparar com nenhuma delas e por isso eu vou mover a minha posição inicial da posição zero pra próxima posição depois da central que vai ser a posição cinco aqui beleza agora eu tenho uma nova posição inicial a posição final se Manteve e veja que se eu tivesse pesquisando um número menor do que a posição Central
eu manteria a inicial e deslocaria a posição final para antes da posição do meio então funciona das duas formas Tá bom agora que eu tenho a posição Inicial nova eu vou calcular o novo meio E aí o novo meio tá aqui posição número S próximo passo comparar o valor pesquisado com o valor que está nessa posição olha só é o valor conseguimos encontrar e a minha variável sinalizadora vai para verdadeiro para indicar que encontramos e não preciso mais continuar fazendo nenhum tipo de comparação então o valor está encontrado E é assim que vai funcionar o
mecanismo do algoritmo de busca binária né Então veja a gente sempre corta no meio o vetor comparamos o valor pesquisado com o valor que está nessa posição Central E aí se ele for maior ou menor a gente vai procurar do lado correspondente descartando toda a outra parte por isso binária então a gente sempre descarta aproximadamente metade do vetor por isso que ele é muito mais rápido e o quão mais rápido ele pode ser bom Numa pesquisa linear a gente pode ter que comparar até n itens sendo n tamanho do vetor ou seja se eu tiver
um vetor de 10 posições Talvez eu tenha que Comparar as 10 para encontrar o item se ele tiver no final e se eu tiver um vetor de 1000 posições Eu talvez tenha que comparar 1000 vezes até encontrar o valor já numa busca binária o cálculo é diferente veja que eu estou aqui num site chamado Omni calculator que permite fazer cálculos com logaritmos para calcular o número de Passos máximo que a gente dá com o algoritmo de busca binária a gente faz um cálculo que é com log de 2 então por exemplo se eu tiver um
vetor de 10 posições eu vou colocar o valor 10 aqui como X Ele vai me dizer que o log de X na base 2 É 3.32 2 que que significa isso significa que aproximadamente eu eu faço três comparações para encontrar um valor dentro de um vetor de 10 posições já é mais rápido do que do que a busca linear no geral Isso significa que 2 elevado 3,322 é = 10 então 2 elevado a x = 10 qual é esse X é o número de comparações o número de passos que a gente precisa executar para encontrar
um valor aqui com o algoritmo binário vamos supor que eu tenho um vetor de 1000 posições Olha só com apenas 9.9 Passos ou comparações a gente consegue encontrar o valor lá dentro se fosse uma pesquisa linear eu corro risco correria o risco de ter que até 1000 vezes dependendo da posição do valor ou se o valor não estiver lá Comparar as 1000 vezes e não achar nada e veja que o poder desse logaritmo ele aumenta conforme o tamanho do vetor aumenta se fosse um vetor de 1 milhão de posições veja 1 Milhão com [Música] pode
levar até 1 milhão de comparações que começa a deixar a coisa muito lenta então ao fazer busca em vetores de tamanho maior a gente sempre vai dar preferência paraa busca binária mas como é que a gente faz essa busca binária afinal de contas bom na próxima aula a gente vai implementar o algoritmo no Portugal Studio para criar e rodar uma busca binária vamos agora implementar o algoritmo de pesquisa binária em vetores que estudamos na aula passada já tô com Portugal estúdio aberto aqui já tenho um pouco de código digitado o que que eu tenho aqui
aqui eu tenho um inclua pra biblioteca de utilitários Eu tenho algumas variáveis criadas variáveis que eu vou usar como contador conte conte a e conte B uma variável auxiliar aux e o vetor que eu vou usar para para demonstrar essa pesquisa binária Eu Vou Chamar esse vetor de Vet e vai ser um vetor com 10 posições primeiro passo aqui é o seguinte tem que criar o vetor tenho que preencher esse vetor com dados e tem que ordenar esses dados a gente já sabe que paraa busca binária o vetor tem que estar com os dados ordenados
para não perder tempo fazendo isso que nós já fizemos em outras aulas eu simplesmente criei uma função preenche e ordena vetor essa função recebe o vetor de 10 posições preenche com números aleatórios e já os coloca em ordem para ir mais rápido pra gente não ter muito código aqui na tela a função na verdade ela tá aqui embaixo Aqui no final do código função preenche ordena vetor e o código dela é bem simples é algo que você já sabe fazer é um laço para para gerar números aleatórios e colocar nas posições do vetor e depois
ordenar usando aquele algoritmo que usa inclusive o mecanismo de troca de valores de variáveis então para não deixar isso lá em cima eu coloquei dentro de uma função encapsule e aqui eu só chamo a função Não se preocupe com isso vamos ter aula de função também aqui no curso e você vai aprender a fazer suas próprias funções embaixo eu coloquei um laço para para verificar se o conteúdo do vetor Tá mesmo preenchido e ordenado tá e eu vou rodar o programa agora pra gente ver como é que está o nosso status olha só ele criou
esse vetor com esses valores aqui temos 3 6 9 10 valores e estão ordenados do 2 até o 20 beleza então eu já tenho um vetor disponível e ordenado e agora a gente vai passo a passo implementar a busca binária eu vou inclusive apagar esse verificar conteúdo do vetor aqui porque não vou precisar mais dele Beleza então vamos lá preencheu E ordenou o vetor vamos implementar a pesquisa binária pesquisa binária coloquei aqui um um comentário que que eu vou precisar para pesquisa binária a gente vai precisar daquelas variáveis que estudamos no vídeo passado a variável
para para gravar a posição inicial final a posição do meio a variável eh Flag encontrado e uma variável para colocar o número que o usuário vai pesquisar vou chamar essa variável de busca eu vou declarar aqui essas variáveis então elas são do tipo inteiro inteiro Inicial que eu vou inicializar com zero porque a posição no vetor Inicial é sempre zero outra variável do tipo inteiro que vai ser a variável final como esse vetor é de 10 posições a variável final é no uma variável pro meio também do tipo inteiro Essa não é inicializada não sabemos
Qual é a posição do meio ainda uma variável encontrado que vai ser a nossa sinalização Então ela tem que ser do tipo lógico para ser verdadeiro ou falso e o nome vai ser encontrado como se fosse uma pergunta foi encontrado sim ou não ela in inicia como falso porque eu não encontrei nada ainda e uma variável do tipo inteiro também que vai ser a variável de busca onde eu vou colocar o valor que o usuário vai digitar vai digitar onde logo após essa mensagem aqui escreva Digite o valor para pesquisar beleza Leia você já sabe
Leia busca tranquilo nesse ponto do programa então nós temos o valor que vai ser procurado e já temos o vetor ordenado agora a gente vai criar a busca binária como é que funciona É assim enquanto o valor da posição inicial for menor ou igual da posição final e o valor não tiver sido encontrado a gente vai encontrar a posição do meio e aí fazer as comparações do valor que o que o usuário colocou nessa variável busca com o valor presente naquela posição então só o ato de falar o mecanismo já traz a tona a ideia
de que a gente vai usar um enquanto então enquanto E aí posição inicial for menor ou igual a posição final e vou usar o operador lógico e não foi encontrado nenhum valor o encontrado começa com falso não não falso significa verdadeiro tá então verdadeiro com verdadeiro porque a posição inicial é menor do que a final é zero e a posição final é nove então aqui dá verdadeiro e verdadeiro Por enquanto vai continuar rodando até que isso aqui até que um desses dois lados fique falso como eu tenho um e aqui no meio então pra gente
garantir a ordem de operadores a gente põe mais parênteses isolando cada um dos lados dessa expressão lógica para garantir que funcione direitinho bom enquanto Inicial for menor igual final e não foi encontrado o valor a gente descobre o valor do Meio quem é meio é Inicial mais final que são os números das posições não são os valores que Estão guardados lá dentro são os números das posições dividido por 2 aqui a gente vai l brar que quando você faz divisão no portugol e só tem números inteiros envolvidos O resultado é um número inteiro Então não
preciso me preocupar com arredondamentos aqui se você fizer isso em outro programa em outra linguagem tem que tomar cuidado para não acabar com o número quebrado número fracionário porque não existe a posição por exemplo 3,5 ou 5,5 no vetor aí você tem que arredondar esse valor Beleza agora a gente faz a comparação se o vetor na posição do meio na posição Central atual for igual ao valor que está na variável busca já sabe encontramos o valor encontramos o valor então a gente vai dizer que encontrado é igual a verdadeiro que que isso aqui vai fazer
se encontrado verdadeiro quando o laço for pra próxima iteração não encontrado vai virar falso e sempre que tiver um falso em um dos lados de um operação lógica e você tem um resultado falso que encerra o laço enquanto então quando encontrar ele para de comparar agora senão se E aí se o vetor na posição do Meio for maior do que o valor da busca agora eu vou determinar para qual lado eu vou olhar que depende do número que o usuário tá procurando então para Qual lado que eu vou pra esquerda ou pra direita Então se
o vetor do Meio for maior que a busca significa que o valor procurado tá antes do meio Ou seja é um número menor portanto eu vou deslocar o final para antes do meio final recebe meio Men 1 ele vai pra posição anterior a posição do meio que não foi o caso no exemplo que eu dei no vídeo passado ali o valor era maior então naquele caso a gente vai pro senão E aí eu desloquei o Inicial Inicial passa a ser a posição do Meio mais um Ou seja a próxima posição para fazer na próxima interação
o cálculo da nova posição Central Outro meio e verificar se o valor que tá lá dentro é igual que o usuário buscou e assim sucessivamente Isso aqui vai ficar rodando até ou terminar o vetor ou encontrar o valor que o usuário procurou beleza finalizou esse laço enquanto agora pra gente saber se o valor foi encontrado ou não é só olhar o status da variável encontrado se essa variável tiver verdadeiro lá dentro é porque o valor foi encontrado em algum lugar senão é porque o valor não foi encontrado ela permaneceu falsa do início até o fim
do algoritmo então a gente faz o C encontrado for igual a verdadeiro então aí você faz o que você precisar fazer um cálculo uma mensagem por exemplo vou escrever escreva valor encontrado no vetor Beleza você faz o que for necessário fazer para que que tá sendo buscado esse valor no vetor para fazer alguma coisa que vai depender do programa valor encontrado no no vetor beleza e agora na sequência senão senão significa que o valor não foi encontrado Então você põe outra mensagem do tipo valor inexistente ou valor não foi encontrado fica seu critério a mensagem
aí bom vamos rodar então esse algoritmo aqui vou executar de novo beleza Digite o valor a pesquisar então quero saber se o número tá presente no vetor ou não vamos supor que eu procuro o número 17 ele vai dizer valor inexistente esse número não está no vetor Foi rapidinho né vou rodar de novo Digite o valor a pesquisar vamos supor agora que eu vou procurar o número 13 valor encontrado no vetor o 13 está lá dentro então o 13 deu certo beleza o 17 não deu certo Tranquilo então é assim que a gente faz eh
cria e executa esse algoritmo de pesquisa binário na próxima aula iniciaremos o nosso estudo de matrizes que também são arrays arrays de duas dimensões Neste vídeo damos continuidade ao nosso curso de lógica de programação com Portugal Stúdio vamos falar sobre matrizes Em lógica de programação bom em matemática a gente define uma matriz m por n como sendo um conjunto de elementos que Estão dispostos em M linhas e n colunas e a matriz em lógico de programação também vai ter linhas e colunas e no geral a gente representa a matriz com a letra maiúscula Mas claro
que Em lógica de programação a gente pode dar um nome qualquer pra Matriz então aqui eu tenho um exemplo de uma representação matemática de uma matriz que é a matriz a essa Matriz tem três linhas e três colunas ou seja uma matriz 3 por3 e aqui eu uso os índices I para indicar a linha três linhas e j para indicar a coluna veja que cada um dos elementos dessa Matriz recebe um numerozinho que o que o identificam na verdade um par de números que vai identificar a sua posição dentro da Matriz então este elemento aqui
é o a21 significa que ele está na segunda linha primeira coluna este outro elemento é o a32 significa que ele está na terceira linha segunda coluna se eu fosse preencher a matriz com elementos colocaria por exemplo números em cada uma de suas posições na prática a gente pode colocar qualquer tipo de informação numa matriz em lógica de programação porque a matriz ela vai ser usada para processamento de dados dentro de um programa nesse exemplo aqui é uma matriz numérica matemática na qual Temos vários elementos e por exemplo o elemento que está na linha do coluna
2 o a22 é o elemento número 20 então segunda linha segunda coluna elemento de valor 20 já o elemento 31 terceira linha primeira coluna é o elemento cujo valor é 7ete legal isso aqui é na matemática mas Em lógica de programação como é que funciona funciona de forma muito parecida a gente na verdade identifica uma matriz como sendo um Array de duas dimensões nós Já estudamos no no vídeo passado o Array de uma dimensão que a gente costuma chamar de Vetor uma matriz nada mais é do que um Array com duas dimensões ou seja um
Array de arrays um Array de vetores que vai ser uma estrutura composta por linhas e colunas muito parecida com uma tabela na verdade e a gente acaba portanto consider uma matriz como se fossem vetores interligados em computação as matrizes TM um monte de aplicações importantes e interessantes por exemplo representação de imagens plotagem de gráficos mapeamentos e cálculos de distância imensamente usadas na criação de jogos em duas dimensões estruturas de dados especiais também são implementadas utilizando-se matrizes para fazer cálculos tabulares como por exemplo em planilhas e muitas Outras aplicações Então as matrizes são muito importantes e
por isso é importante que você saiba como trabalhar como criar e trabalhar com matrizes Em lógica dentro de uma algoritmo aqui eu tenho a representação de uma matriz de quatro linhas e quatro colunas veja que se parece com uma tabelinha na verdade gráficamente falando se parece com uma tabelinha que tem quatro linhas e quatro colunas muito parecido na verdade com esses exemplos matemáticos que nós vimos antes Porém tem uma diferença fundamental aqui os númer nmeros que identificam as linhas e as colunas começam a contar a partir do zero então Diferentemente daquela Matriz matemática em que
a gente contava os números de linhas e colunas a partir do um linha 1 linha 2 linha 3 coluna 1 coluna 2 coluna 3 aqui em lógica de programação a gente começa a partir do zero Então na verdade a primeira linha é a linha Zero A primeira coluna é a coluna zero índice zero a segunda linha é a linha um a terceira linha é a linha dois e assim sucessivamente então a numeração das linhas e colunas sempre vai se iniciar em zero e assim a última posição Ou seja a última linha ou a última coluna
vai ser sempre n - 1 o número total de linhas ou de colunas - 1 porque começa em zero então aqui por exemplo se eu tenho quatro linhas a última linha é a linha três 4 - 1 3 idem PR as colunas quatro colunas 4 - 1 3 então 3 é o número de índice desta coluna começando a contar a partir de zer a gente pode visualizar uma matriz como um vetor de vetores veja esse exemplo tenho três vetores de três posições cada um E se eu juntar esses vetores cada um deles sendo uma linha
da Matriz eu vou ter uma matriz de três linhas por três colunas como se eu estivesse fundindo cada uma das colunas desses três vetores e montando a matriz agora com três linhas e três colunas em algumas linguagens de programação na verdade é exatamente assim que Fun funciona você precisa encadear vetores para criar matrizes algumas linguagens não tê estrutura de Matriz especificamente mas muitas linguagens possuem e aqui em lógica de programação a gente vai trabalhar com matrizes e aqui uma matriz com alguns dados inseridos também bem similar a matriz matemática só que a gente vai identificar
as linhas e colunas pelos números de índice Então em vez de usar i j Então a gente vai ter os endereços para cada uma dessas digamos células que contêm os dados que são as posições da Matriz então linha zero coluna z0 tem o número 22 linha 2 coluna 1 o número 15 e assim por diante que são as posições Ah e detalhe importante a gente sempre identifica primeiro a linha depois a coluna Cuidado para não inverter Essa ordem senão você vai acabar selecionando ou gravando um elemento no lugar errado dentro da Matriz quando tiver processando
informação outro exemplo aqui esse número 9 se está na linha 3 coluna 2 portanto sua posição é 3,2 então um conjunto de dados que indica a posição de um elemento dentro da Matriz o endereço desse elemento na matriz beleza chega de teoria como é que a gente cria as matrizes Em lógica a gente declara a matriz da seguinte forma especificamos o tipo de dado que ela vai armazenar pode ser o tipo que você quiser mas todos os dados vão ser do mesmo tipo damos um nome paraa Matriz E aí especificamos dentro de colchetes as dimensões
quantas linhas e quantas colunas ela vai ter x linhas e y colunas exemplo uma matriz com cinco linhas de três colunas que vai armazenar números inteiros seria declarada como inteiro nome da Matriz aqui eu chamei de Matriz mesmo 5 TR dentro de colchetes Isso aqui vai vai reservar na memória RAM do computador um espaço onde vão caber todos esses elementos elementos que vão preencher cinco linhas e três colunas de uma matriz ou seja 5 x 3 15 elementos podem ser gravados nessa matriz e a gente também pode eh declarar uma matriz usando constantes primeiramente a
gente declara duas constantes uma pro valor de x e outra de Y ou seja das linhas e das colunas com o seu tamanho fixo e aí depois a gente declara a matriz com seu tipo específico passando os nomes da essas constantes então no Portugal Studio é dessa forma que a gente cria uma matriz de constantes e para atribuir e acessar valores não tem não tem segredo nenhum é como atribuir acessar valores numa variável qualquer ou num vetor qualquer basta que você identifique a matriz pelo nome Especifique a posição da Matriz onde eu vou gravar ou
acessar o valor e no caso de gravar valor é só atribuir o valor com o sinal de atribuição por exemplo aqui eu tô colocando o número 60 na posição zer zero dessa Matriz também posso usar instruções como leia para ler um dado que o usuário digitou e gravar numa posição qualquer da Matriz por exemplo na posição linha um coluna do e para usar um valor que esteja gravado na matriz mesmo esquema aqui por exemplo a instrução escreva o que está na matriz na posição 0 zer então o valor que tá aí dentro ele vai ser
escrito na tela poderia mandar para outra Matriz mandar para um vetor fazer um processamento com esse valor o que você precisar basta indicar linha e coluna Onde está o dado beleza Vamos então para a parte prática Vamos criar e manipular valores dentro de uma matriz estou aqui no Portugal Studio vou criar um novo arquivo pra gente poder trabalhar e aqui eu vou declarar uma matriz vamos supor com cinco linhas e três colunas do tipo inteiro como é que eu faço isso inteiro o tipo de dado que vai que vai ser armazenado na matriz o nome
da Matriz que pode ser Matriz nome que você quiser E aí eu especifico dentro de colchetes número de linhas depois abro de novo colchetes pro número de colunas então uma matriz cinco linhas três colunas aqui na função início eu vou fazer o seguinte eu vou atribuir um valor para essa Matriz então eu vou dizer que a matriz na posição 0 0 ou seja na primeira posição da Matriz vai receber o valor 60 por exemplo E aí eu posso escrever na tela o valor que tá lá dentro então valor e posso concatenar com Matriz na posição
zer bem tranquilo bem simples não tem segredo a vou concatenar também uma quebra de linha aqui OK posso pedir pro usuário digitar um número também então digite um número E aí eu vou ler esse número e armazenar onde na matriz numa posição qualquer como por exemplo 1 2 linha 1 coluna 2 E aí eu posso escrever o valor de novo na tela eu vou até copiar essa mesma instrução aqui para acelerar então o valor está onde colocar uma quebra de linha na posição um dois Beleza vou executar isso aqui pra gente ver o que acontece
clico em executar ó valor 60 então foi escrito o valor que foi armazenado diretamente na matriz Beleza agora vou digitar um outro número qualquer como por exemplo 140 enter valor 140 ele foi armazenado dentro da Matriz eu vou fazer o seguinte eu vou arrastar essa variável aqui pra área de inspeção de variáveis que a gente tem aqui no Portugal estúdio ó trz olha só já aparece no formato de uma tabelinha Maravilha vou executar assim que eu executo o número 60 já aparece na posição 00 que é a posição que eu determinei aqui no código e
quando eu digito um outro valor e dou enter esse valor vai pra posição ó linha um coluna do linha um coluna do consegui armazenar o dado lá dentro veja que a matriz inteira é criada mas não necessariamente preenchida na hora né os dados eles são colocados na matriz conforme a minha necessidade mas os espaços já estão alocados na memória e já podem ser utilizados Vamos fazer um segundo exemplo então eu vou criar uma matriz um pouco menor de três linhas e três colunas e vou criar também duas variáveis de acesso que serão as variáveis LM
e Call de linha e coluna E aí eu vou preencher essa Matriz com números que eu que eu mesmo vou digitar eu vou usar para isso um laço para vou apagar isso aqui e vou colocar um laço para Vou fazer linha igual a 0 tem que começar no zero porque a linha começa a ser contada no zero enquanto a linha For menor ou igual se são três linhas então linha zer linha 1 linha 2 vai até a linha do então linha menor ou igual 2 e LM mais mais fazer o incremento da linha beleza que
que eu vou fazer aí eu vou colocar outro laço para agora eu vou encadear um laço para para controlar coluna que vai receber os dados também começa no zero enquanto a coluna for menor ou igual a 2 mais mais e nesse laço interno eu vou colocar uma mensagem do tipo escreva e digite um número que vai ser inserido na matriz beleza uma quebrinha de linha aqui para ficar legal e aí eu leio esse valor programa vai ler esse valor na verdade e vai colocar na matriz onde onde na posição indicada pela variável LM na linha
indicada pela variável lin e na coluna indicada pela variável Call e fecha o parêntese então não preciso aqui na hora de usar a matriz colocar o número direto aqui dentro eu posso colocar uma variável que tem esse número assim eu consigo controlar utilizando laços de repetição condicionais o que eu precisar e esse laço aqui ele vai variar a linha vai variar a coluna e vai colocando os dados na linha na coluna especificadas de acordo com o andamento do laço conforme eu vou digitando assim eu vou conseguir preencher todos os dados são nove números 3 x
3 já aparece inclusive aqui a matriz ó 3 por 3 e depois eu posso ler o valor numa posição qualquer vamos supor na posição 01 Vou colocar aqui 0 1 beleza vamos executar ó digitei um número digitei beleza ó o número já aparece aqui posição 0 zer linha zero coluna zero digito o segundo número beleza Olha Para onde foi o número tá na mesma linha ainda porque o laço é externo mas o laço interno da coluna ele vai variar de zero até do então 0 1 digitei o número e se eu digitar mais um número
ele vai para esta posição linha zero coluna 2 agora o laço externo é que vai ser incrementado e a gente vai passar pra linha um então quando eu digito o próximo valor ele é colocado na linha um coluna zero porque começa a contar de novo a coluna agora entrei no laço interno e os dados vão ser colocados na coluna do na coluna 3 vai incrementar linha de novo vai pra próxima linha depois coluna do e coluna 3 Matriz preenchida com sucesso na ordem direitinho conforme foi especificado pelo laço aqui e veja que o valor mostrado
é o oito Matriz linha zero coluna 1 então linha zero tá aqui coluna um tá aqui número oito perfeito é isso exatamente o que eu queria agora aqui eu tô mostrando um valor só de uma única posição e se eu quisesse mostrar a matriz inteira como é que eu faria Hum eu posso fazer isso usando outro laço de repetição bem parecido com este bem parecido com esse vou até copiar esse laço na verdade no lugar desse escreva aqui eu V colocar esse laço para variar de linha zero até linha do de coluna zer até coluna
2 só que agora em vez de escrever diretamente o número aqui vou apagar esse le eu vou na verdade colocar um C para verificar se a coluna é menor do que dois ou seja se é coluna zero ou coluna um se for se for aí eu mando escrever eu mando escrever aqui o valor que tá na matriz naquela linha naquela coluna tá então escrevo assim ó ah escreva Matriz linha coluna e ainda posso concatenar aliás devo né para não ficar muito bagunçado com um espaço em branco senão se a coluna não for menor que 2
se ela for igual a 2 significa que é a última coluna aí neste caso eu coloco esta instrução aqui ó escreva Matriz linha coluna mais uma quebra de linha em vez de um espaço essa jogadinha que eu tô fazendo aqui na verdade é para mostrar a matriz no formato de uma matriz ele vai escrever na tela o conteúdo de cada coluna Até chegar na coluna do do quando chegar na coluna dois ele passa pra próxima linha exibindo embaixo a a próxima linha de valores para isso essa quebra de linha aqui para ficar mais fácil entender
vamos Executar a matriz Deixa eu subir aqui um pouquinho executando vou preencher digitando os nove números em sequência 1 2 3 4 5 6 7 8 e nono número agora vou dar enter e veja o que aparece aqui no console olha só a matriz Format conforme eu tinha criado igualzinho que aparece aqui no inspetor de variáveis tá essa jogadinha aqui então é bem legal para você exibir os dados formatados e inspecionar legal a sua matriz Beleza então vimos aqui como criar uma matriz Como declarar como colocar dados na matriz diretamente Como preencher usando laços para
aninhados e como visualizar o conteúdo da Matriz utilizando também laços de repetição aninhados e agora é com vocês modifiquem o código anterior desse programinha que a gente acabou de criar para que seja gerada uma matriz 10 por 10 10 linhas e 10 colunas e que seja preenchida com números aleatórios não é para você preencher manualmente senão você vai ter que digitar 10 x 10 sem números e vai levar um tempo enorme para testar o programa preenchida com números aleatórios o próprio programa gera os números e preenche essa Matriz usa a biblioteca de utilitários do Portugal
estúdio para isso tem um vídeo aqui no canal onde eu mostro como gerar os números aleatórios dá uma olhadinha lá para você se inspirar beleza gente então é isso aí nesse vídeo aprendemos a criar e manipular de forma simplificada matrizes Em lógica de programação fala pessoal aqui é o Fábio da boson treinamentos Neste vídeo temos mais um exercício resolvido de lógica de programação nosso tema hoje são matrizes e o exercício é esse que vocês estão vendo na tela um probleminha relativamente simples de resolver bom para quem tá começando a aprender matrizes Em lógica então o
problema é o seguinte a gente precisa de um algoritmo que gere uma matriz de tamanho 10 por 10 portanto com 100 elementos preenchida com números aleatórios inteiros no intervalo entre 1 e 100 então o programa tem que gerar essa matriz e preencher automaticamente com esses valores aleatórios logo depois mostrar na tela os valores Ger num formato tabular como se fosse uma matriz na saída e no final exibi o somatório dos valores que foram gerados ou seja pegar cada um dos 100 números e somar todos eles e exibir mostrando na tela esse somatório Então vamos resolver
esse probleminha aqui usando Portugal Studio tá então é o seguinte T aqui no Portugal Studio Deixa eu ver se eu consigo ampliar um pouquinho a fonte melhor para vocês enxergarem então vamos lá como a gente vai ter que gerar números aleatórios o primeiro passo é incluir uma biblioteca para gerar os números aleatórios que vai ser a biblioteca de utilitários útil então a gente começa com um inclua biblioteca útil e eu vou dar um nome alternativo para ela de letra U minúscula a gente também vai precisar gerar a matriz a matriz vai ser de números inteiros
então em inteiro vou chamar essa Matriz de Matriz para facilitar o nosso entendimento Matriz é uma matriz 10 por 10 portanto 10 linhas e 10 colunas beleza e aí vamos precisar de algumas variáveis também para poder trabalhar com essa Matriz a gente vai precisar de variáveis para controlar as linhas e para controlar as colunas também do tipo inteiro eu vou chamar a variável de LM paraa linha e col paraa coluna só para ficar um pouco abreviado e uma variável o somat que a gente vai calcular vou chamar de soma essa variável essa variel inicializar com
zer como é uma variável acumuladora é legal que a gente sai exatamente o que tem dentro dela no início da acumulação primeira coisa que a gente vai fazer é preencher essa Matriz com os números aleatórios então colocando comentário preencher a matriz com os números aleatórios como é que a gente faz isso vamos precisar de Laços de repetição qual laço de repetição eu vou utilizar vou utilizar o laço para porque eu sei exatamente quantas vezes tem que rodar esse laço Legal tem que rodar 10 vezes paraas linhas e 10 vezes pra coluna então eu vou começar
ajustando o laço para para rodar 10 vezes uma para cada linha E para isso eu vou usar a variável de controle linha na minha variável contadora que vai começar em zero porque você vai lembrar que as matrizes assim como os vetores começam a contagem de suas posições no número zero no valor zero esse valor ele vai ser incrementado até chegar em nove de 0 a nove são 10 posições então eu posso fazer menor que 10 opcionalmente se ficar mais fácil de entender para você você pode fazer menor ou igual a nove legal também pode ser
eu vou deixar menor do que 10 tá já é suficiente pra gente entender o que tá acontecendo e o incremento é de um em um então lim mais mais agora eu abro aqui as chaves para abrir o bloco de repetição e dentro desse bloco agora eu vou controlar as colunas que vão ser varridas para colocar cada um dos números tá então para as colunas eu vou usar outro laço para só que agora eu vou usar a variável Call para controlar então para cada linha que eu tiver acessando Eu vou acessar as 10 colunas colocando números
nessas colunas até o último número até a última posição depois eu passo pra próxima linha ou seja o laço interno ele roda 10 vezes para cada vez que o laço externo rodar o laço Interno também começa em zero porque as colunas também são contadas a partir do zero enquanto a coluna for menor do que 10 e o incremento também é de um em um Beleza agora o que que a gente vai fazer vamos gerar os números aleatórios os números serão colocados na matriz na posição indicada linha e pela coluna que são as células da minha
Matriz as posições e E essas posições vão receber o retorno de u ponto sorteia números entre 1 e 100 Beleza então cada vez que esse laço interno rodar vai ser sorteado um número entre um e 100 colocado na posição atual da Matriz a posição que tá sendo a acessada atualmente tá rodou as 10 primeiras colunas terminou a primeira linha aí passa pra segunda linha e faz o mesmo para essa linha gera os 10 números e passa pra próxima linha assim sucessivamente encerrou os dois laços para a matriz está completa beleza que que a gente tem
que fazer agora agora a gente tem que mostrar os dados na tela Foi pedido que os dados fossem mostrados na tela para isso a gente vai usar essa mesma estrutur de cabeçalho aqui ó da Matriz tá então para linha igual a zero linha menor que 10 para coluna igual a z0 coluna menor do que 10 por que eu vou usar a mesma estrutura porque eu preciso varrer todas as posições da Matriz para poder exibir na tela o que tem dentro de cada uma delas só que no enunciado do exercício pede para mostrar os valores no
formato tabular então não posso simplesmente despejar os dados na tela os números um atrás do outro porque Vão apenas aparecer 100 números eh um do lado do outro um embaixo do outro o que eu vou fazer é o seguinte eu vou usar a seguinte técnica se o valor atual da coluna for menor do que 9 ou seja de 0 a 8 então eu mando escrever na tela o que estiver na matriz na posição atual dada por linha e coluna concatenada com por exemplo um espaço pode ser um espaço em branco você pode usar dois espaços
em branco se quiser D uma distância maior tá E aí fechamos essa instrução Então as colunas de 0 a 8 vão aparecer seus respectivos valores um do lado do outro na mesma linha agora quando chegar na última coluna que é a coluna nove eu vou colocar um bloco senão para essa última coluna eu vou repetir essa instrução aqui ou seja eu vou escrever na tela o que tem dentro daquela posição só que em vez de colocar um espaço eu vou colocar uma quebra de linha com barra n ou seja o último valor também vai ser
escrito na mesma linha só que aí a quebra de linha vai jogar o cursor pra linha de baixo e a próxima linha Então vai ser escrita n a próxima sequência de 10 números vai ser escrito na linha de baixo e assim a gente vai conseguir formar e uma espécie de uma matriz inha ó esse laço paro eu não fechei ainda vou fechá-lo agora beleza isso aqui então deve escrever na tela os dados no formato que eu preciso feito isso eu preciso exibir também o somatório da da Matriz vou pular aqui ah deixa eu colocar um
comentário aqui que eu esqueci então aqui o comentário é mostrar a matriz na tela em formato tabular tabela agora o somatório da Matriz para fazer o somatório da Matriz de novo eu vou usar essa mesma estrutura aqui ó Tá eu vou usar essa mesma estrutura dos laços para porque a ideia é a mesma é varrer as linhas e as colunas e para cada linha eu olhar as 10 colunas que eu tenho que são as 10 posições da Matriz aí neste caso o que que eu vou fazer para cada célula eu vou usar minha variável de
soma que é uma variável acumuladora que vai receber e somar ou seja vai acumular E para isso eu uso o operador de soma com atribuição aqui não é só atribuição Se você usar sua atribuição no final você vai ter só o último valor da Matriz dentro da variável soma Mas eu não quero só o último quero todos então soma com atribuição E aí eu mando acumular o que está na matriz na posição dada pela linha e pela coluna e fecho esse laço para externo também então no final desse laço encadeado eu vou ter dentro da
variável soma o somatório de todos os números que foram gerados e aí é só escrever na tela então fora do laço paro eu coloco a instrução escreva colocar uma quebrinha aqui para ficar organizado somatório E aí eu vou concatenar com a variável soma e isso aqui encerra nosso programa Na verdade pra gente saber se ele vai realmente encerrar aqui a gente vai testar o programa para ver se ele funciona então deixa eu subir um pouquinho aqui console e agora eu vou executar então rodando beleza olha só os 100 números foram gerados em formato tabular não
ficou exatamente alinhado a gente podia ter usado uma tabulação aqui para alinhar por exemplo né Porque às vezes o número tem um caracter Às vezes tem dois e às vezes pode ter até três se for o número 100 gerado então fica um pouquinho desalinhado mas está no formato tabular e o somatório tá aqui embaixo 558 para esse grupo de valores se eu rodo de novo ele gera números aleatórios distintos e o somatório vai ter um valor diferente Note que podem haver números repetidos aqui dentro a gente não levou isso em consideração inclusive pode ser um
exercício para você eh tentar e evitar que números repetidos sejam sejam gerados e aí nesse caso eu recomendo que você aumente esse intervalo aqui não Gere de um a 100 senão ele vai gerar sempre os números de um a 100 apenas tá pode colocar de um a 500 ou de 1 a 1000 por exemplo e outra coisa que você pode tentar fazer para exibição é aqui em vez de um espaço colocar uma tabulação que você coloca com o Barra t tá esse caracter de tabulação E aí O resultado vai ser esse aqui ó inclusive agora
ficou perfeitamente alinhado né porque a distância agora é sempre a mesma entre os caracteres independente do tamanho do caractére tá então tá aí somatório 5269 para para esse grupo para esse conjunto de valores numéricos fala pessoal aqui é o Fábio da boson Treinamentos e neste vídeo vamos dar início ao estudo de subrotinas Em lógica de programação vamos começar definindo o que são as subrotinas uma subrotina é um bloco de código completo que define uma tarefa que o programa pode usar várias vezes durante a execução Inclusive a gente pode criar subrotinas para aproveitá-las em outros programas
a gente pode escrever as nossas próprias subrotinas para definir essas tarefas específicas e existem subrotinas que já fazem parte das linguagens que você encontra por exemplo dentro das bibliotecas que a gente já estudou em uma outra aula quando a gente define uma subrotina você cria um bloco de códigos que vai ser escrito apenas uma vez e vai ficar escondido de outras rotinas Ou seja a gente tem aqui um conceito de encapsulamento já presente e os dois tipos principais de subrotinas que a gente vai estudar são os procedimentos e funções uma terminologia muito usada em lógica
de programação então o que que é um procedimento é uma subrotina que executa uma tarefa sem retornar um resultado a quem chamou essa tarefa Quando eu digo chamador eu me refiro ao ponto do programa onde o procedimento a função é utilizada então o procedimento ele executa uma tarefa qualquer não importa qual seja um cálculo gerar uma informação escrever na tela mas não retorna um resultado que você pode usar posteriormente já uma função também uma subrotina que executa uma tarefa também assim como o procedimento porém retornando um resultado ele também gera um valor só que esse
valor é retornado pode ser armazenado numa variável e usado posteriormente no decorrer do programa Então essa é a diferença principal entre procedimento e função Ambos são subrotinas como é que a gente vai criar uma subrotina a gente utiliza essa sintasse aqui a gente vai usar a palavra função veja que não existe a palavra procedimento aqui no portogal estud é função por quê Porque na prática os procedimentos e funções a gente pode chamar de funções A única diferença é que a gente tem função que retorna a valor e função que não retorna a valor mas eu
ainda uso essa terminologia procedimento porque ela é bastante usual no estudo de lógica de programação então a sintae é função nome da função você tem que estabelecer um nome que eu recomendo que seja um verbo ou uma palavra que conté um verbo porque essa função realiza uma ação abre parênteses fecha parênteses abre chaves para delimitar o corpo da sua subrotina e vem com o código que ela vai executar isso é o básico de uma subrotina além disso a gente pode ter um tipo de retorno e uma instrução retorne que eu coloquei aqui em verde quando
a nossa subrotina retorna valores a gente usa a função retorne na instrução retorne para retornar esse valor E para isso a gente tem que especificar Qual é o tipo do retorno o tipo é inteiro real cadeia caracter e assim por diante a gente só vai utilizar Portanto o tipo de retorno se a gente tiver instrução retorno E vice-versa além disso a gente pode ter argumentos também os argumentos são pontos de entrada na função ou no procedimento usados para receber valores do programa que vão ser processados dentro da subrotina muito parecidos com o conceito de variáveis
inclusive eles também T um tipo que deve ser declarado aqui e você pode ter um ou mais argumentos dentro de uma subrotina eu coloquei entre colchetes os itens que são opcionais Ou seja que são usados quando são necessários não são obrigatórios sempre Já a palavra função e o nome da função além das chaves e dos parênteses sempre são obrigatórios e o código da função evidentemente depois de definida ou declarada uma função uma subrotina ela tem que ser executada Em algum momento para executar essa subrotina a gente faz uma chamada a subrotina a gente invoca a
subrotina uma chamada que em inglês a gente chama de call a chamada específic o nome da subrotina e vai fornecer informações como os argumentos que você pode ou não ter que passar que ela vai precisar para realizar a tarefa dela finalizando a execução dessa subrotina o controle do programa volta ao chamador que é o ponto onde estava o programa quando a rotina foi chamada e a rotina também pode retornar o resultado como a gente viu e veremos exemplo disso na prática para usar subrotina portanto ou você passa o nome do procedimento com os argumentos que
podem ou não existir mas sempre com os parênteses são obrigatórios ou ainda no caso de uma função que retorna valor você tem que retornar esse valor e colocar em algum lugar por exemplo numa variável esse valor também pode ser retornado para outra função Você pode ter uma função chamando outra função tá o mais comum é a gente retornar para uma variável então variável recebe o nome da função com os seus argumentos se eles existirem Vamos aos exemplos então lá no Portugal Stúdio tô aqui no Portugal Stúdio vou criar um novo arquivo e vamos fazer um
exemplo bem simples um código bem tranquilo a gente vai criar um procedimento Zinho que escreve uma mensagem na tela só para entender a mecânica do negócio então primeiro passo a gente não vai criar subrotinas dentro da função início essa aqui já é uma função onde o programa é inicializado tá então a gente não cria as funções aqui dentro a gente vai fora dessa Chaves aqui mas ainda dentro das chaves do programa legal se não tá fora do programa aqui que a gente vai declarar o nosso procedimento então que a gente pode chamar de função também
no geral então uma função simples do tipo procedimento essa função vai simplesmente exibir uma mensagem na tela como é que a gente faz isso função sem o CCD sem o t no a o nome dela vou chamar de mostra mensagem são duas palavrinhas você junta as duas ou usa um underline para uni-las tá veja que tem um verbo aqui mostra Então mostra a mensagem essa essa subrotina não vai receber nenhum parâmetro de entrada nenhum argumento então simplesmente parênteses vazios mas o parêntese tem que estar lá abro o chave enter veja que a chave já foi
fechada aqui embaixo automaticamente agora é só a gente colocar o código que ela vai executar por exemplo escreva bosom treinamentos em tecnologia Beleza vai escrever esta frasezinha deixa eu colocar uma quebrinha de linha aqui OK e eu posso colocar quanto código eu quiser aqui dentro quanto eu precisar a dica é só coloque código relacionado né tem a relação entre si Ou seja que executa uma tarefa específica não coloque mais de uma tarefa diferente numa função nesse caso você teria que criar mais de uma função Isso é correto e aqui eu vou colocar um outro escreva
curso de lógica de programação beleza curso de lógica de programação também vou colocar uma quebrinha aqui no final Beleza então essa daqui é a minha subrotina como é que eu uso a subrotina eu uso ela aqui agora sim eu vou lá para dentro do nosso programa principal que é a função início e aqui eu simplesmente vou colocar uma chamada a minha subrotina escrevendo mostra mensagem o nome da subrotina com os parênteses isso aqui é suficiente para executar o código que tá aqui embaixo então se eu executo aparecem ali embaixo as duas mensagens então ele executou
essas duas instruções ao mesmo tempo e se eu executar isso aqui várias vezes olha que interessante Aqui tá o poder das subrotinas ele vai executar várias vezes as instruções que estão ali ó Então não preciso ficar repetindo um monte de instruções é só Executar a subrotina mais de uma vez Beleza então primeira sub rotininha criada com sucesso do tipo procedimento Vamos criar agora um programinha que os argumentos para entender como é que a gente coloca os argumentos aí dentro eu vou criar um programinha que calcula o cubo de um número fornecido então eu vou mudar
essa função de função mostra mensagem para calcula calcula cubo e esta função inha vai receber um valor de entrada então se ela recebe um valor eu preciso colocar o valor aqui dentro na forma de um argumento esse argumento tem um tipo vamos supor que seja um número inteiro então inteiro num num é um argumento é como se fosse uma porta de entrada pro nosso procedimento pra nossa função o valor do qual eu quero calcular o cubo vai ser copiado para n e vai ser usado aqui dentro então aqui dentro vou vou colocar a mensagem escreva
cálculo do cubo de um número e aí eu vou fazer o cálculo do cubo aqui como é que é o cálculo do cubo de um número é número vezes número vezes número número Ao Cubo e eu vou armazenar Isso numa variável do tipo inteiro também que eu vou chamar de C C de cubo recebe portanto num vezes ve o valor desse argumento num então se eu passar o número 5 para cá vai ser 5 x 5 x 5 se eu passar 10 vai ser 10 x 10 x 10 e a escrevo na tela o resultado
que é o cubo é e vou concatenar concatenar com a variável c beleza só isso E como é que eu uso isso aqui eu uso aqui no programa principal Seme aqui eu V declarar uma por exemplo do tipo inteiro que eu vou chamar de número e essa variável recebe um valor vamos supor do você também pode pedir pro usuário digitar o valor e fornecer que é o mais usual mas aqui por questão de praticidade e rapidez eu vou fazer assim e aí eu chamo eu invoco a minha função calcula cubo passando para ela como argumento
a variável número neste caso aqui o valor que estiver dentro da variável número vai ser copiado pro argumento num isso é automático a gente chama isso de passagem de parâmetros no caso é uma passagem por valor o valor contido na variável número é copiado pro argumento num e vai ser usado dentro da nossa função legal beleza e aí é só executar ele vai dizer que o cubo é oito o cubo de quanto o cubo de dois se eu colocar um outro valor aqui 10 e rodar o cubo é 1000 perfeito Se eu colocar um valor
7 7 x 7 x 7 343 Beleza então temos aqui uma subrotina que faz um cálculo e exibe na tela ainda é um procedimento uma função do tipo procedimento ela só executou a tarefa e colocou na tela veja que ela não retornou um valor que eu pude armazenar em algum lugar simplesmente calculou e escreveu e mostrou na tela fez um processo e finalizou esse processo vamos ver agora um terceiro exemplo para que retorna valores eu vou fazer um programinha que calcula a área de um terreno a área do terreno é comprimento vezes largura Beleza então
aqui embaixo eu vou apagar essa função inha e vou chamar a nossa função de calcula área calcula área parênteses e a chave de volta como agora eu vou vou criar uma função função mesmo que retorna um valor eu preciso informar qual é o tipo do valor retornado para isso aqui na frente do nome da minha função eu escrevo o Tipo no caso tipo real então ela vai retornar um valor real porque a área de um terreno pode ser um número com casas decimais Então tem que ser real então função real calcula a área Beleza então
agora a gente vai programar essa função ela vai receber como argumentos dois valores a largura e o comprimento do terreno então aqui dentro dos parênteses a gente tem que informar os parâmetros os argumentos que são a largura que eu vou chamar de l e o comprimento que eu vou chamar de C veja que ambos tem um tipo e é são do tipo real você precisa informar o tipo aqui dentro senão não vai funcionar e aqui dentro a gente faz o cálculo eu vou criar uma variável real que eu vou chamar de área área eu vou
inicializar essa variável com zero para garantir que o programa não tenha nada armazenado naquela posição né para não bagunçar o meu resultado e área é simplesmente a largura vezes o comprimento do terreno Portanto o parâmetro L vezes o parâmetro C E aí eu retorno a área agora eu uso a instrução retorna Então esse valor ele vai ser calculado mas não vai ser jogado direto na tela ele vai ser retornado para um outro item de programação que pode ser uma variável que pode ser uma outra função ou seja para o chamador da função e agora a
gente vai escrever o programa principal para usar essa função para isso eu vou declarar umas variáveis aqui em cima na área de declaração de variáveis eu vou criar as variáveis largura que eu vou inicializar com zero eu vou criar a variável comprimento que eu vou inicializar com zero e eu vou criar também uma variável para área total então área total também inicializada com zero é importante a gente ter o controle sobre a inicialização da variável na função início eu vou pedir pro usuário agora informar os dados Então escreva qu a largura do terreno qual a
largura do terreno ele vai informar esse valor e o programa Vai ler e colocar na variável largura então leia largura depois escreva qual o comprimento do terreno e o comprimento vai ler o comprimento e gravar na variável você já sabe comprimento beleza feito isso É só passar os valores das variáveis largura e comprimento paraa Nossa função calcula a área como é que funciona isso área total recebe calcula área que é o nome da nossa função passando os parâmetros Largura comprimento beleza calcula a área largura e comprimento então o valor da variável largura é copiado pro
argumento l o valor da variável comprimento é copiado pro argumento c e são usados aqui dentro da função para fazer o cálculo que eu quero e esse resultado vai ficar armazenado na variável área total por quê Porque essa função retorna um valor que eu posso usar posteriormente em outras partes do programa Então nesse caso como o valor tá naquela variável é só dar um escreva e colocar na tela uma mensagem do tipo área calculada e concatenar com a variável área total e agora é só testar vamos testar então executo imagina a largura do terreno 10
comprimento 20 então a área calculada 200 200 m qu você pode incrementar a mensagenzinha colocando ali metos quadr etc beleza rodar de novo largura do terreno 5 comprimento 25 então área calculada 125 M qu no caso certo então a função foi chamada e foi executada neste ponto a depois de executado o valor foi retornado gravado na variável era total e o programa continua a execução a partir da próxima linha que é onde tá essa mensagem escreva área calculada com a área total que apareceu aqui embaixo então o chamador está aqui e depois de executada a
função seu resultado é retornado pra variável e o programa prossegue no próximo vídeo veremos mais exemplos de subrotinas vamos resolver mais alguns exercícios para entender melhor como é que a gente cria as funções dos procedimentos como é que a gente trabalha com múltiplos argumentos e como é que a gente trabalha com a instrução retorne nessa aula sobre subrotinas Em lógica de programação vamos ver como usar múltiplos argumentos em uma subrotina na aula passada a gente viu como criar uma função ou um procedimento no caso é que recebe um argumento e processa esse argumento um argumento
que é um valor externo que é inserido dentro da função procedimento pelo usuário agora vamos ver como colocar mais de um argumento Como inserir mais de um argumento ou seja mais de um valor para processamento e é muito simples para você criar uma subrotina que receba mais um argumento você vai usar palavra-chave função ou funcão dar o nome pra função abrir os parênteses vem com o tipo do argumento e o nome do argumento na sequência E aí para usar mais de um argumento basta colocar uma vírgula tipo do segundo argumento e nome do segundo argumento
vírgula tipo do terceiro argumento e seu nome e assim sucessivamente Quantos você precisar fecha parêntese abre as chaves E aí vem vem com o código normal da função para processar esses valores e lembrando que os argumentos são como se fossem variáveis que recebem dados externos à função para processamento dentro da função ou procedimento Então vamos lá pro Portugal Studio criar uma bem simples uma função inha simples que usa mais de um argumento Então deixa eu abrir aqui um novo arquivo no Portugal Studio beleza vamos fazer o seguinte vamos criar um programinha bem simples que mostra
números em um intervalo Então esse meu programa deixa eu colocar aqui um comentário na minha função início ele vai mostrar números em um intervalo especificado pelo usuário o usuário vai falar olha eu quero ã números no intervalo de 1 a 10 aí o programinha vai gerar esses números de 1 a 10 tá bom como é que a gente vai fazer isso dá para fazer sem funções eu vou mostrar como é que você cria uma função que resolve esse problema para você para isso a gente vai precisar de alumas variáveis externas a função que eu vou
declarar aqui em cima que serão duas variáveis do tipo inteiro então inteiro serão as variáveis número Inicial e as e a variável número final beleza duas variáveis que vão ter os números que o usuário vai fornecer o início e o fim dessa sequência numérica que vai ser gerada beleza Vamos criar a função Agora que realiza esse trabalho para nós Lembrando que a função não pode ser criada dentro de outra função Então logo após o fechamento da função de início que é a função principal do nosso programa A gente vai pular uma linha e aqui a
gente vai criar uma nova função na verdade um novo procedimento e eu chamo de procedimento porque ele não retorna um valor ele executa uma tarefa mostrando direto na tela os valores gerados eu vou chamá-lo de contar um verbo pro nome do nosso procedimento esse procedimento vai receber como argumentos os dois números que o usuário vai fornecer ali em cima eu vou chamar esses números de x e y x vai ser o valor inicial e y vai ser o valor final são os dois valores do tipo inteiro também para poder receber os dados inteiros então a
gente declara como inteiro x legal Prim primeiro argumento está aqui vírgula E aí eu venho com o segundo argumento também do tipo inteiro chamado de y Beleza se eu precisasse de mais valores era só continuar colocando vírgula tipo do dado e nome do argumento agora eu abro as chaves da função e aqui dentro eu vou programá-la um laço para resolve Então para inteiro i igual a x vai começar no valor x que é o número Inicial função vai ser executada enquanto esse Y for menor ou igual a aliás enquanto esse I for menor ou igual
ao Y e a gente faz o incremento no i tá abrimos mais um par de Chaves e basta escrever na tela o valor da variável i aí você pode escrever um embaixo do outro concatenando com uma quebra de linha ou um do lado do outro se for concatenar com um espaço vou concatenar com espaço aqui pra gente testar então a função está criada ela vai contar valores começando no valor x até o valor Y de um em um esses valores x e y que são os dois argumentos passados paraa função Eles serão derivados das variáveis
num Inicial e num final que a gente vai programar agora aqui na função principal aqui a gente pede pro usuário para começar eh digitando o primeiro valor então Digite o valor inferior ou limite inferior o primeiro valor ser o critério da mensagem então o usuário vai digitar esse valor ele vai ser armazenado na variável num inicial E logo na sequência a gente pede pro usuário digitar o limite superior então Digite o limite superior beleza vamos lá programa vai ler esse valor e vai colocar na variável final e agora que que a gente faz agora a
gente tem que passar esses dois valores pra função contar Ou seja a gente tem que invocar a função então invocando ou chamando a função ou procedimento no caso eh basta a gente escrever contar que é o nome do nosso procedimento e entre os parênteses você coloca as duas variáveis que vão passar os seus valores pros argumentos x e y então no caso num Inicial Inicial vírgula para separar os valores num final beleza o que vai acontecer quando essa instrução for executada é que o valor que estiver dentro da variável no Inicial que foi capturado aqui
vai ser copiado para o argumento x isso é automático e o valor que estiver na variável num final vai ser copiado pro pro argumento Y automático também e esses dois valores eles são usados dentro da função para escrever na tela os números e além disso outra observação essa variável I que eu criei aqui dentro da função ela é uma variável local ela só existe dentro da função e não pode ser acessado em outro ponto do programa tá tem que ser assim sempre não fica seu critério se você vai usar local ou Global Depende de como
você tá criando a aplicação vamos rodar para ver se deu tudo certo então rodando Digite o valor inferior vamos supor que eu quero números de 1 até 10 dou enter e tá lá gerada a sequência de 1 até 10 pela chamada a essa função muito bom vamos tentar um outro intervalo então para testar Digite o valor inferior 12 até 30 ele gera os números de 12 até 30 então é assim que a gente trabalha com múltiplos argumentos em uma função basta declarar os argumentos com seus respectivos tipos separados por vírgulas e na hora de chamar
a função passar as variáveis ou os valores que vão ser copiados para esses argumentos na mesma ordem em que eles foram declarados e no próximo vídeo nós vamos ver como utilizar a função retorne dentro do das nossas subrotinas para criar funções típicas funções que produzem um valor e Retornam esse valor que a gente pode gravar em outro lugar em vez de simplesmente exibir na tela como é o caso desse procedimento aqui prosseguindo nosso estudo de subrotinas vamos ver como utilizar a instrução retorne na criação de funções a instrução retorne ela permite que a gente retorne
ao chamador um valor que foi gerado dentro de uma subrotina E aí a gente vai chamar essa subrotina de função efetivamente Isso é o que vai diferenciar uma função de um procedimento porque o procedimento apenas executa tarefas por exemplo escrever na tela mas uma função além de processar os dados ainda retorna esses dados para quem a chamou e quem chama essa função pode ser uma outra função por exemplo ou seu valor pode ser atribuído a uma variável como a gente vai ver no ex exemp como que é a sintaxe da instrução retorna você vai criar
a tua função especificando um tipo de retorno então aqui agora você vai colocar Qual é o tipo de retorno do dado que vai ser retornado nome da função e os argumentos pode ter um ou mais argumentos aí fica critério da da sua função do que você precisa fazer com ela vem com o código da função dentro das chaves e no final você coloca a instrução retorne e aqui o valor que vai ser retornado geralmente é o nome de uma variável interna que que contém esse valor a instrução retorna não precisa necessariamente ser a última instrução
do bloco mas ela vai ser a última a ser executada quando a instrução retorne é executada a função finaliza então ela vai ser colocada no local estratégico aqui dentro porque a função vai finalizar assim que ela for executada retornando o valor para o chamador e nós vamos ver o exemplo agora no Portugal Stúdio lá nós vamos criar este programinha aqui vamos ver qual que é a nossa tarefa cria um programa que use uma função para calcular e retornar a área de um círculo solicitando ao usuário o valor do o valor do Raio R dessa circunferência
como é que a gente calcula a área do círculo a área é pi vees R que é o raio ao quadrado Então a gente vai implementar uma função que receba o valor do Raio e e aplique essa formazin para calcular e depois devolva esse valor de área pro nosso programa poder efetuar qualquer outra tarefa que seja necessária então lá no Portugal estúdio a gente vai fazer da seguinte forma eu crio um novo arquivo e aqui a gente vai começar e inserindo a biblioteca matemática Então a gente vai precisar dessa biblioteca tá biblioteca matemática eu vou
dar para ela o apelido de m minúsculo por que que eu vou incluir essa biblioteca porque ela tem o valor de Pi que a gente vai precisar dentro da nossa aplicação também vou precisar de uma variável do tipo real que vai ser o raio fornecido pelo usuário e uma variável também do tipo real que vai ser a área total a área calculada essa variável vai receber o retorno da nossa função beleza Vamos definir a função então lembrando a função não pode ser definida dentro da função início então fora da função início a gente vai criar
uma nova função Então vou escrever aqui definir a função vou chamar essa função de calcula área função ou funcão como essa função vai retornar um valor eu preciso dizer qual é o tipo desse valor O valor vai ser real o cálculo vai ser um número real porque recebe um raio que é um valor real faz o cálculo e retorna um valor real o nome dela calcula área e ela vai receber como argumentos apenas um valor um valor do tipo real que eu vou chamar de R que é o raio bom Vamos abrir aqui o da
função e vamos programá-la como é que vai ser o cálculo dela bom real área eu vou criar uma variável interna aqui chamada área essa área você pode chamar de outro nome área círculo por exemplo se você não quisesse confundir ela vai ser inicializada com valor zer então 0.0 e aí eu vou dizer que essa variável área círculo recebe M lembra m é Nossa biblioteca matemática ponto pi Olha só o pi já tá aqui pi é um valor real ponto pi que multiplica R que multiplica R ou seja R qu r x r é R qu
R é o valor que o usuário vai passar por meio desse argumento aqui beleza e aí eu vou usar a instrução retorne Olha que ela fica vermelhinha para retornar o conteúdo da variável área círculo então quando essa função for executada vai ler e receber um valor real pro raio vai efetuar essas duas operações aqui de criação de variáveis e cálculo ele vai retornar o cálculo né o valor que foi armazenado em área círculo Então não vai simplesmente escrever na tela vai retornar pra gente colocar em outro lugar que lugar vamos programar o programa principal agora
então aqui eu vou começar com uma uma instrução escreva que vai ser o seguinte qual o raio da da da circunferência ou do círculo tá então qual o raio do Círculo vai ficar um pouquinho menor vamos supor que o nosso programa trabalha em centímetros Então vou dizer em cm quadrados Qual é esse valor legal o programa Vai ler o valor que o usuário digitou e vai colocar na variável raio que tá ali em cima então a variável raio tem o valor que o usuário forneceu e agora a gente vai invocar a função eu vou dizer
que a minha variável área total essa variável que eu criei aqui em cima como tipo real então área total recebe o retorno do chamado na função calcula área Olha que legal quando eu passo para essa função o conteúdo da variável raio então a função calcula área recebe o que tá em raio que o usuário forneceu copia automaticamente isso a gente chama isso de passagem de parâmetros a passagem de parâmetros então copia o valor pro argumento R que é utilizado dentro da função efetua o cálculo retorna O valor de área círculo e esse valor ele vai
ser então atribuído para essa variável externa à função e aí a gente pode simplesmente colocar uma mensagem na tela para mostrar esse valor ou fazer qualquer outra coisa com ele essa é a grande sacada da função Como como o valor retornado Tá gravado guardado numa variável eu posso usar quantas vezes eu quiser em outros pontos do programa para fazer outros cálculos passá-lo para outras funções e assim por diante Então vamos colocar aqui a mensagem a área do círculo ou da circunferência no caso né do Círculo e E aí a gente concatena a área total e
posso concatenar também para ficar mais bonitinho centmetros quadros porque o raio vai ser fornecido em centímetros é isso aí vamos testar agora então vou rodar o programa qual o raio do Círculo em centímetros vamos supor 5 cm então a área dele é isso aqui tudo 78.53 esse monte de números cm qu Beleza vou rodar de novo com outro valor então qual o raio do Círculo em centímetros aqui não é centímetros quadrados eu vou mudar dois 12.56 beleza só tirar esse quadrado porque o raio não é quadrado ele é um valor linear então rodando mais uma
vez para finalizar vamos supor raio de 10 cm tá lá 314 p19 cm qu Beleza então tá feita aí a criação de uma função que usa a palavra chave retorne retornando o valor que foi gerado calculado processado dentro da função para quem a chamou e no caso quem a chamou foi justamente essa variável que recebeu o retorno da função nesse vídeo Extra sobre subrotinas eu vou apresentar o conceito de recursividade ou recursão que que é recursividade a gente vai definir recursividade como sendo uma subrotina que consegue invocar a si mesma a si própria dessa forma
uma função recursiva ou uma subrotina recursiva é uma função ou procedimento que chama a si mesma diretamente a gente vai chamar isso de recursão direta ou indiretamente por meio de outra função Para quê Para resolver um problema qualquer e para resolver esse problema as funções recursivas vão dividi-lo em dois casos um caso base que é o caso mais simples e o caso geral que é o que se aproxima ou se assemelha ao problema original muitas vezes a gente vai usar a recursividade para resolver problemas que são difíceis de resolver de outra forma com algoritmos convencionais
então uma coisa que tem que ficar bem clara é que a gente pode reescrever algoritmos escritos de forma vamos dizer assim convencional de forma recursiva e a gente também pode pegar um algoritmo recursivo e escrever de forma convencional então você não é obrigado a usar recursividade nos seus programas Mas é interessante conhecer o conceito como é que funciona a recursividade bom uma função recursiva vai ser invocada para resolver um problema você vai chamar essa função lá no seu programa essa função ela consegue resolver diretamente o caso mais simples do problema que a gente vai chamar
de caso base então caso base é a forma mais simples possível de um problema que essa função resolve direto quando a função é chamada com o caso base ela retorna um resultado então quando a gente aplica o caso base a essa função ela consegue resolver e retornar um resultado se a gente invocar Essa função para um problema que é mais complexo do que o caso base a função vai dividir esse problema em duas partes uma que ela sabe resolver direto que é o tal do caso base e outra que ela não sabe resolver que é
o problema em geral então pra recursividade funcionar a parte que ela não sabe resolver é parecida com o problema original mas sempre um pouquinho simplificada um pouquinho menor ou mais simples e aí a função chama a si própria para tentar resolver esse problema um pouquinho menor provavelmente ela não vai conseguir resolver o problema menor então ela vai tentar resolver um problema um pouco mais simples ainda isso a gente chama de chamada recursiva recursivo ele vai ser executado várias vezes sequencialmente é sobre versões cada vez mais simples do problema original até chegar no caso base e
aí você vai lembrar que o caso base ela consegue resolver diretamente então quando o caso base for resolvido a função recursivo vai conseguir usar esse valor para resolver os casos um pouco mais complexos até chegar no caso original que é o problema que a gente queria resolver no início Então você tem um problema para resolver esse problema ele vai ser dividido em problemas cada vez vez mais simples até chegar no caso base no caso base A recursividade ou a função recursiva resolve direto o problema e Repassa esse valor resolvido essa resolução para uma versão do
problema um pouquinho mais simples ou um pouquinho mais complexa no caso que o caso básic e aí esse problema é resolvido essa resolução é passada pra versão do problema que é um pouquinho mais complexa ou mais simples do ponto de vista do ponto de vista do problema resolver e assim sucessivamente até conseguir resolver em definitivo o nosso problema original Como assim que coisa mais maluca é esoterismo isso É Magia é Mágica Não não é é algo que funciona é real Às vezes a gente utiliza recursividade como como um recurso interessante mas ela não é muito
simples de entender então você tem que praticar bastante a escrita de de programinhas recursivos para que esse processo aí seja simplificado e se torne natural para você eu recomendo que alguns algoritmos inclusive alguns que você escreveu aqui no curso que você Tente reescrevê-los usando recursividade quando for aplicável vamos ver um exemplo clássico fatorial fatorial é um conceito da Matemática no qual a gente vai ter um número n e o fatorial desse número n vai ser dado por esta fórmula n fatorial a exclamação significa fatorial é igual ao valor de n que multiplica n - 1
ou seja o número antecessor a ele que multiplica então n - 2 o antecessor do antecessor que multiplica n - 3 N - 4 n - 5 e assim sucessivamente até chegar em 1 Sendo que 1 fatorial e zero fatoriais são iguais a 1 é esse aqui você já deve estar percebendo ou pensando é o caso base porque se a gente resolve direto um fatorial e zero fatorial já sei é um Então sempre que eu for calcular o fatorial desses dois números já tá calculado na verdade 5 fatorial então vai ser igual a 5 vezes
o antecessor 4 vezes o antecessor 3 x 2 até chegar em 1 que é igual a 120 então 5 fatorial é igual 120 a gente quer implementar um algoritmo que resolva essa situação de forma recursiva dá para implementar também de forma não recursiva você consegue fazer isso com laços de repetição por exemplo mas aqui a gente tem o seguinte esse fatorial é uma sequência de operações que são parecidas são iguais na verdade n são multiplicações por antecessores cada vez mais básicas porque a gente vai multiplicando o número por um valor cada vez menor até chegar
em um e o um é um caso base Porque a gente já sabe diretamente qual é o valor do fatorial de um Então esse aqui é um exemplo perfeito pra gente estudar recursão ou recursividade então o funcionamento seria isso ó fatorial de 5 5 fatorial é 5 x 4 fatorial porque é 5 x 4 x 3 x 2 x 1 e 4 fatorial é 4 x 3 x 2 xes 1 então 5 fatorial é 5 x 4 fatorial 4 fatorial é 4 x 3 fatorial 3 fatorial 3 x 2 fatorial e o 2 fatorial 2
x 1 fatorial e 1 fatorial é o caso base é 1 já tá resolvido então de posse desse valor 1 a gente faz o percurso inverso 1 então 2 x 1 factorial na verdade é 2 x 1 2 x 1 é 2 portanto 2 2 fatorial é 2 então 3 x 2 fatorial é 3 x 2 que é 6 então 3 fatorial é 6 4 x 3 fatorial portanto é 4 x 6 que d 24 então 4 fatorial é 24 5 x 4 fatorial portanto é 5 x 24 que é 120 ou seja 5 fatorial
é 120 Então veja que partindo do caso base tendo um valor o valor mais simples a gente consegue ir substituindo esse valor nos casos cada vez mais complexos até chegar no no problema original e o problema está resolvido Então é assim que a gente resolve o problema do fatorial de forma recursiva esse é o mecanismo agora como implementar isso em código então vamos pro Portugal Studio e vamos criar o fatorial recursivo Então vamos lá vamos fazer a função Zinha fatorial recursivo que que eu vou precisar aqui bom eu vou precisar de uma variável do tipo
inteiro Lembrando que o fatorial é para números inteiros tá então eu vou chamar essa variável de num e vou inicializar com zero essa variável aqui é para capturar o número que o usuário vai fornecer o usuário vai dizer eu quero o fatorial de cinco ou de sete ou de 10 ou de 15 Então a gente vai armazenar nesta variável n que eu inicializo com zero e também vou criar uma variável também do tipo inteiro que eu vou chamar de Fat que vai receber o resultado o fatorial calculado vou inicializar com zero também para me garantir
Beleza agora eu vou escrever uma mensagem aqui no meu programa do tipo cálculo do fatorial de um número Beleza então cálculo do fatorial de um número embaixo escreva digite um número positivo então digite um número positivo tem que ser positivo pro fatorial tá ah se o usuário quiser digitar um negativo aí você tem que tem que certificar que haja algum tipo de validação para impedir que ele Execute um negativo não vou fazer isso aqui porque senão toma tempo demais mas você deve implementar isso aí para treinar inclusive demos o número e colocamos na variável num
aí a variável fat vai receber o resultado da função fatorial que age em cima do número que usuário digitou e aí eu vou mandar escrever na tela uma mensagem do tipo o fatorial de número que o usuário digitou é e conceno com o conteúdo da variável fat é isso que a gente precisa Então esse é o programa principal esse programa ele é baseado portanto nesta função fatorial que veja o próprio Portugal Stúdio tá dizendo que não foi declarada Porque é ela que a gente vai criar agora então vamos criar essa função fatorial fora da função
início como você já sabe a gente pula aqui uma linha e a gente vai definir uma função que eu vou chamar de fatorial essa função devolve um valor inteiro ela é uma função Não é um procedimento Então se ela devolve um valor inteiro eu vou dizer que temos um inteiro aqui o nome dela vai ser aquele ali que eu dei fatorial pode ser o nome que você quiser na verdade né desde que você use o nome ali em cima e ela vai receber como argumento também um valor inteiro inteiro eu vou chamar de n tá
posso chamar do que eu quiser aqui então Vamos definir a função de acordo com aquelas regras aquelas regras básicas Ah que a gente acabou de ver da recursividade Primeiro vamos o caso base caso base é assim para zer ou para 1 o fatorial é 1 já é sabido Então se abro parêntese AB outro parêntese se o valor de n passado para função for igual a zer ou se o valor de n for igual a 1 nós já sabemos Qual é o fatorial então eu mando a função retornar o valor 1 então a função retorna um
esse é o caso base Tem que existir um caso base Se você não conseguir determinar um caso base na hora de analisar o problema não você não vai conseguir eh criar uma função recursiva para resolver o problema vai ter que resolver com uma função convencional Beleza então se n = 0 ou 1 retorne um tá deixa eu colocar um parêntese que faltou aqui senão e se não for 0 1 Que o usuário digitou Então nesse caso é agora que vem a recursividade senão retorne Como que é o fatorial é o valor de n multiplicado pelo
seu antecessor e como a gente viu lá na na nos slides na verdade é o valor de n multiplicado pelo fatorial do seu antecessor então fatorial de 5 é 5 x 4 fatorial de 4 é 4 x 3 fatorial e assim por diante Então a gente vai mandar ele retornar o n multiplicado pelo fatorial do interior do antecessor que é n- 1 veja que interessante estamos chamando dentro da função fatorial a própria função fatorial e aqui tá a recursividade quando eu passar para essa função um valor que não que não é zero nenhum a função
vai cair nesse senão esse valor lógico aqui esse teste lógico vai retornar falso vai cair no senão E aí o número que o usuário digitou vai ser multiplicado pelo fatorial do antecessor dele mas o fatorial do antecessor dele nós não temos sem problema a função fatorial está sendo chamada de novo então ela vai ser chamada agora por número anterior quatro por exemplo E aí esse processo todo vai se repetir até chegar no caso base o caso base retorna O um pro chamador que então calcula o fatorial daquele valor que retorna pro outro chamador que retorna
pro outro chamador até chegar no valor n que o usuário digitou e isso deve resolver o problema certo é meio complicadinho de entender mas você vai ter que fazer um esforço aí para para entender esse mecanismo tá volta o vídeo assiste outras vezes tenta fazer exercício Mas vamos testar para ver se isso aqui realmente funciona então rodando o programa cálculo do fatorial de número Digite o número positivo Vamos começar com o cinco que a gente já sabe qual é o valor então cinco Enter o fatorial de 5 é 120 Beleza agora Note que o tempo
de execução ele foi um pouco elevado né isso acontece porque como a função chama ela própria várias vezes em sequência e depois tem que ficar retornando os dados os valores para ela própria eh as funções recursivas não costumam ter uma performance muito boa então você vai usá-la com parcimônia quando quando vale a pena então simplificar o código de tal forma que vale a pena você criar esse tipo de função tá se a gente tiver Passos muito grandes uma grande quantidade de Passos essa função Ela acaba ficando muito lenta por exemplo eu vou executar de novo
pro fatorial de 10 fatorial de 10 é 3. 6288 veja que o número vai aumentando bastante se eu chamar de novo pro fatorial de 50 ó já deu zero meu programa não conseguiu calcular estourei aqui é um número muito grande Vamos tentar um fatorial um pouco menor de 30 tá aí agora foi até um pouquinho mais rápido que o programa já tá já tá carregado na memória mas é isso aí gente então essa aqui é uma função recursiva uma forma de função recursiva não é apenas assim que a gente pode criar uma função de fatorial
dá para criar também com laços para mandando ele executar o os passos né de de n até 1 x vezes conforme a gente precisar mas é uma forma interessante é legal você conhecer isso aqui treinar um pouquinho porque às vezes vai te ser útil escrever funções recursivas fala pessoal aqui é o Fábio da boson Treinamentos e nesse vídeo faremos mais um exercício de lógica de programação que faremos hoje é criar um algoritmo que gera uma série de fibon tanto de forma recursiva quanto iterativa mas antes que que é a série de Fibonacci a série de
Fibonacci é uma sequência numérica infinita na qual cada número é a soma dos dois números antecessores a ele essa série começa usualmente com 0 e 1 e os próximos números são as somas 1 + 0 = 1 1 + 1 = 2 2 + 1 = 3 3 + 2 = 5 e assim sucessivamente como você você vê nesses primeiros dígitos aqui da série de Fibonacci nesses primeiros números da série a série de Fibonacci ela foi apresentada para os europeus por Leonardo de Pisa o Fibonacci um matemático italiano do século XI ele apresentou essa sequência
que leva seu nome num livro chamado Liber abat livro do Ábaco Na verdade acho que é Liber AB aqui porque em latim publicado em 1202 e o que a gente quer fazer é escrever um programinha e na verdade escrever um algoritmo usando lógica de programação vou usar o Portugal estudio para isso que gere essa sequência para nós e eu vou fazer isso de duas formas diferentes primeiramente de forma recursiva depois de forma interativa e a gente inclusive no final faz uma comparação entre ambas as formas a gente vai começar com o Fibonacci recursivo primeiramente como
é que funciona um fibon recursivo a gente vai ter casos casos base que são os casos que a gente resolve imediatamente dado um número X O resultado é y e acabou não precisa fazer cálculo e teremos o ca o caso geral pro Qual a gente vai ter que aplicar o algoritmo para poder gerar e descobrir quais são os números que a gente vai precisar no caso do Fibonacci a regra é a seguinte 0 e 1 como casos bases se você alimentar a função com zero ou com um o resultado imediatamente é zero ou um Ou
seja é o próprio número que você alimentou se x for igual a 0 o resultado da função é zer se for 1 o resultado da função é 1 Porém para outros números para n números nós vamos ter o caso geral no caso geral o Fibonacci no esquema recursivo ele vai ser igual a chamada do próprio fibon para n- 1 ou seja pro número anterior ao número que você quer gerar mais o anterior do anterior o predecessor que é n- 2 então somando esses dois valores Você tem o Fibonacci de n que é um número pra
gente gerar uma sequência de fibonaci a gente tem que aplicar isso sucessivamente para vários números aí a gente consegue gerar essa sequência por exemplo vamos determinar o terceiro Fibonacci de uma sequência o FIB TR aqui eu tô chamando de FIB nesse slide Então como é que a gente calcula o FIB de TR bom o FIB de TR ele começa assim FIB de 3-1 ou seja o anterior a ele mais o FIB de 3 - 2 O anterior do anterior seu predecessor aí a gente tem que o FIB de 3 - 1 seria o Fibonacci de
2 e o Fibonacci de 3 - 2 seria o Fibonacci de 1 porque 3 - 2 é 1 Note que 1 é um caso base Então o que a gente vai ter é que o Fibonacci de 2 que não é um caso base é o Fibonacci de 2 - 1 que é o seu antecessor mais o fibon de 2 - 2 veja que a gente tá chamando a mesma função diversas vezes chama a função dentro dela própria Isso vai ser somado com Fibonacci de 1 só que esse é o caso base esse a gente já
sabe a resposta Fibonacci de um é um Então vou somar um na sequência a gente resolve Fibonacci de 2 - 1 como sendo Fibonacci de 1 porque 2 - 1 é 1 e o Fibonacci de 2 - 2 é o Fibonacci de zero porque 2 - 2 é 0 veja que temos mais dois casos base ou seja a gente vai chamando a função recursiva até chegar nos casos base e a gente soma isso com aquele um que já obtivemos anteriormente E aí Fibonacci de 1 caso base é igual a 1 Fibonacci de z0 é igual
a 0 mais 1 1 + 0 + 1 e o resultado é o terceiro Fibonacci é o número do E aí se a gente chamar uma tabelinha de Fibonacci a gente vai verificar que o zerésima fibonaci é o zero O primeiro é 1 o segundo também é 1 porque 1 + 0 = 1 e o terceiro é o 2 porque 1 + 1 + 0 = 2 no caso 1 + 1 só o que importa porque z0 não vai vai não vai afetar a soma Então são sempre os dois antecessores que a gente vai somar
e dois então o terceiro Fibonacci é dois veja que a gente começa a contar do zero aqui tá dependendo do sistema alguns matemáticos consideram a série de Fibonacci como começando neste um não no zero e o próprio Leonardo de Pisa eh ele entendi FIB a série numérica que não tinha esse nome na época dele como começando no dois mas isso é indiferente porque o algoritmo é o mesmo para todos os casos legal então agora a gente vai lá pro Portugal Studio vamos implementar esse algoritmo do Fibonacci recursivo a gente vai escrever em código isso que
eu mostrei aqui funcionando para facilitar um pouco nossa vida e não demorar demais eu deixei um pedacinho do código já pré-escrita dentro da função início o código principal do programa com essas mensagens obter a sequência de Fibonacci Digite o número lê o número que o usuário digitou e coloco na variável número e depois eu executo um laço para com um contador Iniciando em zero até menor do que que número pra gente poder gerar a sequência de Fibonacci que começa no zerésima eu mando escrever o Fibonacci do índice I Na verdade ele vai gerar toda a
sequência de Fibonacci desde zero até o número que o usuário pediu até a posição que o usuário pediu Então esse número aqui é o número da de posições ou número de valores de Fibonacci que vão ser gerados basta chamar a função uma vez e todos serão gerado só que a gente precisa criar essa função então aqui embaixo função Fibonacci temos um Tod a fazer e aqui eu vou criar Esta função então primeira coisa que a gente vai fazer vamos declarar a função função o nome dela vai ser Fibonacci ela vai retornar um número inteiro então
inteiro Fibonacci que eu chamei de Fibonacci aqui em cima e ela vai receber como parâmetro o número inteiro também que eu vou chamar de X vou chamar que você quiser evidentemente dentro dessa função a gente primeiramente verifica os casos base Então se x for igual a 0 ou x for igual a 1 aí eu vou envolver ambos com esse parênteses externo Então se se x for igual a 0 ou x for igual a 1 a gente retorna O próprio x certo porque são os casos base beleza que que eu faço na sequência se não for
se não for eu vou chamar a recursão como é que eu chamo como é que eu faço essa chamada recursiva eu escrevo simplesmente um retorne e chamo de novo a própria função Fibonacci de x - 1 mais o Fibonacci de x - 2 ou seja O anterior e seu predecessor exatamente como a gente viu lá no exemplo do slide Então se o usuário digitar 01 vai retornar o próprio número se ele digitar de dois em diante ele vai retornar eh o Fibonacci chamando a própria função recursivamente Aí a gente faz um teste Então vamos executar
aqui para ver obter sequência de Fibonacci entre com o número vamos supor que ele digitou um então retornou zero porque eu gerei apenas um fibonaci lembre aqui é a quantidade de números da sequência que eu quero gerar não é a posição especificamente gerar outro vamos supor que eu Quira os cinco primeiros fibonaccis estão aí os cinco primeiros 0 1 1 2 e TRS veja que cada número é a soma dos dois anteriores vamos supor aqui O 10 tá aí 10 números de Fibonacci beleza Tá feito como essa função é recursiva a gente tem que tomar
cuidado porque a função ela fica chamando a si própria cada vez que ela chama a si própria e essa chamada pode acabar chamando ela mesma de novo depois dependendo do número que você passou ela vai chamar inúmeras vezes a função isso pode ocasionar algum gargalo de processamento ex eu vou executar essa função PR 40 fibonaccis quero saber os 40 primeiros valores de fibon da sequência então coloco aqui 40 dou enter e tá gerando veja que o programa não parou ele continua gerando um numerozinho por vez parou agora tá e se a gente olhar com carinho
ó tempo de execução 1516 segos ou seja então anota aí levou 15 segundos para gerar esses 40 números de Fibonacci usando a função recursiva gerou funcionou perfeito quanto mais números você colocar mais vai demorar você pode testar aí na sua casa com 50 60 ou mais beleza vamos fazer também essa função Agora só que de forma iterativa ou seja usando laços de repetição para fazer com laços de repetição eu vou comentar essa função que fibona aqui deixa eu escrever recursiva certo eu vou manter só esse comentário e vou aqui embaixo finalizar o comentário e aqui
eu vou criar uma outra função Agora Fibonacci iterativa beleza para fazer essa função Fibonacci iterativa comec é igual tá eu vou copiar esse comecinho aqui função inteira Fibonacci recebe o inteiro beleza só que agora eu vou precisar de algumas variáveis específicas como ela é iterativa Ela não vai ficar chamando a si próprio eu vou ter que indicar quem é quem dentro da função então eu vou usar alguns números umas variáveis inteiras Tá eu vou usar uma variável para gravar o o penúltimo número o número atual e o anti penúltimo ou seja o atual que tá
sendo gerado agora o anterior a ele e o anterior do anterior que é o Anti penúltimo que são os dois que que são somados para gerar o atual então eu vou chamá-las de anti penúltimo anti pum eh penum e número atual esses serão os nomes das variáveis penúltimo eu vou inicializar com zero número anterior eu inicializo com zero e o número atual eu vou inicializar com 1 tá então porque o primeiro número da sequência é zero e segundo número da sequência é um começa com zero e um então o número atual um e o penúltimo
zero não tem antepenúltimo não tem um anterior ao primeiro mas ele ele vai surgir durante o cálculo e aqui a gente faz o seguinte caso base caso base continua existindo se x for igual a 0 ou x for igual a 1 a gente simplesmente retorna O próprio x porque essa essa regra permanece ela continua sendo a mesma agora para qualquer número acima de dois né de dois para cima a gente a gente vai ter que fazer o cálculo iterativo para isso a gente usa um laço de repetição um laço para aí eu vou fazer um
para com variável contador aí começando em dois por que começo em dois porque o primeiro número o número o zés e o primeiro número da sequência de Fibonacci que seria na verdade o primeiro e o segundo números e estão aqui em cima nesse caso base você pode pensar como se fosse um vetor para não se confundir vetor começa a contar do zero então posição zero posição um já estão dadas tá é o próprio valor posição dois em diante é que a gente precisa calcular então começando em dois enquanto I for menor ou igual a x
tá tem que ser menor ou igual ao número que o usuário pediu E aí e mais mais o incremento de um em um então I menor ou igual a x porque eu preciso ir até o próprio valor que o usuário pediu né para poder gerar todos os números corretamente e aqui a gente simplesmente vai fazer o seguinte ó o anti penúltimo número recebe o valor que tá no penúltimo penum o penúltimo recebe o valor que tá no número atual e o número atual E aí o grande segredo ele recebe o que tá no anti penúltimo
anti penum somado com o que tá no penúltimo número ou seja a soma do seu antecessor e do predecessor dele tá aqui tá aquela grande formulinhas [Música] aqui em cima né Essa atribuição é justamente para que cada vez que eu gerar um número eu gerar sempre o próximo n É como se eu tivesse andando com o índice o anti penúltimo passa a ser o penúltimo o penúltimo passa a ser o atual E é só é o que a gente precisa Então o laço vai rodar de dois até o número que o usuário escolheu e os
números vão sendo gerados vão sendo somados para gerar o Fibonacci lembrando Isso aqui vai gerar um Fibonacci por vezes você vai jogar depois essa função dentro de um laço de repetição para ir gerando os fibonattis de uma sequência completa também daria para programar isso direto aqui dentro Mas eu não quero deixar muito complicado esse código porque não é o objetivo desse vídeo feito isso aqui é só a gente retornar retornar o quê o número atual porque no final das contas Esse é que vai ser a o somatório de todos os antecessores até chegar nele então
retorne número atual vamos rodar para ver se funciona Então olha lá tá feito esse aqui é o Fibonacci iterativo rodando entre com o número C ó gerou os mesmos cinco Fibonacci entre com o número 10 os 10 primeiros fibonaccis veja que não é o 10mo Fibonacci são os 10 primeiros tá se você quiser saber qual é o décimo Fibonacci você vai lá no programa principal e manda simplesmente imprimir o valor de Fibonacci de i É só isso que você precisa fazer e para finalizar vamos comparar o Fibonacci iterativo com o recursivo tá no recursivo Você
viu que eu tentei gerar o Fibonacci os 40 primeiros fibonaccis e Demorou 15 segundos para isso vamos tentar gerar os 40 primeiros fibonaccis aqui utilizando essa função iterativa olha veja aqui pros 10 primeiros levou 1.7 segundos vou tentar gerar os 40 então 40 fibonaci Vamos ver quanto tempo demora dou enter Pronto já gerou muito mais rápido se você olhar Olha só 7.9 m na verdade pode ser mais rápido clico coloco lá 40 enter gerou veja que ele não fica gerando um depois outro depois outro parados 2.4 m é muito mais rápido do que o esquema
recursivo que a gente viu anteriormente funcionam ambos os esquemas dão um resultado correto só que às vezes eh O código iterativo é mais rápido que o recursivo por isso sempre tem que tomar cuidado quando você for utilizar funções recursivas a programação delas fica mais enxuta é mais simples e às vezes isso é uma grande vantagem tá principalmente para para algoritmos complexos mas às vezes a performance acaba sendo um gargalo tem que levar em consideração isso complexidade do algoritmo versus performance do algoritmo o que que é melhor que que é mais importante para cada caso e
aí você decide o que usar recursivo ou iterativo tranquilo gente então tá aí lógica de programação algoritmo de Fibonacci tanto recursivo quanto interativo como comparativo de performance no final entre ambos CPF como você deve saber é o cadastro de pessoas físicas que é um documento de identificação emitido pela Receita Federal no Brasil todo mundo tem um CPF um número único de CPF e ele é essencial para um monte de atividades e serviços abrir uma conta no banco fazer compras emitir documentos entre outras o número do CPF ele é composto por 11 dígitos numéricos no formato
nove dígitos mais dois no final esses dois últimos dígitos são conhecidos como dígitos verificadores e eles são usados para verificar a validade do CPF em si e esses números eles são calculados a partir dos outros nove dígitos usando um algoritmo específico que é o algoritmo que a gente vai criar no vídeo antes da gente criar o algoritmo usando Portugal Stúdio no caso para que você depois possa portar para qualquer linguagem de programação que você queira vamos entender como é que é o processo então suponha esse CPF aí 667 556 317 traço 36 o traço 36
são os dígitos verificadores Na verdade são dois números 3 e se os pontos e o tracinho estão lá só para facilitar a visualização mas eles não fazem parte do cálculo evidentemente e a pergunta é esse CPF ele é válido como é que a gente calcula os dígitos verificadores bom para isso a gente vai usar os nove primeiros dígitos 667 556 317 a gente vai partir desses dígitos para fazer o cálculo dos outros dois primeiro passo a gente vai multiplicar esses dígitos por uma sequência numérica de 10 até 2 da seguinte forma primeiro dígito é esquerda
é multiplicado por 10 o segundo dígito da esquerda paraa direita multiplicado por 9 o próximo por 8 o próximo por 7 e assim sucessivamente até o último dígito que vai ser multiplicado por dois e aí a gente vai obter essa sequência de valores fazendo as as devidas multiplicações que que a gente vai fazer com esses números todos que foram gerados a gente vai somar esses números Então no próximo passo a gente faz um somatório desses valores então somando os números neste exemplo o resultado foi 200 294 agora o próximo passo com esse número 294 é
obter o módulo de 11 do resultado ou seja 294 mod 11 vai dar 8 no caso que que é o módulo módulo é o resto de uma divisão inteira então a gente faz uma divisão inteira de 294 por 11 e o resto o que sobra é o que a gente vai usar no caso é 8 mas 8 não é o dígito verificador ainda para chegar no primeiro dígito verificador que a gente faz agora é subtrair esse valor de 11 então 11 - 8 = 3 portanto 3 é o primeiro dígito verificador bom conseguimos o primeiro
dígito agora a gente precisa conseguir o segundo para isso a gente vai agregar esse dígito aos nove anteriores agora temos 10 valores e a gente vai fazer um processo similar tá a gente vai agora multiplicar os dígitos pela sequência de 11 a 2 então agora não é de 10 a 2 é de 11 a 2 porque tem um algarismo Extra então o primeiro na esquerda é multiplicado por 11 o segundo por 10 depois por 9 8 7 até chegar em do fazendo as devidas multiplicações a gente obtém esses valores numéricos E aí o processo é
o mesmo a gente vai somar esses números a gente soma todos esses valores obtidos deu 346 no caso aí a gente faz o módulo de 11 do resultado ou seja 346 divido por 11 divisão inteira sem sem casas decimais o que interessa é o resto o resto aqui é CCO mas c não é o dígito verificador o DV o dv2 é 11 menos esse valor no caso 11 - 5 = 6 portanto 6 é o dígito verificador número dois então TRS e se são os dígitos lembrando do CPF original ele terminava em 36 Então esse
CPF ele é válido Nossa tarefa agora é fazer tudo isso que a gente fez aqui na mão só que utilizando um algoritmo criando um programa de computador que ao ser alimentado com um CPF qualquer nos diz se ele é válido ou não então a gente vai lá pro portugol agora para fazer esse algoritmo bom tô aqui no Portugal Studio vou abrir um novo arquivo e a gente vai criar esse programinha a gente vai precisar de algumas coisas para esse programinha poder funcionar eu vou precisar de duas bibliotecas para começar a biblioteca de texto e a
de tipos porque a gente vai ter que fazer algumas conversões de valores então eu vou incluir a biblioteca de texto vou chamá-la de T minúsculo e vou incluir a biblioteca de tipos e também vou dar um apelido para ela n alternativo vou chamá-la de ti abreviação de tipos eu vou precisar de uma variável para armazenar o CPF que o usuário vai fornecer essa variável ela vai ser do tipo cadeia então cadeia CPF porque vai ser uma cadeia de caracter e eu vou precisar também de variáveis para armazenar os dígitos verificadores que vão ser calculados então
são números inteiros portanto inteiro vou chamar de dígito 1 e dígito 2 e vou precisar também de um vetor para armazenar os dígitos do CPF aqueles outros nove dígitos e mais os verificadores pra gente poder fazer os cálculos eu vou chamar essa esse Array de F und digitos e ele vai ter 11 posições porque são 11 caracteres ou os dígitos que um CPF possui e finalmente eu vou criar também uma variável do tipo lógico res para armazenar o resultado E eu vou inicializá-la com falso e essa variável vai ter um resultado Falso ou Verdadeiro dependendo
do CPF ser válido ou não no programa principal a gente vai pedir pedir pro usuário digitar o CPF então Digite o CPF Av validar e com a função leia a gente armazena esse CPF na variável CBF depois o que que eu vou fazer agora eu vou eu vou desmembrar esse essa string essa cadeia de caracteres pegando cada um dos caracteres e transformando num número e guardando dentro daquele vetor de dígitos para isso eu vou usar um laço para então para inteiro i igual a 0 vetor começa em zer e menor que 11 e Mais Mais
Um clássico aqui um laço para clássico aí o que que a gente vai fazer Deixa eu só apagar esse caracter aqui que eu batia mais beleza e o vetor CPF dígitos na posição dada pela variável I vai receber E aí eu vou vou utilizar e as bibliotecas que eu importei ali em cima para obter o caracter cada um dos caracteres a partir da string CPF eu utilizo a função t. obter und caracter já apareceu aqui ela recebe uma cadeia e um índice como argumentos a cadeia é o que o usuário forneceu o CPF o índice
é o valor de I da variável i ou seja cada caracter dentro do CPF vai ser extraído de dentro da cadeia individualmente vai ser retornado para dentro de CPF dígitos só que isso aqui ainda não vai funcionar por quê Porque os tipos são incompatíveis a gente tá trabalhando aqui desse lado com cadeia e aqui com números inteiros e eu preciso transformar isso para números para transformar para números a gente vai colocar isso aqui tudo colocar os parênteses aqui tudo isso aqui vai alimentar uma outra função da biblioteca de tipos que é ti. caracter und para
und inteiro essa é uma função que faz conversão de caracteres tá assim que eu digitei o nome da da função veja que o erro desapareceu Então esta linha aqui ela é muito importante ela vai pegar a string que o usuário digitou vai extrair cada elemento individual transformar em número e colocar numa das posições do vetor e isso vai me permitir fazer os cálculos que eu preciso que são aqueles cálculos que a gente viu na apresentação agora a pouco beleza agora a minha variável resultado recebe o retorno da função de validação eu vou chamar essa função
de valida CPF e ela recebe como argumento o vetor CPF dígitos eu passo o vetor inteiro para essa função certo a função não existe ainda a gente vai ter que criar por isso que ele tá tá reclamando aqui ó função não foi declarada no programa Tudo bem vou terminar essa esse corpo principal e a gente cria essa função então aqui dentro vai ter verdadeiro ou falso dependendo do CPF ter sido validado ou não e aí a gente usa um C um operador condicional para verificar se o resultado é verdadeiro então se for verdadeiro Então escreva
na tela CPF válido ou os caracteres estão corretos Tá feito aqui senão Escreva na tela que o CPF não é válido eu escreva CPF inválido e acabou esse é o programa principal o corpo principal do programa agora a gente vai criar essa função que é o mais importante essa função ela vai realizar aquele algoritmo executar aquele algoritmo que a gente acabou de ver na apresentação isso a gente vai criar fora da função início não posso criar uma função dentro de outra então eu seleciono essa chave que abre o início para ver que que a função
início Fecha aqui embaixo ficou marcado então dou um clique depois dela e fora dela pulo uma linha eu vou criar essa função valida CPF a variável que vai receber o resultado é do tipo lógico então a função valida CPF retorna um valor lógico então a gente começa criando da seguinte forma função que retorna O valor lógico e o nome da função é valida CPF essa função Recebe como argumento um valor inteiro só que não é um único valor é um vetor de valores porque ela trabalha com aquele vetor de números então eu vou chamar de
de números é um vetor de números para indicar que é um vetor aqui eu preciso colocar os colchetes se você for portar isso para outra linguagem tem que verificar na linguagem de destino como é que você passa um Array inteiro para dentro de uma função tá se precisa dos colchetes ou não ou de alguma outra coisa aí abro as chaves e a gente vai começar a codificar essa função primeira coisa que a gente vai fazer é declarar algumas variáveis aqui que a gente vai precisar eh aqui eu só vou precisar de variáveis do tipo inteiro
então inteiro eu vou declarar variáveis para serem usadas como como contadores aí para conter números eu vou chamar uma de I uma de J eu vou precisar de variáveis paraa soma porque uma das funções das operações que a gente realiza é somatório e resto a gente calcula módulo Então vou chamar variável de resto e variáveis para guardar os dígitos verificadores 1 e do eu vou chamar de dv1 e dv2 tá Então essas são as variáveis que a gente vai precisar pela ordem a gente primeiro precisa Obrigatoriamente calcular o dígito verificador um então coloco aqui um
comentário dígito verificador número um como é que a gente calcula isso aqui a gente começa zerando a variável soma soma recebe zer e também a variável J que vai receber zer e agora a gente vai executar um laço de repetição porque agora a gente tem uma repetição uma série de operações semelhantes em sequência aqui que é a multiplicação dos números então para I = 0 variável contadora I menor que 9 vai de 0 a 8 por quê Porque são nove números a gente vai trabalhar com aqueles primeiros nove dígitos então I menor que 9 e
mais mais aqui o que que a gente vai fazer dentro desse laço par a gente vai acumular o valor e decorrente das multiplicações sucessivas a gente consegue fazer isso numa única expressão a gente vai dizer que soma mais igual é soma com atribuição o que tá no meu vetor na posição dada por I que vai de zero até 8 Só que multiplicado pelo valor de J tá j j eu inicialize com zero mas na verdade é para inicializar com 10 volta aqui ó senão não vai funcionar porque J é justamente a variável que vai ter
aqueles números que vão de 10 até 2 certo E aí a gente tem que fazer essa variação em j j Men iG 1 ou seja começa a multiplicando por 10 depois multiplica por 9 depois multiplica por 8 7 6 5 4 3 2 até chegar em 1 né só que na verdade ele não vai multiplicar por um porque vai parar em dois vai ter dado o número de iterações adequadas aqui por isso a gente é importante a gente determinar direitinho e a quantidade de iterações do laço para isso aqui vai nos dar já no final
o valor total da do somatório que que a gente tem que fazer com esse somatório a gente tem que fazer o cálculo do resto né da divisão desse somatório por 11 no caso a divisão é o cálculo do módulo Então a gente vai dizer que o resto recebe a variável resto recebe o que foi somado módulo 11 então esse operador porcentagem significa módulo ele vai fazer a divisão inteira do valor de soma por 11 e colocar esse o resto dessa divisão inteira dentro da variável resto E aí a gente sabe que esse resto ainda não
é o o dígito verificador tá para calcular o dígito verificador O que que a gente vai fazer a gente vai verificar se o resto for menor do que 2 Então significa que o dígito verificador 1 é igual a zero Então se o resto deu menor que 2 o dv1 vai ser igual a zer tá essa é a regra senão [Música] o dígito verificador 1 vai ser igual a 11 menos o resto que é aquele cálculo que a gente fez legal muito bem por que resto menor que 2 dv1 iG 0 se o resto for menor
que 2 significa que ele é 1 ou z0 se você fizer 11 - 1 ou men 0 vai dar 10 10 São dois dígitos só que o dígito verificador um só pode ser um único dígito então a gente vai assumir que se o resto for 10 né Se o se o valor final for 10 na verdade o dígito verificador vai ser zero Essa é uma das regras para calcular esses dígitos CPF tá então o DV só pode ir de zer a 9 se por acaso no cálculo aqui aparecer 10 automaticamente a gente vai considerar ele
como sendo zero tudo bem isso aqui calcula o primeiro dígito verificador agora a gente vai calcular o segundo dígito verificador aqui comentá dígito verificador número 2 qual que é o processo bem parecido a gente vaiar a variel de soma e agora variel J conta os valores que vão multiplicando ela não vai comear em 10 vai comear em 11 porque agora eu tenho um dígito mais para multiplicar como gente viu L na apresentação e aí a gente vai fazer esse mesmo esquema aqui vou até copiar na verdade esse laço para a gente vai usar o mesmo
tipo de laço tá para fazer as multiplicações sucessivas Só que tem uma diferença agora em vez de de zer a 9 ele vai de zer até I menor que 10 porque eu tenho um dígito a mais o resto permanece igual beleza e aí a gente calcula o resto de novo então o que que é o resto resto é igual a soma módulo 11 que que eu faço com esse resto aqui de novo novo o mesmo esquema é só copiar esse mesmo código aqui para verificar qual foi o resto se ele foi um resto de 0
a 9 o próprio valor é usado se foi 10 ou 11 nesse caso a gente assume que ele é zero Então se o resto for menor que 2 e dv1 igual 0 senão o o dv1 vai ser 11 menos o resto na verdade não é dv1 é dv2 aqui né agora a gente tá calculando o dígito verificador dois então se o resto for menor que dois automaticamente o dv2 é zero senão você faz a conta 11 menos esse valor de resto tranquilo quase lá agora a gente precisa retornar o resultado tá como é que a
gente faz para retornar o resultado a gente vai comparar os dígitos que estão no CPF que o usuário forneceu com os dígitos verificadores que a gente acabou de de de calcular e verificar se eles são iguais se forem iguais o CPF é válido se não forem iguais o CPF não é válido então para isso a gente faz assim se abrimos parêntese duplo se o número na posição no legal que é o décimo número for igual ao dv1 ao dígito verificador 1 e o número na posição 10 for igual ao dígito verificador 2 então neste caso
os dois números bateram o CPF é válido a gente manda retornar retorne verdadeiro senão se um deles não bateu o CPF não é válido E aí retorne falso acabou tá feita a nossa função tá entendeu aqui porque por que eu uso o número na posição nove esse aqui é o primeiro dígito verificador ele vai ser armazenado aqui E esse aqui é o segundo dígito verificador tá então o número que o usuário forneceu tem o primeiro dígito verificador na posição no eu comparo com dv1 e o segundo número na posição 10 eu comparo com dv2 e
agora o nosso trabalho é testar isso aqui para testar a gente vai rodar o programa Ele pergunta qual o CPF que você quer validar vou digitar aquele mesmo CPF que tava na apresentação que era o 667 556 317 o final era 36 tá sem os pontos sem o tracinho dou enter e ele diz que o CPF é válido perfeito agora eu vou digitar um outro CPF um número qualquer da minha cabeça será que esse número de CPF aqui é válido vamos ver enter CPF inválido beleza nosso programinha tá funcionando tranquilamente você pode testar aí com
teu CPF na sua casa H E você vai vai verificar que ele vai dar que é válido se for um CPF real e se eu quisesse criar um gerador de CPF um programa que que geram CPF para mim do zero bom aí vai ficar como um desafio para vocês fazerem mas não é tão difícil não na verdade o que você precisa fazer é simplesmente e criar um algoritmo que gere os nove primeiros números de forma aleatória e depois aplique esse algoritmo de cálculo de dígito verificador para determinar quais são dv1 e dv2 E aí juntar
tudo numa string só então fica o desafio para vocês fazerem aí um gerador de CPF fala pessoal aqui é o Fábio da boson Treinamentos e neste vídeo vamos falar sobre mais um tópico interessante em computação vamos falar sobre paradigmas de programação antes de comear peço que me desculpem pela minha voz tô um pouco rouco porque eu tô com farit então dê um desconto aí para mim se não tiver muito muito fácil para entender o que eu tô falando tá bom vamos começar primeiramente discorrendo sobre o que é um paradigma paradigma em si no geral tá
de acordo com o dicionário que que é um paradigma é um exemplo que serve como um modelo é um padrão Ou um exemplo qualquer a ser seguido também a gente pode classificar como um princípio teoria o conhecimento que é originado da pesquisa e um campo científico qualquer Então isso é um paradigma no geral e paradigma aplicado à computação aí no caso a gente vai falar de paradigmas de programação especificamente e em Ciência da Computação a gente vai definir um paradigma como sendo a maneira como um determinado programador umum desenvolvedor de sistemas vai resolver um problema
específico fornecendo visão e determinando como o programador vai estruturar e executar o o programa então o problema vai ser resolvido por meio de um programa como é que esse programa vai ser estruturado como é que ele vai ser construído dependendo do paradigma que for escolhido então paradigma nada mais é que uma mane ou um estilo na qual você pode escrever um programa de acordo com as linguagens de programação escolhidas as diferenças entre os paradigmas de programação elas se dão mais pelas técnicas que podem ou não ser empregadas em cada um deles e também pelos conceitos
sobre os quais eles são constituídos e que eles empregam então assim como a gente na engenharia de software eh define diferentes metodologias as linguagens de programação são definidas pelos paradigmas de programação que são como fossem metodologias de programação eh as linguagens de programação são baseadas nos paradigmas e os paradigmas nos conceitos básicos da Computação assim Alguns paradigmas vão ser mais adequados para resolver alguns tipos de problemas x e outros para problemas Y por isso a gente vai acabar usando diferentes paradigmas para projetos distintos algumas linguagens de programação inclusive eh elas foram criadas com um paradigma
bem específico em mente ao passo que outras linguagens podem suportar dois ou mais paradigmas ou seja você consegue programar em estilos distintos na mesma linguagem a gente chama essas linguagens de multiparadigma suporte a vários paradigmas por exemplo Python e JavaScript Mas quais são os principais paradigmas de programação existem dezenas deles são muitos mesmo daria para escrever um livro de 500 páginas só para falar de paradigmas aqui eu vou abordar rapidamente Teoricamente apenas os mais comuns que a gente utiliza aí com mais frequência no dia a dia bom a gente tem dois grandes paradigmas principais imperativo
e o declarativo que a gente também pode chamar de abordagem imperativa ou abordagem declarativa e temos algumas derivações deles os paradigmas procedural orientado objetos estruturados são formas do paradigma imperativo e os paradigmas lógico e funcional são formas do paradigma declarativo então partindo da ideia de paradigma de programação a gente vai ter os paradigmas imperativos e declarativos para imperativo a gente vai classificar nesse vídeo proced plural oo orientado objetos e estruturado e para declarativos os paradigmas funcionais ou seja paradigmas para linguagens funcionais os paradigmas lógicos ou paradigma lógico começando então pelo paradigma imperativo essa é uma
abordagem bastante antiga linguagens no final dos anos 60 já usavam o paradigma imperativo aqui como é que vai funcionar você vai ter um conjunto de instruções detalhadas bem detalhadas que vai ser fornecida fornecido pro computador para que essas instruções sejam executadas numa ordem bem especificada qual que é o foco descrever com exatidão como o programa deve funcionar passo a passo ou seja o programador instrui a máquina a Como mudar o seu estado e a ordem em que essas instruções vão ser executadas vai ser definida e explicitamente controlada alguns exemplos de linguagem de programação imperativas o
Basic o fortran c c+ mais lembrando Que linguagens elas podem implementar mais de um paradigma Então você vai ver nomes de algumas linguagens aparecerem paradigmas distintos aqui uma vantagem do paradigma imperativo que é tem uma implementação simples tem algumas desvantagens não é muito fácil de usar quando o problema é muito complexo eh tem uma eficiência um pouco mais baixa e não permite por exemplo fazer programação paralela com facilidade pelo menos derivado do paradigma imperativo temos o o paradigma procedural eh e aqui a gente vai ter a adição do conceito de funções mais precisamente de subrotinas
ou procedimentos aqui a gente começa a fazer a divisão da execução do programa em blocos que são essas funções assim a gente consegue implementar modularidade e melhorar a organização do código linguagens que podem ser programados usando esse paradigma C Pascal cobol e outras também um paradigma mais antigo Então nesse caso agrupamos instruções em procedimentos aqui é um exemplo de um programinha nesse paradigma olá mundo básico em cobol esse código seria a implementação do do velho bom Olá mundo utilizando essa linguagem que é bastante antiga data do final dos anos 60 veja que provavelmente não tem
nada a ver com o que você conhece das linguagens que você usa no seu dia a dia se você tá costumado com Java com python com JavaScript perceba que é bem diferente mas existem aqui claramente as divisões divisão para identificação do programa divisão de ambiente divisão de procedimentos uma função um comando na verdade para mostrar na tela um resultado a frase que vai ser mostrada a nossa string e um comando para finalizar a execução e o paradigma estruturado meio parecido também derivado do paradigma imperativo aqui é utilizado de forma bastante extensivas as construções para controle
de fluxo por exemplo os condicionais eels estruturas de repetição laço a laço for outros tipos de Laços iterações a criação de subrotinas é amplamente usada recursividade indentação chaves para você criar os blocos e assim por diante manipulação de exceções etc então aqui é um paradigma bastante comum que provavelmente você já viu em Ação já deve ter utilizado as linguagens comuns como C Java PHP Python podem usar esse paradigma na criação dos programas é mais comum por exemplo em C e em Python do que em PHP ou em Java principalmente aqui um exemplo de um ham
mundo em C Então nesse caso a gente tem aqui inclusão de uma biblioteca um ponto de entrada do programa com seu valor de retorno a chaves para identificar o bloco uma função específica interna da linguagem com a string que deve ser tratada por ela no caso para exibir na tela e um comando de retorno para fazer e a finalização da execução Então esse é o ham mundo em si aqui eu tô eu tô trazendo códigos pequenos um Alam mundo básico em algumas linguagens como exemplo porque senão não dá tempo da gente falar sobretudo fica muito
extenso mas em vídeo sobre as linguagens separadas eu me aprofundo bastante nesse assunto programação orientada a objetos também um tipo de paradigma imperativo esse aqui é um dos mais usados atualmente você também provavelmente já programou alguma coisa orientada objetos e mesmo que você não seja profissional esteja na escola na faculdade estudando você já deve ter tido contato com isso aqui os elementos são tratados por entidades representadas por objetos que T propriedades e ações os métodos e os atributos e se usam classes como modelo para criação desses objetos na memória ou seja para fazer a instanciação
dos objetos tem algumas vantagens facilita a compreensão do programa porque separa a funcionalidade e a responsabilidade assim o código é organizado em objetos que vão que possuem um estado que somente vai ser modificado pelo código que é parte do objeto em si isso aqui também vai implementar conceitos do tipo herança polimorfismo encapsulamento entre outros linguagens orientadas aos objetos Java csharp small Talk Python veja que o Python ele pode ou não ser orientado a objetos depende como você quer abordar a programação o Java ele é orientado a objetos existem muitas outras linguagens também que usam esse
paradigma aqui um olá mundo em csharp em csharp a gente já tem uma estrutura um pouquinho diferente a gente já tem o conceito de namespace a criação de classe sempre obrigatória nesse caso nome da classe criação de um método de entrada um método Main tá um outro método associado a uma classe console WR Line que é para escrever alguma coisa na tela que efetivamente faz o que a gente quer que o programa faça tá E os blocos delimitados por Chaves então aqui um exemplo de código orientado a objetos Lembrando que aqui no canal a gente
tem um curso completo de csharp dá uma conferida depois lá aqui na nos nossos vídeos Bom falamos sobre o paradigma imperativo e algumas derivações vamos ver o paradigma declarativo uma outra Grande Família de paradigmas aqui é um conceito bem diferente que o programador ele vai dizer pro computador o que ele quer que seja feito e não como deve ser feito é uma abordagem bem distinta aqui o programador ele não vai dizer passo a passo que o computador Dev deve fazer ou deve executar ele vai dizer o resultado que ele quer obter no final então escondendo
assim no máximo a complexidade do código isso traz a linguagem de programação Bem próxima da linguagem humana em outras palavras o programador ele declara propriedades do resultado que ele quer mas não como chegar a esse resultado especificamente não vai definir especificamente a ordem na qual as instruções vão ser executadas definindo assim a lógica do programa mas não necessariamente um controle de fluxo detalhado exemplos de linguagens prolog esql xquery lisp entre muitas outras que existem dentro do paradigma declarativo nós temos o paradigma funcional isso aqui aqui vai ser baseado num conceito chamado de função de primeira
classe A gente vai dizer que uma linguagem possui funções de primeira classe quando as funções nessa linguagem elas forem tratadas como se fossem uma variável qualquer elas podem ser passadas como argumentos para outras funções retornadas por uma função ter valor atribuído a uma variável por exemplo então aqui é encorajada a escrita de programas usando quase exclusivamente funções e assim acaba obviamente trabalhando com índice de modularidade muito elevado o que pode facilitar a manutenção do código posteriormente então o resultado desejado ele vai ser declarado como um valor de uma série de aplicações de funções alguns exemplos
de linguagens haskel erlang Scala F Sharp lisp aqui Eu já acredito que são linguagens que talvez vocês não tenham tanto contato assim talvez não tenham e sequer ouvido falar de algumas delas que já não é um paradigma tão comum mas ele é interessante e tem suas aplicações um outro paradigma também declarativo é o paradigma Lógico que é fundamentado na lógica matemática lógica formal aqui o resultado que você quer no processamento ele vai ser declarado como resposta a uma questão uma questão baseada num sistema de regras e fatos então ou seja um conjunto de sentenças em
forma lógica que vai expressar Fatos e regras aqu esses Fatos e regras vão ser chamados de cláusulas linguagens que implementam paradigma lógico as principais são o prolog e o datalog também são linguagens que talvez vocês não conheçam ainda aqui então dois exemplos de linguagens declar mas precisamente funcional e lógica haskel e prolog haskel veja que a gente tem a declaração de um módulo M onde M recebe a função string Line olá mundo que no caso a frase que eu quero escrever na tela em prolog é bem diferente Olha só m write escreva olá mundo e
new Line acabou veja que eu não preciso especificar como vai ser feito isso só digo quero que escreva olá mundo aí beleza vai ser escrito olá mundo claro que essas linguagens são bem mais complexas do que isso tá que eu não não tenho nesse vídeo curtinho como a me aprofundar na sintaxe de cada uma delas mas é óbvio que eu posso fazer cursos específicos sobre cada uma dessas linguagens e colocar aqui no canal se assim vocês o quiserem eu peço que vocês deixem aqui nos comentários aqui embaixo do vídeo se vocês têm interesse em que
eu me aprofunde em alguma dessas linguagens um minicurso por exemplo de rask de prolog ou de lisp ou alguma essas linguagens que não são tão comuns no dia a dia mas que tem sua utilidade em Campos de nicho deixa nos comentários aqui embaixo se a gente fosse Comparar as abordagens vamos supor que eu que eu use um algo do dia a dia pedir um café se fosse programar meu robozinho para pedir um café ou fosse listar as instruções para pedir um café no papel como é que seria Isso numa abordagem imperativa por exemplo estruturada Seria
algo mais ou menos assim entra numa cafeteria pego a fila para fazer o pedido quando chegar a minha vez fazer o pedido aqui tem uma condição pagar aguardar o café ser preparado outra condição tem que aguardar retirar o café no balcão então numa linguagem estruturada imperativa eu faria algo mais ou menos assim passo a passo numa ordem lógica instrução por instrução numa abordagem declarativa por exemplo uma linguagem lógica como é que seria isso seria assim um café por favor eu simplesmente digo o que eu quero no final e aí eu vou obter o meu resultado
Claro que não é tão simplório assim algumas coisas a gente tem que ajustar e programar para esse script para esse programa funcionar mas a filosóficamente é assim que vai funcionar agora não pense você que as linguagens declarativas são melhores que as imperativas por conta disso cada uma tem sua aplicação cada uma vai ter o seu nicho de uso alguns problemas eles podem ser resolvidos mais facilmente com linguagens imperativas e outros com linguagens declarativas então não existe um paradigma especificamente melhor existe aquele que resolve melhor o teu problema atual no teu projeto legal lembre-se sempre disso
Resumindo então nós temos duas grandes famílias de paradigmas os imperativos e os declarativos os paradigmas imperativos tem como foco como executar o algoritmo como resolver o problema definindo assim fluxo de controle eh na forma de declarações que vão alterar o estado do programa um paradigma imperativo pode ser derivado por um paradigma procedural orientado a objeto ou estruturado já os paradigmas declarativos têm foco em o que executar definindo assim uma lógica do programa mas não necessariamente um fluxo do de controle explicitamente E extremamente detalhado exemplos de paradigmas que são declarativos paradigma funcional e o paradigma lógico
beleza gente bom a ideia nesse vídeo Foi simplesmente apresentar o conceito de paradigmas em programação para vocês listar os principais paradigmas e trazer um pouquinho de informação sobre cada um deles para tentar definir e diferenciar um pouco várias linguagens pertencem a um único Paradigma e muitas linguagens pertencem ou implementam vários paradigmas E aí de novo pergunto para vocês vocês querem ver algum curso de alguma linguagem específica aqui no canal deixa nos comentários aqui embaixo eu tô pensando em qual linguagem eu vou abordar no começo do ano que vem e pretendo fazer aí uma linguagem de
programação completa por semestre mais ou menos aqui no canal né para manter algo que eu consiga fazer e finalizar direitinho eh andando junto com os demais vídeos que eu já tenho então botem aqui embaixo nos comentários do vídeo que linguagens vocês gostariam de ver quais vocês vocês acham que é interessante que é importante né algumas pessoas me falaram em Rust por exemplo já pediram essa linguagem algumas em rask deixa nos com comentários aqui embaixo aí eu vou decidir depois que linguagem vai ser interessante pra gente complementar o canal da boson treinamentos api biblioteca e Framework
são termos que aparecem com bastante frequência em desenvolvimento de sistemas engenharia de software e áreas correlatas e muitas vezes causam confusão no desenvolvedor no programador ou até mesmo no estudante e para trabalhar como desenvolvedor é fundamental a gente entender e saber a diferença entre esses conceitos então é sobre isso que eu vou falar Neste vídeo começando sobre a api api que é uma sigla de application programming interface ou interface de programação de aplicações é uma camada de software para fornecer requisição e resposta estruturadas ou seja uma espécie de interface que permite solicitar um serviço para
um sistema e obter uma resposta desse sistema de forma bastante simplificada e a api ela serve para definir como uma tarefa pode ser realizado usando a biblioteca isso é uma coisa interessante esses três termos eles às vezes confundem um pouquinho porque eles estão eh intimamente relacionados então a api é um conjunto de regras para realizar uma tarefa Como assim a api ela permite que uma aplicação uma aplicação que você tá desenvolvendo por exemplo interaja com um serviço que pode ser externo mas também pode ser interno usando um conjunto de comandos simplificados Então eu preciso realizar
uma tarefa específica dentro do meu programa e eu utilizo um comando simples por meio de uma API para poder acessar esse serviço e realizar essa tarefa assim um software pode se comunicar com outro software para fazer requisição e resposta como a gente citou anteriormente então de forma simplificada uma API é uma interface que vai fornecer comandos funções e acesso a elementos de um software qualquer a arquitetura simplificada da API é como você está vendo na ilustração você vai ter uma aplicação cliente a api em si que é uma camada intermediária e a aplicação no servidor
né ã que pode estar rodando de forma local ou mesmo remota que é bastante comum e a api permite que você faça chamadas a funções nesse servidor e obtenha as respostas como retorno alguns exemplos de apis do mundo real existem milhares de apis na verdade muitas são abertas outras são comerciais são utilizadas especificamente dentro de empresas algumas podem ser adquiridas algumas delas eu incluo aqui nesse slide então wegl para gráficos 2D e 3D com JavaScript e ipr rs.io é uma API para geolocalização Open layers uma API de mapas n para você poder integrar mapas numa
aplicação qualquer que você queira Open weather map que é mapa aí paraa previsão do tempo então se você quer Eh integrar informações de previsão do tempo dentro de uma aplicação como é que eu faço isso eu faço chamadas a um serviço de previsão do tempo mas como é que eu faço essa chamada por meio de uma API api do YouTube que é bastante utilizada já vou mostrar e Wi Win api que é api do Windows que é uma API do sistema operacional que permite fazer chamadas de sistema para realizar tarefas do sistema em si Então
veja que a api não é necessariamente o acesso a um serviço externo pode ser um acesso a um serviço dentro de um sistema local no caso da da api do YouTube ela pode ser usada por exemplo para fazer isso aqui esse aqui é um site chamado social Blade que é um site que traz informações estatísticas de redes sociais no caso eu tô aqui com o social Blade configurado para mostrar estatísticas do YouTube do canal boson treinamentos então ele traz um monte de informações sobre o meu canal aqui no YouTube por exemplo número de uploads 1618
esse é o número de vídeos que eu tenho postados aqui no canal tem 1618 vídeos aqui para você explorar a gente tá chegando aí na marca doss 300.000 inscritos 30 milhões de víde views país Brasil e assim por diante e aqui um monte de outras informações tá de onde vem essas informações então a questão é essa essas informações elas vêm lá do YouTube então lá no YouTube você consegue acessar essas informações todas mas como é que eu integro Isso numa aplicação e coloco num painel de visualização como esse aqui do Social Blade usando API de
acesso do YouTube que possui funções específicas que de forma muito muito simplificada podem ser programadas para puxar esses dados trazer e colocar numa interface como essa daqui então é para isso que serve uma API legal e api ela acessa o que exatamente geralmente ela vai acessar as bibliotecas que que é uma biblioteca biblioteca é um dos conceitos fundamentais em programação a biblioteca é uma forma de organização de código pré-estruturas funções para uso nas aplicações o código pode pode estar na forma de um texto plano como por exemplo um arquivo de script ou um arquivo binário
e dentro da biblioteca você vai ter função você vai ter classe você vai ter procedimentos você vai ter lógica que pode ser aplicada na sua aplicação Então as bibliotecas elas vão ter funções geralmente para tarefas específicas então não não é algo totalmente genérico Então você vai ter bibliotecas para manipulação de Strings biblioteca para manipulação de imagens biblioteca de acesso a bancos de dados e assim por diante e com as bibliotecas a gente consegue implementar as regras da api então quando a api diz por meio de um comando puxa os dados de número de de vídeos
do canal do YouTube vai ter uma biblioteca lá no no servidor do YouTube rodando eh sendo executada dentro da aplicação que vai fazer essa Contagem e responder para pro meu comando de api que vai trazer de volta paraa minha aplicação essa informação então a biblioteca ela é executada quando a gente precisa de um serviço e importantíssimo Ah um dos grandes benefícios de usar bibliotecas é a rapidez no desenvolvimento da aplicação por eu não preciso escrever o código do que a Biblioteca executa Eu só preciso acessar essa biblioteca e pedir para ela realizar o seu trabalho
e ainda posso reutilizar o código porque a mesma biblioteca pode ser reutilizada em inúmeras aplicações por inúmeros programadores sistemas Organizações e assim por diante as bibliotecas são arquivos arquivos que ficam em algum local na máquina no servidor ou na máquina local e por por exemplo arquivos com extensões dll pso Linux P H arquivos de cabeçalho plib são todos os arquivos de bibliotecas ou seja arquivos que dentro de si tem uma programação completa para realizar determinadas funções e aqui alguns exemplos de bibliotecas comuns então a biblioteca numpy que eu uso bastante para computação numérica em Python
a biblioteca jquery paraa web matplot Lib que é uma biblioteca para visualização de dados em Python Assim como d3.js que é mesmo esquema só que para JavaScript processing.js uma biblioteca interessante também e stl que é a biblioteca padrão C mais mais da Microsoft que é amplamente empregada na criação de softwares mais pesados bom finalmente o Framework então a gente falou de api e biblioteca e o que que é um Framework Framework eu acho que é é o conceito que mais causa mais causa confusão desses três o Framework ele é algo maior do que uma biblioteca
uma API Na verdade ele é um conjunto de bibliotecas e outros elementos utilizados no desenvolvimento de software e esses elementos são empregados na criação e execução de aplicações de maior porte o Framework é uma espécie de suporte para construção de aplicações trazendo modelos pré-fabricados pra Construção ou de uma aplicação completa ou de partes de uma aplicação sempre baseando-se em conjuntos de bibliotecas e o Framework geralmente encapsula implementação de uma API também para você poder acessar esses elementos internos ao Framework e às vezes a gente considera o Framework Então como sendo uma plataforma de desenvolvimento por
exemplo a gente fal assim plataforma.net a gente tá se referindo na verdade a dnet Framework um Framework para desenvolvimento utilizando tecnologias específicas Microsoft e o Framework ele pode ser empregado no desenvolvimento de uma interface gráfica de uma tela de logon de uma aplicação completa ou de partes de uma aplicação no geral os frameworks estão ligados a uma linguagem de programação específica por exemplo Framework para PHP Java Python csharp e outras linguagens e aqui eu tenho alguns exemplos de frameworks bastante comuns então por exemplo o Framework angular para JavaScript paraa construção de interfaces web de aplicações
web e lá do cliente o Jungle para Python Spring Java bastante útil bastante empregado dnet Framework que eu acabei de citar que na verdade não não tem só o csharp Mas permite trabalhar com outras linguagens também Ruby on rails para linguagem Ruby o laravel para PHP e unit é um Framework para construção de jogos utilizando csharp e assim por diante e aqui do lado direito nessa tela Você tem uma uma ilustração que mostra a arquitetura de um Framework tá do Framework dnet Framework veja como o Framework ele é complexo ele tem um monte de elementos
não é especificamente como uma biblioteca que tem tem bastante elementos no caso funções e classes mas programados para uma função específica né para uma área específica o Framework ele é mais genérico então ele tem vários outros tipos de componentes runtimes tem as bibliotecas de classe tem classes de dados Web Services interfaces gráficas especificação de linguagem e as linguagens suportadas Então isso é um Framework que vai te permitir a criação de aplicações outro exemplo de Framework bastante utilizado por exemplo é o Framework Bootstrap para criação de aplicações web também utiliz usando CSS bom em resumo então
diferença entre biblioteca Framework e api a biblioteca é um código pré-programado já pronto que tem funções específicas que são reutilizáveis nas aplicações e você não precisa reescrever Essas funções Você usa as bibliotecas prontas o Framework é uma estrutura genérica que vai fornecer uma espécie de um esqueleto um suporte sobre o qual você constrói um software então você usa o Framework que já traz partes semiprontas e você constrói o software ali e o Framework se baseia nas bibliotecas e api é uma Interface para você poder fazer a comunicação com aplicações e chamar funções específicas Então é
isso gente espero que tenha ficado Claro a distinção entre esses três conceitos ou que pelo menos tenha melhorado um pouco a compreensão de vocês com relação a esses três conceitos e agora eu quero fazer uma pergunta para vocês gostaria que vocês deixassem aqui embaixo nos comentários do vídeo se vocês utilizam no trabalho do seu dia a dia bibliotecas frameworks ou apis específicas e quais são caso você já trabalhe na área de desenvolvimento e se você ainda não trabalha na área de desenvolvimento se você tá estudando tá aprendendo deixa também aqui nos comentários quais bibliotecas frameworks
ou apis vocês gostariam de ver aqui no canal abordadas na forma de minicursos por exemplo ou de aulas individuais Olá pessoal aqui é o Fábio da boson Treinamentos e nesse ho eu vou responder a mais uma pergunta dos assinantes do canal Bem chegou para mim a seguinte pergunta qual a diferença entre um desenvolvedor front end backend e full stack bom vou tentar responder essa pergunta de forma bem sucinta Então são três termos bastante utilizados em desenvolvimento de software principalmente software para web mas também softwares para outras áreas do desenvolvimento vamos começar pelo frontend que que
é desenvolvimento frontend frontend tem a ver com a interface com a apresentação da aplicação pro usuário então frontend é tudo aquilo que o usuário final quando vai utilizar a aplicação consegue acessar então por exemplo as telas dentro de uma aplicação de um programa qualquer Ah uma página Web que o usuário Está acessando o que ele vê naquela página Web Isso é uma aplicação front end ou é a parte front end da aplicação para ser mais exato um desenvolvedor frontend alguém que trabalha com isso no geral precisa conhecer tecnologias evidentemente que são utilizadas para construir as
interfaces PR web por exemplo é necessário que você saiba trabalhar com HTML com CSS e com JavaScript entre outras tecnologias como por exemplo bibliotecas específicas e frameworks alguns frameworks comuns são react o angular e o view.js por exemplo Além disso quem trabalha com frontend precisa saber trabalhar com design responsvel conhecer eh o x e o i né tecnologias importantes garantir que as páginas elas funcionem em qualquer navegador e também saber fazer integração com o backend do qual eu já vou falar em instantes então o frontend basicamente é aquele cara que trabalha com as tecnologias que
fazem a apresentação da aplicação pro usuário final bom e um backend que que seria backend backend tem a ver com a parte server Side da aplicação Ou seja a parte que roda lá no servidor no geral tem a ver com as regras de negócio tem a ver com acesso a bancos de dados e tem a ver com a segurança interna do sistema só por isso já dá pra gente ter uma ideia de que talvez o backend seja mais complexo do que o frontend na maioria dos casos o que uma pessoa precisa saber para trabalhar com
com backend para ser um desenvolvedor backend bom algumas das tecnologias mais utilizadas para esse tipo de de trabalho são linguagens como PHP Java csharp Python rub Além disso é importante conhecer bancos de dados saber trabalhar com SQL e saber trabalhar com os sistemas de gerenciamento de bancos de dados como mais SQL por exemplo post gre ou SQL server entre outros e conhecimentos em Design patterns devops microsserviços São altamente recomendáveis para quem trabalha com backend no geral envolvento backend é mais para quem gosta da parte de programação mais pesada ou de trabalhar com dados acesso e
manipulação de dados em si ao passo que o desenvolvimento frontend é mais para quem gosta da parte visual da aplicação mas também existe programação para front end você não não vai se livrar da parte de programação da parte lógica se trabalhar com frontend só vai ser diferente bem o que que é um desenvolvedor full stack full stack que a gente pode traduzir como como pilha completa né tem a ver com a pilha de tecnologias então pilha completa de tecnologias significa que você basicamente conhece tanto a parte front-end quanto a parte backend e conhece bem conhece
a fundo não é que você conhece um pouquinho só de HTML e trabalha com PHP não Você conhece a fundo o desenvolvimento das interfaces as tecnologias envolvidas e também conhece a fundo a parte do servidor o acesso a banco de dados a as transações lógicas e assim por diante e sabe integrar uma coisa com a outra então um desenvolvedor fustec é um cara que consegue basicamente entregar um projeto completo ele é capaz de criar o projeto do começo ao fim integrando a parte do servidor com a parte da apresentação com o layout da aplicação seja
aplicação web ou seja uma aplicação para outro tipo de mídia qualquer para dispositivos mobile ou até mesmo paraa desktop evidentemente um profissional ftec é mais valorizado no mercado do que um cara que simplesmente trabalha como front end ou em backend por quê Porque ele conhece muito mais é capaz de entregar aplicação completa ou de trabalhar em qualquer parte da aplicação conforme for necessário no geral o profissional frontend tende a ter um salário menor do que um backend devido à complexidade de se trabalhar com as linguagens para servidor e com as tecnologias para servidor e o
profissional ftec tende a ter o salário mais alto né por conta de dominar mais Tecnologias do do que as outras duas categorias vamos dar uma olhadinha aqui numa figura para entender melhor esse esquema você está vendo aqui na tela uma figura que mostra ã uma parte front end e uma parte backend front end tem a página inicial de um website então a pessoa que vai trabalhar como desenvolvedor frontend vai desenvolver isto aqui vai trabalhar com a imagem vai criar os menus vai posicionar os elementos na tela portanto vai usar HTML vai usar CSS vai usar
JavaScript por exemplo para para gerenciar as propagandas que aparecem aqui e assim por diante tá então isso aqui é o que é apresentado pro usuário mas para essa página funcionar só o HTML o JavaScript o CSS não serão suficientes por quê aqui a gente tem por exemplo busca a gente tem isso aqui é um blog essa página de um blog a gente tem páginas armazenadas com as imagens dentro de um banco de dados para que as páginas possam aparecer corretamente quando o usuário clica em algum elemento é necessário que seja feito um processamento como você
tá vendo aqui ó processamento usando um script de linguagem de servidor E aí que entra backend né o desenvolvedor backend é o cara que vai basicamente criar esse script e gerenciá-lo não só esse script mas todos os scripts e todas todos os arquivos que sejam necessários para fazer aquela página funcionar isso vai ter uma interação com um banco de dados onde a informação toda fica armazenada os textos onde você tem o armazenamento das imagens e assim por diante então profissional backend é o cara que lida com esta parte aqui da aplicação e o cara frontend
é o cara que lida com esta parte aqui n a parte que aparece diretamente pro usuário e o ftech é o cara que consegue integrar todo mundo aqui ele trabalha com qualquer uma dessas partes não necessariamente vai trabalhar com tudo isso mas ele é capaz de trabalhar tanto no front end quanto no back end bem E como é que você se torna um profissional numa dessas áreas da tecnologia evidentemente Você precisa estudar as tecnologias adequadas a cada área então se você vai trabalhar com frontend você vai procurar aprender HTML CSS JavaScript a princípio se você
for trabalhar com desenvolvimento web ou até mesmo mobile se você for trabalhar com backend você vai começar aprendendo as linguagens específicas E não esqueça vai aprender trabalhar com banco de dados que é muito importante vai aprender SQL e vai aprender gerenciamento de bancos de dados mas mesmo que você só queira trabalhar com front end ou só queira trabalhar como backend é importante que você conheça um pouco da outra área também então o cara de backend ele vai se beneficiar se ele conhecer um pouco de html CSS JavaScript porque ele vai poder criar melhor as suas
aplicações sabendo como é que elas vão ser apresentadas pro usuário e o cara que trabalha com frontend também se ele conhecer um pouquinho pelo menos de SQL ou alguma linguagem de script de servidor ele vai conseguir criar melhor a sua interface porque ele sabe como é que ela vai interagir com as aplicações de backend e aos poucos você Vai acumulando conhecimento até eventualmente se tornar um desenvolvedor full stack bom o que que é um bug uma palavra que você já deve ter ouvido falar diversas vezes ao longo do tempo um bug é um erro que
ocorre num programa geralmente por conta de um código cóigo mal projetado mal escrito os computadores eles fazem sempre o que a gente manda os computadores fazer então se você escreve um trecho de código o computador vai executar o tresto de código exatamente da forma como você o descreveu mas nem sempre a gente consegue mandar o computador fazer o que a gente queria que ele fizesse Ou seja a gente nem sempre consegue se expressar de forma correta e isso acaba gerando bugs então Tecnicamente um bug é um erro uma falha defeito num programa ou até num
sistema e pode ser em hardware também tá o bu também pode ser de hardware provocando seu funcionamento anormal ou até mesmo seu não funcionamento e a maior parte dos bugs como eu já expliquei surge a partir de erros que são cometidos durante o projeto design do programa a fase de análise e e desenvolvimento do sistema ou a codificação do sistema bom antes de falar sobre bugs em si Por que o termo bug de onde vem essa palavra bug então a palavrinha bug associada à tecnologia da informação foi usada publicamente pela primeira vez pela an Grace
Hopper ao explicar a causa de um problema num computador das antigas um computador eletromecânico que era o Mark two você está vendo a Grace Hopper aqui na foto do lado direito de acordo com a história é uma mariposa que é um inseto ficou presa num relê do computador do Mark 2 é relê porque ele é um computador eletromecânico relê é um componente eletromecânico causando mal funcionamento do sistema e daí veio o termo bug que significa inseto em inglês na verdade esse termo bug Já era usado anterior mente para se referir a problemas e defeitos em
máquinas e equipamentos então ele não foi inventado nesse nesse momento aqui mas a partir daí erros em Sistemas passaram a ser conhecidos como bugs em geral e não foi a Grace Hopper que encontrou a mariposa no sistema foram os operadores de manutenção da máquina e aí É bem interessante a gente tem aqui essa página do livro de registros do computador Mark ah falando sobre o primeiro bug de computador encontrado veja que interessante os operad ores eles literalmente colaram a mariposa na página de registros da da máquina e escreveram aqui do lado onde ela foi encontrada
no relê número 70 painel f e escrever embaixo mo in relay que significa Mariposa no relê embaixo ainda fizeram uma piadinha first actual Case of bug Being found que significa o primeiro caso real de um bug sendo encontrado isso aconteceu em 1947 na Universidade de Harvard e a máquina era essa aqui Harvard Mark 2 de 1947 o computador eletromecânico que foi construído sobre a direção de Howard ien Em outro momento a gente vai falar mais a fundo sobre quem foi Howard iken Quem foi Grace Hopper a importância dessas pessoas na história da Computação bom voltando
aos bugs então ex tem três categorias principais de bugs que podem acontecer dentro de um programa tá que são os bugs erros na verdade de síntase que são erros escrita do código o erros os erros de runtime os erros que ocorrem durante a execução do programa e erros semânticos ou erros lógicos geralmente associados ao design do programa e claro esses erros os bugs eles podem ser classificados de várias outras formas pode ser erro de tipo de compilação de recurso e assim por diante mas em termos de categorias Gerais a gente pode dizer que são erros
de síntase runtime e semânticos os erros de síntase São bugs ocasionados por erros na escrita do código então o código foi escrito errado literalmente então eles ocorrem quando o código não tá na forma apropriada de de acordo com a regra da linguagem então exemplo clássico é esquecer de colocar o ponto e vírgula no final de uma instrução em muitas linguagens que precisam do ponto e vírgula aqui você tem um trecho de um código em c+ mais que tem um erro de síntase na hora de tentar rodar o código o programa não não consegue compilar e
não consegue executar e marca o local onde tá o erro marcou aqui essa linha de saída que deveria exibir uma frase digite um número na tela mas não funciona por quê Porque para essa frase ser exibida ela deveria estar em entre aspas porque é uma string Então isso é um erro de síntase as frases aqui de baixo ó dividido por é igual a veja que ele até marca em azul elas estão com as aspas normais então aqui não há esse erro que ocorreu aqui em cima na linha 13 e também ocorre de novo na linha
15 então erro de síntase já os erros de runtime que significa tempo de execução ocorrem quando o programa está sendo executado então o programa funciona normalmente até que um código problemático é executado E aí o programa exibe o erro ele pode até travar um exemplo clássico é divisão por zero tá na maior parte do tempo a aplicação não tenta realizar divisão por zero e funciona perfeitamente mas em algum momento uma divisão por zero pode acontecer se não for revista e tratada causando um erro no programa Então esse program esse código que você tá vendo aí
que é o mesmo programa anterior agora com as aspas no lugar ele continua tendo erro ele ainda tem bug Qual o bug dele o bug de divisão por zero ele não prevê que o usuário possa entrar com um número zero na hora de fazer uma divisão e tenta realizar o cálculo então o usuário pode entrar com o número dois sendo igual a zero e aí esse cálculo aqui float rest igual no 1 sobre no do vai tentar dividir um número por Zero Isso vai causar um erro de runtime então segundo tipo de erro clássico segundo
tipo de bug clássico em código de programação e os erros de semântica ou erros conceituais ou erros lógicos que são os piores tipos de bugs aqui o programa Roda funciona executa o que você manda ele executar não trava retorna resultados só que não da forma esperada geralmente retor informações errôneas a usuária e o usuário não percebe que essas informações não estão corretas isso pode causar graves problemas então o erro semântico clássico é ter um Loop Infinito no código o programa ou um trecho dele fica sendo executado para sempre sem possibilidade de parada normal tem que
tem que encerrar o programa e às vezes até Trava a máquina em si aqui a gente tem um um programinha que tem um erro de semântica é um programinha que pede pro usuário entrar com dois números e faz a soma dos dois números por mais simples que pareça isso a gente consegue ter erros num programinha desse tipo qual que é o erro aqui o erro é que se o usuário entrar com dois números e tentar fazer a soma Olha o que acontece Aqui eu entrei com o número quatro depois com o número C fiz a
soma 4 + 5 qual foi o resultado 45 que que tem a ver nada a ver né na verdade existe um erro de semântico um erro conceitual aqui aqui o programa ele está tratando os valores na hora de somar como Strings e não como números e o operador o sinal de mais quando aplicado sobre Strings ele não soma ele concatena ele junta as Strings então ele juntou o número quro com o número C em vez de somar os dois números tá veja o programa não travou ele rodou exibi o resultado bonitinho só que o resultado
totalmente incorreto então um erro clássico e grave o erro de semântica ou erro de lógica bom os bugs são perigosos sim podem ser muito perigosos Eles já foram responsáveis por diversos tipos de acidentes alguns até fatais e sim causam prejuízos bilionários todos os anos alguns exemplos de bugs de baixo Impacto e bugs de altíssimo Impacto então dois bugs bem simplinho que não causam exatamente problemas graves bugs em jogos então talvez você conheça o jogo Civilization tá do sidm e que tem várias versões a primeira versão do jogo de 91 tinha um bugzinho que fazia com
com que um personagem do jogo mahat magand um grande pacifista se comportasse na verdade como um cara alucinado por guerra e violência fomentando guerras e o bug era tão famoso que recebeu um nome o bug do Nuclear gand Olha que interessante o um outro bug também interessante era uma atualização que era feita pra versão jogo Guitar Hero 2 pro Xbox 360 que fazer com que alguns consoles travasse ou parassem de funcionar de de vez mostrando o Red Ring of Death o anel vermelho da Morte que significa que console foi espaço tá são dois bugs de
software que não causam um impacto muito grande no máximo um videogame um problema mas os bugs poderiam ser e podem ser extremamente perigosos aqui eu tenho outros dois exemplos de alto impacto O primeiro exemplo é um bug no código de controle de uma máquina chamada terac 25 que é uma máquina de tratamento de radiação para câncer que causou a morte de seis pacientes de seis pessoas nos anos 80 por a máquina tinha um bug no software que fazia com que uma quantidade excessiva de radiação fosse aplicada no paciente Então em vez de aplicar uma quantidade
mínima por exemplo 10 unidades ela aplicava 200.000 e as pessoas morriam por envenenamento por radiação e um outro bug famosíssimo É esse aqui a sonda espacial Mars climate orbiter que é uma Sona espacial enviada pro planeta Marte ela simplesmente explodiu ou se perdeu no espaço nem se sabe exatamente o que aconteceu com ela ela tinha um bug no software que foi mal projetado e mal escrito usando unidades de medida do padrão americano numa rotina específica para fazer o cálculo do impulso da da sonda em vez de usar as unidades do sistema internacional de unidades naquele
naquele ponto específico do programa por conta disso a sonda não conseguiu aterrissar no planeta explodiu ou foi ejetada pro espaço e o prejuízo foi De 327,6 Milhões de Dólares a Sona estava usando uma unidade em libras e deveria usar uma unidade em Newtons segundo falando em sistema internacional dê uma olhadinha no vídeo sobre sistema internacional de unidades aqui do canal para entender melhor do que se trata isso a importância de se usar unidades de medida padrão corretas tem o link aqui na descrição do vídeo e um outro bug famosíssimo foi o bug do ano 2000
que é um exemplo extremamente famoso e vale a pena fazer um vídeo específico só sobre ele inclusive eu trabalhei na tentativa de correção ou monitoramento e correção desse bug quando eu tava trabalhando numa empresa de telecomunicações na época e vou contar essa história também e em um vídeo específico sobre o bug do ano 2000 bom e como é que a gente evita bugs Nem sempre dá para evitar os bugs Mas você pode tentar eliminá-los para isso a gente tem um processo chamado de debugging em português é depuração que é o nome dado a um processo
de encontrar E aí então eliminar os bugs para isso a gente vai usar um programa especial chamado debugger ou depurador que é um programa que permite analisar um código de um programa linha por linha enquanto o programa é executado mostrando o que tá acontecendo no programa naquele momento as funções que estão sendo executadas os conteúdos das variáveis das memórias os retornos dessas funções dos métodos e assim por diante facilita and bastante o encontro dos bugs dentro do programa geralmente bons ids vem com um depurador embutido como parte do pacote da ferramenta por exemplo aqui você
tem na tela o Idea do Spider mostrando seu depurador O Spider é um ide para Python que eu uso bastante que vem na distribuição anaconda tem um vídeo aqui no canal sobre anaconda também no vídeo oportuno eu vou mostrar como é que a gente usa o depurador na prática mini curso de depuradores com exemplo de debugging de código problemático vou explicar Essas funções todas O que é depurar o que é ingressar na função sair da função que é step in step over step out continuar Break points pontos de interrupção todos esses itens eu vou explicar
num vídeo específico sobre como usar depuradores mas tá aí agora você sabe que o depurador ou debugger é o software que você vai usar para encontrar e eliminar bugs num software Além disso nem sempre a gente consegue eliminar bugs Às vezes o programa ele tem um trecho de código que é crítico não tem como ser alterado e pode eventualmente ocasionar algum problema Principalmente quando por exemplo um trecho de código precisa fazer acesso a recursos externos acessar um recurso de rede acessar um banco de dados e a gente não tem como garantir que esses recursos estejam
presentes então para evitar isso a gente geralmente trata ou manipula as exceções que que é uma exceção exceção é um evento que interrompe a execução normal do programa por conta de um problema específico geralmente é um bug Mas exão a gente pode pode dizer que é o sinônimo de erro então é um erro que ocorre no programa e manipular exceção é um processo para tentar evitar que esse problema se manifeste evitando a execução do código do código problemático um exemplo clássico de exceção é a exceção aritmetic Exception ou exceção aritmética que é lançado Ou seja
que ocorre quando uma condição excepcional ocorre numa numa operação aritmética por exemplo divisão por zero clássica e aí para tratar isso a gente usa em programação o bloco trycatch que pode variar de linguagem para linguagem a forma como é que você codifica isso mas aqui eu tenho um exemplo em Java manipulando exceção de um programa que tenta fazer a divisão por zero então aqui eu tenho duas variáveis declaradas A e B e B receber o valor zero Se eu tentar fazer a divisão de a por B eu vou ter problemas programa ele pode travar então
para evitar isso eu coloco esse código dentro de um bloco try E aí o programa ele não vai executar direto ele vai tentar executar try significa tentar em inglês ele vai tentar executar o código Se for possível ele Executa se não for possível ele vai lançar uma exceção no caso a exceção aritmética Porque tem uma divisão por zero ele vai capturar essa exceção com a palavra catch E aí vai executar o código associado a esse segundo bloco em vez do primeiro bloco dessa forma ele vai mostrar algo como isso uma mensagem que eu mesmo coloquei
na tela e pedi também para escrever embaixo Qual é o nome o código da exceção que foi lançada eu vou tratar com mais detalhes sobre manipulação de de exceções em vídeos específicos sobre linguagem de programação por exemplo em CP a gente tem um vídeo bem legal sobre manipulação de exceções aqui no canal também vou deixar o link aqui na descrição do vídeo e finalmente a gente também tem uma etapa extremamente importante no desenvolvimento de softwares que é a etapa dos Testes de software que que são testes de software são técnicas que a gente aplica para
verificar se um produto se um software atende aos requisitos gros ou seja se ele faz o que o seu cliente realmente quer que ele faça e garantir que ele esteja livre de defeitos livre de bugs os testes de software podem ser realizados de forma manual ou usando ferramentas de automação de testes aqui do lado direito por exemplo você tem esse logo se que é o logo da ferramenta de teste automatizado de software Selenium que é bastante empregado atualmente tá esse assunto teste de software merece uma pequena série de vídeos para abordar as técnicas e a
gente vai ter isso no canal em breve na sessão sobre engenharia de software onde eu vou abordar as técnicas ferramentas e as linguagens que são empregadas e basicamente o objetivo dos Testes de software é identificar os erros lacunas requisitos ausentes ah contrastando comparando com os requisitos reais o que se espera do software Então essa é uma etapa importante no desenvolvimento de software paraa eliminação de bugs em resumo Então pessoal bug é uma falha ou um erro software ou em hardware também pode ser em hardware são causados geralmente por erros no Design no projeto ou na
implementação na codificação daquele daquele sistema podem causar prejuízos gigantescos e custar muitas vidas como a gente viu nos exemplos anteriores até mesmo aquele exemplo do videogame né do anel vermelho da Morte Microsoft Ah que é um bug custou muitos milhões paraa Microsoft conseguir resolver o processo de debugging é um processo para descoberta e eliminação de bugs utilizando softwares especiais geralmente embutidos dentro dos ids a gente também pode utilizar ah manipulação de exceções para tentar tratar erros que a gente não tem como evitar de ocorrer em determinados momentos no software e a gente sempre faz a
fase de testes passa pela fase de testes durante o desenvolvimento de softwares para garantir que eles tenham qualidade e estejam o mais livre possível de erros de programação beleza gente bom agora ve você vocês vocês lembram de algum bug famoso algum bug que saiu na na mídia que causou prejuízos coloca aqui nos comentários falea a respeito do bug que você já ouviu falar e se você já teve problemas com bugs de software ou de hardware na empresa onde você trabalha ou até mesmo na sua casa na sua escola conta a sua história aqui embaixo também
vamos compartilhar essas informações que é bem interessante pra gente aprofundar o nosso conhecimento sobre bugs de software e hardware fala pessoal aqui é o Fábio da boson treinamentos e neste vídeo vamos continuar falando sobre desenvolvimento de software mas precisamente eu vou falar sobre alguns erros que os programadores os desenvolvedores costumam cometer às vezes durante o processo de desenvolvimento de um software ou de um sistema principalmente programadores ou desenvolvedores iniciantes mas são erros que no geral a gente acaba cometendo de vez em quando e que a gente pode e deve evitar então eu vou falar sobre
sete erros específicos que são bastante comuns ao desenvolver software vamos lá então o primeiro erro que eu acho que inclusive é bastante grave é não planejar antes de começar desenvolver um sistema um programa qualquer o planejamento ele é crucial e muitas vezes a gente simplesmente senta na frente da máquina e começa a programar sem ter antes planejado feito por exemplo um projetinho no mínimo que seja do software que a gente vai desenvolver então o planejamento é de crucial importância isso eh inclui as fases como o levantamento e a análise de requisitos aliás é para isso
que serve a análise de sistemas é a fase de planejamento que vai nos dizer vai nos ditar como o software deverá ser desenvolvido daquele ponto em diante Então essa é uma fase importante que não deve ser pulada você precisa sempre planejar eh com antecedência o que vai ser feito durante o trabalho de desenvolvimento de software durante a programação não simplesmente codificar esperando que as coisas caiam do céu ali eh durante o processo mesmo de digitação de código então planejamento é muito importante e às vezes a gente pula essa etapa software que não foi planejado geralmente
é software que vai ser mal escrito e que vai precisar posteriormente ser refeito então retrabalho que geralmente significa tempo demais perdido para para consertar problemas no software e custo que acaba ficando mais elevado então planejamento é de crucial importância segundo erro que que os programadores costumam cometer alguns programadores cometem é não escrever um código Limpo é muito importante que ao escrever o código O código seja bem escrito Então você precisa por exemplo se prender a Convenções a boas práticas de escrita de código nem que seja simplesmente eh usar um padrão específico para nomes de variáveis
funções métodos classes e assim por diante mas é muito importante que você siga algum tipo de padrão e que você deixa o seu código bastante legível com identação adequada espaços adequados entre os módulos as funções que você tá codificando documentação na forma de comentários e sem exagero você não pode também escrever um livro dentro do código não pode ter mais comentários do que código em si mas o os comentários eles precisam estar lá explicando principalmente partes mais complexas da sua lógica é importante que eles estejam ali e também é importante que você ao criar nomes
de variáveis funções métodos e assim por diante use nomes que indiquem a intenção daquele elemento daquele objeto dentro do do software por exemplo ao criar uma variável para armazenar o salário de uma pessoa um bom nome seria salário pessoa e não uma sigla como SP por exemplo né ou números ou uma palavra qualquer Sempre Com intenção alguma coisa que expresse que ao olhar para aquela variável você saiba do que se trata mesmo que não tenha sido você que escrever o o programa por quê porque provavelmente você vai trabalhar numa equipe e outras pessoas vão ter
acesso a esse código e vão precisar entender o que está ali e ler esse código com facilidade então um grande erro é não ter um código limpo e formatado bonitinho escrito de acordo com o que a legibilidade pede um terceiro erro é Reinventar a roda que que significa isso é tentar escrever rotinas algoritmos códigos que na verdade já existem já estão prontos por exemplo na forma de classes ou bibliotecas na linguagem que você tá usando você não deve não precisa e não deve fazer isso se você quer uma função específica por exemplo uma função matemática
que calcule desvio padrão né dentro de um software estatístico ou uma função específica da área financeira que Execute algum alum tipo de fórmula complexa se já existir uma classe ou uma biblioteca ou uma função que realiza esse trabalho tente não fazer use aquilo que já existe porque provavelmente já foi testado já foi consertado e já está certificado pro seu uso e garantido que vai funcionar sem bugs se a gente tentar codificar alguma coisa que já existe estamos simplesmente escrevendo o código a mais desnecessário que pode acabar introduzindo no sistema mais pontos de erro mais pontos
de falha é evidente que a gente vai ter que escrever muito código para criar uma aplicação principalmente se for uma aplicação grande então quanto menos a gente colocar a mão em código sujo por assim dizer melhor então não reinvente a roda use aquilo que já existe que já está comprovadamente funcionando a regra é reuse o código outro erro que a gente costuma cometer às vezes é não realizar testes e não trabalhar com a manipulação de erros de exceções dentro do código Na verdade são dois erros mas eu coloquei junto numa mesma categoria então fazer testes
do software que você tá desenvolvendo é extrema importância e testes tem que ser extensivos não só colocar o software para rodar rodou beleza tá pronto manda pra frente não você tem que testar o software de forma intensiva e extensiva para garantir que nenhum erro oculto nenhum errinho fique ali pro usuário descobrir posteriormente O que é bastante grave e também evitar que os erros pipoquera usuário e alterem o funcionamento ou impeçam o funcionamento do programa E para isso se você manipula exceções manipula erros dentro do código usando por exemplo blocos trycatch que são bastante comuns em
muitas linguagens muitos programadores não usam esse tipo de ferramenta por achar que o código fica maior ou fica mais complexo ou demora mais e tudo isso é verdade Porém isso tudo é o que vai garantir que o seu programa Rode da forma mais suave possível e se houver algum erro que esse erro não prejudique o uso do software pelo usuário tá então se você não testar o software e não garantir que erros que por acaso passem batido sejam capturados e tratados você tem a receita clássica pro fracasso do seu software para erros que o usuário
vai pegar e o usuário sempre pega porque ele vai passar muitas horas trabalhando usando o seu software e invariavelmente ele acaba detectando alguma falha que você deixou passar então sempre teste o softwares escreva rotinas de teste tá se for o caso e sempre use ferramentas para evitar que problemas pipoqui do programa como Block Strike cch e aliás se você quiser ver vídeos sobre ferramentas e técnicas de testes de software testes unitários por exemplo ou outros tipos deixa aqui embaixo nos comentários tá se vocês tiverem interesse nesse assunto a gente coloca aqui no canal também outro
erro comum que as pessoas cometem esse é bastante comum é copiar e colar código de algum lugar para usar no seu programa sem entender como aquele código funciona Então veja copiar e colar código é algo que todo mundo faz você faz eu faço todo mundo faz em algum momento você vai encontrar um código pronto no stack overflow por exemplo ou em algum site parecido e aquele código faz o que você precisa você pega aquele código Coloca no seu programa e ele funciona com alguma adaptação que você tem que fazer isso não é problema tá o
problema é quando você não não consegue entender como funciona aquilo e vez após vez copia e cola códigos e vai montando o seu programa dessa forma Qual que é o grande problema aqui o problema é que você não tá aprendendo nada você não tá aprendendo como você criar aquele software e a ideia é que ao copiar e usar o código que alguém já escreveu que você analise o código e Entenda como ele foi feito até mesmo para poder adaptar o código da melhor forma possível pro seu programa e que futur você seja capaz de escrever
esse código por si próprio Até mesmo porque para que o código esteja disponível na internet para que as pessoas usem Alguém tem que escrever esse código e alguém tem que saber escrever por que não você ou eu então US os códigos que estão na internet à vontade mas tente entender linha a linha instrução por instrução como eles funcionem o que eles fazem para você poder adaptar da melhor forma possível e aprender melhor como escrever códigos por si próprio e após escrever os seus próprios códigos é de extrema importância que você sempre faça backup dos seus
arquivos fonte e esse é um erro comum que muitos programadores cometem é interessante porque é um erro que não é de programação especificamente é um erro de uso de ferramentas de uso do computador em geral né é muito comum que as pessoas não façam backup não tem uma cópia de segurança dos seus dados e isso é extremamente grave porque se você perde arquivos e esses arquivos pertencem é um projeto grande por exemplo você pode ter problemas aí insuperáveis posteriormente reescrever códigos por exemplo um código que tem milhares de linhas é quase impossível Então você precisa
ter backup dos seus arquivos backup local backup na nuvem que é bastante comum e também utilizar ferramentas para versionamento de código isso também faz parte dessa ideia do backup e na verdade mais para você compartilhar código com outros mas para ter um repos ório onde Esses códigos Estão guardados e você pode acessar de qualquer lugar então aprender a trabalhar com Git utilizar ferramentas como github bitbucket e outros sistemas de de de controle de versão de código é de extrema importância para todo desenvolvedor se você não trabalha com isso se você não faz backup se você
não tem repositórios para guardar os seus códigos em algum momento você vai acabar com um grande problema nas mãos para resolver que talvez não consiga tá então fique esperto com isso não Cometa este erro também e o último erro que apesar de ser o último não é o menos importante aliás é muito importante é não praticar todos os dias veja não é um erro específico do do da escrita do código em si mas é um erro sistêmico né sistêmico no sentido de que se você não pratica todos os dias você acaba não desenvolvendo a habilidade
de desenvolvimento de software de forma adequada porque a aprender a escrever programas aprender a desenvolver programas software é algo altamente prático é algo que você aprende praticando então todos os dias você precisa praticar Ok não precisa ser todos os dias da sua vida você evidentemente vai ter folgas Vai ter dias para descansar mas tem que ser feito com bastante Constância por quê Porque só ler num livro num blog E numa revista Como funciona uma tecnologia em particular não significa que você tenha aprendido como usar aquela tecnologia você pode entender a teoria por exemplo entender a
teoria de funcionamento de arrays beleza você entende lendo um texto você entende lendo um tutorial ou um capítulo de um livro mas para usar isso logo após ler eu acho que é quase impossível se você não praticar bastante então só praticando muito é que você vai aeit aí as engrenagens do seu pensamento lógico para conseguir desenvolver software com com com com bastante eficiência né com bastante fluidez então para isso você tem que praticar todos os dias eh programar é como praticar um esporte você tem que praticar ele efetivamente sempre na na prática mesmo né daí
o nome daí a palavra praticar né senão você fica enferrujado E no caso do software você não desenvolve as habilidades e acaba como no caso anterior eh simplesmente copiando e colando trechos de código para tentar resolver os seus problemas o que ainda piora a situação se você não não estudar a fundo aquilo que você tá codificando então tem que praticar sempre praticar bastante tem que desenvolver software não se limitar somente ao trabalho que você tem especificamente na empresa mas tenha projetos Paralelos desenvolva programinhas e para colocar no seu blog tenha um blog coloque código que
você desenvolve lá no github Aproveite aí para aprender a utilizar o sistema de versionamento tá tá compartilhe códigos com os colegas pegue programas open source e altere né tente alterar para criar novas versões enfim existe assim uma infinidade de formas de você praticar o desenvolvimento de software tá então aproveite-as pratique e seja um ótimo desenvolvedor tenha uma carreira brilhante aí pela frente tranquilo gente então é isso espero que Esses errinhos aí básicos que os programadores desenvolvedores e também profissionais de outras áreas né correlatas de tecnologia cometem no dia a dia sejam erros que você vai
eliminar aos poucos da sua vida ou pelo menos diminuir bastante porque evitar que os erros ocorram na verdade é bastante desafiador e não é muito fáil né uma tarefa complicada mas a gente tá aqui para isso para diminuir a quantidade de problemas aumentar Nossa performance Aumentar o nosso conhecimento e poder efetivamente realizar o nosso trabalho da melhor forma possível É isso aí pessoal chegamos ao fim do nosso curso completo de lógica de programação com português estruturado aqui da boson treinamentos em tecnologia espero que vocês tenham gostado desse curso que tenham aprendido o máximo possível se
estiverem com alguma dúvida deixem nos comentários ao longo do vídeo se eu não conseguir responder a tempo porque são muitos comentários que costumam aparecer alguém há de responder para vocês porque afinal de contas somos todos Uma grande família aqui uma grande comunidade trocando informações e agora que você terminou esse curso de lógica de programação Qual o próximo passo bom o próximo passo é aprender uma linguagem de programação então recomendo que você escolha uma linguagem de programação com muito carinho e Se dedique a ela durante um tempo Quais são as minhas recomendações após ter aprendido lógica
de programação você pode estudar na verdade qualquer linguagem mas eu recomendaria como primeira linguagem para você a linguagem Python e aqui no canal nós temos também um curso Completão de Python é com mais de 9 horas de duração mas também temos os os vídeos de Python divididos e nas listas de reprodução específicas recomendo que você dê uma procurad Dinha Mas de qualquer forma aqui embaixo na descrição do vídeo temos alguns links para você se aventurar no mundo das linguagens de programação dando sequência aos seus estudos em desenvolvimento de software Agradeço a todos que assistiram esse
curso até aqui muito obrigado e vejo vocês então nas próximas lições aulas cursos e tudo mais aqui na boson treinamentos Valeu gente então é isso aí pessoal espero que vocês tenham gostado desse vídeo aproveitem para se inscrever aqui no canal da boson treinamento Se vocês não forem inscritos ainda e se já forem inscritos cliquem no Sininho aqui embaixo para ativar as notificações e assim serem avisados Quando tivermos conteúdo novo postado aqui no canal e se você quiser contribuir com a bosson treinamentos torne-se membro do nosso clube de canais temos o link aqui embaixo na descrição
do vídeo também o botão seja membro do YouTube com as instruções e não deixe de acessar o nosso Website www.bosontreinamentos.com.br além de nos seguir nas redes sociais hein que estão aparecendo aqui em cima obrigado e até a próxima