diff --git a/README.md b/README.md
index 083b8a0..3454d28 100644
--- a/README.md
+++ b/README.md
@@ -10,4 +10,9 @@ depois siga as instruções abaixo:
- Na **primeira vez** que você for rodar, abra o arquivo `setup.bat` que está
na pasta inicial, isso instalará todas as dependência necessárias pra rodar.
-- Posteriormente você pode rodar o arquivo `start.bat` pra iniciar o projeto.
\ No newline at end of file
+- Posteriormente você pode rodar o arquivo `start.bat` pra iniciar o projeto.
+
+## Como preservar suas soluções?
+
+Antes de atualizar você pode salvar a pasta `solutions` e depois de atualizar
+jogar ela por cima da pasta `solutions` que veio em branco na versão nova!
\ No newline at end of file
diff --git a/client/src/components/TestGroup.vue b/client/src/components/TestGroup.vue
index e8fe09f..9c5f402 100644
--- a/client/src/components/TestGroup.vue
+++ b/client/src/components/TestGroup.vue
@@ -28,14 +28,21 @@
- Entradas: {{testCase.inputs.toString()}}
+ Entradas:
+
+ {{valueToString(input)}}
{{idx+1 !== testCase.inputs.length ? ', ' : ``}}
+
+
Saída: {{caseOutput(testCase)}}
- Saída esperada: {{testCase.outputs.toString()}}
+ Saída esperada: {{JSON.stringify(testCase.outputs)}}
@@ -69,10 +76,13 @@
caseOutput(testCase) {
const r = this.test.run(testCase);
- if (r === undefined) {
+ return this.valueToString(r);
+ },
+ valueToString(v) {
+ if (v === undefined) {
return 'undefined';
} else {
- return r.toString();
+ return JSON.stringify(v);
}
}
}
diff --git a/client/src/views/world-0/0-2/Level-0-2.vue b/client/src/views/world-0/0-2/Level-0-2.vue
index 7b5c131..4ccf140 100644
--- a/client/src/views/world-0/0-2/Level-0-2.vue
+++ b/client/src/views/world-0/0-2/Level-0-2.vue
@@ -5,136 +5,124 @@
- Estruturas condicionais em Javascript são utilizadas para verificar uma condição e definir se algo deve
- ou não acontecer.
- Um bom exemplo disso, e que não tem nada a ver com programação, é a linguagem que utilizamos para nos
- comunicar:
-
-
- Se cancelarem a aula de hoje, vou para a mureta.
-
-
- Temos uma condição (se cancelarem a aula de hoje) para executar uma ação (vou para a mureta) dependendo do
- resultado dessa condição. Se verdadeira, a ação é executada.
+ O JavaScript possui tanto operadores binários quanto unários, além de um operador ternário,
+ o condicional. Um operador binário exige dois operandos, um antes do operador e outro depois.
+ Já o operador unário exige um único operando, seja antes ou depois do operador.
- Em Javascript, podemos utilizar de duas estruturas diferentes de condicionais: o if
e
- o switch
.
-
- O if
é a principal e mais simples estrutura de condicional no Javascript. Ela testa se uma
- dada condição é verdadeira, executando um bloco de código caso seja.
+ Um operador de atribuição atribui um valor ao operando à sua esquerda baseado no valor do operando à
+ direita. O operador de atribuição básico é o =
, que atribui o valor do operando à direita ao
+ operando à esquerda.
- Além disso, o if
pode conter também a expressão else
, que determina um bloco de
- código para ser executado caso a condição seja falsa.
+ Existem outros operadores de atribuição que servem como encurtamentos do operador padrão, os mais utilizados
+ sendo o de adição e de subtração:
- Indo mais além ainda, a expressão else
permite que você encadeie outro if
,
- para que você cheque múltiplas condições, uma após a outra.
+ Um operador de comparação compara seus operandos e retorna um valor lógico baseado em se a
+ comparação é verdadeira.
+
+ Na maioria dos casos, se dois operandos não são do mesmo tipo, o JavaScript
+ tenta convertê-los para um tipo apropriado. As únicas exceções a esta regra são os operadores
+ ===
e o !==
, que realizam comparações de igualdade e desigualdade "estritas".
+ Estes operadores não tentam converter os operandos em tipos compatíveis antes de verificar a igualdade.
- Agora, caso você tenha que fazer uma sequência de if / else
muito longa, talvez o que você
- precise na verdade seja...
+ Além dos operadores ==
e ===
, o Javascript também possui outros operadores de
+ comparação:
- O switch
também permite que você cheque se certas condições são válidas e execute códigos
- diferentes para elas:
+ Operadores aritméticos tomam valores numéricos (sejam literais ou variáveis) como seus operandos e
+ retornam um único valor númerico. Os operadores aritméticos padrão são os de soma (+)
,
+ subtração (-)
, multiplicação (*)
e divisão (/)
.
+
+ Em complemento às operações aritméticas padrões, o JavaScript disponibiliza outros operadores aritméticos, + alguns estão listados a seguir:
- A estrutura switch
vai checar se a variável escolhida x
assume um dos valores que
- aparecem após as palavras case
, e executar os comandos específicos do case
correto.
-
- Dica: A palavra break
é utilizada para dizer ao programa que não precisa continuar
- comparando a variável com os outros casos, pois o caso correto já foi identificado, assim saindo do loop.
+ Operadores lógicos são utilizados tipicamente com valores booleanos (lógicos); neste caso, retornam um
+ valor booleano. Os operadores lógicos são o AND lógico &&
, o OU lógico ||
e
+ o operador de negação !
.
- Dica: O switch
aceita um tipo de case
específico chamado default
,
- que é utilizado como o else
do if
, ou seja, é o código que será executado caso
- nenhuma das outras condições sejam válidas.
+ O AND lógico retorna true se o valor dos dois operandos for true, retornando false caso contrário. O OU
+ lógico retorna true se o valor de pelo menos um dos operandos for true, retornando false caso contrário.
+ Já operador de negação é um operador unário, que retorna o valor booleano invertido do operando.
- Em programação, um loop é uma estrutura que permite realizar o mesmo conjunto de operações repetidas
- vezes - o que é chamado de iteração na linguagem de programação.
- Um loop geralmente é composto por 3 itens:
+ Estruturas condicionais em Javascript são utilizadas para verificar uma condição e definir se algo deve
+ ou não acontecer.
+ Um bom exemplo disso, e que não tem nada a ver com programação, é a linguagem que utilizamos para nos
+ comunicar:
+
+
+ Se cancelarem a aula de hoje, vou para a mureta.
+
+
+ Temos uma condição (se cancelarem a aula de hoje) para executar uma ação (vou para a mureta) dependendo do
+ resultado dessa condição. Se verdadeira, a ação é executada.
- Em Javascript, existem 2 principais estruturas que funcionam como loops: o for
e o while
.
+ Em Javascript, podemos utilizar de duas estruturas diferentes de condicionais: o if
e
+ o switch
.
+ O if
é a principal e mais simples estrutura de condicional no Javascript. Ela testa se uma
+ dada condição é verdadeira, executando um bloco de código caso seja.
+
- No for loop
, primeiro você diz qual a variável que será usada como contador, depois você informa
- a condição de saída do loop, e por fim você especifica o iterador, que irá alterar o valor do contador.
+ Além disso, o if
pode conter também a expressão else
, que determina um bloco de
+ código para ser executado caso a condição seja falsa.
- No exemplo acima, o contador é a variável i
, a condição de saída é i < 10
, o que
- significa que enquanto o valor de i
for menor que 10, o loop continuará sendo executado, e o
- iterador é i++
, indicando que ao final de cada iteração do loop, o valor de i
- deve ser incrementado em 1.
-
- Dica 1: No exemplo acima, a variável utilizada como contador foi declarada na própria estrutura do loop,
- porém isso, apesar de bastante comum, não é regra: você pode usar uma variável declarada anteriormente.
+ Indo mais além ainda, a expressão else
permite que você encadeie outro if
,
+ para que você cheque múltiplas condições, uma após a outra.
- Dica 2: i++
é apenas uma forma diferente de escrever i = i + 1
, assim como
- i--
é outra forma de escrever i = i - 1
. O iterador pode ser escrito da sua
- maneira desejada, contanto que altere o valor do contador corretamente.
+ Agora, caso você tenha que fazer uma sequência de if / else
muito longa, talvez o que você
+ precise na verdade seja...
+ O switch
também permite que você cheque se certas condições são válidas e execute códigos
+ diferentes para elas:
+
- No while loop
, você começa especificando a condição de saída, e o iterador é definido dentro do
- próprio loop, nesse caso o iterador é o i++
. Além disso, diferentemente do for loop
- , a variável utilizada como contador deve ser declarada antes do loop.
+ A estrutura switch
vai checar se a variável escolhida x
assume um dos valores que
+ aparecem após as palavras case
, e executar os comandos específicos do case
correto.
- O while loop
possui uma variação, o do...while loop
, que, resumidamente, coloca
- o código a ser executado pelo loop antes da condição de saída.
+ Dica: A palavra break
é utilizada para dizer ao programa que não precisa continuar
+ comparando a variável com os outros casos, pois o caso correto já foi identificado, assim saindo do loop.
- Essa alteração faz com que o loop sempre seja executado uma primeira vez, antes de checar se o contador
- obedece a condição de saída.
+ Dica: O switch
aceita um tipo de case
específico chamado default
,
+ que é utilizado como o else
do if
, ou seja, é o código que será executado caso
+ nenhuma das outras condições sejam válidas.
+ Em programação, um loop é uma estrutura que permite realizar o mesmo conjunto de operações repetidas
+ vezes - o que é chamado de iteração na linguagem de programação.
+ Um loop geralmente é composto por 3 itens:
+
+ Em Javascript, existem 2 principais estruturas que funcionam como loops: o for
e o while
.
+
+ No for loop
, primeiro você diz qual a variável que será usada como contador, depois você informa
+ a condição de saída do loop, e por fim você especifica o iterador, que irá alterar o valor do contador.
+
+ No exemplo acima, o contador é a variável i
, a condição de saída é i < 10
, o que
+ significa que enquanto o valor de i
for menor que 10, o loop continuará sendo executado, e o
+ iterador é i++
, indicando que ao final de cada iteração do loop, o valor de i
+ deve ser incrementado em 1.
+
+ Dica 1: No exemplo acima, a variável utilizada como contador foi declarada na própria estrutura do loop, + porém isso, apesar de bastante comum, não é regra: você pode usar uma variável declarada anteriormente. +
+ +
+ Dica 2: i++
é apenas uma forma diferente de escrever i = i + 1
, assim como
+ i--
é outra forma de escrever i = i - 1
. O iterador pode ser escrito da sua
+ maneira desejada, contanto que altere o valor do contador corretamente.
+
+ No while loop
, você começa especificando a condição de saída, e o iterador é definido dentro do
+ próprio loop, nesse caso o iterador é o i++
. Além disso, diferentemente do for loop
+ , a variável utilizada como contador deve ser declarada antes do loop.
+
+ O while loop
possui uma variação, o do...while loop
, que, resumidamente, coloca
+ o código a ser executado pelo loop antes da condição de saída.
+
+ Essa alteração faz com que o loop sempre seja executado uma primeira vez, antes de checar se o contador + obedece a condição de saída. +
+ ++ Se você chegou até aqui, com certeza já está pronto pra brincar com arrays!! +
+
+ Então vamos lá, pode abrir o solutions/world-1/1-5/index.js
e começar a programar!
+
Alguns links úteis:
+ +