• Keine Ergebnisse gefunden

¨Ubungspaket 12 Der Datentyp char

N/A
N/A
Protected

Academic year: 2021

Aktie "¨Ubungspaket 12 Der Datentyp char"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ubungspaket 12 ¨ Der Datentyp char

Ubungsziele: ¨

1. Umgang mit dem Datentyp char, 2. Deklarationen von char-Variablen, 3. char-Konstanten

4. und char-Rechenoperationen.

Skript:

Kapitel: 29 bis 31 sowie 24, 25 und 27 Semester:

Wintersemester 2021/22 Betreuer:

Thomas, Tim und Ralf Synopsis:

In diesem ¨ Ubungspaket gibt es einiges zum Thema Zeichen. Die Struk-

tur der Aufgaben ¨ ahnelt sehr den vorherigen. Neben der eigentlichen

Zeichenverarbeitung ist die Umwandlung von Werten des Datentyps

char in Werte des Datentyps int und umgekehrt Teil dieses ¨ Ubungs-

paketes.

(2)

Teil I: Stoffwiederholung

Aufgabe 1: Notation von Zeichenkonstanten

In Vorlesung und Skript haben wir gesehen, dass in der Programmiersprache C Zeichen in drei verschiedenen Formen angeben k¨onnen. Vervollst¨andige folgende Tabelle:

C-Notation

Zeichen . . . . . . . . . . . . . . . .

Großbuchstabe A . . . . . . . . . . . . . . . .

Semikolon . . . . . . . . . . . . . . . .

Ziffer 3 . . . . . . . . . . . . . . . .

Nullbyte . . . . . . . . . . . . . . . .

Aufgabe 2: Ein- und Ausgabe

Erl¨auter anhand von zwei Beispielen, wie Zeichen ein und ausgelesen werden k¨onnen?

Format: Eingabe: Ausgabe:

Aufgabe 3: Zeichen und deren ASCII-Werte

Schreibe ein kleines Testprogramm, das die Zeichen ’A’ bis ’Z’ nebst ihrer zugeh¨origen ASCII Werte in tabellarischer Form ausgibt. Frage: Muss man bei der Aufgabe die konkrete ASCII-Kodierung der einzelnen Zeichen selber in der ASCII-Tabelle nachschlagen oder kann das der Compiler dies erledigen?

(3)

Teil II: Quiz

Aufgabe 1: Datentyp char vs. Datentyp int

Der Datentyp char geh¨ort zu den Ganzzahldatentypen, da die einzelnen Zeichen einzeln aufgef¨uhrt werden k¨onnen. Aber dennoch gibt es einige Unterschiede zum Datentyp int.

Diese Unterschiede betreffen in erster Linie die Zahl der verwendeten Bytes im Arbeitsspei- cher und damit die Zahl der verf¨ugbaren Bits und dem daraus resultierenden Wertebereich.

Erg¨anze folgende Tabelle:

Datentyp # der Bytes # der Bits Wertebereich

int . . . . . . . . . . . .

char . . . . . . . . . . . .

Aufgabe 2: Ausdr¨ ucke

Welche Werte erhalten die Variablenchar cundint idurch die angegebenen Ausdr¨ucke?

Ausdruck Resultat

c = ’a’ + 1 c = ...

c = ’m’ - 1 c = ...

c = ’a’ + 4 c = ...

c = ’m’ - ’a’ + ’A’ c = ...

Ausdruck Resultat

c = ’n’ - ’z’ + ’Z’ c = ...

c = ’P’ - ’A’ + ’a’ + 1 c = ...

i = ’z’ - ’a’ i = ...

i = ’9’ - ’0’ i = ...

Aufgabe 3: Datentypen

Im Zusammenhang mit Variablen und Werten vom Typ char gibt es immer wieder Fra- gen bez¨uglich des resultierenden Datentyps. In den folgenden Ausdr¨ucken gilt folgende Variablendefinition: char c und int i

Ausdruck Datentyp

c . . . .

’a’ . . . .

’\101’ . . . .

Ausdruck Datentyp c + 1 . . . .

c - ’0’ . . . .

c + i . . . .

Hinweis: Die Anweisung printf("%d\n", Ausdruck) gibt einen Hinweis auf den resultierenden Typ.Ausdruck kann eine Variable, ein Ausdruck oder ein Typ sein.

Einf¨uhrung in die Praktische Informatik, Wintersemester 2021/22 12-2

(4)

Teil III: Fehlersuche

Aufgabe 1: Summenberechnung mit kleinen Fehlern

Das folgende Programm soll die Summe der Zeichen ’a’ bis ’z’, ’A’ bis ’Z’ und ’0’

bis ’9’ bestimmen. Leider sind dem Programmierer wieder einmal ein paar kleine Fehler unterlaufen. Finde die 14 Fehler und korrigiere sie:

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 c h a r c ,

6 int s .

7 for ( s = ’ a ’ , c = ’ b ’ ; c < ’ z ’ ; c = c + 1 )

8 s = c ;

9 for ( c = ’ A ’ ; c >= ’ Z "; c = + 1 )

10 s = s + c ;

11 for ( c "9 ’ ; c > ’ 0 ’ , c = c + 1 )

12 s = s + c ;

13 p r i n t f ( " s u m m e = % d \ n ’ , s ) ;

14 ]

(5)

Teil IV: Anwendungen

Aufgabe 1: Umwandlung von Ziffern in Zahlen

Ein echter Klassiker: Schreibe ein kleines Programm, das eine einzelne Ziffer, also die Zeichen von ’0’ bis ’9’, in ihren entsprechenden Zahlenwerte, also ints von 0 bis 9, umwandelt. Das folgende Programmschnipsel zeigt, wie ihr es nicht machen sollt . . .

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 c h a r z e i c h e n ;

6 int z a h l ;

7 z e i c h e n = ’ 5 ’ ; 8 s w i t c h ( z e i c h e n )

9 {

10 c a s e ’ 0 ’ : z a h l = 0; b r e a k ; 11 c a s e ’ 1 ’ : z a h l = 1; b r e a k ; 12 c a s e ’ 2 ’ : z a h l = 2; b r e a k ; 13 c a s e ’ 3 ’ : z a h l = 3; b r e a k ; 14 c a s e ’ 4 ’ : z a h l = 4; b r e a k ; 15 c a s e ’ 5 ’ : z a h l = 5; b r e a k ; 16 c a s e ’ 6 ’ : z a h l = 6; b r e a k ; 17 c a s e ’ 7 ’ : z a h l = 7; b r e a k ; 18 c a s e ’ 8 ’ : z a h l = 8; b r e a k ; 19 c a s e ’ 9 ’ : z a h l = 9; b r e a k ;

20 }

21 p r i n t f ( " Z e i c h e n = ’% c ’ Z a h l = % d \ n " , zeichen , z a h l ) ;

22 }

Eine derartige Umwandlung geht mit einer einfachen Anweisung. Uberlege zun¨¨ achst, in welchem Zusammenhang die ASCII-Zeichen und deren Kodierung zueinander stehen. For- muliere und erkl¨are die entsprechende C-Anweisung, und schreibe ein entsprechendes Test- programm:

Testprogramm zur einfachen Wandlung von Ziffern in Zahlenwerte:

Einf¨uhrung in die Praktische Informatik, Wintersemester 2021/22 12-4

(6)

Aufgabe 2: Klassifizierung von Zeichen: <ctype.h>

Die Include-Datei <ctype.h> stellt eine Reihe von n¨utzlichen Makros zur Klassifizierung von Zeichen zur Verf¨ugung. Nenne mindestens sechs von ihnen:

Bedeutung Makroname

. . . . . . . . . . . . . . . . . . . . . . . .

Bedeutung Makroname

. . . . . . . . . . . . . . . . . . . . . . . .

Aufgabe 3: Wandeln von hexadezimalen Ziffern

1. Aufgabenstellung

Erweiter das Programm aus Aufgabe 1 dieses Teils so, dass es auch hexadezimale Ziffern, ’A’bis ’F’bzw. ’a’ bis’f’ korrekt wandelt.

2. Pflichtenheft: Aufgabe, Eingabe, Ausgabe, Sonderf¨alle

3. Testdaten

Alle Ziffern von ’0’bis ’9’, ’A’ bis’F’ und ’a’bis ’f’

(7)

4. Implementierung

5. Kodierung

Einf¨uhrung in die Praktische Informatik, Wintersemester 2021/22 12-6

(8)

Aufgabe 4: Umwandlung von Klein in Großbuchstaben

1. Aufgabenstellung

Enwickle ein Programmst¨uckchen, das Kleinbuchstaben in Großbuchstaben umwan- deln kann und umgekehrt. Auch diese Umwandlung geht wieder in einer Zeile.

2. Pflichtenheft: Aufgabe, Eingabe, Ausgabe, Sonderf¨alle

3. Testdaten

Alle Buchstaben von ’a’ bis’z’ und ’A’bis ’Z’.

4. Implementierung

Da diese Aufgabe eigentlich keine gr¨oßeren Schwierigkeiten bereiten sollte, konzen- trieren wir uns hier auf die eigentliche Umwandlung der Zeichen. Wie lautet die jeweiligen Anweisungen zum Umwandeln der Buchstaben?

Klein- in Großbuchstaben:

Groß- in Kleinbuchstaben:

5. Kodierung

Schreibe ein entsprechendes Testprogramm f¨ur die beiden obigen Anweisungen:

(9)

Aufgabe 5: Zeichen-Matrix

1. Aufgabenstellung

Zur Wiederholung: Eine Variable vom Typcharbesitzt in der Regel acht Bits, womit sich 256 verschiedene Werte darstellen lassen. Entwickle ein Programm, das diese 256 M¨oglichkeiten in Form einer 16×16 Matrix darstellt, und zwar nicht als Zahlenwerte sondern als Zeichen. Da einige Zeichen

”merkw¨urdig“ aussehen, ist es g¨unstig" %2c"

als Formatierung zu nehmen. Mit etwas Gl¨uck wird folgende Matrix ausgegeben.

Gew¨unschte Ausgabe:

2. Pflichtenheft: Aufgabe, Eingabe, Ausgabe, Sonderf¨alle

3. Implementierung

Einf¨uhrung in die Praktische Informatik, Wintersemester 2021/22 12-8

(10)

4. Kodierung

Referenzen

ÄHNLICHE DOKUMENTE

Die Codes 128-255 wer- den je nach Zeichensatz unterschiedlich belegt (mit Sonderzeichen wie z.B. Umlauten) und sind hier nicht dargestellt. Birnthaler,

wiederhole setze euro = dollar * wechselkurs ausgabe euro und dollar.. Entwickle ein Programm, dass der Reihe nach verschiedene Widerstandswerte einliest, den

Alle C-Pr¨ aprozessor-Direktiven fangen mit einem Doppelkreuz # an, werden von einem der Schl¨ usselw¨ orter include, define, ifdef, ifndef, else oder endif gefolgt und meis- tens

Eingabeaufforderung und Einlesen der Zahl z1 Eingabeaufforderung und Einlesen der Zahl z2 Berechne z1 + z2 und Ausgabe des Ergebnises Berechne z1 - z2 und Ausgabe des

Aufgabe : Programm zur Verwaltung von Personen, die einen Namen und ein Alter haben, Sortierm¨ oglichkeiten nach jeweils einem der beiden Angaben.. Eingabe : keine Eingaben, da

The first part of the selection indicates the host (either the EIA port or the AUX port) and the second part of the selection indicates the printer port (if a serial printer is used,

If you are running in dual session mode, press Ctrl-Enter (kpd), and set the “Host/Printer” selection in the Quick (F1) menu to the proper host and printer ports for Session two..

If you did not opt to install a printer (did not complete E, F, G, or H), you must set the Printer portion of the Host/Printer selection in the Quick (F1) Setup menu to “None.”