Member since Apr 2011
33 posts
|
![]()
Subject: 2007-07-SPiC-KlausurEEIML Beispielklausur
Guten Tag,
in der Beispielklausur http://www4.informatik.uni-erlangen.de/Lehre/WS11/V_GSPIC/… Aufgabe 2a) steht: "Die Funktion soll bei ungültigen Werten für what oder int_nr nichts tun." Was passiert nun bei der Musterlösung, wenn man etwas ungültiges für what eingibt? Müsste dieser Fall nicht durch ein return am Ende der Funktion abgefangen werden oder geht C dann automatisch aus der Funktion raus? Kleine Frage am Rande: Wird das unsigned charArray verwendet, um Platz im Speicher zu sparen? Wäre es ein Fehler gewesen, ein intArray zu verwenden? Gruß |
Member since May 2011
331 posts
|
![]() Ähnliche Beispiele findest du in Kapitel 5. Auf dem ATmega zeigt die Verwendung von int, dass der Programmierer zu wenig Ahnung von seiner Plattform hat. Es hätte aber wohl keinen Punkt Abzug gegeben, weil das Programm immer noch funktioniert. Deutlich schöner wäre übrigens die Verwendung von uint8_t gewesen. Warum das so ist, darf hier gerne diskutiert werden. |
Member since May 2011
31 posts
|
![]()
In reply to post #1
Ich bin mir nicht sicher, ob ich deine Frage richtig verstanden habe, aber in C (wie in den meisten anderen Sprachen auch) gilt: Wenn die schließende geschweifte Klammer einer Funktionsdefinition mit Rückgabetyp void erreicht wird, wird die Funktion verlassen. In void-Funktionen braucht man also normalerweise keine return-Anweisung, außer man will "mitten in der Funktion" die Funktion verlassen, z. B. aufgrund einer erfüllten Bedingung. Alles klar? |
Member since Apr 2011
33 posts
|
![]()
@Steppenwolf
Ja, genau das habe ich gemeint. Dankeschön. |
Member since Nov 2011
36 posts
|
![]()
Subject: 2007-07-SPiC-KlausurEEIML Beispielklausur
Ich hätte auch mal ein paar Fragen zu dieser Aufgabe und zwar der 2 b)
Wieso ist in der Musterlösung main als int main(int argc, char **argv) definiert? Ich hätte jetzt einfach void main(void){..} geschrieben, ginge das auch? Außerdem hätte ich für die Variablen sensor und lastmw einfach uint8_t statt unsigned char genommen, da der Port ja nur Werte von 0-255 liefert, ist das richtig? Danke schonmal für die Antwort! |
Member since May 2011
331 posts
|
![]()
@andi91: Das sind noch Altlasten aus die SP-Zeiten (Die entsprechende Vorlesung für Informatiker). _Etwas vereinfacht_:
Laut C-Standerd ist "main" als
|
Member since Oct 2010
53 posts
|
![]()
In reply to post #5
uint8_t und unsigned char sind dasselbe. Ersteres ist natürlich kürzer und damit weniger Schreibarbeit in der Klausur. ![]() |
Member since Nov 2011
36 posts
|
![]()
Alles klar, vielen Dank für die Antworten!!!
|
Member since May 2011
331 posts
|
![]()
In reply to post #7
Wenn wir gerade dabei sind: Das gilt nur bei char, weil das eines der wenigen C-typen ist, von denen man genau weiß wie groß sie sind. Bei fast allen anderen gibt es nur Mindestgrößen und die tatsächliche Größe hängt von der Laune des Compilerpogrammierers ab. Siehe auch http://en.wikipedia.org/wiki/C_data_types |
Member since Nov 2011
36 posts
|
![]()
Mal angenommen in der Programmieraufgabe ist nicht stdint.h inkdludiert, dürfen wir dann trotzdem uint8_t usw schreiben?
|
Member since Oct 2010
53 posts
|
![]()
Klar. Wenn du ganz auf Nummer sicher gehen willst, kannst du auch das fehlende #include ergänzen.
![]() |
Powered by the Unclassified NewsBoard software, 20110527-dev,
© 2003-8 by Yves Goergen