Pensamento Computacional 1 - Introdução ao Jshell - Expressões com operadores relacionais e lógicos
O jshell
O que é o jshell
Executando o jshell no Codespace
- Criar uma conta grátis no github
- Acessar o link de repositório preparado pelo Prof.Emerson Mello:
- Criar um Codespace a partir do repositório do Prof.Emerson:
Uma ALTERNATIVA ao Codespace é executar o jshell no terminal do Linux.
Fazendo os primeiros snippets com o jshell
-
No Codespace do Java, ir no prompt do terminal e chamar o jshell:
-
No ambiente do jshell faça os seus primeiros snippets:
jshell> 3+6 $1 ==> 9 jshell> 2+9 $2 ==> 11
Em computação, o termo snippet se refere a pedaços de código de programação inseridos em um determinado local/arquivo. No jshell são códigos em Java que pode ser colocados de forma iterativa: o programador insere o código e ele já se executa de imediato. No exemplo acima o comando 3+6 foi inserido, executado e o valor resultante da expressão foi colocado em uma variável $1. Da mesma forma, 2+9 foi inserido e executado e o resultado foi colocado em uma variável $2. Observe que o jshell informa o conteúdo destas variáveis.
- Entre com um comando para o jshell listar os snippets. Notar que a "barra" informa que o que se segue é um comando para o jshell. Os snippets são enumerados (id do snippet) e mostrados:
jshell> /list 1 : 3+6 2 : 2+9
- Removendo snippets: remova o primeiro snippet colocado e liste novamente:
jshell> /drop 1 | dropped variable $1 jshell> /list 2 : 2+9
- Resetando o ambiente (zerando tudo) e saindo do jshell.
jshell> 7*3 $3 ==> 21 jshell> /list 2 : 2+9 3 : 7*3 jshell> /reset | Resetting state. jshell> /list jshell> jshell> /exit
Expressões com Operadores Relacionais no Java
Os operadores relacionais permitem computar o resultado de uma relação de grandeza entre dois operandos. O resultado da expressão resulta em um valor booleano (true ou false). Os operadores possíveis são listados abaixo.
Operador | Significado |
---|---|
> | maior que |
>= | maior ou igual que |
< | menor que |
<= | menor ou igual que |
== | igual a (se o operando a esquerda é igual ao da direita) |
!= | diferente de (se o operando a esquerda é diferente do da direita) |
O Jshell é interessante para testar o resultado destas expressões. Vamos a uma sequência de exemplos para "treinar" o uso destes operadores usando o Jshell.
-
jshell> int varA, varB; varA ==> 0 varB ==> 0 jshell> varA = 5; varA ==> 5 jshell> varB = 6; varB ==> 6 jshell> boolean varRes; varRes ==> false jshell> //computação de uma expressão com operadores relacionais jshell> varRes = varB > varA; varRes ==> true
-
jshell> varRes = varA == 5; varRes ==> true
-
jshell> varA varA ==> 5 jshell> varB varB ==> 5 jshell> varB = 100 varB ==> 100 jshell> varA = 2 varA ==> 2 jshell> varB = 100 varB ==> 100 jshell> varRes = 100 * varA > varB varRes ==> true jshell> varRes = 10 * varA > varB varRes ==> false
Algumas observações sobre o código inserido no jshell:
- Não é necessário colocar o ponto e vírgula no final do comando;
- Para ver o valor de uma variável basta entrar com o nome da variável e teclar ENTER
- O operador relacional tem PRECEDÊNCIA sobre o operador de atribuição e sobre o operador de multiplicação. Por isso, nos exemplos acima não foi colocado parênteses. POr questões de clareza é interessante colocar os parênteses.
Expressões com Operadores Lógicos no Java
Estes operadores se aplicam a dois operandos ( a esquerda e a direita). Veja a tabela dos operadores possíves:
Operador | Significado |
---|---|
&& | AND (E) |
|| | OR (OU) |
!e | NOT (NÃO) |
Vamos a uma sequência de exemplos para "treinar" o uso destes operadores usando o Jshell.
-
jshell> int varA, varB, varC, varD; varA ==> 0 varB ==> 0 varC ==> 0 varD ==> 0 jshell> varA = 7 varA ==> 7 jshell> varB = 8 varB ==> 8 jshell> varC = 3 varC ==> 3 jshell> varD = 1 varD ==> 1 jshell> boolean varRes; varRes ==> false jshell> varRes = (varA > varB) && (varC > varD) varRes ==> false jshell> varRes = (varB > varA) && (varC > varD) varRes ==> true jshell> varRes = (varB > varA) && (varC < varD) varRes ==> false jshell> varRes = (varB > varA)|| (varC < varD) varRes ==> true
-
jshell> varRes = ! (varB > varA) varRes ==> false <syntaxhighlight lang=shell > jshell> varRes = ! varRes && (varB > varA) varRes ==> true
EXERCÍCIO
Para cada uma das expressões abaixo escreva snippets no jshell e confira a solução "teorica" em relação a prática.
Expressão | A | B | C | D | Valor |
---|---|---|---|---|---|
(A>B) E (C>D) | 10 | 8 | 20 | 15 | |
(A>B) E (C>D) | 10 | 12 | 15 | 15 | |
(A<=B) OU (C>10) | 5 | 5 | 3 | 5 | |
(A<=B) OU ((C==D) E (D<A)) | 3 | 10 | 4 | 4 | |
(A==B) OU (C==D) | 3 | 1 | 4 | 4 | |
((A==B) E (B<30)) OU (C>=D) | 5 | 5 | 10 | 5 |
Criando "programas" (sequências de snippets) no jshell
ALGORITMO MEDIA
VARIAVEIS
NUM1: INTEIRO
NUM2: INTEIRO
MEDIA: REAL
INICIO
LER NUM1
LER NUM2
MEDIA <- (NUM1+NUM2)/2
MOSTRAR MEDIA
FIM
jshell> int num1,num2;
num1 ==> 0
num2 ==> 0
jshell> double media;
media ==> 0.0
jshell> num1 = 5;
num1 ==> 5
jshell> num2 = 7;
num2 ==> 7
jshell> media = (num1 + num2)/2;
media ==> 6.0
jshell> media
media ==> 6.0
jshell> /list
1 : int num1,num2;
2 : int num1,num2;
3 : double media;
4 : num1 = 5;
5 : num2 = 7;
6 : media = (num1 + num2)/2;
7 : media
jshell>
Algumas considerações: A leitura de valores para variáveis foi substituída por uma atribuição simples a variável, já que a introdução de comandos é interativa. Da mesma forma, o valor da variável "media" foi simplesmente mostrado usando o nome da variável.