lehrkraefte:blc:informatik:efi-2023:exam4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:efi-2023:exam4 [2024/04/30 08:43]
Ivo Blöchliger [Freifächer]
lehrkraefte:blc:informatik:efi-2023:exam4 [2024/04/30 08:58] (current)
Ivo Blöchliger [Assembler]
Line 53: Line 53:
 </code> </code>
  
 +
 +  * Erklären Sie Sinn und Zweck der folgenden Registern:
 +    * IP (Instruction Pointer), wird oft auf PC (Programm Counter) genannt.
 +    * SP (Stack Pointer)
 +      * allgemeine Verwendung
 +      * speziell im Zusammenhang mit den Instruktionen ''CALL'' und ''RET''
 +  * Bei jeder Berechnung werden die Flags Z (Zero) und C (Carry) gesetzt oder gelöscht, je nach Resultat der Berechnung.
 +    * Welche «Befehlsfamilie» nutzt diese Flags und welchem Programmierbefehl entspricht das am ehesten in Python?
 +    * Was genau macht der Befehl ''CMP'' mit den beiden Operanden?
  
 ====== Unicode ====== ====== Unicode ======
Line 94: Line 103:
  
 </code> </code>
-Was liefert folgende Abfrage? Kommentieren Sie die einzelnen Teil der Abfrage.+  * Was liefert folgende Abfrage? Kommentieren Sie die einzelnen Teil der Abfrage.
 <code sql> <code sql>
 SELECT score.score,user.name FROM score,user WHERE score.userid=user.id ORDER BY score.score DESC, score.zeit ASC LIMIT 3; SELECT score.score,user.name FROM score,user WHERE score.userid=user.id ORDER BY score.score DESC, score.zeit ASC LIMIT 3;
 </code> </code>
  
-Geben Sie eine Anfrage an, die alle Scores mit Zeitstempel von ''margarethe'' in absteigender Reihenfolge ausgibt. +  * Geben Sie eine Anfrage an, die alle Scores mit Zeitstempel von ''margarethe'' in absteigender Reihenfolge ausgibt.  
 + 
 +<hidden Dump der Datenbank> 
 +Kann mit ''sqlite3 freifach.sqlite < freifach.dump'' (oder einfach copy-paste in sqlite) importiert werden. 
 +<code sql highscore.dump> 
 +PRAGMA foreign_keys=OFF; 
 +BEGIN TRANSACTION; 
 +CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL); 
 +INSERT INTO user VALUES(1,'vreni'); 
 +INSERT INTO user VALUES(2,'hans'); 
 +INSERT INTO user VALUES(3,'ueli'); 
 +INSERT INTO user VALUES(4,'margarethe'); 
 +CREATE TABLE score (id INTEGER PRIMARY KEY AUTOINCREMENT,  
 +  userid INT NOT NULL,  
 +  zeit TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,  
 +  score INT,  
 +  FOREIGN KEY(userid) REFERENCES USER(id)); 
 +INSERT INTO score VALUES(1,1,'2024-04-30 05:41:37',120); 
 +INSERT INTO score VALUES(2,3,'2024-04-30 05:41:47',104); 
 +INSERT INTO score VALUES(3,4,'2024-04-30 05:41:53',84); 
 +INSERT INTO score VALUES(4,2,'2024-04-30 05:42:00',120); 
 +INSERT INTO score VALUES(5,4,'2024-04-30 05:42:39',144); 
 +INSERT INTO score VALUES(6,2,'2024-04-30 05:42:50',110); 
 +DELETE FROM sqlite_sequence; 
 +INSERT INTO sqlite_sequence VALUES('user',4); 
 +INSERT INTO sqlite_sequence VALUES('score',6); 
 +COMMIT; 
 +</code> 
 +</hidden>
  
 ===== Freifächer ===== ===== Freifächer =====
Line 142: Line 179:
 </code> </code>
  
-Schreiben Sie eine Abfragedie die Namen aller Freifächer auflistetdie von ''ueli'' gewählt wurden. +<hidden Dump der Datenbank> 
 +Kann mit ''sqlite3 freifach.sqlite < freifach.dump'' (oder einfach copy-paste in sqlite) importiert werden. 
 +<code sql freifach.dump> 
 +PRAGMA foreign_keys=OFF; 
 +BEGIN TRANSACTION; 
 +CREATE TABLE student (id INTEGER PRIMARY KEY AUTOINCREMENT, 
 +name TEXT NOT NULL); 
 +INSERT INTO student VALUES(1,'vreni'); 
 +INSERT INTO student VALUES(2,'hans'); 
 +INSERT INTO student VALUES(3,'ueli'); 
 +INSERT INTO student VALUES(4,'margarethe'); 
 +CREATE TABLE freifach (id INTEGER PRIMARY KEY AUTOINCREMENT, 
 +name TEXT UNIQUE NOT NULL); 
 +INSERT INTO freifach VALUES(1,'python'); 
 +INSERT INTO freifach VALUES(2,'javascript'); 
 +INSERT INTO freifach VALUES(3,'sql'); 
 +CREATE TABLE wahl (id INTEGER PRIMARY KEY AUTOINCREMENT, 
 +freifachid INTEGER NOT NULL, 
 +studentid INTEGER NOT NULL, 
 +FOREIGN KEY(freifachid) REFERENCES freifach(id), 
 +FOREIGN KEY(studentid) REFERENCES student(id)); 
 +INSERT INTO wahl VALUES(1,1,1); 
 +INSERT INTO wahl VALUES(2,1,3); 
 +INSERT INTO wahl VALUES(3,2,3); 
 +INSERT INTO wahl VALUES(4,1,4); 
 +INSERT INTO wahl VALUES(5,2,4); 
 +INSERT INTO wahl VALUES(6,3,4); 
 +DELETE FROM sqlite_sequence; 
 +INSERT INTO sqlite_sequence VALUES('student',4); 
 +INSERT INTO sqlite_sequence VALUES('freifach',3); 
 +INSERT INTO sqlite_sequence VALUES('wahl',6); 
 +COMMIT; 
 +</code> 
 +</hidden>
  
-Erklären Sie folgende Anfrage und deren Ausgabe:+  * Erklären Sie folgende Anfrage und deren Ausgabe:
 <code txt> <code txt>
 sqlite> select freifach.name, count(freifachid) from wahl,freifach where freifach.id=wahl.freifachid group by freifachid; sqlite> select freifach.name, count(freifachid) from wahl,freifach where freifach.id=wahl.freifachid group by freifachid;
Line 154: Line 223:
 sql                         sql                        
 </code> </code>
 +
 +  * Schreiben Sie eine Abfrage, die die Namen aller Freifächer auflistet, die von ''ueli'' gewählt wurden.
 +  * Erklären Sie, warum eine dritte Tabelle ''wahl'' nötig ist, insbesondere warum diese Information nicht sinnvoll in den Tabellen ''student'' und ''freifach'' gespeichert werden kann.
 +
 +
  • lehrkraefte/blc/informatik/efi-2023/exam4.1714459393.txt.gz
  • Last modified: 2024/04/30 08:43
  • by Ivo Blöchliger