Pole
- motivace: často bychom potřebovali proměnné
a1,a2,a3až třebaa1000 - dosud: používali jsme
awh.IntList - přímo v Javě: datový typ pole (array)
- pole je datový typ
- je určen typem prvku pole (např.
int) - a svojí velikostí (např. 10)
- je určen typem prvku pole (např.
- k jednotlivým prvkům ("proměnným"
a2,a3) se přistupuje přes jejich index (pořadí)- ten je vždy číslovaný od 0 do velikosti pole - 1
a[2]
- délka pole je pak
.length(a.length)- používejte ji, nikoliv konkrétní číslo - program vydrží změny ve velikosti
int pole[] = new int[3];
pole[0] = 1;
pole[1] = 1;
pole[2] = 2;
// 3 [1, 1, 2]
System.out.printf("%d [%d, %d, %d]\n", pole.length,
pole[0], pole[1], pole[2]);
Další vlastnosti polí
- pole lze naplnit hodnotami při jeho deklaraci
int[] mesice = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Rozdíly oproti awh.IntList
- pole
- součástí Javy bez extra classpath
- libovolný typ
- rychlejší
-
awh.IntList,awh.DoubleList- jednoduché zvětšování
-
addvždy přidá, u pole jsme omezeni velikostí při vytvoření- resp. musíme vytvořit pole nové (větší) a prvky překopírovat
-
- metody navíc (setřídění apod.)
- jednoduché zvětšování
Volitelný počet argumentů funkce
- co když by se nám hodilo mít funkci pro nalezení minima?
int min(int a, int b) { ... }
- ale co kdybych ji chtěl mít pro 3 čísla?
int min3(int a, int b, int c) { return min(min(a, b), c); }
- nepraktické pro více možností...
- ... ale Java nabízí
public static int min(int... cisla) {
int vysl = cisla[0];
for (int i = 1; i < cisla.length; i++) {
if (cisla[i] < vysl) {
vysl = cisla[i];
}
}
return vysl;
}
- k parametrům přistupujeme jako k poli, ale volající je normálně vyjmenuje:
min(4, 5, 1, 10)
Úloha s polynomem
Nvrhněte a naprogramujte třídu pro práci s polynomy. Předpokládejte, že
koeficienty jsou typu int, stupeň polynomu není omezen. Třída by měla
umožnit polynom vytvořit, vypsat a sečíst několik polynomů.
Kód z hodiny
public class MnohoclenyDemo {
public static void main(String[] args) {
Mnohoclen m1 = new Mnohoclen(0, -1, 4);
Mnohoclen m2 = new Mnohoclen(5, -2, 4, 1);
Mnohoclen scitance[] = new Mnohoclen[] { m1, m2 };
Mnohoclen soucet = Mnohoclen.suma(m1, m2);
Mnohoclen soucet = Mnohoclen.suma(scitance);
soucet.tiskni();
}
}
public class Mnohoclen {
private int[] koeficienty;
public Mnohoclen(int... koef) {
}
public static Mnohoclen suma(Mnohoclen... scitance) {
for (int i = 0; i < scitance.length; i++) {
Mnohoclen a = scitance[i];
a.koeficienty.length
}
return null;
}
public void tiskni() {
}
}
