Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Basic!!!





Frage

Hi! Ich bin auf dem Gebiet der Programmierung ein relativer neuling. Ich habe vor Kurzem angefangen etwas mit Python herum zu experimentieren. Das klappt auch relativ gut. Nun habe ich aber einige Bücher bei uns im Keller gefunden, die mich auf Basic und somit Die Wurzel der Programmiersprachen führten. Ich bin intterresiert daran diese Sprach zu vertiefen. Wie gesagt bin ich ein Newbie und habe keine Ahnung wie ich es verwirklichen soll. Meine fragen: Wie kann ich wo einen brauchbaren Editor für Basic finden oder is Basic so veraltet das es auf windows Xp garnicht mehr zu realisieren ist? Ist Visual Basic eine Art erweiterung oder ein Nachkomme von Basic der alle strukturen von Basic beinhaltet? Könnte ich also mit VB auch normale Basic Programme schreiben wie sie in meinem Buch erläutert sind? Ich möchte nämlich das Grundprinzip der Programmierung erlernen und das geht denke ich am besten mit der Ur sprache. Wie kann ich also einen editor oder compiler oder sonstiges zu Basic finden? Danke euch Faanti

Antwort 1 von disco

moin

lass mich nicht lügen, aber bis win 98 war basic (editor) noch dabei.?! weiss es aber nicht ganz genau.
hatte das mal auch nen bisschen in der schule unter DOS und soweit ich mich errinern kann konnte man das mit "qbasic" compilen und dann hatte man eine ausführbare exe datei.
aber wie gesagt, ist nur halbwissen. ist schon ein wenig her.

g,
disco

Antwort 2 von disco

meine güte, hab nen gedächniss wie nen elefant. es heisst tatsächlich qbasic (hab gerade mal gegoogelt). hier kannste dir entwicklungsumgebung und compiler ziehen:
http://www.antonis.de/qbdown/qbcompil.htm

und wie das aussieht sind das noch die originale aus den 80ern und 90ern. nostalgie pur also :-).

hoffe das hilft dir.

g,
disco

Antwort 3 von Zemmel

Hi !

Mit Basic anzufangen ist eine einfache Möglichkeit.
Ich habe das in grauer Vorzeit auch gemacht, empfand es aber später als Nachteil, weil Basic nicht gerade viel Disziplin vom Programmierer fordert.
Es ist sehr leicht möglich, ein Programm zu schreiben, durch das der Programmierer selbst nach einem halben Jahr nicht mehr durchblickt. Früher hieß sowas "Spaghetti-Code".
Wenn man sich so eine Schlamperei erstmal angewöhnt hat, ist es schwer, sich das wieder abzugewöhnen.

Schau Dir doch mal die Programmiersprache PASCAL an.
Pascal ist von der Syntax her nicht so kryptisch wie z.B. "C" (ein bißchen wie Basic), man kommt aber nicht drumherum, einigermaßen übersichtlichen Code zu schreiben.

Gruß

Klaus

Antwort 4 von faanti

Mhhh danke erstmal für alles :)
Nun habe ich leider ein Problem Programiertechnischer Natur. Habe mir Qbasic runtergeladen und versuche nun die Beispiele im Buch zu probieren. Das geht auch einigermaßen.
Bis auf einige Probleme vllt könnt ihr mir da helfen wenn ihr das programm kennt ;)
1. Qbasic kennt den Befehl New nicht... Wie kann ich Im ausführ fenster dafür sorgen, dass nich die Ergibnisse und ausdrucke vom durchlauf davor angezeigt werden?
2. Habe hier im Buch ein beispiel von einem Benzinverbrauch programm...
sieht im Buch so aus:

100 Let n=0
110 Let v=0
120 Read s1
130 read b
140 read s2
150 Let v1= b / (s2 -s1)*100
160 print v1
170 let v=v+v1
180 let n=n+1
190 let s1 = s2
200 goto 130
1000 data 9000
1010 data 15
1020 data 9090
1030 data (irgendein wert)
1040 data (irgendein wert)
1050 data (irgendein wert)

Soweit so gut. Wenn ichs mir so durchlese klingt es auch ganz plausibel, aber leider is es das nich :)
es funktioniert auch solange, bis ich in zeile 200 den goto 130 befehl einfüge. ohne diesen, rechnet er mir brav den den verbrauch aus und druckt ihn, aber sobald der goto befehl reinkommt sagt er mir das in zeile 130 " Read jenseits von data " ist...
Was hat mir das zu sagen bzw. was muss ich anders machen damit der die nächsten data auswerten kann?
Danke
Faanti

Antwort 5 von Zemmel

Hi !

Das Beispiel steht so im Buch ??
Also die Kombination DATA / READ arbeitet mit einem Zeiger. Beim ersten READ-Befehl wird der erste Wert gelesen und der Zeiger auf den zweiten Wert gesetzt, Beim nächsten READ-Befehl, wird dann also der zweite Wert gelesen, usw...
D.h. nach dem letzten READ-Befehl steht der Zeiger HINTER dem letzten Wert in der DATA-Reihe.
Folgt nun ein weiterer READ-Befehl (erzeugt durch das GOTO 130) weiß das Programm nicht, welchen Wert es lesen soll und es kommt zu der beschriebenen Fehlermeldung.

Allerdings finde ich das Programm extrem umständlich und unkomfortabel:
Der LET- Befehl in Zeile 100 und 110 ist überflüssig. Erstens könnte man einfach "n=0" schreiben und zweitens sind alle Variablen beim Programmstart sowieso null. Sinnvoll also nur, wenn von irgendwoher auf diese Zeilen verzweigt wird.

Wenn ich das richtig verstehe, subtrahiert das Programm zwei Kilometerstände voneinander, nimmt die getankte Benzinmenge und errechnet den Vebrauch...
Die Werte innerhalb des Programmcodes in DATA-Zeilen abzulegen ist so ziemlich die ungünstigste Lösung. Man müßte ja jedesmal das Programm umschreiben, wenn die Werte sich ändern.
Den Sinn der Zeilen 1030 bis 1050 hab´ ich nicht verstanden...

Ich würde das so schreiben - ohne Gewähr, kann´s nicht testen :

(die REM´s incl. der Kommentare kann man natürlich weglassen)

10 CLS : REM Bildschirm löschen
15 REM jetzt die Eingabe der Daten
20 PRINT"Kilometerstand 1 ";LINE INPUT kilometer1
30 PRINT:PRINT"Kilometerstand 2";LINE INPUT kilometer2
40 PRINT:PRINT"Getankte Benzinmenge "; LINE INPUT liter
45 REM jetzt die Berechnung des Verbrauchs
50 verbrauch = liter / (kilometer2 - kilometer 1) * 100
60 PRINT:PRINT"Der Verbrauch beträgt ";verbrauch;" Liter auf 100 km"
65 REM jetzt die Abfrage, ob nochmal oder nicht
70 PRINT:PRINT"Möchten Sie noch eine Berechnung durchführen (J/N) ?"
80 WHILE INKEY$ = ""
90 wart$ = INKEY$
100 WEND
110 IF wart$ = "j" THEN RUN

Gruß

Klaus

Antwort 6 von Zemmel

Hi nochmal !

Meine geistige Umnachtung lichtet sich langsam.
Das Programm wird so nicht ganz laufen.

Zeilen 20-40 müssen so lauten:
20 PRINT"Kilometerstand 1 "; : INPUT kilometer1
30 PRINT:PRINT"Kilometerstand 2"; : INPUT kilometer2
40 PRINT:PRINT"Getankte Benzinmenge "; : INPUT liter

(der LINE INPUT Befehl funktioniert nur mit Stringvariablen und es fehlte jeweils ein Doppelpunkt)

Zeile 50 muß so lauten:
50 verbrauch = liter / (kilometer2 - kilometer1) * 100

(war ein Leerzeichen zwischen kilometer und 1)

Ach ja - in qbasic kann man die Zeilennummern eigentlich auch weglassen. Wäre auch günstig, dann kommt man nicht so leicht in Versuchung ein "GOTO" zu benutzen. Das macht den Code nämlich arg unübersichtlich.

Gruß

Klaus