Dúvida de Lógica

Oi Pessoal.

Estou tendo java básico na faculdade e estou com uma dúvida que na verdade é dúvida de lógica mesmo.
Estou aprendendo a programar, mas tenho muita dificuldade na lógica - o que atrapalha muito, mas to estudando kk

Queria que vcs dessem uma olhada no código e me ajudassem a entede-lo. Estamos fazendo um teste para saber se o número é primo ou não.

Minhas dúvidas são:

[list]Porque não se declara a variável i? [/list]
[list]Porque ele criou a linha boolean primo = true; ?[/list]
[list]Tentei fazer um chines desse For, mas não consegui. Podem me ajudar?[/list]

Bom é isso aguardo o help de vcs. :slight_smile:


import javax.swing.JOptionPane; //Biblioteca java

public class CalculaPrimo { // classe sempre com a 1º letra maiúscula
    
    public static void main(String[] args) {
        String str= JOptionPane.showInputDialog("Digite um numero"); // janela
        int p= Integer.parseInt(str); // declara a variável 'p' como integer
            boolean primo = true; //declara a variável 'primo' como boolean recebendo true
              for (int i=2; i<p ;i++){ 
                  if(p%i ==0){
                      primo = false;
                  }
              }
            if(primo){
                System.out.println(p + " é primo");
            }else{
                System.out.println(p + " não é primo");
            }
            }
}

A variável i foi declarada dentro do propio laço do for sendo uma variável de escopo.

for (int i=2; i<p ;i++){

A variável primo foi criada para armazenar o resultado do calculo do resto da divisao das variareis .

Minha duvida , Fazer um CHines do for ?

O algoritmo parte do pressuposto que o número é primo. Só caso haja alguma divisão inteira (sem resto) por qualquer número entre 2 e o número é que ele é considerado não primo.

p.s.: Tem várias formas de otimizar esse algoritmo.

[quote=ereinion17]Ele declara a variavel i direto dentro do for, como voce pode ver em negrito, mas caso voce ache mais comodo pode declarar antes. Declarar que será usada no for dentro dele ja se tornou meio que uma convenção

for (int i=2; i<p ;i++){[/quote]

não é isso, não.

não tem a ver com comodidade, tem a ver com escopo.

essa variável i, se declarada diretamente no for, só pode ser acessada por ele.

no exemplo abaixo, a variável i é declarada antes do for e pode ser acessada após a iteração por ele.

[code]public class Test {
public static void main(String[] args) {
int i;

    for (i = 0; i < 10; i++) {
        System.out.println(i);
    }

    System.out.println("numero de iteracoes: " + i);
}

}[/code]

E não é à toa. As variáveis devem ser declaradas no último momento possível, e no menor escopo possível.
Como o for é o único local onde a variável é usada, ali é o local ideal para declara-la. Se for fora, ela ainda existirá depois do for terminar.

Valei pessoal.

Deu pra entender legal aqui.
Meu supervisor de estágio me deu uns toques bem legais tmb.
Estou com novos exercicíos e qualquer dúvida eu posto.

[]'s

Não Esqueça de editar o Título adicionando a tag [RESOLVIDO] no final do Título , Depois tirar suas duvidas.

Ola erica,

vamos as respostas

Porque não se declara a variável i?

Ele declara a variavel i direto dentro do for, como voce pode ver em negrito, mas caso voce ache mais comodo pode declarar antes. Declarar que será usada no for dentro dele ja se tornou meio que uma convenção

for (int i=2; i<p ;i++){

Porque ele criou a linha boolean primo = true; ?

ele criou a variavel boolean, apenas para testa-la mais abaixo e imprimir a mensagem “numero é primo” ou “numero não é primo”

if(primo){
System.out.println(p + " é primo");
}else{
System.out.println(p + " não é primo");
}

Tentei fazer um chines desse For, mas não consegui. Podem me ajudar?

Posta o seu codigo e diga quais problemas voce esta tendo, não podemos postar o problema resolvido, senão voce não aprende.

[]'s