Vezérlési szerkezetek



Vez.java: ciklus használata

1. variáció (Vez.java): elöltesztelõ ciklus használata

...
i=1;
while(i<=n) {
 ...
 i=i+1;
 }
...
 
public class Vez {
public static void main(String[] args) {
  int i=1,j=2,n=15;

  System.out.println("******************************");
  System.out.println("Az elso "+n+
                     " paros szam kiirasa:");
  while(i<=n) {
   System.out.println(i+". paros szam: "+j);
   j=j+2;
   i=i+1;
   }
  System.out.println("******************************");
  }
 }
 

2. variáció (VezV1.java): hátultesztelõ ciklus használata

...
i=1;
do {
 ...
 i=i+1;
 } while(i<=n);
...
 
public class VezV1 {
public static void main(String[] args) {
  int i=1,j=3,n=15;

  System.out.println("Az elso "+n+
  " harommal oszthato szam kiirasa:");
  do {
   System.out.println(i+". szam: "+j);
   j+=3;
   i+=1;
   } while(i<=n);
  }
 }

3. variáció (VezV2.java): rögzített lépésszámú ciklus használata

...
for(i=1;i<=n;i++) {
 ...
 }
...
 
public class VezV2 {
public static void main(String[] args) {
  int i,j=2,n=16;

  System.out.println("2 elso "+n+
  " hatvanyanak kiirasa:");
  for(i=1;i<=n;i++) {
   System.out.println("2^"+i+" = "+j);
   j*=2;
   }
  }
 }



Vez1.java: egyirányú elágazás használata

...
if(args.length==0) {
 ...
 }
...
 
public class Vez1 {
public static void main(String[] args) {
  if(args.length==0) {
   System.out.println("keves parameter!");
   System.exit(1);
   }
  System.out.println("a parancssori parameterek:");
  for(int i=0;i<args.length;i++) {
   System.out.println("\t"+i+". parameter: "+args[i]);
   }
  }
 }



Vez2.java: kétirányú elágazás használata

...
if(d<0) {
 ...
 }
else if(d==0) {
 ...
 }
else {
 ...
 }
...
 
public class Vez2 {

public static String tipus(char karakter) {
 String s;
 if(karakter<(char)32) s="vezerlo karakter";
 else if('0'<=karakter && karakter<='9') s="szamjegy";
 else if('A'<=karakter && karakter<='Z') s="angol nagybetu";
 else if('a'<=karakter && karakter<='z') s="angol kisbetu";
 else if(karakter>(char)127) s="valoszinuleg ekezetes betu";
 else s="egyeb karakter";
 return s;
 }

public static void main(String[] args) {
 if(args.length==0) {
  System.out.println("keves parameter!");
  System.exit(1);
  }
 char c=args[0].charAt(0);
 System.out.println("A beirt karakter: "+c);
 System.out.println("A beirt karakter kodja: "+(int)c);
 System.out.println("A beirt karakter tipusa: "+tipus(c));
 }
}

1. variáció (Vez2V1.java): másodfokú egyenlet megoldása
 
public class Vez2V1 {
public static double masodfoku(double a,double b,double c,double x) {
 return a*x*x + b*x + c;
 }
public static void main(String[] args) {
 if(args.length<3) {
  System.out.println("keves parameter!");
  System.exit(1);
  }
 if(args.length>3) {
  System.out.println("sok parameter!");
  System.exit(2);
  }
 double a=Double.parseDouble(args[0]);
 double b=Double.parseDouble(args[1]);
 double c=Double.parseDouble(args[2]);
 if(a==0) {
  System.out.println("nem masodfoku az egyenlet!");
  System.exit(3);
  }
 double d=b*b-4.0*a*c;
 if(d<0) {
  System.out.println("nincs valos megoldas");
  }
 else if(d==0) {
  double x=-0.5*b/a;
  System.out.println("egy valos megoldas van");
  System.out.println("x == "+x);
  System.out.println("a*x^2 + b*x + c == "+masodfoku(a,b,c,x));
  }
 else {
  double x1,x2;
  x1=0.5*(-b+Math.sqrt(d))/a;
  x2=0.5*(-b-Math.sqrt(d))/a;
  System.out.println("ket valos megoldas van");
  System.out.println("x1 == "+x1);
  System.out.println("a*x1^2 + b*x1 + c == "+masodfoku(a,b,c,x1));
  System.out.println("x2 == "+x2);
  System.out.println("a*x2^2 + b*x2 + c == "+masodfoku(a,b,c,x2));
  }
 }
}



Vez3.java: többirányú elágazás használata

...
switch(j) {
 case 1:...;break;
 case 2:...;break;
 ...
 default: ...;
 }
...
 
public class Vez3 {
 public static void main(String[] args) {
  if(args.length<1) {
   System.out.println("keves parameter!");
   System.exit(1);
   }
  String s;
  int j=Integer.parseInt(args[0]);
  switch(j) {
   case 1:s="elegtelen";break;
   case 2:s="elegseges";break;
   case 3:s="kozepes";break;
   case 4:s="jo";break;
   case 5:s="jeles";break;
   default:s="???";
   }
  System.out.println("a megadott jegy: "+j+" ("+s+")");
  }
 }



Vez4.java: kivételkezelés

...
try {
 ...
 }
catch(ArrayIndexOutOfBoundsException e) {
 ...
 }
catch(NumberFormatException e) {
 ...
 }
catch(Exception e) {
 ...
 }
...
 
public class Vez4 {
 public static void main(String[] args) {
  try {
   String s;
   int j=Integer.parseInt(args[0]);
   switch(j) {
    case 1:s="elegtelen";break;
    case 2:s="elegseges";break;
    case 3:s="kozepes";break;
    case 4:s="jo";break;
    case 5:s="jeles";break;
    default:s="???";
    }
   System.out.println("a megadott jegy: "+j+" ("+s+")");
   }
  catch(ArrayIndexOutOfBoundsException e) {
   System.out.println("keves parameter!");
   }
  catch(NumberFormatException e) {
   System.out.println("szamot kell megadni!");
   }
  catch(Exception e) {
   System.out.println("mas hiba???"+e);
   }
  }
 }

1. variáció (Vez4V1.java): csak a kivételhez vezetõ utasítás(ok) vannak a kivételkezelõ blokkban

...
(kezdõértékadások)
...
try {
 ...
 }
catch(ArrayIndexOutOfBoundsException e) {
 ...
 }
catch(NumberFormatException e) {
 ...
 }
catch(Exception e) {
 ...
 }
...
(a program folytatása)
...
 
public class Vez4V1 {
 public static void main(String[] args) {
  String s;
  int j=0;
  try {
   j=Integer.parseInt(args[0]);
   }
  catch(NumberFormatException e) {
   System.out.println("szamot kell megadni!");
   System.exit(1);
   }
  catch(ArrayIndexOutOfBoundsException e) {
   System.out.println("keves parameter!");
   System.exit(2);
   }
  catch(Exception e) {
   System.out.println("mas hiba???"+e);
   System.exit(3);
   }
  switch(j) {
   case 1:s="elegtelen";break;
   case 2:s="elegseges";break;
   case 3:s="kozepes";break;
   case 4:s="jo";break;
   case 5:s="jeles";break;
   default:s="???";
   }
  System.out.println("a megadott jegy: "+j+" ("+s+")");
  }
 }



Feladatok:

(1) Adjon meg parancssori paraméterként egy egész számot, és tárolja el az n nevû (int típusú) változóban. Ha hiba lép fel, írassa ki a hibára vonatkozó információkat és lépjen ki a programból. Írassa ki az alábbi két sorozat elsõ n elemét egymás mellett, táblázatos formában, az elemek sorszámának kiíratásával együtt, valahogy így:
 
Sorszam Elso sorozat Masodik sorozat
1 5 3
2 7 9
3 9 27
4 11 81
... ... ...

(2) Adjon meg parancssori paraméterként egy egész számot, és tárolja el az n nevû (int típusú) változóban. Ha hiba lép fel, írassa ki a hibára vonatkozó információkat és lépjen ki a programból. Ezután n tárolt értékétõl függõen írasson ki egy szót:

(3) Az elõzõ feladatot oldja meg egy függvény elkészítésével, amely egy paraméterként megadott számhoz a (2) feladatban megadott szavakat rendeli hozzá!


Boda István, 2005. október 12.