Buscar

Aula 4

Prévia do material em texto

Aula 4 – Algoritmos condicionais
Estrutura de controle condicional
Hertz é a unidade de medida de frequência. E frequência são ciclos de eventos por segundo, ou seja, se tivermos 1 evento em 1 segundo, temos 1Hz de frequência. No computador, esses eventos são as ações, ou as atividades que a máquina deve executar (ou processar). Geralmente, o processador é medido em GHz (Giga Hertz) e Giga é um prefixo que denota 109 (bilhão). Portanto, um processador de 4GHz é capaz de executar até 4 bilhões de atividades por segundo! Por isso, quanto maior a frequência de um processador, mais rápido ele é! 
Estrutura de controle condicional simples
Um comando de entrada de dados significa um valor entrando no sistema (geralmente digitado pelo usuário via teclado). Em portugol, vimos esse comando:  leia (nome_da_variavel)
Em JavaScript, existem vários comandos de entrada de dados, porém vamos começar por um que vai nos ajudar a criar um diálogo com nosso usuário: o comando “prompt()”.
O comando “prompt()” é uma função que guarda um valor digitado pelo usuário na variável que indicarmos, porém, esse valor será uma string, ou seja, um texto (ou, basicamente, uma cadeia de caractere). Isso significa que, todos os valores digitados e guardados numa variável por este comando será um texto, mesmo que o valor digitado seja um número.
A sintaxe da função prompt pode ser feita de duas formas:
· var variável = prompt (“texto que irá ser exibido na tela do usuário”);
· var 
variável = prompt (“texto que irá ser exibido na tela do usuário”);
Vamos ver um exemplo:
· var idade = prompt ("Digite sua idade");
· var 
idade = prompt ("Digite sua idade");
Note que o texto que está entre aspas e dentro dos parênteses da função “prompt()” é exibido na tela do usuário. Nesse momento, nosso sistema está “parado”, esperando o usuário digitar sua idade no teclado. Assim que pressionar “enter”, o valor entra no sistema e será armazenado na variável “idade”. Apesar de ser um número, esse valor será armazenado como um texto (string). Para ver o resultado, vamos recorrer a outro comando, de saída de dados.
Em portugol, vimos o “escreva()”. Em JavaScript temos, entre outros, o comando “alert()” ou “console.log()”
Lembre-se, os parâmetros que estiverem dentro dos parênteses serão exibidos na tela do usuário: 
· Se estiver entre aspas, será impresso em forma de texto, exatamente como escrevermos.
· Se estiver sem aspas, quer dizer que queremos exibir o valor guardado por uma variável.
· Se os dois casos estiverem presentes, devemos separar texto e variável pelo símbolo +.
O símbolo +, quando usado entre textos, significa concatenação, ou seja, a junção de dois elementos textuais, formando uma única frase. Por exemplo, se rodarmos as instruções a seguir, teremos o seguinte resultado:
var idade = prompt (“Informe sua idade”);
      console.log ("Você tem " + idade + " anos de idade. ");
*** ENTRADA DE DADOS: LEIA = PROMPT (SIGNIFICA UM VALOR ENTRANDO NO SISTEMA, NORMALMENTE DIGITADO POR UM USUÁRIO; É UMA FUNÇÃO QUE GUARDA ATRIBUI UM VALOR DIGITADO PELO USUÁRIO NA VARIÁVEL INDICADA). ***
*** SAÍDA DE DADOS: ESCREVA = ALERT OU CONSOLE.LOG ***
*** Lembre-se, os parâmetros que estiverem dentro dos parênteses serão exibidos na tela do usuário. ***
Mas, como dissemos há pouco, o comando prompt() armazena uma string. Então, o que acontece se quisermos fazer uma conta aritmética?
Nesse caso, vamos usar um comando que converte uma string em um número inteiro. 
O comando que vamos utilizar é o parseInt(). Ele converte uma string em um número inteiro. Para isso, basta colocar o nome da variável a ser convertida dentro dos parênteses do comando e atribuir à mesma variável seu resultado. Por exemplo: para convertermos a variável “ano” em inteiro, devemos:
 ano = parselnt (ano);
Vamos ver como ficou o resultado do nosso código ao utilizar o parseInt():
var 
idade = prompt (“Digite sua idade”);
idade = parseInt (idade);
idade_somada = idade + 1;
alert ("Você tem " + idade_somada + " anos de idade. ");
As decisões são perguntas, cujas respostas, geralmente, são “falso” ou “verdadeiro”. Essas perguntas são comparações entre dois ou mais valores, para as quais, geralmente, utilizamos os operadores relacionais.
Vamos observar um exemplo: Comparamos o valor armazenado na variável idade perguntando se é maior ou igual ao número 18. Em caso "verdadeiro", o sistema executa o comando de saída exibindo, na tela a frase: Essa pessoa é maior de idade e pode tirar carteira de motorista; ,caso a idade seja menor que 18, vamos exibir na tela que a pessoa ainda é menor de unidade. Em JavaScript, esse mesmo exercício ficaria assim:
if (idade >= 18)  {
 alert (“Essa pessoa é maior de idade e pode tirar carteira de motorista.");
}
else {
alert (“Essa pessoa é maior de idade e pode tirar carteira de motorista.");
}
*** A diferença com o portugol é que as palavras estão em inglês (if e else) e as chaves {} indicam onde começa e onde termina cada bloco de instruções na tomada de decisão. *** 
Vamos ver mais um exemplo? Imagine que temos de identificar todas as pessoas que se chamam Roberto e colocá-las na sala A, para uma prova de vestibular. Nosso código ficaria assim:
if (nome == "Roberto") {
alert ("Se dirija para a sala A.");
}     
Observe, aqui, alguns pontos importantes:
· O operador relacional == é usado para saber se os valores comparados são iguais.
· O valor "Roberto" está entre aspas, pois representa texto.
· Nesse caso, não precisamos tratar o "else", pois outros nomes não interessam ao nosso propósito.
Estrutura de condicional composta
O controle condicional composto verifica várias perguntas dentro da mesma estrutura. Podemos fazer isso de duas maneiras, basicamente:
· Analisando duas ou mais expressões lógicas na mesma linha do If. Nesse caso, cada expressão lógica (ou seja, cada comparação entre dois valores) terá uma resposta de "falso" ou "verdadeiro". Devemos unir essas expressões utilizando os operadores lógicos E ou OU.
· Agrupando os Ifs colocando-os um dentro do outro. Nesse caso, para acontecer um If interno, o If externo deve ser "verdadeiro". Essa estrutura é chamada de Ifs aninhados.
Vamos analisar um exemplo usando os dois casos acima. Imagine que queremos identificar todas as mulheres maiores de 16 anos para uma campanha de saúde. Devemos perguntar se a pessoa é do sexo feminino e verificar se ela tem 16 anos ou mais. 
1. Observe como ficaria esse código com o primeiro caso:
if (sexo == 'F') && (idade >= 16) {
    alert ("Venha participar da nossa campanha de saúde!");
}
Vamos verificar o que está acontecendo:
· "Sexo" e "idade" são duas variáveis que devem ter seus valores inseridos anteriormente pelo usuário.
· O valor de "sexo" foi comparado com o caractere F (feminino). A letra F está com aspas simples, pois representa apenas 1 caractere.
· O operador lógico && (E) foi utilizado para unir as duas expressões lógicas, pois cada uma terá uma resposta de "falso" ou "verdadeiro".
· Utilizando a tabela verdade (vista no capítulo anterior), a frase contida no comando alert() só será exibida caso a primeira expressão lógica for "verdadeira" e a segunda expressão lógica também for "verdadeira". Lembre-se: pela tabela verdade V e V = V. Qualquer resultado de "falso" em uma das expressões, resultaria tudo em "falso", não executando, dessa maneira, o alert().
2. Poderíamos resolver esse problema de outra forma, também. Utilizando o segundo caso, nosso código ficaria assim:
if (sexo == 'F'){
    if (idade >= 16) {
      alert ("Venha participar da nossa campanha de saúde!");
    }
  }
Observe que existe um If dentro do outro. Se o primeiro If não for "verdadeiro", o segundo If não será verificado. Ou seja, se identificarmos que não é uma mulher, nem verificaremos sua idade. 
Vamos colocar mais condições nesse problema? Imagine que, se a pessoa for homem, vamos verificar seu estado civil: se for casado, vamos pedir para participar da campanha de saúde para casais. Mas, se não for casado, vamos dizerpara participar da campanha sobre doação de sangue. Com essas novas regras, nosso código ficaria assim:
if (sexo == 'F') && (idade >= 16) {
      alert ("Venha participar da nossa campanha de saúde!");
  } else if (sexo == 'M'){
      if (estado_civil == "casado"){
          alert ("Venha participar da nossa campanha para casais.")
      } else {
          alert ("Venha participar da nossa campanha de doação de sangue.")
      }
  }
Observe o código acima. Se a pessoa for do sexo feminino e tiver 16 anos ou mais, será exibido o primeiro alert(). Mas, caso a avaliação acima seja “falsa”, entramos no “else” e verificamos se é do sexo masculino. Caso seja, fazemos outra pergunta, agora sobre seu estado civil. Sendo casado, o segundo alert() é exibido, caso contrário, o último alert() é executado.
Com todos esses conceitos, chegou a hora de resolver o problema do mercado. Vamos começar inserindo os preços de todos os produtos. Em seguida, verificamos as condições e, por último, exibimos, na tela, o valor total da compra:
1    var preco_arroz_T1, preco_arroz_T2, preco_feijao_branco, preco_feijao_preto, 
2    preco_linguica, preco_lentilha, resposta, total_compras;
3                            
4    preco_arroz_T1 = prompt ("Insira o preço do kilo do arroz Tipo1:");
5    preco_arroz_T2 = prompt ("Insira o preço do kilo do arroz Tipo2:");
6    preco_feijao_branco = prompt ("Insira o preço do kilo do feijão branco:");
7    preco_feijao_preto = prompt ("Insira o preço do kilo do feijão preto:");
8    preco_linguica = prompt ("Insira o preço do kilo da linguiça defumada:");
9    preco_lentilha = prompt ("Insira o preço do kilo da lentilha:");
10                            
11    resposta = prompt ("Tem arroz tipo 1? \n Responda S para SIM ou N para NÃO");
12                            
13    if (resposta == 'S'){                
14      preco_arroz_T1 = parseInt (preco_arroz_T1);    
15      preco_feijao_preto = parseInt(preco_feijao_preto);
16      total_compras = preco_arroz_T1 + (preco_feijao_preto * 2); 
17    } else {                    
18      resposta = prompt ("Tem arroz tipo 2? \n Responda S para SIM ou N para NÃO");
19      if (resposta == 'S'){                
20        preco_arroz_T2 = parseInt (preco_arroz_T2);    
21        preco_feijao_branco = parseInt(preco_feijao_branco);
22        total_compras = (preco_arroz_T2 * 3) + (preco_feijao_branco); 
23      } else {                    
24        preco_linguica = parseInt(preco_linguica);    
25        preco_lentilha = parseInt(preco_lentilha);    
26        total_compras = (preco_lentilha * 2) + preco_linguica;
27      }                        
28    }                        
29                            
30    alert ("O preço da sua compra foi R$" + total_compras);
· Nas linhas 1 e 2 estamos declarando as variáveis do sistema. Note que podemos declarar várias variáveis na sequência, separando-as por vírgula. 
· Nas linhas 4 a 9 estamos inserindo os preços de todos os produtos. 
· A linha 11 é nossa primeira tomada de decisão: verificar se tem arroz tipo 1. 
· A estrutura condicional mostrada nas linhas 13 a 28, começa analisando o resultado da pergunta anterior. Se a resposta for "verdadeira", convertemos as variáveis referentes ao arroz tipo 1 e feijão preto. Em seguida, fazemos a conta da quantidade que estamos comprando e atribuímos à variável total_compras. Porém, caso a resposta seja "falsa" (ou seja, não haja arroz tipo 1) entramos no "else" da estrutura. 
· A linha 30 exibe, na tela, o valor total da nossa compra.
· O "else" começa fazendo a segunda pergunta: tem arroz tipo 2? Se a resposta for "verdadeira", convertemos as variáveis referentes a arroz tipo 2 e feijão branco, fazemos as contas e armazenamos o resultado na variável total_compras. Caso não haja arroz tipo 2, compramos a lentilha e a linguiça (precisando convertê-las em inteiro antes) e, também, armazenando o resultado na variável total_compras.
As decisões são tomadas por meio de comandos e instruções que os programadores impõem à máquina, por códigos de linguagens de programação. Para se tomar uma decisão, comparamos uma expressão lógica, ou seja, dois valores entre si, utilizando os operadores relacionais.
As respostas dessas comparações podem ser os resultados "verdadeiro" ou "falso". Se o resultado for verdadeiro, o computador executa todas as instruções contidas no If. Caso contrário, executa as instruções contidas no "else" (caso queiramos tratar essa situação).
*** IF = EXECUTA O RESULTADO VERDADEIRO ***
*** ELSE = EXECUTA O CONTRÁRIO ***
replit.com/@GustavoCalixto/Aula4ExerciciosAlgI2104#index.js
https://replit.com/@FilipeMoura/Exercicio-7#index.js
replit.com/@GustavoCalixto/Aula4ExerciciosAlgI2104#index.js

Continue navegando