├── .gitignore ├── tarefa-dia-1 ├── README.md └── solucao │ └── README.MD ├── tarefa-dia-2 ├── README.md ├── alanturingcode.js ├── condicoes.js └── solucao │ ├── solucao-pratica-1.js │ ├── solucao-pratica-2.js │ ├── solucao-pratica-3.js │ └── solucao-pratica-4.js ├── tarefa-dia-3 ├── README.md ├── receitas.js └── solucao │ ├── solucao-pratica-1.js │ ├── solucao-pratica-2.js │ ├── solucao-pratica-3.js │ ├── solucao-pratica-4.js │ └── solucao-pratica-5.js └── tarefa-dia-4 ├── README.md └── to-do-list ├── index.html ├── logo.svg ├── script.js └── styles.css /.gitignore: -------------------------------------------------------------------------------- 1 | foldercreation.sh 2 | readme.sh 3 | .DS_Store -------------------------------------------------------------------------------- /tarefa-dia-1/README.md: -------------------------------------------------------------------------------- 1 | # Tarefa - Dia 1: Primeiros passos e preparando a caixa de ferramentas 2 | 3 | Saudações, estudante da nossa imersão Aprenda a Programar do ITuring! Esta é a 1ª tarefa do curso. Em cada um dos 3 primeiros dias da nossa imersão, você terá uma tarefa para solucionar ao longo da semana. 4 | 5 | Na tarefa do dia 1, teremos as seguintes etapas: 6 | - [**Etapa 1:**](#etapa-1-instalando-o-ambiente-de-desenvolvimento-e-preparando-a-caixa-de-ferramentas) Instalando o ambiente de desenvolvimento e preparando a caixa de ferramentas 7 | - [**Etapa 2:**](#etapa-2-praticando-os-comandos-de-terminal) Praticando os comandos de terminal 8 | - [**Etapa 3:**](#etapa-3-criando-sua-conta-no-github) Criando sua conta no GitHub 9 | 10 | 11 | ## Etapa 1: Instalando o ambiente de desenvolvimento e preparando a caixa de ferramentas 12 | 13 | Para preparar o seu ambiente de desenvolvimento, você vai precisar de instalar 3 coisas na seguinde ordem: 14 | 1. o editor de texto VSCODE 15 | 1. o programa Terminal e Git 16 | 1. o programa Node 17 | 18 | O VSCode é onde vamos de fato escrever códigos. Toda e qualquer pessoa que trabalha com desenvolvimento de software no mundo escreve códigos usando um editor de texto. 19 | 20 | O Git vamos usar para controlar e ver o histórico do que estamos desenvolvendo. Por fim, o Node vamos utilizar para executar os códigos que vamos escrever em JavaScript nos dias 2, 3 e 4. 21 | 22 | Você pode optar por outro editor texto diferente do VSCode sem problemas, mas os exercícios e exemplos desse curso serão feitos com VSCode. 23 | 24 | Vamos lá! 25 | 26 | ### Instalando o VSCODE 27 | 28 | Para instalar o VSCODE, basta entrar [aqui](https://code.visualstudio.com/) e seguir os passos de instalação de acordo com o seu sistema operacional. Se surgir dúvidas, poste lá no [nosso Discord](https://discord.com/invite/kHS84D2hA4) ou pode seguir esse [tutorial](https://balta.io/blog/visual-studio-code-instalacao-customizacao). No Windows, não esqueça de marcar a opção "Add to Path". 29 | 30 | ### Instalando o terminal e o Git no seu computador 31 | 32 | Como vimos no 1º dia, o terminal é onde a gente consegue interagir com o sistema operacional por meio de **comandos de texto**. Estamos acostumados a interagir com o sistema operacional (Windows, MacOS, etc) por meio da interface, onde manipulamos janelas, entramos em programas "clicando 2 vezes" com o mouse, navegamos por pastas, etc. Já a outra forma de interagir com o SO (Sistema Operacional) é por meio de comandos de texto. No terminal nós fazemos isso. Nós digitamos textos para navegar em pastas, abrir e executar arquivos, configurar ferramentas, etc. 33 | 34 | **Nunca se esqueça!** no terminal, você **sempre** está em algum lugar! O terminal é como um navegador de pastas. Você sempre estará em alguma pasta do seu computador. Por isso, certifique-se sempre de que está no lugar correto quando for executar algum comando. 35 | 36 | Como podemos instalar o terminal? Vamos ver agora. Siga as instruções do SO que você estiver utilizando. 37 | 38 | #### Instalando o terminal e o Git no MacOS ou Linux 39 | 40 | O MacOS e o Linux já possuem o terminal instalado. Para abrir o terminal no MacOS, [siga estes passos](https://pt.wikihow.com/Abrir-o-Terminal-no-Mac). No Linux, [siga estes passos](https://pt.wikihow.com/Abrir-uma-Janela-do-Terminal-no-Ubuntu). 41 | 42 | Além do terminal, você também vai precisar do programa chamado `git`. Nós vamos explicar melhor o que é o `git` no dia 2. 43 | 44 | ##### Instalando o Git no MacOS: 45 | 1. No terminal, execute o comando `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` 46 | 1. Vai pedir uma senha, é a senha de acesso do seu MacOs 47 | 1. Em seguida, execute `brew install git` 48 | 49 | ##### Instalando o Git no Linux: 50 | - No terminal, execute o comando referente à versão do seu Linux de acordo com este link: https://git-scm.com/download/linux 51 | 52 | 53 | #### Instalando o terminal e o Git no Windows 54 | 55 | O Windows possui um terminal padrão, mas ele não é do tipo Unix/Linux. Por conta disso, vamos utilizar o Git Bash como terminal no Windows. Por que usar um terminal do tipo Unix/Linux? Você vai entender melhor ao longo da sua carreira em desenvolvimento de software, mas a razão é porque [mais de 96% dos principais servidores do mundo são do tipo Linux](https://www.zdnet.com/home-and-office/networking/can-the-internet-exist-without-linux/). Por isso, quando e se no futuro você começar a trabalhar com servidores, é importante se acostumar com os comandos que realmente são utilizados nos servidores. Portanto, considere que, no Windows, o Git Bash é o nosso terminal. 56 | 57 | 1. Para instalar o Git Bash no Windows, entre [aqui](https://git-scm.com/downloads) 58 | 1. Depois clique em "Download for Windows", em seguida em "Click here to download" 59 | 1. Se você estiver com algum problema por conta da sua versão do Windows, fale com a gente no canal **#⚙│dúvidas-configurações** 60 | 1. Quando terminar de baixar, clique no instalador (começa com "Git-...") e depois clicar em "Sim" e "Next" por **todos** os passos 61 | 1. Caso queira, na etapa de escolha do editor de texto padrão, selecione o VSCODE 62 | 63 | E o Git? Bom, o Git Bash já vem com o Git instalado. :) 64 | 65 | ### Instalando o programa Node 66 | 67 | O Node nós vamos utilizar diariamente enquanto estivermos programando. Ele é o programa que vai executar o código que a gente vai aprender a escrever em JavaScript! Ele é um programa como qualquer outro, com a diferença de que ele consegue executar códigos que por consequência viram programas (ou software). Chamamos este tipo de programa de 'interpretador' ou 'compilador'. 68 | 69 | Um compilador converte um programa inteiro em zeros e uns, o idioma que o computador entende. Já um interpretador é como se fosse uma tradução simultânea, ele vai convertendo partes do código em código binário (os zeros e uns) e executando-os sequencialmente. Todos os programas de computador do mundo passam por este processo de interpretação ou compilação. Programas e aplicativos que você utiliza diariamente foram criados assim. 70 | 71 | #### Instalando o Node no Windows 72 | 73 | 1. Clique [aqui](https://nodejs.org/en/) e em seguida clique no botão de download que tem a sigla "LTS" 74 | 1. Seu Windows é uma versão antiga? Então instale o Node com [este instalador](https://nodejs.org/download/release/v13.14.0/node-v13.14.0-win-x64.zip) 75 | 1. Em seguida, basta seguir as instruções de instalação e pronto! **Importante:** o Node é um programa você vai executar dentro do terminal. Ou seja, no Windows, dentro do Git Bash! 76 | 1. Qualquer dificuldade, fale com a gente no canal **#⚙│dúvidas-configurações** 77 | 78 | #### Instalando o Node no Linux 79 | 1. Se estiver usando o Ubuntu, execute o comando `sudo apt install nodejs` no terminal 80 | 1. Caso contrário, baixe o instalador [aqui](https://nodejs.org/en/download/). **Importante:** o Node é um programa que não tem um ícone para clicar e executar. Ele na verdade funciona dentro do terminal. Ou seja, no Windows, dentro do Git Bash! 81 | 1. Qualquer dificuldade, fale com a gente no canal **#⚙│dúvidas-configurações** 82 | 83 | #### Instalando o Node no MacOS 84 | 1. Clique [aqui](https://nodejs.org/en/) e em seguida clique no botão de download que tem a sigla "LTS" 85 | 1. Em seguida, basta seguir as instruções de instalação e pronto! **Importante:** o Node é um programa você vai executar dentro do terminal. 86 | 87 | Finalmente! Vamos começar a praticar o terminal? 88 | 89 | ## Etapa 2: Praticando os comandos de terminal 90 | 91 | Agora sim. Agora é a hora de praticar o terminal. Vamos começar praticando verificando se as instalações que você fez deram certo! 92 | 93 | ### Verificando se as instalações deram certo pelo terminal: 94 | Abra o terminal (**no Windows**, lembre-se que é o programa "Git Bash") e execute os seguintes comandos: 95 | - Digite `git --version` e pressione enter 96 | - Digite `node --version` e pressione enter 97 | 98 | Se as instalações tiverem funcionado corretamente, o terminal irá retornar as versões dos programas Git e Node. Fácil né? pra executar os comandos, basta digitar o comando e pressionar enter. Agora é a parte mais divertida. Vamos praticar os vários comandos existentes no terminal! 99 | 100 | ### Dominando os comandos de terminal 101 | 102 | Antes de começar, se sentir necessidade, relembre os comandos de terminal assistindo a gravação da aula do dia 1 ou pelos slides fornecidos. Deixe eles num lugar visível. Quando não lembrar de algum comando, assista a aula ou dê uma pesquisada no Google (ou vídeos no Youtube)! Ou então peça ajuda no [nosso Discord](https://discord.com/invite/kHS84D2hA4). Vamos lá! 103 | 1. Utilizando o terminal (no Windows, o próprio "git bash"), navegue para uma localização desejada (recomendamos o Desktop ou Área de Trabalho) e crie uma pasta chamada `dia-1-primeiros-passos`. 104 | 1. Confira se a pasta realmente foi criada com um comando que você sabe qual (dica: começa com 'l') 105 | 1. Navegue para a pasta e crie o diretório com o nome de `tarefa-dia-1` e navegue para dentro dele 106 | 1. Dentro de `tarefa-dia-1`, crie um arquivo chamado `resumo-dia-1.md` no terminal (obs: nada de criar o arquivo com o mouse, viu? haha depois você verá que assim é bem mais rápido que pelo mouse). 107 | 1. *Pausa para dica 1:* pressione a seta pra cima e você poderá pegar os comandos anteriores que você digitou. 108 | 1. *Pausa para dica 2:* quando você começar digitar o nome de uma pasta em um comando (por exemplo, `cd nomedapasta`), pressione 'tab' que o nome da pasta é preenchido automaticamente! 109 | 1. Continuando... agora abra o arquivo `resumo-dia-1.md` em um editor de texto (ou seja, no VSCODE). 110 | 1. Em seguida, copie e cole o conteúdo abaixo nesse arquivo no editor de texto. Salve a alteração no VSCODE. 111 | 112 | 113 | ``` 114 | # Resumo DIA 1: Primeiros passos e modo de pensar 115 | 116 | ## O que é programação? 117 | - Programação é um trabalho que hoje se faz presente em todos os setores da sociedade e da indústria. Desde a aviação, sistemas bancários e financeiros, no setor de saúde, serviços públicos, redes sociais. Programar é uma atividade essencial para o mundo digital. 118 | - Programação é a espinha dorsal de praticamente qualquer produto, serviço ou empresa de tecnologia. Praticamente toda inovação no mundo tem programação no meio. 119 | - Programação é a profissão que mais cresce no mundo, e está faltando cada vez mais profissionais qualificados para trabalhar com tecnologia. 120 | - Programar é a arte de resolver problemas com código. Toda pessoa programadora é uma resolvedora de problemas. 121 | - Existem vários títulos para quem trabalha com programação, mas no final todo mundo é programador. 122 | - Programar é instruir o computador o que queremos que ele faça. Para isso, usamos uma linguagem de programação. 123 | 124 | ## Qualquer pessoa pode ser programadora? 125 | - Profissões tradicionais exigem graduação, mas programação não. Em programação, tudo que você precisa é de um computador, internet, dedicação diária e orientação de carreira. 126 | - Profissionais que trabalham com programação têm uma mentalidade "problem solver", prática intensa, aprendizado constante, resiliência e trabalho em equipe. 127 | - Não preciso amar programação para trabalhar com ela. Mas se eu desenvolver um gosto por programação, terei mais facilidade de me desenvolver e evoluir na área. 128 | - "Está difícil porque eu ainda não aprendi ou exerguei uma solução. É agora que eu vou aprender, para tornar o difícil, fácil.". Isto é aprender de verdade. Em programação, teremos isso em diversos momentos de nossa carreira. 129 | - Inteligência é uma habilidade que pode ser aprendida, expandida e aperfeiçoada. Programação no início é difícil, mas quanto mais você aprender, mais fácil será aprender coisas novas na área. 130 | - Aprender nunca é uma linha reta e perfeita, mas cheias de curvas, com altos e baixos. A dificuldade faz parte do processo. 131 | - Programar é o ato de codificar, errar, errar muito e evoluir. Eu posso ser uma pessoa programadora se eu estiver disposta a absorver e viver dessa filosofia no meu trabalho. 132 | - As maiores empresas de tecnologia do mundo trabalham e constroem produtos e inovações seguindo essa filosofia. 133 | 134 | ## Preparando a caixa de ferramentas que toda pessoa programadora utiliza 135 | - Pra você trabalhar com programação, você precisa basicamente de um editor de texto, um sistema pra você ver o histórico de tudo que você está codificando e um terminal para se comunicar com o sistema operacional e executar o programa que você codificou. 136 | - No curso, vamos utilizar VSCODE como editor de texto, git para controle de versão e JavaScript como linguagem de programação. 137 | 138 | ## Introdução ao terminal 139 | - Pessoas comuns interagem com o sistema operacional por meio da interface de usuário. 140 | - Em programação, vamos precisar muitas vezes interagir com o sistema operacional por meio de comandos de texto. O Terminal tem esse propósito. 141 | 142 | ### Vejamos os comandos e termos mais comuns do terminal: 143 | - `pwd` (**p**rint **w**orking **d**irectory): exibe qual é o seu diretório corrente 144 | - Termo 'diretório corrente': no terminal, você sempre está em algum lugar, em alguma pasta do seu computador. Quando você digita o comando `pwd`, ele mostra em qual pasta você está naquela exato momento. A pasta também é chamada de diretório. Ou seja, o diretório que você está é o diretório corrente. 145 | - `ls` (**l**i**s**t files): lista o que está no seu diretório corrente 146 | - `cd ` (**c**hange **d**irectory): altera o diretório corrente para o diretório de destino 147 | - `cd ..`: volta para o diretório anterior. Ex: se você está em `/diretorio-pai/diretorio-filho` e executa `cd ..`, o seu diretório corrente passa a ser `/diretorio-pai` 148 | - `cd ../../../`: volta três diretórios. Você pode fazer `../` quantas vezes quiser. O número de vezes determinará quantos diretórios você vai voltar pra trás 149 | - `mkdir ` (**m**a**k**e **dir**ectory): cria um novo diretório no diretório corrente 150 | 151 | ## O poder do GitHub para a sua carreira em programação 152 | - O GitHub é uma ferramenta poderosa para trabalhar em projetos de software, compartilhar o seu portfólio e mostrar para os recrutadores que você programa todos os dias 153 | - Cada verdinho no GitHub é uma prova de que você programou naquele dia. Por isso, ao utilizar o GitHub, você pode mostrar a todos que você está sempre colocando em prática o que está aprendendo e isso é muito importante para conquistar oportunidades na área. 154 | ``` 155 | 156 | 9. De volta ao terminal, exiba as primeiras 5 linhas do texto do conteúdo do arquivo `resumo-dia-1.md` (dica: o comando `head` exibe mais do que as primeiras 5 linhas do texto. Pesquise no Google o termo `comando head` e veja como mostrar uma quantidade de linhas específica). 157 | 158 | 1. Agora tente exibir todas as linhas que tem a palavra `programação` no texto. 159 | 160 | 1. Desafio opcional: exiba todas as linhas que começam com '-'. Em seguida, exiba todas as linhas que **não** começam com '-'. Pesquise no google sobre o comando `grep` para conseguir resolver esse desafio. 161 | 162 | 1. Execute o comando `pwd` no diretório onde se encontra o arquivo `resumo-dia-1.md`. 163 | 164 | Ao final desta etapa, você deverá ter os seguintes arquivos e pastas criados na sua área de trabalho ou em alguma outra pasta de sua escolha: 165 | ``` 166 | 📦 Area de Trabalho ou Desktop (ou outra pasta de sua escolha) 167 | ┗ 📂 dia-1-primeiros-passos 168 | ┗ 📂 tarefa-dia-1 169 | ┗ 📜 resumo-dia-1.md 170 | ``` 171 | 172 | Parabéns! Você já sabe manusear o terminal e executar comandos nele. O terminal é a base de toda pessoa que programa computadores. Nele, você pode executar desde um pequeno código a até configurar um sistema super complexo na nuvem. Continue pesquisando por mais comandos no Google (ex: [este artigo](https://towardsdatascience.com/17-terminal-commands-every-programmer-should-know-4fc4f4a5e20e) é bem legal) e exercite a criação e remoção de pastas (comando `rm`), copiar arquivos (comando `cp`), mover arquivos (comando `mv`), etc. 173 | 174 | Nos próximos dias, você vai aprender a utilizar o comando `git` e também a executar o código que você escrever em JavaScript com o comando `node`. 175 | 176 | ## Etapa 3: Criando sua conta no GitHub 177 | 178 | Para finalizar, vamos criar sua conta no GitHub e mostrar como obter o token de acesso para que você consiga subir código no seu perfil do GitHub. Então vamos lá! 179 | 180 | ### Criando sua conta no Github 181 | 182 | 1. No https://github.com/, clique em "Sign up" e siga os passos de criação de conta. 183 | 1. Na área de recursos que se interessa, pode pular e em seguida selecionar a conta "free" 184 | 1. Pronto! Sua conta está criada. :) 185 | 186 | ### Obtendo o token de acesso 187 | 188 | Para conseguir subir códigos no seu perfil do GitHub, você pode precisar de um token que funciona como uma senha. Fique tranquilo! Na tarefa do dia 2 você entenderá melhor quando você deverá utilizar esse token. Vamos então obter esse token: 189 | 1. Logado na sua conta conta no https://github.com/, clique no seu perfil no canto superior direito da tela (onde tem um círculo com uma setinha para baixo). 190 | 1. Em seguida, clique no penúltimo item, em "Settings". 191 | 1. Depois disso, no menu lateral esquerdo, vá até o último item e clique nele, no "Developer settings". 192 | 1. Agora clique em "Personal access tokens". 193 | 1. Agora clique em "Generate new token". 194 | 1. Em "Note", pode colocar "Token para o curso Aprenda a Programar do ITuring". 195 | 1. Pode selecionar a opção "No expiration" no Expiration. 196 | 1. Em seguida, pode selecionar todos os itens abaixo ("repo", "workflow", "write:packages", "delete:packages", etc). 197 | 1. Por fim, clique em "Generate token". 198 | 1. Pronto! Este será o token que você utilizará como senha para acessar e subir seus códigos no GitHub. **Importante:** guarde-o em algum lugar pra você utilizar na tarefa do dia 2. 199 | 1. Caso você perca o token, basta ir novamente em Seu perfil -> Settings -> Developer settings -> Personal access tokens e gerar um novo token 200 | 201 | ### Criando o repositório remoto `aprenda-a-programar` 202 | 203 | Agora vamos criar o seu 1º repositório remoto no GitHub. Você utilizará esse repositório para colocar todas as soluções das tarefas desenvolvidas no nosso curso. Por isso, lembre-se de colocar um nome relevante e busque sempre deixá-lo organizado. 204 | 205 | 1. Com sua conta criada no https://github.com/, crie um novo repositório remoto com o nome `aprenda-a-programar` ou outro nome que julgar relevante. Para isso, basta clicar em "Create repository". 206 | 1. Em seguida, preencha o nome do repositório em "Repository name" e deixe uma descrição caso queira. 207 | 1. Mantenha a marcação "Public", caso contrário não vamos conseguir ver seu repositório. 208 | 1. Em seguida, clique em "Create repository". 209 | 210 | Excelente! Você criou o seu 1º repositório no GitHub :star_struck: 211 | 212 | No Dia 2, vamos aprender a colocar os nossos códigos nesse repositório. :punch: 213 | 214 | ## Enviando a sua tarefa no Discord 215 | 216 | Para enviar a tarefa você deve seguir os seguintes passos: 217 | 1. Execute o comando `history` no terminal 218 | 2. Copie o resultado mostrado pelo comando `history` 219 | 3. Entre no link do formulário de envio de tarefas que se encontra no canal **#💪tarefa-dia-1** do [Discord do curso](https://discord.com/invite/kHS84D2hA4). 220 | 4. Cole o resultado mostrado pelo comando `history` na primeira pergunta do formulário 221 | 5. Responda as perguntas restantes do formulário e envie 222 | 223 | O comando `history` lista todos os comandos que você digitou no terminal! Legal, né? :) 224 | 225 | Parabéns por ter chegado até aqui. Isto já é um ótimo sinal de que programação é para você! 👊😁 226 | 227 | -------------------------------------------------------------------------------- /tarefa-dia-1/solucao/README.MD: -------------------------------------------------------------------------------- 1 | # Gabarito dos exercícios da tarefa do Dia 1: Primeiros passos e modo de pensar 2 | 3 | Recomendamos muito que só veja a solução a seguir depois de ter executado todos os passos da tarefa do dia 1. 4 | 5 | #### Exercícios 6 | 7 | 1. Utilizando o terminal (no Windows, o próprio "git bash"), navegue para uma localização desejada e crie uma pasta chamada `dia-1-primeiros-passos` 8 | 2. Navegue para a pasta e crie o diretório com o nome de `tarefa-dia-1` e navegue para dentro dele (desafio: tente fazer isso com um único comando) 9 | 3. Dentro da `tarefa-dia-1` crie um arquivo `resumo-dia-1.md` 10 | 4. Usando um editor de texto qualquer copie o conteúdo para o arquivo e salve. 11 | 5. De volta ao terminal, exiba as primeiras 5 linhas do texto. 12 | 6. Agora tente exibir todas as linhas que tem a palavra 'programação' no texto. 13 | 7. Desafio extra: exiba todas as linhas que não começam com '-'. Em seguida, exiba todas as linhas que não começam com '-'. Você deve pesquisar no google para resolver esse desafio. 14 | 15 | 16 | #### Os comandos a seguir resolvem os exercícios 17 | 18 | 1. `mkdir dia-1-primeiros-passos` para fazer o diretório ITuring 19 | 2. Para fazer com um único comando você pode usar o &&: `cd dia-1-primeiros-passos && mkdir tarefa-dia-1 && cd tarefa-dia-1` 20 | 3. `touch resumo-dia-1.md` 21 | 4. Basta copiar o texto usando o notepad mesmo e salvar. 22 | 5. `head resumo-dia-1.md` 23 | 6. `grep programação resumo-dia-1.md` 24 | 7. `grep ^- resumo-dia-1.md` e `grep ^[^-] resumo-dia-1.md` 25 | 26 | Você pode ver mais detalhes sobre o desafio além de outras possibilidades de como usar o comando grep aqui: https://guialinux.uniriotec.br/grep/. 27 | 28 | O mais importante é sempre ter o hábito de buscar soluções, mesmo quando não temos ideia de como resolver. Hábito e técnica de pesquisa são habilidades extremamente importantes de uma pessoa programadora. Muito mais do que lembrar comandos de có. 29 | -------------------------------------------------------------------------------- /tarefa-dia-2/README.md: -------------------------------------------------------------------------------- 1 | # Tarefa - Dia 2: Aprendendo a programar e adquirindo o hábito com GitHub (parte 1) 2 | 3 | Saudações, estudante da nossa imersão Aprenda a Programar do ITuring! Vamos então para a nossa 2ª tarefa do curso. Na 1ª tarefa, você exercitou os comandos de terminal e criou sua conta no GitHub. Agora você vai aprender a mexer com o GitHub e começar a escrever suas primeiras linhas de código! 🤩 4 | 5 | **Importante:** a Etapa 3 você só conseguirá fazer depois da aula do Dia 3 que vamos ensinar amanhã às 19h. Por enquanto, foque apenas em fazer a etapa 1 e a etapa 2. 6 | 7 | Na tarefa do dia 2, faremos o seguinte: 8 | - [**Etapa 1:**](#etapa-1-subindo-a-tarefa-do-dia-1-para-o-repositório-remoto-aprenda-a-programar) Subindo a tarefa do dia 1 para o repositório remoto `aprenda-a-programar` 9 | - [**Etapa 2:**](#etapa-2-explorando-declaração-de-variáveis-e-atribuição-de-valores) Explorando declaração de variáveis e atribuição de valores 10 | - [**Etapa 3:**](#etapa-3-explorando-e-entendendo-um-pouco-comandos-condicionais) Explorando comandos condicionais 11 | 12 | ## Etapa 1: Subindo a tarefa do dia 1 para o repositório remoto `aprenda-a-programar` 13 | 14 | Na tarefa do dia 1, você criou sua conta no GitHub, obteve o token de acesso e criou o seu primeiro repositório remoto no GitHub chamado `aprenda-a-programar`. Você utilizará este repositório para colocar todas as soluções das tarefas desenvolvidas no nosso curso. 15 | 16 | Agora vamos subir a tarefa do dia 1 para o seu repositório remoto `aprenda-a-programar` (ou outro nome que você tenha dado para ele)! 17 | 18 | ### Etapa 1.1: Clonando o seu repositório remoto no seu computador 19 | 1. Abra o seu terminal (lembrete: se estiver no Windows, o terminal é o 'Git Bash') e configure o seu nome e email no git executando os seguintes comandos em sequência (**importante:** coloque o email que você registrou sua conta no GitHub): 20 | ``` 21 | $ git config --global user.name "Seu nome aqui" 22 | $ git config --global user.email seuemail@aqui.br 23 | ``` 24 | **Observação:** você pode estar em qualquer diretório no terminal para executar os comandos acima. Ou seja, não é necessário estar em uma pasta específica, pois os comandos acima são de configuração geral do Git e se aplicam em qualquer lugar. 25 | 26 | 2. Veja se as configurações que você fez deram certo com `git config --list` 27 | 1. Agora em um navegador, entre no https://github.com e logue na sua conta do GitHub 28 | 1. Ainda no navegador, entre no repositório que você criou na sua conta do GitHub. Assim que entrar, você verá um link na tela começando com `https://github.com/...` e terminando com `.git`. 29 | 1. Agora no terminal, clone o repositório para o local que desejar (recomendamos no Desktop ou Área de Trabalho) com o seguinte comando: 30 | ``` 31 | git clone link_do_repositório_que_você_criou 32 | ``` 33 | **Importante:** se perguntarem o login e senha, você pode colocar o seu email de login do GitHub e o token que você criou no dia 1! 34 | 35 | 6. Ainda no terminal, confira se deu tudo certo e se apareceu uma pasta no local que você clonou o repositório. Esta pasta vazia (por enquanto) tem uma conexão com o repositório remoto! :) 36 | 37 | Esta pasta vazia que está no seu computador é o seu **repositório local**! Ou seja, está na sua máquina local. Já o que está lá no seu perfil do site do GitHub é o **repositório remoto**. Eles estão conectados! 38 | 39 | 40 | ### Etapa 1.2: Colocando a tarefa do Dia 1 no seu repositório local e fazendo o commit 41 | 1. Na tarefa do dia 1, você criou uma pasta com o nome `dia-1-proximos-passos`, certo? Entre nessa pasta navegando pela interface mesmo (sem ser pelo terminal), copie a pasta `tarefa-dia-1` e cole dentro do **repositório local** `aprenda-a-programar` (ou o nome que você deu) que você acabou de clonar do seu repositório remoto. 42 | 43 | Agora a sua pasta do **repositório local** deve ficar assim: 44 | ``` 45 | 📦 aprenda-a-programar 46 | ┗ 📂 tarefa-dia-1 47 | ┗ 📜 resumo-dia-1.md 48 | ``` 49 | 2. Utilizando o comando `git status`, a pasta `tarefa-dia-1` deve aparecer como modificada/criada, assim como o arquivo dentro dela. 50 | 51 | **Importante:** todos os comandos `git` você tem que executar dentro da pasta `aprenda-a-programar`. Se executar o comando fora da pasta, não vai funcionar, pois você estará fora do seu **repositório local** `aprenda-a-programar`. Ou seja, no terminal, você precisa estar dentro do seu repositório local para executar os comandos `git status`, `git add`, `git commit`, etc. 52 | 53 | 3. Agora faça o 'staging' da pasta e do arquivo que você adicionou executando o comando `git add .` no terminal. O símbolo `.` significa que você está adicionando no 'staging' tudo que estiver como `modificado/criado`. 54 | 1. Execute novamente o comando `git status` e veja que agora a pasta com o arquivo foi adicionada no 'staging'. 55 | 1. Agora faça o commit com `git commit -m "mensagem de commit apropriada"`. Lembre-se de usar uma mensagem sucinta e relevante que deixe clara a alteração que você fez. Pode começar a mensagem com letra minúscula, não tem problema. Mas, se quiser, pode ser com maiúscula também, você que manda. 56 | 1. Confira se o commit foi realizado com `git log` (para sair do `git log`, pressione a tecla `q`). O comando `git log` mostra todos os commits que você fez no seu repositório! 57 | 58 | Parabéns! Este foi o seu 1º commit dentro da nossa imersão Aprenda a Programar. Pessoas programadoras commitam o código frequentemente, todos os dias praticamente. A partir de agora você vai sempre commitar o seu código e subir as alterações para o seu GitHub. :) 59 | 60 | ### Etapa 1.3: Preparando a tarefa do Dia 2 no seu repositório local e fazendo o commit 61 | 62 | 1. Agora, ainda no terminal, crie uma nova pasta dentro de `aprenda-a-programar` com o nome `tarefa-dia-2` (lembre-se do `mkdir`) e em seguida crie um arquivo chamado `index.html` dentro da pasta `tarefa-dia-2`. 63 | 64 | Agora a sua pasta do **repositório local** deve ficar assim: 65 | ``` 66 | 📦 aprenda-a-programar 67 | ┗ 📂 tarefa-dia-1 68 | ┗ 📜 resumo-dia-1.md 69 | ┗ 📂 tarefa-dia-2 70 | ┗ 📜 index.html 71 | ``` 72 | 73 | 2. Abra o arquivo `index.html` com o seu editor de texto (o VSCODE) e cole o conteúdo HTML abaixo no arquivo e depois salve. 74 | ``` 75 | 76 | 77 | ITuring 78 | 79 | 80 | 81 |

Primeira Página HTML - Aprendendo a Programar do ITuring

82 |

Esse é o primeiro arquivo e parágrafo do curso Aprenda a Programar do ITuring. ITuring vem de Instituto Turing. Turing vem de Alan Turing.

83 |

Alan Mathison Turing (23 de junho de 1912 – 7 de junho de 1954) foi um matemático, cientista da computação, lógico, criptoanalista, filósofo e biólogo teórico britânico. Turing foi altamente influente no desenvolvimento da ciência da computação teórica, proporcionando uma formalização dos conceitos de algoritmo e computação com a máquina de Turing, que pode ser considerada um modelo de um computador de uso geral. Ele é amplamente considerado o pai da ciência da computação teórica e da inteligência artificial. Apesar dessas realizações, infelizmente ele nunca foi totalmente reconhecido em seu país de origem enquanto estava vivo por ser homossexual e porque grande parte de seu trabalho foi coberto pela Lei de Segredos Oficiais.

84 | 85 | 86 | ``` 87 | 3. Ainda no terminal e, claro, dentro do repositório local `aprenda-a-programar`, utilizando o comando `git status`, o arquivo `index.html` deve aparecer como modificado/criado, assim como a pasta `tarefa-dia-2`. 88 | 1. Faça o staging dele e da pasta com `git add .`. 89 | 1. Agora faça o commit com `git commit -m "mensagem de commit apropriada"`. Novamente, lembre-se de usar uma mensagem sucinta e relevante que deixe clara a alteração que você fez. 90 | 91 | Opa! Já se foram 2 commits no repositório local. :D 92 | 93 | Mas, e o **repositório remoto**? Se você entrar na sua conta no site do GitHub, você vai ver que ainda não tem nada do que você fez no seu repositório local por lá. Ela só estará assim: 94 | ``` 95 | 📦 aprenda-a-programar 96 | ┗ [nada dentro 😕] 97 | ``` 98 | 99 | Seus problema acabaram (rs), agora vamos subir todas as alterações que você fez no seu repositório local para o repositório remoto. 100 | 101 | ### Etapa 1.4: Subindo todas as alterações para o seu repositório remoto 102 | 103 | 1. Novamente, cheque o repositório remoto no seu perfil do github.com e veja que os arquivos e as novas pastas ainda **não** estão lá. Vamos subir nossas alterações do repositório local para o repositório remoto. 104 | 1. Para isso, no terminal, e, claro, dentro do repositório local `aprenda-a-programar`, execute o comando `git push` no terminal (se perguntarem a senha, você pode colocar o token que você criou durante a tarefa do dia 1!). Reforçando, todos os comandos `git` você deve fazer dentro da pasta do repositório local. Se executar o comando fora da pasta, não vai funcionar. 105 | 1. Pronto. Agora veja que os arquivos estão corretamente no seu repositório remoto e veja mais um verdinho que apareceu no seu perfil do GitHub! :D 106 | 107 | Parabéns por ter chegado até aqui! É este o espírito, programar todos os dias e deixar o GitHub cada vez mais "verdinho". Agora é a hora. Vamos programar pra valer. 108 | 109 | ## Etapa 2: Explorando e entendendo um pouco de declaração de variáveis e atribuição de valores 110 | 111 | Antes de começar a programar , vamos organizar a pasta onde você está desenvolvendo as tarefas: 112 | 1. No terminal, vá para a pasta `tarefa-dia-2` 113 | 1. Crie os seguintes arquivos nesta pasta: 114 | - `pratica-1.js` 115 | - `pratica-2.js` 116 | - `pratica-3.js` 117 | - `pratica-4.js` 118 | 119 | Novamente, pelo terminal com o comando `touch nomedoarquivo`. Ou, execute o comando `for i in {1..4}; do touch pratica-${i}.js; done` e veja a mágica acontecer (dê um `ls` para ver todos os arquivos criados). Isso é programação! Para saber mais: [introdução ao shell script](https://canaltech.com.br/linux/Introducao-ao-Shell-Script/). 120 | 121 | 3. Agora volte para a pasta `aprenda-a-programar` e execute os comandos git (`git status` -> `git add .` -> `git commit -m 'mensagem de commit'` -> `git log` -> `git push`) para subir essa atualização no seu repositório remoto do GitHub. 122 | 123 | O resultado final deve ser este: 124 | ``` 125 | 📦 aprenda-a-programar 126 | ┗ 📂 tarefa-dia-1 127 | ┗ 📜 resumo-dia-1.md 128 | ┗ 📂 tarefa-dia-2 129 | ┣ 📜 index.html 130 | ┣ 📜 pratica-1.js 131 | ┣ 📜 pratica-2.js 132 | ┣ 📜 pratica-3.js 133 | ┗ 📜 pratica-4.js 134 | ``` 135 | 136 | Pronto, agora sim, bora programar! 137 | 138 | **Muito importante:** não se preocupe se você achar que está difícil. Lembre-se que, se for o seu caso, você está conhecendo programação agora, e, como tudo na vida, no início é sempre mais complicado. Por isso, o que mais queremos é que você entenda um pouco de código. Não é obrigatório conseguir fazer tudo com perfeição. Se fizer, excelente! Se não fizer, sem problema algum. Agora tire a palavra "difícil" da mente e vai com tranquilidade. Curta o processo, divirta-se com o código. Vamos lá. 139 | 140 | ### Prática 1: Preparando uma mensagem de uma agência de turismo 141 | 1. Abra o arquivo `pratica-1.js` com o VSCODE ou o editor de código de sua preferência. 142 | 1. Agora no arquivo `pratica-1.js`, declare 5 variáveis que vão armazenar os seguintes valores: 143 | - seu nome 144 | - seu email 145 | - sua profissão 146 | - sua idade 147 | - o lugar que você sonha um dia conhecer (pode ser um país, cidade ou um local mesmo) 148 | 3. Dê um nome apropriado para cada variável. Ou seja, o nome da variável deve sugerir o valor que ela armazena (ex: se você vai armazenar sua idade, então o nome da variável ideal pode ser `idade`, não acha?). Isso é primordial em programação, pois é muito importante que a gente escreva um código que as outras pessoas consigam entender, não só o computador. 149 | 1. Clique em salvar no seu editor de código 150 | 1. Agora vamos executar (ou rodar) o código que você escreveu com o programa Node! Para rodar o código, execute o comando `node pratica-1.js` no terminal (**importante:** o terminal deve estar na pasta onde está o arquivo `pratica-1.js` para conseguir executá-lo com o comando `node`) 151 | 1. Não exibiu nada? Então funcionou! É porque você não utilizou o `console.log()` (ainda, vamos utilizar daqui a pouco). 152 | 1. Agora execute os comandos git (`git status` -> `git add .` -> `git commit -m 'mensagem de commit'` -> `git log` -> `git push`) para subir essa atualização no seu repositório remoto do GitHub 153 | 1. Agora atribua a cada uma das variáveis o valor de cada uma delas, ou seja, o seu email, sua profissão, sua idade e o lugar que você sonha um dia conhecer. Lembre-se que cada valor precisa ser do tipo mais apropriado. Ou seja, idade deve ser um `number` ou uma `string`? E nome, `string`, né? Assim em diante. 154 | 1. Clique em salvar no seu editor de código e execute o código com `node pratica-1.js` no terminal. 155 | 1. Agora execute os comandos git para subir essa atualização no seu repositório remoto do GitHub. 156 | 1. Agora exiba na tela cada um dos valores que você atribuiu às variáveis com o comando `console.log()`. Ou seja, você precisará usar esse comando 4 vezes seguidas para exibir cada uma das 4 variáveis. Consegue utilizá-lo apenas uma vez? Fica como desafio. 157 | 1. Clique em salvar no seu editor de código e execute o código com `node pratica-1.js` no terminal. 158 | 1. Teste, explore, exiba mais coisas com `console.log()` se quiser. O importante é "fuçar" e ir entendendo a lógica de cada comando. 159 | 1. Novamente, execute os comandos git para subir essa atualização no seu repositório remoto do GitHub. 160 | 1. **(Desafio - Opcional)** Agora você deve ajustar o uso do `console.log()` para que os valores de cada uma das variáveis se encaixe nessa frase que deve ser exibida na tela: 161 | ```Olá, ! Somos aqui da agência de turismo Viagem dos Sonhos. Estamos te escrevendo este email, pois acabamos de confirmar as compras das passagens aéreas para . Confirma pra gente alguns dados? A sua idade é , você é e o seu email é ? Ficamos no aguardo. Muito obrigado e boa viagem! :D``` 162 | 163 | Como fazer isso? Pesquise por `template strings` no Google e tente descobrir como utilizar *template strings* no JavaScript. Tentou, mas não foi? Sem problema algum, esta provavelmente é sua 1ª experiência com programação. Acredite, você já está fazendo MUITA coisa para apenas 2 dias. Por isso, mande suas dúvidas lá no nosso Discord. 164 | 165 | 16. **(Desafio - Opcional) continuação:** Clique em salvar no seu editor de código e execute o código com `node pratica-1.js` no terminal. 166 | 1. **(Desafio - Opcional) continuação:** Agora execute os comandos git para subir essa atualização no seu repositório remoto do GitHub. 167 | 168 | Este é o processo de programar. Comitar o código é parte integral do processo. Nesta prática, você comitou com bastante frequência e também testou o código em vários pequenos momentos. Pra quem está começando, isso ajuda MUITO a errar menos e acertar mais (mas errar muito também não é problema, pelo contrário). 169 | 170 | Por isso, nesse início, escreva partes bem pequenas do código e vai evoluindo aos poucos e sempre testando o código executando-o com `node nomedoarquivo.js`. Mais pra frente você certamente vai querer fazer menos commits, mas neste início, recomendamos que siga esse processo pois vai te ajudar bastante! Agora a próxima prática nós não vamos explicar muito cada um dos passos. Agora é com você. 171 | 172 | ## Etapa 3: Explorando e entendendo um pouco comandos condicionais 173 | 174 | Agora que você praticou declaração de variáveis, atribuição de valores às variáveis e o uso do comando `console.log()`, vamos explorar os comandos condicionais. Mas antes de codificar comandos condicionais, vamos tentar pegar a lógica do `if`. 175 | 176 | ### Prática 2: Entra no `if` ou entra no `else`? 177 | 178 | 1. Copie [este código](condicoes.js) e cole no seu arquivo `pratica-2.js` (no VSCODE). Em seguida, clique em salvar. 179 | 1. Agora analise os comandos `if` do código e coloque a resposta nestes comentários que estão dentro do código: 180 | > `// Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): ` 181 | 182 | 3. Agora execute o código no terminal (lembre-se, `node nomedoarquivo.js`) e veja se você acertou 183 | 1. Agora execute os comandos do git para comitar o código e subir no seu repo remoto do GitHub 184 | 185 | Show! Agora vamos resolver um problema utilizando comandos condicionais. 186 | 187 | ### Prática 3: Alan Turing conseguiu decifrar a máquina Enigma? Ajude-o neste desafio! 188 | 189 | O matemático e cientista da computação Alan Turing estava decifrando um dos códigos da máquina de criptografia Enigma durante a 2ª guerra mundial. Ele descobriu que se o código tiver mais que 6110 caracteres, a mensagem codificada não poderia ser decifrada em tempo hábil para derrotar os nazistas. Por isso ele pediu a ajuda dos programadores do ITuring para ajudá-lo a contabilizar quantos caracteres tem essa mensagem e assim dizer para ele se ('if') eles terão tempo hábil ou não para derrotar os nazistas. 190 | 191 | Sua missão será escrever um programa que ao receber esse código, informe para Alan Turing se eles vão conseguir derrotar os nazistas ou não. Para isso, ele deixou um arquivo com o código imenso. Sua missão será armazenar esse código em uma variável, verificar se essa variável tem mais ou menos que 121333 caracteres e a partir dessa verificação, determinar se eles vão vencer os nazistas ou não. Vamos começar? Se quiser fazer sem o nosso passo-a-passo abaixo, apenas garanta que está seguindo as instruções da parte 1 e da parte 4 e 5. 192 | 193 | 1. Pegue o código que Alan Turing nos enviou [aqui](alanturingcode.js) e armazene esse valor em uma variável, tudo no arquivo `pratica-3.js` (claro, usando o VSCODE). Sim, é um valor muuuito grande, mas não tem problema, pode armazenar na variável que vai funcionar. 194 | 1. Agora pesquise no Google o termo `verificar tamanho da string em javascript` e descubra como saber o tamanho de uma string em JavaScript. 195 | 1. Descobriu? Utilize esse método no seu código e armazene o valor resultante em uma nova variável (pense em um bom nome para essa nova variável). 196 | 1. Agora verifique se esse valor é maior ou menor que 6110. Ou seja, se (`if`) for maior, você deve exibir na tela a seguinte informação: 197 | ``` 198 | Perdão, Alan Turing. Vocês não conseguirão derrotar os nazistas. :'( 199 | ``` 200 | Caso contrário (`else`), você deve exibir a seguinte informação: 201 | ``` 202 | Maravilha! O código tem menos ou é igual a 6110 caracteres! Mãos à obra! Decifrem o código o quanto antes que vocês vão conseguir derrotá-los! :D 203 | ``` 204 | 5. Por fim, faça o de sempre: teste o código, veja se ele está funcionando e depois suba ele no GitHub. 205 | 206 | Muito bom! Agora a Prática 4 abaixo é opcional. E dessa vez não tem passo-a-passo, você deve resolver por conta própria. 207 | 208 | ### Prática 4 (Opcional): Resolvendo mais problemas com programação 209 | 210 | Um cliente que vende produtos internacionais e nacionais conseguiu extrair alguns dados de seu programa financeiro. 211 | O problema é que esse programa retorna os dados na forma de mapas e traz apenas o valor do produto e 212 | se ele é internacional ou nacional, mas não calcula os impostos. 213 | 214 | Dada essa situação, ele contratou você para criar um programa que, ao receber o mapa de um produto, verifica 215 | se ele é nacional ou internacional e aplica 20% de impostos caso seja de outro país e 12% caso seja brasileiro. 216 | Uma vez aplicado o imposto, o programa imprime na tela o valor total do produto. 217 | 218 | Base de dados que o cliente passou para você: 219 | ``` 220 | let produtoA = {"nome": "camiseta", "valor": 100.00, "internacional": true}; 221 | let produtoB = {"nome": "perfume", "valor": 200.00, "internacional": true}; 222 | let produtoC = {"nome": "sandália", "valor": 120.00, "internacional": false}; 223 | ``` 224 | 225 | Copie essa base para o arquivo `pratica-4.js` e escreva um programa que resolve o problema do cliente e exibe as informações dos produtos e o valor aplicado os impostos devidos. Você deve testar o seu código com os 3 produtos. Não esqueça do de sempre: testar o código, ver se ele está funcionando e depois subir ele no GitHub. 226 | 227 | **Dica 1:** lembre-se do que falamos no dia 1. Programar é errar e consertar. É SEMPRE experimentando e "futucando". É ser uma pessoa desbravadora, que futuca e vai tentando tudo de quanto é jeito até acertar. Experimente o `console.log()`, execute o código e veja o que aparece na tela. Começa tentando exibir as informações de cada produto. Lembrando que pra executar o código você digita `node nomedoarquivo.js` no terminal. 228 | 229 | **Dica 2:** `{"nome": "camiseta", "valor": 100.00, "internacional": true}` é um tipo de dado que você ainda não conhece, pois não abordamos em aula. Por isso, este é o momento de exercitar a pesquisa no Google e ir obtendo autonomia. Fique à vontade de pesquisar sobre `objetos javascript` para obter um entendimento de como utilizá-lo. Para acessar ou alterar as informações das variáveis desse tipo você utiliza `nomedavariavel["nome"]`, `nomedavariavel["valor"]`, `nomedavariavel["internacional"]` ou `nomedavariavel.nome`, `nomedavariavel.valor`, `nomedavariavel.internacional`. Altere as informações e depois tente exibir com `console.log()`. Veja se realmente foram alteradas ao ver o que foi exibido com o `console.log()`. 230 | 231 | **Dica 3:** resolver problemas é **sempre** baby-steps (passos de bebê). Não existe nenhuma pessoa programadora do mundo que não siga esse processo. As melhores sempre fazem isso, um passo de cada vez, dividir para conquistar. Pra quem está começando, este método é ainda mais importante! Começa fazendo algo bem simples primeiro. Testa e veja se funcionou. Funcionou? Não funcionou? Deu algum erro? Pesquisa o que foi que deu errado e corrige. Corrigiu? Vai pro próximo passo. E assim em diante. 232 | 233 | **Dica 4:** tranquilize-se. A 1ª vez que coloca a mão no código é sempre mais difícil. Tudo mais confuso na cabeça, as coisas estão se materializando, o entendimento, a compreensão e prática é que vai te permitir a evolução. Aos poucos você vai pegando o jeito e depois você verá que tudo fica mais tranquilo e fluido. Como falamos no 1º dia, quando a pessoa aprende a dirigir é o mesmo processo! Tudo mais difícil no início, depois fica natural e rápido. 234 | 235 | **Dica 5:** para aplicar 20% de impostos, você deve multiplicar por `1.2`. Para aplicar 12%, você deve multiplicar por `1.12`. Lembre-se que o computador só entende de 2 coisas: números e texto. Quando trabalhar com número, `12%`, `12 reais`, `20 dólares` não existe como valor válido no código. Tudo é só número, então tem que ser `12` (ou `0.12`, ou `1.12` no caso do problema) e não `12%`. Nós usamos esses símbolos apenas pra mostrar pro usuário. Ou seja, esses símbolos só tem função para humanos. 236 | 237 | **Dica 6:** você vai precisar criar comandos condicionais que verificam se o produto é internacional ou não. Se for internacional, deve exibir o nome do produto e o valor com os impostos de 20%. Se for nacional, deve exibir o nome do produto e o valor com os impostos de 12%. 238 | 239 | ### Prática 5 (Opcional): Criando um arquivo README.md resumindo para o que seu repositório serve 240 | 241 | Crie o arquivo `README.md` no seu repositório local na pasta `aprenda-a-programar` (ou o nome que você deu pra ela). Aproveite para descrever neste arquivo pra que serve o seu repositório! Faça uma boa formatação do arquivo utilizando Markdown e suba este arquivo para o seu repositório remoto. [Aqui](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) você encontra a documentação de como utilizar o Markdown. 242 | 243 | Faça o commit e depois suba o seu novo arquivo para o repositório remoto. 244 | 245 | Lembre-se de que "fuçar" e pesquisar é fundamental em programação. Esta é, se não a principal, uma das principais habilidades que buscamos com este curso. 246 | 247 | ## Enviando a sua tarefa no nosso Discord 248 | 249 | Para enviar a tarefa, basta copiar o link do seu repositório no GitHub e enviar na 1ª pergunta do formulário solicitado no [Discord do curso](https://discord.com/invite/kHS84D2hA4) no canal **#💪tarefa-dia-2**. 250 | 251 | **Não sabe qual é o link do seu repositório?** Entre em github.com e clique no seu perfil no canto superior direito da tela (onde tem um círculo com uma setinha para baixo). Em seguida, clique em "Your repositories". Lá você vai ver o nome do repositório que você criou. Clique nele e em seguida copie o link do navegador e cole o link no formulário. 252 | 253 | Ao final de todas as etapas, o seu repositório **remoto** e **local** deverão ter as seguintes pastas e arquivos: 254 | 255 | ``` 256 | 📦 aprenda-a-programar 257 | ┗ 📜 README.md (caso tenha feito o desafio opcional) 258 | ┗ 📂 tarefa-dia-1 259 | ┗ 📜 resumo-dia-1.md 260 | ┗ 📂 tarefa-dia-2 261 | ┣ 📜 index.html 262 | ┣ 📜 pratica-1.js 263 | ┣ 📜 pratica-2.js 264 | ┣ 📜 pratica-3.js 265 | ┗ 📜 pratica-4.js (caso tenha feito o desafio opcional) 266 | ``` 267 | -------------------------------------------------------------------------------- /tarefa-dia-2/alanturingcode.js: -------------------------------------------------------------------------------- 1 | "ABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIALFJNZLXKJHPIHIAUHWDIUAHWHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBDHEKSJLBDHEKSJLBBDHBDHEKSJLBDHEKSJLEKSJLBDHEKSJLBBBBBBDHEKSJLBDHEKSJLBBBBDHEKSJLBDHEKSJLBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJBDHEKSJLBDHEKSJLLFYHAZDNEIPUFHDOBDHEKSJLBDHEKSJLUAFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCHWODUHAOIUWHDIOAUWHDIOUAHISDUHAISUDHIAUHWDIUHAISUHDIAUHIDWUHIAWUHDIUAHWPFAENKJFHIHPIZVEKZVEKZVEKZVEKZVEKFPDFIPUHEIPFUHEIPUFHIJSNFIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAABCDBDHEKSJLFYHAZDNCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJHIHDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPIFPDFIPUBDHEKSJLBDHEKSJLHEIPFSNFIABCDBDJXHICHIUHEOINLKJFIOEURTYUJKASODIHASICHIASUHOUAHOYWGUYAGWDIUYGAWUDYBDHEKSJLBDHEKSJLGAIUWYDGIUAYGUSCOUASBCOIUAHSOIDUHAOISDUHAOIWUHDIOUWHIODUHAOIWUEHOIAUWYEOIUAWYEIOUYAWOIUAYCIBWCHBAWHCBWHBDHGAYGWDHHBDHEKSJLBDHEKSJLBDHEKSJLIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBBBBBBBBBBBKVHIHPIFPDFIPUHEIPFUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUIHPFAENKJFHIHPIIHPFAENKJFHIHPIIHPFAENKJFHIHPITBQDIAPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISBDHEKSJLBDHEKSJLJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAEBDHEKSJLBDHEKSJLNKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFHIHPIFPBBBBBBBBBBBDFIPUHEIPFUHEIPUFHIJSNFIABCDBDKHFKCEHBDHEKSJLBDHEKSJLEKLUTBQDIAJSIDJEIFJSIDJSBDHEKSJLBDHEKSJLIDJAISJDAIJELIUHEDJSIDJOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAAJSDIAUSHDIUAHOUFHPIAGEJFPIUEHGOIHEAOUYZDNJCLAAWJHIHPIFPDFIPUHHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPBDHEKSJLBDHEKSJLDFIPUHEIPFUHCLAAWJBHTZVEBBBBDHEKSJLBDHEKSJLBBBDHEKSJLBDHEKSJLBBBBBDHEKSJLBDHEKSJLBBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHEIPFUHBDHEKSJLBDHEKSJLEIPUFHIJSNFIABCDBDBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIALFJNZLXKJHPIHIAUHWDIUAHWHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBDHEKSJLBDHEKSJLBBDHBDHEKSJLBDHEKSJLEKSJLBDHEKSJLFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCHWODUHAOIUWHDIOAUWHDIOUAHISDUHAISUDHIAUHWDIUHAISUHDIAUHIDWUHIAWUHDIUAHWPFAENKJFHIHPIZVEKZVEKZVEKZVEKZVEKFPDFIPUHEIPFUHEIPUFHIJSNFIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAABCDBDHEKSJLFYHAZDNCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJHIHDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPIFPDFIPUBDHEKSJLBDHEKSJLHEIPFSNFIABCDBDJXHICHIUHEOINLKJFIOEURTYUJKASODIHASICHIASUHOUAHOYWGUYAGWDIUYGAWUDYBDHEKSJLBDHEKSJLGAIUWYDGIUAYGUSCOUASBCOIUAHSOIDUHAOISDUHAOIWUHDIOUWHIODUHAOIWUEHOIAUWYEOIUAWYEIOUYAWOIUAYCIBWCHBAWHCBWHBDHGAYGWDHHBDHEKSJLBDHEKSJLBDHEKSJLIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBBBBBBBBBBBKVHIHPIFPDFIPUHEIPFUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUIHPFAENKJFHIHPIIHPFAENKJFHIHPIIHPFAENKJFHIHPITBQDIAPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISBDHEKSJLBDHEKSJLJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAEBDHEKSJLBDHEKSJLNKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFHIHPIFPBBBBBBBBBBBDFIPUHEIPFUHEIPUFHIJSNFIABCDBDKHFKCEHBDHEKSJLBDHEKSJLEKLUTBQDIAJSIDJEIFJSIDJSBDHEKSJLBDHEKSJLIDJAISJDAIJELIUHEDJSIDJOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAAJSDIAUSHDIUAHOUFHPIAGEJFPIUEHGOIHEAOUYZDNJCLAAWJHIHPIFPDFIPUHHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPBDHEKSJLBDHEKSJLDFIPUHEIPFUHCLAAWJBHTZVEBBBBDHEKSJLBDHEKSJLBBBDHEKSJLBDHEKSJLBBBBBDHEKSJLBDHEKSJLBBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHEIPFUHBDHEKSJLBDHEKSJLEIPUFHIJSNFIABCDBDBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFI" -------------------------------------------------------------------------------- /tarefa-dia-2/condicoes.js: -------------------------------------------------------------------------------- 1 | // Este é um comentário no código. Comentários não são executados, eles servem pra gente deixar alguma mensagem 2 | // para outras pessoas que forem ler o código. Agora vamos para o exercício. 3 | 4 | // Analise os 10 comandos 'if' a seguir e tente prever qual mensagem será exibida na tela. 5 | // Fique à vontade de rodar o código para verificar se suas respostas estão corretas. 6 | 7 | let a = 10 8 | 9 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 10 | if (a == 10) { 11 | console.log("Verdade! O valor ", a, " é igual a 10"); 12 | } else { 13 | console.log("Falso! O valor ", a, " não é igual a 10"); 14 | } 15 | 16 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 17 | if (a > 10) { 18 | console.log("Verdade! O valor ", a, " é maior que 10"); 19 | } else { 20 | console.log("Falso! O valor ", a, " não é maior 10"); 21 | } 22 | 23 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 24 | if (10 <= a) { 25 | console.log("Verdade! O valor ", a, " é maior ou igual a 10"); 26 | } else { 27 | console.log("Falso! O valor ", a, "não é maior ou igual a 10"); 28 | } 29 | 30 | let b = true 31 | 32 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 33 | if (b == true) { 34 | console.log("Verdade! O valor ", b, " é igual a true"); 35 | } else { 36 | console.log("Falso! O valor ", b, " não é igual a true"); 37 | } 38 | 39 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 40 | if (b) { 41 | console.log("Verdade! O valor ", b, " é considerado como verdade"); 42 | } else { 43 | console.log("Falso! O valor ", b, " não é considerado como verdade"); 44 | } 45 | 46 | let c = [] 47 | 48 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 49 | if (c) { 50 | console.log("Verdade! O valor ", c, " é considerado como verdade"); 51 | } else { 52 | console.log("Falso! O valor ", c, " não é considerado como verdade"); 53 | } 54 | 55 | let d = [1,2,3,4] 56 | 57 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 58 | if (d) { 59 | console.log("Verdade! O valor ", d, " é considerado como verdade"); 60 | } else { 61 | console.log("Falso! O valor ", d, " não é considerado como verdade"); 62 | } 63 | 64 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 65 | if (d[0] == 1) { 66 | console.log("Verdade! O valor ", d[0], " do elemento do índice 0 da variável 'd' é igual a 1"); 67 | } else { 68 | console.log("Falso! O valor ", d[0], " do elemento do índice 0 da variável 'd' não é igual a 1"); 69 | } 70 | 71 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 72 | if (d[1] == 1) { 73 | console.log("Verdade! O valor ", d[1], " do elemento do índice 1 da variável 'd' é igual a 1"); 74 | } else { 75 | console.log("Falso! O valor ", d[1], " do elemento do índice 1 da variável 'd' não é igual a 1"); 76 | } 77 | 78 | let e = "Nome" 79 | 80 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): 81 | if (typeof(e) == 'string') { 82 | console.log("Verdade! O tipo de dado da variável 'e' é uma string"); 83 | } else { 84 | console.log("Falso! O tipo de dado da variável 'e' não é uma string"); 85 | } -------------------------------------------------------------------------------- /tarefa-dia-2/solucao/solucao-pratica-1.js: -------------------------------------------------------------------------------- 1 | let nome = "Maria" 2 | let email = "maria@maria.com" 3 | let profissao = "publicitária" 4 | let idade = 33 5 | let viagemDosSonhos = "Bali" 6 | 7 | let mensagem = "Olá, " + nome + "! Somos aqui da agência de turismo Viagem dos Sonhos. Estamos te escrevendo este email, pois acabamos de confirmar as compras das passagens aéreas para " + viagemDosSonhos + ". Confirma pra gente alguns dados? A sua idade é " + idade + ", você é " + profissao + " e o seu email é " + email + "? Ficamos no aguardo. Muito obrigado e boa viagem! :D" 8 | 9 | console.log(mensagem) -------------------------------------------------------------------------------- /tarefa-dia-2/solucao/solucao-pratica-2.js: -------------------------------------------------------------------------------- 1 | // Este é um comentário no código. Comentários não são executados, eles servem pra gente deixar alguma mensagem 2 | // para outras pessoas que forem ler o código. Agora vamos para o exercício. 3 | 4 | // Analise os 10 comandos 'if' a seguir e tente prever qual mensagem será exibida na tela. 5 | // Fique à vontade de rodar o código para verificar se suas respostas estão corretas. 6 | 7 | let a = 10 8 | 9 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 10 | if (a == 10) { 11 | console.log("Verdade! O valor ", a, " é igual a 10"); 12 | } else { 13 | console.log("Falso! O valor ", a, " não é igual a 10"); 14 | } 15 | 16 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): else 17 | if (a > 10) { 18 | console.log("Verdade! O valor ", a, " é maior que 10"); 19 | } else { 20 | console.log("Falso! O valor ", a, " não é maior 10"); 21 | } 22 | 23 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 24 | if (10 <= a) { 25 | console.log("Verdade! O valor ", a, " é maior ou igual a 10"); 26 | } else { 27 | console.log("Falso! O valor ", a, "não é maior ou igual a 10"); 28 | } 29 | 30 | let b = true 31 | 32 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 33 | if (b == true) { 34 | console.log("Verdade! O valor ", b, " é igual a true"); 35 | } else { 36 | console.log("Falso! O valor ", b, " não é igual a true"); 37 | } 38 | 39 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 40 | if (b) { 41 | console.log("Verdade! O valor ", b, " é considerado como verdade"); 42 | } else { 43 | console.log("Falso! O valor ", b, " não é considerado como verdade"); 44 | } 45 | 46 | let c = [] 47 | 48 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 49 | if (c) { 50 | console.log("Verdade! O valor ", c, " é considerado como verdade"); 51 | } else { 52 | console.log("Falso! O valor ", c, " não é considerado como verdade"); 53 | } 54 | 55 | let d = [1,2,3,4] 56 | 57 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 58 | if (d) { 59 | console.log("Verdade! O valor ", d, " é considerado como verdade"); 60 | } else { 61 | console.log("Falso! O valor ", d, " não é considerado como verdade"); 62 | } 63 | 64 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 65 | if (d[0] == 1) { 66 | console.log("Verdade! O valor ", d[0], " do elemento do índice 0 da variável 'd' é igual a 1"); 67 | } else { 68 | console.log("Falso! O valor ", d[0], " do elemento do índice 0 da variável 'd' não é igual a 1"); 69 | } 70 | 71 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): else 72 | if (d[1] == 1) { 73 | console.log("Verdade! O valor ", d[1], " do elemento do índice 1 da variável 'd' é igual a 1"); 74 | } else { 75 | console.log("Verdade! O valor ", d[1], " do elemento do índice 1 da variável 'd' não é igual a 1"); 76 | } 77 | 78 | let e = "Nome" 79 | 80 | // Escreva depois dos ':' se vai entrar no 'if' ou no 'else' ('if' se entrar no 'if' e 'else' se entrar no 'else'): if 81 | if (typeof(e) == 'string') { 82 | console.log("Verdade! O tipo de dado da variável 'e' é uma string"); 83 | } else { 84 | console.log("Falso! O tipo de dado da variável 'e' não é uma string"); 85 | } -------------------------------------------------------------------------------- /tarefa-dia-2/solucao/solucao-pratica-3.js: -------------------------------------------------------------------------------- 1 | let codigoDeAlanTuring = "ABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIALFJNZLXKJHPIHIAUHWDIUAHWHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBDHEKSJLBDHEKSJLBBDHBDHEKSJLBDHEKSJLEKSJLBDHEKSJLBBBBBBDHEKSJLBDHEKSJLBBBBDHEKSJLBDHEKSJLBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJBDHEKSJLBDHEKSJLLFYHAZDNEIPUFHDOBDHEKSJLBDHEKSJLUAFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCHWODUHAOIUWHDIOAUWHDIOUAHISDUHAISUDHIAUHWDIUHAISUHDIAUHIDWUHIAWUHDIUAHWPFAENKJFHIHPIZVEKZVEKZVEKZVEKZVEKFPDFIPUHEIPFUHEIPUFHIJSNFIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAABCDBDHEKSJLFYHAZDNCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJHIHDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPIFPDFIPUBDHEKSJLBDHEKSJLHEIPFSNFIABCDBDJXHICHIUHEOINLKJFIOEURTYUJKASODIHASICHIASUHOUAHOYWGUYAGWDIUYGAWUDYBDHEKSJLBDHEKSJLGAIUWYDGIUAYGUSCOUASBCOIUAHSOIDUHAOISDUHAOIWUHDIOUWHIODUHAOIWUEHOIAUWYEOIUAWYEIOUYAWOIUAYCIBWCHBAWHCBWHBDHGAYGWDHHBDHEKSJLBDHEKSJLBDHEKSJLIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBBBBBBBBBBBKVHIHPIFPDFIPUHEIPFUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUIHPFAENKJFHIHPIIHPFAENKJFHIHPIIHPFAENKJFHIHPITBQDIAPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISBDHEKSJLBDHEKSJLJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAEBDHEKSJLBDHEKSJLNKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFHIHPIFPBBBBBBBBBBBDFIPUHEIPFUHEIPUFHIJSNFIABCDBDKHFKCEHBDHEKSJLBDHEKSJLEKLUTBQDIAJSIDJEIFJSIDJSBDHEKSJLBDHEKSJLIDJAISJDAIJELIUHEDJSIDJOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAAJSDIAUSHDIUAHOUFHPIAGEJFPIUEHGOIHEAOUYZDNJCLAAWJHIHPIFPDFIPUHHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPBDHEKSJLBDHEKSJLDFIPUHEIPFUHCLAAWJBHTZVEBBBBDHEKSJLBDHEKSJLBBBDHEKSJLBDHEKSJLBBBBBDHEKSJLBDHEKSJLBBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHEIPFUHBDHEKSJLBDHEKSJLEIPUFHIJSNFIABCDBDBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIALFJNZLXKJHPIHIAUHWDIUAHWHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBDHEKSJLBDHEKSJLBBDHBDHEKSJLBDHEKSJLEKSJLBDHEKSJLFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCFIJNXKDNJCLAAWJBHTZVEKVMIFKHFKCHWODUHAOIUWHDIOAUWHDIOUAHISDUHAISUDHIAUHWDIUHAISUHDIAUHIDWUHIAWUHDIUAHWPFAENKJFHIHPIZVEKZVEKZVEKZVEKZVEKFPDFIPUHEIPFUHEIPUFHIJSNFIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAABCDBDHEKSJLFYHAZDNCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJHIHDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAPIFPDFIPUBDHEKSJLBDHEKSJLHEIPFSNFIABCDBDJXHICHIUHEOINLKJFIOEURTYUJKASODIHASICHIASUHOUAHOYWGUYAGWDIUYGAWUDYBDHEKSJLBDHEKSJLGAIUWYDGIUAYGUSCOUASBCOIUAHSOIDUHAOISDUHAOIWUHDIOUWHIODUHAOIWUEHOIAUWYEOIUAWYEIOUYAWOIUAYCIBWCHBAWHCBWHBDHGAYGWDHHBDHEKSJLBDHEKSJLBDHEKSJLIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHCLAAWJBHTZVEBBBBBBBBBBBBKVHIHPIFPDFIPUHEIPFUHEIDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUIHPFAENKJFHIHPIIHPFAENKJFHIHPIIHPFAENKJFHIHPITBQDIAPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISBDHEKSJLBDHEKSJLJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAEBDHEKSJLBDHEKSJLNKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHIJSNFIABCDBDHEKSJLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFHIHPIFPBBBBBBBBBBBDFIPUHEIPFUHEIPUFHIJSNFIABCDBDKHFKCEHBDHEKSJLBDHEKSJLEKLUTBQDIAJSIDJEIFJSIDJSBDHEKSJLBDHEKSJLIDJAISJDAIJELIUHEDJSIDJOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJIUHEOINLKJFIOEUHFIJKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDHEKSJLFYHAAJSDIAUSHDIUAHOUFHPIAGEJFPIUEHGOIHEAOUYZDNJCLAAWJHIHPIFPDFIPUHHEIPFUHEIPUFHIJSNFIABCDBDFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPBDHEKSJLBDHEKSJLDFIPUHEIPFUHCLAAWJBHTZVEBBBBDHEKSJLBDHEKSJLBBBDHEKSJLBDHEKSJLBBBBBDHEKSJLBDHEKSJLBBBKVHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFIABCDBDPUFHIJSNFIABCDBDHEKSJLFYHAZDNEIPUFHEIPFUHBDHEKSJLBDHEKSJLEIPUFHIJSNFIABCDBDBHTZVEKVMIFKHFKCEHEKLUTBQLFYHAZDNJCLAAWJBHTZVEKVMIFKHFKCEHEKLUTBQDIAJSIDJEIFJSIDJSIDJAISJDAIJELKJJXHICHIUHEOINLKJFIOEUHFIJNXKLFJNZLXKJHPIHPFAENKJFHIHPIFPDFIPUHEIPFUHEIPUFHIJSNFI" 2 | 3 | let tamanhoDoCodigo = codigoDeAlanTuring.length 4 | 5 | if (tamanhoDoCodigo <= 6110) { 6 | console.log("Maravilha! O código tem menos ou é igual a 6111 caracteres! Mãos a obra! Decifrem o código o quanto antes que vocês vão conseguir derrotá-los! :D") 7 | } else { 8 | console.log("Perdão, Alan Turing. Vocês não conseguirão derrotar os nazistas. :'(") 9 | } -------------------------------------------------------------------------------- /tarefa-dia-2/solucao/solucao-pratica-4.js: -------------------------------------------------------------------------------- 1 | //Dados enviados pelo cliente 2 | let produtoA = {"nome": "camiseta", "valor": 100.00, "internacional": true} 3 | let produtoB = {"nome": "perfume", "valor": 200.00, "internacional": true} 4 | let produtoC = {"nome": "sandália", "valor": 120.00, "internacional": false} 5 | 6 | //Usamos o condiconal para testar se a chave internacional do mapa produtoA é true ou false. 7 | if (produtoC.internacional == true) { 8 | //para deixar o código organizado, podemos clarar uma variável que recebe o resultado do calculo de impostos. 9 | //Isso deixa o progrmaa mais legível sobre o que está acontecendo. 10 | let valorImpostos = produtoC.valor * 1.2 11 | //Podemos adiconar um console.log com uma mensagem que será útil para verificarmos se o programa funcionou corretamente. 12 | console.log("O produto é internacional") 13 | console.log(valorImpostos) 14 | 15 | } else { 16 | let valorImpostos = produtoC.valor * 1.12 17 | console.log("O produto é nacional") 18 | console.log(valorImpostos) 19 | } -------------------------------------------------------------------------------- /tarefa-dia-3/README.md: -------------------------------------------------------------------------------- 1 | # Tarefa - Dia 3: Aprendendo a programar (parte 2) 2 | 3 | Saudações novamente, estudante da nossa imersão Aprenda a Programar aqui do ITuring! **Esta é a última tarefa obrigatória** do nosso curso, falta pouco! 🙏😁 4 | 5 | Na tarefa do dia 3, faremos o seguinte: 6 | - [**Etapa 1:**](#etapa-1-preparando-se-para-programar) Preparando-se para programar 7 | - [**Etapa 2:**](#etapa-2-dominando-loops-e-iteração) Dominando loops e iteração 8 | 9 | ## Antes de começar, aprofundando-se um pouco em ciência da computação 10 | 11 | Como já falamos repetidas vezes, o que você está aprendendo é a base de qualquer software no mundo. Para realmente resolver qualquer tipo de problema solucionável com programação, você precisa unicamente desses 3 elementos: 12 | - Variáveis 13 | - Comandos condicionais 14 | - Comandos de repetição 15 | 16 | Estes são os elementos primordiais da programação. Sem eles você não consegue fazer nada, pois são eles que concretizam a [máquina de Turing](https://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing) (sim, concebida pelo Alan Turing, o "big boss" da computação), também conhecida como máquina universal, capaz de resolver qualquer [problema lógico solucionável](https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science) do mundo. 17 | 18 | Mas é só isso então? Não, tem muito mais coisas. Porém, esses outros elementos que não passamos aqui são mais importantes para organização do código, coesão, escala e sustentabilidade de coisas grandes que você constrói. Como o foco do curso é que você aprenda o primordial para depois se desenvolver, não abordamos estes outros elementos. 19 | 20 | Agora, voltando à questão da Máquina de Turing, quando um conjunto de regras (i.e, linguagem de programação) satisfaz o funcionamento de uma Máquina de Turing, ele é chamado de Turing-completo. Neste caso, variáveis, condicionais e loops (comandos de repetição) é o suficiente para satisfazer isto. Depois, se tiver interesse, não deixe de conferir [este vídeo](https://www.youtube.com/watch?v=G4MvFT8TGII) do Fabio Akita que explica muito bem o que é uma Máquina de Turing. Isso é mais de curiosidade, caso queira se aprofundar nas raízes da ciência da computação. 21 | 22 | ### Como as variáveis que eu declaro se relacionam com a memória do computador? 23 | 24 | Não sei se você já se fez essa pergunta, mas, sim, como falamos, cada variável que você declara em um programa é um espaço de memória sendo consumida no seu computador. As memórias do computador são normalmente dividas em 3: 25 | - *Memória do processador:* a mais rápida que existe, pois fica no coração do processador. Elas são chamadas de **registradores**. Ela **só funciona** com o computador ligado. 26 | - *Memória primária:* é a famosa memória RAM. Ela é muito rápida, mas não como uma memória do processador. Quando te perguntam "quanto de memória tem o seu celular?", você responde "ele tem 2GB de memória RAM". É dessa memória aí. Assim como a memória do computador, ela também **só funciona** com o computador ligado. 27 | - *Memória secundária:* esta é o famoso HD ou SSD. Não é tão rápida igual a memória RAM, mas é capaz de armazenar muuuuitos gigas de dados e consegue guardar os dados mesmo sem energia. 28 | 29 | Mas então, qual memória meu computador utiliza quando eu declaro uma variável? Por padrão, elas são armazenadas na memória primária. Porém, o compilador/interpretador, no nosso caso o NodeJS (lembre-se que você executa o código com `node nomedoarquivo`), pode colocar uma variável em um registrador do processador caso ela esteja sendo acessada com muita frequência, melhorando a performance. Ou seja, geralmente uma variável que está em uso direto e frequente fica armazenada nos registradores do processador, em contato direto com o núcleo de processamento da máquina. 30 | 31 | Gostou desse papo? Se sim, envia um emoji de 👌 lá no canal da tarefa pra gente saber e assim trazer mais informações desse tipo. 32 | 33 | ## Etapa 1: Preparando-se para programar 34 | 35 | Como vimos na última tarefa: 36 | 37 | 1. Você criou um repositório remoto: `aprenda-a-programar` 38 | 2. Clonou o repositório remoto para sua máquina local 39 | 3. Criou a solução para os exercícios 40 | 4. Subiu as alterações para o repositório remoto 41 | 42 | A sua organização após a finalização da tarefa do Dia 2 ficou algo semelhante a: 43 | 44 | ``` 45 | 📦 aprenda-a-programar 46 | ┗ 📜 README.md (caso tenha feito o desafio opcional) 47 | ┗ 📂 tarefa-dia-1 48 | ┗ 📜 resumo-dia-1.md 49 | ┗ 📂 tarefa-dia-2 50 | ┣ 📜 index.html 51 | ┣ 📜 pratica-1.js 52 | ┣ 📜 pratica-2.js 53 | ┣ 📜 pratica-3.js 54 | ┗ 📜 pratica-4.js (caso tenha feito o desafio opcional) 55 | ``` 56 | 57 | A tarefa do Dia 3 também será entregue neste mesmo repositório. Vamos relembrar os principais comandos e criar a estrutura para a solução dos exercícios: 58 | 1. No terminal, entre no seu repositório local `aprenda-a-programar` e crie a pasta `tarefa-dia-3` 59 | 1. Agora vá para a pasta `tarefa-dia-3` e crie os seguintes arquivos: `pratica-1.js`, `pratica-2.js`, `pratica-3.js`, `pratica-4.js` e `pratica-5.js`. Ou, execute o comando `for i in {1..5}; do touch pratica-${i}.js; done` e veja a mágica acontecer (dê um `ls` para ver todos os arquivos criados) 60 | 1. Agora execute os comandos git (`git pull` -> `git status` -> `git add .` -> `git commit -m 'mensagem de commit'` -> `git log` -> `git push`) para subir essa atualização no seu repositório remoto do GitHub 61 | 62 | Agora a estrutura de pastas do seu repositório de tarefas `aprenda-a-programar` deverá ficar da seguinte forma: 63 | 64 | ``` 65 | 📦 aprenda-a-programar 66 | ┗ 📜 README.md (caso tenha feito o desafio opcional) 67 | ┗ 📂 tarefa-dia-1 68 | ┗ 📜 resumo-dia-1.md 69 | ┗ 📂 tarefa-dia-2 70 | ┣ 📜 index.html 71 | ┣ 📜 pratica-1.js 72 | ┣ 📜 pratica-2.js 73 | ┣ 📜 pratica-3.js 74 | ┗ 📜 pratica-4.js (caso tenha feito o desafio opcional) 75 | ┗ 📂 tarefa-dia-3 76 | ┣ 📜 pratica-1.js 77 | ┣ 📜 pratica-2.js 78 | ┣ 📜 pratica-3.js 79 | ┣ 📜 pratica-4.js (caso tenha feito o desafio opcional) 80 | ┗ 📜 pratica-5.js (caso tenha feito o desafio opcional) 81 | ``` 82 | 83 | Pronto, agora bora programar! 84 | 85 | ## Etapa 2: Dominando loops e iteração 86 | 87 | Se existe algo ainda mais poderoso que as estruturas condicionais que você aprendeu ontem, são as estruturas de repetição. 88 | 89 | Comandos de repetição, ou loops, fazem jus ao nome que damos para o núcleo "pensante" de qualquer computador: o processador ou microprocessador. São com as estruturas de repetição que nós programadores somos capazes de processar megas, gigas ou até terabytes de informações. Aí "o processador que lute!". 😅 90 | 91 | Mas, com grandes poderes, vem grandes responsabilidades. As estruturas de repetição também exercem um papel fundamental na performance de aplicações. Quando mal projetadas, elas podem acarretar em um software lento. Mas na verdade não são elas as culpadas, mas sim a pessoa programadora que desenvolveu uma solução pouco performática. 92 | 93 | Empresas como Google, Apple e outras big techs são bastante exigentes nas entrevistas sobre [análise e complexidade de algoritmos](https://pt.wikipedia.org/wiki/An%C3%A1lise_de_algoritmos) por conta disso. Para elas, é crucial que o software que elas projetam sejam o suprassumo da performance e qualidade, pois seus software estão atendendo a milhões e até bilhões de usuários. 94 | 95 | "Nossa, então eu tenho que me preocupar com isso agora também?". Não! Esqueça performance neste início. Aliás, esqueça performance por um bom tempo. Foque no básico, no simples. Estamos te contando essa história, pois queremos te trazer a consciência de que isso um dia poderá ser importante na sua carreira. E também porque queremos que você seja uma pessoa programadora de muito sucesso. 96 | 97 | Agora vamos para a primeira prática para você dominar loops. 👊 98 | 99 | ### Prática 1: Implementando meu primeiro comando de repetição 100 | 101 | 1. Certifique-se que você está na pasta `tarefa-dia-3` no terminal 102 | 2. Abra o arquivo `pratica-1.js` com o VSCODE ou o editor de código de sua preferência 103 | 3. Este problema nós trabalhamos em aula: exibir números de 1 até n 104 | 4. Considere que o dado de entrada para executar o código é o número `n`. Ou seja, uma variável `n` que vai armazenar o valor do número final que queremos exibir 105 | 6. Neste problema, você deverá utilizar o comando `while` 106 | 7. Exiba todos os números de 1 a `n`. Por exemplo, se o valor de `n` for `9`, você deverá exibir o seguinte resultado na tela com `console.log()`: 107 | ``` 108 | 1 109 | 2 110 | 3 111 | 4 112 | 5 113 | 6 114 | 7 115 | 8 116 | 9 117 | ``` 118 | 8. Teste o seu código, veja se está funcionando, e depois faça o commit e suba ele no seu GitHub 119 | 120 | ### Prática 2: Fazendo a tabuada 121 | 122 | 1. Novamente, certifique-se que você está na pasta `tarefa-dia-3` no terminal 123 | 2. Abra o arquivo `pratica-2.js` com o VSCODE ou o editor de código de sua preferência 124 | 3. Este problema nós trabalhamos em aula: criar uma tabuada 125 | 4. Considere que o dado de entrada para executar a tabuada é o número fixo que vamos efetuar as multiplicações 126 | 5. Nossa tabuada deverá ir de 1 ao 10 127 | 6. Neste problema, você deverá utilizar o comando `while` 128 | 7. No código, exiba a tabuada no terminal. Por exemplo, se o valor de entrada for `9`, você deverá exibir o seguinte resultado na tela com `console.log()`: 129 | ``` 130 | Tabuada de 9 131 | 9 x 1 = 9 132 | 9 x 2 = 18 133 | 9 x 3 = 27 134 | 9 x 4 = 36 135 | 9 x 5 = 45 136 | 9 x 6 = 54 137 | 9 x 7 = 63 138 | 9 x 8 = 72 139 | 9 x 9 = 81 140 | 9 x 10 = 90 141 | ``` 142 | 8. Teste o seu código, veja se está funcionando, e depois faça o commit e suba ele no seu GitHub 143 | 144 | ### Prática 3: Exiba os ímpares 145 | 146 | Crie um código no arquivo `pratica-3.js` que começando com um número inteiro > 0, exiba com `console.log()` todos os números ímpares até chegar neste número. Se quiser, pode chamar a variável que vai armazenar esse número inteiro de `n`. Veja um exemplo abaixo. 147 | 148 | **Dado de entrada:** 149 | ```javascript 150 | 16 151 | ``` 152 | **Valores exibidos:** 153 | ```javascript 154 | 1 155 | 3 156 | 5 157 | 7 158 | 9 159 | 11 160 | 13 161 | 15 162 | ``` 163 | 164 | Teste o seu código, veja se está funcionando, e depois faça o commit e suba ele no seu GitHub 165 | 166 | ### Prática 4 (Opcional): É um número primo? 167 | 168 | Números primos são aqueles que são divisíveis apenas pelo número 1 e por ele mesmo. Os números primos cumprem um papel essencial na área da criptografia, pois é [por meio deles que conseguimos hoje criptografar informações](https://pt.stackoverflow.com/questions/66513/como-n%C3%BAmeros-primos-s%C3%A3o-importantes-na-criptografia). 169 | 170 | Agora é com você! Crie um código no arquivo `pratica-4.js` que começando com a entrada de um número inteiro maior que zero, exiba `Sim, o número ${numero} é primo!` se este número for primo e `Não, o número ${numero} não é primo!` se ele não for um número primo. Como sugestão, pode colocar o nome da variável que vai armazenar esse valor de entrada de `numero`. Veja abaixo alguns exemplos. 171 | 172 | **Alguns possíveis dados de entrada:** 173 | ```javascript 174 | 17 175 | 2 176 | 7 177 | 8 178 | 5 179 | 23 180 | 15 181 | 1500450271 182 | ``` 183 | **Resultados exibidos no terminal para cada valor de entrada quando executar o código:** 184 | ``` 185 | Sim, o número 17 é primo! 186 | Sim, o número 2 é primo! 187 | Sim, o número 7 é primo! 188 | Não, o número 8 não é primo! 189 | Sim, o número 5 é primo! 190 | Sim, o número 23 é primo! 191 | Não, o número 15 não é primo! 192 | Sim, o número 1500450271 é primo! 193 | ``` 194 | 195 | **Importante:** o seu código não deve pegar todos esses dados de entrada e exibir os resultados tudo de uma só vez, ou seja, executando `node pratica-4.js` uma única vez. Para **cada** dado de entrada exemplificado, você vai colocar esse dado em uma variável e executar `node seuarquivo.js` para ver se deu a saída esperada. 196 | 197 | Teste o seu código, veja se está funcionando, e depois faça o commit e suba ele no seu GitHub. 198 | 199 | **Dica se estiver com dificuldade:** se um número primo é divisível apenas por 1 ou por ele mesmo, então basta verificar se algum número entre `1` e `n` são divisíveis por `n`, sendo `n` o número que você quer saber se é primo. Como verificar se é divisível? Se o resto da divisão for zero, significa que ele é divisível. Ou seja, utilize uma estrutura de repetição que vai verificando cada um dos números entre `1` e `n`. 200 | 201 | ### Prática 5 (Opcional): Calculando as vendas com e sem gorjeta 202 | 203 | No arquivo `pratica-5.js` da pasta `tarefa-dia-3`, copie e cole o código [desse link](./receitas.js). 204 | 205 | Resolva os problemas a seguir usando a lista dada no arquivo e faça o commit e push para o seu repositório no GitHub. 206 | 207 | - Problema 1: Qual o valor total de vendas sem gorjeta? 208 | - Problema 2: Qual o valor total de vendas incluindo a gorjeta? 209 | - Problema 3: Quantas vendas foram abaixo de 50 reais? 210 | 211 | Você pode resolver esses problemas da forma que quiser. Agora, é importante sempre imaginar, "se a lista vier com outros valores, vai funcionar?". Digo isso, pois muitas vezes a gente pode escrever uma solução que **só funciona** para aqueles valores em específico. Um código com uma lógica correta deve solucionar o problema para **qualquer** valor de entrada. 212 | 213 | Por fim, o de sempre: teste o seu código, veja se está funcionando, e depois faça o commit e suba ele no seu GitHub. 214 | 215 | **Importante:** este problema é desafiante. Você sabe que variáveis pode armazenar os seguintes tipos de dados/valores: 216 | - números: `1`, `1.23`, `-123`, `-1.23`, etc 217 | - texto/strings: `"Texto aqui"`, `'Texto aqui'` 218 | - booleanos: `true` ou `false` 219 | 220 | Porém, existem tipos de valores mais complexos que não falamos: listas e objetos (no caso do problema, uma lista de objetos)! Qualquer tipo de dado que vai além dos tipos primitivos citados acima, nós chamamos de **estruturas de dados**. Agora é o momento de você exercitar e aprimorar o "se virar" que toda pessoa programadora vai precisar na hora de trabalhar em uma equipe de engenharia. Confia e vai! A base primordial (variáveis, expressões, comandos de atribuição, comandos condicionais e de repetição) você aprendeu. 221 | 222 | **Por isso, a nossa dica é:** pesquise e entenda os seguintes itens para `listas` e `objetos` 223 | 1. O que são em JavaScript 224 | 1. Como armazenar essas estruturas de dados em variáveis 225 | 1. Como acessar os valores dessas estruturas de dados 226 | 1. Como modificar os valores que estão dentro dessas estruturas de dados 227 | 228 | Depois de entender essas duas estruturas de dados e experimentar elas no código, aí sim, tente resolver o problema! 229 | 230 | **Reforçando:** sem querer forçar a barra, mas este problema pode ser muito difícil pra você, mas tenha calma e tente. Curta o processo com calma, vai mastigando cada conceito que você precisa aprender. Não se preocupe se não conseguir resolvê-lo, pois é algo que você pode muito bem aprender mais pra frente. Qualquer coisa, olha a solução ou chama a gente lá no Discord! :) 231 | 232 | ## Enviando a sua tarefa no nosso Discord 233 | 234 | Para enviar a tarefa, basta copiar o link do seu repositório no GitHub e colar no formulário solicitado no [Discord do curso](https://discord.com/invite/kHS84D2hA4) no canal **#💪tarefa-dia-3**. 235 | 236 | **Não sabe qual é o link do seu repositório?** Entre em github.com e clique no seu perfil no canto superior direito da tela (onde tem um círculo com uma setinha para baixo). Em seguida, clique em "Your repositories". Lá você vai ver o nome do repositório que você criou. Clique nele e em seguida copie o link do navegador e cole o link na 1ª pergunta do formulário. 237 | 238 | Ao final de todas as etapas, o seu repositório **remoto** e **local** deverão ter as seguintes pastas e arquivos: 239 | 240 | ``` 241 | 📦 aprenda-a-programar 242 | ┗ 📜 README.md (caso tenha feito o desafio opcional) 243 | ┗ 📂 tarefa-dia-1 244 | ┗ 📜 resumo-dia-1.md 245 | ┗ 📂 tarefa-dia-2 246 | ┣ 📜 index.html 247 | ┣ 📜 pratica-1.js 248 | ┣ 📜 pratica-2.js 249 | ┣ 📜 pratica-3.js 250 | ┗ 📜 pratica-4.js (caso tenha feito o desafio opcional) 251 | ┗ 📂 tarefa-dia-3 252 | ┣ 📜 pratica-1.js 253 | ┣ 📜 pratica-2.js 254 | ┣ 📜 pratica-3.js 255 | ┣ 📜 pratica-4.js (caso tenha feito o desafio opcional) 256 | ┗ 📜 pratica-5.js (caso tenha feito o desafio opcional) 257 | ``` 258 | 259 | 260 | 261 | -------------------------------------------------------------------------------- /tarefa-dia-3/receitas.js: -------------------------------------------------------------------------------- 1 | let receita = [ 2 | {'valor': 87, 'gorjeta': 8.7}, 3 | {'valor': 405, 'gorjeta': 40.5}, 4 | {'valor': 695, 'gorjeta': 69.5}, 5 | {'valor': 189, 'gorjeta': 18.9}, 6 | {'valor': 204, 'gorjeta': 20.4}, 7 | {'valor': 948, 'gorjeta': 94.8}, 8 | {'valor': 763, 'gorjeta': 76.3}, 9 | {'valor': 196, 'gorjeta': 19.6}, 10 | {'valor': 993, 'gorjeta': 99.3}, 11 | {'valor': 878, 'gorjeta': 87.8}, 12 | {'valor': 349, 'gorjeta': 34.9}, 13 | {'valor': 856, 'gorjeta': 85.6}, 14 | {'valor': 543, 'gorjeta': 54.3}, 15 | {'valor': 56, 'gorjeta': 5.6}, 16 | {'valor': 904, 'gorjeta': 90.4}, 17 | {'valor': 249, 'gorjeta': 24.9}, 18 | {'valor': 945, 'gorjeta': 94.5}, 19 | {'valor': 475, 'gorjeta': 47.5}, 20 | {'valor': 505, 'gorjeta': 50.5}, 21 | {'valor': 437, 'gorjeta': 43.7}, 22 | {'valor': 382, 'gorjeta': 38.2}, 23 | {'valor': 914, 'gorjeta': 91.4}, 24 | {'valor': 239, 'gorjeta': 23.9}, 25 | {'valor': 624, 'gorjeta': 62.4}, 26 | {'valor': 688, 'gorjeta': 68.8}, 27 | {'valor': 483, 'gorjeta': 48.3}, 28 | {'valor': 224, 'gorjeta': 22.4}, 29 | {'valor': 78, 'gorjeta': 7.8}, 30 | {'valor': 355, 'gorjeta': 35.5}, 31 | {'valor': 314, 'gorjeta': 31.4}, 32 | {'valor': 808, 'gorjeta': 80.8}, 33 | {'valor': 614, 'gorjeta': 61.4}, 34 | {'valor': 472, 'gorjeta': 47.2}, 35 | {'valor': 192, 'gorjeta': 19.2}, 36 | {'valor': 460, 'gorjeta': 46}, 37 | {'valor': 616, 'gorjeta': 61.6}, 38 | {'valor': 844, 'gorjeta': 84.4}, 39 | {'valor': 23, 'gorjeta': 2.3}, 40 | {'valor': 552, 'gorjeta': 55.2}, 41 | {'valor': 687, 'gorjeta': 68.7}, 42 | {'valor': 328, 'gorjeta': 32.8}, 43 | {'valor': 389, 'gorjeta': 38.9}, 44 | {'valor': 508, 'gorjeta': 50.8}, 45 | {'valor': 1, 'gorjeta': 0.1}, 46 | {'valor': 482, 'gorjeta': 48.2}, 47 | {'valor': 326, 'gorjeta': 32.6}, 48 | {'valor': 795, 'gorjeta': 79.5}, 49 | {'valor': 370, 'gorjeta': 37}, 50 | {'valor': 777, 'gorjeta': 77.7}, 51 | {'valor': 678, 'gorjeta': 67.8}, 52 | {'valor': 823, 'gorjeta': 82.3}, 53 | {'valor': 828, 'gorjeta': 82.8}, 54 | {'valor': 941, 'gorjeta': 94.1}, 55 | {'valor': 17, 'gorjeta': 1.7}, 56 | {'valor': 119, 'gorjeta': 11.9}, 57 | {'valor': 273, 'gorjeta': 27.3}, 58 | {'valor': 491, 'gorjeta': 49.1}, 59 | {'valor': 194, 'gorjeta': 19.4}, 60 | {'valor': 65, 'gorjeta': 6.5}, 61 | {'valor': 342, 'gorjeta': 34.2}, 62 | {'valor': 156, 'gorjeta': 15.6}, 63 | {'valor': 27, 'gorjeta': 2.7}, 64 | {'valor': 88, 'gorjeta': 8.8}, 65 | {'valor': 217, 'gorjeta': 21.7}, 66 | {'valor': 668, 'gorjeta': 66.8}, 67 | {'valor': 498, 'gorjeta': 49.8}, 68 | {'valor': 428, 'gorjeta': 42.8}, 69 | {'valor': 511, 'gorjeta': 51.1}, 70 | {'valor': 365, 'gorjeta': 36.5}, 71 | {'valor': 106, 'gorjeta': 10.6}, 72 | {'valor': 523, 'gorjeta': 52.3}, 73 | {'valor': 730, 'gorjeta': 73}, 74 | {'valor': 153, 'gorjeta': 15.3}, 75 | {'valor': 707, 'gorjeta': 70.7}, 76 | {'valor': 602, 'gorjeta': 60.2}, 77 | {'valor': 59, 'gorjeta': 5.9}, 78 | {'valor': 623, 'gorjeta': 62.3}, 79 | {'valor': 228, 'gorjeta': 22.8}, 80 | {'valor': 296, 'gorjeta': 29.6}, 81 | {'valor': 386, 'gorjeta': 38.6}, 82 | {'valor': 568, 'gorjeta': 56.8}, 83 | {'valor': 168, 'gorjeta': 16.8}, 84 | {'valor': 949, 'gorjeta': 94.9}, 85 | {'valor': 544, 'gorjeta': 54.4}, 86 | {'valor': 679, 'gorjeta': 67.9}, 87 | {'valor': 662, 'gorjeta': 66.2}, 88 | {'valor': 839, 'gorjeta': 83.9}, 89 | {'valor': 720, 'gorjeta': 72}, 90 | {'valor': 971, 'gorjeta': 97.1}, 91 | {'valor': 211, 'gorjeta': 21.1}, 92 | {'valor': 709, 'gorjeta': 70.9}, 93 | {'valor': 867, 'gorjeta': 86.7}, 94 | {'valor': 355, 'gorjeta': 35.5}, 95 | {'valor': 868, 'gorjeta': 86.8}, 96 | {'valor': 830, 'gorjeta': 83}, 97 | {'valor': 729, 'gorjeta': 72.9}, 98 | {'valor': 809, 'gorjeta': 80.9}, 99 | {'valor': 801, 'gorjeta': 80.1}, 100 | {'valor': 344, 'gorjeta': 34.4}, 101 | {'valor': 809, 'gorjeta': 80.9} 102 | ] 103 | 104 | /* PROBLEMA 1: Qual o valor total de vendas sem gorjeta? --------------------- */ 105 | //COLOQUE SUA SOLUÇÃO AQUI 106 | 107 | 108 | /* ----------------------------------------------------------------------------- */ 109 | 110 | /* PROBLEMA 2: Qual o valor total de vendas incluindo a gorjeta? --------------- */ 111 | //COLOQUE SUA SOLUÇÃO AQUI 112 | 113 | 114 | /* ----------------------------------------------------------------------------- */ 115 | 116 | /* PROBLEMA 3: Quantas vendas foram abaixo de 50 reais? ----------------------- */ 117 | //COLOQUE SUA SOLUÇÃO AQUI 118 | 119 | 120 | /* ----------------------------------------------------------------------------- */ -------------------------------------------------------------------------------- /tarefa-dia-3/solucao/solucao-pratica-1.js: -------------------------------------------------------------------------------- 1 | let n = 1000 2 | let i = 1 3 | 4 | while (i <= n) { 5 | console.log(i) 6 | i++ // que funciona da mesma forma que i = i + 1 7 | } -------------------------------------------------------------------------------- /tarefa-dia-3/solucao/solucao-pratica-2.js: -------------------------------------------------------------------------------- 1 | /* 2 | DICA LEGAL: 3 | Veja que abaixo usamos 'const' ao invés de 'let'. Você saber por que? 4 | 5 | 'const' é uma outra forma de declarar variáveis em JavaScript. 6 | 7 | Quando você declara uma variável como 'const', você está dizendo que essa variável 8 | NUNCA deve alterar o seu valor. Ou seja, ela é uma variável CONSTante. 9 | 10 | Se você alterar o valor dessa variável, vai dar erro no código! 11 | 12 | Qual a única variável que declaramos como 'let'? A variável 'i', 13 | pois ela é a ÚNICA que muda de valor durante o código. :) 14 | 15 | Isso é muito bom, pois garante a consistência de como cada variável 16 | deve se comportar e também facilita a leitura do código, pois quando 17 | você vê o 'const', você logo entende que aquela variável tem um valor fixo. 18 | Por conta disso, você consegue deduzir que ela terá uma função diferente no código, 19 | como por exemplo servir de um limite superior em um comando de repetição por exemplo. 20 | */ 21 | const multiplicador = 9 22 | let i = 1 23 | 24 | while (i <= 10) { 25 | const resultado = i*multiplicador 26 | const valorExibido = `${multiplicador} X ${i} = ${resultado}` 27 | console.log(valorExibido) 28 | } -------------------------------------------------------------------------------- /tarefa-dia-3/solucao/solucao-pratica-3.js: -------------------------------------------------------------------------------- 1 | const n = 16 // aí o const novamente! :) 2 | let i = 1 3 | 4 | while (i <= n) { 5 | console.log(i) 6 | i += 2 // que é a mesma coisa que i = i + 2 7 | } 8 | 9 | 10 | -------------------------------------------------------------------------------- /tarefa-dia-3/solucao/solucao-pratica-4.js: -------------------------------------------------------------------------------- 1 | /* 2 | Observação: mostramos duas soluções possíveis, mas existem 3 | outras soluções de código para resolver este problema. 4 | Inclusive, soluções mais performáticas. 5 | */ 6 | 7 | // Inicialização das variáveis 8 | const numero = 1500450271 // olha o const aí :) 9 | let i = 2 10 | let ehPrimo = true 11 | 12 | /* SOLUÇÃO POSSÍVEL 1 --------------------------------------------------------- */ 13 | while (i <= n) { 14 | if (numero % i == 0) { 15 | ehPrimo = false 16 | /* 17 | Dica: o comando break pára completamente o loop e sai dele. 18 | Sem o break a lógica também está correta, mas ele vai fazer mais processamento. 19 | */ 20 | break 21 | } 22 | i++ 23 | } 24 | 25 | // Dica: quando dentro do if ou do else SÓ TEM UM COMANDO, não precisa de chaves {} 26 | if (ehPrimo) 27 | console.log(`Sim, o número ${numero} é primo.`) 28 | else 29 | console.log(`Não, o número ${numero} não é primo.`) 30 | /* ------------------------------------------------------------------------------ */ 31 | 32 | 33 | /* SOLUÇÃO POSSÍVEL 2 --------------------------------------------------------- */ 34 | // Dica: quando dentro do if ou do else SÓ TEM UM COMANDO, não precisa de chaves {} 35 | i = 2 // voltando com o valor 2 no i para rodar corretamente essa segunda solução possível 36 | while (numero % i != 0) 37 | i++ // que é a mesma coisa que i = i + 1 38 | 39 | // Dica: quando dentro do if ou do else SÓ TEM UM COMANDO, não precisa de chaves {} 40 | if (numero == i) 41 | console.log(`Sim, o número ${numero} é primo.`) 42 | else 43 | console.log(`Não, o número ${numero} não é primo.`) 44 | /* ------------------------------------------------------------------------------ */ -------------------------------------------------------------------------------- /tarefa-dia-3/solucao/solucao-pratica-5.js: -------------------------------------------------------------------------------- 1 | let receita = [ 2 | {'valor': 87, 'gorjeta': 8.7}, 3 | {'valor': 405, 'gorjeta': 40.5}, 4 | {'valor': 695, 'gorjeta': 69.5}, 5 | {'valor': 189, 'gorjeta': 18.9}, 6 | {'valor': 204, 'gorjeta': 20.4}, 7 | {'valor': 948, 'gorjeta': 94.8}, 8 | {'valor': 763, 'gorjeta': 76.3}, 9 | {'valor': 196, 'gorjeta': 19.6}, 10 | {'valor': 993, 'gorjeta': 99.3}, 11 | {'valor': 878, 'gorjeta': 87.8}, 12 | {'valor': 349, 'gorjeta': 34.9}, 13 | {'valor': 856, 'gorjeta': 85.6}, 14 | {'valor': 543, 'gorjeta': 54.3}, 15 | {'valor': 56, 'gorjeta': 5.6}, 16 | {'valor': 904, 'gorjeta': 90.4}, 17 | {'valor': 249, 'gorjeta': 24.9}, 18 | {'valor': 945, 'gorjeta': 94.5}, 19 | {'valor': 475, 'gorjeta': 47.5}, 20 | {'valor': 505, 'gorjeta': 50.5}, 21 | {'valor': 437, 'gorjeta': 43.7}, 22 | {'valor': 382, 'gorjeta': 38.2}, 23 | {'valor': 914, 'gorjeta': 91.4}, 24 | {'valor': 239, 'gorjeta': 23.9}, 25 | {'valor': 624, 'gorjeta': 62.4}, 26 | {'valor': 688, 'gorjeta': 68.8}, 27 | {'valor': 483, 'gorjeta': 48.3}, 28 | {'valor': 224, 'gorjeta': 22.4}, 29 | {'valor': 78, 'gorjeta': 7.8}, 30 | {'valor': 355, 'gorjeta': 35.5}, 31 | {'valor': 314, 'gorjeta': 31.4}, 32 | {'valor': 808, 'gorjeta': 80.8}, 33 | {'valor': 614, 'gorjeta': 61.4}, 34 | {'valor': 472, 'gorjeta': 47.2}, 35 | {'valor': 192, 'gorjeta': 19.2}, 36 | {'valor': 460, 'gorjeta': 46}, 37 | {'valor': 616, 'gorjeta': 61.6}, 38 | {'valor': 844, 'gorjeta': 84.4}, 39 | {'valor': 23, 'gorjeta': 2.3}, 40 | {'valor': 552, 'gorjeta': 55.2}, 41 | {'valor': 687, 'gorjeta': 68.7}, 42 | {'valor': 328, 'gorjeta': 32.8}, 43 | {'valor': 389, 'gorjeta': 38.9}, 44 | {'valor': 508, 'gorjeta': 50.8}, 45 | {'valor': 1, 'gorjeta': 0.1}, 46 | {'valor': 482, 'gorjeta': 48.2}, 47 | {'valor': 326, 'gorjeta': 32.6}, 48 | {'valor': 795, 'gorjeta': 79.5}, 49 | {'valor': 370, 'gorjeta': 37}, 50 | {'valor': 777, 'gorjeta': 77.7}, 51 | {'valor': 678, 'gorjeta': 67.8}, 52 | {'valor': 823, 'gorjeta': 82.3}, 53 | {'valor': 828, 'gorjeta': 82.8}, 54 | {'valor': 941, 'gorjeta': 94.1}, 55 | {'valor': 17, 'gorjeta': 1.7}, 56 | {'valor': 119, 'gorjeta': 11.9}, 57 | {'valor': 273, 'gorjeta': 27.3}, 58 | {'valor': 491, 'gorjeta': 49.1}, 59 | {'valor': 194, 'gorjeta': 19.4}, 60 | {'valor': 65, 'gorjeta': 6.5}, 61 | {'valor': 342, 'gorjeta': 34.2}, 62 | {'valor': 156, 'gorjeta': 15.6}, 63 | {'valor': 27, 'gorjeta': 2.7}, 64 | {'valor': 88, 'gorjeta': 8.8}, 65 | {'valor': 217, 'gorjeta': 21.7}, 66 | {'valor': 668, 'gorjeta': 66.8}, 67 | {'valor': 498, 'gorjeta': 49.8}, 68 | {'valor': 428, 'gorjeta': 42.8}, 69 | {'valor': 511, 'gorjeta': 51.1}, 70 | {'valor': 365, 'gorjeta': 36.5}, 71 | {'valor': 106, 'gorjeta': 10.6}, 72 | {'valor': 523, 'gorjeta': 52.3}, 73 | {'valor': 730, 'gorjeta': 73}, 74 | {'valor': 153, 'gorjeta': 15.3}, 75 | {'valor': 707, 'gorjeta': 70.7}, 76 | {'valor': 602, 'gorjeta': 60.2}, 77 | {'valor': 59, 'gorjeta': 5.9}, 78 | {'valor': 623, 'gorjeta': 62.3}, 79 | {'valor': 228, 'gorjeta': 22.8}, 80 | {'valor': 296, 'gorjeta': 29.6}, 81 | {'valor': 386, 'gorjeta': 38.6}, 82 | {'valor': 568, 'gorjeta': 56.8}, 83 | {'valor': 168, 'gorjeta': 16.8}, 84 | {'valor': 949, 'gorjeta': 94.9}, 85 | {'valor': 544, 'gorjeta': 54.4}, 86 | {'valor': 679, 'gorjeta': 67.9}, 87 | {'valor': 662, 'gorjeta': 66.2}, 88 | {'valor': 839, 'gorjeta': 83.9}, 89 | {'valor': 720, 'gorjeta': 72}, 90 | {'valor': 971, 'gorjeta': 97.1}, 91 | {'valor': 211, 'gorjeta': 21.1}, 92 | {'valor': 709, 'gorjeta': 70.9}, 93 | {'valor': 867, 'gorjeta': 86.7}, 94 | {'valor': 355, 'gorjeta': 35.5}, 95 | {'valor': 868, 'gorjeta': 86.8}, 96 | {'valor': 830, 'gorjeta': 83}, 97 | {'valor': 729, 'gorjeta': 72.9}, 98 | {'valor': 809, 'gorjeta': 80.9}, 99 | {'valor': 801, 'gorjeta': 80.1}, 100 | {'valor': 344, 'gorjeta': 34.4}, 101 | {'valor': 809, 'gorjeta': 80.9} 102 | ] 103 | 104 | /* PROBLEMA 1: Qual o valor total de vendas sem gorjeta? --------------------- */ 105 | let valorTotalVendasSemGorjeta = 0 106 | let i = 0 107 | 108 | while (i < receita.length) { 109 | valorTotalVendasSemGorjeta += receita[i].valor 110 | i++ 111 | } 112 | 113 | console.log("Valor total de vendas sem gorjeta: ", valorTotalVendasSemGorjeta) 114 | /* ----------------------------------------------------------------------------- */ 115 | 116 | /* PROBLEMA 2: Qual o valor total de vendas incluindo a gorjeta? --------------- */ 117 | let valorTotalVendasComGorjeta = 0 118 | i = 0 119 | 120 | while (i < receita.length) { 121 | valorTotalVendasComGorjeta += receita[i].valor + receita[i].gorjeta 122 | i++ 123 | } 124 | 125 | console.log("Valor total de vendas com gorjeta: ", valorTotalVendasComGorjeta) 126 | /* ----------------------------------------------------------------------------- */ 127 | 128 | /* PROBLEMA 3: Quantas vendas foram abaixo de 50 reais? ----------------------- */ 129 | let vendasAbaixoDe50Reais = 0 130 | i = 0 131 | 132 | while (i < receita.length) { 133 | const valorTotalDeUmaVenda = receita[i].valor + receita[i].gorjeta 134 | if (valorTotalDeUmaVenda < 50) 135 | vendasAbaixoDe50Reais++ 136 | } 137 | 138 | console.log("Número de vendas abaixo de 50 reais: ", vendasAbaixoDe50Reais) 139 | /* ----------------------------------------------------------------------------- */ -------------------------------------------------------------------------------- /tarefa-dia-4/README.md: -------------------------------------------------------------------------------- 1 | # Tarefa Opcional - Dia 4: Conhecendo o mundo da web com HTML + CSS + JavaScript 2 | 3 | Saudações, estudante da nossa imersão Aprenda a Programar do ITuring! Que pena, esta é a última tarefa do nosso curso, mas que bom que você logo poderá receber o certificado de conclusão da nossa imersão. 🙏 4 | 5 | Esta é uma tarefa opcional, ou seja, não é mandatória para receber o certificado. Porém, reforçamos que ela é **valiosíssima** para você expandir seu conhecimento e ver de perto como uma aplicação web é construída na parte do front-end de ponta-a-ponta, do HTML ao CSS e JavaScript! 6 | 7 | Portanto, na tarefa opcional do dia 4, a sua função como pessoa especialista em engenharia front-end será de adicionar dois comportamentos na aplicação de lista de tarefas que criamos na aula: 8 | - [**Etapa 1:**](#etapa-1-preparando-se-para-construir-um-front-end) Preparando-se para construir um front-end 9 | - [**Etapa 2:**](#etapa-2-reproduza-tudo-o-que-foi-feito-em-aula-do-app-lista-de-tarefas) Reproduza tudo o que foi feito em aula do app lista de tarefas 10 | - [**Etapa 3:**](#etapa-3-marcando-a-tarefa-como-concluída) Marcar tarefa como concluída quando clicar no texto da tarefa 11 | - [**Etapa 4:**](#etapa-4-excluindo-a-tarefa) Excluir a tarefa quando clicar no botão de fechar ("x") 12 | - [**Etapa Extra:**](#etapa-extra-impedindo-a-adição-de-uma-tarefa-sem-nenhum-texto) Impedindo a adição de uma tarefa sem nenhum texto 13 | 14 | A 3ª etapa vai conter o passo-a-passo descrito para cada uma das etapas. Já a etapa 4 e a etapa extra é para você tentar resolver com base no que aprendeu. 15 | 16 | ## Etapa 1: Preparando-se para construir um front-end 17 | 18 | Agora você é pró, não precisa mais de instruções mega detalhadas. A tarefa do Dia 4 será entregue em um novo repositório. Por isso, vá lá no github.com e crie um novo repositório remoto na sua conta com o nome de `frontend-to-do-list` (ou um outro nome que achar mais relevante). Não esqueça de fazer o clone dele na sua máquina local. 19 | 20 | Pronto! Agora bora programar e construir o front-end de um app de lista de tarefas. 21 | 22 | ## Etapa 2: Reproduza tudo o que foi feito em aula do app lista de tarefas 23 | 24 | Antes de começar a programar, é importante você tentar reproduzir os passos executados durante a aula e deixar o código no mesmo ponto. Pode ir fazer enquanto você vai assistindo a gravação da aula. Em alguns momentos você vai precisar, mas tente não copiar todo o código, vá digitando e pesquise sobre as tags html, as propriedades de CSS e outras coisas que tiver curiosidade. A curiosidade é a melhor ferramenta para o seu aprendizado. 25 | 26 | Também te desafio a modificar o estilo da página dando aquele toque pessoal, que tal adicionar cores e imagens diferentes. Legal,né? 27 | 28 | Se tiver dificuldades consulte o código da aula [aqui](https://github.com/ituring-repo/aprenda-a-programar/tree/main/tarefa-dia-4/to-do-list), assista o vídeo, procure ajuda no Discord, mas não deixe de tentar. 29 | 30 | Vai testando, comitando e fazendo o push do seu código no repositório que você criou com o nome de `frontend-to-do-list`. 31 | 32 | ## Etapa 3: Marcando a tarefa como concluída 33 | 34 | Antes de começar, saiba que existem várias formas de realizar essa tarefa, não tem certo ou errado, vamos seguir uma linha que julgamos mais simples de entender, beleza? 35 | 36 | Para conseguir marcar uma tarefa como concluída, precisamos saber qual tarefa está sendo clicada. Para isso, vamos adicionar um `id` automático em cada tarefa no momento em que ela está sendo criada. Para isso: 37 | 1. Crie uma variável `let idTarefa = 0`para gerar um contador automátio no início do seu arquivo 38 | 2. Toda vez que você criar um item de tarefa, incremente esse `idTarefa` e use ele como `id` da sua tarefa criada na sua função `adicionarTarefa`. Vai ficar assim: 39 | ```javascript 40 | idTarefa++; 41 | item.id = idTarefa; 42 | ``` 43 | Pronto, agora cada elemento `li` criado possui um `id`. 44 | 45 | 3. Agora o próximo passo é criar a função `concluir(itemId)` que recebe o `id` clicado como parâmetro, encontra o item correspondente no html e adiciona uma classe `concluida` no texto (``). Ao adicionar uma classe no elemento, nós podemos forçar esse elemento a mudar de aparência. Colocando isso em prática, teríamos algo assim: 46 | ```javascript 47 | function concluir(itemId) { 48 | const tarefaSelecionada = document.getElementById(itemId); 49 | tarefaSelecionada.className = "concluida"; 50 | } 51 | ``` 52 | 4. Adicionar a classe no html me parece que foi tranquilo. Agora é preciso adicionar o estilo correspondente à classe `concluida` no arquivo CSS. Adicione o código abaixo para deixar o texto do `span` de outra cor e com um risco: 53 | ```css 54 | .concluida span { 55 | text-decoration: line-through; 56 | color: #a9a9a9; 57 | } 58 | ``` 59 | Note que só queremos que o span sofra a alteração, por isso usamos essa combinação de seletores `classe tag`. 60 | 61 | 5. Agora basta a gente adicionar essa chamada de função em cada item criado, e um jeito fácil de fazer isso é passando a instrução `onclick="concluir(id)"` para o texto da lista assim que ele for criado. Podemos fazer isso no momento que inserimos o conteúdo no item. Vai ficar algo assim: 62 | ```javascript 63 | item.innerHTML = ` 64 | ${inputTarefa.value} 65 | 66 | `; 67 | ``` 68 | Note que colocamos o `id` da tarefa dinamicamente, de forma que cada elemento passe o `id` correto para a função chamada no clique. 69 | 70 | Vai testando, comitando e fazendo o push do seu código no repositório que você criou com o nome de `frontend-to-do-list`. 71 | 72 | Prontinho, agora é só correr para o abraço! 73 | 74 | ## Etapa 4: Excluindo a tarefa 75 | 76 | O raciocínio para excluir uma tarefa é o mesmo usado para marcar a tarefa como lida, mas pode ser que você precise utilizar um `tarefaSelecionada.remove()` em algum momento. Agora é com você! 77 | 78 | Vai testando, comitando e fazendo o push do seu código no repositório que você criou com o nome de `frontend-to-do-list`. 79 | 80 | ## Etapa Extra: Impedindo a adição de uma tarefa sem nenhum texto 81 | 82 | Se você achou tranquilo fazer os passos 1 e 2, tente melhorar o funcionamento da lista de tarefas. Que tal uma forma de impedir que um usuário adicione uma tarefa sem nenhum texto? 83 | 84 | Vai testando, comitando e fazendo o push do seu código no repositório que você criou com o nome de `frontend-to-do-list`. 85 | 86 | ## Enviando a sua tarefa no nosso Discord 87 | 88 | Para enviar a tarefa, basta copiar o link do seu repositório no GitHub e colar no formulário solicitado no [Discord do curso](https://discord.com/invite/kHS84D2hA4) no canal **#💪tarefa-dia-4-opcional**. 89 | 90 | **Não sabe qual é o link do seu repositório?** Entre em github.com e clique no seu perfil no canto superior direito da tela (onde tem um círculo com uma setinha para baixo). Em seguida, clique em "Your repositories". Lá você vai ver o nome do repositório que você criou. Clique nele e em seguida copie o link do navegador e cole o link no formulário. 91 | -------------------------------------------------------------------------------- /tarefa-dia-4/to-do-list/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Lista de tarefas 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

Lista de tarefas

19 |

Minha primeira lista de tarefas

20 | 21 | 22 |
23 |
    24 | 28 |
29 | 30 |
31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tarefa-dia-4/to-do-list/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tarefa-dia-4/to-do-list/script.js: -------------------------------------------------------------------------------- 1 | //1. Adicionar tarefa 2 | //Pegar o valor digitado pelo usuário 3 | const inputTarefa = document.getElementById("tarefa-nova") 4 | 5 | // Criar função para adicionar tarefa 6 | const adicionarTarefa = () => { 7 | // Criar elemento li 8 | const item = document.createElement("li") //
  • 9 | 10 | // Adicionar texto digitado no elemento 11 | item.innerHTML = ` 12 | ${inputTarefa.value} 13 | 14 | ` 15 | //Pega a lista de tarefas 16 | const lista = document.querySelector("#lista") 17 | 18 | // Adicionar elemento na lista de tarefas 19 | lista.appendChild(item) 20 | 21 | // Limpa o valor digitado pelo usuário 22 | inputTarefa.value = "" 23 | } 24 | 25 | // Adiciona o envento de click no botão adicionar 26 | // Quando clica você executa a funçao adicionarTarefa 27 | document 28 | .querySelector("#btn-adicionar") 29 | .addEventListener("click", adicionarTarefa) 30 | 31 | 32 | // 2. Limpar lista 33 | // Pega botão Limpar 34 | const botaoLimpar = document.querySelector(".bt-azul"); 35 | 36 | // Adiciona o envento de click no botão limpar 37 | // Quando clica você executa a funçao definida na function 38 | botaoLimpar.addEventListener("click", function (event){ 39 | const lista = document.querySelector("#lista") 40 | lista.innerHTML = ""; 41 | } ) 42 | 43 | //Para casa: 44 | // 3. Marcar tarefa como concluída 45 | // 4. Excluir tarefa ao clicar no botão -------------------------------------------------------------------------------- /tarefa-dia-4/to-do-list/styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | body{ 8 | font-family: 'Prompt', sans-serif; 9 | background-color: #23292e; 10 | } 11 | 12 | .logo{ 13 | width: 200px; 14 | margin: 20px; 15 | } 16 | 17 | main{ 18 | width: 786px; 19 | margin: 0 auto; 20 | } 21 | 22 | .titulo{ 23 | font-weight: bold; 24 | text-transform: uppercase; 25 | } 26 | 27 | .titulo, .subtitulo{ 28 | color:#fff; 29 | text-align: center; 30 | } 31 | 32 | #tarefa-nova{ 33 | background-color: #f1f1f1; 34 | border: 3px solid #32cdac; 35 | padding: 4px; 36 | width: 80%; 37 | height:40px; 38 | outline: none; 39 | font-size: 14px; 40 | color: #0f1726; 41 | border-radius: 4px; 42 | margin-top: 30px; 43 | } 44 | 45 | .botao{ 46 | background-color: #32cdac; 47 | padding: 10px; 48 | border: none; 49 | height:40px; 50 | margin-left: 10px; 51 | border-radius: 20px; 52 | color: #0f1726; 53 | font-size: 14px; 54 | font-weight: bold; 55 | cursor: pointer; 56 | text-transform: uppercase; 57 | } 58 | 59 | .bt-azul{ 60 | background-color: #4f6791; 61 | color: #fff; 62 | width: 40%; 63 | margin-top: 40px; 64 | } 65 | 66 | #lista{ 67 | list-style:none; 68 | } 69 | 70 | #lista > li{ 71 | background-color: #dbdbdb; 72 | width: 100%; 73 | padding: 8px; 74 | margin-bottom: 20px; 75 | border-radius: 4px; 76 | text-align: left; 77 | font-size: 16px; 78 | display: flex; 79 | justify-content: space-between; 80 | align-items: center; 81 | } 82 | 83 | .caixa{ 84 | margin-top: 40px; 85 | text-align: center; 86 | } 87 | 88 | .excluir{ 89 | background-color: #bdbcbc; 90 | width: 16px; 91 | height: 16px; 92 | line-height: 0; 93 | border-radius: 2px; 94 | border:none; 95 | cursor: pointer; 96 | } 97 | --------------------------------------------------------------------------------