C "Nennen sie die drei wesentlichen Datentypen"

@andr_gin:
Prinzipiell ist dein 1,2,3,4 nicht falsch - aber, du redest von Repräsentationen. Gefragt sind aber Datentypen - und die haben zusätzlich eine Semantik und sollten anhand derer betrachtet werden unabhängig von ihrer Repräsentation.

NTBS (nullterminated bytestrings) sind in C IMHO sehr wohl ein Datentyp. Dazu reicht z.B. sich printf anzuschauen, welches %s für Zeichenketten anbietet. Auch der 8086er (IIRC) Prozessor bietet bereits die Möglichkeit "strings" zu verarbeiten, auch wenn die Bedeutung eine etwas andere ist.

@muckelzwerg:
Und wenn der Lehrer B*llsh*t erzählt, soll man ihm den dann auch wieder hintenrein füttern? Nur keine Kritik anbringen und in Duckmeuser-Haltung alles als gottgegeben annehmen? (das ist keine absolute Aussage (sondern sogar überspitzt) und soll nur zum Nachdenken anregen).
Pädagogisch in meinen Augen eine Katastrophe, wenn das eigene Nachdenken in der Schule und das Anbringen von (berechtigter) Kritik abgetötet wird. Bereitet einen nicht gerade auf's Leben vor und senkt das Selbstwertgefühl, wenn man merkt "ist ja eh egal was ich sage".
Richtig ist es meiner Meinung nach, eine (angemessene, im richtigen Ton angebrachte) Kritik gelten zu lassen und den für in diesem Beispiel für m4x wichtigen Punkt zur besseren Note gibt. Macht vielleicht nicht im Endeffekt nicht viel aus, aber ist einfach für's Selbstwertgefühl wichtig. Es wird in der IT-Landschaft doch immer wieder von den immer wichtiger werdenden Softskills geredet - und hier werden sie schon untergraben.
 
Zuletzt bearbeitet:
Ich weiss zwar nicht, inwiefern hier noch auf die ursprüngliche Fragestellung des Lehrers eingegangen wird, aber ich versuchs mal nochmal und beziehe mich dann auf die eine oder andere "Vermutung" in dem einen oder anderen Reply:

Der Lehrer frage DIE wesentlichen DREI Datentypen in C ab! Wesentlich ist dabei eine zugegeben krude Wortwahl aber der Rest des Satzes zeigt recht deutlich, daß es ihm um die 3 elementaren Datentypen in C geht. Diese sind Charakter, Ganzzahl und Fliesspunkt. ( Festpunkt gibt es m.E. in C nur als Typableitung oder hat sich da was getan? ) Seine "Übersetzung" in char, int, float ist daher richtig.

Ein Pointer/Zeiger (Referenz) ist in dem Sinne kein DATENtyp, sondern ein Referenztyp, der in Folge den DATEN-Typ der referenzierten Variable im Speicherbereich annimmt oder explizit typisiert wird durch CASTING. (Man beachte, der Lehrer fragte nach DATENtypen)

BOOL ist ein BYTE-Datentyp und m.W. erst mit C99 in C standardisiert worden. BOOL gehört insofern nicht zu den elemetaren Datentypen der Standard-C, sondern der C99 Spezifikation.


Mein Fazit: Der Lehrer hat "wesentlich" nicht unbedingt falsch, allerhöchstens unpräzise angewandt. Die Antwort wäre jedoch in jedem Fall CHAR,INT,FLOAT. Alle anderen Datentypen sind m.W. in C und auch etlichen anderen Sprachkonstrukten aufbauend auf diesen 3 Typen. Zusätzlich zu den Datentypen existieren Referenztypen.

Bool ist ein Byte typ ... also kann ich BOOL nicht gerade als elementar bezeichnen, wohl jedoch als wesentlich ;)

My 2 cents... Elioth
 
Zuletzt bearbeitet:
7H3 N4C3R schrieb:
@andr_gin:

NTBS (nullterminated bytestrings) sind in C IMHO sehr wohl ein Datentyp. Dazu reicht z.B. sich printf anzuschauen, welches %s für Zeichenketten anbietet. Auch der 8086er (IIRC) Prozessor bietet bereits die Möglichkeit "strings" zu verarbeiten, auch wenn die Bedeutung eine etwas andere ist.

Soweit ich mich noch an meine alten C Zeiten erinnern kann, handelt es sich hier lediglich um ein simples Array von chars, das als Pointer übergeben wird. Das mit dem 0er am Schluss ist bestenfalls eine Konvention für Zeichketten, da in C ein Array nur als Pointer auf das erste Element übergeben wird und die Länge nicht auslesbar ist und man nicht jedes Mal die Länge mitübergeben will. Von einem Datentyp kann man hier jedoch beim Besten Willen nicht reden, wenn beim Prototyp der Funktion der Parameter schon explizit als char* angegeben wird. Das hat nichts mit interner Verarbeitung zu tun, sondern die Strings werden eben wie char* behandelt.

Und wenn der Lehrer B*llsh*t erzählt, soll man ihm den dann auch wieder hintenrein füttern? Nur keine Kritik anbringen und in Duckmeuser-Haltung alles als gottgegeben annehmen? (das ist keine absolute Aussage (sondern sogar überspitzt) und soll nur zum Nachdenken anregen).
Pädagogisch in meinen Augen eine Katastrophe, wenn das eigene Nachdenken in der Schule und das Anbringen von (berechtigter) Kritik abgetötet wird. Bereitet einen nicht gerade auf's Leben vor und senkt das Selbstwertgefühl, wenn man merkt "ist ja eh egal was ich sage".
Richtig ist es meiner Meinung nach, eine (angemessene, im richtigen Ton angebrachte) Kritik gelten zu lassen und den für in diesem Beispiel für m4x wichtigen Punkt zur besseren Note gibt. Macht vielleicht nicht im Endeffekt nicht viel aus, aber ist einfach für's Selbstwertgefühl wichtig. Es wird in der IT-Landschaft doch immer wieder von den immer wichtiger werdenden Softskills geredet - und hier werden sie schon untergraben.

Da bin ich total deiner Meinung. Ich würde als Lehrer sogar solche Schüler mit besseren Noten belohnen, da diese anscheinend sich wirklich mit dem Stoff auseinander setzen und mitdenken und auch mitarbeiten anstatt nur sinnlos alles auswendig zu lernen. Das bringt in der Realität nämlich genau gar nichts. Da hat man niemanden, der einem alles vorsetzt. Da muss man schon selbst mitdenken, wenn man nicht nur der Dokumentierdodel sein will und selbst das ist schon ein Problem, wenn man die Zusammenhänge nicht versteht und alles 1:1 erklärt bekommen muss.
 
@Elioth:
So, jetzt muss ich mich doch mal auslassen und sehr pedantisch werden.

Der C-Standard redet von Typen, nicht von Datentypen. Eine Unterscheidung in "Datentypen" und "Referenztypen" gibt es nicht. (ich habe zwar vorher auch Datentypen gesagt, was fachlich nicht 100% korrekt ist, gemeint war Typ) Ein pointer type hat zwar einen referenced type, ist aber ein eigener Typ.
Wenn du außerdem von C99 redest, musst du konsequenter Weise auch von C89 reden oder C89+94er Amandements. C99 ist außerdem eine konsequente Erweiterung und zusätzlich inzwischen 10 (!) Jahre alt. Daher anzunehmen, dass mit C "C89" gemeint ist, ist daher wohl ziemlich streitbar.

Davon abgesehen ist _Bool ein eigener Typ in C(99). Welche Repräsentation er hat ist dabei völlig wurscht. Es ist ein eigener Typ. In 6.2.5/14 wird das nochmal explizit deutlich gemacht.

Die vorher (von Darii) erwähnten object types, function types und incomplete types sind Gruppierungen von Typen, aber keine Typen selbst.

Neben den arithmetic types (ist mir jetzt zu müßig, die alle aufzuzählen), gibt es auch noch folgende:
enumeration type
void type
array type
union type
function type
pointer type

(alles nachzulesen inklusive der vollständigen Typ-Liste im Standard unter 6.2.5 Types)

Warum man diese drei (char, int, float) heraus picken sollte, was dabei float besser als double macht, und wie man ohne alle anderen ein vernünftiges Programm schreiben sollte, wir mir wohl ein Rätsel bleiben. Nebenbei unterscheidet der C-Standard keine Wichtigkeit von Typen. Von daher zerbricht die Ursprungsfrage vom Lehrer spätestens hier.

Für die Leute, die noch nicht so weit sind, sich nicht für C/Programmieren/Computer interessieren (was völlig okay ist) ist es zwar einfach, das im Unterricht gelernte wiederzukäuen, aber interessierten da einen Abzug zu geben ist IMHO wie schon gesagt ein pädagogisches und fachliches Fail.

Edit:
Ich will damit nicht sagen, dass ein Lehrer, der C unterrichtet, den C-Standard auswendig und im Schlaf runterbeten können muss. Er muss ja C auch garnicht perfekt können - dafür hat er ganz andere Präferenzen. Eventuell sollte man diese, zugegebener Maßen sehr interessante, Diskussion vielleicht eher in PoG weiterführen.
 
Zuletzt bearbeitet:
Ich denke, die Diskussion läuft mittlerweile arg aus dem Ruder.
Sicherlich soll weder der Lehrer noch der Schüler den C-Standard aus dem Kopf herbeten können. Der Lehrer hat aus dem, was er als Grundlage für dieses Fach hat, die für ihn(!) wichtigen Punkte herausgearbeitet, er hat also abstrahiert, um den Stoff nicht zu komplex werden zu lassen. Bei den (Daten-)Typen hat er nunmal Zeichen, Ganzzahl und Gleitkommazahl in ihrer üblichen Darstellung gewählt. Und nur diese hat er abgefragt und es gibt in dem Kontext nur eine korrekte Antwort.
Ich kann dem Lehrer dahingehend keinen Vorwurf machen. Das einzige, was ihm anzulasten ist, ist die Tatsache, dass er keine Diskussion unterstützt. Wenn ein Schüler sich Gedanken macht und andere Typen als wichtig erachtet, dann ist das auch in Ordnung und kann als Basis für einen Gedankenaustausch dienen.
Man sollte hier nicht einfach den C-Standard nehmen und pedantisch darauf achten, dass auch nicht davon abgewichen wird.
 
Ich finde diese Diskussion auch bissle überflüßig. Er ist der Lehrer und du hast die Arschkarte (@TE). Genau wie im Büro, da hast du bei deinem Vorgesetzten auch immer die Arschkarte. Wenn der Vorgesetzte sagt: Das und das ist so, dann ist das so.
Ich kann mich auch bestens mit meinem Chef über sowas (Thema) streiten.
Dein Interesse an der "Wahrheit" finde ich aber sehr gut. Lies dir die Sachen trotzdem an, auch wenn du bei deinem Lehrer an der falschen Stelle für Diskussionen bist.

gruß
hostile
 
So, ich meld mich nun auch nochmal zu Wort ;)

Es ist schon richtig, dass wir im Unterricht nur int, float, double und char gelernt haben.
Also im Endeffekt int, double und char die sinnigsten wären.
Mir geht es hier auch nicht um den einen Punkt hin oder her - klar hät ichs irgendwo besser gelernt wärs sicher nicht zu dieser Diskussion gekommen (wobei ich mir eben während der Arbeit mit der Deklaration von char in C nicht sicher war und mit der von float bzw. double eben schon).
Aber Fakt ist einfach, dass der Lehrer zu keiner Diskussion fähig war und sofort böse wurde als ich ihn drauf ansprach und meinte, dass es halt nicht die korrekteste Fragestellung ist.
Gut er als Dipl. Mathematiker möchte sich wohl nicht mit einem "kleinen" Oberstufenschüler auseinandersetzen und klar in der BOS 12 mit hochgerechnet einer Schulstunde Informatik pro Woche wird man sicher auch nicht zum C-Profi.
Es stört mich einfach nur, da ich halt trotzdem etwas ;) Fachwissen besitze [Ausbildung zum techn. Assistent für Informatik, damals auch mit 1,5 als bester abgeschlossen (ja es ist nicht die beste Ausbildung, eigentlich der größte Mist, aber trotzdem um einiges mehr Fachwissen vorhanden als beim Großteil der Klasse)] und damit sozusagen meine Note noch eher verschlechtere als zu verbessern, da nur stures auswendig gelerntes zählt und kein Hintergrundwissen.

Hier muss ich auch andr_gin zustimmen, ich mein in der Arbeitswelt hilft es mir auch nichts, wenn z. B. jeden Befehl einer Programmiersprache auswendig kenne, aber keinerlei Ahnung habe wie ich diese verstehen, anwenden und verknüpfen soll bei einem Problem.

@hostile noch: Ein Lehrer hat hier wohl doch nicht ganz die Macht eines Vorgesetzten, da dieses Fach mit Technologie zusammenfällt und in der Gesamtnote nur 1:2 zählt, lege ich mich doch gerne mit ihm an.
Es ist schön und gut wenn sich die letzten zwei Schuljahre die er nun an der Schule ist noch niemand bei ihm diesbezüglich beschwert hat, aber die Lösung ist es sicher auch nicht einfach "ja" zu sagen, wieder zurück in die Masse zu gehen und sich am Arsch lecken zu lassen.
Die Autorität des Lehrers schüchtert mich da nicht ein, auf diesem Thema rumzuhaken bis er sich wenigstens auf eine Diskussion einlässt.
Man sollte hier nur den Unterschied zwischen übertriebener Beschwerde und interessierter Nachfrage sehen ;)

Naja, wünsch euch nen schönes Wochenende ;)
 
Zuletzt bearbeitet:
Ich würde mir hier einfach meinen Teil denken und es gut sein lassen. Was glaubst du könnte hier realistisch gesehen passieren:

1.) Er bleibt stur bei seiner Meinung und es ist ihm einfach egal bzw. er wimmelt dich ab => ganze Aktion ist sinnlos
2.) Er gleibt stur und gibt dir eine schlechtere Note, wenn du ihn zu viel nervst => eher kontraproduktiv
3.) Er denkt noch einmal darüber nach und kommt zu dem Entschluss, dass die Fragestellung doch nicht ganz korrekt war. Das kann er natürlich nachträglich nicht zugeben, weil er sonst komplett das Gesicht verliert => bringt für dich immer noch nichts

So wirklich etwas zu gewinnen gibt es hier nicht.
 
Sicher ist mir bewusst, dass ich, wenn ich weiter Aufstand leiste, eine schlechtere mündliche Note bekommen werde.
Dass wird mich aber eben nicht davon abhalten etwas zu sagen.
Es geht mir hier ja nicht um diesen einen Punkt sondern um den Unterricht allgemein.
Leider gibts wohl einfach noch zu viele Lehrer dieser Art, bzw. was noch trauriger ist eben auch Schüler die sich nur am Arsch lecken lassen.
So ändert sich halt nie was.
Schön und gut wenn es der Mehrheit reicht immer im Strom zu schwimmen und nur nichts dagegen sagen (weil das könnte ja Probleme bzw. Streit verursachen, was ja dann sofort ein schlechtes Licht auf jmd. wirft).
Ich will mir halt nichts gefallen lassen, was ich unbegründet/falsch finde.

Naja gute Nacht jetzt. ;)
 
Danke hostile. Es scheint ja sonst keiner zu verstehen. Hier wird gemeckert wie bei Heise, hauptsache man kann sich über irgendwas aufregen und muss nicht zugeben, dass man unrecht hat.
Es gibt keine "Die drei Datentypen", welches weltweit Bestand hätte. Das so eine Frage immer vom Kontext, also dem Unterricht, der Situation, der Verwendung etc. abhängt, das ist eigentlich nicht so schwer zu verstehen. Bei dieser Frage gibt es kein richtig und falsch. Wenn man fragt "Wieviele Menschen leben in Deutschland?", dann gibt es diese Antwort. (Die vermutlich niemand weiß.)
Die drei wesentlichen Datentypen ist viel weicher. Und wenn überhaupt etwas gut passt, dann genau das, was der Lehrer verlangt hat. Zeichen mit 1Byte Chars, die man letztlich auch als Ganzzahlen interpretieren kann. Ganze Zahlen mit 2Byte Integern, und Fließkommazahlen mit 4Byte (single precission) Floats.

Unabhängig davon, kann es echt nicht sein, dass man wochenlang über sowas diskutiert und sich aufregt.
(Mal abgesehen davon, dass eine Diskussion, bei der es um den Unterricht und das Verhalten des Lehrers geht, hier im Programmierboard nun gar nichts verloren hat.)
Meint ihr denn die Leute, die Ahnung haben und in ihren Bereich "was geworden sind", haben Erfolg gehabt, weil sie immer überall mit dem Kopf gegengerannt sind und dann seitenweise Meckerposts im Internet geschrieben haben? Nein, sicher nicht.
Für jemanden, "der weitergehendes Interesse hat" (blabla, schei$$ Eigenlob) ist ein solcher Aufriss und so ein Stress bei etwas so Banalem wirklich der berühmte "Epic Fail". Damit kommt man nämlich nicht weiter. Und mit der "Ich schwimme halt nicht mit dem Strom"-Selbstlüge genausowenig.

-- -- muckelzwerg
 
Zurück
Oben