# Die ersten vier perfekte Zahlen.



## Shakti (19. Nov 2012)

Hallo an alle hier im Java Forum.
Kurz zu mir da ich neu hier bin. Ich habe dieses Jahr eine Ausbildung zum Fachinformatiker Anwendungsentwicklung angefangen. Ich habe bevor ich angefangen bin noch nie was mit programmieren zu tun gehabt deshalb ist der Einstieg für mich durchaus nicht einfach.

Das gute ist es macht mir Spaß und Interesse habe ich auch sehr daran. Ich habe mir ein Buch gekauft mit dem ich nebenbei dann noch lernen kann.

So nun kurz zu dem was ich bis jetzt gehabt habe oder mir durch das Buch angelesen habe.

Für die folgenden Themen sollten wir in der Schule selbst in Gruppen Schulungsunterlagen erstellen was wir auch gemacht haben.

1.	Objekte/Instanzen
2.	Konstruktoren
3.	Methoden (ohne Übergabeparameter, ohne Rückgabeparameter;
                  ohne Übergabeparameter, mit Rückgabeparameter;
 	       mit Übergabeparameter, ohne Rückgabeparameter;
                   mit Übergabeparameter, mit Rückgabeparameter)
4.	Instanzvariablen, Datentypen
5.	Klassenvariablen, Klassenmethoden
6.	Überladen von Methoden
7.	Datenkapselung

Dazu haben wir dann eine Aufgabe bekommen die alles dort beinhaltet. Für mich leider nicht alleine lösbar leider verstehe ich auch nicht warum so was nicht Schritt für Schritt der Lehrer beibringt.

Dann haben wir eine Zusammenfassung von dem Lehrer bekommen wo alle logischen Operatoren If Anweisung, Switch Case drauf war. 
Als nächstes haben wir die for Schleife, while schleife und do also die Syntax an der Tafel gesehen und eine ca. 10sek Erklärung dazu bekommen.

So das zu meinen erwarteten Wissenstand vom Lehrer. Realität sind nicht so dolle aus^^

Ok jetzt zur eigentlichen Aufgabe.
Nach dem wir die letzte genannten Anweisungen bzw. Schleifen gesehen haben bekamen wir folgende Aufgabe:

Bitte schauen sie im Internet was "Perfekte Zahlen" sind und schreiben sie Java Programm das die ersten vier Perfekten Zahlen ausgibt.

So das war für einfach nicht lösbar 
Als ich den Lehrer fragte habe ich prompt die Lösung bekommen ohne richtige Erklärung dazu.
Gut am Code kann man ja schon einiges sehen.
Ich hoffe ich mache das nun richtig mit dem Code einfügen ^^


```
public class Volkommen {

	
	public static void main(String[] args) {
		
		
		
		for(int i=1;i<=10000;i++)
		{
			
			int summe = 0;
			for(int j = 1; j<i;j++)
		 {	
				if(i%j==0)
			{
				
				summe = summe + j;
			}
		 } 
			if (summe==i)
			{
				System.out.println(i);
			}
		}
	

	}
}
```

Was ich halt sehe ist, dass erst mal i erhöht wird bis 6 wenn das so weit ist dann sollte j = 5 sein.
j ist für mich immer eins kleiner als i. Genau da liegt mein Problem. Es müsste aber doch so sein das i und j den Wert 6 annehmen dann die If Anweisung kommt und 6/6 =0 also wird die erste perfekte Zahl ausgegeben also die 6??

Kann mir evtl. jemand erklären wir das Funktioniert ich blick da einfach nicht durch 

P.S. Was innere/ äußere Blöcke sind wurde nie gesagt auch was verschachtelte Schleifen sind wurde nichts von gesagt. Ich weiß es nur da ich mit einem Buch noch lerne.

Das war viel Text auf einmal aber so sollte evtl. jeder wissen was ich können sollte und wer ich bin.

Danke für jede Hilfe bei diesem Problem und hoffe in der Zukunft hier gute Hilfe bekommen zu können.


Einen guten Start in die Woche wünsche ich 

Viele Grüße aus NRW


----------



## Trolllllll (19. Nov 2012)

Hast du gemacht, was dein Lehrer von dir wollte, mal im internett geschaut, was das ist, volkommene Zahl? Vollkommene Zahl ? Wikipedia Hättest du wahrscheinlich auch gefunden, wenn du wüstest wie man googelt ;-) aber das ist echt kompliziert, wenn du weißt was deine Aufgabe ist, schau dir den code nochmal an.

[WR]PS. 6/6 ist niemals 0 sondern wäre 1[/WR]


----------



## Spewer (19. Nov 2012)

Da du ja schon gemerkt hast, dass die 6 die erste vollkommene Zahl ist, versuche ich mal den Programmablauf bei i = 6 zu erklären:

Also: i = 6 und summe = 0

nun beginnt die zweite Schleife mit j = 1 und j wird solange erhöht, bis : j < i also j = 5.
Das Programm überprüft nun ( in der zweiten for-Schleife ) ob i%j == 0 ist. 
Bsp: i = 6 und j = 1 => Modulo = 0 
Wenn der Modulo = 0 ist, wird die Summe um den Wert von j erhöht, also Summe = 0 + 1 im ersten Durchlauf.

j = 2 => Modulo 0, Summe = 1 + 2 = 3
j = 3 => Modulo 0, Summe = 3 + 3 = 6

j = 4 => Modulo != 0, Summe bleibt gleich also 6
j = 5 => Modulo != 0, Summe bleibt gleich also 6

Jetzt ist j = 5 also verlassen wir die innere Schleife und kommen zur letzten if-Abfrage.
Summe == i . Das ist die Bedingung dafür, dass die Zahl vollkommen ist. 
Und da die Summe bei i = 6 nun mal auch 6 ist, ergibt sich die Lösung.

Hoffe das hilft etwas.


----------



## Shakti (19. Nov 2012)

Trolllllll hat gesagt.:


> Hast du gemacht, was dein Lehrer von dir wollte, mal im internett geschaut, was das ist, volkommene Zahl? Vollkommene Zahl ? Wikipedia Hättest du wahrscheinlich auch gefunden, wenn du wüstest wie man googelt ;-) aber das ist echt kompliziert, wenn du weißt was deine Aufgabe ist, schau dir den code nochmal an.
> 
> [WR]PS. 6/6 ist niemals 0 sondern wäre 1[/WR]



Hallo ja natürlich habe ich das gemacht.... Nur deshalb weiß man noch lange nicht wie man so ein Java Programm schreiben muss bzw wie ich den Code lesen muss um dahinter zu kommen wie das funktioniert.


----------



## Trolllllll (19. Nov 2012)

Shakti hat gesagt.:


> ...
> Bitte schauen sie im Internet was "Perfekte Zahlen" sind und schreiben sie Java Programm das die ersten vier Perfekten Zahlen ausgibt.
> ...


Du hast hier schritt eins gesehen, schauen sie im Internet was "Perfekte Zahlen" sind? Mach das, dann verstehst du den code auch, bzw Spewer hat ihn dir ja jetzt auch ordentlich erklärt ;-)

Nur der Code hat einen Fehler, er soll die ersten vier ausgeben, jedoch ist dieses abbruchkriterium nicht drinnen :-(


```
public class Volkommen {
    public static void main(String[] args) {
        int counter =0;
        for(int i=1;i<=10000;i++){
            int summe = 0;
            for(int j = 1; j<i;j++){  
                if(i%j==0){
                summe = summe + j;
            }
         } 
            if (summe==i){
                System.out.println(i);
                counter++;
                if (counter>3){
                   break;
                }
            }
        }
    }
}
```

[EDIT]Mhh so kompliziert ist der Code nicht, und das die innere schleife nicht 6 werden darf, wäre dir dann aufgefallen, da in dem Artikel den ich gepostet habe ja steht, alle Zahlen außer sich selber ;-) aber wenn man das konzept und java nicht versteht, dann ist es schwer den code zu verstehen[/EDIT]


----------



## Spewer (19. Nov 2012)

Trolllllll hat gesagt.:


> Du hast hier schritt eins gesehen, schauen sie im Internet was "Perfekte Zahlen" sind? Mach das, dann verstehst du den code auch, bzw Spewer hat ihn dir ja jetzt auch ordentlich erklärt ;-)
> 
> Nur der Code hat einen Fehler, er soll die ersten vier ausgeben, jedoch ist dieses abbruchkriterium nicht drinnen :-(
> 
> ...



Das mit dem Abbruchkriterium ist mir aufgefallen, aber ich hatte es einfach mal "überlesen" um es nicht unnötig kompliziert zu machen


----------



## Trolllllll (19. Nov 2012)

War nicht gegen dich gerichtet, du hast ja nur den existierenden Code erklärt, nur war der halt nicht, auch wenn vom Lehrer gegeben, nicht der richtige, es sei denn die 5 kleinste perfekte Zahl ist über 10.000 ;-)


----------



## Spewer (19. Nov 2012)

Trolllllll hat gesagt.:


> War nicht gegen dich gerichtet, du hast ja nur den existierenden Code erklärt, nur war der halt nicht, auch wenn vom Lehrer gegeben, nicht der richtige, es sei denn die 5 kleinste perfekte Zahl ist über 10.000 ;-)



Die vollkommenen Zahlen sind eig. ein extrem interessantes Thema. Wenn man die Zahlen kennt, ist die 10000 schon gut gewählt. Die 5. vollkommene Zahl ist nämlich die : 33.550.336


----------



## Shakti (19. Nov 2012)

Trolllllll hat gesagt.:


> War nicht gegen dich gerichtet, du hast ja nur den existierenden Code erklärt, nur war der halt nicht, auch wenn vom Lehrer gegeben, nicht der richtige, es sei denn die 5 kleinste perfekte Zahl ist über 10.000 ;-)



Genau so ist es die vierte ist 8128 somit unter 10000 die letzte.


----------



## Spewer (19. Nov 2012)

Shakti hat gesagt.:


> Genau so ist es die vierte ist 8128 somit unter 10000 die letzte.



Aber es wäre besser, wenn man ein Abbruchkriterium verwendet. Aber wenn er Code vom Lehrer ist, scheint er da keinen Wert drauf zu legen oder hat selber nicht mitgedacht.


----------



## Trolllllll (19. Nov 2012)

Ja stimmt, aber das finde ich ziemlich unsauber programmiert, dann könnte ich es auch so programieren


```
public class Volkommen {
    public static void main(String[] args) {
       System.out.println("6");
       System.out.println("28");
       System.out.println("496");
       System.out.println("8.128");
    }
}
```

eher so, das wäre finde ich richtig


```
public class Volkommen {
    public static void main(String[] args) {
        int counter =0;
        int i=0;
        while(counter<4){
            i++;
            int summe = 0;
            for(int j = 1; j<i;j++){  
                if(i%j==0){
                   summe = summe + j;
                }
            } 
            if (summe==i){
                System.out.println(i);
                counter++;
            }
        }
    }
}
```


----------



## Spewer (19. Nov 2012)

Und wenn ihr jetzt euren PC mal ein bisschen fordern wollt, einfach mal counter < 5 einstellen


----------



## hüteüberhüte (19. Nov 2012)

Erklärt doch bitte mal kurz, was perfekte Zahlen sind.


----------



## Spewer (19. Nov 2012)

Eine Zahl ist eine vollkommene Zahl, wenn sie gleich der Summe ihrer positiven Teiler ist. (außer sich selbst)
Bsp:  1 + 2 +3 = 6 <= Somit vollkommene Zahl


----------



## Trolllllll (19. Nov 2012)

Hüte auch für dich ;-) aber Spewer war ja schon so lieb und hat es dir erklärt


Trolllllll hat gesagt.:


> Hast du gemacht, was dein Lehrer von dir wollte, mal im internett geschaut, was das ist, volkommene Zahl? Vollkommene Zahl ? Wikipedia Hättest du wahrscheinlich auch gefunden, wenn du wüstest wie man googelt ;-) aber das ist echt kompliziert, wenn du weißt was deine Aufgabe ist, schau dir den code nochmal an.


----------



## trääät (19. Nov 2012)

Shakti hat gesagt.:


> Ich habe dieses Jahr eine Ausbildung zum Fachinformatiker Anwendungsentwicklung angefangen. Ich habe bevor ich angefangen bin noch nie was mit programmieren zu tun gehabt deshalb ist der Einstieg für mich durchaus nicht einfach.


ganz erlich : das war schon mal der erste fehler ...
anwendungsentwicklung ist ein sehr komplexes thema in das man auch in eine erst-ausbildung bereits vorkenntnisse mitbringen sollte ...
einfach von 0 auf 100 sich da rein stürzen ist meist nie eine gute idee



Shakti hat gesagt.:


> Das gute ist es macht mir Spaß und Interesse habe ich auch sehr daran. Ich habe mir ein Buch gekauft mit dem ich nebenbei dann noch lernen kann.


schön das es dir spaß macht ... so treffen dich miss-erfolge nicht ganz so hart als wenn du es nur machen würdest weil du es musst ... aber glaub mir : wenn man nicht schon vorher freude am programmieren hatte kann diese auch schnell wieder verfliegen ...



Shakti hat gesagt.:


> [basic-krams]
> Dazu haben wir dann eine Aufgabe bekommen die alles dort beinhaltet. Für mich leider nicht alleine lösbar leider verstehe ich auch nicht warum so was nicht Schritt für Schritt der Lehrer beibringt.


weil der lehrer sicherlich erwartet das wenn man in diesen berufszweig einsteigt bereits vorkenntnisse hat ... wenn auch nicht sonderlich umfangreich aber wenigstens die basics sollte man wirklich drauf haben ...
und dabei rede ich jetzt nicht von einer speziellen sprache oder einem bestimmten programmier-paradigma sondern allgemeine grundlagen der anwendungsentwicklung ... denn die sind großteil in jeder sprache gleich



Shakti hat gesagt.:


> Dann haben wir eine Zusammenfassung von dem Lehrer bekommen wo alle logischen Operatoren If Anweisung, Switch Case drauf war.
> Als nächstes haben wir die for Schleife, while schleife und do also die Syntax an der Tafel gesehen und eine ca. 10sek Erklärung dazu bekommen.


da loops, if, switch und ähnliches zu elementaren grundlagen von fast allen sprachen sind reicht das auch ...
beim syntax hätte man allerdings näher drauf eingehen müssen ... denn dieser ist in java zwar nicht sehr kompliziert ... muss aber strikt eingehalten werden



Shakti hat gesagt.:


> Ok jetzt zur eigentlichen Aufgabe.
> Nach dem wir die letzte genannten Anweisungen bzw. Schleifen gesehen haben bekamen wir folgende Aufgabe:
> 
> Bitte schauen sie im Internet was "Perfekte Zahlen" sind und schreiben sie Java Programm das die ersten vier Perfekten Zahlen ausgibt.


ist an sich eine ganz klare ansage was zu tun ist

1) google fragen : "perfekte zahlen"
1.5) zettel und stift nehmen und versuchen das gelesene schritt für schritt nachzuvollziehen ... in dem fall reicht grundschul-mathematik aus ...
2) mathematischen algorithmus in geforderter sprache implementieren



Shakti hat gesagt.:


> So das war für einfach nicht lösbar
> Als ich den Lehrer fragte habe ich prompt die Lösung bekommen ohne richtige Erklärung dazu.


ja ... so sind sie die lieben info-lehrer ...
grund ist meist das diese selbst info nur als nebenfach haben und meist selbst so gut wie keinen plan von dem haben was sie ihren schülern beibringen sollen ...
einen qualifizierten und kompetenten info-dozenten zu haben ist ein segen ... den leider so gut wie niemand erfährt ...

die erklärung zum code wäre der oben bei 1.5 genannte zettel auf dem für dich selbst verständlich der mathematische algorithmus stehen sollte ... und der code wäre dann nur das beispiel wie man diesen in java implementiert

[code-krams]



Shakti hat gesagt.:


> Was ich halt sehe ist, dass erst mal i erhöht wird bis 6 wenn das so weit ist dann sollte j = 5 sein.
> j ist für mich immer eins kleiner als i. Genau da liegt mein Problem. Es müsste aber doch so sein das i und j den Wert 6 annehmen dann die If Anweisung kommt und 6/6 =0 also wird die erste perfekte Zahl ausgegeben also die 6??


an sich erstmal nicht so ganz richtig
was man zu erst sieht ist folgendes
zwei geschachtelte for-loops
der äußere loop zählt "int i" von 1 bis 10'000 durch
innerhalb des äußeren loops wird für jeden durchgang eine lokale variable "int summe" angelegt
der innere loop durchläuft nun "int j" von 1 bis "i-1" und prüft dabei ob "i mod j == 0" ergibt, wenn ja wird "j" zu "summe" hinzuadiert

-> hier kommen wieder grundlagen ins spiel : "%" bedeutet MODULUS ... und MOD gibt den DIVISIONS-REST zurück ... also bei 4%6 = 4 ... der sinn dieser anweisung ist es um zu sehen ob "i" restlos durch "j" teilbar ist ... also ob "j" ein teiler von "i" ist ... und wenn ja wird dies zu "summe" hinzuaddiert > mathematischer grund-algorithmus einer "perfekten zahl"

ist der innere loop durch wird geprüft ob die summe aller gefundenen teiler gleich der zahl selbst ist , also ob "i" eine "perfekte zahl" ist ... wenn ja wird diese ausgegeben



Shakti hat gesagt.:


> Kann mir evtl. jemand erklären wir das Funktioniert ich blick da einfach nicht durch


habe ich eben getan als ich dir erklärt habe was man "auf den ersten blick sieht" wenn man sich den code anschaut



Shakti hat gesagt.:


> P.S. Was innere/ äußere Blöcke sind wurde nie gesagt auch was verschachtelte Schleifen sind wurde nichts von gesagt. Ich weiß es nur da ich mit einem Buch noch lerne.


weil das zu den oben erwähnten grundlagen vieler moderner sprachen gehört ... die der lehrer scheinbar vorraussetzt ...
wie ich anriss : es ist nicht gerade die aller beste idee sich direkt in die anwendungsentwicklung reinzuwerfen wenn man nicht vorher selbst mal mit sowas rumgespielt hat ... denn dann fehlen einem einfach wichtige grundlagen ...

die schuld immer auf die lehrkräfte schieben haut nun mal gerade bei diesem speziellen thema einfach nicht hin ... egal ob eine einfache erst-ausbildung oder ein komplexes studium ... wenn man selbst den kardinal-fehler begeht und komplett ohne vorkenntnisse da rein rennt ... ist man nun mal leider selbst schuld wenn man dabei auf die schnauze fliegt ...
und das meine ich jetzt nicht negativ oder abwertend sondern will dir jetzt lediglich im nachhinein klar machen : es wäre besser gewesen wenn du dich vorher mal so n gutes jahr bis ein paar jahre mit programmierung beschäftigt hättest ... anstatt jetzt von 0 auf 100 gleich in eine ausbildung zu schlittern in der irgendwie alle von dir eben genau das und damit verbundene grundlagen erwarten ...

deine einzige chance ist jetzt lediglich dich in der nächsten zeit intensiv mit dem lehr-material zu befassen ...


----------



## faetzminator (19. Nov 2012)

trääät hat gesagt.:


> anwendungsentwicklung ist ein sehr komplexes thema in das man auch in eine erst-ausbildung bereits vorkenntnisse mitbringen sollte ...
> einfach von 0 auf 100 sich da rein stürzen ist meist nie eine gute idee





trääät hat gesagt.:


> weil der lehrer sicherlich erwartet das wenn man in diesen berufszweig einsteigt bereits vorkenntnisse hat ... wenn auch nicht sonderlich umfangreich aber wenigstens die basics sollte man wirklich drauf haben ...





trääät hat gesagt.:


> [...] die der lehrer scheinbar vorraussetzt ...
> wie ich anriss : es ist nicht gerade die aller beste idee sich direkt in die anwendungsentwicklung reinzuwerfen wenn man nicht vorher selbst mal mit sowas rumgespielt hat ... denn dann fehlen einem einfach wichtige grundlagen ...



Bin überhaupt nicht dieser Meinung. Wie können nur immer wieder irgendwelche Typen behaupten, mann bräuchte für eine Grundbildung Vorwissen (abgesehen vom "normalen" schulischen Wissen)?
Ich hab in der CH eine Informatik-Ausbildung "genossen" und verstehe absolut, dass die meisten Lehrer/Dozenten einfach nichts drauf haben. Aber programmieren lernt man nunmal auch nicht in der BS, sondern im Betrieb bei der täglichen (Weiter-)Enwicklung von Projekten.
Müssen wir hier auf Azubis rumhacken? Zumindest hatte er im Erstpost bereits eine kleine Analyse des Codes, und dazu eine klare Frage...


----------



## trääät (19. Nov 2012)

ich kann es persönlich leider auch nicht nachvollziehen warum jemand der scheinbar so inkompetent ist lehrer / dozent für informatik / fachrichtung ist ...
aber es nun mal der fakt das ein großteil der lehrkräfte genau dieses punkt voll und ganz erfüllen ... worunter natürlich die schüler extrem zu leiden haben ...
sicher gibt es ausnahmen und wirklich kompetente fachkräfte ... aber das ist nun mal eher selten ...

und ich habe auch gar nicht auf TO rumgehackt ... sondern lediglich aufgezeigt was so "die normale regel" in punkto informatik ist ...

warum du ausgerechtet die stellen zitierst in denen ich darauf hinweise das es nun mal viele gibt die grundlagen einfach vorraussetzen kann ich nicht verstehen ... denn erlich : wäre ich lehrkraft in einer BS für informatik-azubis würde ich auch gewisse grundlagen (nicht java-spezifisch) vorraussetzen ... z.b. das man in der lage ist zwischen binär, oktal, dezimal und hexadezimal umzurechnen ohne das man dies vermitteln muss ... weil sowas nun mal wirklich elementare grundalgen sind und sicher niemand die zeit oder gar die lust hat sowas 40 mal zu erklären nur weil sich 40 azubis gedacht haben : hey , ich habe zwar kein plan davon aber ich will programmierer werden ... und so einen haufen würde ich dann auch ganz bewusst "abschießen" ...


----------



## bone2 (19. Nov 2012)

trääät hat gesagt.:


> denn erlich : wäre ich lehrkraft in einer BS für informatik-azubis würde ich auch gewisse grundlagen (nicht java-spezifisch) vorraussetzen ... z.b. das man in der lage ist zwischen binär, oktal, dezimal und hexadezimal umzurechnen ohne das man dies vermitteln muss ... weil sowas nun mal wirklich elementare grundalgen sind und sicher niemand die zeit oder gar die lust hat sowas 40 mal zu erklären nur weil sich 40 azubis gedacht haben : hey , ich habe zwar kein plan davon aber ich will programmierer werden ... und so einen haufen würde ich dann auch ganz bewusst "abschießen" ...


genau sowas lernt man aber in der BS und zwar bis zum erbrechen. die Lehrer haben ja von sonst nix ne ahnung, wie sollen sie da was vorraussetzen. wir haben im ersten jahr mit dem urigsten urschleim angefangen.
sie dürfen garnichts vorraussetzen. schließlich kannman auch ne ausbildung zum tischler machen ohne jemals ne säge in der hand gehabt zu haben.
wir hatten eine dabei die bisher mit computern nicht mehr als facebook gemacht hat und selbst die musste mitgeschleift werden.
Zitat Lehrer Anwendungsentwicklung 3. Jahr:
"Wo ist der Tabulator?"


----------



## TryToHelp (19. Nov 2012)

trääät hat gesagt.:


> ganz erlich : das war schon mal der erste fehler ...
> anwendungsentwicklung ist ein sehr komplexes thema in das man auch in eine erst-ausbildung bereits vorkenntnisse mitbringen sollte ...
> einfach von 0 auf 100 sich da rein stürzen ist meist nie eine gute idee
> ...


Ähm wieso das?
Ja es ist kompliziert, aber genau deswegen macht man ja eine Ausbildung und da nunmal Informatik in Deutschland leider noch kein Pflichtfach ist und größtenteils garnicht erst an den Schulen existiert (teilweiße wird da Word-Kurs als Info verkauft) kann man das also nicht als Vorraussetzungen nehmen.
Und ich hatte an meiner Schule kompetente Informatik Lehrer, also die gibt es schon ;-)


----------



## faetzminator (19. Nov 2012)

trääät hat gesagt.:


> und ich habe auch gar nicht auf TO rumgehackt ... sondern lediglich aufgezeigt was so "die normale regel" in punkto informatik ist ...


Also deine Einstellung gegenüber Azubis?
Tatsache ist, dass Dozenten meistens sch**sse sind. Tatsache ist ebenfalls, dass sich leider die Azubis privat nicht dafür interessieren. Tatsache ist aber auch, dass man schlichtweg für eine Berufslehre (zumindest in CH so genannt) kein spezielles Wissen mitbringen muss.



trääät hat gesagt.:


> warum du ausgerechtet die stellen zitierst in denen ich darauf hinweise das es nun mal viele gibt die grundlagen einfach vorraussetzen kann ich nicht verstehen


Wenn, dann sind das diese "Dozenten", und die sind - da sind wir gleicher Meinung - eh planlos...


trääät hat gesagt.:


> wäre ich lehrkraft in einer BS für informatik-azubis würde ich auch gewisse grundlagen (nicht java-spezifisch) vorraussetzen ... z.b. das man in der lage ist zwischen binär, oktal, dezimal und hexadezimal umzurechnen ohne das man dies vermitteln muss ...


Man lernt aber nunmal so was nicht im "normalen" Leben / der Schule. Wie willst du so was verlangen, wenn du nicht mal 5min erklären würdest, was Hex überhaupt ist?


trääät hat gesagt.:


> weil sowas nun mal wirklich elementare grundalgen sind und sicher niemand die zeit oder gar die lust hat sowas 40 mal zu erklären [...]


Darum gibts einen Dozenten vor 40 Azubis. Der kann das 1x erklären.

Deine Einstellung ist sicherlich nicht schlecht. Wenn du dich privat damit auseinander setzt und Interesse daran hast, bist du hoffentlich auch ein Programmierer mit gutem Hintergrundwissen. Aber das kann man nunmal nicht von Azubis verlangen.
Was würdest du sagen, wenn du dich als Koch-Azubi meldest, und die sagen dir ab, weil du noch nie eine Ente à la wasAuchImmer gekochst hast?
Abgesehen davon lernt man - zumindest in der CH - sogar solchen "Grümpel" wie Office in wochenlanger Arbeit (also wirklich von Word-Grundlagen zu den Word-Serienbriefe, Excel-Grundlagen bis Makros etc.).


----------



## hüteüberhüte (19. Nov 2012)

Hm, hätte vlt. so geschrieben:

```
package javaforum;

/**
 * @author hütte
 */
public abstract class AbstractPerfekteZahlen {

    public abstract void nächsteZahl(long zahl);

    public void nächsteZahlen(long bis) {
        for (long i = 6; i <= bis; i++) {
            long sum = 0;
            for (long j = 1; j <= i / 2; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (sum == i) {
                nächsteZahl(i);
            }
        }
    }

    public void nächsteZahlen(byte anzahl) {
        if (anzahl > 8) {
            throw new IllegalArgumentException(anzahl + " > 8");
        }
        for (long i = 6; anzahl > 0; i++) {
            long sum = 0;
            for (long j = 1; j <= i / 2; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (sum == i) {
                nächsteZahl(i);
                anzahl--;
            }
        }
    }

    public static void main(String[] args) {
        AbstractPerfekteZahlen perfekteZahlenImpl =
                new AbstractPerfekteZahlen() {

                    int i = 1;

                    @Override
                    public void nächsteZahl(long zahl) {
                        System.out.println(i++ + ". " + zahl);
                    }
                };
        perfekteZahlenImpl.nächsteZahlen(8128L);
        perfekteZahlenImpl.nächsteZahlen((byte) 4);
    }
}
```
Also nur bis i/2 rechnen lassen.

Bis 2.305.843.008.139.952.128 (8. Zahl) kann es sich aber ganz schön hinziehen. Mir fällt auf die Schnelle auch nicht ein, wie es schneller geht.


----------



## Shakti (19. Nov 2012)

So bin nun zuhause und bekomme einen kleinen Schock.

Zu erst einmal habe bis zum Fachabitur kein programmieren in der Schule gehabt. Mein Fachabi wollte ich gerne in der Richtung machen nur leider gab es sowas nicht in meiner Nähe.

Das man die Dinge die trääät da beschriebt vorrausetzt ist doch wohl totaler Blödsinn.

Zum Thema das auf einem "rumgehackt" wird. Ehrlich gesagt so fühlt man sich wenn man sich ein paar Antworten hier durchließt.

Das diese Ausbildung nun sehr schwer wird steht außer Frage aber ich werde das trotzdem durchziehen und *schaffen* :rtfm: 

Ob ich hier nochmal eine Frage stelle weiß ich ehrlich gesagt nicht.

Danke an die Leute die hier nicht der Meinung von trääät waren.


----------



## hüteüberhüte (19. Nov 2012)

Shakti hat gesagt.:


> Das man die Dinge die trääät da beschriebt vorrausetzt ist doch wohl totaler Blödsinn.



Also bei uns wirds vorausgesetzt. Warum aber so viele auf deinem Lehrer rumhaken, verstehe ich auch nicht. Aber das ist auch kein Grund, hier keine Fraagen mehr zu stellen.


----------



## faetzminator (20. Nov 2012)

hüteüberhüte hat gesagt.:


> Warum aber so viele auf deinem Lehrer rumhaken, verstehe ich auch nicht.


Ich hab nur gesagt, dass viele Dozenten in meiner BS oder ÜK einfach nichts drauf hatten, auf alle Fälle sind mir mehr von diesen negativ (~8?) als positiv (~4?) in Erinnerung. Nicht erwähnt die 2, 3 die irgendwie einfach... Dozenten waren!?
Es ist einfach krass, wenn ein Lehrer in der BS dir den C-Code auf Papier kopiert und bei [c]while ((x = foo.bar()) != y)[/c] o.ä. bei dir nachfragen, ob so was geht... Oder jener, der bei einer Prüfung zum Thema Lizenzen (mit WXP, GPL u.ä. als Beispiele) eine Antwort zu GPL falsch korrigierte und bei Vorweisung der Lizenz in en und de nur sagte: "im Zweifelsfall zählt mein Skript!".
Umgekehrt hatten wir Dozenten, welche für Prüfungen Pflichtenhefte vorlegten, z.B. "Ich finde auf dem Webshop einen Login (1 Punkt) und kann mich erfolgreich anmelden (3)." Diese waren tendenziell auch jene, welche fachlich um ein weites überzeugender waren als die anderen.


hüteüberhüte hat gesagt.:


> Aber das ist auch kein Grund, hier keine Fraagen mehr zu stellen.


Hoffentlich nicht


----------



## Trolllllll (20. Nov 2012)

Shakti hat gesagt.:


> So bin nun zuhause und bekomme einen kleinen Schock.
> 
> Zu erst einmal habe bis zum Fachabitur kein programmieren in der Schule gehabt. Mein Fachabi wollte ich gerne in der Richtung machen nur leider gab es sowas nicht in meiner Nähe.
> 
> Das man die Dinge die trääät da beschriebt vorrausetzt ist doch wohl totaler Blödsinn.


Wie gessagt, das kann ich mir nicht vorstellen, dass das vorraussetzungen sind, die sind es ja nicht mal beim Studium, da kann ich mir nicht vorstellen, das es bei einer Ausbildung so ist, und bei anderen Berufen wird es auch nicht vorausgesetzt, vielleicht nice to have, aber ich kenne genügend, die mit vorwissen in die BS gegangen sind und sich dort deswegen zutode gelangweilt haben und manchmal auch den unterricht halten durften, weil der Lehrer keine Lust hatte.


Shakti hat gesagt.:


> Zum Thema das auf einem "rumgehackt" wird. Ehrlich gesagt so fühlt man sich wenn man sich ein paar Antworten hier durchließt.


Ich möchte mich entschuldigen für meinen Ton, nur gibt es hier genügend, die mit solchen Fragen kommen, nur um schnell die Hausaufgabe gemacht zu bekommen ohne eigenen aufwand. Und bei deinem Eingangspost kam es mir so vor, als ob du dir nicht mal das Mathematische Prinzip der Perfekten Zahlen angeschaut hättest, was eine kurze suche bei google, den Wiki Artikel gezeigt hätte, der es recht einfach erklärt. Aber eventuell bin ich da von mir ausgegangen und nur weil er für mich sehr einleuchtent ist, muss er das nicht für jeden sein


Shakti hat gesagt.:


> Das diese Ausbildung nun sehr schwer wird steht außer Frage aber ich werde das trotzdem durchziehen und *schaffen* :rtfm:


Ich drücke dir auf jedenfall die Daumen und mit dem nötigen Interesse, ist es auf jedenfall auch ohne Vorkentnisse schaffbar


Shakti hat gesagt.:


> Ob ich hier nochmal eine Frage stelle weiß ich ehrlich gesagt nicht.
> 
> Danke an die Leute die hier nicht der Meinung von trääät waren.


Ich möchte mich nochmal für meine Antworten entschuldigen und werde auch weitere Fragen beantworten.


----------



## bone2 (20. Nov 2012)

hüteüberhüte hat gesagt.:


> Also bei uns wirds vorausgesetzt. Warum aber so viele auf deinem Lehrer rumhaken, verstehe ich auch nicht. Aber das ist auch kein Grund, hier keine Fraagen mehr zu stellen.


Ehrlich?
Die erste Woche in der Berufsschule haben wir ein AdditionsProgramm geschrieben. Mit fertigen, statischen IO Bibliotheken. Da gab es lediglich Variablen, weder Parameter oder gar wuhu Verzweigungen.
If-Else war die zweite Woche und Schleifen die Dritte.
Das erste OOP hatten wir im zweiten! Lehrjahr...

Unsere Lehrer waren durchweg schlecht, haben falsche Fakten präsentiert und manche sogar darauf beharrt. Selbst mit Quellennachweis war ihr von Unis/anderen Lehrern geklautes Skript noch richtig.



Shakti hat gesagt.:


> Ob ich hier nochmal eine Frage stelle weiß ich ehrlich gesagt nicht.


Willkommen im Internet  Frag einfach, irgendwer flamt, aber ne Anwort wirst du von jemanden trotzdem bekommen.


----------



## Shakti (20. Nov 2012)

Trolllllll hat gesagt.:


> Wie gessagt, das kann ich mir nicht vorstellen, dass das vorraussetzungen sind, die sind es ja nicht mal beim Studium, da kann ich mir nicht vorstellen, das es bei einer Ausbildung so ist, und bei anderen Berufen wird es auch nicht vorausgesetzt, vielleicht nice to have, aber ich kenne genügend, die mit vorwissen in die BS gegangen sind und sich dort deswegen zutode gelangweilt haben und manchmal auch den unterricht halten durften, weil der Lehrer keine Lust hatte.
> 
> Ich möchte mich entschuldigen für meinen Ton, nur gibt es hier genügend, die mit solchen Fragen kommen, nur um schnell die Hausaufgabe gemacht zu bekommen ohne eigenen aufwand. Und bei deinem Eingangspost kam es mir so vor, als ob du dir nicht mal das Mathematische Prinzip der Perfekten Zahlen angeschaut hättest, was eine kurze suche bei google, den Wiki Artikel gezeigt hätte, der es recht einfach erklärt. Aber eventuell bin ich da von mir ausgegangen und nur weil er für mich sehr einleuchtent ist, muss er das nicht für jeden sein
> 
> ...



Schön das du dich entschuldigt hast. Nebenbei das war keine Hausaufgabe oder so. Ich wusste schon was perfekte Zahlen sind nur kam ich einfach nicht mit dem Code klar  

Mal schauen wie die Zukunft aussehen wird


----------



## hüteüberhüte (20. Nov 2012)

bone2 hat gesagt.:


> Ehrlich?
> Die erste Woche in der Berufsschule haben wir ein AdditionsProgramm geschrieben. Mit fertigen, statischen IO Bibliotheken. Da gab es lediglich Variablen, weder Parameter oder gar wuhu Verzweigungen.
> If-Else war die zweite Woche und Schleifen die Dritte.
> Das erste OOP hatten wir im zweiten! Lehrjahr...



studiere an einer uni, da wird binär, oktal, dezimal, hexadezimal maximal in einer h behandelt.

Aber die Inhaltsangabe, die er eingangs aufgeführt hat, klingt doch sinnvoll und nicht danach, daß dort nichts gelehrt werden würde. Zu dem ihm gegebenen C-Code muss auch nicht viel gesagt werden, weil darin ja nur Variablen, Kontrollstrukturen u. ein paar arithmetische Operatoren vorkommen (inkls. einer einfachen Kaskade).


----------



## Trolllllll (20. Nov 2012)

hüteüberhüte hat gesagt.:


> studiere an einer uni, da wird binär, oktal, dezimal, hexadezimal maximal in einer h behandelt.
> ...



Ja aber er hat 1. nichts von einem studium erzählt, 2. ist das auch nicht an jeder uni so

Und eine Berufsschule ist nunmal nicht die Uni, sondt würde man dort schließlich auch seinen Bachelor oder Master oder Diplom bekommen, tut man aber nicht ;-) und was ich von Leuten gehört habe die auf die Berufsschule gehen, wird da bei vielen ziemlich viel die Basics gemacht


----------



## bone2 (20. Nov 2012)

Shakti hat gesagt.:


> Ausbildung zum Fachinformatiker





hüteüberhüte hat gesagt.:


> studiere an einer uni


da hätten wir das Problem ja gefunden.

Berufsschulen fangen in der Tat bei traurigen Basics an, damit eben jeder mitkommt, der noch nie nen Computer von innen gesehen hat und nur wegen dem Arbeitsamt da ist.
Unis fahren da ein ganz anderes, interessantes, forderndes Kaliber. Das bekomme ich nun leider nur noch von meinem, zum Glück guten, Arbeitgeber. da haben andere in meiner Klasse weniger Glück, die html zusammenklicken...
Was ich an der Uni in der ersten Woche hatte, hat in der BS das erste halbe jahr gefüllt.


----------

