From 15ef06a1a07757c8f7590784438b82a873fbdc02 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 1 Oct 2008 16:32:55 +0200 Subject: Initialer Import. --- contents/compag/main.php | 42 +++ contents/linux/kommandos.php | 288 +++++++++++++++++++++ contents/linux/main.php | 37 +++ contents/linux/rechte.php | 88 +++++++ contents/projekte/main.php | 31 +++ contents/projekte/robocup.php | 100 +++++++ contents/projekte/verwaltung.php | 26 ++ contents/projekte/webdesign.php | 26 ++ contents/wissen/cpp-tutorial/01-helloworld.php | 53 ++++ contents/wissen/cpp-tutorial/02-konsole.php | 59 +++++ contents/wissen/cpp-tutorial/03-integer.php | 79 ++++++ .../wissen/cpp-tutorial/04-kontrollstrukturen.php | 111 ++++++++ contents/wissen/cpp-tutorial/05-switch.php | 76 ++++++ contents/wissen/cpp-tutorial/06-schleifen.php | 73 ++++++ contents/wissen/cpp-tutorial/07-funktionen.php | 61 +++++ contents/wissen/cpp-tutorial/08-arrays.php | 81 ++++++ contents/wissen/cpp-tutorial/09-strings.php | 67 +++++ contents/wissen/cpp-tutorial/10-klassen.php | 115 ++++++++ contents/wissen/hardware.php | 124 +++++++++ contents/wissen/main.php | 28 ++ contents/wissen/ruby.php | 103 ++++++++ 21 files changed, 1668 insertions(+) create mode 100644 contents/compag/main.php create mode 100644 contents/linux/kommandos.php create mode 100644 contents/linux/main.php create mode 100644 contents/linux/rechte.php create mode 100644 contents/projekte/main.php create mode 100644 contents/projekte/robocup.php create mode 100644 contents/projekte/verwaltung.php create mode 100644 contents/projekte/webdesign.php create mode 100644 contents/wissen/cpp-tutorial/01-helloworld.php create mode 100644 contents/wissen/cpp-tutorial/02-konsole.php create mode 100644 contents/wissen/cpp-tutorial/03-integer.php create mode 100644 contents/wissen/cpp-tutorial/04-kontrollstrukturen.php create mode 100644 contents/wissen/cpp-tutorial/05-switch.php create mode 100644 contents/wissen/cpp-tutorial/06-schleifen.php create mode 100644 contents/wissen/cpp-tutorial/07-funktionen.php create mode 100644 contents/wissen/cpp-tutorial/08-arrays.php create mode 100644 contents/wissen/cpp-tutorial/09-strings.php create mode 100644 contents/wissen/cpp-tutorial/10-klassen.php create mode 100644 contents/wissen/hardware.php create mode 100644 contents/wissen/main.php create mode 100644 contents/wissen/ruby.php (limited to 'contents') diff --git a/contents/compag/main.php b/contents/compag/main.php new file mode 100644 index 0000000..276a2cd --- /dev/null +++ b/contents/compag/main.php @@ -0,0 +1,42 @@ + + + +
+

+ Informationen zur CompAG +

+

+ Die Computer-AG (kurz CompAG) ist eine Gruppe von Schülern, + die in Eigeninitiative, ohne Leitung durch einen Lehrer, + das Internetcafe der Lauenburgischen Gelehrtenschule Ratzeburg + administrieren, und miteinander ihr Wissen über Computer erweitern. + Dabei lernen sie z.B. den Umgang mit unterschiedlichen Computersprachen (C, C++, Ruby, Html, Php), + und üben sich im Umgang mit dem alternativem Betriebssystem Linux. +

+

+ Wer bei der CompAG mitmachen möchte, + kann einfach vorbeisehen. + Es gibt keine Anwesenheitspflicht, + aber da die CompAG auf Eigeninitiative beruht, + ist die Anwesenheit und Motivation der Mitglieder + Grundlage und Voraussetzung für den Erfolg dieser AG. +

+

+ Die CompAG existiert ca. seit Sommer 2003. +

+
+ + diff --git a/contents/linux/kommandos.php b/contents/linux/kommandos.php new file mode 100644 index 0000000..95f15d3 --- /dev/null +++ b/contents/linux/kommandos.php @@ -0,0 +1,288 @@ + + + +
+

Linux Konsolenbefehle

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name Beschreibung Anwendung
apropos Suche in manual
bash Kommandointerpreter
cat Datei lesen cat [Dateiname]
chmod Rechte ändern (change modus) siehe Rechteverwaltung
chgrp Gruppe ändern (change group) chgrp [Gruppe] [Datei]
chown Benutzer ändern (change owner,
nur als root möglich)
cd verzeichnis wechseln (change directory) cd [Verzeichnisname]
cd ~ ins homeverzeichnis
cd .. ins Elternverzeichnis
cd / ins Wurzelverzeichnis
clear Bildschirm leeren
cp kopieren (copy) cp [Quelle] [Ziel]
cp -r Kopieren eines Ordners
date zeigt Datum und Uhrzeit
echo Geschriebenes zurückgeben
eterm Konsole
exit aktuellen Prozess beenden
gedit grafischer Editor
groups Ausgabe der Gruppen des Benutzers
--help Hilfe [Suchbegriff] --help
info Hilfe
kill beendet Prozess kill [Nummer des Prozesses]
kill -sigkill zwingt Prozess zum Beenden kill -sigkill [Name des Prozesses]
less Datei lesen (beenden mit q) [Dateiname]
ln -s symbolischen Link erstellen (link) [Zielobjekt]
ls Verzeichnisinhalt lesen (list) ls [Verzeichnisname]
ls -a gesamten Verzeichnisinhalt lesen
ls -lh Verzeichnisinhalt mit mehr
Information lesen (Rechte, ...)
ls -R Verzeichnisinhalt rekursiv lesen
ls -A . und .. werden nicht angezeigt
mkdir Verzeichnis erstellen mkdir [gewünschter Name]
mv Verschieben/umbenennen mv [Quelle] [Ziel]
mv -r Bewegen eines Ordners
man ausführliche Hilfe (manual) man [Suchbegriff]
nano Texteditor
ps -A zeigt alle Prozesse an
pstree zeigt Hierarchie der Prozesse
pwd gibt momentanen Pfad aus
rm löschen einer Datei (remove) rm [Dateiname]
rm -i gefragt löschen
rmdir Verzeichnis löschen rmdir [Verzeichnisname]
rmdir -r auch Tochterverzeichnisse löschen
rmdir -i Verzeichnis gefragt löschen
shutdown Herunterfahren
ssh Zugriff auf andere Computer ssh [Name des Computers]
touch leere Datei erstellen touch [gewünschter Name]
wc Wörter zählen (wordCount) wc [Dateiname]
wc -l Zeilen zählen (line)
which sucht nach Programmen which [Objektname]
who Zeigen, wer auf diesem Computer
eingeloggt ist
whoami Ausgabe des eingeloggten Nutzernamens
+
+ + diff --git a/contents/linux/main.php b/contents/linux/main.php new file mode 100644 index 0000000..cf8764b --- /dev/null +++ b/contents/linux/main.php @@ -0,0 +1,37 @@ + + + +
+

+ Linux +

+

+ Linux ist (wie Windows) ein Betriebssystem, auch OS (Operating System) genannt, allerdings gibt es zahlreiche Unterschiede + zu vermerken. +

+

+ Man kann es auf vielen verschiedenen Geräten installieren, auch auf älteren Computer, es gibt sogar eine Distribution + (Version) für den iPod! Es ist ein Multiuser-System, was bedeutet, dass es dafür programmiert wurde, dass an einem Computer mehrere + Accounts für verschiedene Benutzer erstellt werden können. Das war bei Windows nicht von Anfang an so, erst seit XP. Dadurch ist + diese Eigenschaft dort nicht besonders gut integriert. Aber das wohl ausschlaggebendste Argument für Linux ist, dass es Open Source + ist. Das heißt, dass man es sich kostenlos aus dem Internet laden darf und frei auf den Quelltext zugreifen darf. + Dadurch wird es von vielen Menschen auf der gesamten Welt immer weiter entwickelt und verbessert. +

+

+ +

+
+ + diff --git a/contents/linux/rechte.php b/contents/linux/rechte.php new file mode 100644 index 0000000..91cf779 --- /dev/null +++ b/contents/linux/rechte.php @@ -0,0 +1,88 @@ + + +
+

+ Rechteverwaltung unter Linux +

+

+ Dieser Artikel beschäftigt sich mit der Rechteverwaltung unter Linux, + und versucht, auf unterschiedliche Aspekte selbiger einzugehen. + Dafür versuchen wir zuerst einen Einblick in die aktuellen Einstellungen zu erlangen. + Hier verwenden wir den Consolenbefehl "ls -lh", wodurch wir folgende Informationen zu einem Ordner erhalten: +

+
    +
  1. Die Rechte der Ordner und Datein
  2. +
  3. Die Anzahl der Objekte, die ein Ordner enthält
  4. +
  5. Die Besitzer der Objekte
  6. +
  7. Die Gruppe, der ein Objekt angehärt
  8. +
  9. Der Speicher, den die Objekte belegen
  10. +
  11. Das Änderungsdatum (Jahr, Monat, Tag, Uhrzeit)
  12. +
  13. Der Name des Objektes
  14. +
+

+ Gehen wir nun näher auf die einzelnen Zeichen ein, die wir bei den Rechten sehen. + Der erste Buchstabe gibt an, ob es sich bei dem Objekt um ein Verzeichnis handelt, was durch ein "d" gekennzeichnet ist. + Ist es jedoch eine Datei, sehen wir lediglich einen Strich. +

+

+ Die nachfolgenden Zeichen sind in drei Gruppen einzuteilen, die jeweils aus drei Buchstaben bestehen. + Als erstes sehen wir die Rechte des Besitzers der Datei, + danach die der Mitglieder der Gruppe, der die Datei angehört + und abschließend die Rechte aller anderen Benutzer. +

+

+ Dabei gibt es folgende Buchstaben: +

+ +r Leserecht (read) +w Schreibrecht (write) +x Ausführrecht (Execute) + +

+ Sehen wir anstelle eines Buchstabens einen Strich, bedeutet das, dass diese Personengruppe das Recht nicht hat. + Sind wir aber der Besitzer eines Objekts, oder gar Administrator, kann man diese Rechte ohne Probleme ändern. + Das machen wir mit dem Konsolenbefehl "chmod". + Wir schreiben nun den Namen der Datei oder des Verzeichnisses, an der wir die Rechteänderung vornehmen möchten. + Hinter dem Befehl schreiben wir den Buchstaben, der der Gruppe entspricht, deren Rechte wir ändern. +

+ +u Besitzer (user) +g Gruppe (group) +o andere (other) +a alle (all) + +

+ Danach schreiben wir entweder "+" oder "-" und dann den Buchstaben für das Recht, das wir dieser Gruppe hinzufÃŒgen + oder entziehen möchten. +

+

+ Ein Problem ist, dass andere Benutzer, solange sie Schreibrecht auf den Ordner haben, in dem eine deiner Dateien liegt, diese einfach löschen können. + Das kann man verhindern, indem man "+s" zu einer Gruppe hinzufügt. +

+

+ Es ist auch möglich, mehrere Rechteänderungen für eine Datei auf einmal vorzunehmen. + Auch kann der Besitzer einer Datei oder eines Verzeichnisses kann auch die Gruppe ändern, + vorausgesetzt, man ist in dieser Mitglied. +

+

+ Zu Beginn ist jeder Benutzer nur in der Gruppe, die seinen eigenen Benutzernamen trägt. + In der Group-Datei "/etc/group" kann man lesen, welcher Benutzer sich in welcher Gruppe befindet. + Der Administrator ist in der Lage, diese Datei zu bearbeiten, wobei die Benutzernamen durch Kommata abgetrennt sind. + Auch kann nur der Administrator den Befehl "chown" anwenden, der eine Datei einem anderen Besitzer zuteilt. +

+
+ diff --git a/contents/projekte/main.php b/contents/projekte/main.php new file mode 100644 index 0000000..8c87d69 --- /dev/null +++ b/contents/projekte/main.php @@ -0,0 +1,31 @@ + + + +
+

+ Projekte +

+

+ Wir hatten leider noch nicht besonders viele Projekte, ausführlich dokumentiert ist bisher nur der Robocup 2007, zu dem hier auch Informationen über den Roboter, mit dem wir an diesem teilnahmen, zu finden sind. Momentan sind wir in den Vorbereitungen für den Rococup 2008. +

+

+ Diese Website ist das Ergebnis unseres Websdesign-Projekts. +

+

+ Als nächtest werden wir ein Benutzerverwaltungssystem für unsere Schule programmieren. +

+
+ + diff --git a/contents/projekte/robocup.php b/contents/projekte/robocup.php new file mode 100644 index 0000000..d8f725d --- /dev/null +++ b/contents/projekte/robocup.php @@ -0,0 +1,100 @@ + + + +
+

+ RoboCup +

+

+ Bereits beim Robocup 2006 hat die CompAG erfolgreich an der Rescue-Disziplin teilgenommen und wurde bei der Weltmeisterschaft in der vorderen Hälfte platziert. Nun hat die Mitgliederzahl stark zugenommen, sodass wir uns in zwei Teams aufspalteten: CompAG-Rescue und CompAG-Soccer. Unglücklicherweise konnte sich das Soccer-Team aufgrund eines Hardwaredefekts nicht für die German Open qualifizieren. Mit dem Roboter Phobos erreichten wir, das Team CompAG-Rescue, den 12. Platz bei der Vorqualifikation in Magdeburg. Er besteht größtenteils aus Lego und konnte den Parcours weit nicht fehlerfrei bewältigen, denn er war nur mit einigen Helligkeitssensoren zur Linien- und Opfererkennung und Infrarotsensoren zum Umfahren der Hindernisse ausgestattet. Aus diesem Grund haben wir beschlossen, einen vollkommen neuen Roboter zu konstruieren. +

+

+ Hardware +

+

+ Die Grundidee der Konstrunktion von Ares ist ein rundes Holzgerüst, das mit drei Omniwheels und halbkreisförmig angeordneten Sensoren an der Unterseite ausgestattet ist. +

+

+ Unter den Bauteilen befinden sich: +

+

+ + +

+ Funktionen der Bauteile: +

+ +
+ 1 Hauptplatine RN-Control 1.4 Mega32 +
+

+ Die bei der Qualifikationsrunde für den Roboter Phobos verwendete Platine wurde durch eine neue ersetzt. Der Grund dafür ist, dass sie eine größere Anzahl an Ports besitzt, die wir wegen der größeren Sensorenzahl benötigen. Zusätzlich besitzt sie 8 LEDs zur Werteausgabe und einen Lautsprecher, sodass wir keinen zusätzlichen mehr benötigen. Die Hauptplatine empfängt Werte von den Sensoren und steuert dementsprechend die Motortreiber. Sie ist auf einem zusätzlichen Stockwerk angebracht, da sie auf der Grundfläche keinen Platz mehr fand. +

+ +
+ 2 Motortreiber RN-VN2 DualMotor +
+

+ Wie schon an dem Namen zu erkennen ist, kann jede der beiden Motortreiber zwei Motoren ansteuern. Die Geschwindigkeit wird durch ein PWN-Signal von der Hauptplatine geregelt. +

+
+ 5 Helligkeitssensoren von Qfix +
+

+ Sie sind in der Form eines Halbkreises an der Unterseite des runden Grundgerüsts befestigt und dienen der Linienerkennung. Eine von ihnen an die Analogports der Hauptplatine gesendete Spannung wird mithilfe des dahinter befindlichen ADC (Analog-Digital-Wandler) in eine Zahl zwischen 0 und 1023 umgewandelt, die die Hauptplatine auswertet: Je größer die Zahl ist, desto dunkler ist die vom Sensor wahrgenommene Umgebung. Es sind fünf anstelle von nur drei Helligkeitssensoren, wie es bei Phobos, der bei Bodenunebenheiten zwischen den Räumen oft vom Weg abgekommen ist, der Fall war. Wir hoffen, durch die Verbesserung eine Punkteeinbuße zu verhindern. +

+
+ 1 Farbsensor TCS 230 +
+

+ Das ist ein Bauteil, das Phobos nicht besaß; der alte Roboter verwendete für die Opfererkennung genau wie für die Linienerkennung die Helligkeitssensoren. Diese arbeiteten dabei aber sehr unzuverlässig; grüne Opfer wurden nie erkannt, silberne übersehen. Dieses Problem soll der Farbsensor lösen, denn er ist in der Lage nacheinander die Helligkeiten der Farben rot, grün und blau zu messen. Die ermittelten Werte werden über eine Frequenz an die Digitalports der Hauptplatine gesendet. Das Programm überprüft die empfangenen Daten und vergleicht die Kombination der empfangenen Werte (RGB-Wert) mit denen der grünen und silbernen Opfer. Eine LED sorgt dafür, dass die Sensoren an der Unterseite des Roboters korrekt arbeitet können. +

+
+ 2 Ultraschall-Entfernungssensoren SRF10 +
+

+ Auf dem zusätzlichen Stockwerk des Roboters, auf dem sich auch die Platine befindet, sind die Sensoren in Fahrtrichtung an einem Stück Maschendraht angebracht. Sie liegen relativ hoch, um nicht vom Batteriepack behindert zu werden, das direkt davor befestigt ist. Durch die Versendung von Ultraschallwellen könne sie die Entfernung zu eventuellen Hindernissen messen. Diese errechnet der Sensor anhand der Dauer, die die ausgesendeten Wellen für ihre Rückkehr benötigen, und schickt einen cm-Wert über den I2C-Port, der komplexe Informationen empfangen kann, an die Hauptplatine, die den Motorsteuerungen daraufhin mitteilt, wie die Motoren sich zu verhalten haben. Für diese Art der Hinderniserkennung haben wir uns entschieden, da mit den Infrarotsensoren, die wir beim Qualifikationsturnier für Phobos verwendeten, einige Schwierigkeiten aufgetreten sind: Um einige Hindernisse war mit schwarzem Tape umwickelt, das das Licht schluckte, sodass es nicht zurückkam; das Hindernis wurde somit nicht erkannt und konnte nicht umfahren werden. +

+
+ 3 Getriebemotoren 50:1 385ER +
+

+ Die beiden Lego-Motoren, die bei Phobos verwendet wurden, ersetzten wir durch diese leistungsstarken Motoren, die von den Motortreibern angesteuert werden. +

+
+ 3 Omniwheels 60mm soft +
+

+ Eines der größten Probleme von Phobos war, dass er mit seinen zwei gewöhnlichen Lego-Rädern und einem Gleiter an der Vorderseite, dessen Rutscheigenschaften jedoch unzureichend waren, nicht wendig genug war, um den scharfen Kurven des Parcours zu folgen. Das wollten wir bei der neuen Konstruktion mit Omniwheels ändern. Sie sind mit Epoxidharz an der Motorachse befestigt. +

+
+ 1 Batteriepack 12V +
+

+ Ein 8x12V-Batteriepack, welches vorne am Roboter montiert ist, versorgt den Roboter mit Energie. Seine Befestigung bilden zwei Ringe aus Flachbandkabeln. +

+

+
+ + diff --git a/contents/projekte/verwaltung.php b/contents/projekte/verwaltung.php new file mode 100644 index 0000000..ac4ce46 --- /dev/null +++ b/contents/projekte/verwaltung.php @@ -0,0 +1,26 @@ + + + +
+

+ Verwaltung +

+

+ Dieses Projekt ist noch in Planung. + Wir halten euch über die Fortschritte auf dem Laufenden. +

+
+ + diff --git a/contents/projekte/webdesign.php b/contents/projekte/webdesign.php new file mode 100644 index 0000000..9ae9d7e --- /dev/null +++ b/contents/projekte/webdesign.php @@ -0,0 +1,26 @@ + + + +
+

+ Webdesign +

+

+ Das Produkt dieser Lerneinheit ist die Seite, die ihr vor euch seht! + Wir haben html, css und php behandelt. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/01-helloworld.php b/contents/wissen/cpp-tutorial/01-helloworld.php new file mode 100644 index 0000000..3755d94 --- /dev/null +++ b/contents/wissen/cpp-tutorial/01-helloworld.php @@ -0,0 +1,53 @@ + + + +
+

+ 1. Hello World +

+

+ + // Dies ist ein Kommentar. + /* Dies ist auch ein Kommentar, + nur ist er mehrzeilig. */ + +#include <iostream> + +int main() +{ + std::cout << "Hello World!" << std::endl; + return 0; + +} + + +

+

+ In dieser Zeile binden wir die Datei iostream ein. Diese stellt uns die später benutzten Objekte std::cout und +std::endl zur Verfügung. +main ist der Name der Eintrittsfunktion. Das Programm beginnt mit der Ausführung der main-Funktion. +Die geschweiften Klammern { und } begrenzen den Block, der den Code, der zur main-Funktion gehört, darstellt. +std::cout ist der Name der Standard-Ausgabe. Mit << werden Objekte an die Standardausgabe geschickt, hier z. B.der Text "Hello World!". Texte, die keine Programmbefehle sind, werden in C++ im Allgemeinen mit " " begrenzt. std::endl ist ein besonderes Objekt, dass einen Zeilenumbruch erzeugt. Wie jeder Befehl ist dieser mit einem Semikolon begrenzt, man kann einen sehr langen Befehl also auf mehrere Zeilen aufteilen. +Der Return-Befehl beendet das Programm und gibt den Rückgabewert des Programms an. Ein Wert von 0 wie hier bedeutet, dass das Prgramm fehlerfrei abgelaufen ist. +

+

Aufgabe:

+

+Erstelle selbstgeschrieben, nicht kopiert, +ein eigenes helloWorld-Programm, +das eine von dir festgelegte Zeichenkette ausgibt. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/02-konsole.php b/contents/wissen/cpp-tutorial/02-konsole.php new file mode 100644 index 0000000..4656607 --- /dev/null +++ b/contents/wissen/cpp-tutorial/02-konsole.php @@ -0,0 +1,59 @@ + + + +
+

+ 2. Konsole +

+

+ +#include <iostream> + +int main() +{ + char cEingabe; + + std::cout << "Bitte geben sie ein einzelnes Zeichen ein," << std::endl; + std::cout << gefolgt von einem Druck auf <Enter>" << std::endl; + + std::cin >> cEingabe; + + std::cout << "Ihre Eingabe war: " << cEingabe << std::endl; + + return 0; +} + + +

+

+cEingabe ist eine Variable. Variablen werden benutzt, um Werte zu speichern, mit denen das Programm operieren soll. +Hier handelt es sich um eine Variable vom Typ char, das steht für Character ist bedeutet Buchstabe. Eine +Variable vom Typ char kann einen einzelnen Buchstaben fassen. +

+

+std::cin ist das Gegenteil von std::cout, es handelt sich um die Standardeingabe. Mit >> wird eine Eingabe in eine Variable eingelesen. Da cEingabe vom Typ char ist, muss ein einzelner Buchstabe eingeben werden. +

+

+Wie man sieht, kann man mit std::cout auch Variableninhalte ausgeben. Dabei wird der Variablenname nicht in " " geschrieben, sonst würde ja nur der Name der Variable als Text und nicht der Inhalt der Variable ausgegeben werden. +

+ +

Aufgabe:

+

+Erstelle ein Programm, das den Benutzer mit seinen Initialien begrüßt. +Lasse den Benutzer dabei diese Initialien selbst eingeben. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/03-integer.php b/contents/wissen/cpp-tutorial/03-integer.php new file mode 100644 index 0000000..ff23570 --- /dev/null +++ b/contents/wissen/cpp-tutorial/03-integer.php @@ -0,0 +1,79 @@ + + + +
+

+ 3. Integer +

+

+ +#include <iostream> + +int main() +{ + + int iX = 5; + int iY, iZ; + + + std::cout << "Ein paar Werte: " << iX << "|" << iY << "|" << iZ << std::endl; + std::cout << "Geben sie bitte zwei Zahlen ein, bestätigen mit <Enter>" << std::endl; + + std::cin >> iY; std::cin >> iZ; + + iX = iY * iZ; + + std::cout << "Das Produkt der Zahlen: " << iX << std::endl; + std::cout << "Die Summe der Zahlen: " << iY + iZ << std::endl; + + return 0; +} + + +

+

+int steht für Integer, das bedeutet Ganzzahl. Hier wird sie auf den Startwert 5 initialisiert. +Man kann auch mehrere Variablen gleichzeitig deklarieren. +Auch die Eingabe funktioniert bei ints wie bei chars, nur dass man jetzt Zahlen eingeben muss. +Man kann int-Variablen genauso wie andere Variablen ausgeben. Dabei ist zu beachten, dass iY und iZ noch keine sinnvollen Werte haben. +Man kann in C++ sehr einfach rechnen, hier wird iX auf das Produkt von iY und iZ gesetzt. +

+

+Einige Grundrechenarten: +

+ + + + + + + + + + +
iX = iY + iX;Addition
iX = iY - iX;Subtraktion
iX = iY * iZ;Multiplikation
iX = iY / iZ;Division (bei ints wird hierbei immer abgerundet)
iX = iY % iZ;Modulo (Rest der Division, Berechnung wie der Rest einer Division in der Grundschule)
iX += 5;Addition mit Zuweisung (iX wird um 5 erhöht)
iX -= iY;Subtraktion mit Zuweisung (iX wird um iY erniedrigt)
iX++;Inkrementierung (Addition von 1)
iY--;Dekrementierung (Subtraktion von 1)
+ +

Aufgabe:

+

+Probiere die im Kommentar aufgeführten Grundrechenarten aus, +und verstehe ihre Wirkung (% ist nicht immer gleich verständlich). +Programmiere dann einen einfachen Taschenrechner, +der zu zwei eingegebenen Zahlen automatisch +die 4 Grundrechenarten anwendet, +und alle Ergebnisse ausgibt. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php b/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php new file mode 100644 index 0000000..a26d85c --- /dev/null +++ b/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php @@ -0,0 +1,111 @@ + +

',$content);*/ +?> + +

+

+ 4. Kontrollstrukturen +

+

+ +#include <iostream> + +int main() +{ + int iX; + + std::cout << "Geben sie eine Zahl ein!" << std::endl; + std::cin >> iX; + + if(iX == 0) + { + std::cout << "iX ist 0!" << std::endl; + } + + + else if(iX > 0) + { + std::cout << "iX ist nicht 0!" << std::endl; + } + + return 0; +} + + +

+

+if bedeutet "wenn", der nachfolgende Block wird nur ausgeführt, wenn die Bedingung wahr ist. Die Bedinung ist, dass iX 0 ist; zum Vergleich wird == benutzt, da = ja schon der Zuweisungsoperator ist.else heißt "sonst" und darf nur nach einem if-Block stehen. Er wird ausgeführt, wenn der if-Block +nicht ausgeführt wird. +

+

+Weitere Informationen: +

+

+Es gibt Variablen vom Typ bool, +sie speichern die Werte true oder false, +die unserem Wahr oder Falsch entsprechen. +bool a = true; ist ein Beispiel dafür. +

+

+Bei einer if-Abfrage gibt es folgende Operatoren: +

+ + + + + + + + + + + +
==gleich
!=ungleich
>größer
<kleiner
>=größergleich
<= kleinergleich
!nicht
()In Abfragen wie in Rechnungen kann man Klammern benutzen, um Zusammenhänge darzustellen.
&&und
||oder
+

+Beispiele: +

+ + + + +
a == bist a gleich b?
a != bist a ungleich b?
(a == b) || (a == c)ist a gleich b oder a gleich c?
+ +

Aufgabe:

+

+Benutze die if-Abfragen, +um eine verbesserte Version des Taschenrechners zu schreiben, +bei der es möglich ist, die Grundrechenart für die Berechnung +selbst auszuwählen. +

+

+Stelle fest, wie die Variablen gesetzt sein müssen, damit die Abfrage true ist: +

+

+ + int a,b,c; + bool x,y,z; + if(!(a > (b + c) || a < (b + c)) && (x || !(y != z))) + +

+

+Vereinfache diese Anweisung! +

+ + +

+
+ + diff --git a/contents/wissen/cpp-tutorial/05-switch.php b/contents/wissen/cpp-tutorial/05-switch.php new file mode 100644 index 0000000..89a325e --- /dev/null +++ b/contents/wissen/cpp-tutorial/05-switch.php @@ -0,0 +1,76 @@ + + + +
+

+ 5. Switch +

+

+ +#include <iostream> + +int main() +{ + int iX = 0; + + std::cout << "Geben sie eine Zahl ein." << std::endl; + std::cin >> iX; + + switch(iX) + { + case 0: + std::cout << "Nichts kannst du dir doch selbst merken ;)" << std::endl; + break; + case 1: + std::cout << "Hagga!" << std::endl; + case 2: + std::cout << "Hast du 1 oder 2 eingegeben?" << std::endl; + break; + case 5: + std::cout << "Ein echter Discordier! ;)" << std::endl; + break; + default: + std::cout << "Was, denkst du, sollte hier stehen?" << std::endl; + } + + return 0; +} + + +

+

+switch ist eine Art Mehrfach-if, das einen Ausdruck (hier die Variable iX) auf mehrere Werte überprüft. +

+

Aufgabe:

+

+Verstehe die Funktionsweise der switch-Anweisung, +und stelle fest, was das fehlende break; nach case 1: bewirkt. +

+

+Vielleicht magst du auch den Taschenrechner auf ein schöneres Menü umbauen, +bei dem du nun mithilfe von switch Entscheidungen fällst. +Dazu kann der Benutzer einen char eingeben, +Bedenke beim überprüfen aber, dass chars z. B. so abgefragt werden, +wenn du ein Zeichen meinst: +

+

+ +char c = 'a'; +if(c == 'b') + +

+
+ + diff --git a/contents/wissen/cpp-tutorial/06-schleifen.php b/contents/wissen/cpp-tutorial/06-schleifen.php new file mode 100644 index 0000000..508c106 --- /dev/null +++ b/contents/wissen/cpp-tutorial/06-schleifen.php @@ -0,0 +1,73 @@ + + + +
+

+ 6. Schleifen +

+

+ +#include <iostream> + +int main() +{ + int iX, iY; + iX = 0; + + while(iX != 5) + { + std::cout << "Geben sie eine diskordische Zahl ein!" << std::endl; + std::cin >> iX; + } + + + for(int i = 0; i < 25; i++) + { + std::cout << "iX * " << i << ": " << i * iX << std::endl; + } + + return 0; +} + + +

+

+Das erste ist eine while-Schleife. Sie wird so lange ausgeführt, wie die Bedingung wahr ist, +in diesem Fall also solange iX ungleich 5 ist. +

+

+Die for-Schleife folgt folgendem Schema: +

+

+for(Variable; Bedingung; Inkrementor) +

+

+Am Anfang wird einmal der Befehl <Variable> ausgeführt, nach jedem Durchlauf wird einmal <Inkrementor> +ausgeführt, und die Schleife läuft, solange die Bedinung wahr ist. +

+

Aufgabe:

+

+Erstelle ein Programm, das mit Hilfe einer +Funktion eine beliebige Potenz einer Zahl berechnen kann. +Baue diese Funktion in einen Taschenrechner ein, +der sich nur beendet, wenn der Benutzer es wünscht, +sodass mehrere Rechnungen hintereinander möglich sind. +

+

+Dies ist der letzte Taschenrechner, versprochen! ;) +

+
+ + diff --git a/contents/wissen/cpp-tutorial/07-funktionen.php b/contents/wissen/cpp-tutorial/07-funktionen.php new file mode 100644 index 0000000..485e733 --- /dev/null +++ b/contents/wissen/cpp-tutorial/07-funktionen.php @@ -0,0 +1,61 @@ + + + +
+

+ 7. Funktionen +

+

+ +#include <iostream> + +int summe(int iX, int iY) +{ + // Hier wird die Summe von iX und iY zurückgegeben. + return iX + iY; +} + +int main() +{ + int x,y; + + std::cout << "Geben sie bitte zwei Zahlen ein." << std::endl; + std::cin >> x; + std::cin >> y; + std::cout << "Die Summe ihrer Zahlen ist: " << summe(x, y) << std::endl; + + return 0; +} + + +

+

+In diesem Programm werden erstmal eigene Funktionen benutzt. +

+

+Der Name unserer ersten Funktion ist summe. +int ist dabei der Rückgabewert, d. h., beim Aufruf der Funktion gibt die Funktion eine Ganzzahl +an den Aufrufer zurück. iX und iY ist Parameter, d. h., dies sind Variablen, die vom Aufrufer +übergeben werden. +

+

Aufgabe:

+

+Erstelle ein Programm, das mit Hilfe einer +Funktion überprüft, ob eine Zahl ohne Rest +durch 2 teilbar ist. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/08-arrays.php b/contents/wissen/cpp-tutorial/08-arrays.php new file mode 100644 index 0000000..748017d --- /dev/null +++ b/contents/wissen/cpp-tutorial/08-arrays.php @@ -0,0 +1,81 @@ + + + +
+

+ 8. Arrays +

+

+ +#include <iostream> + +int main() +{ + + int iX[5]; + + std::cout << "Geben sie bitte einen Wert ein." << std::endl; + int a = 0; + std::cin >> a; + + // Füllen des Arrays + for(int i = 0; i < 5; i++) + iX[i] = a + i; + + // Ausgabe des Arrays + for(int i = 0; i < 5; i++) + std::cout << iX[i] << std::endl; + + return 0; +} + + +

+

+Ein Array ist eine Variable, die nicht nur einen Wert, sondern mehrere speichern kann. +Man kann sich ein Array als eine Art Regal mit einer bestimmten Anzahl von Fächern vorstellen. +Hier wird ein Array vom Typ int mit 5 Fächern deklariert, d. h., er kann 5 Ganzzahlen speichern. +

+

+Arrays können wie andere Variablen angesprochen werden, nur dass man nach dem Namen immer noch +den Index des anzusprechenden Feldes in [] schreibt, also z. B.: +iX[2] = 4; +std::cout << iX[2]; +Die Indizes beginnen mit 0, d. h., hier wären die 5 Felder mit den Zahlen 0 bis 4, also iX[0] bis iX[4] +bezeichnet. +

+

+Eine besonders mächtige Eigenschaft von Arrays ist es, +dass man beim Zugriff Variablen als Index benutzen kann, +und so z. B. mit for-Schleifen ganze Array verarbeiten kann. +

+

+Arrays können auch mehrere Dimensionen haben: +int iY[5][5]; deklariert ein Array mit 5 * 5 Feldern. +

+

Aufgabe:

+

+Erstelle ein Tic-Tac-Toe-Spiel +und benutze ein Array für dein Spielfeld. +Versuche zuerst, ein Spielfeld mit Testwerten auszugeben. +Danach baue die möglichkeit ein, Felder zu besetzen. +Zum Schluss kannst du eine Gewinnüberprüfung einbauen, +sodass 2 Spieler an der Konsole gegeneinander spielen können. +Ob und wie du Funktionen und andere Elemente sinnvoll benutzt, +findest du im Weiterem besser selbst heraus. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/09-strings.php b/contents/wissen/cpp-tutorial/09-strings.php new file mode 100644 index 0000000..2630176 --- /dev/null +++ b/contents/wissen/cpp-tutorial/09-strings.php @@ -0,0 +1,67 @@ + + + +
+

+ 9. Strings +

+

+ +#include <iostream> +#include <string> + +int main() +{ + std::string s; + std::string s2("Text"); + + // Ausgabe + std::cout << s2 << std::endl; + + // Eingabe + std::cout << "Gib einen Text ein." << std::endl; + std::cin >> s; + + std::cout << ""Das war dein Text: " << s << std::endl; + + std::cout &lr;< "1. Buchstabe: " << s[0] << std::endl; + + std::cout << "Dein Text ist so lang: " << s.length() << std::endl; + + // Hier wird ein Buchstabe geändert + s2[2] = 's'; + std::cout << s2 << std::endl; + + // Und hier einer angefügt + s2 += "s"; + std::cout << s2 << std::endl; +} + + +

+

+ Jetzt müssen wir neben iostream auch die Datei string einbinden, da wir den String nutzen wollen. +

+

+ Mit Klammern kann man sie mit einem Text initialisieren. Man kann wie in Arrays auf einzelne Buchstaben zugreifen. + Man darf dabei natürlich nicht über das Ende des Strings hinaus, daher kann man die Länge mit der length()-Methode bestimmen +

+

Aufgabe:

+

+Schreibe ein Programm, das Strings verwendet! +

+
+ + diff --git a/contents/wissen/cpp-tutorial/10-klassen.php b/contents/wissen/cpp-tutorial/10-klassen.php new file mode 100644 index 0000000..96905c7 --- /dev/null +++ b/contents/wissen/cpp-tutorial/10-klassen.php @@ -0,0 +1,115 @@ + + + +
+

+ 10. Klassen +

+

+ +#include <iostream> +#include <string> + +class Person +{ + private: + std::string name; + int alter; + + public: + /* Dies sind sogenannte Kontruktoren, + * sie haben keinen Rückgabewert und den gleichen Namen wie die Klasse; + * sie werden beim erstellen einer neuen Variable vom Typ der Klasse benutzt. + */ + Person(); + Person(std::string n, int a); + + void printName(); + void setName(std::string n); + + void printAlter(); + void setAlter(int a); +}; + +Person::Person() { + name = "Unbekannt"; + // -1 bedeutet bei uns jetzt, dass wir das Alter nicht wissen + alter = -1; +} + +Person::Person(std::string n, int a) { + name = n; + alter = a; +} + +void Person::printName() { + std::cout << "Der Name ist: " << name << std::endl; +} + +void Person::setName(std::string n) { + name = n; +} + +void Person::printAlter() { + if(alter < 0) std::cout << "Das Alter ist unbekannt." << std::endl; + else std::cout << "Das Alter ist: " << alter << std::endl; +} + +void Person::setAlter(int a) { + alter = a; +} + +int main() { + // Hier wird der Konstruktor Person() benutzt + Person p; + + // Hier wird der Konstruktor Person(std::string n, int a) benutzt + Person p2("Hans", 20); + + p.printName(); + p.printAlter(); + + p2.printName(); + p2.printAlter(); + + p.setName(std::string("Horst")); + p.setAlter(19); + p.printName(); + p.printAlter(); + + return 0; +} + + +

+ +

+ Im letzten Teil haben wir std::string kennengelernt. Dieser Typ ist eine sogenannte Klasse. In diesem Teil lernen wir nun, wie wir selbst solche Typen definieren. +

+

+ Wir wollen also eine Klasse erstellen, die einen Eintrag einer Personen-Kartei darstellt. +

+

+ Der Name des neuen Typs steht hinter class, in diesem Fall Person. +

+

+ Unter private stehen Einträge, die nur innerhalb der Klasse verfügbar sind, unter public stehen solche, die auch von außen aus aufrufbar sind. Man kann in einer Klasse sowohl Variablen, als auch Funktionen, sogenannte Methoden, definieren +

+

+Außerhalb der Klasse werden die Methoden dann mit Inhalt gefüllt. Mit :: beschreibt man, zu welcher Klasse die Methoden gehören. Die Variablen der Klasse können dabei genauso benutzt werden wie die Variablen der Funktion. +

+
+ + diff --git a/contents/wissen/hardware.php b/contents/wissen/hardware.php new file mode 100644 index 0000000..b9a2c71 --- /dev/null +++ b/contents/wissen/hardware.php @@ -0,0 +1,124 @@ + + + +
+

+Hardwarekomponenten im Computer +

+ +

Festplatte

+

+ In der Regel verkörpert die Festplatte den Haupt-Massenspeicher für Daten in einem Computer. + Hier werden alle Daten angefangen vom Bootloader und dem Betriebssystem bis hin zu einzelnen Verzeichnissen und Ordnern + der Benutzer abgelegt. Festplatten werden über IDE- oder SATA-Kabel mit dem Mainboard verbunden. + Die Festplatte speichert Daten magnetisch in Binärer Form. + Die Daten bleiben dabei auch nach einem Stromausfall erhalten. +

+ + +

CPU (Prozessor)

+

+ CPU steht kurz für "Central Prozessing Unit". + Damit ist die CPU/der Prozessor die zentrale Recheneinheit eines Computers. + Hier werden alle grundlegenden Rechenaufgaben erledigt. + (Genaueres über Register, etc.) +

+ + +

Grafikkarte

+

+ Die Grafikkarte sorgt dafür das der Computer z. B. Bilder grafisch anzeigen kann. +

+ + +

Netzwerkkarte

+

+ Es gibt unterschiedlichste Netzwerkkarten, die es einem Computer ermöglichen, + mit anderem zu einem Netzwerk verbunden zu werden. + Abhängig vom Typ der Netzwerkkarte können für das Netzwerk unterschiedliche Medien genutzt werden. + So kann z.B. ein einfaches Kabelnetzwerk aufgebaut werden, + oder ein Funknetz zur Kommunikation genutzt werden. +

+ + +

Soundkarte

+

+ Die Soundkarte sorgt dafür das der PC Töne ausgeben kann. +

+ + +

Arbeitsspeicher/RAM

+

+ RAM steht kurz für "Random Access Memory". + Es handelt sich hierbei um einen flüchtigen Zwischenspeicher(Daten gehen ohne Strom verloren), + der dazu dient, unterschiedliche Datenobjekte für den "späteren" Gebrauch zu speichern, + und diese schneller als die Festplatte bereitzustellen. +

+ + +

Lüfter

+

+ In den meisten Fällen werden Lüfter zur Luftkühlung eines Computers verwendet. + Sie verhindern ein überhitzen des Computers. +

+ + +

CD/DVD-Laufwerk/Brenner

+

+ Ein CD/DVD-Laufwerk ermöglicht den Lesezugriff auf CD's und DVD's. + Auf ihnen können mittelgroß Datenmengen gespeichert sein, + und komfortabel transportiert werden. + Handelt es sich zusätzlich um einen Brenner, ist auch das Schreiben von Daten möglich. +

+ + +

Floppy/Disketten-Laufwerk

+

+ Es kann Daten von Disketten lesen und auf diese schreiben. +

+ + +

Tastatur

+

+ Die Tastatur ist ein Eingabegerät, das die einfache und komfortable Eingabe von Texten ermöglicht. +

+ + +

Maus

+

+ Die Maus ist auch ein Eingabegerät, sie steuert den Cursor auf dem Bilschirm. + Die Maus stellt damit eine Zeigerfunktion für grafische Oberflächen zur Verfügung. +

+ + +

Monitor/Bildschirm

+

+ Der Bildschirm ist standardmäßg das grafische Ausgabemedium eines Computers, + und liefert das Feedback zu den Benutzereingaben. +

+ + +

Netzteil

+

+ Das Netzteil versorgt alle dem Computer zugehörigen Bauteile mit Strom. +

+ +
+ + + + + diff --git a/contents/wissen/main.php b/contents/wissen/main.php new file mode 100644 index 0000000..fb2fdf3 --- /dev/null +++ b/contents/wissen/main.php @@ -0,0 +1,28 @@ + + + +
+

+ Wissen +

+

+ Hier könnt ihr euch umfassend über die Themen informieren, die wir in der ComputerAG behandelt haben. + Mit diesem Material könnt ihr euch dieses Wissen auch selbst aneignen. Falls euch ein Gebiet + besonders interessiert, besucht uns doch einmal im Internetcafe. Wir sind gerne bereit, unser Wissen + an euch weiterzugeben. +

+
+ + diff --git a/contents/wissen/ruby.php b/contents/wissen/ruby.php new file mode 100644 index 0000000..54da336 --- /dev/null +++ b/contents/wissen/ruby.php @@ -0,0 +1,103 @@ + + +
+

+ Eine kleine Einführung zu Ruby +

+

+ Ruby ist ein Skriptsprache, das heißt sie wird nicht compiliert, wie z.B. C++, sondern sie wird interpretiert. + Ruby ist leicht und schnell zu erlernen, doch sie ist nicht zu unterschätzen. + Man kann mit Ruby eine ganze Ecke Sachen machen, + wie z.B. kleine Spiele programmieren. + Ruby ist gut geeignet für Einsteiger. + Da sich die meisten Programmiersprachen sehr ähnlich sind, + empfielt es sich, als Einsteiger mit Ruby zu beginnen und dann später auf andere Sprachen umzusteigen, wie z.B. C++. +

+

+ Wir beginnen mit einem Codebeispiel: +

+ +loop do + puts "Bitte geben sie etwas ein!" + eingabe = gets + if eingabe.chomp == "" + puts "Hey! Sie sollten etwas eingeben! ;)" + else + for i in 1..3 + puts "Das haben sie eingegeben:" + puts eingabe + end + end +end + + +

+ Im folgendem werden ein paar verwendete Begriffe erklärt: +

+
+
+ String +
+
+ Ein String, so nennt man eine Zeichenkette, die aus Zeichen, + wie z.B. Buchstaben und Zahlen, bestehen kann. + Der Computer kann den Wert einer Zahl, + die in einem String steht nicht erkennen, ohne sie vorher umzuwandeln. +
+
Compilieren
+
+ Compiliert werden Quelltexte, wie zum Beispiel die der Programmiersprache C++. + Der Quelltext wird geschrieben und danach von einem Compiler Compiliert, + was soviel bedeutet wie übersetzt, in Maschienencode, den der Computer versteht. + Den vorher geschriebenen Quelltext braucht man dann nicht mehr um das Programm zu starten, + sondern nurnoch das Compilierte Programm. +
+
Interpretieren
+
+ Interpretiert wird der Programmcode von Skripten, + die in einer Skriptsprache wie z.B. Ruby geschrieben wurden. + Hier wird das Programm nicht einmal übersetzt, + sondern der so genannte Interpreter übersetzt immer nur das Stück Code, + dass er gerade braucht. +
+
+
+ -- cgit v1.2.3