Programmieren in Pascal und Hauptseite: Unterschied zwischen den Seiten

Aus Datenschutz
(Unterschied zwischen Seiten)
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Grundsätzliches Wissen für angehende Programmierer/-innen == Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an d…“)
 
 
Zeile 1: Zeile 1:
== Grundsätzliches Wissen für angehende Programmierer/-innen ==
+
__NOTOC__
[[Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an den Fernseher (hier mit englischem Netzteil!)]]
+
= Aktuelle Meldungen =
* Jede Anwendung eines persönlichen Computers, jede Website, jede App ist ein '''Computerprogramm'''.
+
* Weitere Strafe gegen [https://netzpolitik.org/2022/gesichtserkennung-frankreich-verhaengt-hoechststrafe-gegen-clearview-ai/ Clearview AI].
* Computerprogramme sind Listen von '''Anweisungen''', die vom Computer der Reihe nach abgearbeitet werden.
+
* Aufzeichnen des gesprochenen Wortes [https://www.kostenlose-urteile.de/OVG-Nordrhein-Westfalen_19-A-40821_Unzulaessigkeit-einer-heimlichen-Tonbandaufnahme-des-gesprochenen-Wortes.news32255.htm ist verboten]!
* Diese Listen werden in ein Textprogramm (Editor, IDE) eingegeben, in Bits und Bytes übersetzt (Compiler) und dann ausgeführt.
+
* Zweifel am Incognito-Modus des Chrome - [https://winfuture.de/news,132410.html von Google]!
* Anweisungen in Programmen bestehen aus '''Schlüsselwörtern und Parametern''', die die Anweisungen genauer spezifizieren.
+
* EuGH: Vorratsdatenspeicherung ist [https://www.welt.de/politik/ausland/article241157809/EuGH-Anlasslose-Vorratsdatenspeicherung-in-Deutschland-ist-rechtswidrig.html rechtswidrig] (WELT, 20.09.2022).
* Ein Beispiel "aus dem richtigen Leben" wäre ''Starte das Auto'', wobei ''Starte'' das Schlüsselwort und ''das Auto'' der Parameter ist.
+
* Google Fonts löst [https://www.kostenlose-urteile.de/LG-Muenchen-I_3-O-1749320_Verletzung-des-Persoenlichkeitsrechts-aufgrund-automatischer-Weitergabe-der-dynamischen-IP-Adresse-an-Google-bei-Aufruf-einer-Webseite.news32160.htm Schadensersatzanspruch] in Höhe von 100.- € aus (LG München 20.01.2022).
* Ein Schlüsselwort sagt dem Computer, '''was''' zu tun ist, ein Parameter erklärt, '''womit''' etwas zu tun ist.
+
* [https://www.kostenlose-urteile.de/AG-Pforzheim_4-C-184521_Rechtsmissbraeuchlicher-Auskunftsanspruch-nach-DSGVO-bei-Drohungen-und-Beleidigungen-des-Gegners-und-dessen-Anwalt.news32157.htm Kein Missbrauch] der Auskunftspflicht der EU-DSGVO (AG Pforzheim, 05.08.2022).
 +
* 25 Jahre [https://www.deutschlandfunk.de/anti-korruptionsgesetz-korruption-bestechung-schmiergeld-regelwerk-politik-100.html Anti-Korruptionsgesetz] (Deutschlandfunk, 12.08.2022).
 +
* In eigener Sache: Kleine Artikel zu konkreten Problemkreisen sollen die "Datenschutz-Rezepte" bieten. Das erste, das ich anbiete, ist das [[Datenschutz-Rezept: Videoüberwachung]].
 +
* Ermittlungen des Bundesdatenschutzbeauftragten gegen [https://www.dr-datenschutz.de/facebook-fanpage-ermittlungen-des-bfdi-gegen-das-bundespresseamt/ das Bundespresseamt bei Facebook] (Dr. Datenschutz, 09.06.2022).
 +
* Einheitliche Bußgeldpraxis der EDSA ([https://www.datenschutz-praxis.de/pleiten-pech-pannen/einheitliche-bussgeldpraxis-edsa-legt-leitlinien-vor/ DATENSCHUTZPRAXIS], 09.06.2022)
 +
* Innenminister Herbert Reul fordert [https://www.zeit.de/politik/deutschland/2022-05/reul-datenschutz-befugnisse-missbrauch-wermelskirchen?page=2 Erleichterungen beim Datenschutz] (ZEIT, 01.06.2022, siehe auch [https://www.dr-datenschutz.de/rechtsgrundlage-wann-duerfen-daten-verarbeitet-werden/ hier]).
 +
* Deutschland ist [https://www.zeit.de/digital/datenschutz/2022-05/datenschutz-dsgvo-umfrage-cookies genervt] von Cookies (ZEIT, 25.05.2022).
 +
* Einheitliches [https://www.lto.de/recht/kanzleien-unternehmen/k/datenschutz-verstoesse-unternehmen-bussgeld-eu-dsgvo-leitlinien-edsa/ Bußgeldmodell] beschlossen (LTO, 21.05.2022).
 +
* Die Website "Dr. Datenschutz" hat in einem [https://www.dr-datenschutz.de/zensus-2022-datenschutz-probleme-und-pflicht-zur-teilnahme/ Artikel] alle Fragen zur "Volkszählung 2022" kurz und gut aufgeführt (Dr. Datenschutz, 20.05.2022).
  
== Besonderheiten von Pascal ==
+
= Fallarchiv =
* Pascal ist eine Programmiersprache, die Prof. Dr. Niklaus Wirth 1968 an der ETH Zürich definiert hat.
+
[[Datei:Terminal.png|100px|rechts]]
* Pascal wird auch heute noch benutzt, wenn auch sehr viel seltener als andere alte Sprachen.
+
* [[Fall 14/2022: Auskunft über ein entferntes Grundstück]]
* Pascal ist also sehr ''kompatibel'' zu sich selbst, weil die Definitionen immer sehr klar waren.
+
* [[Fall 13/2022: Erfassung von Besucherdaten]]
* Pascal ist eine Sprache, die heute auf sehr kleinen Computern gut ablaufen kann.
+
* [[Fall 12/2022: Vollständiges Löschen von Bewerberdaten]]
 +
* [[Fall 11/2022: Jugendparlament auf Instagram]]
 +
* [[Fall 10/2022: Auskunft nach dem IFG]]
 +
* [[Fall 09/2022: Unfallkasse möchte den Namen eines Kindes erfahren]]
 +
* [[Fall 08/2022: Eingeschränkter Zugriff auf Einwohnermeldewesen für Statistiken]]
 +
* [[Fall 07/2022: Teilnehmerliste im Beirat für Menschen mit Behinderungen]]
 +
* [[Fall 06/2022: Landesgesellschaft - wer ist verantwortlich?]]
  
== Programmieren in Pascal auf dem eigenen Computer ==
+
= Recht und Urteil =
[[Datei:Geany.png|mini|links|Die Entwicklungsumgebung GEANY in Aktion auf dem Raspi 400.]]
+
[[Datei:Houses.jpg|100px|left]]
* Um ein Programm in einer Programmiersprache zu schreiben, braucht man ein passendes Übersetzungsprogramm für diese Sprache.
 
* Solche Übersetzungsprogramme übersetzen eine Programmiersprache in die universelle Sprache aller Computer.
 
* Solcher Übersetzungsprogramme heißen '''Compiler'''.
 
* Man benötigt also für Pascal einen Pascal-Compiler und einen Editor (Textverarbeitung für Programmierer) zum Erfassen des Programms.
 
* Am besten alles zusammen: eine "Integrierte Entwicklungsumgebung (IDE)".
 
* Ich zum Beispiel benutze [https://www.lazarus-ide.org/ Lazarus] (für Windows, Linux, MacOS).
 
* Auf einem Raspberry Pi kann man einfach [https://de.wikipedia.org/wiki/Geany Geany] benutzen.
 
* Oder Sie programmieren einfach hier und jetzt [https://www.onlinegdb.com/online_c_compiler online].
 
  
== Funktionen ==
 
* Ein Problem wird zur Lösung in viele kleine Probleme zerlegt.
 
* Beispiel: "Kuchen backen" kann in "Mische Mehl, Eier...", "Heize den Backofen", "Knete den Teig" etc. aufgeteilt werden.
 
* Programme können in kleine Abschnitte eingeteilt werden, die einzelne Unter-Aufgaben erfüllen ('''Funktionen''').
 
* Diese Funktionen haben einen festgelegten '''Namen''', '''Parameter''' und können '''Werte''' an das Hauptprogramm zurück geben.
 
* Den '''Typ des Rückgabewertes''' steht vor der Funktion (hier: int = integer = ganze Zahlen).
 
* main ist die ''erste'' Funktion, die in jedem Programm aufgerufen wird. Hier startet also immer das Programm.
 
* In C-Programmen muss es wenigstens ''eine'' Funktion mit dem Namen '''main''' geben.
 
* Von main aus werden andere Funktionen des selben Programms '''aufgerufen''', sofern welche existieren.
 
* Die Hauptfunktion, das ganze Programm, gibt nach der Abarbeitung des Programms einen Wert an den Computer zurück.
 
* Ein einfaches Programm sieht also jetzt so aus ("//" leitet einen Kommentar ein):
 
<pre>
 
int main ()
 
{
 
  // Hier startet das Hauptprogramm
 
  printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");
 
}
 
</pre>
 
  
== Variable ==
+
* In einer Einladung einer Eigentümergemeinschaft von Eigentumswohnungen [https://www.kostenlose-urteile.de/OLG-Muenchen_20-U-705120_Verwalter-darf-in-Einladung-zur-Eigentuemerversammlung-wegen-Legionellenbefalls-Namen-des-betroffenen-Wohnungseigentuemers-mitteilen.news31757.htm durfte der Name des Eigentümers genannt werden], der einen Legionellebefall zu beklagen hatte.
* Variable sind '''benannte Speicherstellen''', in denen Zwischenergebnisse gespeichert werden können.
 
* Variable müssen dem C-Compiler '''erklärt''' werden, damit sie verwendet werden können: sie werden '''deklariert'''.
 
* Da Programme linear (von oben nach unten) ablaufen, sind '''Variablen erst ab der Deklaration''' nutzbar.
 
* Der Compiler muss wissen, was in den Variablen stehen soll: der '''Variablentyp'''.
 
* Typen für Variable in C: Ganzzahlen (int), Fließkommazahlen (float), Zeichen (char)
 
* Eine Deklaration sieht typischerweise so aus: <Typ><Leerzeichen><Name><Semikolon>
 
* Beispiel: <pre>int nGedachteZahl;</pre>
 
* Das "n" vor dem Namen "GedachteZahl" ist nicht notwendig. Es ist aber [https://de.wikipedia.org/wiki/Ungarische_Notation gute Sitte], den Typ (int, also numerisch) im Namen zu erwähnen.
 
* Variable können auch einen Anfangswert (Initialisierung) enthalten, der einfach dahinter geschrieben wird.
 
* Beispiel: <pre>int nGedachteZahl = 24;</pre>
 
* Die Variable nGedachteZahl ist dem Compiler ab diesem Zeitpunkt als Ganzzahl-Speicherstelle bekannt und hat den Wert 24.
 
* Eine nicht initialisierte Variable hat übrigens '''nicht''' den Wert Null sondern einen unbestimmten Wert (Vorsicht!).
 
* In unserem Beispiel brauchen wir zwei Variable: in einer steht die gedachte Zufallszahl, in der anderen die Vermutung des Benutzers.
 
* Nach der Erwähnung des Datentyps kann man weitere Variablen definieren.
 
* Unser Programm sieht bis hierher also so aus:
 
<pre>
 
  
int nGedachteZahl = 24; // muss erraten werden
+
= [[Lexikon|Lexikon der Fachbegriffe]] =
    nVermutung = 0;    // sicher ist sicher
+
{| class="wikitable"
 +
|-
 +
|[[Auftragsverarbeitung]]||[[Datenschutzfolgenabschätzung]]||[[Meldung an die Aufsichtsbehörde]]||[[Personenbezogene Daten]]
 +
|-
 +
|[[Beschäftigtendatenschutz]]||[[Datenschutzerklärung]]||[[Räumlicher Anwendungsbereich]]||[[Übermittlung]]
 +
|-
 +
|[[Besondere Kategorien personenbezogener Daten]]||[[Einwilligung]]||[[Rechtmäßigkeit]]||[[Verarbeitung]]
 +
|-
 +
|[[Betroffenenrechte]]||[[Europäische Datenschutzgrundverordnung]]||[[Sachlicher Anwendungsbereich]]||[[Verarbeitungsverzeichnis]]
 +
|-
 +
|[[Datenschutzbeauftragte]]||[[Grundsätze der Verarbeitung]]||[[Videoüberwachung]]||[[Zweckänderung]]
 +
|}
  
int main ()
+
= Prüfschema =
{
+
{{:Prüfschema Datenschutz 2021: Arbeiten wir nach der EU-DSGVO?}}
  // Hier startet das Hauptprogramm
 
  printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");
 
}
 
</pre>
 
  
== Ein- und Ausgabe ==
+
= Sonstiges =
* Ein Programm braucht grundsätzlich Anweisungen für die '''Eingabe''', die '''Verarbeitung''' und die '''Ausgabe''' von Daten.
+
* [[KURT]] - Programm zur Prüfung der Korruptionsvorbeugung (Version 21.07.2020)
* Speziell in der Programmiersprache C gibt es '''keine''' Anweisungen zur Ein- und Ausgabe.
+
* [https://www.frankwerner.org/index.php?title=Programmieren_in_Pascal:_KURT_(Korruptionsschutz) KURT (Pascal-Version, Oktober 2021)]
* C soll auf sehr vielen Computern nutzbar sein und jedes Computersystem hat andere Funktionen für Ein- und Ausgabe.
+
* [[EUGEN]] - Programm zur Prüfung von Datenschutzfällen (Version 24.06.2020)
* Deshalb liegt jedem C-Compiler eine Bibliothek von Dateien bei, die Ein- und Ausgabe des jeweiligen Computersystems ermöglicht.
+
* [[Pizza 2000]] - Einfaches Programm für Lieferdienste (Version 14.08.2020, Freizeitspaß)
* Die Funktionen in diesen Dateien werden aber alle in der gleichen Art und Weise aufgerufen ("C-Standard-Bibliotheken").
+
* [[Programmieren in Pascal: Zahlenraten]] (Version 21.12.2021, Formatübung)
* Wir verwenden hier zur Eingabe das Schlüsselwort '''scanf''' und zur Ausgabe '''printf''' wegen ihrer Ähnlichkeit.
+
* [[Programmieren in C]] (Version 06.09.2022, Formatübung)
* Im "echten Leben" tun Sie das bitte nicht: die Funktionen sind [https://dasdev.de/nachteile-von-scanf/ nicht krisensicher].
+
* [https://www.frankwerner.org/pascal/ Turbo-Pascal® online]
* Das Format von '''printf''' ist <pre> printf ("<Format>", <Variable>, <Variable>...)</pre>
+
* [https://www.scullinsteel.com/apple2/#pascal1|pascal2 Apple® Pascal online]
* Im <Format>-Teil geben Sie an, was ausgegeben werden soll.
+
* [https://c64emulator.111mb.de/index.php?site=pp_javascript&lang=de&group=c64# Commodore 64 online]
* Dabei schaffen Sie ''Platzhalter'' dort, wo später der Wert der Variablen erscheinen soll.
 
* Platzhalter bestehen aus einem Prozentzeichen und einem Buchstaben für den Typ der Variable.
 
* Die erlaubten Typen sind vielfältig. Hier einige gebräuchliche:
 
<pre>
 
d Dezimalzahl
 
f Gleitkommazahl
 
c Einzelnes Zeichen
 
s String (Mehrere Zeichen)
 
</pre>
 
* Nach der Angabe des Typs sind auch Längenangaben u. a. möglich.
 
* Dieselben Formatvorschriften gelten auch für Eingaben mit ''scanf''.
 
 
 
== Bedingungen ==
 
* Bedingungen sind '''WENN-DANN-Anweisungen'''.
 
* In C ist das entsprechende Schlüsselwort '''if'''.
 
* Der weitere Programmlauf hängt dann von '''Bedingungen''' ab:
 
<pre>
 
>  größer als
 
<  kleiner als
 
== gleich
 
!= ungleich
 
>= größer oder gleich
 
<= kleiner oder gleich
 
!  nicht
 
</pre>
 
* Beispiel: Ob eine eingegebene Zahl größer oder kleiner 1 ist soll in Worten ausgegeben werden:
 
<pre>
 
#include <stdio.h>
 
 
 
int nZahl;
 
 
 
int main()
 
{
 
  printf ("Bitte geben Sie eine Zahl ein: ");
 
  scanf ("%d", &nZahl);
 
 
 
  if (nZahl > 1)
 
    printf ("Die Zahl %d ist größer als Eins. \n", nZahl);
 
  else
 
    printf ("Die Zahl %d ist kleiner als Eins. \n", nZahl);
 
}
 
</pre>
 
* Die Befehle nach ''else'' werden immer ausgeführt, wenn <b>das Gegenteil</b> der Bedingung erfüllt ist.
 
* Das Gegenteil von '''gleich''' ist dann '''ungleich''', das Gegenteil von '''größer''' ist '''kleiner''' und umgekehrt.
 
* Man könnte ''else'' also mit ''sonst'' übersetzen: Wenn...Sonst.
 
 
 
== Fallunterscheidungen ==
 
* if-Abfragen kann man beliebig wiederholen.
 
* Bei sehr häufigen Abfragen kann das sehr unübersichtlich werden.
 
* Deshalb gibt es so genannte Fallunterscheidungen, in denen ein Wert oder eine Variable mehrfach geprüft wird.
 
* Bei Fallunterscheidungen wird jeder '''Bedingung ein Programmlauf''' zugeordnet.
 
* In C sind die entsprechenden Schlüsselwörter '''switch''' und '''case'''.
 
* Beispiel: Eine Zahl zwischen 1 und 3 soll als Wort ausgegeben werden:
 
<pre>
 
#include <stdio.h>
 
 
 
int iZahl;
 
 
 
int main ()
 
{
 
  printf ("Geben Sie eine Zahl ein: ");
 
  scanf ("%d", &iZahl);
 
 
  switch (iZahl)
 
  {
 
    case 1: printf ("Eins \n"); break;
 
    case 2: printf ("Zwei \n"); break;
 
    case 3: printf ("Drei \n"); break;
 
    default: printf ("Zahl ist nicht zwischen 1 und 3! \n");
 
  }
 
}
 
</pre>
 
* Beachten Sie, dass nach der Ausführung eines Falles mit ''break'' die Abfrage verlassen werden '''muss'''.
 
* Wenn keine Bedingung zutrifft, wird der Code hinter ''default'' ausgeführt.
 
* In ''switch'' können keine Variablen vom Typ ''char'' geprüft werden!
 
 
 
== Schleifen mit Zähler ==
 
* Bei Zählerschleifen werden Schlüsselwörter eine '''bestimmte Anzahl mal''' wiederholt.
 
* Dabei läuft eine Variable mit, die bei jedem Durchlauf '''verändert''' wird.
 
* In C ist das entsprechende Schlüsselwort '''for'''.
 
* Das Format von ''for'' ist
 
<pre>for (Startwert, Ablaufbedingung, Änderungsmaßnahme);</pre>
 
* Die Zahlen von 1 bis 10 werden also durch folgendes Programm ausgegeben:
 
<pre>
 
 
 
#include <stdio.h>
 
 
 
int nZaehler;
 
 
 
int main ()
 
{
 
  for (nZaehler = 1; nZaehler < 11; nZaehler++)
 
  {
 
    printf ("Zahl ist %d \n", nZaehler);
 
  }
 
}
 
 
 
</pre>
 
* Am Anfang der Schleife wird nZaehler mit 1 belegt (der '''Startwert''')
 
* Die Schleife läuft so lange nZahler kleiner als 11 ist (die '''Ablaufbedingung''')
 
* Bei jedem Durchlaufen der Schleife wird nZaehler um 1 erhöht (die '''Änderungsmaßnahme''', ''nZaehler = nZaehler + 1'' kann man mit ''nZaehler++'' abkürzen).
 
* Beim Durchlaufen der Schleife wird alles zwischen den folgenden Klammern { und } ausgeführt (hier also die Ausgabe von nZaehler).
 
* Die Zahlen von 1 bis 10 werden nur ausgegeben, wenn die Ablaufbedingung ''< 11'' heißt, da am Anfang entschieden wird, ob die Schleife durchlaufen werden soll.
 
* for bildet also eine so genannte Kopfgesteuerte Schleife!
 
 
 
== Kopfgesteuerte Schleifen ==
 
* Kopfgesteuerte Schleifen prüfen '''am Anfang''' der Schleife, ob die Schleife durchlaufen wird.
 
* Kopfgesteuerte Schleifen werden mit dem Wort ''while'' gebildet.
 
* Kopfgesteuerte Schleifen machen Sinn, wenn eine Schleife unter bestimmten Bedingungen keinen Sinn ergibt.
 
* Beispielsweise kann man eine Datei nicht auslesen, wenn am Anfang der Schleife das Ende der Datei bereits erreicht oder sie leer ist.
 
* Man könnte die Zahlen von 1 bis 10 auch mit einer kopfgesteuerten Schleife ausgeben:
 
<pre>
 
#include <stdio.h>
 
 
 
int nZaehler;
 
 
 
int main ()
 
{
 
  nZaehler = 0;
 
  while (nZaehler < 10)
 
  { 
 
    nZaehler++;
 
    printf ("Zahl ist %d \n", nZaehler);
 
  }
 
}
 
</pre>
 
* Sie werden alle Anweisungen aus der for-Schleife hier wiederfinden!
 
* Aber überlegen Sie mal, warum die Werte der Variablen anders sind.
 
 
 
== Fußgesteuerte Schleifen ==
 
* Fußgesteuerte Schleifen prüfen '''am Ende''' der Schleife, ob die Bedingung zum Beenden erreicht ist.
 
* Fußgesteuerte Schleifen werden mit den Schlüsselwörter ''do''..''while'' gebildet.
 
* Fußgesteuerte Schleifen machen Sinn, wenn die Bedingung innerhalb der Schleife verändert wird.
 
* Beispielsweise kann eine Schleife so lange laufen, bis während der Schleife ein bestimmter Wert eingegeben wird.
 
* Die Zahlen von 1 bis 10 mit einer fußgesteuerten Schleife:
 
<pre>
 
#include <stdio.h>
 
 
 
int nZaehler;
 
 
 
int main ()
 
{
 
  nZaehler = 0;
 
  do
 
  { 
 
    nZaehler++;
 
    printf ("Zahl ist %d \n", nZaehler);
 
  } while (nZaehler < 10);
 
}
 
</pre>
 
* Beachten Sie, wo ein Semikolon gesetzt ist (und wo nicht).
 
 
 
== Dateien ==
 
* Normalerweise kommt an dieser Stelle die Behandlung von Dateien.
 
* Programme können Dateien erzeugen, verwalten und löschen.
 
* Dateien werden heute aber "in Reinform" kaum noch benutzt.
 
* Daher verweise ich hier auf die [https://de.wikipedia.org/wiki/Embedded_SQL Einbettung von Datenbank-Befehlen in C-Programme].
 
* Nutzen Sie Datenbanken wo Sie können. Dateien sind immer nur die zweitbeste Lösung!
 
* Sie brauchen keinen Datenbank-Server. Forschen Sie z. B. nach [https://de.wikipedia.org/wiki/SQLite SQLite].
 
 
 
== Zahlenraten ==
 
* Zum Schluss ein kleines Spiel, in dem Sie einige der erklärten Regeln betrachten können:
 
 
 
<pre>
 
 
 
// (1) zahlenraten.c - Ein kleines Spiel, bei dem der Computer sich eine Zahl
 
// ausdenkt und Sie diese erraten müssen. 27.04.2021
 
 
 
// (2) Damit alle Befehle funktionieren, müssen wir sie dem C-Compiler
 
// bekannt machen. Denn viele Befehle kennt C nicht. Die werden dann
 
// aus sogenannten Standard-Bibliotheken eingelesen.
 
 
 
#include <stdio.h>  // printf und scanf
 
#include <stdlib.h> // srand und rand
 
#include <time.h>  // time
 
 
 
// (3) Jedes C-Programm hat einen Abschnitt (eine "Funktion") namens
 
// main. Hier beginnt und endet ein C-Programm immer. main muss immer
 
// da sein und muss immer main heißen!
 
 
 
int main ()
 
{
 
  // (4) Wir beschreiben ("deklarieren") Speicherstellen ("Variable"), die
 
  // wir im Programm benutzen wollen mit möglichst aussagekräftigen Namen
 
  // und einem Buchstaben am Beginn, der die Art des Inhalts bezeichnet.
 
  // i = int = integer = ganze Zahl, also keine Fließkommazahlen
 
 
 
  int iGedachteZahl;  // Hier wird die vom Computer gedachte Zahl gespeichert
 
  int iVermutung;    // Hier wird die vom Benutzer vermutete Zahl gespeichert
 
 
 
  // In C kann man Variable auch gleich mit einem Startwert belegen
 
  int iZahlMin = 0;  // Minimale Größe der gedachten Zahl
 
  int iZahlMax = 100; // Maximale Größe der gedachten Zahl
 
 
 
  // (5) Das Programm wurde gestartet. Wir geben einen Text aus:
 
  // \n = mit Zeilenumbruch
 
  // \n weglassen = ohne Zeilenumbruch
 
  printf ("Zahlenraten - Ich denke mir eine Zahl und Sie erraten diese. \n");
 
  printf ("Ich denke mir also eine Zahl zwischen %d und %d", iZahlMin, iZahlMax);
 
 
 
  // (6) Zufallszahl generieren: hier rufen wir die Funktionen auf, die wir
 
  // bei (2) mit #include oben bekannt gemacht haben: srand, time und rand.
 
  srand (time (0));
 
  iGedachteZahl = (rand() % (iZahlMax - iZahlMin + 1)) + iZahlMin;
 
 
 
  printf ("...fertig. \n"); // wird in der selben Zeile wie (5) ausgegeben
 
 
 
  // (7) Eine Schleife: die Anweisungen in den Klammern nach do
 
  // werden immer wiederholt ...
 
  do {
 
   
 
    printf ("Ihre Vermutung? ");
 
    scanf ("%d", &iVermutung);
 
 
 
    if (iVermutung > iGedachteZahl) {
 
      printf ("Die Zahl ist kleiner! \n");
 
    };
 
 
 
    if (iVermutung < iGedachteZahl) {
 
      printf ("Die Zahl ist größer! \n");
 
    }
 
 
 
  } while (iVermutung != iGedachteZahl);
 
  // ... solange iVermutung ungleich iGedachteZahl ist, sonst zurück zu (7)
 
 
 
  // (8) Hierher kommt der Computer nur, wenn iVermutung gleich iGedachteZahl ist,
 
  // die Zahl vom Benutzer also erraten wurde
 
  printf ("Richtig geraten!!!! Es war die %d!", iGedachteZahl);
 
 
 
  // (9) Unser Programm ist beendet. 0 zurück geben an das Betriebssystem,
 
  // damit es erkennt, dass das Programm fehlerfrei abgelaufen ist
 
  return 0;
 
}
 
</pre>
 

Version vom 24. Oktober 2022, 11:25 Uhr

Aktuelle Meldungen

Fallarchiv

Terminal.png

Recht und Urteil

Houses.jpg


Lexikon der Fachbegriffe

Auftragsverarbeitung Datenschutzfolgenabschätzung Meldung an die Aufsichtsbehörde Personenbezogene Daten
Beschäftigtendatenschutz Datenschutzerklärung Räumlicher Anwendungsbereich Übermittlung
Besondere Kategorien personenbezogener Daten Einwilligung Rechtmäßigkeit Verarbeitung
Betroffenenrechte Europäische Datenschutzgrundverordnung Sachlicher Anwendungsbereich Verarbeitungsverzeichnis
Datenschutzbeauftragte Grundsätze der Verarbeitung Videoüberwachung Zweckänderung

Prüfschema

  • Geben Sie dem Fall ein eindeutiges Aktenzeichen und einen eindeutigen Titel.
  • Beschreiben Sie den Sachverhalt (ohne personenbezogene Daten zu erfassen, da dies selbst ein Datenschutzfall sein könnte).
  • Prüfen Sie dann die folgenden Verhältnisse:
  1. Fand der Sachverhalt nach dem 28.05.2018, 0:00 Uhr statt?
  2. Sind personenbezogene Daten betroffen? Wenn ja, welcher Art?
  3. Werden diese Daten verarbeitet und brauchen Sie eine Datenschutzerklärung!
  4. Ist die EU-DSGVO räumlich anwendbar?
  5. Besteht eine Rechtsgrundlage oder müssen Sie eine Einwilligung einholen?
  6. Werden besondere Kategorien personenbezogener Daten verarbeitet?
  7. Besteht eine legale Auftragsverarbeitung, sind alle Betroffenenrechte gewährleistet?
  8. Muss ein Verarbeitungsverzeichnis durch Verantwortliche erstellt werden?
  9. Müssen Datenschutzbeauftragte benannt werden?
  10. Muss eine Datenschutzfolgenabschätzung abgegeben werden?
  11. Sind geeignete technische und organisatorische Maßnahmen ergriffen worden?

Sonstiges