Um amigo meu está fazendo faculdade, e começando a aprender a programar (com Java
- Solicitar que o usuário informe um número inteiro que será usado como limite superior do contador.
- O programa deverá exibir todos os números pares existentes entre 1 e o limite superior (informado via teclado pelo usuário).
- Após a exibição dos números o programa deverá perguntar se o usuário deseja executar mais uma vez.
Por curiosidade, eu escrevi uma solução em Python
continuar=True while continuar: numero=int(raw_input("Informe o valor inicial da repeticao: ")) print str(range(2,numero+1,2))[1:-1] continuar=raw_input("Continuar? (S/N) ").upper()!="N"
Update: inspirado nos comentários do Rafael Santini, uma solução com break fica mais elegante:
while 1: numero=int(raw_input("Informe o valor inicial da repeticao: ")) print str(range(2,numero+1,2))[1:-1] if raw_input("Continuar? (S/N) ").upper()=="N":break
View Comments (12)
Rafael, você pode usar < para gerar o sinal <
Isso acontece porque há algumas tags HTML que podem ser inseridas aqui, então o Wordpress faz controle de HTML.
Por curiosidade, escrevi essa solução em Java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
while (true) {
System.out.println("Informe o valor inicial da repeticao: ");
int limite = (new Scanner(System.in)).nextInt();
for (int i = 2; i <= limite; i = i + 2) System.out.println(i);
System.out.println("Continuar? (S/N): ");
if (!(new Scanner(System.in)).next().equalsIgnoreCase("S")) break;
}
}
}
Em número de linhas o Java perde porque é necessário declarar pelo menos uma classe e um método, mas o tamanho do código que de fato resolve o problema é praticamente o mesmo.
Sobre a legibilidade do código, penso que é relativa. Como não conheço Python, tive que pensar um pouco para entender a linha "print str(range(2,numero+1,2))[1:-1]". Para quem trabalha com Java, certamente achará a solução em Java mais legível ;)
Por curiosidade, escrevi essa solução em Java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
while (true) {
System.out.println("Informe o valor inicial da repeticao: ");
int limite = (new Scanner(System.in)).nextInt();
for (int i = 2; i <= limite; i = i + 2) System.out.println(i);
System.out.println("Continuar? (S/N): ");
if (!(new Scanner(System.in)).next().equalsIgnoreCase("S")) break;
}
}
}
Em número de linhas o Java perde porque é necessário declarar pelo menos uma classe e um método, mas o tamanho do código que de fato resolve o problema é praticamente o mesmo.
Sobre a legibilidade do código, penso que é relativa. Como não conheço Python, tive que pensar um pouco para entender a linha "print str(range(2,numero+1,2))[1:-1]". Para quem trabalha com Java, certamente achará a solução em Java mais legível ;)
Parece que há um bug no comentário. Acho que ele não faz o tratamento do sinal "menor que", ignorando o que vem depois.
Teste
Por curiosidade, escrevi essa solução em Java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
while (true) {
System.out.println("Informe o valor inicial da repeticao: ");
int limite = (new Scanner(System.in)).nextInt();
for (int i = 2; i
faz tempo q naum tme nada putil por aqui hein!
Karlisson,
Acho que com 9 linhas você nem consegue declarar o pacote, importar bibliotecas e a sua classe java, muito menos fazer o código acima funcionar. Eu gastaria, com meu padrão de escrita, ao menos 50 linhas para resolver o problema proposto em java :(
Na verdade, em Java dava a mesma coisa:
boolean continuar = true;
while (continuar) {
int numero = Integer.parseInt(Console.input("Informe o valor inicial da repetição: "));
for (int x=2; x
Rapaz, isso em C ou Java dava umas 7 ou 9 linhas :D