1
0
Fork 0

Compare commits

...

2 Commits

Author SHA1 Message Date
grz c6acdb0ce9 Desvios condicionais if, if-else 2024-04-15 15:20:53 -03:00
grz 699a23cc1c + imagens 2024-04-15 15:20:38 -03:00
4 changed files with 115 additions and 10 deletions

View File

@ -1,6 +1,6 @@
[Índice](README.md)
# Blocos de código e escopo de variáveis
# ![Robô](img/robof-64px.png) Blocos de código e escopo de variáveis
Em Javascript um `bloco` é uma declaração escrita entre chaves `{ }` que tem por objetivo agrupar linhas de código.
@ -24,7 +24,7 @@ Por exemplo, para:
trechos de código que serão `executados condicionalmente` - apenas se uma certa condição for satisfeita
- declaração do `corpo de uma função`
## Visibilidade (escopo)
## ![Maguinho](img/mago-64px.png) Visibilidade (escopo)
Blocos alteram a `visibilidade` das variáveis no código.

105
JS-Desvios-condicionais.md Normal file
View File

@ -0,0 +1,105 @@
[Índice](README.md)
# ![Robô](img/robof-64px.png) Desvios condicionais - if, if-else
Já vimos o operador condicional do Javascript (o único operador ternário da linguagem) que nos permite testar o valor de verdade de uma **condição** e retornar um valor **x** se a condição for verdadeira e um valor **y** se ela for falsa.
As estruturas sintáticas `if`, `if-else` e `switch-case` podem fazer o mesmo e muito mais.
> Nos exemplos abaixo vamos supor que existe um objeto `login` que contém os dados de login de um usuário de um sistema hipotético e que esse objeto tem um método chamado `valido()` que retorna `true` caso o login seja válido ou `false` caso contrário.
Exemplo de uso do `operador condicional`.
```js
const mensagem = login.valido() ? 'Olá!' : 'Quem é você?'
console.log(mensagem)
```
O mesmo pode ser escrito com `if`
```js
let mensagem = 'Quem é você'
if(login.valido()) {
mensagem = `Olá!'
}
console.log(mensagem)
```
Ou pode ser escrito com `if-else`
```js
let mensagem
if(login.valido()) {
mensagem = 'Olá!'
} else {
mensagem = 'Quem é você?'
}
console.log(mensagem)
```
Podemos transformar esses trechos de código em funções para facilitar seu uso em um programa mais extenso.
- Usando `operador condicional`
```js
function mensagemDeLogin(login) {
return login.valido() ? 'Olá!' : 'Quem é você?'
}
console.log(mensagemLogin(umLogin))
```
- Usando `if`
```js
function mensagemDeLogin(login) {
if(login.valido()) {
return 'Olá!'
}
return 'Quem é você?'
}
console.log(mensagemLogin(umLogin))
```
- Usando `if-else`
```js
function mensagemDeLogin(login) {
if(login.valido()) {
return 'Olá!'
} else {
return 'Quem é você'
}
}
console.log(mensagemLogin(umLogin))
```
Para esse tipo de `teste condicional` o operador condicional é mais conciso. Como esse tipo de teste é bastante comum, o operador condicional acaba sendo muito usado.
## ![Maguinho](img/mago-64px.png) Quando usar if, if-else
As estruturas `if` e `if-else` permitem o uso de blocos de código, enquanto o operador condicional `? :` só permite expressões.
Por isso, se o código que precisamos executar não é uma simples expressão ou um simples valor a ser retornado, se precisarmos executar várias linhas de código em função do valor de verdade que está sendo testado, então precisamos usar `if`, `if-else`, porque eles permitem o uso de blocos de código.
Por exemplo, vamos supor que a mensagem de login devesse ser atribuída ao próprio objeto `login` após o teste `login.valido()` e depois retornada. Essas seriam 2 operações e precisariam ser escritas em um bloco de código. Assim:
```js
function mensagemLogin(login) {
if(login.valido()) {
login.setMensagem('Olá!')
return login.getMensagem()
} else {
login.setMensgem('Quem é você?')
return login.getMensagem()
}
}
```
[Índice](README.md)

View File

@ -2,7 +2,7 @@
# Padrões para loops
## Loop infinito
## ![Maguinho](img/mago-64px.png) Loop infinito
Para fazer um loop infinito podemos usar um bloco controlado por `while` ou `for`.
@ -98,7 +98,7 @@ console.log('fim do laço externo');
```
## Variável contadora
## ![Robô](img/robof-64px.png)Variável contadora
Criamos uma variável contadora quando precisamos contar o número de ocorrências de um evento Normalmente ela vai começar com valor `0`.
@ -120,7 +120,7 @@ repetir
Nesse exemplo a variável `nVezes` está contando o número de vezes que a condição `numero igual a 10` retornou `true`, pois o código que incrementa a variável `nVezes` só é executado sob essa condição
## Percorrer um array
## ![Maguinho](img/mago-64px.png) Percorrer um array
Para percorrer um array usamos um loop controlado por uma variável contadora. A estratégia é acessar o array usando o valor dessa variável como índice.
@ -165,7 +165,7 @@ for (let variavel = 0; index < array.length; index++) {
Note que a inicialização da variável e também o incremento ocorrem na declaração do for.
## Somatório - variável acumuladora
## ![Robô](img/robof-64px.png) Somatório - variável acumuladora
Podemos usar um loop para somar uma série de valores. Para isso, a estratégia é usar uma `variável acumuladora` que nada mais é que uma variável usada exclusivamente para acumular os valores das somas parciais dos valores durante cada execução do loop.

View File

@ -69,7 +69,7 @@ Opcionalmente, você pode instalar o **VSCodium**, que é uma versão livre (lic
- [Funções](./JS-Funcoes.md) - declaração, parâmetros, retorno, reutilização de código
- [Estudo de caso - Baby Shark](./JS-Funcoes-EstudoDeCaso.md) - abstração de operações, composição de funções, refatoração
## Aula 09 - Arrays
## Aula 09 - Arrays - I
- [Arrays](./JS-Arrays.md) - Criação, acesso, métodos úteis, iteração
@ -88,11 +88,11 @@ Os datasets de emails e telefones foram gerados usando as ferramentas disponíve
- Telefones falsos: [https://fauxid.com/tools/fake-phone-number](https://fauxid.com/tools/fake-phone-number)
## Aula 10 - Desvio condicional e loops
## Aula 10 - Desvio condicional e loops
- [Blocos de código e escopo de variáveis](./JS-Blocos-de-codigo-e-escopo-de-variaveis.md)
- [Desvios condicionais]()- com if, if-else e switch-case
- [Loops]() - com for e while
- [Desvios condicionais](./JS-Desvios-condicionais.md) - com `if`, `if-else`
- [Loops]() - com `for` e `while`
- [Padrões para loops](./JS-Padroes-para-loops.md) - loop infinito, flags, variáveis contadoras, percorrer array, variáveis acumuladoras
### [Exercícios](./JS-Exercicios-condicionais-e-loops.md) - condicionais e loops