Ovo su prve vežbe sa uvoda u programiranje i dok sam ih samostalno radio ljutio sam se gledajući rešenja. Ispod svakog školskog rešenja se nalaze moja, moje jedino pitanje je da li je to što su moja rešenja kraća znak da su nepregledna? Jesam li propustio neke smernice koje školske primere čine kvalitetnijim kodom?
Slična stvar me je iritirala i na CS0 pripremnim predavanjima. Profesori kao da prave jako čudna rešenja, naizgled višestruko sporija.
/* Program koji racuna razliku dva ucitana cela broja. */
class Razlika {
public static void main(String[] args) {
int prvi, drugi, razlika;
// ucitavanje prvog broja u promenljivu prvi
System.out.print("Unesite prvi ceo broj: ");
prvi = Svetovid.in.readInt();
// ucitavanje drugog broja u promenljivu drugi
System.out.print("Unesite drugi ceo broj: ");
drugi = Svetovid.in.readInt();
// izracunavanje razlike brojeva i smestanje rezultata
// u promenljivu razlika
razlika = prvi - drugi;
// stampanje ucitanih brojeva i rezultata
System.out.println(prvi + " - " + drugi + " = " + razlika);
}
}
class Razlika {
public static void main(String[] args) {
int a = Svetovid.in.readInt("Unesite prvi ceo broj: ");
int b = Svetovid.in.readInt("Unesite drugi ceo broj: ");
Svetovid.out.println("Razlika ovih brojeva je " + (a-b) + ".");
}
}
/* Program koji racuna obim i povrsinu kruga datog poluprecnika. */
class Krug {
public static void main(String[] args) {
double poluprecnik, povrsina, obim;
// unos poluprecnika u promenljivu poluprecnik
System.out.print("Unesite poluprecnik kruga: ");
poluprecnik = Svetovid.in.readDouble();
// izracunavanje povrsine i obima
povrsina = poluprecnik * poluprecnik * Math.PI;
obim = 2.0 * poluprecnik * Math.PI;
// stampanje rezultata
System.out.print("Povrsina kruga sa unetim poluprecnikom je ");
System.out.println(povrsina + ", a njegov obim je " + obim);
}
}
class Krug {
public static void main(String[] args) {
double r = Svetovid.in.readDouble("Unesite poluprecnik: ");
Svetovid.out.println("Obim: " + Math.PI*2*r);
Svetovid.out.println("Povrsina: " + Math.PI*r*r);
}
}
/* Program koji racuna apsolutnu vrednost unetog celog broja. */
class Absolute {
public static void main(String[] args) {
int x, abs;
// unos broja u promenljivu x
System.out.print("Unesite ceo broj: ");
x = Svetovid.in.readInt();
// izracunavanje apsolutne vrednosti broja
abs = x;
if (x < 0) {
abs = -x;
}
// stampanje rezultata
System.out.println("Apsolutna vrednost broja je: " + abs);
}
}
class Absolute {
public static void main(String[] args) {
int a = Svetovid.in.readInt("Unesite ceo broj: ");
if (a < 0) {
a = -a;
}
Svetovid.out.println("Apsolutna vrednost je: " + a);
}
}
/* Program koji racuna vrednost funkcije
{
x^2, x < 0
f(x) = {
42, x = 0
{ ln(x), x > 0
*/
class Funkcija {
public static void main(String[] args) {
double x, rez;
// unos argumenta funkcije
System.out.print("Unesite vrednost argumenta funkcije: ");
x = Svetovid.in.readDouble();
// izracunavanje
if (x < 0) {
rez = x * x;
}
else if (x == 0) {
rez = 42;
}
else {
rez = Math.log(x);
}
// ispis rezultata
System.out.println("Za vrednost argumenta " + x +
" vrednost funkcije iznosi " + rez);
}
}
class Funkcija {
public static void main(String[] args) {
double x = Svetovid.in.readDouble("Unesite x: ");
if (x < 0) {
x = x * x;
} else if (x == 0) {
x = 42;
} else {
x = Math.log(x);
}
Svetovid.out.print("f(x) = " + x);
}
}
/* Program koji ucitava dva broja, znak za operaciju (+: sabiranje,
*: mnozenje, /: deljenje), primenjuje datu operaciju na ucitane
brojeve i ispisuje rezultat izracunavanja. */
class Operacija {
public static void main(String[] args) {
double broj1, broj2, rezultat;
char op;
// unos operanada i operacije
System.out.print("Unesite prvi broj: ");
broj1 = Svetovid.in.readDouble();
System.out.print("Unesite drugi broj: ");
broj2 = Svetovid.in.readDouble();
System.out.print("Unesite znak za operaciju (+, *, /): ");
op = Svetovid.in.readChar();
// izracunavanje i ispis rezultata
if ((op == '+') || (op == '*') || (op == '/')) {
if (op == '+') {
rezultat = broj1 + broj2;
}
else if (op == '*') {
rezultat = broj1 * broj2;
}
else {
if (broj2 != 0) {
rezultat = broj1 / broj2;
}
else {
rezultat = 0;
}
}
System.out.println("Rezultat je: " + rezultat);
}
else {
System.out.println("Operacija nije dobro zadata.");
}
}
}
class Operacija {
public static void main(String[] args) {
double a = Svetovid.in.readDouble("Unesite prvi broj: ");
double b = Svetovid.in.readDouble("Unesite drugi broj: ");
char op = Svetovid.in.readChar("Unesite operaciju [+ * /]: ");
switch (op) {
case '+':
Svetovid.out.println(a + " + " + b + " = " + (a+b));
break;
case '*':
Svetovid.out.println(a + " * " + b + " = " + (a*b));
break;
case '/':
Svetovid.out.println(a + " / " + b + " = " + (a/b));
break;
default:
Svetovid.out.println("Pogresna operacija!");
}
}
}
/* Program koji racuna vrednost x^n za dati realan broj x
i prirodan broj n. */
class Stepen {
public static void main(String[] args) {
double x, rez;
int n, i;
// ucitavanje realnog broja u promenljivu x
System.out.print("Unesite realan broj x: ");
x = Svetovid.in.readDouble();
// ucitavanje celog broja u promenljivu n
System.out.print("Unesite prirodan broj n: ");
n = Svetovid.in.readInt();
// izracunavanje rezultata u promenljivoj rez
rez = 1.0;
for (i = 0; i < n; i++) {
rez = rez * x;
}
// stampanje ucitanih brojeva i rezultata
System.out.println(x + "^" + n + " = " + rez);
}
}
class Stepen {
public static void main(String[] args) {
double x = Svetovid.in.readDouble("Unesite osnovu: ");
int n = Svetovid.in.readInt("Unesite eksponent: ");
double rez = 1;
Svetovid.out.print(x + " ^ " + n + " = ");
while (n > 0) {
rez = rez * x;
n--;
}
Svetovid.out.println(rez);
}
}
/* Program koji izracunava vrednost izraza (sume)
1/1 + 1/2 + ... + 1/n za dati prirodan broj n. */
class Suma {
public static void main(String[] args) {
int n, i;
double rez;
// unos prirodnog broja n
System.out.print("Unesite prirodan broj n: ");
n = Svetovid.in.readInt();
// izracunavanje sume
rez = 0.0;
for (i = 1; i <= n; i++) {
rez = rez + 1.0 / i;
}
// ispis rezultata
System.out.println("Suma 1/i, i = 1..." + n + " je " + rez);
}
}
class Suma {
public static void main(String[] args) {
int n = Svetovid.in.readInt("Unesite prirodan broJ: ");
double suma = 0;
for (int i = 1; i <= n; i++) {
suma += 1.0 / i;
}
Svetovid.out.println("Suma 1/k, k=1..." + n + " je " + suma);
}
}