lehrkraefte:blc:informatik:efi-2023:exam4

This is an old revision of the document!


Assembler

  • Erklären Sie, was jeder einzelne der folgenden Befehle tut und was passieren würde, wenn man die Zeile POP A (befehl6) löschen würde.
befehl1:
   MOV A, [42]
befehl2:
   MOV A, 42
befehl3:
   CALL blabla
befehl4:
   JMP befehl1
blabla:
   PUSH A
befehl5:
   INC A
befehl6:
   POP A
befehl7:
   RET
  • Folgende Information ist gegeben:

Die Ausgabe auf die drei 7-Segment Anzeigen erfolgt auf die Adressen 253 bis 255.

Die Bits auf der Anzeige sind wie folgt nummeriert:

+--0--+
5     1
:--6--:
4     2
+--3--+
  • Schreiben Sie eine Zeile Code, die die Ziffer 4 auf die erste der drei 7-Segment Anzeigen erscheinen lässt.
  • Erklären Sie, was folgendes Programm tut (0xe8 ist die Startadresse der Textausgabe). Insbesondere, was ist der Zweck der letzten Zeile DB 0 ?
start:
    MOV A, 0xe8
    MOV B, hello
loop:
    MOV C, [B]
    CMP C,0
    JZ ende   ; JUMP if Zero
    MOV [A], C
    INC A
    INC B
    JMP loop
ende:
    HLT
hello:
    DB "Hallo"
    DB 0

Unicode

  • Was ist Unicode?
  • Was sind die konzeptuellen Unterschiede zwischen Unicode und UTF-8?
  • Was ist der Vorteil von der Verwendung von Start- und Folgebytes?

SQL

Gegeben ist eine sqlite-Datenbank mit folgenden Schema:

.schema
CREATE TABLE USER (id INTEGER PRIMARY KEY AUTOINCREMENT, 
   name TEXT UNIQUE NOT NULL);
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));

Die Tabellen sind mit folgendem Inhalt gefüllt:

sqlite> select * from user;
id  name      
--  ----------
1   vreni     
2   hans      
3   ueli      
4   margarethe
 
sqlite> select * from score;
id  userid  zeit                 score
--  ------  -------------------  -----
1   1       2024-04-30 05:41:37  120  
2   3       2024-04-30 05:41:47  104  
3   4       2024-04-30 05:41:53  84   
4   2       2024-04-30 05:42:00  120  
5   4       2024-04-30 05:42:39  144  
6   2       2024-04-30 05:42:50  110

Was liefert folgende Abfrage? Kommentieren Sie die einzelnen Teil der Abfrage.

SELECT score.score,USER.name FROM score,USER WHERE score.userid=USER.id ORDER BY score.score DESC, score.zeit ASC LIMIT 3;

Geben Sie eine Anfrage an, die alle Scores mit Zeitstempel von margarethe in absteigender Reihenfolge ausgibt.

Folgendes Schema ist definiert:

CREATE TABLE student (id INTEGER PRIMARY KEY AUTOINCREMENT,
   name TEXT NOT NULL);
CREATE TABLE freifach (id INTEGER PRIMARY KEY AUTOINCREMENT,
   name TEXT UNIQUE NOT NULL);
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));

Folgende Daten sind eingetragen: <code txt> sqlite> select * from student; id name – ———- 1 vreni 2 hans 3 ueli 4 margarethe

sqlite> select * from freifach; id name – ———- 1 python 2 javascript 3 sql

sqlite> select * from wahl; id freifachid studentid – ———- ——— 1 1 1 2 1 3 3 2 3 4 1 4 5 2 4 6 3 4 </txt>

Schreiben Sie eine Abfrage, die die Namen aller Freifächer auflistet, die von ueli gewählt wurden.

Erklären Sie folgende Anfrage und deren Ausgabe: <code txt> sqlite> select freifach.name, count(freifachid) from wahl,freifach where freifach.id=wahl.freifachid group by freifachid; name count(freifachid) ———- —————– python 3 javascript 2 sql 1 </txt>

  • lehrkraefte/blc/informatik/efi-2023/exam4.1714459364.txt.gz
  • Last modified: 2024/04/30 08:42
  • by Ivo Blöchliger