Aufgaben zum Praktikum Programmieren PRP1

Ähnliche Dokumente
Programmieren in C (Übungsblatt 1)

Programmieren in C (Übungsblatt 1)

Programmieren in C (Übungsblatt 1)

Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

In diesen Canvas können Punkte an gültigen Koordinaten gezeichnet werden.

Einführung in die objektorientierte Programmierung mit C++

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

Versuch 3: Kamera 1. In diesem Programm sind die grundlegenden Funktionen der Kamera schon implementiert. Diese Funktionen sind:

Zellen. Gegeben sei ein Raum und ein Gitter, das den Raum in gleichförmige und gleichgroße Zellen aufteilt.

Schleifenanweisungen

Kontrollstrukturen und Funktionen in C

Angewandte Mathematik und Programmierung

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Anleitung: Standardabweichung

Grundlagen der Programmierung

Lesen Sie alle Aufgabenstellungen sorgfältig durch, bevor Sie mit der Bearbeitung der ersten Aufgabe beginnen.

Vorbemerkungen. Die Programmieroberfläche des ClassPad

Folgen und Funktionen in der Mathematik

FB Informatik. Fehler. Testplan

1 Bizz Buzz Woof (ca =18 Punkte) def read file(file_in): fp = open(file_in, r ) l = fp.read() fp.close() return l

Programmierkurs Java

Game of life. Projektaufgabe. Inhaltsverzeichnis. Begriffe. 1 Grundlagen 3

SciCa - Scientific Calculator

Ausgabe:

1. Aufgabe (6 Punkte)

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

Prüfung Algorithmen und Datenstrukturen, WS 2008/2009 (97 Punkte, 4 Seiten)

einlesen n > 0? Ausgabe Negative Zahl

GI Vektoren

Informatik Aufgaben. 1. Erstelle ein Programm zur Berechnung der Summe der Zahlen von 1 bis n, z.b. n = 100.

Übungen zu C++ Kapitel 1

Conway s "Game of Life"

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Eine kleine Reise durch die Welt der zellulären Automaten

Programmierkurs Java

Primzahlen und Programmieren

Programmierkurs Java

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 5. Blatt Für den 26. und

Inhalt. Übersicht über das Gerät 6. Die Hauptanwendung "Main" 7. Das Interaktivmenü 10. Variablen und Funktionen 15

Planung & Abrechnung der Erwachsenenbildung für Gemeinden, Verbände und Seelsorgeeinheiten

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

Grundlagen der Informatik

Wettspiele auswerten

Vorab : Von dem indischen Mathematiker D. R. Kaprekar stammt folgender Zusammenhang :

Bezugsarten relative Bezüge

Übungsblatt 1. Java Vorkurs (WS 2017)

Greenfoot: Verzweigungen

OOP. Mit Zahlen rechnen. Henrik Horstmann

Auswerten der Startkontrolle mit OLEinzel

Informatik für Elektrotechnik und Informationstechnik

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Aufgaben zu JavaKara: Arrays

Aufgabe 16. Aufgabe 17

CEN1112 Labor Software-Entwicklung

Variablen und Datentypen

Wissenschaftliches Rechnen

Übungen zu Programmieren 3 (C++) (4-1)

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Variablen und Datentypen

Erste Schritte der Programmierung in C

2 Eine einfache Programmiersprache

Kapitel. Platzhalter. Was sind Platzhalter?

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

JAVA für Nichtinformatiker - Probeklausur -

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Praktikum Ingenieurinformatik. Termin 6. Matrizen, Zeichenketten, Zeiger

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Das HERON-Verfahren mit der TI84-Tabellenkalkulation CellSheet

Einführung in die Programmiersprache C

5. Elementare Befehle und Struktogramme

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Klausur Informatik WS 2012/13

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

6 DATENBANKEN Datenbank. mit Spaltenüberschriften,

+ C - Array (Vektoren, Felder)

2 Teil 2: Nassi-Schneiderman

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Unterlagen. CPP-Uebungen-08/

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Praktikum 1: Einführung, BMI Rechner

Vorlesung. Prof. Janis Voigtländer Übungsleitung: Dennis Nolte. Mathematische Strukturen Sommersemester 2017

Zeichenketten sind uns bisher nur als konstante Texte begegnet, welche in "" angegeben waren; z.b. als Formatstring in der printf()-funktion:

Delegation. Aufgabe 7:

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Die SQL-Schnittstelle

Institut fu r Informatik

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Programmieraufgaben. 1. Hello World! Schreibe ein Programm, dass auf der Konsole den Text Hello World! ausgibt.

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Transkript:

Aufgaben zum Praktikum Programmieren PRP1 Prof. Dr. Thomas Klinker Department Informations- und Elektrotechnik, HAW Hamburg 16. September 2013 1

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 1 Aufgabe 1a: Geben Sie das Programm auf der nächsten Seite ein, bringen Sie es zum laufen und testen Sie es. Aufgabe 1b: SchreibenSieeinProgramm(ganzähnlichdeminAufgabe1a,welchesdieHöhehunddenRadiusr eines Zylinders einliest und dann die gesamte Oberfläche und das Volumen des Zylinders berechnet. Aufgabe 1c: Schreiben Sie ein Programm, welches für eine positive ganze Zahl vom Typ long die Quersumme berechnet. Die Quersumme von 1339 bespielsweise ist 16.

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 2 /******************************************************************** Autor: klk Datum: 03.03.03 Dateiname: aufg01a1.cpp Kurzbeschreibung: Kugelradius einlesen, Oberfläche und Volumen berechnen, auf ein Zeichen warten. Änderungen: Name Datum Kurzbeschreibung ------------------------------------------------------------------ klk 04.03.03... Beseitigung des Fehlers... *********************************************************************/ #include <stdio.h> #include <math.h> /* für pow(x, y */ int main(void { const float pi = 3.1415927; float radius, oberflaeche, volumen; printf("kugelradius in Metern: "; scanf("%f", &radius; oberflaeche = 4 * pi * radius * radius; printf("oberfläche in Quadratmetern: %f\n", oberflaeche; volumen = (4.0/3 * pi * pow(radius, 3; printf("volumen in Kubikmetern: %f\n", volumen; return 0; }

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 3 Aufgabe 2a: Schreiben Sie ein Programm, das eine Folge von reellen Zahlen vom Typ float einliest. Das Ende der Zahlenfolge wird erkannt durch das erste Zeichen, welches keine Zahl (also z.b. ein Buchstabe ist. Das Programm soll dann für die eingelesenen Zahlen folgende Größen berechnen: 1. Die Anzahl der eingelesenen Zahlen, 2. die Summe der eingelesenen Zahlen, 3. das Maximum der eingelesenen Zahlen, 4. das Minimum der eingelesenen Zahlen, 5. den Mittelwert der eingelesenen Zahlen, 6. die Standardabweichung der eingelesenen Zahlen. Die eingelesenen Zahlen seien mit x i (i = 1,...,n bezeichnet. Der Mittelwert ist dann definiert durch: n Für die Standardabweichung gilt: x = x i i=1 n n (x i x 2 i=1 σ = n 1. (1. (2 Sie werden feststellen, daß bei der Berechnung der Standardabweichung mit der Formel (2 das Problem auftritt, daß man sich alle eingelesenen Zahlen x i merken (d.h. abspeichern muß. Man kann dieses Problem vermeiden, indem man die Standardabweichung mit folgender Formel berechnet ( n x 2 i n x 2 i=1 σ =, (3 n 1 die darüber hinaus für die Bearbeitung von Zahlenfolgen beliebiger Länge geeignet ist. Aufgabe 2b: Schreiben Sie ein Programm, das die kartesischen Koordinaten x und y eines Punktes in der Ebene einliest und sie in Polarkoordinaten r und ϕ (0 0 < ϕ 360 0 umrechnet. Benutzen Sie für die Berechnung des Winkels ϕ die atan2(y, x Funktion von C. Testen Sie Ihr Programm auch für x = 0. Umgekehrt soll das Programm auch die Eingabe von Polarkoordinaten gestatten und diese in kartesische Koordinaten umrechnen gemäß den Formeln x = r cosϕ, y = r sinϕ. DerWinkelϕsolldabeijeweilsimGradmaß (0 0 < ϕ 360 0 ausgegeben(bzw.eingelesenwerden.

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 4 Aufgabe 3a: Schreiben Sie ein Programm, das eine Ziehung der Lotto-Zahlen simuliert. Wie allgemein bekannt, befinden sich beim Ziehen der Lotto-Zahlen in einer Schale 49 Kugeln. Die Kugeln sind durchnummeriert von 1 bis 49. Nacheinander wird nun zufällig eine Kugel herausgenommen und die Zahl auf der Kugel notiert. Wichtig: Die jeweils herausgenommene Kugel wird nicht zurück gelegt! Insgesamt werden 6 Kugeln gezogen. Das Ziehen einer Kugel soll mit Hilfe des Zufallsgenerators in C, also durch die Funktion int rand(void realisiert werden. rand( gibt einen int-wert zurück. Dabei gilt für den Rückgabewert,dasserindemBereich0 rand( 32767liegt.MitderAnweisungzahl = rand(; wird der Variable zahl also eine Zufallszahl zwischen 0 und 32767 zugewiesen. Sie müssen für die Verwendung der Funktion int rand(void die Header-Datei stdlib.h einbinden. Damit bei jedem Programmdurchlauf immer eine neue Folge von Zufallszahlen berechnet wird, muss der Zufallsgenerator einmal (! am Anfang des Programms initialisiert werden. Dies geschieht mit der Funktion srand(... Mit den folgenden Befehlen #include <stdlib.h> #include <time.h>... time_t t; srand((unsigned time(&t;... // Initialisiert den Zufallsgenerator // am Anfang des Prgramms (! zahl = (rand( % 49 + 1; // Erzeugt Zufallszahl zwischen 1 und 49... könnte man somit beispielsweise Zufallszahlen zwischen 1 und 49 erzeugen. Achten Sie insbesondere darauf, dass jede Zahl nur einmal gezogen werden kann! Das Programm soll eine wiederholte Ziehung der Lotto-Zahlen erlauben, solange es der Benutzer wünscht. Dabei sollte sich der Ablauf des Programms auf der Konsole genauso abspielen, wie in nachfolgendem Beispiel dargestellt. Beispielhafter Ablauf des Programms auf der Konsole: Die Lottozahlen lauten: 1 6 25 42 37 4 Soll dass Programm noch einmal ausgefuehrt werden (j/n: j Die Lottozahlen lauten: 14 2 17 37 27 34 Soll dass Programm noch einmal ausgefuehrt werden (j/n: j Die Lottozahlen lauten: 32 49 36 22 21 2 Soll dass Programm noch einmal ausgefuehrt werden (j/n: n Press any key to continue

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 5 Aufgabe 3b: In dieser Aufgabe soll ein bekanntes Streichholzspiel realisiert werden. Von einer Anfangsmenge von Streichhölzern nehmen zwei Spieler abwechselnd eins, zwei oder drei Hölzchen weg. Wer das letzte Hölzchen nehmen muß, hat verloren. Das Programm soll so gestaltet sein, daß ein Spieler gegen den Computer spielt. Der Spieler kann dabei bei jedem seiner Zügen nach Gutdünken wahlweise eins, zwei oder drei Hölzchen nehmen. Die Züge des Computers können zunächst in einer ersten Version so realisiert, daß er zufällig eins, zwei oder drei Hölzchen nimmt. (Hierbei verwende man den Zufallsgenerator wie in Aufgabe 3a. Lediglich wenn nur noch vier Hölzchen oder weniger übrig geblieben sind, spielt der Computer natürlich so, daß er gewinnt. Bei vier Hölzchen beispielsweise nimmt er drei, damit der Spieler auf dem letzten Hölzchen sitzen bleibt. Wenn Ihr Programm läuft, denken Sie nun einmal darüber nach, wie eine optimale Strategie für den Computer aussieht. Der Computer soll also in einer verbesserten Version Ihres Programms von Beginn an stehts den optimalen Zug ausführen. Er soll also immer so ziehen, daß er, wenn er die Chance zu gewinnen hat, diese auch nutzt. Er spielt dann also mit maximaler Spielstärke. Achten Sie darauf, daß auch der Spieler immer nur ein, zwei oder drei Hölzchen nehmen darf, nicht mehr und nicht weniger. Zu Beginn des Programms soll man die Anfangszahl der Hölzchen, mit der gespielt werden soll, eingeben können. Als nächstes soll man auswählen können, wer anfängt zu ziehen, der Computer oder der Spieler. Die Darstellung auf der Konsole könnte dann z.b. wie folgt aussehen: Die aktuelle Anzahl der Hoelzchen ist: 13 * * * * * * * * * * * * * Wieviele Hoelzchen nehmen Sie? (1, 2, 3:

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 6 Aufgabe 4a: Schreiben Sie ein Programm, das das Pascalsche Dreieck berechnet. Im Pascalschen Dreieck sind die Binominalkoeffizienten pyramidenförmig angeordnet. ( n m = n! (n m! m! 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 (4 Statt mit Gl. (4 lassen sich die Binominalkoeffizienten für alle n 0 und m = 0,...,n schneller nach folgenden Formeln berechnen: ( ( n n = = 1 0 n ( n m = ( n 1 m 1 + ( n 1 m, m = 1,...,n 1. Benutzen Sie diese Formeln und verwenden Sie zur Speicherung der Binominalkoeffizienten ein zweidimensionales Feld b[n][m], so daß gilt b[n][m] = ( n m. (5 Aufgabe 4b: Ein magisches Quadrat der Ordnung n ist eine quadratische Anordnung der Zahlen 1,2,...,n 2, so daß alle n Zeilen und Spalten sowie die Hauptdiagonalsummen gleich sind. Schreiben Sie ein C Programm, das nach Eingabe einer ungeraden natürlichen Zahl n ein magisches Quadrat der Ordnung n berechnet und auf dem Bildschirm ausdruckt. Verwenden Sie dazu folgende Methode: Die Zahlen 1,2,...,n 2 werden fortlaufend in das Quadrat eingetragen. Beginnen Sie damit, daß Sie die 1 in die Mitte der ersten Zeile eintragen. Gehen Sie dann jeweils eine Spalte nach links und eine Zeile nach oben. Verwenden Sie dabei periodische Randbedingungen, das heißt, wenn Sie über die oberste Zeile hinauskommen, fahren Sie mit der untersten fort, und wenn Sie über den linken Rand hinauskommen fahren Sie rechts fort. Trifft man auf ein schon besetztes Feld, so gehe man statt dessen ein Feld nach unten und fahre dort fort. Dieses Verfahren ist in dem nachfolgenden Bild dargestellt am Beispiel eines magischen Quadrates der Ordnung 5.

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 7 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9 2 25 18 11 Das Programm soll magische Quadrate bis zur Ordnung n = 19 berechnen und auf der Konsole können. Prüfen Sie anhand des obigen Beispiels für n = 5, ob Ihr Programm korrekt arbeitet.

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 8 Aufgabe 5: ImJahr1968wurdevonJ.H.ConwayanderUniversitätCambridgedas gameoflife erfundenund 1970 von M. Gardner im Scientific American einem breiten Publikum vorgestellt. Dabei handelt es sich um einen Algorithmus, der das Wachstum von fiktiven Lebewesen (Bakterien simuliert. Infolge der interessanten Muster, die dabei entstehen, ist das game of life weit über Biologenkreise hinaus bekannt geworden. Es ist ein Beispiel für einen sogenannten zellulären Automaten. Schauplatz des game of life ist ein zweidimensionales Gitter aus Zellen, die entweder tot ( oder lebendig ( X sind. Wie sich eine Zelle weiter entwickelt, hängt von ihren acht Nachbarn ab, und zwar gelten folgende Regeln: 1. Eine lebende Zelle überlebt in der nächsten Generation, wenn sie zwei oder drei Nachbarn hat. Sind es weniger bzw. mehr, so stirbt sie an Vereinsamung bzw. Überbevölkerung. 2. Eine tote Zelle wird immer dann in der nächsten Generation zum Leben erweckt, wenn sie genau drei lebendige Nachbarn hat, ansonsten bleibt sie tot. Die Zeit verstreicht dabei in diskreten Schritten, d.h. jede Zelle verharrt in ihrem zuvor eingenommenen Zustand, bis gewissermaßen bei einem Gongschlag alle gleichzeitig in den neuen Zustand übergehen. Anders ausgedrückt: Es wird für jede Zelle nachgeschaut, wie ihr Zustand und der ihrer Nachbarn zu einer bestimmten Zeit n ist und berechnet, wie ihr Zustand zur nächsten Zeit n+1 sein wird. Hat man dies für alle Zellen getan, so werden alle gleichzeitig auf den neuen Zustand gesetzt. In der abschliessenden Version sollte Ihr Programm periodische Randbedingungen für das zweidimensionale Feld benutzen (genauere Erklärungen hierzu und Vorschläge zur Realisierung der periodischen Randbedingungen werden noch in der Vorlesung gegeben. Gestalten sie das Programm so, daß man als Ausgangsmuster entweder eins der folgenden fünf auswählen kann, oder über die Angabe der Koordinaten (Zeile, Spalte ein eigenes Ausgangsmuster lebendiger Zellen eingeben kann. XXX XX X XX XX XX X X X X X X X X X X XX Blinker Block Bienenstock Leuchtfeuer Gleiter Jede neue Generation soll auf dem Bildschirm ausgegeben werden, wobei die vorhergehende Generation immer durch die aktuelle überschreiben werden soll. Um dieses einfach bewerkstelligen zu können, werden Ihnen zwei Dateien zur Verfügung gestellt, console.h und console.cpp, die Sie Ihrem Projekt hinzufügen müssen. Damit verfügen Sie über folgende Funktionen: bool setcursor(int zeile, int spalte /* Funktion, die Cursor auf die angegebene Position (zeile, spalte setzt. */ bool cls( /* Funktion, die Consolen-Puffer mit aktuellem Attribut löscht */ /* und Cursor auf die Home-Position (0,0 setzt (clear screen. */

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 9 void cursoroff( /* Funktion, die den Cursor unsichtbar macht. */ void cursoron( /* Funktion, die den Cursor wieder sichtbar macht. */ DWORD cursorsize(dword size /* Funktion, die die CursorGröße setzen kann (in Prozent. */ Wählen sie für das game of life ein Feld der Größe: 22 Zeilen und 78 Spalten. Über dem Feld sollte die Nummer der aktuellen Generation angezeigt werden. Auf diese Weise wird die Größe des Bildschirms gut ausgenutzt. Die Größe des Konsolen-Fensters kann allerdings auch geändert werden, so daß man das game of life auf einem größeren Spielfeld ablaufen lassen kann (Weitere Hinweise in der Vorlesung. Das fortlaufende Anzeigen immer neuer Generationen kann wahweise durch das Drücken einer Taste erfolgen oder automatisch durch die folgende Schleifenkonstruktion while(!_kbhit( // Weitermachen, bis irgendeine Taste gedrueckt wird { statement;... } Hierbei werden die neuen Generationen automatisch angezeigt, bis irgendeine Taste gedrückt wird. Damit die Generationen nicht zu schell nacheinander angezeigt werden, verwenden Sie bei obiger Schleifenkonstruktion die Funktion Sleep(n (deklariert im Headerfile <windows.h>, die eine Verzögerung des Programmablaufs um n Millesekunden bewirkt. Wer noch Lust hat, mit dem Programm etwas zu spielen, kann folgende Anfangskonfiguration eingeben, die als Gleiterkanone bezeichnet wird. 6 7 8 9 0 1 X 2 X X 3 X XX X 4 XX X XX XXXX X 5 XX X XX XXXX X 6 X X X X XX 7 X XXXX XX 8 XXXX 9 X 0 123456789012345678901234567890123456789012345678901234567890123456789 Die Gleiterkanone wurde 1970 entdeckt von R. W. Gosper, der damals Student am Massachusetts Institut of Technologie (MIT war, und sich unbedingt den 50-Dollar-Preis verdienen wollte, den

Programmieren in C - Teil I, Praktikumsaufgaben, Prof. Dr. Thomas Klinker 10 Conway ausgelobt hatte. Den Preis sollte der erhalten, der als erster beweisen würde, daß eine Ausgangsstellung unbegrenzt wachsen kann. Gospers Gleiterkanone spuckt jeweils nach 30 Zeitschritten einen neuen Gleiter aus, wobei sie selbst in den Ausgangszustand zurückkehrt. Auf der Basis der Gleiterkanone lassen sich logische Gatter, also NOT-, AND- und OR-Gatter und damit auch Rechner konzipieren.