Informatik 1 Übung 4
Übung 4 Nachbesprechung
Ich gebe nicht auf Code schön formatieren if (x > 0) { a = 1; // Kommentar. if (y > 0) { c = 1; } else { d = 1; } e = 1;
For-Schleife Zählvariable nicht im Körper ändern Zählvariable nicht ausserhalb deklarieren for(int i=0; i<10; i++) { k += i; } int i; for(i=0; i<10; ) { k += i; i++; } for(int i=0; i<10; i++) { if(...) i--; }
For-Schleife Von 0 bis N-1 zählen N mal durchlaufen for(int i=0; i<N; i++) { }
Vorlesung 5 wiederholung
Arrays Bisher: einfache Datentypen Neu: Array char, int, float, double, bool Neu: Array 'Liste' mit fixer Länge Alle Elemente haben gleichen Typ Zugriff auf Elemente über Index
Arrays Beispiel: Messwertreihe Temperatur von 7 aufeinanderfolgenden Tagen Tag # Temperatur 1 16.1 2 17.2 3 21.7 4 21.5 5 21.6 6 18.1 7 17.9
Arrays - Deklaration Länge muss konstant sein typ variable[länge]; // 500 aufeinanderfolgende Zeichen char text[500]; // N aufeinanderfolgende Zeichen const int N = 500; char text[N]; // ein Vektor mit drei Komponenten float v1[3];
Arrays - Deklaration Länge muss konstant sein typ variable[länge]; // 500 aufeinanderfolgende Zeichen char text[500]; // N aufeinanderfolgende Zeichen const int N = 500; char text[N]; string text; // ein Vektor mit drei Komponenten float v1[3];
Arrays - Zugriff Indizierung: [0..N-1] Index konstant oder Ausdruck vom Typ int variable[index]; int i = ...; // i-tes Zeichen auf 'A' setzen text[i] = 'A'; // x-Komponente auslesen float x = v1[0];
Arrays - Zugriff Indizierung: [0..N-1] Index konstant oder Ausdruck vom Typ int variable[index]; int i = ...; // i-tes Zeichen auf 'A' setzen text[i] = 'A'; for(int i=0; i<N; i++) { text[i] = 'A' + i; } // x-Komponente auslesen float x = v1[0];
Arrays - Zugriff Zugriff ausserhalb vom Bereich Programm stürzt evtl. ab Wert von anderen Variablen wird evtl. verändert Sicherheitslücke! Immer Gültigkeit vom Index prüfen!
Arrays - Interne Abbildung Aufeinanderfolgende Zellen im Speicher Jedes Byte im Speicher hat eine 'Adresse' 'Adresse' von Variablen bestimmt Compiler char text[5]; Adresse Inhalt 1000 ??? 1001 text[0] 1002 text[1] 1003 text[2] 1004 text[3] 1005 text[4] 1006
Bitweise Operationen Logisch Bitweise Arbeitet auf bool einzelne Bits eines char/int/... UND && & true && false == false 001101 & 101011 == 001001 ODER || | true || false == true 001101 | 101011 == 101111 Exkl. ODER (XOR) ^ 001101 ^ 101011 == 100100 NICHT/Komplement ! ~ !true == false ~0010 == 1101
XOR Exklusives Oder Beide Argumente verschieden -> wahr Beide Argumente gleich -> falsch A B A xor B false true
Übung 5 Übung
Pseudocode Kombination Code/natürliche Sprache Gleiche Kontrollstrukturen (for, while, if, ...) Beliebige Befehle Prozedur: euklid Zweck: Euklidischer Algorithmus zur Berechnung des größten gemeinsamen Teilers Parameter: natürliche Zahlen m, n 1. Falls m > n, dann m und n miteinander vertauschen. 2. Jetzt gilt m <= n. 3. Solange m > 0 wiederhole 4. Setze n = n − m. 5. Falls m > n, dann m und n miteinander vertauschen. 6. Jetzt gilt m <= n. Ergebnis: n.
Charakter-Array einlesen cin.getline(text, length) // Liest maximal 500 Zeichen in das Array text ein char text[500]; cin.getline(text, 500); // Liest maximal 'length' Zeichen in das Array text ein const int length = 500; char text[length]; cin.getline(text, length);