#1 29. Mai 2006 hi.-...sitze gerade in info und hab eine woche zeit ( 6 schulstunden ) um ein eigenes programm mit qbasic zu programmieren...das prob...ich hab keine ahnung was ich machen sol und wie^^... wäre nett wenn ihr mir ein paar vorschläge macht oder mir einfach ein nettes programm macht....aber nicht zu kompliziert...(klasse 9)^^ danke + Multi-Zitat Zitieren
#2 29. Mai 2006 Ach du heilige Schei*e, welcher Info-Lehrer bringt denn seinen Schülern noch QBasic bei? Wo gibt's denn sowas? Ich hab es früher auch noch gelernt und werde gleich mal schauen. Auf irgendeiner CD müsste ich noch Programme haben... falls die CD überhaupt noch funktioniert ^^ + Multi-Zitat Zitieren
#3 29. Mai 2006 Hier ein altes Prog von mir zum Thema Kaprikarzahl CLS INPUT n c = 0 DO UNTIL n = 6174 c = c + 1 PRINT " Sortieren" FOR h = 1 TO 4 n = INT(n) n = n / 10 z%(h) = 10 * (n - INT(n)) NEXT h FOR h = 3 TO 1 STEP -1 FOR j = 1 TO h IF z%(j) > z%(j + 1) THEN b = z%(j) z%(j) = z%(j + 1) z%(j + 1) = b b = 0 END IF FOR i = 4 TO 1 STEP -1 PRINT z%(i); NEXT i PRINT NEXT j NEXT h a = 1 g = 0 FOR i = 1 TO 4 hilfzahl%(i) = z%(i) * a a = a * 10 g = g + hilfzahl%(i) NEXT i a = 1 k = 0 FOR i = 4 TO 1 STEP -1 hilfzahl2%(i) = z%(i) * a a = a * 10 k = k + hilfzahl2%(i) NEXT i n = g - k PRINT " gr”áte Zahl : "; g PRINT "kleinste Zhal :"; k PRINT "neue Zahl :"; n LOOP PRINT PRINT "Es wurden"; c; "durchl„ufe ben”tigt um auf die Kaprikazahl zu kommen " END Hätte auch noch welche mit komplexen Zahlen... ist aber eher Stoff der Oberstufe bzw Uni.+ PS: Qbasic ist zum Anfang relativ gut geeignet da man keine Compiler braucht und die Programmstruktur ähnlich wie Java und C ist. + Multi-Zitat Zitieren
#4 30. Mai 2006 Ich entsinne mich nicht mehr genau, aber man konnte die kompilieren.... oder war es, dass man das nicht zwangsläufig musste? Naja, gut mit Java hat es meiner Ansicht nach gar nichts gemein, vor allem da es sich um eine prozedurale Sprache handelt. Mit C...ja gut schon... abgesehen von dem Funktionsumfang *lol* Ich hab auf Anhieb folgendes Prog gefunden, dass ein (pseudo) 3D Tortendiagramm erstellt. (Wenn ich mir das heute anschaue, ist der Programmierstil echt grässlich! ^^ ) Code: Neu: DECLARE SUB GetKeys (KeyString$, KeyName$) CLS 'Berechnung Werteinput = 0 Korrektur = 0 Schleifen = 1 summe = 0 durchgang2 = 1 multiplikator = 1 xaspekt = 8 yaspekt = 25 radius = 200 Abstand = 60 winkel1 = 0 SCREEN 12 Menu: CLS LINE (160, 120)-(480, 360), 15, B 'Grundbox mit LOCATE 10, 37: PRINT "-=Men?=-" 'dem Eintrag IF Schleifen = 1 AND Korrektur = 0 THEN LOCATE 13, 31: PRINT "(W)erte eingeben" ELSE LOCATE 13, 31: PRINT "(N)euer Durchlauf" END IF LOCATE 14, 31: PRINT "(K)orrektur der Werte" LOCATE 15, 31: PRINT "(D)iagramm zeichnen" LOCATE 16, 31: PRINT "(H)ilfe" LOCATE 18, 31: PRINT "(E)nde" PAINT (250, 200), 0, 15 'Men? LINE (160, 120)-(480, 360), 8, B '! LINE (160, 120)-(480, 120), 7 'oben nr1 LINE (159, 119)-(481, 119), 7 'oben nr2 LINE (161, 121)-(479, 121), 7 'oben nr3 LINE (480, 120)-(480, 360), 7 'rechts nr1 LINE (479, 119)-(479, 359), 7 'rechts nr2 LINE (481, 120)-(481, 361), 7 'rechts nr3 LINE (160, 120)-(160, 360), 8 ' links nr1 LINE (159, 119)-(159, 361), 8 ' links nr2 LINE (161, 121)-(161, 359), 8 ' links nr3 LINE (160, 360)-(480, 360), 8 ' unten nr1 LINE (161, 359)-(479, 359), 8 ' unten nr2 LINE (159, 361)-(481, 361), 8 ' unten nr3 warten: Q$ = INPUT$(1): Q = INSTR("WDENHKwdenhk", Q$) IF Q = 0 THEN GOTO warten ON Q GOTO Werte, Diagramm, Ende, Neu, Hilfe, Korrektur, Werte, Diagramm, Ende, Neu, Hilfe, Korrektur Werte: CLS Werteinput = 1 DO INPUT "Wieviele Werte m”chten Sie f?r das Diagramm eingeben? (max. 32) ", durchgang LOOP UNTIL durchgang > 1 AND durchgang < 33 DO again: IF Korrektur = 1 THEN INPUT "Neue Zahl: ", eingabe ELSE INPUT "Zahl: ", eingabe END IF IF eingabe = 0 THEN PRINT "Error: Leerer Wert eingeben. Wiederholen Sie die Eingabe dieser Zahl": GOTO again END IF SELECT CASE Schleifen CASE 1: zahl1 = eingabe CASE 2: zahl2 = eingabe CASE 3: zahl3 = eingabe CASE 4: zahl4 = eingabe CASE 5: zahl5 = eingabe CASE 6: zahl6 = eingabe CASE 7: zahl7 = eingabe CASE 8: zahl8 = eingabe CASE 9: zahl9 = eingabe CASE 10: zahl10 = eingabe CASE 11: zahl11 = eingabe CASE 12: zahl12 = eingabe CASE 13: zahl13 = eingabe CASE 14: zahl14 = eingabe CASE 15: zahl15 = eingabe CASE 16: zahl16 = eingabe CASE 17: zahl17 = eingabe CASE 18: zahl18 = eingabe CASE 19: zahl19 = eingabe CASE 20: zahl20 = eingabe CASE 21: zahl21 = eingabe CASE 22: zahl22 = eingabe CASE 23: zahl23 = eingabe CASE 24: zahl24 = eingabe CASE 25: zahl25 = eingabe CASE 26: zahl26 = eingabe CASE 27: zahl27 = eingabe CASE 28: zahl28 = eingabe CASE 29: zahl29 = eingabe CASE 30: zahl30 = eingabe CASE 31: zahl31 = eingabe CASE 32: zahl32 = eingabe END SELECT summe = eingabe + summe IF Korrektur = 1 THEN GOTO Korrektur Schleifen = Schleifen + 1 LOOP UNTIL Schleifen > durchgang GOTO Menu Diagramm: CLS IF durchgang = 0 OR Werteinput = 0 THEN PRINT "Error: Sie m?ssen zuerst die Werte f?r das Diagramm festlegen!" PRINT "Beliebige Taste dr?cken...": SLEEP: GOTO Menu END IF CONST PI = 3.141593 Rotation: DO SELECT CASE durchgang2 CASE 1: prozent = zahl1 / (summe / 100) CASE 2: prozent = zahl2 / (summe / 100) CASE 3: prozent = zahl3 / (summe / 100) CASE 4: prozent = zahl4 / (summe / 100) CASE 5: prozent = zahl5 / (summe / 100) CASE 6: prozent = zahl6 / (summe / 100) CASE 7: prozent = zahl7 / (summe / 100) CASE 8: prozent = zahl8 / (summe / 100) CASE 9: prozent = zahl9 / (summe / 100) CASE 10: prozent = zahl10 / (summe / 100) CASE 11: prozent = zahl11 / (summe / 100) CASE 12: prozent = zahl12 / (summe / 100) CASE 13: prozent = zahl13 / (summe / 100) CASE 14: prozent = zahl14 / (summe / 100) CASE 15: prozent = zahl15 / (summe / 100) CASE 16: prozent = zahl16 / (summe / 100) CASE 17: prozent = zahl17 / (summe / 100) CASE 18: prozent = zahl18 / (summe / 100) CASE 19: prozent = zahl19 / (summe / 100) CASE 20: prozent = zahl20 / (summe / 100) CASE 21: prozent = zahl21 / (summe / 100) CASE 22: prozent = zahl22 / (summe / 100) CASE 23: prozent = zahl23 / (summe / 100) CASE 24: prozent = zahl24 / (summe / 100) CASE 25: prozent = zahl25 / (summe / 100) CASE 26: prozent = zahl26 / (summe / 100) CASE 27: prozent = zahl27 / (summe / 100) CASE 28: prozent = zahl28 / (summe / 100) CASE 29: prozent = zahl29 / (summe / 100) CASE 30: prozent = zahl30 / (summe / 100) CASE 31: prozent = zahl31 / (summe / 100) CASE 32: prozent = zahl32 / (summe / 100) END SELECT IF durchgang2 = 1 THEN winkel = prozent * 3.6 winkel2 = prozent * 3.6 ELSE winkel = prozent * 3.6 + winkel winkel2 = prozent * 3.6 + winkel END IF REM winkel2 = prozent * 3.6 ' Null-Punkt x,y-radius aspekt = xaspekt / yaspekt x = 320 y = 240 - Abstand REM LINE (x, y)-(x, y + ((radius / yaspekt) * xaspekt)), 15 'Standard-Linie von mitte nach unten LINE (x - radius, y)-(x - radius, y + Abstand), 10 'linker Seitenstrich LINE (x + radius, y)-(x + radius, y + Abstand), 10 'rechter Seitenstrich bogen = (PI / 180) * winkel bogen2 = (PI / 180) * (winkel2 / 2) LINE (x, y)-(x + SIN(bogen) * 201, y + COS(bogen) * 201), 15 'Einteilungslinie CIRCLE (x, y), radius, 10, , , aspekt 'obere Ellipse PAINT (x + SIN(bogen) * 201, y + COS(bogen) * 201), 0, 10 'F?llt den Strich bis zur Ellipse aus PAINT (1, 1), 0, 10 CIRCLE (x, y), radius, 15, , , aspekt 'obere Ellipse 'PAINT (x + SIN(bogen2) * xaspekt, y + COS(bogen2) * xaspekt), 4, 15 'F?llt die Einteilung mit Farbe CIRCLE (x, y), radius, 10, , , aspekt 'obere Ellipse CIRCLE (x, y + Abstand), radius, 2, , , aspekt 'untere Ellipse LOCATE 2, 1: PRINT "Esc - Zur?ck zum Men?" LOCATE 3, 1: PRINT "F1 - Informationen ein/aus" LOCATE 14, 6: PRINT CHR$(24) LOCATE 15, 6: PRINT CHR$(25) IF info = 1 THEN GOTO Informationen Zuruck: durchgang2 = durchgang2 + 1 IF durchgang = 1 THEN durchgang2 = 1 LOOP UNTIL durchgang2 = durchgang + 1 IF durchgang2 = durchgang + 1 THEN durchgang2 = 1 DO Hi$ = "" 'Eingelese Taste wird unter Hi$ gespeichert WHILE Hi$ = "" Hi$ = INKEY$ WEND CALL GetKeys(Hi$, KeyPress$) 'KeyPress$ ist die R?ckgabe der Taste LOOP UNTIL KeyPress$ = "Up" OR KeyPress$ = "Down" OR KeyPress$ = "Esc" OR KeyPress$ = "F1" IF KeyPress$ = "Esc" THEN CLS : GOTO Menu IF KeyPress$ = "F1" AND info = 0 THEN info = 1: CLS : GOTO Rotation IF KeyPress$ = "F1" AND info = 1 THEN info = 0: CLS : GOTO Rotation IF xaspekt = yaspekt AND KeyPress$ = "Up" THEN multiplikator = 0 IF xaspekt = 1 AND KeyPress$ = "Down" THEN multiplikator = 0 ELSEIF xaspekt < yaspekt AND KeyPress$ = "Up" THEN multiplikator = 1 Abstand = Abstand - PI - .3 ELSEIF xaspekt > 1 AND KeyPress$ = "Down" THEN multiplikator = -1 Abstand = Abstand + PI + .3 END IF x = 0 y = 0 xaspekt = xaspekt + (1 * multiplikator) CLS GOTO Rotation Korrektur: CLS IF Werteinput = 0 THEN PRINT "Error: Sie haben keine Werte definiert!": PRINT "Beliebige Taste dr?cken...": SLEEP: GOTO Neu PRINT "" PRINT " -= Werte Matrix =-" PRINT "" PRINT " Wert1:", zahl1, "Wert2:", zahl2 PRINT " Wert3:", zahl3, "Wert4:", zahl4 PRINT " Wert5:", zahl5, "Wert6:", zahl6 PRINT " Wert7:", zahl7, "Wert8:", zahl8 PRINT " Wert9:", zahl9, "Wert10:", zahl10 PRINT " Wert11:", zahl11, "Wert12:", zahl12 PRINT " Wert13:", zahl13, "Wert14:", zahl14 PRINT " Wert15:", zahl15, "Wert16:", zahl16 PRINT " Wert17:", zahl17, "Wert18:", zahl18 PRINT " Wert19:", zahl19, "Wert20:", zahl20 PRINT " Wert21:", zahl21, "Wert22:", zahl22 PRINT " Wert23:", zahl23, "Wert24:", zahl24 PRINT " Wert25:", zahl25, "Wert26:", zahl26 PRINT " Wert27:", zahl27, "Wert28:", zahl28 PRINT " Wert29:", zahl29, "Wert30:", zahl30 PRINT " Wert31", zahl31, "Wert32:", zahl32 PRINT "" PRINT "" PRINT " Esc - Men? ", " (W)ert korrigieren" DO Hi$ = "" 'Eingelese Taste wird unter Hi$ gespeichert WHILE Hi$ = "" Hi$ = INKEY$ WEND LOOP UNTIL Hi$ = CHR$(27) OR Hi$ = CHR$(119) OR Hi$ = CHR$(87) IF Hi$ = CHR$(27) THEN GOTO Menu IF Hi$ = CHR$(119) OR Hi$ = CHR$(87) THEN PRINT "" INPUT "Welchen Wert wollen Sie korrigieren? (NUR Wertnummer!): Wert", Schleifen PRINT "" IF durchgang = 1 THEN subtraktion = zahl1 IF durchgang = 2 THEN subtraktion = zahl2 IF durchgang = 3 THEN subtraktion = zahl3 IF durchgang = 4 THEN subtraktion = zahl4 IF durchgang = 5 THEN subtraktion = zahl5 IF durchgang = 6 THEN subtraktion = zahl6 IF durchgang = 7 THEN subtraktion = zahl7 IF durchgang = 8 THEN subtraktion = zahl8 IF durchgang = 9 THEN subtraktion = zahl9 IF durchgang = 10 THEN subtraktion = zahl10 IF durchgang = 11 THEN subtraktion = zahl11 IF durchgang = 12 THEN subtraktion = zahl12 IF durchgang = 13 THEN subtraktion = zahl13 IF durchgang = 14 THEN subtraktion = zahl14 IF durchgang = 15 THEN subtraktion = zahl15 IF durchgang = 16 THEN subtraktion = zahl16 IF durchgang = 17 THEN subtraktion = zahl17 IF durchgang = 18 THEN subtraktion = zahl18 IF durchgang = 19 THEN subtraktion = zahl19 IF durchgang = 20 THEN subtraktion = zahl20 IF durchgang = 21 THEN subtraktion = zahl21 IF durchgang = 22 THEN subtraktion = zahl22 IF durchgang = 23 THEN subtraktion = zahl23 IF durchgang = 24 THEN subtraktion = zahl24 IF durchgang = 25 THEN subtraktion = zahl25 IF durchgang = 26 THEN subtraktion = zahl26 IF durchgang = 27 THEN subtraktion = zahl27 IF durchgang = 28 THEN subtraktion = zahl28 IF durchgang = 29 THEN subtraktion = zahl29 IF durchgang = 30 THEN subtraktion = zahl30 IF durchgang = 31 THEN subtraktion = zahl31 IF durchgang = 32 THEN subtraktion = zahl32 summe = summe - subtraktion Korrektur = 1 GOTO again END IF Informationen: Umfang = PI * ((((radius * 2) / yaspekt) * xaspekt) + (radius * 2)) / 2 Breite = radius * 2 Hoehe = ((radius * 2) / yaspekt) * xaspekt PRINT "" PRINT "" PRINT "" PRINT "" PRINT "" PRINT "Datum: ", DATE$ PRINT "Zeit: ", TIME$ PRINT "X-Aspekt:", xaspekt PRINT "Y-Aspekt:", yaspekt PRINT "Breite:", Breite PRINT "H”he:", Hoehe PRINT "Umfang:", Umfang GOTO Zuruck Hilfe: CLS PRINT "" COLOR 4: PRINT " -=Hilfe=-" PRINT "" PRINT "" PRINT "-Werte Festlegen-" COLOR 15: PRINT "Um ein Diagramm zu erstellen m?ssen Sie die gew?nschten Werte in dem" PRINT "Men?-Punkt 'Werte eingeben' eintragen. Zu Anfang werden Sie aufgefordert" PRINT "die Anzahl der Werte einzugeben (Es k”nnen maximal 32 Werte angegeben werden!)." PRINT "Anschlieáend geben sie jeden Wert einzeln nacheinander ein." PRINT "Sie k”nnen einfache Werte, Winkelmaáe und prozentuale Werte angeben." PRINT "Nach der Eingabe springt das Programm sofort wieder ins Men? zur?ck " PRINT "(Die eingegebenen Werte wurden gespeichert!)." PRINT "" PRINT "Weiter mit beliebiger Taste..." SLEEP PRINT "" COLOR 4: PRINT "-Werte korrigieren-" COLOR 15: PRINT "šber den Men?-Punkt 'Korrektur der Werte' werden Ihnen alle eingegebenen" PRINT "Werte angezeigt und Sie k”nnen diese, falls notwendig, einzeln „ndern." PRINT "Hierzu dr?cken Sie 'w' f?r 'Wert korrigieren'." PRINT "Sie werden gefragt welchen Wert Sie „ndern m”chten, geben Sie die Nummer" PRINT "des zu „ndernden Wertes an. VORSICHT: Sie d?rfen NUR die Nummer angeben!" PRINT "Anschlieáend geben Sie bei 'Neue Zahl' den neuen Wert ein." PRINT "Der entsprechende neue Wert wurde nun ,wie in der aktualisierten" PRINT "Werte Matrix zu erkennen gespeichert." PRINT "Diesen Vorgang k”nnen Sie beliebig oft wiederholen." PRINT "_________________________________________________________________________" PRINT "Beispiel: Sie wollen den ersten Wert (Wert1) von 2 auf 5 „ndern." PRINT "Bei der Anfrage auf die Wertnummer geben Sie einfach nur die Ziffer 1 ein" PRINT "(entsprechend bei Wert2 die 2, Wert3 die 3 usw.)." PRINT "Sie werden aufgefordert die 'Neue Zahl' einzugeben, da diese 5 sein soll" PRINT "geben Sie auch die Ziffer 5 ein. Nun wird die Werte Matrix automatisch" PRINT "aktualisiert und wie Sie sehen k”nnen steht hinter 'Wert1' nun nicht mehr" PRINT "2 sondern 5." PRINT "_________________________________________________________________________" PRINT "" PRINT "Weiter mit beliebiger Taste..." SLEEP PRINT "" COLOR 4: PRINT "-Diagramm Erstellen-" COLOR 15: PRINT "W„hlen Sie den Men?-Punkt 'Diagramm zeichnen' und das Programm gibt das" PRINT "Kreisdiagramm mit Ihren Werten aus." PRINT "Mit den Pfeiltasten auf- und abw„rts k”nnen Sie den Sichtwinkel auf das" PRINT "3 dimensionale Kreisdiagramm entlang der X-Achse ver„ndern." PRINT "Dr?cken Sie die 'Esc'-Taste um wieder in den Men?-Modus zu wechseln." PRINT "(Die gespeicherten Daten bleiben erhalten, Sie k”nnen das Diagramm beliebig" PRINT "oft wieder aufrufen)." PRINT "" PRINT "Zur?ck zum Men? mit beliebiger Taste..." SLEEP GOTO Menu Ende: END SUB GetKeys (KeyString$, KeyName$) KeyName$ = "" IF LEN(KeyString$) = 1 THEN SELECT CASE RIGHT$(KeyString$, 1) CASE IS = CHR$(9) KeyName$ = "Tab" CASE IS = "" KeyName$ = "Esc" END SELECT ELSEIF LEN(KeyString$) = 2 AND LEFT$(KeyString$, 1) = CHR$(0) THEN SELECT CASE RIGHT$(KeyString$, 1) CASE IS = CHR$(82) KeyName$ = "Insert" CASE IS = CHR$(71) KeyName$ = "Home" CASE IS = CHR$(73) KeyName$ = "Page Up" CASE IS = CHR$(83) KeyName$ = "Delete" CASE IS = CHR$(79) KeyName$ = "End" CASE IS = CHR$(81) KeyName$ = "Page Down" CASE IS = ";" KeyName$ = "F1" CASE IS = "<" KeyName$ = "F2" CASE IS = "=" KeyName$ = "F3" CASE IS = ">" KeyName$ = "F4" CASE IS = "?" KeyName$ = "F5" CASE IS = "@" KeyName$ = "F6" CASE IS = "A" KeyName$ = "F7" CASE IS = "B" KeyName$ = "F8" CASE IS = "C" KeyName$ = "F9" CASE IS = "D" KeyName$ = "F10" CASE IS = "…" KeyName$ = "F11" CASE IS = "†" KeyName$ = "F12" CASE IS = "H" KeyName$ = "Up" CASE IS = "P" KeyName$ = "Down" CASE IS = "K" KeyName$ = "Left" CASE IS = "M" KeyName$ = "Right" END SELECT END IF IF KeyName$ = "" THEN KeyName$ = KeyString$ END SUB Vielleicht kann dir das irgendwie ein bisschen Inspiration geben ^^ Ansonsten sag doch mal, was du dir so vorstellen könntest. Ich müsste auch noch eins haben, das ZinsesZins ausrechnet und die Funktion grafisch darstellt und son Kram. Gruß Resus + Multi-Zitat Zitieren
#5 30. Mai 2006 also ich weiss nit, ob die struktur die gleiche wie in java ist. ich finde sie einbisschen kompliziert. aber ist nur meine meinung. ich muss ehrlich sagen, das java für meine anwendung absolut okay ist!!! nice day!!! + Multi-Zitat Zitieren
#6 31. Mai 2006 also ich finde es hat schon viel mit java gemein. QBasic -> Java Subroutines -> voids if-else struktur ist gleich. andere Schleifen sind auch das selbe. Übergabe von Variablen verläuft nach dem selben Prinzip. Natürlich ist Java und C sehr viel komplexer aber zum Einstieg ist Basic schon OK + Multi-Zitat Zitieren