Gyakorlati alapok

Lépcsőzetes gyakorlat

 

Ebben a fejezetben egy folyamatosan nehezülő feladatot "játszhatunk" végig. A sorszámok alatti szöveg a specifikáció, azaz a feladat leírása, amelyet le kell programoznunk, az utána jövő kód pedig a megoldás, amelyre lehetőség szerint ne nézzünk rá. Amint azt már többször hangsúlyoztam (és fogom is)...

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

...a szöveg helyes értelmezése már fél siker, ne kapkodjunk tehát benne!

 

A tökéletes vizsgahelyzetet esetleg úgy tudjuk még fokozni, hogy előre jól meghatározott időkeretet adunk magunknak, magyarán benyomjuk a stopperóra gombját!

 

www.informatika-programozas.hu

 

1.

Írjon Java-programot, amely kiírja a hárommal osztható számokat 30-ig úgy, hogy minden szám után kihagy egy sort:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    for(int i = 1; i <= 30; i++){
    if(i % 3 == 0){
        System.out.println(i);
        System.out.println();
        }

    }

}

}

 

Végeredmény:

3

 

6

 

9

 

12

 

15

 

18

 

21

 

24

 

27

 

30


 

2.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Kérem adja meg számot!");
    int number = scanner.nextInt();

    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
            System.out.println(i + " ");
            }
        }
    scanner.close();

    }

}

 

Végeredmény:

3 6 9 12 15 18

 

3.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál, akkor hibaüzenettel jelezze ezt és a program álljon le:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Kérem adja meg számot!");
    int number = scanner.nextInt();
    if(number > 100){
        System.out.println("Túl nagy szám!");
        System.exit(0);
    }

    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
            System.out.println(i + " ");
            }
        }
    scanner.close();

    }

}

 

Végeredmény:

101

Túl nagy szám!

 

4.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb 3-nál, akkor hibaüzenettel jelezze ezt és a program álljon le:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Kérem adja meg számot!");
    int number = scanner.nextInt();
    if(number > 100 || number < 3){
        System.out.println("Túl nagy vagy túl kicsi szám!");
        System.exit(0);
    }

    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
            System.out.println(i + " ");
            }
        }
    scanner.close();

    }

}

 

Végeredmény:

2

Túl nagy vagy túl kicsi szám!

 

5.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb 3-nál, akkor hibaüzenettel jelezze ezt és a program ne is lépjen tovább, amíg ezt a felhasználó ki nem javította:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int number;
    do{
        System.out.println("Kérem adja meg számot!");
        number = scanner.nextInt();
    }while(number > 100 || number < 3);

    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
           
System.out.println(i + " ");
            }
        }
    scanner.close();

    }

}

 

Végeredmény:

Kérem adja meg számot!
2
Kérem adja meg számot!
101
Kérem adja meg számot!
30
3 6 9 12 15 18 21 24 27 30

 

6.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb 3-nál és már kétszer hibázott a számbevitelben, akkor hibaüzenettel jelezze ezt és a program álljon le:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int number;
    int rosszSzam = 0;
    do{
        rosszSzam++;
        System.out.println("Kérem adja meg számot!");
        number = scanner.nextInt();
        if(rosszSzam == 2){
            System.out.println("Már 2x hibázott! Kilépés!");
            System.exit(0);
        }
    }while(number > 100 || number < 3);

    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
           
System.out.println(i + " ");
            }
        }
    scanner.close();

    }

}

 

Végeredmény:

Kérem adja meg számot!
2
Kérem adja meg számot!
101
Már 2x hibázott! Kilépés!

 

7.

Írjon Java-programot, amely kiírja a hárommal osztható számokat a felhasználó által megadott határig vízszintesen és a számok között egy szóköznyit kihagyva, de ha a felhasználó által megadott szám nagyobb 100-nál vagy kisebb 3-nál és már kétszer hibázott a számbevitelben, akkor hibaüzenettel jelezze ezt és a program álljon le! Egyúttal minden kódfunkciót külön metódusba tegyen:
 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main3 {

static int input() {
    Scanner scanner = new Scanner(System.in);
    int number;
    int rosszSzam = 0;
    do{
        rosszSzam++;
        System.out.println("Kérem adja meg számot!");
        number = scanner.nextInt();
        if(rosszSzam == 2){
            System.out.println("Már 2x hibázott! Kilépés!");
            System.exit(0);
        }
    }while(number > 100 || number < 3);
    scanner.close();
    return number;
}

static void arrayNumbers(int number) {
    for(int i = 1; i <= number; i++){
        if(i % 3 == 0){
            System.out.println(i + " ");
        }
    }
}

public static void main(String[] args) {
    int number = input();
    arrayNumbers (number);
    }
}

 

Végeredmény:

Kérem adja meg számot!
2
Kérem adja meg számot!
101
Már 2x hibázott! Kilépés!

 

A különutas lehetőséggel a feladat egyre bonyolultabbá válik, hiszen a kódfunkciókat sokféleképpen lehet szétosztani, bár igaz, hogy legtöbbször csupán egy optimális létezik. Ebből a szempontból a fenti kód nem optimális, mert például még el lehetett volna választani egymástól a számítási és a kiírási metódust. A fenti kód behozhatatlan előnye azonban, hogy az előző, 6. feladatra alapul, így kis másolással és kódigazítással 10 perc alatt végeztem vele. Ez vizsgahelyzetben óriási előny. Ilyen esetekben ezt az eljárást javaslom és ha marad időnk, akkor a vizsga végén még visszatérhetünk kódszépítgetés végett. De előtte a már meglévő megoldásunkat ne felejtsük elmenteni!