28.01.2013 Aufrufe

download PDF (41MB) - Mike Schilli

download PDF (41MB) - Mike Schilli

download PDF (41MB) - Mike Schilli

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

GRUNDLAGEN<br />

BASIC (HP-75) 10 INPUT 'gib Zahl'; I<br />

20 K= I * 3<br />

30 DISP 'Ergebnis:';K<br />

40 END<br />

FORTRAN 77:<br />

INTEGER I,K<br />

W R I T E ( * , ' ( " g i b Z a h l ' ) ' )<br />

R E A D ( * , ' ( 1 5 ) ' ) I<br />

K= I * 3<br />

W R I T E ( * , ' ( " E r g e b n i s : " , 1 6 ) ' ) K<br />

STOP<br />

END<br />

C: #include <br />

mainO<br />

{<br />

/* Variable deklarieren */<br />

int i,k;<br />

/* hier beginnt das Programm */<br />

p r i n t f ( " g i b Z a h l " ) ;<br />

scanf ("%d",S:i) ;<br />

k = i * 3 ;<br />

printf("Ergebnis:%d",k);<br />

return(0);<br />

} L i s t i n g 1 ( b l . c )<br />

v*************************************<br />

* ein sehr langer Kommantar<br />

* weiter mit dem Kommentar<br />

* h i e r s o i l e r f e r t i g s e i n<br />

*************************************/<br />

Kommentare diirfen nicht geschachtelt<br />

werden:<br />

/*<br />

/* verboten<br />

*/<br />

*/<br />

Listing 2<br />

#include <br />

mainO<br />

{<br />

int i;<br />

printf("gib Zahl ");<br />

scanf("%d",fci);<br />

printf("\nfertig");<br />

return(i);<br />

}<br />

Listing 3 (b2.c)<br />

b2<br />

©echo off<br />

if errorlevel 3 goto 13<br />

if errorlevel 2 goto 12<br />

if errorlevel 1 goto 11<br />

:11<br />

echo level 1<br />

goto end<br />

:12<br />

echo level 2<br />

goto end<br />

:13<br />

echo level 3<br />

:end<br />

Listing 4 (b2c.bat)<br />

6 PRISMA 6/89<br />

Negatives aufgelistet werden<br />

soil. C ist ganz ohne Zweifel<br />

alsSpracheeine hervorragendeWahlfiir<br />

viele Programmieraufgaben<br />

und der Autor wur<br />

de diese Artikelserie nicht verfassen,<br />

wenn er nicht von C im<br />

Rahmen seiner Zweckbestimmung<br />

iiberzeugt ware. Mit C<br />

kann man exzellent Systemdienstprogramme<br />

schreiben<br />

(den 1001. Editor oder den<br />

527. Compiler), aber auch fiir<br />

nicht zu groBe technisch-wissenschaftliche<br />

Probleme ist C<br />

gutgeeignet. Zweifelsohne sehr<br />

gut geeignet als Allround-Sprache<br />

(aber nicht als Universalsprache,<br />

die alles andere<br />

iiberfliissig macht!!) auch fiir<br />

den Hausgebrauch. Unschlagbar<br />

fur Menuprogramme ala<br />

GEM, Windows oder OS/2<br />

Presentation-Manager. Fein fiir<br />

Drucker- und Plottertreiberprogramme.<br />

Pradestiniert fiir<br />

UNIX-Programme, da samtli<br />

che UNIX-Systemdienste als<br />

C-Functions erreichbar sind.<br />

3. Ein erstes Programm<br />

Betrachten wir nochmal das<br />

obige Beispiel b1 .c (Listing 1).<br />

Zunachst handelt es sich um<br />

ein Hauptprogramm. Dieses<br />

muB "main" heiBen, andere<br />

Namensind nicht zulassig. Die<br />

nachgeschalteten teeren Klammern<br />

nach main besagen, daB<br />

hier keine Argumente von der<br />

Commandline iibernommen<br />

werden. C ist blockstrukturtert,<br />

die Klammern | und) entsprechen<br />

etwa dem Pascal begin/<br />

end. Jede Variable muB de<br />

klariert werden: i und k sind<br />

vom Typ int, der wie gesagt,<br />

maschinenabhangig ist. Jeder<br />

Befehl wird mit ; beendet.<br />

Kommentare werden in /*.. */<br />

eingeschlossen; sie konnen<br />

iiber mehrere Zeilen gehen<br />

(Listing 2)<br />

Gerechnet wird prinzipiell wie<br />

in BASIC, FORTRAN und<br />

Pascal, aber es gibt keinen<br />

Potenzoperator wie in FORT<br />

RAN oder BASIC. Das wurde<br />

mit der Bibliotheksfunktion<br />

pow(x.y) erledigt werden.<br />

printf() und scanf() sind die<br />

Standard-Functionen fiir Einund<br />

Ausgabe iiber Konsole.<br />

Weitere Beispiele folgen.<br />

Da selbst das Hauptprogramm<br />

main als Function behandelt<br />

wird, ist es gut (aber nicht<br />

zwingend notig), es mit return(O)<br />

zu beenden. Damit liefert das<br />

Hauptprogramm den Wert 0<br />

an das Environment des Betriebsystems<br />

zuriick; dort kann<br />

man z.B. bei DOS bzw. OS/2<br />

mit IF ERRORLEVEL .. wei<br />

tere Aktionen einleiten. Bei<br />

spiel b2.c (Listing 3).<br />

Dazu kann nun ein Batchfile<br />

b2c.bat gehoren, etwa wie folgt<br />

(Listing 4).<br />

Was ist im Gegensatz zu an<br />

deren Sprachen zu beachten:<br />

Zwei ganz entschektende Dinge<br />

fiir den Beginner: C ist<br />

casesens'itiv, I ist nicht i! Es ist<br />

iiblich, daB in C generell kleingeschrieben<br />

wird, aberesgeht<br />

auch:<br />

int I,K;<br />

K = I * 3 ; u s w .<br />

Die Funktionen printf() und<br />

scanf() mussen kleingeschrteben<br />

werden, da sie so in der<br />

Bibliothek definiert sind. Das<br />

muB nicht immer so sein: Mitunter<br />

werden Funktionen heu<br />

te "gemischf definiert, z.B. heiBt<br />

eine OS/2-Funktbn, die einen<br />

String mit Bildschirmattributen<br />

an eine definierte Position<br />

schreibt: VioWrtCharStrAtt<br />

(kein Witz, muB genau so auf<br />

gerufen werden).<br />

Zweitens: C lasst so ztemlich<br />

alles zu.obsinnvollodernicht!<br />

Vereinfacht: Wahrend Pascal<br />

praktisch jede Unsauberkeit<br />

aufspiirt, ist FORTRAN bereits<br />

viel freiziigiger und C erlaubt<br />

sogut wie jede auch unsinnige<br />

Konstruktion. Wenn daher ein<br />

C-Programm den Compiler<br />

einwandf rei passiert, heiBt das<br />

noch lange nicht, daB esfunktionsfahiger<br />

Code ist. Um<br />

Unsauberkeiten aufzuspuren,<br />

gibt es in UNIX das Dienstprogramm<br />

lint, das verscharften<br />

Systaxcheck durchfiihrt.<br />

Es soil das obige Beispielprogramm<br />

iibersetzt werden. Das<br />

geht beispielsweise so (Programmquelle<br />

moge bl.c hei<br />

Ben):<br />

Turbo-C (DOS): mit EDITeditieren,<br />

mit Crtl-K-D beenden,<br />

auf COMPILE gehen, dort<br />

Computerclub Deutschland e.V.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!