0% fanden dieses Dokument nützlich (0 Abstimmungen)
19 Ansichten8 Seiten

Über

Das Dokument beschreibt ein Praktikum zur Vorlesung Modellierung und Simulation, das den Studierenden erste Schritte in der Programmiersprache C ermöglicht, wobei die Linux-Umgebung verwendet wird. Es werden grundlegende Programmierkonzepte wie Datentypen, Funktionen, Arrays und Schleifen behandelt, und die Studierenden sollen eigene Programme erstellen und ausführen. Zudem werden Aufgaben zur Berechnung von Fibonacci-Zahlen und zur Matrix-Vektor-Multiplikation gestellt.

Hochgeladen von

zeynepbersuu
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
19 Ansichten8 Seiten

Über

Das Dokument beschreibt ein Praktikum zur Vorlesung Modellierung und Simulation, das den Studierenden erste Schritte in der Programmiersprache C ermöglicht, wobei die Linux-Umgebung verwendet wird. Es werden grundlegende Programmierkonzepte wie Datentypen, Funktionen, Arrays und Schleifen behandelt, und die Studierenden sollen eigene Programme erstellen und ausführen. Zudem werden Aufgaben zur Berechnung von Fibonacci-Zahlen und zur Matrix-Vektor-Multiplikation gestellt.

Hochgeladen von

zeynepbersuu
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Anastasia August, Andreas Prahs,

Fabian Epp, Nils Becker, Britta Nestler HsKa und KIT

Praktikum zur Vorlesung


Modellierung und Simulation im SS 2025

Praktikum :
Ziel dieser Übung ist es, den Studierende erste Schritte in der Porgrammiersprache C zu
ermöglichen. Hierzu wird die Linux-Umgebung bevorzugt. Linux ist ein zur Windows
alterntives Operationssystem, welches in diesem Praktikum verwendet wird. Hinweis:
Die Beispiele in dieser Übung enthalten kleine syntaktische Fehler, die absichtlich ein-
gebaut wurden. Dies soll dazu anregen sich mit der Sprache und dem Compiler ausein-
ander zu setzen.

Umgebung: Linux, Konsole, Befehle..


Hinweis: Die folgende Erklärung gilt eins-zu-eins nur wenn Sie direkt unter Linux
arbeiten. Unter anderen Systemen können sich zwar die Pfade unterscheiden, die rest-
liche Bearbeitung erfolgt allerings komplett analog. Verwenden Sie Bash for Windows
können Sie zunächst normal die Dateien herunterladen diese dann beispielsweise in
der Konsole mittels des mv Befehls aus dem im /mnt-Verzeichnis eingehängten Win-
dowsverzeichnis in ihr Home-Verzeichnis ~/ kopieren.

• Melden Sie sich im Internetbrowser in Ilias an und laden Sie die Vorlage [Link]
für die Übung von der Internetseite der Vorlesung "Modellierung und Simulati-
on" runter.

Die heruntergeladene Datei liegt nun im Ordner Downloads in Ihrem home-


Verzeichnis und Sie möchten sie aber in das neue Verzeichnis mit dem Namen
ModSimPraktikum verschieben. Das können Sie mit den gewohnten Mausklicks
erledigen oder Sie befehlen es dem System über die Konsole. Folgende Befehle
werden für Sie sehr nützlich sein:

– ls - (list) listet alle Dateien in dem Verzeichnis.


– cd - (change directory) erlaubt die Navigation durch die Verzeichnisse.
Beispiele: cd Downloads, cd ../
– mkdir - (make directory) erstellt ein neues Verzeichnis
Beispiel: mkdir ModSimPraktikum
– mv - (move) verschiebt eine Datei von einem Verzeichnis in ein anderes.
Beispiel: mv Downloads/[Link] ../ModSimPraktikum/

• Entpacken Sie Datei entweder mit der Maus oder mit dem Befehl:
tar xzvf [Link]
1 Programmiersprache - C
Eines der Ziele der Programmiersprachen ist es die Erstellung neuer Programme zu
ermöglichen. Im Laufe des Praktikum werden Sie ausführbare Programme selber er-
zeugen, in welchen Sie die in der Vorlesung erlernten Methoden umsetzen und anwenden
werden.
Üblicherweise liegen die Quelldateien eines Programms in Form von gewöhnlichen Text-
Dateien, zum Beispiel uebung0.c. Die Endung in dem Dateinamen spricht für sich.
Der Text in dieser Datei ist nicht irgendein beliebiger Text, sondern einer der den
spezifischen syntaktischen Vorgaben entspricht - der Code. Wenn der Code richtig ist,
ist es für den Compiler (Übersetzer) möglich aus der Textdatei eine ausführbare Datei
(ein Programm) zu erstellen. Der Compiler ist bereits installiert und wartet nur darauf
für Sie nützlich zu sein.
Das Herzstück des Codes ist die main - Funktion. In dieser Funktion werden die Befehle
und/oder Algorithmen umgesetzt. Zu Beginn wird das einfachste Programm erstellt,
welches einen vorgegeben Text wiedergibt.
• Öffnen Sie mit dem Texteditor (z.B. kate) die Quelldatei uebung0.c
• Schreiben Sie eine main Funktion
• Binden Sie die Bibliothek stdio.h in die Datei ein.
• Benutzen Sie den Befehl
printf("Hier steht der Text, welcher ausgegeben wird");
für die Textausgabe, \n wird eine leere Zeile ausgeben.

Listing 1: Hurra
1 # include < stdio .h >
2
3 int main () {
4 printf ( " \ n Hurra , ich lerne programmieren !!! \ n " );
5 return 0;
6 }

• Navigieren Sie in der Konsole in das Verzeichnis in welcher die Code-Datei liegt
und erstellen Sie eine Programmdatei mit dem Befehl make.
• Führen Sie mit dem Befehl ./uebung0 das erstellte Programm aus.

2 Einführen von Datentypen in C


In allen Aufgaben des Praktikums werden Sie Programme schreiben, in welchen die
erlernten Methoden (Algorithmen) umgesetzt werden. Dazu werden verschiedene ma-
thematische Operationen angewendet. Um eine einfache mathematische Operation aus-
zuführen, müssen für das Programm die Datentypen definiert werden. Somit werden
die Variablen oder auch die Funktionen deklariert. Siehe die unteren Beispiele.
N → int, long
R → float, double
Nachdem eine Variable deklariert ist, ist es ratsam diese auch mit einem Wert zu
besetzen oder zu initialisieren
• Definieren Sie eine Variable "A" als eine natürliche Zahl und eine andere Variable
"b" als eine reelle Zahl

• Besetzen Sie die Variablen mit den Werten 42 und 3.14159. Achten Sie auf den
Typ der Variable.

• Schreiben Sie einen Ausgabefehl, welcher den Wert der Variable ausgibt. Benut-
zen Sie dazu den Befehl
printf("Die Werte der Variablen A=%d und b=%f", A , b );

• Erstellen Sie das Programm und falls nötig korrigieren Sie die Syntax.

• Führen Sie das Programm aus


Listing 2: Datentypen
1 # include < stdio .h >
2 int main () {
3 printf ( " \ n Hurra , ich lerne programmieren !!! \ n " );
4
5 int A ;
6 A =42;
7 float b =3.14159;
8 printf ( " Mein Programm kann die Werte ausgeben " );
9 printf ( " Der Wert der Variable A =% d \ n " ,A );
10 printf ( " Der Wert der Variable b =% f \ n " ,b );
11 printf ( " Die Werte der Variablen A =% d und b =% f " ,A , b )
12
13 return 0;
14 }

3 Funktionen
Ähnlich wie die Datentypen definiert sind, werden auch Unterfunktionen mit dem Typ
des Ausgabewertes versehen.

• Schreiben Sie Funktionen, welche die Addition, die Subtraktion, das Produkt
und den Quotienten zweier Zahlen berechnen. Hierzu siehe das Beispiel an der
Funktion summe
Listing 3: Funktionen
1 # include < stdio .h >
2
3 int summe ( int summand1 , int summand2 ){
4 int sum =0;
5 sum = summand1 + sumand2 ;
6 return sum ;
7 }
8
9 int main () {
10 printf ( " \ n Hurra , ich lerne programmieren !!! \ n " );
11 .
12 .
13 int A =42;
14 int B =15;
15 printf ( " Die Summe aus A und B ist % d " , summe (A , B ))
16
17 return 0;
18 }

• Schreiben Sie selber die Funktionen für zwei Variablen, welche die Differenz, das
Produkt und den Quotienten berechnen.
• Modifizieren Sie ihr Programm, sodass die Werte der Rechenoperationen ausge-
geben werden.

Listing 4: Funktionen
1 # include < stdio .h >
2 .
3 .
4 int main () {
5 .
6 int A =42;
7 int B =15;
8 printf ( " Die Summe aus A und B ist % d " , summe (A , B ));
9 printf ( " Die Differenz aus A und B ist % d " , differenz (A , B ));
10 printf ( " Das Produkt aus A und B ist % d " , produkt (A , B ));
11 printf ( " Der Quotient aus A und B ist % d " , quotient (A , B ));
12
13 return 0;
14 }

• Hinterfragen Sie die Richtigkeit ihres Ergebnisses und überlegen Sie, was die
Ursache für den möglichen Fehler ist?
Der Datentyp der Variablen kann im Code umgewandelt werden, dazu siehe das Beispiel
in der Funktion
Listing 5: Datentypänderung
1 # include < stdio .h >
2 .
3 .
4 double quotient ( double Divisor , double Divident ){
5 return Divisor / Divident ;
6 }
7 .
8 .
4 Arrays
Ebenfalls wie in der Mathematik, können die Variablen nicht nur skalare Werte sein,
sondern auch Vektoren, Matrizen oder andere komplexe Konstrukte. Solche zusam-
mengesetzte Variablen sind unter dem Namen Arrays bekannt. So wird zum Bei-
spiel mit "int v[3]" ein 3-komponentiger Vektor mit den ganzen Einträgen und mit
"double M[3][3]" eine quadratische 3 × 3 Matrix deklariert. Auf folgende Weise wer-
den den Vektor- oder Matrixkomponenten die Werte zugewiesen:
Listing 6: C Arrays
1 # include < stdio .h >
2 .
3 .
4 int main () {
5 int v [3];
6 double M [3][3];
7
8 v [0] = 1;
9 v [1] = 9;
10 v [2] = 25;
11
12 M [0][0] = 0.50000; M [0][1] = 0.33333; M [0][2] = 0.25000;
13 M [1][0] = 1.00000; M [1][1] = 0.66667; M [1][2] = 0.50000;
14 M [2][0] = 1.50000; M [2][1] = 1.00000; M [2][2] = 0.75000;
15 .
16 .
17 return 0;
18 }

Zu beachten ist die Indexierung der Komponenten, welche bei Null beginnt.
Die jeweilige Vektorkomponente wird aus ihrem Index nach der Formel berechnet:

v[index] = (2 ∗ index + 1)2 (1)

Die Matrix wird mit Hilfe der Formel befüllt:


index_zeile + 1
M [index_zeile][index_spalte] = (2)
index_spalte + 2
Benutzen Sie beim weiteren Programmieren die bereits definierte Funktionen produkt
und quotient.
• Deklarieren Sie einen 10-komponentigen Vektor und weisen Sie den Komponenten
die Werte nach der Formel in (1) zu.

• Deklarieren Sie eine 5 × 5 Matrix und weisen Sie den Matrix Komponenten die
Werte aus der Formel (2) zu.
Wie man merkt, ist eine explizite Wertzuweisung sehr mühsam.

5 Schleifen
Im Folgenden werden Methoden gezeigt, mit welchen die Wertzuweisungen zu einem
Kinderspiel werden. Es werden sogenannten Schleifen verwendet. Man unterscheidet
zwischen einer "while" und einer "for" Schleife. In beiden Methoden gibt es eine
Laufvariable "i", welche eine natürliche Zahl ist.
5.1 While-Schleife
So kann zum Beispiel der Vektor mit der while-Schleife wie folgt besetzt werden:
Listing 7: while-Schleife
1 # include < stdio .h >
2
3 int main () {
4 int N =10;
5 double v [ N ];
6 int i =0; // Laufvariable deklarieren und initialisieren
7
8 // while Schleife
9 while ( i < N ){ // Abbruchbedingung
10 v [ i ] = produkt (2* i +1 ,2* i +1); // Formel
11 printf ( " v [% d ]=% d " ,i , v [ i ]\ n ); // Ausgabe
12 i = i +1; // Laufvariable inkrementieren
13 }
14
15 return 0;
16 }

5.2 For-Schleife
Am Beispiel der Wertzuweisung für die Matrix nach der Formel (2) wird die Syntax
für die "for"-Schleife gezeigt:
Listing 8: for-Schleife
1 # include < stdio .h >
2
3 int main () {
4 int N =10;
5 int M [ N ][ N ];
6 int i =0; // 1. Laufvariable deklarieren und initialisieren
7 int j =0; // 2. Laufvariable deklarieren und initialisieren
8
9 for ( i = 0; i < N ; i ++){ // 1. Schleife
10 for ( j = 0; j < N ; j ++){ // 2. Schleife
11 M [ i ][ j ] = produkt ( i +1 , j +2); // Formel
12 printf ( " %4 d " ,M [ i ][ j ]); // Ausgabe
13 }
14 printf ( " \ n " );
15 }
16
17 return 0;
18 }

Aufgaben zum selbstständigen Lösen


Vektor-Matrix Produkt
• Ergänzen Sie die vorhandene Matrix zu der Dimension 10 × 10 und weisen Sie
fehlende Matrixwerte zu.
• Deklarieren Sie einen neuen Vektor "w", welcher das Resultat des Matrix-Vektor
Produkts sein wird

w = Mv (3)

• Berechnen Sie w und geben Sie seine Komponenten aus. Stimmen seine Werte
mit w = (158.17890, 316.35779, 474.53669, 632.71558, ...)T überein?

Fibonacci-Zahlen und der Goldener Schnitt


Die zwei ersten Fibonacci-Zahlen sind gegeben durch a0 = 1 und a1 = 1, die nächs-
ten werden rekursiv als Summe der zwei vorhergehenden Fibonacci Zahlen definiert:
ai = ai−1 + ai−2 . Zu Bearbeitung dieser Aufgabe verwenden Sie bitte die Vorlage
fibonacci.c

• Implementieren Sie die Vorschrift zur Berechnung der Fibonacci-Zahlen

• Berechnen Sie die 50-te Fibonacci-Zahl

• Berechnen Sie den Quotienten aus den benachbarten Fibonacci-Zahlen, welcher


in die Datei [Link] herausgeschrieben wird.

• Aktivieren Sie den plotter, indem die Variable useplotter=1 gesetzt wird.

Das könnte Ihnen auch gefallen