 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 01.09.2007, 12:15 Titel: |
|
|
Zu dem, was Marc angesprochen hat, passt vllt. auch noch das Thema "Strukturierte Programmierung".
Tutorial dazu auf FreeBasic-Portal.de _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
Verfasst am: 01.09.2007, 14:33 Titel: |
|
|
@ Mao ich werde es mir mal durchlesen
Mein Code gehts noch kürzer ?
Code: |
start:
Dim wscreen as String
Cls
screen 18
Input "Moechten sie im Vollbildmodus arbeiten oder nicht ? (j/n) ",wscreen
If wscreen = "j" or wscreen = "J" then
screen 18,,,1
elseif wscreen = "n" or wscreen = "N" then
screen 18
endif
cls
'Tabelle wird gezeichnet:
Line (50,50)-(544,230),,B
'erste Spalte
Line (150,50)-(150,200),,B
'erste Spalte füllen:
Locate 5,9
Print "Zensur -->"
Locate 8,9
Print "Anzahl -->"
Locate 11,9
Print "Prozent ->"
Locate 14, 9
Print "Auswertung:"
'erst Zeile
Line (50,100)-(544,100)
'erste Zeile füllen
Locate 5,23
Print "1"
Locate 5,32
Print "2"
Locate 5,41
Print "3"
Locate 5,49
Print "4"
Locate 5,57
Print "5"
Locate 5,65
Print "6"
'zweite Spalte
Line (220,50)-(220,200)
'dritte Spalte
Line (290,50)-(290,200)
'vierte Spalte
Line (355,50)-(355,200)
'fünfte Splate
Line (418,50)-(418,200)
'sechste Spalte
Line (480,50)-(480,200)
'zweite Zeile
Line (50,150)-(544,150)
'dritte Zeile
Line (50,200)-(544,200)
DIM AS INTEGER anznoten,x
DIM Note(1 TO 6) AS INTEGER 'obige spalte erstellt 6 variablen, note(1), note(2) usw.
DIM AS SINGLE schnitt, noten 'noten ist für die FOR...NEXT schleife
'Gibt den Variablen einen wert:
Locate 8,23
INPUT note(1)
Locate 8,32
INPUT note(2)
Locate 8,41
INPUT note(3)
Locate 8,49
INPUT note(4)
Locate 8,57
INPUT note(5)
Locate 8,65
INPUT note(6)
FOR noten = 1 TO 6 'inhalt zwischen FOR und NEXT wird 6 mal wiederholt
'noten wird nach jedem durchgang von FOR NEXT um 1 erhöht
'die anzahl der noten, wird um den wert den die jeweilige note() bekommen hat erhöht:
anznoten += Note(noten)
NEXT noten
schnitt = ((note(1)*1)+(note(2)*2)+(note(3)*3)+(note(4)*4)+(note(5)*5)+(note(6)*6)) / anznoten
Locate 14,23
Print "Durchschnitt:";
Print schnitt '? = PRINT... gibt den schnitt wieder
Locate 14, 48
Print "Anzahl der Noten:";
Print anznoten
'Berrechne Prozentwerte
LOCATE 12,21
PRINT note(1) / anznoten * 100
LOCATE 12, 26
PRINT "%"
LOCATE 12,29
PRINT note(2) / anznoten * 100
Locate 12, 34
Print "%"
Locate 12, 38
PRINT note(3) / anznoten * 100
Locate 12, 43
Print "%"
Locate 12,46
PRINT note(4) / anznoten * 100
Locate 12,51
Print "%"
Locate 12,54
PRINT note(5) / anznoten * 100
Locate 12 , 60
Print "%"
Locate 12, 62
PRINT note(6) / anznoten * 100
Locate 12, 67
Print "%"
Dim nochmal as string
Locate 21,12
Input "Nochmal von vorn ? ", nochmal
If nochmal = "j" or nochmal ="J" then Goto start else end
|
_________________ Guckt nicht nur den Link an, besuch ihn auch mal ! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 01.09.2007, 14:47 Titel: |
|
|
Ich würde es schon noch ein gutes Stück kürzer kriegen, aber dazu müsste ich einige umstellen, und dann ist es nicht mehr dein Programm. Man könnte an der Ausgabe der Prozentwerte noch straffen, wenn man will. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 01.09.2007, 15:04 Titel: |
|
|
Ich hab locate und print je in eine zeile gepackt und die DIM... zeilen nach oben gelegt (wo sie hin gehören ...)
2 überflüssige Prints entfernt und ein-zwei leerzeilen...
jetz sind es nur noch 94 Zeilen:
Code: |
start:
DIM AS STRING wscreen, nochmal 'erstellt die 2 string variablen
DIM AS INTEGER anznoten,x 'erstellt 2 Integer variablen
DIM Note(1 TO 6) AS INTEGER 'erstellt den Array
DIM AS SINGLE schnitt, noten '2 single variablen (für Kommazahlen
CLS
SCREEN 18
INPUT "Moechten sie im Vollbildmodus arbeiten oder nicht ? (j/n) ",wscreen
IF wscreen = "j" OR wscreen = "J" THEN
SCREEN 18,,,1
ELSEIF wscreen = "n" OR wscreen = "N" THEN
SCREEN 18
ENDIF
CLS
'Tabelle wird gezeichnet:
LINE (50,50)-(544,230),,B
'erste Spalte
LINE (150,50)-(150,200),,B
'erste Spalte füllen:
LOCATE 5, 9 : PRINT "Zensur -->"
LOCATE 8, 9 : PRINT "Anzahl -->"
LOCATE 11,9 : PRINT "Prozent ->"
LOCATE 14,9 : PRINT "Auswertung:"
'erst Zeile:
LINE (50,100)-(544,100)
'erste Zeile füllen:
LOCATE 5,23 : PRINT "1"
LOCATE 5,32 : PRINT "2"
LOCATE 5,41 : PRINT "3"
LOCATE 5,49 : PRINT "4"
LOCATE 5,57 : PRINT "5"
LOCATE 5,65 : PRINT "6"
'zweite Spalte:
LINE (220,50)-(220,200)
'dritte Spalte:
LINE (290,50)-(290,200)
'vierte Spalte:
LINE (355,50)-(355,200)
'fünfte Splate:
LINE (418,50)-(418,200)
'sechste Spalte:
LINE (480,50)-(480,200)
'zweite Zeile:
LINE (50,150)-(544,150)
'dritte Zeile:
LINE (50,200)-(544,200)
'Gibt den Variablen einen wert:
LOCATE 8,23 : INPUT note(1)
LOCATE 8,32 : INPUT note(2)
LOCATE 8,41 : INPUT note(3)
LOCATE 8,49 : INPUT note(4)
LOCATE 8,57 : INPUT note(5)
LOCATE 8,65 : INPUT note(6)
FOR noten = 1 TO 6 'inhalt zwischen FOR und NEXT wird 6 mal wiederholt
'noten wird nach jedem durchgang von FOR NEXT um 1 erhöht
'die anzahl der noten, wird um den wert den die jeweilige note() bekommen hat erhöht:
anznoten += Note(noten)
NEXT noten
schnitt = ((note(1)*1)+(note(2)*2)+(note(3)*3)+(note(4)*4)+(note(5)*5)+(note(6)*6)) / anznoten
LOCATE 14,23 : PRINT "Durchschnitt:"; schnitt 'ein zweites Print ist überflüssig
LOCATE 14, 48 : PRINT "Anzahl der Noten:"; anznoten
'Berrechne Prozentwerte
LOCATE 12,21 : PRINT note(1) / anznoten * 100
LOCATE 12,26 : PRINT "%"
LOCATE 12,29 : PRINT note(2) / anznoten * 100
LOCATE 12,34 : PRINT "%"
LOCATE 12,38 : PRINT note(3) / anznoten * 100
LOCATE 12,43 : PRINT "%"
LOCATE 12,46 : PRINT note(4) / anznoten * 100
LOCATE 12,51 : PRINT "%"
LOCATE 12,54 : PRINT note(5) / anznoten * 100
LOCATE 12,60 : PRINT "%"
LOCATE 12,62 : PRINT note(6) / anznoten * 100
LOCATE 12,67 : PRINT "%"
LOCATE 21,12 :INPUT "Nochmal von vorn ? ", nochmal
IF nochmal = "j" OR nochmal ="J" THEN GOTO start ELSE END |
der Doppelpunkt trennt 2 Befehle in diesem Fall Locate und Print
das ganze wird behandelt, als seien es 2 zeilen, ist aber viel übersichtlicher (nach meiner meinung)
Ob du das ganze so übernimmst, ist deine sache... _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 01.09.2007, 15:18 Titel: |
|
|
Zwei Befehle in eine Zeile zu packen, macht den Code aber nicht wirklich kürzer
Zwei Befehle bleiben nun mal zwei Befehle. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Zuletzt bearbeitet von nemored am 01.09.2007, 15:19, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 01.09.2007, 15:19 Titel: |
|
|
Bei mir ist das schon standart... das kommt bei dir auch noch  _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2007, 15:24 Titel: |
|
|
Mark Aroni hat Folgendes geschrieben: | Bei mir ist das schon standart... das kommt bei dir auch noch  |
bei mir ist es zum glück wieder gegangen... Das macht in fast allen Fällen den Code unleserlich. Einen COde wie diesen:
Code: |
'Gibt den Variablen einen wert:
LOCATE 8,23 : INPUT note(1)
LOCATE 8,32 : INPUT note(2)
LOCATE 8,41 : INPUT note(3)
LOCATE 8,49 : INPUT note(4)
LOCATE 8,57 : INPUT note(5)
LOCATE 8,65 : INPUT note(6) |
kann man komprimieren, ohne doppelte zeilen zu verwenden:
Code: |
for i = 1 to 6
locate 8, i*9 + 14
input note(i)
next
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.09.2007, 22:39 Titel: |
|
|
du meinst, nicht mehr dein stil? den stil kann man ändern... wenn du das beispiel anschaust, dann weglegst und dann nachprogrammierst, ist es schon "selbst gemacht", und eine positive entwicklung im stil  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 01.09.2007, 22:45 Titel: |
|
|
Bei allem Respekt, das sind alles nur gutgemeinte Ratschlaege zur verbesserung deines Programmierstils... daran ist nichts schlimmes...
Niemand zeigt mit dem Finger auf Dich.
Daraus kann man nur lernen und sich verbessern... wenn Du derartige Hilfe nicht annehmen willst ist das eine andere Sache! _________________
 |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 01.09.2007, 22:51 Titel: |
|
|
Franz hat Folgendes geschrieben: | Das sollte ich tun, allerdings habe ich nicht mehr so dass Gefühl das Script selbst gemacht zu haben .  |
Das spielt doch auch keine Rolle; dieser Notenrechner an sich ist doch eigentlich belanglos: Ziel der Sache ist doch, dass du bei deinem nächsten und übernächsten größeren Projekt von vornherein auch so schreibst, d.h. dass du immer weiter dazulernst. Zu vermarkten ist solche Software eh nicht...  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 02.09.2007, 13:20 Titel: |
|
|
[OT]
Franz hat Folgendes geschrieben: |
Wieso ist es so schwer eine Maus in QBasic einzubinden ?
|
Weil eine Maus zu Zeiten von QB immer noch nicht unbedingt zur Standard-Ausrüstung zählte. Warum auch, Windows war (okay, ist) schlecht und es "herrschte" DOS.
Franz hat Folgendes geschrieben: |
Wann bekomme ich endlich die Mail von Qbasic-City ?
|
QBC ist tot. Alternative: http://www.qb-wettbewerb.de _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.09.2007, 16:16 Titel: |
|
|
Stormy hatte einfach keine Zeit (und Motiavtion) mehr dazu... und mir scheint, dass du nicht nur nicht rechnen, sondern auch nicht lesen kannst
in den news steht schon seit langer zeit, dass das projekt zur Zeit still steht... bis das Team wieder genug motivation hat  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Franz

Anmeldungsdatum: 24.03.2007 Beiträge: 111 Wohnort: Auf ner DVD ich bin nur ein Programm
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|