[Progra] Aufgabe- Programmieren

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Aufgabe- Programmieren

Beitragvon paco89 » 24.03.11 11:29

hey,

brauch folgende hilfe...bin bei einer aufgabe stehengeblieben:

Implementieren Sie ein Java-Programm GeradeUngerade, das eine beliebige Anzahl von ganzen Zahlen als Eingabe erhält. Das Programm soll diese Zahlenmenge in gerade und ungerade Zahlen unterteilen und diese getrennt voneinander ausgeben.
Entwerfen und Implementieren Sie neben der main-Methode spezielle Methoden, die zusammen die Funktionalität der Programms ergeben und verwenden Sie diese in der main-Methode.


wie sieht der code dsafür aus? steh wirklich aufm schlauch....
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: Aufgabe- Programmieren

Beitragvon Coolcat » 24.03.11 11:42

wie sieht der code dsafür aus? steh wirklich aufm schlauch....

Also ich vermute du willst erst mal keine Musterlösung sondern einen Weg wie du selbst zur Lösung kommst.

Man sollte immer versuchen ein Problem in kleinere Teilprobleme zu brechen. Dann kannst du jedes Teilproblem für sich lösen. Pseudocode wäre z.B. sowas:
Code: Alles auswählen
const int FINDE_UNGERADE = 1;
const int FINDE_GERADE = 0;

int anzahl = nachAnzahlFragen();
int[] zahlen = zahlenEinlesen(anzahl);
int[] ungerade = findeZahlen(zahlen, FINDE_UNGERADE);
int[] gerade = findeZahlen(zahlen, FINDE_GERADE);
System.out.println("ungerade Zahlen:");
ausgeben(ungerade);
System.out.println("gerade Zahlen:");
ausgeben(gerade);
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon paco89 » 24.03.11 11:55

muss man da nicht an den anfang "public class static void main " etc. schreiben...???

edit: danke für die antwort...
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: Aufgabe- Programmieren

Beitragvon Coolcat » 24.03.11 12:06

muss man da nicht an den anfang "public class static void main " etc. schreiben...???

Ja, musst du. Ich gesagt das wäre Pseudocode (*).....nicht das dies valides Java wäre ;)

(*) bevor die Frage aufkommt, Pseudocode ist keine offizielle Programmiersprache. Man wählt einfach die Syntax die gerade am besten passt und verzichtet auf alle unwesentlichen Details...manchmal formuliert man Dinge auch einfach nur umgangssprachlich aus. :pcfreak:
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon paco89 » 24.03.11 12:18

okay...und wie würde das jetzt komplett aussehen? also mit allem drum und dran?
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: Aufgabe- Programmieren

Beitragvon Coolcat » 24.03.11 12:38

Ok, hier eine einfache Implementierung. Das ganze ist natürlich weder effizient noch sonst was. Bitte beachte das ein Programm selbst implementieren 100mal mehr bringt als ein gegebenes Programm zu verstehen!
Tipp: Schau dir das Programm an, verstehe es und implementiere das ganze in ein paar Tagen nochmal selbst ohne die Vorlage.


GeradeUngerade.java:
Code: Alles auswählen
public class GeradeUngerade {
   private static final int FINDE_UNGERADE = 1;
   private static final int FINDE_GERADE = 0;

   public static void main(String[] args) {
      int anzahl = nachAnzahlFragen();
      int[] zahlen = zahlenEinlesen(anzahl);
      int[] ungerade = findeZahlen(zahlen, FINDE_UNGERADE);
      int[] gerade = findeZahlen(zahlen, FINDE_GERADE);
      System.out.println("ungerade Zahlen:");
      ausgeben(ungerade);
      System.out.println("gerade Zahlen:");
      ausgeben(gerade);
   }

   private static int nachAnzahlFragen() {
      System.out.print("Anzahl Zahlen? ");
      return Util.readInt();
   }

   private static int[] zahlenEinlesen(int anzahl) {
      System.out.println("Bitte "+anzahl+" Zahlen eingeben:");
      int[] zahlen = new int[anzahl];
      for (int i=0; i<anzahl; ++i) {
         zahlen[i] = Util.readInt();
      }
      return zahlen;
   }

   private static int[] findeZahlen(int[] zahlen, int modus) {
      // zahlen zählen
      int anzahl = 0;
      for (int i=0; i<zahlen.length; ++i) {
         if (zahlen[i] % 2 == modus) {
            ++anzahl;
         }
      }

      // zahlen kopieren
      int[] ergebnis = new int[anzahl];
      int j = 0;
      for (int i=0; i<zahlen.length; ++i) {
         if (zahlen[i] % 2 == modus) {
            ergebnis[j] = zahlen[i];
            ++j;
         }
      }
      return ergebnis;
   }

   private static void ausgeben(int[] zahlen) {
      for (int i=0; i<zahlen.length; ++i) {
         System.out.println(zahlen[i]);
      }
   }
}


Die folgende oder eine ähnliche Klasse wird meist vom Lehrstuhl gestellt um das einlesen von Daten zu vereinfachen. In diesem Fall muss die Util.java im selben Verzeichnis liegen. Diese Klasse kannst du für den Anfang einfach benutzen ohne die Implementierung zu verstehen.

Util.java:
Code: Alles auswählen
/* Util
 * Diese Hilfsklasse stellt einige nuetzliche Methoden zur Verfuegung.
 *
 * Martin Weusten, 21.08.2006
 */

import java.io.*;
import java.util.Random;

public class Util {

   // Liest einen String von der Eingabe.
   public static String readString() {
      try {
         return input.readLine();
      }
      catch (IOException e) {
         System.err.println("IO-Fehler.");
         return "";
      }
   }

   // Liest einen Integer von der Eingabe.
   // Sofern kein Integer eingegeben wird (z.B. Buchstaben etc.), wird um erneute Eingabe gebeten.
   public static int readInt() {
      while (true) {
         try {
            return Integer.parseInt(readString());
         }
         catch (NumberFormatException e) {
            System.err.println("Bitte eine Integer-Zahl eingeben.");   
         }
      }
   }

   // Liest eine Float-Zahl von der Eingabe.
   // Sofern kein Float eingegeben wird (z.B. Buchstaben etc.), wird um erneute Eingabe gebeten.
   public static float readFloat() {
      while (true) {
         try {
            return Float.parseFloat(readString());
         }
         catch (NumberFormatException e) {
            System.err.println("Bitte eine Float-Zahl eingeben.");   
         }
      }
   }

   // Gibt eine Zufallszahl x zurueck, mit 0 <= x < grenze
   public static int random(int grenze) {
      return rnd.nextInt(grenze);
   }


   private static Random rnd = new Random();
   private static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
}


Hier noch der Programmablauf:
Code: Alles auswählen
[coolcat@q9300 Java]$ javac GeradeUngerade.java
[coolcat@q9300 Java]$ java GeradeUngerade
Anzahl Zahlen? 10
Bitte 10 Zahlen eingeben:
0
1
2
3
4
5
6
7
8
9
ungerade Zahlen:
1
3
5
7
9
gerade Zahlen:
0
2
4
6
8
[coolcat@q9300 Java]$
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon Coolcat » 24.03.11 15:51

Nachtrag:
Sofern du das nicht sowieso schon tust empfehle ich dir DRINGEND am Informatik-Vorkurs teilzunehmen. Im Gegensatz zum Info-Vorkurs zum Winter ist der Vorkurs im Sommer SPEZIELL für Informatiker! Du wirst mit den Leuten die im Winter angefangen haben die gleichen Vorlesungen besuchen. Alles jetzt im Wintersemester durch genommen wurde wird nun mehr oder weniger vorausgesetzt.

Vorteile:
1. Da lernst du Informatiker kennen die auch gerade anfangen!
2. eineinhalb Wochen Crash-Kurs im Programmieren
3. zwei Tage Crash-Kurs zu diskreten Strukturen ("Mathe")

Der Kurs läuft bereits seit Montag. Er endet am Donnerstag, den 31. März 2011. Eigentlich muss man sicher vorher anmelden, aber lieb fragen ob man noch einsteigen darf kostet nix. Des weiteren sind die Materialien und Lösungen online verfügbar.
Webseite: http://www-lufgi3.informatik.rwth-aache ... /index.php


Edit: Ich sehe gerade, dass die obige Übungsaufgabe der Aufgabe 7 aus dem Vorkurs entspricht....der Kurs ist dir also offensichtlich bekannt wenn du nicht sogar schon darin sitzt ;)
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon paco89 » 24.03.11 18:59

ja, ich konnte aber nur die ersten tage daran teilnehmen...ähm..wie sehr brauche ich den stoff aus dem vorkurs für das spätere studium? da ich zum sommersemester 2011 anfangen werde, wird zunächst einmal datenstrukturen und algorithmen vorkommen. programmieren ist doch erst im 2. semester, oder? also im WiSe .

aber für datenstrukturen etc. muss ich best. programmieren können, oder?

edit: ich habe vorher noch nie programmiert, sehe die dinger wie fallunterscheidungen etc. zum allerersten mal....

in vielen foren hab ich gelesen, dass man VOR einem infstudium keine programmierkenntnisse braucht...vielmehr würde es ein mathematiklastiger studiengang sein. und da ich kein reines mathestudium wollte, habe ich info gewählt....und jetzt als ich vor ein paar tagen im vorkurs saß, hab ich gesehen, dass die meisten programmcodes schreiben, als wären es briefe.

irgwie bin ich durcheinander....aber ans aufgeben denk ich net, weil ich den teil "diskrete strukturen" gelesen hab, und der wiederum fälllt mir sehr leicht...

edit(2): hab im internet das buch "java ist auch eine insel" heruntergeladen...und versuch mir das jetzt selber beizubringen...aber um ehrlich zu sein, man kommt sich schon richtig blöd vor, wenn man als einziger die programmieraufgaben nicht schafft....
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: Aufgabe- Programmieren

Beitragvon C-Otto » 24.03.11 19:06

Es gibt wenige, die vorher noch kein Programm geschrieben haben, aber diese Studis gibt es - da bist du nicht allein. Der eigentliche Plan ist, dass man im ersten Semester durch die Vorlesung Programmierung an das Thema herangeführt wird, die Vorlesung Datenstrukturen und Algorithmen baut dann auf dem Wissen auf. Wenn du im Sommersemester anfängst, ist das natürlich etwas anders. Ich würde dir empfehlen, mit dem genannten Buch und vielleicht auch den Vorlesungsunterlagen (siehe Homepage zur Programmierungs-Vorlesung bzw. den Lernraum) das nötige Wissen nachzuholen - das hilft dann auch klar dabei, im Winter 2011/2012 die Programmierungs-Vorlesung selber zu hören. Wenn du mit beispielsweise Diskrete Strukturen wenig Probleme hast, hast du einen Vorteil gegenüber vielen anderen Studis!

Viel Erfolg,
Carsten
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon paco89 » 24.03.11 19:13

tja, wie schon genannt...mit dem mathematik anteil hab ich keine schwierigkeiten...(oder besser: es liegt mir eher als programmieren), aber diese woche hat mich schon ein bissl eingeschüchtert, weil ich ein programmieranfänger bin....

edit: weil "datenstrukturen und algorithmen" darauf basiert, bin ich dann nicht eher im nachteil, weil ich 1. gar nix übers programmieren weiß und 2. erst programmiervorlesungen im nächsten semester bekommen werde ???????
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: Aufgabe- Programmieren

Beitragvon MartinL » 24.03.11 19:28

Was Carsten meint ist, dass du im Bereich Mathematik dann eher einen Vorteil hast und sich das mit dem Nachteil wohl ein wenig ausgleicht.

Ansonsten kann ich dich in sofern ein wenig trösten als dass Programmieren am Anfang für alle schwer ist. Das ist ein spezielle Art zu denken, die man sich erstmal angewöhnen muss. Wie gut man das dann irgendwann kann ist reine Übungssache. Guck dir die Grundlagen mal an. Fang damit an einfache Programme zu schreiben und irgendwann wirst du auch die komplexeren Zusammenhänge verstehen. Die von dir genannte Aufgabe ist wegen der notwendigen Verwendung von Arrays vielleicht nicht ganz einsteigertauglich.

Guck dir einfach mal in Ruhe das Buch und die ersten Schritte an und arbeite dich dann Schritt für Schritt vorwärts. Lass dich nicht davon frustrieren, dass nicht immer alles sofort klappt. Die Leute bei denen du siehst, dass es sofort klappt saßen vor ein paar Jahren auch da und haben sich geärgert, dass Dinge nicht so wollen wie sie es wollen ;)
MartinL
 
Beiträge: 531
Registriert: 23.01.07 20:48
Studiert seit: WS 06/07
Anwendungsfach: Mathe

Re: Aufgabe- Programmieren

Beitragvon Coolcat » 24.03.11 19:34

edit: weil "datenstrukturen und algorithmen" darauf basiert, bin ich dann nicht eher im nachteil, weil ich 1. gar nix übers programmieren weiß und 2. erst programmiervorlesungen im nächsten semester bekommen werde ???????

Die Programmierungsvorlesung läuft regulär im WS. Man hat nicht die Kapazitäten diese Vorlesung im WS und SS anzubieten. Als Kompromiss bietet man eben diesen Vorkurs an der einem eben die wichtigsten Dinge beibringt. Nicht umsonst wird der Kurs ja auch dringend empfohlen, sollte dir auch der Studienberater gesagt haben.

aber diese woche hat mich schon ein bissl eingeschüchtert, weil ich ein programmieranfänger bin....

Für jemanden der schon mal programmiert hat sind diese Aufgaben Kinderkram. ABER, für Programmier-Anfänger sind die Aufgaben wirklich schwer! Mach dir keine Sorgen, das geht jedem Anfänger so, es liegt nicht an dir :) Nicht aufgeben, versuche zu verstehen/formulieren was du eigentlich genau du nicht verstehst und höre nicht auf die Hiwis/Tutoren mit dummen Fragen zu löchern! Die werden dafür bezahlt! (Und die ganz dummen Fragen kann man zur Not hier im Forum stellen...)

weil ich den teil "diskrete strukturen" gelesen hab, und der wiederum fälllt mir sehr leicht...

Das fällt vielen, wie meine Vorredner schon sagten, eher schwer. Da sollte es doch leicht sein ein paar andere Erstis zu finden die dir Progra beibringen, wenn du ihnen die Geheimnisse der diskreten Strukturen zeigst, oder?
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon AGo » 24.03.11 22:27

UNd noch nen Punkt zu DaStru: Das wird dieses Semester von Prof. Rossmanith gelesen, in sofern hast du Glück, da sind nicht sonderlich viele Programieraufgaben zu erwarten (as in: weniger als bei anderen Profen), vergleiche auch die Aufgaben der letzten Runde von ihm
Benutzeravatar
AGo
0x41476F
 
Beiträge: 2181
Registriert: 09.09.05 18:21
Wohnort: Awf
Studiengang: Informatik (Dipl.)
Anwendungsfach: BWL

Re: Aufgabe- Programmieren

Beitragvon cracki » 30.03.11 13:05

"I suppose if what you said had any merit it would occasion hostility." -- Kenny Tilton
Frische Vorlesungen! -- video.rwth-aachen.de
Benutzeravatar
cracki
 
Beiträge: 537
Registriert: 22.02.08 14:51
Wohnort: Aachen
Studiengang: Informatik (M.Sc.)
Studiert seit: ?
Anwendungsfach: Medizin

Re: Aufgabe- Programmieren

Beitragvon paco89 » 30.03.11 13:42

wo kann man solche videos und andere ähnliche finden, cracki? hast du das persönlich aufgenommen oder gibt es das schon auf ner seite der rwth ??? (von der ich natürlich wie immer nix weiß)




LG
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Nächste

Zurück zu Praktische Informatik