Welcome, Guest. Please login or register.


Author Topic: Általános BASIC Kérdések (Read 431125 times)

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #360 on: 2012.December.04. 21:01:55 »
Quote from: Tuby128
Nem lehetne, hogy a .bas mellett .txt formátumban is becsatolnátok? Kérlek!
Természetesen megoldható, csak kérni kell! :)
A múltkori, permutációt végző programot is berakom.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9952
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #361 on: 2012.December.04. 21:04:50 »
Quote from: Tuby128
Nem lehetne, hogy a .bas mellett .txt formátumban is becsatolnátok? Kérlek!
Talán meg lehetne csinálni, hogy on-line átalakítsa az oldal a .bas fájlt txt fájllá és így egyből meg lehetne nézni. :D Egy lebutított, web felületen futó emulátorral, ami a basic programot "detokenizálja", és kódként olvasható lenne a lista a hozzászólás alatt.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #362 on: 2012.December.04. 21:21:35 »
Aki a Pendulomot írta, annak üzenem, hogy C-ben kellene programoznia, ott pont úgy van, hogy függvényeket hívogatunk meg. (ezt nevezzük struktúrált programozásnak)

Ezért ötöst adnék, ha osztályoznom kellene! Nagyon ügyes!
  560       LET Q=QUIT
  570       IF Q THEN EXIT FOR
...
  670 DEF QUIT
  680   LET QUIT=0
  690   LET KEY$=INKEY$
  700   IF KEY$
  710 END DEF

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #363 on: 2012.December.04. 21:31:50 »
Most a PERMUT.BAS:

Van itt ez a függvény:

  470 DEF FACT(X)
  480   FOR Y=2 TO X-1
  490     LET X=X*Y
  500   NEXT
  510   LET FACT=X
  530 END DEF

Lehet, hogy működik, de szerintem nem szerencsés, hogy ugyanazt az X változót mint bejövő paramétert használja, mert ha a FOR kiértékelése többször megtörténik, akkor mivel X a cikluson belül változik, a feltétel is változik. Úgy volna tiszta, ha gyűjtőnek egy új változót használnál fel.

Tehát:
  470 DEF FACT(X)
  475 LET Z=X  ! bevezetünk egy új valtozót
  480   FOR Y=2 TO X-1 ! Itt az "X-1"-et minden ciklusban ki kellene értékelnie
  490     LET Z=Z*Y
  500   NEXT
  510   LET FACT=Z
  530 END DEF


Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #364 on: 2012.December.04. 21:47:43 »
Quote from: Tuby128
Lehet, hogy működik, de szerintem nem szerencsés, hogy ugyanazt az X változót mint bejövő paramétert használja,
Ez működik. Ezt a Felhasználói kézikönyvből vettem, és pont a lokális változókra példa. Annyit módosítottam rajta, hogy nem futtatom le mégegyszer a ciklust, csak, hogy 1-el is megszorozza a függvény addigi értékét. A függvény a saját lokális X változóját használja, sőt ha rekurziót alkalmazunk, minden hívásnak saját változói vannak (ez a rekurzív fraktál rajzolásnál elengedhetetlen).
GOSUB-bal elég "ütős" megoldásokat láttam fraktálokra... :twisted:

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #365 on: 2012.December.04. 21:50:28 »
Quote from: Tuby128
Aki a Pendulomot írta, annak üzenem, hogy C-ben kellene programoznia, ott pont úgy van, hogy függvényeket hívogatunk meg. (ezt nevezzük struktúrált programozásnak)
Minden programom így néz ki. Itt alább a főprogram a 350-es sorig tart. A gimiben egyébként Turbo PAscal-ban programoztunk, ott kezdődött ez a mánia. Az IS-BASIC szerintem egy rugalmasabb TURBO PASCAL, csak a típusdeklaráció hiányzik belőle.
« Last Edit: 2012.December.04. 21:53:42 by Lacika »

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #366 on: 2012.December.04. 21:52:06 »
Quote from: Tuby128
Ezért ötöst adnék, ha osztályoznom kellene! Nagyon ügyes!
Köszönöm... :oops:
A rajzoló rutin egyébként a BBC Basic-es példa alapján készült.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14739
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #367 on: 2012.December.04. 22:10:31 »
Quote from: Lacika
Az IS-BASIC szerintem egy rugalmasabb TURBO PASCAL, csak a típusdeklaráció hiányzik belőle.
Meg a hülye pontosvesszők :-)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #368 on: 2012.December.04. 22:13:39 »
Akkor még egy pillanatra térjnk ide vissza:

  470 DEF FACT(X)
  480   FOR Y=2 TO X-1
  490     LET X=X*Y
  500   NEXT
  510   LET FACT=X
  530 END DEF

A 470-es sorban definiáljuk először X-et. Ezután 480-ban kiértékelek egy relációt, és belépek a ciklusba. 490-ben módosítom X-et. 500-ban visszaugrok a 480-as kiértékelésre. A BASIC-nek ilyenkor el kellene végeznie újra "X-1"-es kiértékelést a módosított X-szel. Ezt nem teszi meg.

Másik szemlélet is hibás:
 Ha azt állítjuk, hogy 490-ben egy lokális változót hoztunk létre, ami csak a FOR ciklus alatt érvényes, akkor a NEXT után X vissza kellene, hogy kapja a FOR előtti értékét.

 Ezzel azt akarom mondani, hogy így nem oké.

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #369 on: 2012.December.04. 22:26:41 »
Quote from: Tuby128
A 470-es sorban definiáljuk először X-et. Ezután 480-ban kiértékelek egy relációt, és belépek a ciklusba. 490-ben módosítom X-et. 500-ban visszaugrok a 480-as kiértékelésre. A BASIC-nek ilyenkor el kellene végeznie újra "X-1"-es kiértékelést a módosított X-szel. Ezt nem teszi meg.
Van ráció abban  amit mondasz... :smt017
A példa bizony így van a felhasználói kézikönyvben, ellenőriztem. A megoldás az lehet, hogy a FOR-NEXT sor kiértékelése csak egyszer történik meg, után az interpreter már csak a ciklusváltozó értékét módosítgatja. Ezt átírom.
« Last Edit: 2012.December.04. 22:31:35 by Lacika »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #370 on: 2012.December.04. 22:34:17 »
Akkor ezek szerint a BASIC a hibás, ami azt jelenti, hogy nem lehet cikluson belül változtatni, hogy a ciklus mikor érjen véget. (Lehet, hogy így akarták elkerülni, hogy a programozó véletlenül végtelenített ciklusba kerüljön?)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Általános BASIC Kérdések
« Reply #371 on: 2012.December.04. 22:35:04 »
Quote from: szipucsu
Talán meg lehetne csinálni, hogy on-line átalakítsa az oldal a .bas fájlt txt fájllá és így egyből meg lehetne nézni. :D Egy lebutított, web felületen futó emulátorral, ami a basic programot "detokenizálja", és kódként olvasható lenne a lista a hozzászólás alatt.

Pont ilyet irtam python-ban amivel kapcsolatos kerdeseimmel a tisztelt forumot is zaklattam :) Azonban nem volt sok erdeklodes, egy ido utan meg beleuntam es felbehagytam :(

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14739
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #372 on: 2012.December.04. 22:42:52 »
Quote from: lgb
Pont ilyet irtam python-ban amivel kapcsolatos kerdeseimmel a tisztelt forumot is zaklattam :) Azonban nem volt sok erdeklodes, egy ido utan meg beleuntam es felbehagytam :(
Én azóta is várom, mikor lesz kész verzió kiadva! :oops:

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #373 on: 2012.December.04. 22:45:41 »
Quote from: Tuby128
Akkor ezek szerint a BASIC a hibás, ami azt jelenti, hogy nem lehet cikluson belül változtatni, hogy a ciklus mikor érjen véget.
Az EXIT FOR erre tökéletes.
De a ciklusváltozó értékét is lehet a cikluson belül módosítani.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1449
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #374 on: 2012.December.04. 22:56:00 »
Ez az IS-BASIC olyan, hogy mindent lehet mindenütt módosítani. Ez jó, mert amikor 8 éves voltam legalább könnyebben ment a megtanulása.
 Egy gyerek borzasztó hamar megún dolgokat, ha nincs eredménye a munkájának. Ha lesz fiam akkor az IS-BASIC lesz az első nyelv amit meg fog tanulni.