Informatik -- Lehrveranstaltung vom 25.03.2024
(EN google-translate)
(PL google-translate)
Motivation: Anwendungsbeispiele zum Programmieren im technischen und künstlerischen Bereich

Neuste Entwicklungen: Es wird nicht mehr selber programmiert
chatGPT
Angaben für chatGPT, um das nachfolgende Hello-world-Programm zu erhalten:
#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; }
Code 0-1: Von chatGPT geliefertes Programm.
Die ergänzende Aufforderung liefert:
#include <iostream> // Diese Zeile fügt die iostream-Bibliothek hinzu, die Ein- und Ausgabefunktionen enthält. int main() { // Hier beginnt die Hauptfunktion des Programms. std::cout << "Hello, World!" << std::endl; // Diese Zeile gibt den Text "Hello, World!" auf der Konsole aus. return 0; // Die main-Funktion gibt 0 zurück, was signalisiert, dass das Programm erfolgreich beendet wurde. } /* Die iostream-Bibliothek ermöglicht den Zugriff auf Ein- und Ausgabefunktionen, während std::cout verwendet wird, um Text auf der Konsole auszugeben. Schließlich gibt return 0; am Ende der main-Funktion an, dass das Programm erfolgreich abgeschlossen wurde. */
Code 0-2: Das von chatGPT mit Kommentaren ergänzte Programm.
Neuronale Netze und Deep Learning
Das erkennen von Postleitzahlen und Straßenschilder wird nicht programmiert, sondern von Neuronalen Netzen gelernt. Dies kann bedeuten, dass sich Kurse zu Programmieren in naher Zukunft dramatisch ändern könnten. Hier ist ein Vorgeschmack auf die Leistungen, die heutzutage auf diesem Gebiet erzielt werden:
Beispiele für Reinforced Learning:


Nachteile selbstlernender Systeme:
|
Siehe auch:


Datenstrukturen
|
Vorstellung einiger Datentypen von C/C++

Um ein besseres Verständnis davon zu erlangen, was Variablen sind, lohnt sich eine Beschäftigung mit einem besonderen Datentyp, den (Adress-)Zeigern, oder auch Pointern:

Bei der Lösung eines Berechnungs-Problems mit Hilfe eines Computerprogramms muss also 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-3: Programmbeispiel berechnung.cpp

Bild 0-1: Eingaben und Ausgaben im Terminal zu berechnung.cpp
Um dieses Prgramm besser verstehen zu können, kann ein Flussdiagramm verwendet werden:

Ü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-4: fluss.cpp
Aufgabe 2
|
#include<iostream> using namespace std; int main(void) { x=7; cout<<endl<<"x="<<x<<endl; return 0; }
Code 0-5: 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-6: 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-7: f3.cpp
Aufgabe 4
|
Aufgabe 4b
wie 4, aber:
|
#include<iostream> #include<math.h> using namespace std; int main(void) { double x,y,z; cout<<endl<<"x= "; cin>>x; cout<<endl<<"y= "; cin>>y; z = x*x+y*y; z = sqrt(z); cout<<endl<<"z ="<<z<<endl; return 0; }
Code 0-8: Musterlösung für 4b
