www.plusplanet.de
Schulinfos von F. Töns



17.11.2020
http://www.plusplanet.de/miscrawhtml/canvas_basic_01.html
Speichere diese Datei ab und versuche, folgendes zu programmieren:
• Eine Linie von rechts nach links
• Eine Linie von oben nach unten
• Eine gestrichelte Linie (Richtung egal)
• Mehrere waagerechte Linien untereinander, die sich aber in der Helligkeit ändern (Links schwarz, rechts weiß)
• Mehrere waagerechte Linien untereinander, die sich abwechselnd in der Helligkeit ändern (Links schwarz, rechts weiß - nächste Linie links weiß, rechts schwarz)


10.11.2020
http://www.plusplanet.de/miscrawhtml/reverse.html


03.11.2020
Eine Demonstration eines Multiple-Choice-Tests:
http://www.plusplanet.de/quizmeister_demo/index.php


27.10.2020
Zahlenspielereien
Lege eine neue Datei mit dem Namen index.html an und kopiere diesen Inhalt dort hinein:





<!DOCTYPE html>
<html>
<head>
<title>TODO</title>
<meta charset="UTF-8">

<script>
'use strict';


// Berechnet alle Teiler der Zahl a
// Beispiel: Teilemenge(24) ist 1,2,3,4,6,8,12,24
//           Teilemenge(25) ist 1,5,25
// Ergebnis: eine Zeichenkette der Art "1,2,3,4,6,8,12,24"
function teilermenge(a) {
    return "Todo!";
}

// Berechnet die Fakultät der Zahl a
// Beispiel: faku(5) ist 1*2*3*4*5 = 120
// Ergebnis: eine ganze Zahl.
function faku(a) {
return "Todo!";
}

// Berechnet die Summe aller Zahlen von 1 bis a
// Beispiel: summeBis(5) ist 1+2+3+4+5 = 15
// Ergebnis: eine ganze Zahl.
function summeBis(a) {
return "Todo!";
}

// Berechnet das kleinste gemeinsame Vielfache der beiden Zahlen a und b.
// Beispiel: kgV(12,8) ist 24, denn sowohl 12*2=24 und 8*3=24
//           und es gibt keine kleinere Zahl mit dieser Eigenschaft.
// Ergebnis: eine ganze Zahl.
function kgV(a,b) {
return "Todo!";
}
// Berechnet den größten gemeinsamen Teiler der beiden Zahlen a und b.
// Beispiel: ggT(12,8) ist 4, denn sowohl 12 und 8 sind durch 4 teilbar
//           und es gibt keine größere Zahl mit dieser Eigenschaft.
// Ergebnis: eine ganze Zahl.
function ggT(a,b) {
var ergebnis = 1;
for(var i = a; i >= 1; i--) {
if((istPTeilbarDurchQ(a,i)=="ja") && (istPTeilbarDurchQ(b,i) == "ja")) {
ergebnis = i;
break;
}
}
return ergebnis;
}

// Überprüft, ob die testzahl eine Primzahl ist.
// Die 1 ist keine Primzahl, 2 ist eine Primzahl (Spezialfälle)
// 3 ist eine Primzahl, 4 ist keine Primzahl, da 2*2 = 4 ist. usw.
// Ergebnis: "ja" oder "nein"
function istPrimzahl(testzahl) {
var ergebnis = "ja";
if(testzahl == 1) {
return "nein";
}
for(var i = 2; i < testzahl; i++) {
if(istPTeilbarDurchQ(testzahl,i)=="ja") {
ergebnis = "nein";
}
}
return ergebnis;
}

// Überprüft, ob die Zahl p durch die Zahl q (ohne Rest) teilbar ist.
// Beispiel: 16 ist durch 8 teilbar, denn  16 durch 8 = 2
//           16 ist aber nicht durch 12 teilbar, denn 16 durch 12 = 1 Rest 4
// Ergebnis: "ja" oder "nein"
function istPTeilbarDurchQ(p,q) {
if((p%q) == 0) {
return "ja";
} else {
return "nein";
}
}

function reaktion() {
    var za = document.getElementById('myInputZahlA').value;
    var zb = document.getElementById('myInputZahlB').value;

    var ergebnis = "";
ergebnis = ergebnis + "Ist Zahl A durch B teilbar? " + istPTeilbarDurchQ(za,zb) + "<br>";
ergebnis = ergebnis + "Ist Zahl B durch A teilbar? " + istPTeilbarDurchQ(zb,za) + "<br><br>";

ergebnis = ergebnis + "Ist Zahl A eine Primzahl? " + istPrimzahl(za) + "<br>";
ergebnis = ergebnis + "Ist Zahl B eine Primzahl? " + istPrimzahl(zb) + "<br><br>";

ergebnis = ergebnis + "Der ggT von A und B ist: " + ggT(za,zb) + "<br><br>";
ergebnis = ergebnis + "Das kgV von A und B ist: " + kgV(za,zb) + "<br><br>";

ergebnis = ergebnis + "Die Teilermenge von Zahl A ist: " + teilermenge(za) + "<br>";
ergebnis = ergebnis + "Die Teilermenge von Zahl B ist: " + teilermenge(zb) + "<br><br>";

ergebnis = ergebnis + "Die Fakultät von Zahl A ist: " + faku(za) + "<br>";
ergebnis = ergebnis + "Die Fakultät von Zahl B ist: " + faku(za) + "<br><br>";

ergebnis = ergebnis + "Die Summe 1+2+3+ ... + Zahl A ist: " + summeBis(za) + "<br>";
ergebnis = ergebnis + "Die Summe 1+2+3+ ... + Zahl B ist: " + summeBis(zb) + "<br><br>";

    // ----------- Ausgabe ---------------------

    document.getElementById('textfeld').innerHTML = ergebnis;
}


</script>
</head>

<body  style="text-align:center;">

<h1>Mathematische Untersuchungen</h1>

<div id="textfeld" style="text-align:center;">
(Es wurde noch nichts generiert!)
</div>
<br> <br> <br>
<div style="text-align:center;">
Zahl A<input type="text" id="myInputZahlA"> <br>
Zahl B<input type="text" id="myInputZahlB"> <br>
<input type="button" onClick="reaktion();" value="Klick"><br>
</div>
<br><br>
<b>Aufgaben:</b><br>
1) Optimiere den Primzahltest: Man muss nicht alle Elemente bis zur Testzahl durchprobieren.<br>
2) Optimiere die ggT-Berechnung: Man muss höchstens bis zur kleineren der beiden Zahlen durchprobieren.<br>
3) Schreibe die noch fehlenden Funktionen.<br>
</body>
</html>










06.10.2020
ROT13
Baue folgenden Code in das bestehende Projekt ein:


function rot13Anwendung() {
    var eingabe = document.getElementById('myInputWort').value;
    var verschluesselterText = rot13(eingabe);  
    // ----------- Ausgabe ---------------------
    document.getElementById('textfeld').innerHTML = verschluesselterText;
}

function rot13(text) {
    text = text.toLowerCase();
    var abc = "abcdefghijklmnopqrstuvwxyz";
    var ergebnis = "";
    for(var i = 0; i < text.length; i++) {
        var zeichen = text.charAt(i);
        var zeichenIndex = abc.indexOf(zeichen);
        if (zeichenIndex != - 1) {
            zeichenIndex = zeichenIndex + 13;
            if(zeichenIndex >= 26) {
                zeichenIndex = zeichenIndex - 26;
            }
            ergebnis = ergebnis + abc.charAt(zeichenIndex);
        } else {
            ergebnis = ergebnis + zeichen;      
        }
    }
    return ergebnis;
}


Im HTML-Teil dann noch folgende Zeile

<input type="button" onClick="rot13Anwendung();" value="ROT13"><br>




02.10.2020
Ein paar Textspielereien


<!DOCTYPE html>
<html>
<head>
<title>TODO</title>
<meta charset="UTF-8">

<script>
'use strict';

function zaehleA(eingabe) {
    var erg = "";
    var zaehler = 0;
    
    for(var i = 0; i < eingabe.length; i++) {
        if(eingabe.charAt(i) == 'a') {
            zaehler = zaehler + 1;
        }
    }
    erg = "Ich zaehle "+zaehler+" mal den Vokal 'a'.";
    return erg;
}

function zaehleB(eingabe) {
    var erg = "";
    var zaehler = 0;
    
    for(var i = 0; i < eingabe.length; i++) {
        if(eingabe.charAt(i) == 'b') {
            zaehler = zaehler + 1;
        }
    }
    erg = "Ich zaehle "+zaehler+" mal den Vokal 'b'.";
    return erg;
}


function reaktion() {
    var wort = document.getElementById('myInputWort').value;

    var ergebnis = zaehleA(wort);
    ergebnis = ergebnis + "<br>" + zaehleB(wort);
    // ----------- Ausgabe ---------------------

    document.getElementById('textfeld').innerHTML = ergebnis;
}
</script>
</head>

<body>

<h1>TODO</h1>

<div id="textfeld" style="text-align:center;">
(Es wurde noch nichts generiert!)
</div>
<br> <br> <br>
<div style="text-align:center;">
Gib ein Wort ein <input type="text" id="myInputWort"> <br>
<input type="button" onClick="reaktion();" value="Klick">
</div>
Aufgaben:<br>
1a) Zähle alle 'a' in der Eingabe.<br>
1b) Zähle alle Vokale in der Eingabe.<br>
2) Gib an, ob das Wort ein Palindrom ist.<br>
3) Erzeuge die b-Sprache aus dem Wort. ("Ibinfobormabatibik ibist toboll")<br>
4) Drehe das Wort um.<br>
5) Erzeuge eine Hervorhebung in der Art    H E R V O R H E B U N G<br>
4) Ersetze jeden Vokal mit a, e, i oder u ("Drei Chinesen mit dem Kontrabass")<br>
4) Erzeuge Anagramme.<br>

</body>
</html>



22.09.2020
Spaß-Persönlichkeitsanalyse für Märchenfiguren


<!DOCTYPE html>
<html>
<head>
<title>Super-Persönlichkeitsanalyse</title>
<meta charset="UTF-8">

<script>
'use strict';

function reaktion() {
    var alter = document.getElementById('myInputAlter').value;
var groesse = document.getElementById('myInputGroesse').value;
var geschlecht = document.getElementById('myInputGeschlecht').value;

var ergebnis = "";

if(geschlecht == "m") {
ergebnis = "Aus Dir wird einmal ein mutiger Ritter!";
}
if(geschlecht == "w") {
ergebnis = "Aus Dir wird einmal eine zauberschöne Prinzessin!";
}

    // ----------- Ausgabe ---------------------

    document.getElementById('textfeld').innerHTML = ergebnis;
}
</script>
</head>

<body>

<h1>Super-Persönlichkeitsanalyse für Märchenfiguren</h1>

<div id="textfeld" style="text-align:center;">
(Es wurde noch nichts generiert!)
</div>
<br> <br> <br>
<div style="text-align:center;">
Dein Alter <input type="text" id="myInputAlter"> (in Jahre)<br>
Deine Körpergröße <input type="text" id="myInputGroesse"> (in cm)<br>
Dein Geschlecht <input type="text" id="myInputGeschlecht"> (w oder m)<br>
<input type="button" onClick="reaktion();" value="Klick">
</div>
Aufgaben:<br>
1) Erweitere die Funktion "reaktion()" so, dass eine detailliertere "Analyse" erstellt wird. Dazu musst Du if-Anweisungen verschachteln.<br>
2) Bevor eine Analyse erstellt wird, sollte überprüft werden, ob die Eingabedaten OK sind. Falls nicht, sol eine Fehlermeldung ausgegeben werden.<br>
</body>
</html>



15.09.2020
Zufalls-Songtexte mit Javascript (Teil 2)

<html>

<head>
<title>Songtext per Zufall</title>
<script>

function songtext() {
    var zeile = "";
    
    // -----------------------------------------

    // Zufallszahlen zwischen 0 und 1 erzeugen:
    var zzahlA = Math.random();
    var zzahlB = Math.random();
    
    // Je nach Wert von zzahlA ersten Satzteil wählen
    if( (zzahlA >= 0.0) && (zzahlA < 0.5) ) {
        zeile = zeile + "Your girlfriend is a ";
    }
    if( (zzahlA >= 0.5) && (zzahlA < 1.0) ) {
        zeile = zeile + "Your boyfriend is a ";
    }

    // Je nach Wert von zzahlB zweiten Satzteil wählen
    if( (zzahlB >= 0.0) && (zzahlB < 0.5) ) {
        zeile = zeile + "funny bird!";
    }
    if( (zzahlB >= 0.5) && (zzahlB < 1.0) ) {
        zeile = zeile + "boring duck!";
    }

    // -----------------------------------------
    zeile = zeile + "<br>";
    // -----------------------------------------

    // Zufallszahlen zwischen 0 und 1 erzeugen:
    var zzahlC = Math.random();
    
    // Je nach Wert von zzahlC Satztyp wählen
    if( (zzahlC >= 0.0) && (zzahlC < 0.5) ) {
        zeile = zeile + "Yeah Yeah Yeah!";
    }
    if( (zzahlC >= 0.5) && (zzahlC < 1.0) ) {
        zeile = zeile + "Oh no! Oh no! Oh no!";
    }

    // ----------- Ausgabe ---------------------

    document.getElementById('textfeld').innerHTML = zeile;
}
</script>
</head>

<body>

<h1>Zufälliger Songtext</h1>

<div id="textfeld" style="text-align:center;">
(Es wurde noch nichts generiert!)
</div>
<br> <br> <br>
<input type="button" onClick="songtext();" value="Klick">

</body>
</html>




11.09.2020
Zufalls-Songtexte mit Javascript
Kopiere folgenden Programmcode in eine Datei mit Namen songtexter.html (oder ähnlich - aber mit der Endung .html)


<html>

<head>
<title>Songtext per Zufall</title>
<script>

function songtext() {
    var name;
    name = document.getElementById('eingabe').value;
    
    // Zufallszahlen zwischen 0 und 1 erzeugen:
    var zzahlA = Math.random();
    var zzahlB = Math.random();
    
    var zeile = "Hey "+name+"! ";
    
    // Je nach Wert von zzahlA ersten Satzteil wählen
    if( (zzahlA >= 0  ) && (zzahlA < 0.3) ) {
        zeile = zeile + "Your girlfriend is a ";
    }
    if( (zzahlA >= 0.3) && (zzahlA < 0.6) ) {
        zeile = zeile + "Your boyfriend is a ";
    }
    if( (zzahlA >= 0.6) && (zzahlA < 0.8) ) {
        zeile = zeile + "Your mama is a ";
    }
    if( (zzahlA >= 0.8) && (zzahlA < 1.0) ) {
        zeile = zeile + "Your papa is a ";
    }

    // Je nach Wert von zzahlB zweiten Satzteil wählen
    if( (zzahlB >= 0.0) && (zzahlB < 0.4) ) {
        zeile = zeile + "funny bird!";
    }
    if( (zzahlB >= 0.4) && (zzahlB < 0.8) ) {
        zeile = zeile + "intelligent owl!";
    }
    if( (zzahlB >= 0.8) && (zzahlB < 1.0) ) {
        zeile = zeile + "boring hipster!";
    }

    document.getElementById('textfeld').innerHTML = zeile;
}
</script>
</head>

<body>

<h1>Zufälliger Songtext</h1>

<div id="textfeld" style="text-align:center;">
(Es wurde noch nichts generiert!)
</div>

<br>
<br>
<br>

<input type="text" id="eingabe"> <br>
<input type="button" onClick="songtext();" value="Klick">

</body>

</html>



25.08.2020
EVA: Glitch-Art
Erstelle mit deinem Wissen über Daten und deren Darstellung ein "Glitch-Art"-Kunstwerk!


14.08.2020
Zusammenhang Lightbot und Programmierung

* Ein Programmierer gibt Befehle (an den Computer oder Roboter oder...)
* Befehle werden nach der Reihe abgearbeitet
* Befehlsfolgen können zu einer Einheit zusammengefasst werden und wiederholt ausgeführt werden
* Ein Programm belegt Speicherplatz, und der ist nicht unendlich groß


     Bit : Kleinste Informationseinheit:
           "An oder Aus" oder "1 oder 0" oder "schwarz oder weiß"
    Byte : Ein Byte besteht aus 8 Bits / "ein Buchstabe",
           256 Werte sind damit darstellbar
Kilobyte = 1024 Byte
Megabyte = 1024 Kilobyte
Gigabyte = 1024 Megabyte
Terabyte = 1024 Gigabyte




14.08.2020

Light-Bot

Das LightBot-Spiel: www.plusplanet.de/swf_lightbotMUELL/lightbot.html

Grundlagen Windows

* Erstelle auf dem Desktop ein Verzeichnis mit dem Namen "Informatikhelden"
* Erstelle ein Dokument (ein einfacher Kurztext wie "Hallo Informatik" genügt) in der Textverarbeitungssoftware "Open-Office" und speichere es ab in dem Ordner "Informatikhelden"
* Erstelle ein Dokument in dem Programm "Notepad" oder "Notepad++" (beides auf dem Desktop zu finden) mit dem gleichen Text wie in der vorigen Aufgabe. Auch Dieses Dokument soll wieder in dem Verzeichnis "Informatikhelden" abgespeichert werden.
* Schaue Dir den Inhalt des Ordners "Informatikhelden" mit dem Datei-Explorer an und erkläre, welche Unterschiede die beiden abgespeicherten Dateien besitzen.

Daten und Information

Speichere folgenden Text als Textdatei (z.B. bild.txt) auf den Desktop. Ändere dann den Namen in bild.pbm
Ein Doppelclick auf die Datei startet dann nicht mehr den Texteditor, sondern einen Bildbetrachter.
Erkläre, was du siehst, und warum du das siehst! Lies ggf. den Text https://de.wikipedia.org/wiki/Portable_Anymap auf der Wikipedia dazu.

P4 144 16
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
zzzzzzzzOOOOOOOO
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz
OOOOOOOOzzzzzzzz



Daten im Zahlenformat anzeigen

Dafür gibt es z.B. einen Dienst im Internet: https://hexed.it/

Daten hörbar machen:

Download von Audacity, einem Audioeditor:
http://downloads.sourceforge.net/portableapps/AudacityPortable_2.1.1.paf.exe?download
Beliebige Daten können damit "hörbar" gemacht werden, indem man folgendes tut:
Datei->Importieren...->Raw-Audio
Dann erscheint ein Fenster mit Einstellungen (am Besten die Voreinstellungen unverändert lassen).

Daten sichtbar machen

Mit dem Programm IrfanView kann man Daten als Grafik interpretieren lassen, wenn man folgende Schritte befolgt:
Zunächst muss fügt man am Anfang der Textdatei folgende Zeile ein:
P4 200 150
(Dies ist notwendig, damit IrfanView die Datei als Grafikdatei im PBM-Format erkennt. Dabei bedeuten die Zahlen 200 und 150, dass das Bild 200 Pixel breit und 150 Pixel hoch ist)
Als nächstes muss man die Dateinamenserweiterung von .txt in .pbm umbenennen. Schließlich kann man diese Datei dann in IrfanView hineinladen.


03.11.2020
Multiple-Choice-Test:
http://www.plusplanet.de/quizmeister_20201103_ifef/index.php