Forum: PC-Programmierung Ideen für Gruppenarbeit in C gesucht (Studium)


von Patrick B. (p51d)


Lesenswert?

Hallo
Ich bin auf der Suche nach Ideen für eine kleine Gruppenarbeit (max 4 
Personen, und etwa 80h pro Person).
Wie die Gruppe aussieht, kann uch noch nicht sagen, aber es hat 
mindestens 2 Elektroniker mit > 3 Jahren Programmiererfahrung und dann 
halt noch 2 die erst 5 Monate programmieren.

Der Lehrer hat uns da auch kleine Beispiele gezeigt (Notenverwaltung für 
eine Lehrerin und Spiele). Die einzige Auflage ist, das es in C sein 
soll.

Lieber würde ich das alles in C# oder C++ machen, da hier schon die 
ganze GUI viel rascher und einfacher aufgebaut werden kann.
Ich habe mich einmal mit der WinAPI versucht, und mich hats fast 
überschlagen. Im Vergleich zu einer VC++ Anwendung wäre ein Projekt 
schon nur die GUI zu erstellen (extrem mühsam und aufwendig). Dazu kommt 
noch, dass mir in C nur OpenGL als Grafik-Treiber bekannt ist, und da 
müsste man sich auch noch einarbeiten...

Oder gibts ne Möglichkei einfach auf DirectX oder OpenGL mit C 
zuzugreifen, damit man grafisch auch was machen kann?

Was habt Ihr do für Ideen? Ist für mich irgendwie noch schwirig, da sehr 
unterschidliche Kentnisse vorhanden sind, und es trotzdem spannend sein 
soll.

Gruss

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Hallo,

bei den Vorgaben, mach doch was mit Retro-Computing. Da passt C, eine 
GUI kannst du dir schenken oder einfach mit ncurse machen. Außerdem ist 
das immer wieder gern gesehen, es hat einen Lerneffekt und es gibt 
etliche Infos.

Grüße aus Berlin

von Amateur (Gast)


Lesenswert?

Sieh vor allem zu, dass das Ganze so einfach wie möglich wird.

Die zwei Typen mit längerer Erfahrung werden wohl weniger Probleme 
haben, aber für einen (zwei) Anfänger gibt es wohl kaum etwas 
Schwierigeres als mit anderen zusammen zu arbeiten bzw. zu 
programmieren.

Berücksichtigst Du das von Vornherein, indem z.B. einer gar nicht 
Programmiert, sondern die Arbeit synchronisiert, so könnte etwas dabei 
herauskommen. Außerdem könnte der auch, bei eventuellen Defiziten der 
zwei Anfänger, aushelfen.

von Seano L. (Gast)


Lesenswert?

Patrick B. schrieb:
> Oder gibts ne Möglichkei einfach auf DirectX oder OpenGL mit C
> zuzugreifen, damit man grafisch auch was machen kann?
Also OpenGL geht problemlos mit reinem C, Eingaben/Steuerung machst du 
über Tastatur. Mit GLUT kannst du sogar einfache GUIs unter OpenGL 
basteln, für euer Projekt reicht das dicke.

von Lutz H. (luhe)


Lesenswert?

Hallo

Ich wünsche mir einen Logikanalyser ( Software für das stm32 429 DISCO)
  8  bis 16 Kanäle.

Viel Spaß

von Rolf Magnus (Gast)


Lesenswert?

GUI in C könnte man auch mit GTK+ machen.
http://www.gtk.org/
Da wird man allerdings auch Zeit zur Einarbeitung brauchen, und so schön 
wie mit einer Sprache, die OOP-Konzepte eingebaut hat, ist es nicht. 
Wenn du auf der anderen Seite direkt OpenGL nimmst, mußt du halt alles 
selber machen.

von Dennis S. (eltio)


Lesenswert?

Wenn ihr wirklich soviel Erfahrung habt, sollte folgendes machbar sein: 
per µC ein paar Messwerte aufnehmen (Temperaturwächter) und mit GTK eine 
Auswertung programmieren. So als Beispiel.

Gruß Dennis

von Robert D. (d0rni)


Lesenswert?

Wir haben in der Schule mit dem STK500 gegeneinander "Schiffe versenken" 
gespielt. Kommunikation via RS232, die LED stellten die abgeschossenen 
Boote dar. Auch möglich wäre die Implementierung einer virtuellen Matrix 
auf der die Boote stehen, wie auf dem Kästchenpapier. Dabei wird eben 
die Koordinate übertragen, Rückmeldung Treffer etc. Nur mal so als 
Gedankenanstoß. Im Brainstorming gibt's die Erarbeitung eines 
gemeinsamen Protokolls, etc...

von c progger (Gast)


Lesenswert?

C ist vor allem für Leute, die viel mit C# oder C++ programmieren, eine 
gute Abwechslung, um nicht zu vergessen, dass Computer eigentlich keine 
Klassen kennen ;-)

Du kannst z.B. ein kleines Bildbearbeitungsprogramm schreiben.
Das kann man auch gut auf Personen aufteilen.
Einer kümmert sich darum, Bitmaps einzulesen. Das ist recht einfach 
möglich.
Ein anderer schaut, wie man JPEG einlesen kann. Dazu gibt es fertige 
Bibliotheken, die man "nur" richtig bedienen muss.
Ein anderer schreibt einfache Bildbearbeitungsalgorithmen, z.B. 
Farbe->Graustufen Umwandlung, Kantenerkennung, vergrößern/verkleiner...
Ein anderer baut eine einfache GUI drumherum. Auch in C kann man GUIs 
erstellen. Gerade GTK bietet sich da an. Aber auch WinAPI ist nicht so 
schwierig, so lange es eine Einfache GUI bleibt.
Und du darfst nicht vergessen, dass sich einfache GUIs auch in C leicht 
realisieren lassen.

Das schöne an solchen Aufgaben ist, dass man die Ergebnisse auch sieht.
Wenn die Graustufenumwandlung eines Bildes nicht klappt, sieht man das 
sofort. Und wenn es klappt, so ist die Freude um so größer, da man es ja 
sieht.


Ein Tipp noch: auch wenn Visual Studio sehr mächtig ist, nehmt lieber 
CodeBlocks. Das ist anfängerfreundlich, und Dinge wie GTK lassen sich da 
sehr schnell integrieren.
Außerdem hat Microsoft keinen wirklichen C Compiler (bzw. nur einen sehr 
alten), während du mit CodeBlocks automatisch den gnu Compiler 
verwendest. Dort hast du die Wahl zwischen C oder C++ Programmen, und 
wenn du C wünscht, so ist das dann auch echtes C, und nicht ein C/C++ 
Mischmasch Compiler.

von ollib. (Gast)


Lesenswert?

wenn ich 80h pro Person lese und 5 Monate Erfahrung, dürfte eine 
Bildbearbeitung wohl den Rahmen sprengen. Ich würde mir nicht zuviel 
vornehmen..

von ptr (Gast)


Lesenswert?

Eine einfache Bildbearbeitung wäre eigentlich genau das Richtige für 
euch. Lässt sich hervorragend erweitern und ist relativ leicht zu 
schreiben, wenn man den Ball flach hält, denn die Algorithmen sind schon 
erfunden und müssen nur noch implementiert werden.

von Stephan (Gast)


Lesenswert?

Entwickelt halt einen kleinen Interpreter für eine Kommandozeile auf 
einem uC, z.B. mit den Möglichkeiten der Linux Bash (ohne & etc.). Das 
ist ziemlich einfach möglich, trotzdem anspruchsvoll und C die 
natürliche Wahl. Alles, was GUI ist, würde ich gleich vergessen. Gerade 
unerfahrene Programmierer produzieren da Bastelcode, der die anderen zum 
Wahnsinn treibt.
S.

von Patrick B. (p51d)


Lesenswert?

Erstmals danke für die Infos...

Ich denke einmal, dass das Hauptproblem ist, die Synchronisation und das 
Vorgehen. Ich zum Beispiel habe mitlerweile 4 Jahre Erfahrung mit C und 
C++ (und noch ein paar anderen Sprachen, dort aber nur rudimentär). C 
auf einem uC ist absolut kein Problem, auch grössere Projekte. Nur die 
Bedingung ist, dass es auf dem PC läuft (also nichts mit uC). Da bin ich 
selber nicht so erfahren mit C. Ich habe gestern und heute während rund 
10h versucht, eine GUI zu schreiben, welche mir ein Sudoku einlesen kann 
und die Lösung anzeigen. Die logischen Algorythmen (also nicht stupides 
rekursives einsetzen) hatte ich in 4h (Möglichkeiten löschen, hidden 
singles, hidden pairs, hidden tripple). So kann ich ein Sudoku bis Stufe 
sehr schwer lösen.
Aber dann habe ich mich mit der WinAPI und C rund 10h herumgeschlagen, 
und kann die einfachsten Dinge noch nicht so richtig (Farbe einer 
speziellen Zelle zur laufzeit anpassen), was ich mit VC++ in ~30min 
hätte erledigt gehabt.
Achja, wir verwenden in der Schule Eclipse mit MinGW Linker und GCC 
Compiler.

Ich kann es leider nicht so abschätzen, wieviel Zeit so ein Projekt 
nunmal wirklich braucht (eben desswegen, weil es unerfahrene hat). 
Andere Jahrgänge hatten Snake, Tetris, Space invader oder wirklich 
nützliche Tools gemacht. Wobei ich mir Tetris als sehr schwer vorstelle 
(wie, und wo darf jetzt etwas gedreht werden, kann man es noch so 
"hineinschieben"...)

Gruss

von Dennis S. (eltio)


Lesenswert?

Kein Mensch schreibt heutzutage eine GUI mit der WinAPI... schau dir 
lieber mal das schon erwähnte GTK+ an um ein Gefühl für einen 
"moderneren" Weg zu bekommen. Über das konkrete Framework für grafische 
Oberflächen existieren hier ab hundert verschiedene Meinungen. ;-)

Gruß Dennis

von chris_ (Gast)


Lesenswert?

Ihr könntet so was in C versuchen:
Beitrag "Projekt: Virtuelle Instrumente an serielle Schnittstelle"
Da kann jeder in der Gruppe ein eigenes virtuelles Instrument entwerfen.

Als Grundlage für die Graphikbibliothek könntet Ihr das hier vewenden:
Beitrag "Grafische Programmierung (Linux + ATmega)"

von 45redfdf (Gast)


Lesenswert?

Patrick B. schrieb:
> Erstmals danke für die Infos...
>
> Ich denke einmal, dass das Hauptproblem ist, die Synchronisation und das
> Vorgehen. Ich zum Beispiel habe mitlerweile 4 Jahre Erfahrung mit C und
> C++ (und noch ein paar anderen Sprachen, dort aber nur rudimentär). C
> auf einem uC ist absolut kein Problem, auch grössere Projekte. Nur die
> Bedingung ist, dass es auf dem PC läuft (also nichts mit uC). Da bin ich
> selber nicht so erfahren mit C. Ich habe gestern und heute während rund
> 10h versucht, eine GUI zu schreiben, welche mir ein Sudoku einlesen kann
> und die Lösung anzeigen. Die logischen Algorythmen (also nicht stupides
> rekursives einsetzen) hatte ich in 4h (Möglichkeiten löschen, hidden
> singles, hidden pairs, hidden tripple). So kann ich ein Sudoku bis Stufe
> sehr schwer lösen.
> Aber dann habe ich mich mit der WinAPI und C rund 10h herumgeschlagen,
> und kann die einfachsten Dinge noch nicht so richtig (Farbe einer
> speziellen Zelle zur laufzeit anpassen), was ich mit VC++ in ~30min
> hätte erledigt gehabt.
> Achja, wir verwenden in der Schule Eclipse mit MinGW Linker und GCC
> Compiler.
>
> Ich kann es leider nicht so abschätzen, wieviel Zeit so ein Projekt
> nunmal wirklich braucht (eben desswegen, weil es unerfahrene hat).
> Andere Jahrgänge hatten Snake, Tetris, Space invader oder wirklich
> nützliche Tools gemacht. Wobei ich mir Tetris als sehr schwer vorstelle
> (wie, und wo darf jetzt etwas gedreht werden, kann man es noch so
> "hineinschieben"...)
>
> Gruss

ich würde das nicht so negativ sehen, dass ein paar Leute noch Anfänger 
sind.
Auf der Uni geht es nunmal ums lernen. Du kannst wiederum lernen, als 
Erfahrener das Projekt zu planen und die Aufgaben so zu vergeben, dass 
jeder damit zurechtkommt. Mit deiner Programmiererfahrung kannst du das 
sicher gut einschätzen.
Im Beruf ist es ja auch nicht anders, da bekommt man immer wieder mal 
neue Kollegen, die man einzuschulen hat. Und meist lernen die Leute 
schnell, ich geb denen eigentlich immer Aufgaben, an denen sie wachsen 
können. Sie kämpfen damit anfangs zwar etwas, aber zum Schluss sind sie 
dann doch immer sehr stolz darauf, das geschafft zu haben.

Ansosnten, warum muss es denn mit GUI sein?
Sieh dir mal unter Linux die Kommandozeilenprogramme an. Die haben alle 
keine GUI, sind aber trotzdem extrem mächtig. Vor allem weil man diese 
Programme auch in Skripten verwenden kann.

Zum oben genannten Vorschlag mit der Bildverarbeitung:
Kannst ja ein Kommandozeilenprogramm machen, dem übergibt man den 
Dateinamen sowie einen Befehl, was es damit machen soll, z.B. 
verkleinern.
Das Programm hätte damit sogar einen Nutzen, wenn du wieder mal die 2000 
Urlaubsfotos auf einen Schlag verkleinern möchtest.

Viele Bildverarbeitungsalgorithmen sind teilweise recht einfach, sobald 
du mal eine Matrix mit den Pixeln geladen hast.
Hier beispielsweise eine Funktion, die die Pixel ab einem Schwellwert 
weiß bzw. schwarz macht. Und sonst gibts auch einige Algorithmen die 
ziemlich einfach zu realisieren sind.

// Grenzwert
void Threshold(CImage& img, uint8_t value)
{
    MakeGray(img);

    for (uint32_t x=0;x<img->GetWidth();x++)
    {
        for (uint32_t y=0;y<img->GetHeight();y++)
        {
            Pixel& px = img->PixelAt(x,y);
            px.gray = px.gray > value ? 255 : 0;
        }
    }
}

von Pit (Gast)


Lesenswert?

Patrick B. schrieb:
>  C auf einem uC ist absolut kein Problem, auch grössere Projekte. Nur die
> Bedingung ist, dass es auf dem PC läuft (also nichts mit uC). Da bin ich
> selber nicht so erfahren mit C

Naja wenn du wirklich so erfahren bist in C, dann sollte dir klar sein, 
dass C = C ist. Die Sprache ändert sich ja nicht, nur weil sie auf einem 
anderen Prozessor läuft. Naja auch egal.
Bildverarbeitung halte ich auch für ein schönes Projekt. Vor allem kann 
man einiges draufsetzen, wenn man noch Zeit hat.
Ihr könntet euch aber auch mal in der Welt der Elektrotechnik umschauen. 
Sachen wie einen Widerstandsrechner, Sicherung anhand von Strom und 
Verlegeart berechnen, .... Halt alles was man so typischerweise in einem 
Tabellenbuch nachschlagen muss.

von Vlad T. (vlad_tepesch)


Lesenswert?

ihr könntet was bauen, was ein paar verschiedene Zelluläre Automaten 
darstellt. Die Anfänger fangen mit einem einfacheren, wie Wolframs 
1d-Universum, Ameise oder Nagel-Schreckenberg-Verkehrssimulation. Die 
erfahreneren Game Of Life oder WaTor.
Und vorher macht man sich gemeinsam über das Framework Gedanken, so dass 
die einzelnen Automaten bestenfalls beliebig austauschbare Module mit 
glecihem Interface sind, die die Berechnungen ausführen und das 
Framework sich um die Triggerung der Einezelschritte und der 
Darstellung, sowie Parametermanipulation kümmert.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?


von Patrick B. (p51d)


Lesenswert?

Pit schrieb:
> Naja wenn du wirklich so erfahren bist in C, dann sollte dir klar sein,
> dass C = C ist. Die Sprache ändert sich ja nicht, nur weil sie auf einem
> anderen Prozessor läuft. Naja auch egal.

Dem stimme ich zu, nur ist aus meiner Sicht C auf einem uC, bei dem man 
die volle Kontrolle hat und auch direkt auf die Register zugreifen muss, 
um etwas zu erreichen (Bit-Manipulation) oder das Programmieren auf 
einem OS wie Windows, bei dem man sich um irgendwelche Treiber, GUIs 
Windows-Forms, Threads und das Sheduling (ok, das sollte man 
berücksichtigen, aber muss man sich nicht darum kümmern) oder das 
Arbeiten mit einem Grafikprozessor doch ein kleiner Unterschied. Die 
Sprache bleibt gleich, aber das Einsatzgebiet äntert doch so einiges.

Wegstaben Verbuchsler schrieb:
> Patrick B. schrieb:
>> Algorythmen
>
> http://www.korrekturen.de/beliebte_fehler/algorythmus.shtml

Ups, danke für den Hinweis.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.