Ubungspaket 7 ¨
Angemessenes Formatieren von C-Programmen
Ubungsziele: ¨
1. Gute Layout-Struktur durch Einr¨ ucken 2. Richtiges Verwenden von Kommentaren Skript:
Kapitel: 19 Semester:
Wintersemester 2021/22 Betreuer:
Thomas, Tim und Ralf Synopsis:
Das Kodieren eines Algorithmus in ein C-Programm und das Eintip- pen in den Rechner ist eigentlich gar nicht so problematisch. Schwierig wird’s nur bei der Fehlersuche, wenn das Programm nicht das macht, was es machen soll. Noch schwieriger wird es, wenn dann der Betreuer
” mal eben“ den Fehler finden soll. Hier helfen Kommentare und ange-
messenes Einr¨ ucken, was wir hier ein wenig ¨ uben wollen.
Teil I: Stoffwiederholung
Aufgabe 1: Kommentare
In der Programmiersprache C gibt es zwei M¨oglichkeiten, Kommentare zu verwenden.
Erkl¨are kurz die Syntax und zeige ein Beispiel.
M¨oglichkeit 1:
Syntax
Beispiel
M¨oglichkeit 2:
Syntax
Beispiel
Aufgabe 2: Geschachtelte Kommentare
Erkl¨are kurz, wie man Kommentare schachteln kann und was dabei passiert.
Aufgabe 3: Angemessenes Einr¨ ucken
Erkl¨are kurz in eigenen Worten, warum wir als Lehrpersonal so sehr auf eine angemessene Form des Einr¨uckens Wert legen.
Aufgabe 4: Recherche
Recherchiere etwa f¨unf bis zehn Minuten im Web zum Thema
”Einr¨ucken in C“ und notiere deine zwei Favoriten. M¨ogliche Schlagw¨orter sind: einruecken c programm
7-2 Wintersemester 2021/22, Einf¨uhrung in die Praktische Informatik
Teil II: Quiz
Aufgabe 1: Finden von Kommentaren
Im folgenden (recht sinnfreien) Text befinden sich einige Kommentare. Schaue dir die Texte an und unterstreiche alle Kommentare einschließlich der
”Kommentarklammern“. Dabei ist jede Zeile f¨ur sich zu behandeln, d.h. eventuell noch nicht abgeschlossene Kommentare aus vorherigen Zeilen haben keinen Einfluss. Korrigiere die Kommentare, sofern dir dies sinnvoll, logisch oder naheliegend erscheint.
1 h e u t e ist ein /* s c h o e n e r */ tag
2 g e s t e r n s c h i e n die s o n n e // den g a n z e n tag
3 /* das */ l e r n e n der /* p r o g r a m m i e r s p r a c h e C */ ist a n s t r e n g e n d
4 // ich w u e n s c h t e , das s t u d i u m w a e r e s c h o n f e r t i g 5 ich h a b e /* s e h r /* n e t t e */ */ k o m m i l i t o n e n
6 b e i m h o c h s c h u l s p o r t f i n d e t man v i e l e /** g u t e */ k u r s e 7 im s o m m e r ist es warm , im w i n t e r /* n i c h t **/ i m m e r
8 m a t h e ist /* oft * / a n s t r e n g e n d , /* p h y s i k */ l e i d e r a u c h 9 das l e r n e n /* in der // g r u p p e */ m a c h t s p a s s
10 schoen , // b a l d */ ist w o c h e n e n d e
11 k o m m e n t a r e s i n d /* s e h r * / b l o e d // f i n d e ich
Teil III: Fehlersuche
Aufgabe 1: Fehlerhafte Kommentare finden
Im folgenden Programm befinden sich f¨ur seine Gr¨oße recht viele Kommentare. Leider hat der Programmierer hier und dort den einen oder anderen Fehler gemacht.
Fehlerhaftes Programm:
1 # i n c l u d e < s t d i o . h > /* k o m m e n t a r 2
3 int m a i n ( int argc , k o m m e n t a r c h a r ** a r g v ) 4 // h i e r ist g a n z /* v i e l
5 k o m m e n t a r s o g a r u e b e r */
6 // d r e i z e i l e n
7 { /* s c h o n w i e d e r ein /* e i n f a c h e r */ k o m m e n t a r */
8 int // k o m m e n t a r m i t t e n i ; d r i n
9 if ( i == 2 )
10 h i e r a u c h p r i n t f ( " t r u e \ n " ) ;
11 e l s e p r i n t f ( " f a l s e \ n " ) ; /* und j e t z t ist a b e r s c h l u s s
12 }
Viele dieser Kommentare sind v¨ollig sinnfrei. Aber dennoch, finde und korrigiere sie. Be- denke, dass es immer mehrere M¨oglichkeiten gibt, die Fehler zu korrigieren. Entscheide dich jeweils f¨ur eine. Bei richtig gesetzten Kommentaren sollte der Compiler folgendes Programm sehen, sofern er selbige entfernt hat:
Programm, wie es ohne Kommentare sein sollte:
1 # i n c l u d e < s t d i o . h >
2
3 int m a i n ( int argc , c h a r ** a r g v )
4 {
5 int i ;
6 if ( i == 2 )
7 p r i n t f ( " t r u e \ n " ) ; 8 e l s e p r i n t f ( " f a l s e \ n " ) ;
9 }
Die Richtigkeit der durchgef¨uhrten Korrekturen l¨asst sich sehr einfach feststellen. Einfach mal das Kommandocpp <datei.c>ausf¨uhren, wobei<datei.c>nat¨urlich durch den rich- tigen Dateinamen zu ersetzen ist. Am Anfang steht sehr viel, das alles mit stdio.hzu tun hat. Am Ende jedoch sollte das Programm richtig erscheinen (unter Umst¨anden sind aber die Zeilen ein wenig verrutscht). Statt cppkann nat¨urlich auchgcc -Everwendet werden.
7-4 Wintersemester 2021/22, Einf¨uhrung in die Praktische Informatik
Teil IV: Anwendungen
In diesem Aufgabenteil sollt ihr schlecht formatierte Programme durch Verwenden von Leerzeichen und Zeilenumbr¨uchen so umwandeln, dass derenStruktur sofort erkennbar ist.
Aufgabe 1: Ein erstes, einfaches Programm
1 # include < s t d i o . h >
2
3 int m a i n ( int argc , c h a r ** a r g v ) 4 {
5 int i , j ; 6 if ( i < j )
7 for ( i =0; i < 1 0 ; i = i +1) 8 p r i n t f ( " ha ha \ n " ) ; 9 e l s e
10 if ( i == j )
11 for ( i =0; i <3; i = i +1) 12 for ( j =0; j < 1 0 ; j = j +1) 13 p r i n t f ( " ho ho \ n " ) ; 14 e l s e
15 p r i n t f ( " t o t a l b l o e d \ n " ) ; 16 }
Neue Formatierung:
Aufgabe 2: Ein zweites, einfaches Programm
1 # include < s t d i o . h >
2
3 int m a i n ( int argc , c h a r ** a r g v ) 4 {
5 int i , j ; 6 if ( i < j )
7 for ( i =0; i < 1 0 ; i = i +1) 8 if ( i = = 3 )
9 for ( j =0; j <3; j = j +1) 10 p r i n t f ( " ha ha \ n " ) ; 11 e l s e
12 p r i n t f ( " ho ho \ n " ) ; 13 e l s e
14 p r i n t f ( " t o t a l b l o e d \ n " ) ; 15 }
Neue Formatierung:
7-6 Wintersemester 2021/22, Einf¨uhrung in die Praktische Informatik
Aufgabe 3: Ein drittes, einfaches Programm
1 # i n c l u d e /* e i n g a b e */ < s t d i o . h >
2
3 int m a i n ( int argc , c h a r ** a r g v )
4 {
5 int i
6 ; if ( i
7 == 2 ) p r i n t f ( " t r u e \ n " ) ; e l s e p r i n t f 8 ( " f a l s e \ n " ) ;
9
10 }
Neue Formatierung: