freeCodeCamp/curriculum/challenges/portuguese/03-front-end-libraries/front-end-libraries-projects/build-a-javascript-calculat...

39 lines
6.2 KiB
Markdown
Raw Normal View History

---
id: bd7158d8c442eddfaeb5bd17
title: Build a JavaScript Calculator
challengeType: 3
isRequired: true
videoUrl: ''
localeTitle: Construa uma calculadora JavaScript
---
## Description
<section id="description"> <strong>Objetivo:</strong> criar um aplicativo <a href="https://codepen.io" target="_blank">CodePen.io</a> que seja funcionalmente semelhante a este: <a href="https://codepen.io/freeCodeCamp/full/wgGVVX" target="_blank">https://codepen.io/freeCodeCamp/full/wgGVVX</a> . Cumpra as <a href="https://en.wikipedia.org/wiki/User_story" target="_blank">histórias de usuário</a> abaixo e faça todos os testes para passar. Dê seu estilo pessoal. Você pode usar qualquer combinação de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para concluir este projeto. Você deve usar um framework frontend (como o React, por exemplo), porque esta seção é sobre o aprendizado de frameworks frontend. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos procurando dar suporte a outros frameworks frontend como Angular e Vue, mas eles não são suportados atualmente. Aceitaremos e tentaremos corrigir todos os relatórios de problemas que usam a pilha de tecnologia sugerida para este projeto. Codificação feliz! <strong>User Story # 1:</strong> Minha calculadora deve conter um elemento clicável contendo um <code>=</code> (sinal de igual) com um <code>id=&quot;equals&quot;</code> . <strong>User Story # 2:</strong> Minha calculadora deve conter 10 elementos clicáveis contendo um número cada de 0 a 9, com os seguintes IDs correspondentes: <code>id=&quot;zero&quot;</code> , <code>id=&quot;one&quot;</code> , <code>id=&quot;two&quot;</code> , <code>id=&quot;three&quot;</code> , <code>id=&quot;four&quot;</code> , <code>id=&quot;five&quot;</code> , <code>id=&quot;six&quot;</code> , <code>id=&quot;seven&quot;</code> , <code>id=&quot;eight&quot;</code> e <code>id=&quot;nine&quot;</code> . <strong>User Story # 3:</strong> Minha calculadora deve conter 4 elementos clicáveis, cada um contendo um dos 4 principais operadores matemáticos com as seguintes IDs correspondentes: <code>id=&quot;add&quot;</code> , <code>id=&quot;subtract&quot;</code> , <code>id=&quot;multiply&quot;</code> , <code>id=&quot;divide&quot;</code> . <strong>História do usuário nº 4:</strong> minha calculadora deve conter um elemento clicável contendo um <code>.</code> (ponto decimal) símbolo com um <code>id=&quot;decimal&quot;</code> correspondente <code>id=&quot;decimal&quot;</code> . <strong>História do usuário nº 5:</strong> minha calculadora deve conter um elemento clicável com um <code>id=&quot;clear&quot;</code> . <strong>User Story # 6:</strong> Minha calculadora deve conter um elemento para exibir valores com um <code>id=&quot;display&quot;</code> . <strong>User Story # 7:</strong> A qualquer momento, pressionar o botão Limpar apaga os valores de entrada e saída e retorna a calculadora ao estado inicializado; 0 deve ser mostrado no elemento com o id de <code>display</code> . <strong>User Story # 8:</strong> Como eu insiro números, eu deveria ser capaz de ver minha entrada no elemento com o id de <code>display</code> . <strong>User Story # 9:</strong> Em qualquer ordem, eu deveria ser capaz de adicionar, subtrair, multiplicar e dividir uma cadeia de números de qualquer tamanho, e quando eu pressionar <code>=</code> , o resultado correto deve ser mostrado no elemento com o ID de <code>display</code> . <strong>User Story # 10:</strong> Ao inserir números, minha calculadora não deve permitir que um número comece com vários zeros. <strong>User Story # 11:</strong> Quando o elemento decimal é clicado, a <code>.</code> deve anexar ao valor exibido atualmente; dois <code>.</code> em um número não deve ser aceito. <strong>User Story # 12:</strong> Eu deveria ser capaz de executar qualquer operação (+, -, *, /) em números que contenham pontos decimais. <strong>História do usuário nº 13:</strong> Se dois ou mais operadores forem inseridos consecutivamente, a operação realizada deve ser o último operador inserido. <strong>User Story # 14:</strong> Pressionando um operador imediatamente após <code>=</code> deve iniciar um novo cálculo que opera no re
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests: []
```
</section>
## Challenge Seed
<section id='challengeSeed'>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>