Grundlagen der Programmierung 4. Vorlesung 07.11.2017 1
Konzepte Imperative Programmierung neue Befehle erstellen Prozedurale Programmierung: Top/Down Programmierung Wiederholungen vermeiden (DRY-Prinzip: Don t repeat yourself) Parameter 2
Konzepte Operatoren Kontrollstrukturen Bibliotheksfunktionen Ausdrücke Bedingungen 3
Variablen sind Platzhalter für Werte haben: Namen Wert (Datentyp) stehen für Werte Zuweisung 4
Matlab https://de.mathworks.com/ Kostenpflichtig (Campuslizenz) Installieren oder Online Registrieren: https://de.mathworks.com/login Anmelden mit HTW-Emailadresse! Activation Key von http://serviceportal.f1.htw-berlin.de/matlabcampus-lizenz.html 5
MATLAB Programm erstellen 1 2 3 Ausgabe 6
MATLAB Programm erstellen 1. New -> Script oder Ctrl.-N oder + klicken 2. Programm in Editor eingeben dabei: Befehle mit Semikolon ; abschließen Kommentarzeilen beginnen mit % 3. Pfeil bei RUN drücken 7
Beispiel: R = U/I (Matlab) Wert zuweisen Wert von Tastatur einlesen u = input('spannung: '); i = input('strom: '); fprintf('widerstand: %f Ohm\n', u/i ); Platzhalter Wert für Platzhalter Ergebnis berechnen und ausgeben 8
Nicht schön... In C: Absturz 9
Abhilfe Fehlerhafte Eingabe Fehlerhafte Eingabe abfangen Korrekte Eingabe erzwingen 10
In C #include <stdio.h> int main() { int u,i; printf("spannung: "); scanf("%d", &u); do { printf("strom: "); scanf("%d", &i); } while ( i == 0 ); printf("widerstand: %f", u/i); return 0; } In Matlab nicht ganz so einfach :( 11
Schleifen in C: do...while do block while ( bedingung ); block: eine Anweisung oder Anweisungen in { } block bed JA NEIN 12
Schleifen in C: while... while ( bedingung ) block bed JA NEIN block 13
Kontrollstrukturen: Schleifen while Kopfgesteuert: Bedingung wird vor dem Schleifenblock überprüft Schleifenblock wird evtl. nie durchlaufen do... while Fußgesteuert: Bedingung wird nach dem Schleifenblock überprüft Schleifenblock wird mindestens einmal durchlaufen 14
Schleifen in Matlab Kopfgesteuert: while bedingung anweisungen end Fußgesteuert L 15
do... while Schleife in Matlab Methode 1: Schleifeneintritt erzwingen setze bedingung auf wahr Beispiel: while bedingung anweisungen end Test auf Gleichheit I = 0; while I == 0 I = input('strom:'); end 16
do... while Schleife in Matlab Methode 2: Schleife mit boolscher Variable steuern Beispiel: ok = false; while ~ok anweisungen ok = endebedingung erfüllt end ok = false; while ~ok I = input('strom:'); ok = ( I ~= 0 ); end log. NICHT ungleich 17
do... while Schleife in Matlab Methode 3: Schleife abbrechen while true anweisungen if endebedingung erfüllt break; end end Beispiel: while true I = input('strom:'); if I ~= 0 break; end end Endlosschleife! 18
Gesamtes Programm U = input('spannung: '); ok = false; while ~ok I = input('strom: '); ok = (I ~= 0); end fprintf('widerstand: %f Ohm\n\n', U/I); 19
Aufgabe Lies ganze Zahlen von der Tastatur ein und summiere diese, bis 0 eingegeben wurde. Dann gib die Summe aus. 20
Aufgabe summe = 0; eingabe = 1; while eingabe ~= 0 eingabe = input('zahl: '); summe = summe + eingabe; end fprintf("summe: %d", summe); 21
Variablen, Datentypen, Ausdrücke 22
Bezeichner Für Namen von Variablen, Funktionen,... Beginnen mit Buchstaben Nur Buchstaben, Zahlen und '_' erlaubt Keine reservierten Worte von Matlab Erlaubt: x x1 eingabe summe bloeder_langer_name Nicht erlaubt: 12 2x end while bloeder_#@&%!!_name Case sensitive (halloduda ungleich HalloDuDa ) 23
Reservierte Wörter break case catch classdef continue else elseif end for function global if otherwise parfor persistent return spmd switch try while Test: ist Zeichenkette ein reserviertes Wort? Test: ist Zeichenkette eine Funktion? 24
Variablen Initialisierung/Zuweisung summe = 0; 1x1 double Variablen sind in Matlab grundsätzlich Felder Standard Datentyp: double 25
Numerische Datentypen 26
Zahlendarstellungen 27
Speicherinhalte: Bits Hardware Spannung Ladung Magnetisierung Codierung 0V ungeladen unmagnetisiert 0 5V geladen magnetisiert 1 1 Bit entspricht der Information 0 oder 1 28
Zahlendarstellung Zählen mit Bits: 0 1 10 11 100 101 110 Zahlen werden als Bitfolgen gespeichert 29
Binärzahlen Binärzahl b n...b 2 b 1 b 0,b i {0, 1} Umrechnung in Dezimalsystem n i=0 b i 2 i Beispiel: 1010102 = 1 2 5 + 0 2 4 +1 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 32 + 8 + 2 = 42 30