Zum Inhalt springen

Delphi <> C unterschiede


tfw

Empfohlene Beiträge

hi leute,

wir programmieren bei uns in der schule zurzeit mit delphi.

ich hab jetzt zu weihnachten einen asuro roboter (link) geschenkt bekommen.

soviel ich weiß wird der mit c programiert.

kann mir jmd. von euch kurz die grundlegenden unterschiede zwischen delphi und c erklären?

und was ist denn der vorteil von c?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal das, was wikipedia dazu sagt:

Unterschiede zu C [bearbeiten]

* keine Nullterminierten Strings – Standard Pascal hatte zwar String-Literale aber keinen Typ string (s. oben). In einigen späteren Versionen werden Strings nicht durch ein Null-Byte terminiert, sondern es wird die Länge des Strings im ersten Character String[0]) gespeichert und über die Funktion length(<Bezeichner>) abgefragt. Somit beginnt das erste Nutzzeichen bei String[1]. Da in vielen Implementierungen (z. B. Turbo Pascal) für die Speicherung der Stringlänge nur ein Byte vorgesehen war, ist die Länge auf 255 Zeichen begrenzt. Diese Einschränkung galt als die markanteste überhaupt. Im Extended Pascal Standard wurden Strings als Scheme-Typ definiert. Auch hier muss die Kapazität angegeben werden, sie wird aber in runde Klammern geschrieben und es gibt kein formales Limit: String(10240).

* strikte Trennung zwischen Funktionen und Prozeduren – Pascal trennt strikt zwischen einer Funktion (Rückgabewert) und einer Prozedur (kein Rückgabewert, Typ void in C). Eine Funktion darf nicht als Prozedur aufgerufen werden – d. h. der Rückgabewert muss stets entgegen genommen werden.

* parameterlose Funktionen/Prozeduren – Verfügt eine Prozedur/Funktion über keine Parameter, so darf beim Aufruf dieser keine Leerklammer () gesetzt werden.

* Deklarationen – Variablen und Typdefinitionen dürfen nicht innerhalb der Implementierung einer Funktion/Prozedur (zwischen BEGIN und END) deklariert werden – dies muss in einem speziellen Block im Definitionsteil geschehen. Anders als C erlaubt Pascal die Deklarationen von lokalen Funktionen/Prozeduren.

* Namen – In Pascal ist die Groß-/Kleinschreibung bei Namen (Typen, Konstanten, Variablen, Funktionen/Prozeduren) irrelevant.

* Blockmarkierungen – Pascal verwendet zur Kennzeichnung von Blöcken die Schlüsselwörter BEGIN und END statt { und } wie in C.

* Semikolon – Das Semikolon wird nicht wie in C als Befehls-Abschluss interpretiert, sondern als Trennzeichen zwischen Bezeichnern. Vor einem END oder UNTIL kann es somit weg gelassen werden. Vor einem ELSE darf es i. d. R. gar nicht stehen, da sonst der IF-Zweig als abgeschlossen angesehen werden würde. Ein Fall, wo es vor dem ELSE steht (und stehen muss), ist am Ende einer CASE-Auflistung.

* Delimiter – Für String-Literale und Character-Literale wird das selbe Begrenzungszeichen (Delimiter), nämlich der Apostroph verwendet

* Zuweisungen – Zuweisungen an Variablen werden durch die Sequenz := definiert, das Gleichheitszeichen allein dient nur dem Vergleich.

* Operatoren – Pascal verwendet die Operatoren and, or, not, div (nur für Integer, bei Real ist es /), mod und <> anstatt der C Operatoren &&, ||, !, /, % und !=. Die „Shortcut“-Funktionalität von && und || in C (wenn beim and der linke Teil FALSE ist, wird der rechte nicht mehr ausgewertet) schloss N. Wirth explizit aus (Die Reihenfolge der Auswertung von Expressions obliegt dem Compiler). In Standard Pascal gibt es keine Bitoperationen für INTEGER (wie &, |, ^ und ~ von C), aber stattdessen den Typ set of (mit den Operatoren *, + und - für Durchschnitt, Vereinigung und Mengendifferenz).

* strenge Typentrennung – u. a. ist CHAR nicht austauschbar mit INTEGER, die Umwandlung muss mit den Funktionen ORD() und CHR() durchgeführt werden. Explizite Typumwandlungen, sog. type casts wurden erst mit Turbo Pascal eingeführt. In Standard Pascal musste dafür ein Umweg über Variantenrecords (union in C) genommen werden.

Bis auf den letzten Punkt mit den "type casts", paßt das auch auf Delphi.

C wird eher bei hardware-nahen Sachen verwendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
  • 1 Jahr später...

Danke

Ich glaub ich werd mich dann doch an c gewöhnen.

Bei der Erstellung einer hex-datei tritt jetzt aber bei mir ein fehler auf. Ich hatte beim notepad die tools make und clean eingerichtet, wenn ich aber nun test.c mit make convertieren will, so heißt es unten

asuro.d: Permission denied

cc1.exe: Invalid argument: when writing output to

make: *** [asuro.d] Error 1.

die Anleitung scherzt da nur das beim beispielprogramm kein fehler auftritt

könnt ihr mir sagen wie sich der fehler beheben liesse?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...