Welcome, Guest. Please login or register.


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

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #165 on: 2011.December.27. 18:47:26 »
A két megoldás közül melyik a jó vagy jobb?

Code: [Select]
100 DEF AKÁRMI
        ...
250   CALL BÁRMI
        ...
300 END DEF !(AKÁRMI)
310 DEF BÁRMI
         ...
350 END DEF !(BÁRMI)

vagy:
Code: [Select]
100 DEF AKÁRMI
...
250   CALL BÁRMI
...
310   DEF BÁRMI
            ...
350   END DEF !(BÁRMI)
400 END DEF !(AKÁRMI)

Szóval, egy DEF eljáráson belül kell létrehozni egy másik DEF eljárást, ha azt az elsõ DEF eljáráson belülrõl hívjuk meg, vagy akkor is kívülre kell helyezni a meghívott eljárást?
Remélem, érthetõen sikerült megfogalmaznom. :D
(Triviális lehet a válasz, de így a 20. század után már régen botlottam ilyen "problémába".)
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #166 on: 2011.December.27. 18:58:58 »
Mindkettõt ugyanúgy kezeli. De elméletileg a szép különálló DEF blokkok a szépek.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #167 on: 2011.December.28. 15:12:12 »
Köszi a választ!
Kicsit érdekesen mûködnek ezek a DEF blokkok. Ha meghívok egy DEF blokkot és azon belül egy új változót definiálok, akkor a DEF blokkból visszatérve a gép elfelejti, hogy definiáltam ezt a változót és Variable not initialised lesz. Viszont, ha a program legelején definiálom tetszõleges értékkel a változót (pl. LET A$=""), akkor már nem jön elõ a hiba.
A gépkönyvben próbáltam utánanézni ennek a DEF-es és változós ügynek (mert vannak külsõ és belsõ változók), de túl bonyolult volt nekem. Ha belsõ változóról van szó, akkor azt a DEF utasításban is meg kell adni elvileg (pl. DEF akármi(x,y) vagy ilyesmi).
Szóval ez így fura kicsit...

[ Guests cannot view attachments ]
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #168 on: 2011.December.28. 16:03:32 »
Kicsit érdekesen mûködnek ezek a DEF blokkok.

Nincs ebben semmi "érdekes", nagykönyv szerint így kell mûködnie strukturált programozási nyelvben. Adatok elszigetelésének elve: azon változók, melyek eljáráson belül deklarálsz, lokális változók. Lásd Gépkönyv ide vonatkozó fejezetét ("LOKÁLIS ÉS G LOBÁLIS VÁLTOZÓK").
« Last Edit: 2011.December.28. 16:06:37 by Lacika »

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #169 on: 2011.December.28. 16:04:22 »
ha a DEF blokkon belül hozol létre (deklarálsz) egy változót, akkor az lokális lesz, vagyis csak addig él, amíg ki nem lépsz a DEF-ből. Ezért áll le a program "ismeretlen változó" hibaüzenettel.
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #170 on: 2011.December.28. 16:04:53 »
Viszont, ha a program legelején definiálom tetszõleges értékkel a változót (pl. LET A$=""), akkor már nem jön elõ a hiba.

Amit a fõprogramban deklarálsz, az globális változó.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #171 on: 2011.December.28. 16:33:10 »
Köszi!
Mi egyébként a gyakorlati értelme, hogy END DEF után elfelejti a változót a gép?
Szerintem célszerûbb a GOSUB-RETURN használata, mert akkor nem kell arra is figyelni, hogy egy változót nem a blokkon belül deklarálok-e véletlenül.
« Last Edit: 2011.December.28. 16:38:58 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #172 on: 2011.December.28. 16:52:59 »
Mi egyébként a gyakorlati értelme, hogy END DEF után elfelejti a változót a gép?

Az, hogy az IS-BASIC egy tökéletesen strukturált programozási nyelv. Egy nagyob program, márt több programrészbõl áll, melyeket nem is feltétlenül egy ember készít. Sokkal egyszerûbb (és kevesebb hibalehetõség), ha minden programmodul csak a saját változóit használhatja és csak a "kész" adatokat adja vissza az õt meghívó másik programrésznek.
Aki idegenkedik az eljárásoktól, az használhatja a GUSUB / RETURN-t, (vagy minden változót deklarálon a fõprogramban, pl. a program elején) és speciel hajmerevedést kapok, amikor ilyet látok... :oops:

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Általános BASIC Kérdések
« Reply #173 on: 2011.December.28. 17:13:02 »
az is-basic nagy segítség volt nekem amikor pascal-ra áttértem
kb 2 nap után már folyékonyan írtam a strukturált pascal programokat :)

amúgy az objektum orientált programozás se egy nagy ördöngõsség, sõt, én túl nagy találmánynak se tartom, ezek mind a logikus, strukturált, értelmes programozásbõl következnek szinte maguktól
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #174 on: 2011.December.28. 17:17:03 »
Egy ravasz kérdés:
Lehetséges, hogy a SPEEK(255,16372)+SPEEK(255,16373)*256-1152 értéke ne 46208 legyen?
Azért kérdezem, mert a demokazettán a karakterdefiniáló programban többször is ez szerepel ahelyett, hogy egyszerûen csak 46208 lenne ott. Arra a memóriaterületre vonatkozik, ahol a karakterek alakját tárolja a gép, ez pedig akkor is 46208, ha bonyolultan számoljuk ki. Vagy lehet valami "turpisság" a dologban?
Szóval az érdekelne, hogy a fenti SPEEK akármi helyett szerepelhetne-e egyszerûen csak 46208. Ha átírom a programban, a program ugyanúgy mûködik, ezért nem értem, mi értelme volt ilyen bonyolultan adni meg.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Általános BASIC Kérdések
« Reply #175 on: 2011.December.28. 17:35:37 »
Szóval az érdekelne, hogy a fenti SPEEK akármi helyett szerepelhetne-e egyszerûen csak 46208. Ha átírom a programban, a program ugyanúgy mûködik, ezért nem értem, mi értelme volt ilyen bonyolultan adni meg.

Ez a karakterkészlet kezdőcíme (B480h), ami EXOS 2.0 esetén más. Próbáld ki EP64 konfigurációval, azzal nem 46208 lesz.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #176 on: 2011.December.28. 21:49:53 »
Van olyan OUT utasítás, amivel ki lehet kapcsolni a SHIFT, CAPS, ALT üzemmódot anélkül, hogy a lock gombot megnyomnánk. És OUT utasításokkal be is lehet kapcsolni ezeket. Nem tudjátok, hogyan lehet OUT-tal kikapcsolni, milyen értékeket kell hozzá megadni?

UI: Lehet, hogy nem OUT, hanem SET.
« Last Edit: 2011.December.28. 22:00:09 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #177 on: 2011.December.28. 22:39:54 »
UI: Lehet, hogy nem OUT, hanem SET.

POKE lesz az az utasítás... :ds_icon_cheesygrin: Zozo talán tudja fejbõl... Az EP Plus-ban errre már van külön utasítás (LOCK OFF / CAPS / ALT / SHIFT)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #178 on: 2011.December.28. 22:49:26 »
POKE lesz az az utasítás...
Nem POKE, hanem SET! 6-os EXOS változó.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #179 on: 2011.December.28. 22:58:16 »
Kösz! Ezt nem is tudtam...
A Referencia kézikönyvben erre a változóra sok szót nem "pazaroltak"... Mindjárt ki is egészítem!
Ugyanitt a 13-as változóra írjak valamit?
« Last Edit: 2011.December.28. 23:08:02 by Lacika »