Informatik 1
description
Transcript of Informatik 1
Ich gebe nicht auf
• Code schön formatierenif (x > 0) { a = 1; b = 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--;}
Arrays
• Bisher: einfache Datentypen– 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 TagenTag # 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 Zeichenchar text[500];
// ein Vektor mit drei Komponentenfloat v1[3];
// N aufeinanderfolgende Zeichenconst int N = 500;char text[N];
Arrays - Deklaration
• Länge muss konstant sein
typ variable[länge];
// 500 aufeinanderfolgende Zeichenchar text[500];
// ein Vektor mit drei Komponentenfloat v1[3];
// N aufeinanderfolgende Zeichenconst int N = 500;char text[N];
string text;
Arrays - Zugriff
• Indizierung: [0..N-1]• Index konstant oder Ausdruck vom Typ int
variable[index];
int i = ...;
// i-tes Zeichen auf 'A' setzentext[i] = 'A';
// x-Komponente auslesenfloat 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' setzentext[i] = 'A';
// x-Komponente auslesenfloat x = v1[0];
for(int i=0; i<N; i++){ text[i] = 'A' + i;}
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
Adresse
Inhalt
1000 ???
1001 text[0]
1002 text[1]
1003 text[2]
1004 text[3]
1005 text[4]
1006 ???
char text[5];
Bitweise OperationenLogisch 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 false false
false true true
true false true
true true false
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.