• Keine Ergebnisse gefunden

Begleitendes ¨Ubungsmaterial zur Einf¨uhrung in die Praktische Informatik

N/A
N/A
Protected

Academic year: 2021

Aktie "Begleitendes ¨Ubungsmaterial zur Einf¨uhrung in die Praktische Informatik"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ralf Salomon

Begleitendes ¨ Ubungsmaterial zur

Einf¨ uhrung in die Praktische Informatik

Eine Einf¨ uhrung

speziell f¨ ur Elektrotechniker und andere Ingenieure

# i n c l u d e < s t d i o . h >

int m a i n ( int argc , c h a r ** a r g v ) {

p r i n t f ( " Guys , I ’ ve got f o u r w o r d s for you : \ n " ) ; p r i n t f ( " E x e r c i s e , e x e r c i s e , and e x e r c i s e ! \ n " ) ; p r i n t f ( " In o t h e r w o r d s : e x e r c i s e or p e r i s h !\ n " ) ; p r i n t f ( " G o o d l u c k . . . \ n " ) ; }

(2)

Ralf Salomon

Begleitendes ¨Ubungsmaterial zum Skript:

Praktische Informatik und die Programmiersprache C

Eine Einf¨uhrung speziell f¨ur Elektrotechniker und andere Ingenieure

ISBN 978-3-00-047148-3

Copyright c Ralf Salomon, 18119 Rostock, 2014

Alle Rechte vorbehalten. Nachdruck, ¨Ubersetzung, Vortrag,

Reproduktion, Vervielf¨altigung auf fotomechanischen oder anderen Wegen sowie Speicherung in elektronischen Medien auch auszugsweise nur mit ausdr¨ucklicher Genehmigung des Autors gestattet.

Die in diesem Werk wiedergegebenen Gebrauchsmuster, Handelsnamen, Warenbezeichnungen usw. k¨onnen auch ohne besondere Kennzeichnung Marken sein und als solche den gesetzlichen Bestimmungen unterliegen.

Haftungsausschluss: Weder die Autoren noch sonstige Stellen sind f¨ur etwaige Sch¨aden, die aus der Verwendung der in diesem Dokument enthaltenen Informationen resultieren, verantwortlich.

Der Autor haftet nicht f¨ur die Inhalte der in diesem Buch angegebenen Web-Links und macht sich diese Inhalte nicht zu eigen.

Satz: Ralf Salomon

Druck und Verarbeitung: Westarp & Partner Digitaldruck Hohenwarsleben UG Printed in Germany

Umwelthinweis: Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt.

Email:ralf.salomon@uni-rostock.de Web: www.imd.uni-rostock.de/ma/rs

(3)

Danksagung und allgemeine Referenzen

Das hier vorliegende Manuskript beinhaltet 33 einzelne ¨Ubungspakete. Diese dienen der Vertiefung sowie dem praktischen ¨Uben des Stoffes, der im vorlesungsbegleitenden Skript Praktische Informatik und die Programmiersprache C behandelt wird. Die Stoffauswahl, die Reihenfolge der einzelnen Aspekte und die gew¨ahlte Abstraktionsebene sind in erster Linie auf den Kenntnisstand und die sp¨ateren Programmierbed¨urfnisse unserer Elektro- technikstudenten des ersten Semesters zugeschnitten.

Bei der Erstellung, dem Design und der Korrektur der ¨Ubungspakete haben viele Per- sonen geholfen. In erster Linie sind die Mitarbeiter Enrico Heinrich, Matthias Hinkfoth, Ralf Joost, Ralf Warmuth und Ren´e Romann zu nennen, die durch ihre Anmerkungen, Vorschl¨age, Hinweise und teils sehr intensive und kontroverse Diskussionen zum Gelingen maßgeblich beigetragen haben. Also Jungs, vielen Dank!

Desweiteren sind alle Studenten zu nennen, die dem Fehlerteufel zu Leibe ger¨uckt sind.

Großen Dank an euch alle. Besonders hervorzuheben ist hier die Arbeit von Andrea Dorn, die das Manuskript noch einmal sehr gr¨undlich gelesen und korrigiert hat.

Eine wesentliche Voraussetzung f¨ur das Erstellen der einzelnen ¨Ubungsaufgaben war die sehr inspirierende Arbeitsumgebung, die ich in den Sommermonaten der Jahre 2013 und 2014 auf Maui vorfand. Daher geb¨uhrt großer Dank all den anonymen Besch¨aftigten fol- gender Lokalit¨aten, die mich unwissentlich vor allem durch Kaffee, Musik und ihren Spirit unterst¨utzt haben: Denny’s at South Kihei, Paia Bay Cafe at Paia, Starbucks at South Kihei und Starbucks at Kahului. Thanks guys, your help is highly appreciated!

Keine der hier vorzufindenden ¨Ubungsaufgaben ist bewusst irgendwo abgeschrieben wor- den. Nat¨urlich kann es bei aller Sorgfalt sein, dass es in der Literatur ¨ahnliche Aufgaben, Quizfragen oder Programme gibt. 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 Open-Source Quellen sieht, an die man sich heute nicht mehr er- innert.

Nat¨urlich haben auch einige B¨ucher ihre unverkennbaren Spuren hinterlassen. Hier sind insbesondere das Buch ¨uber Algorithmen und Datenstrukturen, von Niklaus Wirth [4], die Einf¨uhrung in das Software Engineering von Kimm et al. [3], das Originalbuch ¨uber die Programmiersprache C von Kernighan und Ritchie [2] sowie das Buch ¨uber das Unix Betriebssystem von Maurice Bach [1] zu nennen.

(4)

Inhaltsverzeichnis

Vorwort

1 Grundlagen: von der Hardware zum Programmieren

Stoffwiederholung . . . 1-1 Quiz . . . 1-4 Fehlersuche . . . 1-5 Anwendungen . . . 1-8 2 Erste Kontakte mit dem PC

Motivation: Warum das alles . . . ? . . . 2-1 Kommandoeingabe unter Linux . . . 2-2 Kommandoeingabe unter Windows . . . 2-8 Die wichtigsten Befehle. . . 2-13 3 Mein erstes Programm: Fl¨ache eines Rechtecks

Stoffwiederholung . . . 3-1 Quiz . . . 3-3 Fehlersuche . . . 3-4 Anwendungen . . . 3-5 4 Klassifikation von Dreiecken

Stoffwiederholung . . . 4-1 Quiz . . . 4-3 Fehlersuche . . . 4-4 Anwendungen . . . 4-5 5 Abstrakte Programmierung

Stoffwiederholung . . . 5-1 Quiz . . . 5-3 Fehlersuche . . . 5-4 Anwendungen . . . 5-5 6 Arbeiten mit Syntaxdiagrammen

iv

(5)

Stoffwiederholung . . . 6-1 Quiz . . . 6-2 Fehlersuche . . . 6-5 Anwendungen . . . 6-6 7 Angemessenes Formatieren von C-Programmen

Stoffwiederholung . . . 7-1 Quiz . . . 7-3 Fehlersuche . . . 7-4 Anwendungen . . . 7-5 8 Datentyp int

Stoffwiederholung . . . 8-1 Quiz . . . 8-3 Fehlersuche . . . 8-4 Anwendungen . . . 8-5 9 Logische Ausdr¨ucke

Stoffwiederholung . . . 9-1 Quiz . . . 9-2 Fehlersuche . . . 9-3 Anwendungen . . . 9-4

10 Fallunterscheidungen

Stoffwiederholung . . . 10-1 Quiz . . . 10-3 Fehlersuche . . . 10-5 Anwendungen . . . 10-7

11 Schleifen

Stoffwiederholung . . . 11-1 Quiz . . . 11-3 Fehlersuche . . . 11-6 Anwendungen . . . 11-7

12 Der Datentyp char

Stoffwiederholung . . . 12-1 Quiz . . . 12-2 Fehlersuche . . . 12-3 Anwendungen . . . 12-4 13 Der Datentyp double

Stoffwiederholung . . . 13-1 Quiz . . . 13-2

v

(6)

Fehlersuche . . . 13-3 Anwendungen . . . 13-4

14 Eindimensionale Arrays

Stoffwiederholung . . . 14-1 Quiz . . . 14-2 Fehlersuche . . . 14-3 Anwendungen . . . 14-4

15 Einfaches Sortieren, Suchen und Finden

Stoffwiederholung . . . 15-1 Quiz . . . 15-3 Fehlersuche . . . 15-4 Anwendungen . . . 15-5 16 Gemischte Datentypen

Stoffwiederholung . . . 16-1 Quiz . . . 16-2 Fehlersuche . . . 16-3 Anwendungen . . . 16-4 17 Der gcc Compiler

Stoffwiederholung . . . 17-1 Quiz . . . 17-3 Fehlersuche . . . 17-6 Anwendungen . . . 17-7 18 Ausdr¨ucke

Stoffwiederholung . . . 18-1 Quiz . . . 18-3 Fehlersuche . . . 18-6 Anwendungen . . . 18-7 19 Programmieren eigener Funktionen

Stoffwiederholung . . . 19-1 Quiz . . . 19-6 Fehlersuche . . . 19-9 Anwendungen . . . 19-10 20 Zeiger und Zeigervariablen

Stoffwiederholung . . . 20-1 Quiz . . . 20-3 Fehlersuche . . . 20-6 Anwendungen . . . 20-7

vi

(7)

21 Funktionen mit Zeigern und Arrays als Parameter

Stoffwiederholung . . . 21-1 Quiz . . . 21-3 Fehlersuche . . . 21-4 Anwendungen . . . 21-5

22 Rekursive Funktionsaufrufe

Stoffwiederholung . . . 22-1 Quiz . . . 22-2 Fehlersuche . . . 22-5 Anwendungen . . . 22-6

23 Mehrdimensionale Arrays

Stoffwiederholung . . . 23-1 Quiz . . . 23-2 Fehlersuche . . . 23-3 Anwendungen . . . 23-4 24 Zeichenketten

Stoffwiederholung . . . 24-1 Quiz . . . 24-3 Fehlersuche . . . 24-4 Anwendungen . . . 24-5 25 Kommandozeilenargumente

Stoffwiederholung . . . 25-1 Quiz . . . 25-4 Fehlersuche . . . 25-5 Anwendungen . . . 25-6 26 Der Datentyp struct

Stoffwiederholung . . . 26-1 Quiz . . . 26-4 Fehlersuche . . . 26-6 Anwendungen . . . 26-7 27 Definition eigener Datentypen

Stoffwiederholung . . . 27-1 Quiz . . . 27-2 Fehlersuche . . . 27-5 Anwendungen . . . 27-6 28 Module und getrenntes ¨Ubersetzen

Stoffwiederholung . . . 28-1

vii

(8)

Quiz . . . 28-2 Fehlersuche . . . 28-3 Anwendungen . . . 28-4 29 Dynamische Speicherverwaltung: malloc() und free()

Stoffwiederholung . . . 29-1 Quiz . . . 29-3 Fehlersuche . . . 29-4 Anwendungen . . . 29-5 30 Kopieren von Dateien

Stoffwiederholung . . . 30-1 Quiz . . . 30-3 Fehlersuche . . . 30-6 Anwendungen . . . 30-7 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Stoffwiederholung . . . 31-1 Quiz . . . 31-3 Fehlersuche . . . 31-5 Anwendungen . . . 31-6 32 Einfach verkettete, sortierte Liste

Stoffwiederholung . . . 32-1 Quiz . . . 32-3 Fehlersuche . . . 32-9 Anwendungen . . . 32-10 33 Bin¨are B¨aume

Stoffwiederholung . . . 33-1 Quiz . . . 33-2 Fehlersuche . . . 33-3 Anwendungen . . . 33-5 Anh¨ange

Anhang I: Anleitung zu den ¨Ubungspaketen . . . iii Anhang II: Pr¨azedenztabelle . . . vi Anhang III: Literaturverzeichnis. . . vii

viii

(9)

Vorwort

Schon in Goethes Faust sagte Mephisto

”Grau, teurer Freund, ist alle Theorie, und Gr¨un des Lebens goldner Baum“,was der Volksmund auch h¨aufig als

”Ubung macht den Meister“¨ oder”Kunst kommt von K¨onnen“ zusammenfasst. Diese Binsenweisheiten sind wohl jedem bekannt, wurden sie doch von unseren Eltern und Lehrern immer wieder gepredigt.

”Nee, klar, jetzt fehlt nur noch ein

”Jung’, du lernst f¨ur’s Leben, nicht f¨ur die Schule!“ Wie oft musste ich mir das schon anh¨oren...“ Ja genau und jetzt schon wieder ;-)

”Aber jetzt mal im Ernst, so unter uns, ganz im Vertrauen: Warum denn noch großartig

¨uben, wir haben doch regelm¨aßig Vorlesung und ein ausf¨uhrliches Skript, da kann man doch bei Bedarf alles nachlesen?!“ Ja, das stimmt. Aber im Skript und den Vorlesungen werden neue Konzeptevorgestellt und weitergehende Zusammenh¨angeaufgezeigt. Dies wird, sofern alles gut l¨auft, Teil des eigenen Wissens. Aber es handelt sich meist um passives Wissen.

Das Anh¨oren neuer Konzepte bedeutet nicht unbedingt, dass man diese auch eigenst¨andig anwenden kann. Passives Wissen erlaubt meist nur das Nachvollziehen der Gedanken und L¨osungsschritte anderer, was aber f¨ur einen Ingenieur alles andere als ausreichend ist.

Aber gerade das eigenst¨andige Anwenden der erlernten Konzepte ist f¨ur das L¨osen neu- artiger Aufgabenstellungen unabdingbar und damit eine grundlegende T¨atigkeit des Inge- nieurs. Hier hilft einfach nur ¨Uben, ¨Uben und nochmals ¨Uben. Und genau hier haken die vorliegenden ¨Ubungspakete ein. Sie haben zum Ziel, den in der Vorlesung pr¨asentierten Stoff zu vertiefen. Jedes ¨Ubungspaket besteht aus den vier verschiedenen Elementen Syn- tax und Stoffwiederholung, Beantwortung kleiner Quizfragen, das Finden von Fehlern in vorgegebenen Programmen sowie das eigenst¨andige Entwickeln von L¨osungen, was sich in der Struktur der einzelnen ¨Ubungspakete niederschl¨agt.

Wie oben schon angedeutet, ist das Finden eines geeigneten L¨osungsansatzes bzw. -weges ein wesentliches Element des eigenst¨andigen Programmierens. Um hier eine bereits et- was strapazierte Redensart zu zitieren:

”Der Weg ist das Ziel, nicht unbedingt die fertige L¨osung.“ Entsprechend sind die einzelnen ¨Ubungsaufgaben nur leicht vorstrukturiert. Die L¨osungsans¨atze und -wege selbst zu finden und auszuarbeiten ist die Aufgabe der Stu- denten. Im Anhang befinden sich hierzu nochmals einige Erl¨auterungen, diejeder Student mindestens einmal vor dem Bearbeiten der ¨Ubungspakete gelesen haben sollte.

So, genug der Vorrede und frisch ans Werk.

(10)

33 Ubungspakete ¨

(11)

Referenzen

ÄHNLICHE DOKUMENTE

Einf¨ uhrung in die Praktische Informatik.. Wintersemester 2020/21

Welche Wichtigkeit haben Vorlesung, ¨ Ubung und eigenst¨ andige Arbeit?. Welche Aufgabe haben

Erl¨ auter Rekursion anhand eines Beispiels und f¨ uhre eine kleine Handsimulation

Warum muss der Compiler den zugrundeliegenden Datentyp jedes Objektes wissen?. Was verstehen

Welche Teile eines C-Programms organisiert der Compiler in welchen Segmenten?. Warum werden die Inhalte eines C-Programms in unterschiedliche

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

Was bedeuten lineare Liste und einfach verkettet2. Wie definiert man einen Datentyp f¨ ur

Wie viel Speicher ben¨ otigt man, um zwei Zeichenketten der L¨ angen L1 und L2 zu einer Zeichenkette zusammenzuf¨ ugen.. Was ist