download PDF (41MB) - Mike Schilli
download PDF (41MB) - Mike Schilli
download PDF (41MB) - Mike Schilli
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.