Einfache Programme mit typischen Beispielen von Spaghetti-Code.
Einige sind sie sehr kurz und ohne viel Sinn (z.B. Quader.bas),
taugen aber als Anleitung für Anfänger und Abschreckung
vor zu vielen Sprungmarken (z.B: Spiel.bas) (und schlechtem
Programmierstil).
Die Programme sind fast so übernommen, wie ich
sie bis 1996/97 programmiert habe, aber mit etwas Strukturierung durch
Einrückung, Kommentaren und Fehlerbeseitigung.
Zu jedem Programm gibt es mindestens einen Screen-Shot. Diese sind dann
jeweils vor dem Quelltext erreichbar.
Größe: je ca. 3-20 KB
Benutzung auf eigene Gefahr, keine Gewähr bei Fehlern, frei
kopierbar, Geldverdienen und Patentierung von Teilen der der Gesamtheit mit
diesen Programmen nicht erlaubt.
(Using on your own risk, No warranty in error cases, free copying, No
moneymaking with this programs and No patenting of parts or the whole of
these programmes)
Programm-Name | Beschreibung |
---|---|
Graphik1.bas | Kleine Animation mit Kreisen und Rechtecken, Bildschirmschoner |
Mathe.bas | Das ist ein Rechnen-Übungsprogramm mit Addition, Subtraktion und Multiplikation. |
Primzahl.bas | Programm errechnet Teiler einer Zahl. |
Quader.bas | berechnet Oberfläche und das Volumen von einem Quader. |
Spiel.bas | Spiel der 23 Streichhölzer. |
Textscro.bas | Bildschirmschoner, Scrollt von rechts nach links. |
Graphik1.bas (Quelltextdatei) | Bild zum Programm | Seitenanfang |
REM Kleine Animation mit Kreisen und Rechtecken, Bildschirmschoner SCREEN 12 'Grafikmodus 640x480, 16 Farben DO COLOR 3 LINE (0, 0)-(639, 479), 3, BF 'Hintergrund COLOR 10 s = 1: w = 630: x = 10 r = 550: t = 400: u = 600: v = 450 FOR i = 1 TO 180 CIRCLE (w, x), s 'Kreis x, y, radius LINE (r, t)-(u, v), 4, B 'Rechteck x1, y1, x2, y2 FOR j = 1 TO 100: a = a + 1: NEXT j 'Pausenschleife r = r - 3: t = t - 2 'Neue Punkte berechnen u = u - 3: v = v - 2 s = s + 1 w = w - 2: x = x + 2 NEXT i FOR i = 1 TO 10000: a = a + 1: NEXT i 'Pausenschleife CLS LOOP UNTIL INKEY$ > CHR$(0) 'Beenden bei Tastendruck SCREEN 0 'In Textmodus END |
Mathe.bas (Quelltextdatei) | Bild zum Programm | Seitenanfang |
1 CLS rechoper = 0: zahl1 = 0: zahl2 = 0: erg = 0: ed = 0: punkte = 0: punktsum = 0: anzahlauf = 0: u = 0: z = 0 PRINT "Das ist ein Rechnen-Uebungsprogramm mit Addition, Subtraktion und Multiplikation." PRINT "Je schwieriger die Aufgaben sind desto mehr Punkte gibt es. " 7 anzahlauf = 0 'Aufgabenzahl INPUT "Wieviel Aufgaben "; anzahlauf anzahlauf = anzahlauf + 1 z = 0 5 RANDOMIZE TIMER z = z + 1 IF anzahlauf = z THEN 'Abfrage am Ende PRINT "Du hast jetzt "; punktsum; " Punkte von "; u; " moeglichen Punkten." INPUT "Nocheinmal (j/ja//n/*) "; noche$ IF noche$ = "j" OR noche$ = "ja" THEN GOTO 7 ELSE GOTO 8 END IF rechoper = INT(RND * 3) + 1 'Auswahl Rechenoperation zahl1 = 0: zahl2 = 0: erg = 0: ed = 0: punkte = 0: i = 0 IF rechoper = 1 THEN GOTO 2 '+ IF rechoper = 2 THEN GOTO 3 '- IF rechoper = 3 THEN GOTO 4 '* 2 REM ***Addition************************************************************* 6 zahl1 = INT(RND * 50) + 1 'Zufallszahlen zahl2 = INT(RND * 50) + 1 ed = zahl1 + zahl2 'Ergebnis berechnen IF (ed > 50) THEN GOTO 6 'Ergebnis < 51 ? PRINT zahl1; " + "; zahl2; " = "; 'Abfrage Ergebnis INPUT erg IF (ed <> erg) THEN punkte = 0 'Eingabe falsch keine Punkte IF (ed <= 10) AND (erg = ed) THEN punkte = 10 'Eingabe richtig, Ergebnis <= 10, Bewertung 10 Punkte IF (ed <= 10) THEN u = u + 10 ELSE u = u + 20 'Berechnung moegl. Punkte IF (ed > 10) AND (erg = ed) THEN punkte = 20 'Eingabe richtig, Ergebnis > 10, Bewertung 20 Punkte punktsum = punktsum + punkte IF erg <> ed THEN 'Ausgabe bei falscher Eingabe PRINT "Richtig waere "; ed; ". "; PRINT "Leider falsch - keine Punkte. Insgesamt "; punktsum; " Punkte." ELSE 'Ausgabe bei richtiger Eingabe PRINT "Richtig ! Das gibt "; punkte; " Punkte. Insgesamt "; punktsum; " Punkte. " END IF GOTO 5 'Zurueck zu Schleifenanfang 'naechste Aufgabe 3 REM ***Subtraktion********************************************************** 9 zahl1 = INT(RND * 50) + 1 zahl2 = INT(RND * 50) + 1 IF zahl1 < zahl2 THEN GOTO 9 'Kein negatives Ergebnis ed = zahl1 - zahl2 PRINT zahl1; " - "; zahl2; " = "; INPUT erg IF ((zahl1 <= 10) OR (zahl2 <= 10)) AND (erg = ed) THEN punkte = 10 IF (zahl1 > 10) AND (zahl2 > 10) AND (erg = ed) THEN punkte = 30 IF (ed <> erg) THEN punkte = 0 'Bewertung 0/10/30 Punkte IF (zahl1 <= 10) OR (zahl2 <= 10) THEN u = u + 10 IF (zahl1 > 10) AND (zahl2 > 10) THEN u = u + 30 punktsum = punktsum + punkte IF erg <> ed THEN PRINT "Richtig waere "; ed; ". "; PRINT "Leider falsch - keine Punkte. Insgesamt "; punktsum; " Punkte." ELSE PRINT "Richtig ! Das gibt "; punkte; " Punkte. Insgesamt "; punktsum; " Punkte. " END IF GOTO 5 4 REM ***Multiplikation******************************************************* zahl1 = INT(RND * 10) + 1 'Ergebnis <= 100, also Faktoren <=10 zahl2 = INT(RND * 10) + 1 ed = zahl1 * zahl2 PRINT zahl1; " * "; zahl2; " = "; : INPUT erg IF (ed <= 20) AND (erg = ed) THEN punkte = 20 IF (ed > 20) AND (erg = ed) THEN punkte = 40 IF (ed <= 20) THEN u = u + 20 ELSE u = u + 40 IF (ed <> erg) THEN punkte = 0 'Bewertung 0/20/40 Punkte punktsum = punktsum + punkte IF erg <> ed THEN PRINT "Richtig waere "; ed; ". "; PRINT "Leider falsch - keine Punkte. Insgesamt "; punktsum; " Punkte." ELSE PRINT "Richtig ! Das gibt "; punkte; " Punkte. Insgesamt "; punktsum; " Punkte. " END IF GOTO 5 8 END |
Primzahl.bas (Quelltextdatei) | Bild zum Programm | Seitenanfang |
REM Programm errechnet Teiler einer Zahl CLS INPUT "Zahl: "; a FOR i = 1 TO a 'Zaehle von 1 bis Zahl IF a MOD i = 0 THEN PRINT i; 'Wenn Rest Division Zahl/Schleife 0, dann Ausgabe NEXT i END |
Quader.bas (Quelltextdatei) | Bild zum Programm | Seitenanfang |
CLS PRINT "Dieses Programm errechnet die Oberflaeche und das Volumen von einem Quaders." INPUT "Geben Sie bitte a,b und c ein (z.B. 3,2,1) !:"; a, b, c 'Eingabe Masse in cm V = a * b * c 'Volumen berechnen O = 2 * (a * b + b * c + a * c) 'Oberflaeche berechnen PRINT "Das Volumen des Quaders betraegt "; V; "cm^3 und die Oberflaeche "; O; "cm^2 ." END |
Spiel.bas (Quelltextdatei) | Bilder zum Programm | Seitenanfang |
CLS PRINT "Das ist das Spiel der 23 Streichhoelzer. Man bekommt 23 Streichhoelzer. Jeder Spieler ( 2 Spieler oder der Computer und du ) nimmt 1, 2 oder 3 Streichhoelzer weg. Wer das letzte nimmt hat verloren. Kapiert? Dann gehts los!" 1 INPUT "1 Spieler und der Computer (1) oder 2 Spieler (2) ?"; spieler IF spieler = 1 THEN GOTO 6 'Auswahl 1/2 Spieler REM *************2 Spieler**************************************************** streich = 0 PRINT INPUT "Name des 1. Spielers : "; spieler1$ 'Namenseingabe fuer Spielende INPUT "Name des 2. Spielers : "; spieler2$ PRINT PRINT "Hier sind nun 23 Streichhoelzer." PRINT REM -------------------------------------------------------------------------- 2 INPUT "Spieler 1 nimmt wieviel Streichhoelzer :"; i IF i < 1 OR i > 3 THEN PRINT "Spieler 1 hat gemogelt." GOTO 2 END IF 'Auswahl Anzahl, nur 1-3 IF i > (23 - streich) THEN PRINT "Es sind nicht mehr so viele Streichhoelzer da." GOTO 2 END IF 'Nur maximal soviele wie da sind. streich = streich + i IF streich = 23 THEN GOTO 13 'Spielende i = 0 'Ruecksetzen fuer richtige Gewinnbestimmung 3 INPUT "Spieler 2 nimmt wieviele Streichhoelzer :"; u IF u < 1 OR u > 3 THEN PRINT "Spieler 2 hat gemogelt.": GOTO 3 IF u > (23 - streich) THEN PRINT "Es sind nicht mehr so viele Streichhoelzer da." GOTO 3 END IF streich = streich + u IF streich < 23 THEN u = 0 GOTO 2 'Weiterspielen END IF 13 REM ----------------------------------------------------------------------- IF streich - i = 22 THEN GOTO 4 IF streich - u = 22 THEN GOTO 9 IF streich - i = 21 THEN GOTO 4 IF streich - u = 21 THEN GOTO 9 IF streich - i = 20 THEN GOTO 4 IF streich - u = 20 THEN GOTO 9 9 PRINT spieler1$; " hat gewonnen !!!!!": GOTO 10 4 PRINT spieler2$; " hat gewonnen !!!!!" REM -------------------------------------------------------------------------- 10 INPUT "Wollen Sie noch einmal spielen? (ja/j//nein/*):"; nocheinmal$ PRINT IF nocheinmal$ = "ja" THEN GOTO 1 IF nocheinmal$ = "j" THEN GOTO 1 ELSE END 6 REM ***********1 Spieler und Computer*************************************** streich = 0 PRINT INPUT "Name des Spielers : "; spieler$ PRINT PRINT "Hier sind nun 23 Streichhoelzer." PRINT REM -------------------------------------------------------------------------- 5 INPUT "Du nimmst wieviel Streichhoelzer :"; i IF i < 1 THEN PRINT "Spieler 1 hat gemogelt.": GOTO 5 IF i > 3 THEN PRINT "Spieler 1 hat gemogelt.": GOTO 5 IF i > 23 - streich THEN PRINT "Es sind nicht mehr so viele Streichhoelzer da." GOTO 5 END IF streich = streich + i IF streich = 23 THEN GOTO 14 i = 0 7 u = INT(RND * 4) IF u < 1 THEN GOTO 7 IF u > 23 - streich THEN GOTO 7 IF (u + streich = 23) AND (u > 1) THEN GOTO 7 PRINT "Der Computer nimmt "; u; " Streichhoelzer." streich = streich + u IF streich < 23 THEN u = 0 GOTO 5 END IF 14 REM ----------------------------------------------------------------------- IF streich - i = 22 THEN GOTO 8 IF streich - u = 22 THEN GOTO 11 IF streich - i = 21 THEN GOTO 8 IF streich - u = 21 THEN GOTO 11 IF streich - i = 20 THEN GOTO 8 IF streich - u = 20 THEN GOTO 11 11 PRINT spieler$; " hat gewonnen!!!!!": GOTO 12 8 PRINT "Der Computer hat gewonnen!!!!!" REM -------------------------------------------------------------------------- 12 INPUT "Wollen Sie noch einmal spielen? (ja/j//nein/*):"; nocheinmal$ PRINT IF nocheinmal$ = "ja" THEN GOTO 1 IF nocheinmal$ = "j" THEN GOTO 1 ELSE END REM ************************************************************************** END |
Textscro.bas (Quelltextdatei) | Bild zum Programm | Seitenanfang |
REM Bildschirmschoner, Scrollt von rechts nach links (so sieht es nur aus) RANDOMIZE TIMER CLS COLOR 2 FOR i = 1 TO 80 * 25 'Hintergrund (oben/unten) PRINT ""; NEXT i Farbe = 0 VIEW PRINT 2 TO 22 'Ausgabe bei Print nur in Zeilen 2-22 FOR i = 1 TO 80 '1. Zeile PRINT CHR$(i + 32); 'Zeichen von 33-255, NEXT i '0-32 Steuer-/Leerzeichen PRINT DO Farbe = ((Farbe + 1) MOD 15) + 1 'Farbe in Reihenfolge, 1-15, kein Schwarz(0) COLOR Farbe, 0 'Farbe setzen, Hintergrund Schwarz FOR i = 1 TO 80 'Aktuelle Zeile schreiben x = SCREEN(CSRLIN - 1, i) 'Lese Zeichen von Zeile darber IF x >= 255 THEN x = 32 PRINT CHR$(x + 1); 'Ausgabe des richtigen Zeichens NEXT i FOR j = 1 TO 200 'Pausenschleife x = x + 1 NEXT j LOOP UNTIL INKEY$ > CHR$(0) 'Solange bis Taste gedrueckt COLOR 7, 0 'Farben wie vorher VIEW PRINT 1 TO 25 'Ausgabebereich wie vorher CLS 'Bildschirm loeschen END |
Homepage Programme von SZ |
Letzte Änderung: 18.04.2001 |
E-Mail: Stefan Ziegler |