Mudanças entre as edições de "Pensamento Computacional 1 - Introdução ao Jshell - Expressões com operadores relacionais e lógicos"
(40 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 3: | Linha 3: | ||
==Executando o jshell no Codespace== | ==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== | ==Fazendo os primeiros snippets com o jshell== | ||
Linha 13: | Linha 14: | ||
<li> | <li> | ||
No Codespace do Java, ir no prompt do terminal e chamar o jshell: | No Codespace do Java, ir no prompt do terminal e chamar o jshell: | ||
+ | </br> | ||
+ | [[imagem:PensamentoComputacional-PromptShell.png|350px]] | ||
+ | |||
+ | </li> | ||
+ | <li> | ||
+ | No ambiente do jshell faça os seus primeiros snippets: | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> 3+6 | ||
+ | $1 ==> 9 | ||
+ | |||
+ | jshell> 2+9 | ||
+ | $2 ==> 11 | ||
+ | |||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | <blockquote style="background: lime; border: 1px solid black; padding: 1em;"> | ||
+ | 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. | ||
+ | </blockquote> | ||
+ | <li> | ||
+ | <li> 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: | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> /list | ||
+ | |||
+ | 1 : 3+6 | ||
+ | 2 : 2+9 | ||
+ | </syntaxhighlight> | ||
+ | <li> Removendo snippets: remova o primeiro snippet colocado e liste novamente: | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> /drop 1 | ||
+ | | dropped variable $1 | ||
+ | |||
+ | jshell> /list | ||
+ | |||
+ | 2 : 2+9 | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> Resetando o ambiente (zerando tudo) e saindo do jshell. | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> 7*3 | ||
+ | $3 ==> 21 | ||
+ | jshell> /list | ||
+ | |||
+ | 2 : 2+9 | ||
+ | 3 : 7*3 | ||
+ | |||
+ | jshell> /reset | ||
+ | | Resetting state. | ||
+ | |||
+ | jshell> /list | ||
+ | |||
+ | jshell> | ||
+ | |||
+ | jshell> /exit | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | </li> | ||
+ | </ol> | ||
+ | |||
+ | =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. | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | |+Operadores Relacionais | ||
+ | !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. | ||
+ | |||
+ | <ol> | ||
+ | <li> | ||
+ | <syntaxhighlight lang=shell > | ||
+ | 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 | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | |||
+ | <li> | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> varRes = varA == 5; | ||
+ | varRes ==> true | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | |||
+ | <li> | ||
+ | <syntaxhighlight lang=shell > | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | |||
+ | </ol> | ||
+ | |||
+ | <blockquote style="background: lime; border: 1px solid black; padding: 1em;"> | ||
+ | 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. | ||
+ | </blockquote> | ||
+ | |||
+ | =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: | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | |+Operadores Lógicos | ||
+ | !Operador | ||
+ | !Significado | ||
+ | |- | ||
+ | |&& | ||
+ | |AND (E) | ||
+ | |- | ||
+ | |<nowiki>||</nowiki> | ||
+ | |OR (OU) | ||
+ | |- | ||
+ | |!e | ||
+ | |NOT (NÃO) | ||
+ | |} | ||
+ | |||
+ | Vamos a uma sequência de exemplos para "treinar" o uso destes operadores usando o Jshell. | ||
+ | |||
+ | <ol> | ||
+ | <li> | ||
+ | <syntaxhighlight lang=shell > | ||
+ | |||
+ | 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 | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> | ||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> varRes = ! (varB > varA) | ||
+ | varRes ==> false | ||
+ | |||
+ | <syntaxhighlight lang=shell > | ||
+ | jshell> varRes = ! varRes && (varB > varA) | ||
+ | varRes ==> true | ||
− | + | </syntaxhighlight> | |
− | </ | ||
</li> | </li> | ||
</ol> | </ol> | ||
− | == | + | ==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. | ||
+ | |||
+ | {| align=center border=1 | ||
+ | |+ Expressões com operadores relacionais e lógicos | ||
+ | ! 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= | ||
+ | |||
+ | <li> | ||
+ | Vamos implementar o algoritmo para cálculo de média de 2 números, conforme abaixo: | ||
+ | <syntaxhighlight lang="C"> | ||
+ | ALGORITMO MEDIA | ||
+ | VARIAVEIS | ||
+ | NUM1: INTEIRO | ||
+ | NUM2: INTEIRO | ||
+ | MEDIA: REAL | ||
+ | INICIO | ||
+ | LER NUM1 | ||
+ | LER NUM2 | ||
+ | MEDIA <- (NUM1+NUM2)/2 | ||
+ | MOSTRAR MEDIA | ||
+ | FIM | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> | ||
+ | Coloque as instruções uma após a outra, colocando ENTER no final. Observe como as instruções são executadas uma após a outra: | ||
+ | <syntaxhighlight lang=shell > | ||
+ | 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> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <blockquote style="background: lime; border: 1px solid black; padding: 1em;"> | ||
+ | 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. | ||
+ | |||
+ | </blockquote> | ||
+ | |||
+ | </li> |
Edição atual tal como às 15h18min de 18 de setembro de 2023
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.