Inhalte zur Vorlesungswoche #2, Informatik 1 im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Google-Chrome
Themen
|
1 Warum Informatik -- Ein weiterer Grund
Neben der Tendenz, dass immer mehr Geräte heutzutage auch ein eingebettetes System besitzen, ist ein weiterer Grund dafür, warum es wichtig im Ingenieurbereich ist, Informatik zu lernen, die rasante Entwicklung der Künstlischen Intelligenz.
Während in den letzten Jahrzehnten CAE-Software (Computer Aided Engineering) Einzug in die Ingeinieurbüros gehalten hat, zeichnet sich gerade etwas Ähnliches in Bezug auf KI ab.
So konnte folgende verbesserte, mit Kommentaren versehene Darstellung des Quelltextes von letzter Woche mit Hilfe von chatGPT gewonnen werden. Folgendes wurde an chatGPT gesendet:
Hallo chatGPT
Bitte füge bei dem nachfolgenden Programm Kommentare ein.
Es dient dazu, die sechs Zahlen in dem Array zu sortieren.
Hier kommt das Programm:
#include <iostream>
using namespace std;
int main(void)
{
//Plätze: 0 1 2 3 4 5
...
Code 0-1: Anfrage im Prompt von chatGPT.
...und dies ist die Antwort von chatGPT:
#include <iostream>
using namespace std;
int main(void)
{
// Array wuerfel enthält die zu sortierenden Zahlen.
// Plätze (Index): 0 1 2 3 4 5
int wuerfel[] = {6, 3, 1, 4, 2, 5};
// Array ergebnis wird verwendet, um die sortierten Zahlen zu speichern.
int ergebnis[] = {0, 0, 0, 0, 0, 0};
// Variable letzter_wert speichert den zuletzt gefundenen kleinsten Wert,
// damit er im nächsten Durchlauf nicht erneut berücksichtigt wird.
int letzter_wert = 0;
// Äußerer Schleifenblock für 6 Durchläufe (entspricht der Anzahl der Zahlen).
for(int durchlauf = 0; durchlauf <= 5; durchlauf++)
{
// Variable kleinster_wert wird mit einem Wert initialisiert,
// der größer als alle möglichen Werte im Array ist (hier 7).
int kleinster_wert = 7;
// Innere Schleife, um das Array wuerfel nach dem kleinsten Wert zu durchsuchen,
// der größer als letzter_wert ist.
for(int i = 0; i <= 5; i++)
{
// Wenn der aktuelle Wert größer als letzter_wert ist und kleiner als kleinster_wert,
// wird kleinster_wert auf diesen Wert aktualisiert.
if(wuerfel[i] > letzter_wert && wuerfel[i] < kleinster_wert)
{
kleinster_wert = wuerfel[i];
}
}
// Der kleinste gefundene Wert wird im ergebnis-Array an der Position des aktuellen Durchlaufs gespeichert.
ergebnis[durchlauf] = kleinster_wert;
// letzter_wert wird auf den neu gefundenen kleinsten Wert gesetzt, damit dieser
// in den nächsten Durchläufen nicht nochmal berücksichtigt wird.
letzter_wert = kleinster_wert;
}
// Diese Zeile gibt die sortierten Werte aus dem ergebnis-Array aus.
cout << ergebnis[0] << ergebnis[1] << ergebnis[2]
<< ergebnis[3] << ergebnis[4] << ergebnis[5] << endl;
// Beendet das Programm erfolgreich.
return 0;
}
Code 0-2: Sortierprogramm mit Kommentaren, die durch chatGPT hinzugefügt wurden.
2 Entwicklungsgeschichtliches Global Problem Solver (GPS) einst und Deep Learning heute
Konnektionistische versus Symbolische KI
Das neuronale Netz
3 Wie funktioniert das Zusammenspiel zwischen Computer-Hardware, Quelltext, Compiler und Maschinencode?
|
|
|
10_Informatik1/04_Informationstheorie/01_EDV
|
10_Informatik1/03_Hardware/01_Rechnerarchitektur
|
4 Zurück zu unserem ersten Programm
#include <iostream>
using namespace std;
int main(void)
{
cout<<endl<<"Hello world!"<<endl<<endl;
return 0;
}
Code 0-3: Das erste C/C++ - Programm.
Bild 0-1: Der gleiche Quelltext im mousepad-Editor geöffnet mit Context-Highlighting.
Bild 0-2: Screenshot vom Terminal: Notwendige Compiler-Befehle, um das Programm in Maschinensprache zu übersetzen und es anschließend laufen zu lassen.
Bild 0-3: Sicht auf die Datei hello.cpp mit dem Quelltext und dem ausführbaren Programm hello mit Hilfe des Dateimanagers.
|
10_Informatik1/07_Sprachen/01_C_Syntax
...alternativ Verwendung von chatGPT (Antwort):
// Einbinden der Bibliothek, die notwendig ist, um Ein- und Ausgabeoperationen durchzuführen
#include <iostream>
// Die Nutzung des Namensraums "std", um auf Standardbibliotheksfunktionen wie "cout" zuzugreifen,
// ohne den Präfix "std::" vor jedem Aufruf schreiben zu müssen
using namespace std;
// Hauptfunktion des Programms, der Einstiegspunkt jedes C++-Programms
int main(void)
{
// Ausgabe von "Hello world!" auf die Konsole.
// "endl" sorgt dafür, dass eine neue Zeile nach der Ausgabe eingefügt wird
cout << endl << "Hello world!" << endl << endl;
// Rückgabewert 0 bedeutet, dass das Programm erfolgreich beendet wurde
return 0;
}
Code 0-4: Durch chatGPT kommentierte Version des Hello-world-Programms.
Zusätzliche durch chatGPT gewonnene Anmerkungen:
|
5 Back to the very beginning: Variablen, cout und cin.
Eine Darstellung zu den Datentypen in C/C++ findet sich auf den statischen Seiten hier und wird im Unterricht behandelt:
10_Informatik1/07_Sprachen/02_Datentypen
Bei der Lösung eines Berechnungs-Problems mit Hilfe eines Computerprogramms muss beachtet werden, welche Art von Daten verarbeitet wird.
Will man beispielsweise Volumina von Quadern machen, deren Kantenlängen in Metern mit Nachkommastellen angegeben werden, so muss man so genannte Fließkommazahlen benutzen.
Will man dagegen Mengenangaben verwalten, so genügt die Verwendung ganzer Zahlen, so genannter Integer-Zahlen.
Geht es wiederum darum, den Programmfluss unterschiedlich zu steuern, je nachdem, ob eine Bedingung erfüllt ist (true), oder nicht (false), so ist man auf den Datentyp bool angewiesen.
Zur Repräsentation von Zeichen (Buchstaben a..z, A..Z, Satz- und Sonderzeichen, aber auch einzelner Ziffern, als Zeichen verstanden), kann der Datentyp char verwendet werden.
Nachfolgend findet sich ein Programmbeispiel, in dem zwei der verschiedenen Datentypen vorkommen:
#include<iostream>
#include<math.h>
using namespace std;
int main(void)
{
char c;
double h,b,t,volumen;
cout<<endl<<"Möchten Sie das Volumen eines Quaders berechnen?"<<endl;
cout<<"Geben Sie an j für ja, n für nein: ";
cin>>c;
if(c=='j')
{
cout<<endl<<"Höhe in Metern h=";
cin>>h;
cout<<endl<<"Breite in Metern b=";
cin>>b;
cout<<endl<<"Tiefe in Metern t=";
cin>>t;
volumen = h*b*t;
cout<<endl<<"Das Volumen des Quaders beträgt "<<volumen<<"m^3."<<endl;
}
else
{
cout<<endl<<"Das Programm wird beendet."<<endl;
}
return 0;
}
Code 0-5: Programmbeispiel berechnung.cpp
Bild 0-4: Eingaben und Ausgaben im Terminal zu berechnung.cpp
Um dieses Prgramm besser verstehen zu können, kann ein Flussdiagramm verwendet werden:
10_Informatik1/05_Softwareentwicklung/01_Flussdiagramm
ÜBUNGEN
Aufgabe 1
Fertigen Sie von nachfolgendem Programm ein Flussdiagramm an:
#include<iostream>
using namespace std;
int main(void)
{
char c='n';
cout<<endl<<"Möchten Sie Hallo ausgeben? j/n:";
cin>>c;
if(c=='j')
{
cout<<endl<<"Hallo"<<endl;
}
else
{
cout<<endl<<"Tschüss"<<endl;
}
return 0;
}
Code 0-6: fluss.cpp
Bild 0-5: Studentische Lösung zur Aufgabe 1.
Aufgabe 2
|
#include<iostream>
using namespace std;
int main(void)
{
x=7;
cout<<endl<<"x="<<x<<endl;
return 0;
}
Code 0-7: f1.cpp
#include<iostream>
using namespace std;
int main(void)
{
int zahl=0;
cout<<endl<<"Geben Sie eine Zahl zwischen -10 und +10 ein: ";
cin<<zahl;
if(zahl>0)
{
cout<<endl<<"Die Zahl ist größer als Null."
}
else
{
cout<<endl<<"Die Zahl ist kleiner oder gleich Null."
}
return 0;
}
Code 0-8: f2.cpp
Aufgabe 3
|
#include<iostream>
using namespace std;
int main(void)
{
int x=5;
int y=7;
int *z=&x;
cout<<endl<<"*z="<<*z<<endl;
x=y;
cout<<endl<<"*z="<<*z<<endl;
y=x;
cout<<endl<<"*z="<<*z<<endl;
if(z==&y)
{
cout<<endl<<"A";
}
if(z==&x)
{
cout<<endl<<"B";
}
if(&y==&x)
{
cout<<endl<<"C";
}
return 0;
}
Code 0-9: f3.cpp
Aufgabe 4
|
Aufgabe 4b
wie 4, aber:
|