• Keine Ergebnisse gefunden

Einf¨uhrung in die Praktische Informatik 30.1.2013 Probeklausur Name:

N/A
N/A
Protected

Academic year: 2021

Aktie "Einf¨uhrung in die Praktische Informatik 30.1.2013 Probeklausur Name:"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

30.1.2013

Teil I: Datentypen (20 Punkte) L¨osen sie die Probleme, indem sie die korrekten L¨osungen ankreuzen bzw. in die vorgesehenen Freir¨aume die L¨osungen eintragen. Falsche Markierungen bzw. Eintr¨age f¨uhren zu Punktabzug!

1 Pkt 1. Tragen Sie auf allenSeiten oben rechts Ihren Namen ein!

3 Pkt 2. Geben Sie jeweils an, um was f¨ur eine Art Datentyp es sich handelt:

(a) doubleist ein

(a) Ganzzahltyp (b) Fließkommatyp(c) Zeichentyp (d) Struct (e) Pointertyp (b)int *ist ein

(a) Ganzzahltyp (b) Fließkommatyp(c) Zeichentyp (d) Struct (e) Pointertyp (c) charist ein

(a) Ganzzahltyp (b) Fließkommatyp(c) Zeichentyp (d) Struct (e) Pointertyp

3 Pkt 3. Geben Sie jeweils an, um welchen Datentyp es sich handelt:

(a) int a;Der Ausdruck&ahat den Typ

(a) int (b)long (c)float (d)char (e) int *

(b)int a; float b;Der Ausdrucka+bhat den Typ

(a) int (b)long (c)float (d)char (e) int *

(c) Der Ausdruck’a’hat den Typ

(a) int (b)long (c)float (d)char (e) int *

13 Pkt 4. Richtig oder falsch?

Geben Sie jeweils an, ob die folgenden Aussagen richtig oder falsch sind.

(a) Die Gr¨oße eines Typs in Bytes kann mit dersizeof-Anweisung ermittelt werden, z.B.

sizeof(int).

(b) Die Gr¨oße einer Variable in Bytes kann ebenfalls mit dersizeof-Anweisung ermittelt werden, z.B.int i; int j = sizeof(i).

(c) Die Gr¨oße der primitiven Typen, insbesondere int, ist auf allen Systemen gleich, so dass die Verwendung vonsizeoff¨ur solche Typen ¨uberfl¨ussig ist.

(d) Arrays erlauben die Gruppierung von Elementen gleichen Typs.

(e) Structs erlauben die Gruppierung von Elementen unterschiedlichen Typs.

(f) Die Anzahl Elemente eines Arrays wird in runden Klammern hinter die Variable ge- schrieben, also z.B.int array(10);.

(g) Die Indizies eines Arrays beginnen bei 1 und gehen bis zu der angegebenen Gr¨oße.

(h) sizeof liefert nur bei Structs die Gr¨oße in Bytes zur¨uck, bei Arrays hingegen die Anzahl Elemente.

(i) Bei Arrays als Funktionsparametern wird genau wie bei primitiven Typen eine lokale Kopie erstellt, so daßsizeofauch korrekt auf solchen Array-Parametern funktioniert.

(j) Structs k¨onnen einander zugewiesen werden, also z.B.struct blah s1, s2 = s1;.

(k) Arrays k¨onnen ebenfalls einander zugewiesen werden, also z.B.int a[4], b[4] = a;.

(l) Mit dem Ausdrucksizeof(a)/sizeof(a[0])kann die Anzahl Elemente einer Array- Variablenaermittelt werden.

(m) F¨ur Zeichenketten bietet C den primitiven Typstring, welche mittels der+-Operation sehr bequem miteinander verkettet werden k¨onnen, also z.B.string s1, s2, s3; s1

= s2+s3;

(2)

Teil II (Algorithmen)(40 Punkte) In den folgenden Aufgaben m¨ussen Sie unter anderem auch selbst Quellcode schreiben. Benutzen Sie in diesem Fall dazu die mehr als ausreichend großen freien Bereiche unter den Aufgaben.

9 Pkt 1. Tragen Sie in Bezug auf den folgenden Quellcode die fehlenden Texte ein:

1 #include <s t d l i b . h>

2

3 char ∗f x y z (char ∗s1 , char ∗s 2 )

4 {

5 i n t l 1 , l 2 ; 6

7 f o r ( l 1 = 0 ; s 1 [ l 1 ] != ’ \0 ’; l 1 ++);

8 f o r ( l 2 = 0 ; s 2 [ l 2 ] != ’ \0 ’; l 2 ++);

9

10 char ∗e r g = (char ∗) m a l l o c ( l 1+l 2 +1);

11

12 f o r ( l 1 = 0 ; s 1 [ l 1 ] != ’ \0 ’; e r g [ l 1 ] = s 1 [ l 1 ++]);

13 f o r ( l 2 = 0 ; s 2 [ l 2 ] != ’ \0 ’; e r g [ l 1+l 2 ] = s 2 [ l 2 ++]);

14

15 e r g [ l 1+l 2 ] = ’ \0 ’; 16

17 return e r g ; 18 }

(a) Im Quellcode kommen die Datentypen und vor.

(b) Die Bedingung derfor-Schleife in Zeile 7 lautet . (c) Die Initialisierung derfor-Schleife in Zeile 7 lautet .

(d) Die for-Schleifen in Zeile 7 und 8 (als auch 12 und 13) werden aufgrund ihrer Bedingungen solange durchlaufen, bis das der entsprechenden Zeichenkette erreicht ist.

(e) Mit den for-Schleifen in Zeile 7 und 8 wird jeweils die einer Zeichenkette berechnet.

(f) Der Aufruf von malloc reserviert neuen Speicher. Die +1 muss dabei verwendet werden, da Zeichenketten in C immer mit dem besonderen Zeichen beendet werden.

(g) Beim Aufruf vonf xyzmit einem Zeiger auf eine Zeichenkette"Hallo"und einem Zeiger auf eine Zeichenkette" Welt"liefert die Funktion einen Zeiger auf eine Zeichenkette

zur¨uck.

(h) Falls nicht mehr genug Heap-Speicher zur Verf¨ugung steht, liefert malloc NULL zur¨uck. Zum Schutz vor ung¨ultigem Speicherzugriff sollten die Zeilen 11–16 daher in einen if-Block einge- schlossen werden. Die Bedingung muss dabei lauten.

(3)

10 Pkt 2. Schreiben Sie eine Funktion, die in einem int-Array nach einem bestimmtem Wert sucht. Ist der

Wert in dem Array vorhanden, soll der entsprechende Index zur¨uckgegeben werden, ansonsten -1.

Frage: Warum ist die R¨uckgabe von 0 statt -1 im Fehlerfall hier nicht angeraten?

(4)

10 Pkt 3. Schreiben Sie eine Funktion filter(FILE* infile, FILE* outfile), die alle Ziffern ’0’ . . . ’9’

durch die Buchstaben ’a’ . . . ’j’ ersetzt.

(5)

11 Pkt 4. Deklarieren Sie eine Struktur f¨ur eine einfach verkettete Liste, die je Element einenint-Wert enth¨alt.

Schreiben Sie eine Funktion, die eineumgekehrteKopie einer solchen Liste zur¨uckliefert. Im Vergleich zum Original sind also alle Zeiger vertauscht.

Referenzen

ÄHNLICHE DOKUMENTE

2001 Professur Wissenschaftliches Rechnen (IWR, U Heidelberg) 2006 Lehrstuhl Simulation großer Systeme (Informatik, U Stuttgart) 2008 AG Paralleles Rechnen (IWR, U Heidelberg)..

Doch sind diese ¨ Ahnlichkeiten reiner Zufall oder Resultat von mehr als 25 Jahren Programmier- und Lehrerfahrung, in denen man viel programmiert hat und vor allem auch

Doch sind diese ¨ Ahnlichkeiten reiner Zufall oder Resultat von mehr als 25 Jahren Programmier- und Lehrerfahrung, in denen man viel programmiert hat und vor allem auch

Schreibe eine Funktion, die die Summe ab dem zweiten Elemente der Liste bildet und diese in das erste Element eintr¨ agt.. Beispiel Die Liste besteht aus

Notiere mindestens sechs Zeichen, wobei jede Methode mindestens einmal verwendet wird?. Welcher Zahlenmenge entspricht der

Notiere sechs int-Konstanten, verwende alle drei Basen der Programmiersprache C?. Definiere sechs verschiedene Variablen vom

Notiere sechs Zeichen, wobei jede C-Methode mindestens einmal verwendet wird?. Welcher Zahlenmenge entspricht der

L¨ osen von Programmieraufgaben von einfacher und mittlerer Komplexit¨ at, Struktu- riertes Programmieren, Lesen von Syntaxdiagrammen, Umsetzung von Algorithmen in