Gyorstalpaló (RPN) :)

227 views
Skip to first unread message

ext

unread,
Feb 22, 2012, 9:11:24 AM2/22/12
to szamo...@googlegroups.com
Na szóval, egyik kedves fórum társunk " unszolására " nyitottam ezt a topikot.
Én konkrétan most a kis új szerzeményem ( A KLÓN ) igen kezdetleges programozásába vagyok belegabalyodva.
A Casio 4500P-re le van programozva, gondoltam hátha erre is menne.

Van egy képletem: w=(A-B)/B×100
amiben a tagok: E " edény" ; N " Gn" ; S " G0" (ezek mérésből származó értékek)
ezekből képezzük a képlet értékeit így: A=N-E és B=S-E

Értelmezés: E: edény bemért tömege; N: talaj nedves bemért tömege; S: talaj bemért száraz tömege.



ZilogR

unread,
Feb 22, 2012, 10:13:03 AM2/22/12
to szamo...@googlegroups.com
Igen, én voltam az ;)
Annyit elöljáróban el kell mondani, a HP15C-nek nincsenek szöveg kijelzési lehetőségei és a változók elnevezése is "sorszámmal" történik.
A fenti számításhoz nem célszerű tárolni a kapott eredményt - feltételezem, legalábbis az N, S és E értékeket.
A program lefutása után a W-vel lehet bármit csinálni.
Most melózok, de este fogok jelentkezni (vagy most, csak egy kicsit később).

ext

unread,
Feb 22, 2012, 1:38:12 PM2/22/12
to szamo...@googlegroups.com
Az N; S; E értékek  mindig mások, amit talajonként a labor kiad.
A W meg víztartalom, azt keressük. :)

ZilogR

unread,
Feb 22, 2012, 3:29:36 PM2/22/12
to szamo...@googlegroups.com
:) Igen, a változókat értettem :)

--------------------------------------------------------

Tehát, ha már gyors és RPN, akkor legyen is olyan:

  1. A memória kicsi, érdemes amennyire lehet egyszerűsíteni a feladatot: ha nincs szükség igazából a bemért nedves (A) és száraz (B) anyag tömegekre, azt érdemes kihagyni. Ezzel az egyenleted:

    W = 100 * (N - S) / (S - E)

  2. Ha megnézed, a fenti egyenlet kiszámításához a labortól kapott három adatot kell a gépbe pötyögnöd (N, S, E) és azokkal lefuttatni a programot, de az S értéket kétszer kell használni, azt valahonnan elő kell újra szedni, hogy ne kelljen újra begépelni. Természetesen nem akarjuk változóban eltárolni (azért nem, mert:
    a.) lehet, az a változó nem is létezik (mert a memória úgy van felosztva a programterület és a változóterület között, hogy olyan "sorszámú" változó éppen nincs), vagy
    b.) abban a változóban mást tárolsz és egy programnak illik olyannak lennie, ha belepiszkál a közösen használható változókban tárolt értékekbe, legalább az eredeti állapotot vissza tudja állítani, hacsak nem az a cél, hogy éppen tároljon valamit abba a változóba - de itt nem ez a helyzet, mert S értékét ideiglenesen akarjuk csak eltenni).
    Ez a fenti két pont azt jelenti, hogy az a legjobb, ha csak a stack-et használjuk, ami ennél a gépnél 4 szintes (x, y, z, t) --> RTFM!!! ;)

  3. Én célszerűnek látom az olyan program megírását, ami nem áll meg futás közben, hogy bekérje a három értéket (N, S és E értékeit), hanem előre a stack-be töltjük azokat (N [ENTER] S [ENTER] E) és utána futtatjuk a programot. A program lefutása után a kapott eredmény (W) a kijelzőn látható.

  4. A fentieknek eleget tevő programocska:

    001 - 42,21,11   LBL A
    002 -       33   Roll Down
    003 -       30   -
    004 -    43 36   LST x
    005 -    43 33   Roll Up
    006 -       30   -
    007 -       10   /
    008 -        1   1
    009 -        0   0
    010 -        0   0
    011 -       20   *
    012 -    43 32   RTN


  5. A Roll Down és Roll Up utasítások a stack regisztereit mozgatják (a 3. sor 3. billentyűjén találod ezeket az utasításokat). A Down lefelé, ekkor az x tartalma a t-be átkerül (és értelemszerűen y kerül az x-be, z az y-ba és t a z-be), az Up ugyanez a másik "irányba".

  6. A LST x az utolsó x-ben levő számot "veszi elő" újra (nem is olyan egyszerű, hogyan működik) -->RTFM!!! :)

  7. A program beírásához [g] [P/R], majd elkezded szépen begépelni. Elképzelhető, hogy a memóriában már van valami, ha nem olyan fontos, kipucolhatod: [f] [PRGM] és annyi annak, ami a memóban előtte volt :) A program beírása után szintén [g] [P/R]

  8. A program viszonylag egyszerűen működik:
    001: a program kezdete (LBL A) és 012 a program vége (RTN)
    002-vel a stack-ben levő értékeket (z: N, y: S, x: E) "lefelé mozgatjuk" és a 003 kivonással előállítjuk N-S -t
    004 LST x -el elővesszük újra S értékét a stack x "szintjére" (eközben N-S felfelé, y-ba vándorol), majd a 005 Roll Up -al felfelé mozgatjuk a stack-et, ezzel z-ben lesz N-S, y-ban S és x-ben E
    Jöhet az újabb kivonás (006), ezzel előállt x-ben S-E, ezzel eloszthatjuk N-S -t (007) és utána már csak a 100-zal való szorzás maradt (008...011)
    012 -vel a program futása véget ér, a kijelzőn W látszik

:D Ennyi.

Jöhetnek a kérdések!

ZilogR

unread,
Feb 23, 2012, 12:37:48 AM2/23/12
to szamo...@googlegroups.com

Jöhetnek a kérdések

Az pl. egy jó kérdés, h mi történik E értékével? Hogyan "vándorol", miközben a stack elemeit mozgatjuk? Ext, szerinted?? ;)

ext

unread,
Feb 23, 2012, 2:01:27 AM2/23/12
to szamo...@googlegroups.com
Szia!

Kicsi időt kérek... :)
A műveletek az okai mindennek. :D
Vagy?

ZilogR

unread,
Feb 23, 2012, 3:30:44 AM2/23/12
to szamo...@googlegroups.com
??? A "vagy?" az azt jelenti, h itt vagyok-e, netán azt, h van-e más ötletem arra, mi lehet az oka valaminek (ami nem derül ki)... Utóbbira tippelek :)

Sztem az lesz a legjobb, ha kézikönyv + a fenti kis példa és lassan úgyis megtanulod!

Várom ám a többiek hozzászólásait is, olyan szépen el szoktam egyedül írogatni! Pl.: Tolosa: ha már van egy szép új 12C-d, arra is mondhatsz egy megoldást, mivel ott nincs Roll Up!
Aztán lehet, nem is így hívják ezt a két utasítást a kézikönyvben - épp nem volt nálam, de valszeg így hívják...
Ext: az remélem világos, hogy az utasítások a billentyűzeten elfoglalt hely szerint vannak kódolva, pl.: 001 - 42,21,11   LBL A -nál 42 a 4. sor 2. billentyűje, azaz az [f], 21 a 2. sor 1. billentyűje, de mivel előtte le lett nyomva az "arany shift", azaz az [f], ezért ez a LBL utasítás és 11 az "A" címke, és így tovább. A számjegyek saját magukat kódolják, lásd a 008...010 sorok.

Tessék kérdezni, mert így nehéz segíteni! :)

Mellesleg ha szépen összefoglalnád valahová azokat az összefüggéseket, amiket szoktál használni, fogok segíteni azok leprogramozásában. Cserébe fogok kérdezni majd talajmechanikai dolgokat (pl.: hogyan kell kiszámítani a földkupacok megcsúszási szögeit, tehát az érdekel, hogyan lehet ömlesztett anyagok belső megcsúszási irányait és helyeit kiszámolni. Ezt olyasmire akarom használni, silókban tárolt anyag a kiömlés helyén milyen módon csúszik ki vagy arra, függőleges és kúpos silófalakra milyen erővel hatnak a benne tárolt ömlesztett anyagok).

ext

unread,
Feb 23, 2012, 11:55:16 AM2/23/12
to szamo...@googlegroups.com
Az 5. pont szükségessége a képlet szempontjából miért?

ZilogR

unread,
Feb 23, 2012, 12:04:09 PM2/23/12
to szamo...@googlegroups.com
Először próbáld megérteni, h hogyan működik a program, azt, h miért is kell a stack regisztereit ezen a módon mozgatni. Mindegyik lépésnek megvan az értelme, olvasd el alaposan azt a részt, h hogyan működik a program. (és a szóismétlés nem zavar ;) )

Pipás

unread,
Feb 23, 2012, 1:50:01 PM2/23/12
to szamo...@googlegroups.com
>Sztem az lesz a legjobb, ha kézikönyv + a fenti kis példa és lassan úgyis megtanulod!
>Tessék kérdezni, mert így nehéz segíteni! :)

Ez az ZR, ne hagyd hogy Ext veled csináltasson meg mindent. Hadd izzadjon egy kicsit! :D

ext

unread,
Feb 24, 2012, 1:58:00 AM2/24/12
to szamo...@googlegroups.com
Már hiányoltunk... :D

ZilogR

unread,
Feb 24, 2012, 2:35:34 AM2/24/12
to szamo...@googlegroups.com
Van a kézikönyvben egy fejezet, ami a stack-el foglalkozik. Azt, hogy hogyan mozognak az adatok a stack-ben az egyes műveletek közben "stack-diagramokon" ábrázolják. Javaslom te is rajzold meg ennek a 10 lépésnek a diagramjait, nagyon tanulságos lesz!

ZilogR

unread,
Feb 24, 2012, 8:16:57 AM2/24/12
to szamo...@googlegroups.com
( ... remélem hétvégén nagyobb lesz itt a pörgés ... )
( ... bár, valljuk be, ha bikinis csajokat kellene pontozni, annak nagyobb sikere lenne, valszeg ... )

ZilogR

unread,
Feb 25, 2012, 9:29:28 AM2/25/12
to szamo...@googlegroups.com
Naaa, ne csináljátok ezt!
Ha már ti sem akartok számológépekkel foglalkozni, akkor kik? Szóljak bölcsész macáknak, hátha ráizgulnak a fordított lengyel logikára?

RPN [ENTER] I [ENTER] [LOVE]

gyapo

unread,
Feb 25, 2012, 10:58:55 AM2/25/12
to szamo...@googlegroups.com
> Naaa, ne csináljátok ezt! Ha már ti sem akartok számológépekkel
> foglalkozni, akkor kik? Szóljak bölcsész macáknak, hátha ráizgulnak a
> fordított lengyel logikára?

Nekem föltűnt, hogy nagy csönd van, és a googlegroups szerint nem is
voltam tag. Gyorsan föliratkoztam, de továbbra is mindenki némán görnyed
a számológépei fölé.

Üdv.: gyapo

ext

unread,
Feb 25, 2012, 2:49:38 PM2/25/12
to szamo...@googlegroups.com


ZR, annyira tudatlan vagyok,hogy én azért nem írok. Viszont RPN-el álmodom. Nem bölcsész macákkal. Sajnos.

Pipás

unread,
Feb 25, 2012, 4:29:10 PM2/25/12
to szamo...@googlegroups.com
Papolok itt h. senki ne dolgozzon Ext helyett, de csak végigzongoráztam a dolgot papíron mivel 15C-m nincs. Remélem nem szúrtam el.

T   0
     
Z   N             ÉRTÉKEK-> STACK    
Y   S                  
X   E         

T   E     
Z   0              RLDN   
Y   N                  
X   S  

T   E     
Z   E               - 
Y   0                 
X   N-S

T   E     
Z   0               LSTX 
Y   N-S                 
X   S

T   0     
Z   N-S              RLUP  
Y   S                 
X   E

T   0     
Z   0                 - 
Y   N-S                 
X   S-E

T   0     
Z   0                  / 
Y   0                 
X   (N-S)/(S-E)

T   0     
Z   0                   100
Y   (N-S)/(S-E)                
X   100

T   0     
Z   0                   *
Y   0                
X   (N-S)/(S-E)*100= W

ZilogR

unread,
Feb 25, 2012, 4:53:38 PM2/25/12
to szamo...@googlegroups.com
:D nem baj, csak gyakorolni, gyakorolni és gyakorolni...!

Pipás

unread,
Feb 25, 2012, 4:54:25 PM2/25/12
to szamo...@googlegroups.com
Agyas. Az se mindegy, milyen sorrendben viszed be az adatokat. Mondjuk másfél év múlva erre hogy fogsz emlékezni? (Mármint h. hány adat kell, és milyen sorrendben?)

ZilogR

unread,
Feb 25, 2012, 4:56:42 PM2/25/12
to szamo...@googlegroups.com
Ez így jó és itt látszik, h miért is nem vész el E értéke!
Ha 15C-d nincs is, esetleg valami, aminek 4 szintes stack-ja van?! (stack-ja vagy stack-je?)
Vagy vannak jó emulátorok már - bár az olyan, mintha az ember barátnőjének a neve .jpg -re végződne ;) :)))

Pipás

unread,
Feb 25, 2012, 5:13:07 PM2/25/12
to szamo...@googlegroups.com
>- bár az olyan, mintha az ember barátnőjének a neve .jpg -re végződne ;) :)))

Ja. Vagy mint ha egy egérrel mozgatott nyelvvel nyalogatnál egy a képernyőn lévő fagylaltot.

Pipás

unread,
Feb 25, 2012, 5:38:16 PM2/25/12
to szamo...@googlegroups.com


Éppen van egy emulátorom is...

ext

unread,
Feb 26, 2012, 1:39:54 AM2/26/12
to szamo...@googlegroups.com
Ez ügyes.. :D


2012. február 25., szombat 22:29:10 UTC+1 időpontban Pipás a következőt írta:

Pipás

unread,
Feb 26, 2012, 3:45:22 AM2/26/12
to szamo...@googlegroups.com
Ha ügyes, bogarászd végig. Próbáld meg végigcsinálni a géppel a műveleteket, hogy megértsd. Utána is ráérsz bepötyögni a programot. (Persze ez csak egy ötlet... ;)

Pipás

unread,
Feb 26, 2012, 3:47:27 AM2/26/12
to szamo...@googlegroups.com
Há hogy itt újabban mindent ki kell törölni hogy ne küldjek el minden hozzászólást fél évre visszamenőleg!

Tolosa

unread,
Feb 26, 2012, 5:16:20 AM2/26/12
to szamo...@googlegroups.com
Azért, hogy mennyire elkényelmesített bennünket /na jó, engem/ pl. a HP-50 - és egyéb, fejlettebb gépeink- sok lehetősége, most is látszik .
Elkezdtem a HP-12C gépen "művelgetni" a fentebb említett programmal kapcsolatosan, de nagyon gyorsan elment tőle a kedvem, mert nagyon idegesít, hogy nem lehet mnemonikot használni a programokban, vagyis nincsenek betű karakterek, még egyetlen betű erejéig sem. Márpedig így nagyon kényelmetlen egy-egy változó jelentését felismerni, pláne -ahogy Pipás is írta- hosszabb távon emlékezni arra, mi mit jelent, melyik stack tartalma mit takar.
Mondom ezeket annak ellenére, hogy -végig járva a "ranglétrát"- én is hosszú évekig olyan zsebszámolókkal foglalkoztam, amelyek nem ismerték a szöveges változókat.

Tolosa

unread,
Feb 26, 2012, 5:20:40 AM2/26/12
to szamo...@googlegroups.com
Persze -hogy félreértés ne legyen- a fentebb emliettek ellenére is érvényesnek tartom az "élet célja a küzdés maga" elvet, tehát nyilván a kényelmi szempontokat mellőzve van értelme és jelentősége foglalkozni az ilyen problémákkal ezeken a gépeken is.

Pipás

unread,
Feb 26, 2012, 5:31:50 AM2/26/12
to szamo...@googlegroups.com
Persze. A 15C például egy régi, akkor világszínvonalú technikát képvisel. Az mindenesetre érdekes és szimpatikus rajta hogy mennyire képben kell lenni és mennyire előre kell gondolkozni még egy ilyen egyszerű példánál is, akár a sakkban. Írták valahol h. a 15C rendszeres használata jelentősen megdobja az ember IQ szintjét. :)

Ugyanakkor az az 50g-nél se tetszik igazán hogy ha pl. az adatokat a verembe töltöm fel a program elején, ezt külön le kell dokumentálni valami szövegben, mert a programlistából utólag nehéz kisilabizálni h. a pr. milyen paramétereket kér az induláshoz. A TI-n ezt egyből látni. Itt ugyanis hasonló esetben az ember felsorolja a kívánt beszédes nevű változókat a programnév mögötti zárójelben, amiket aztán a pr. automatikusan át is vesz.


2012. február 26., vasárnap 11:16:20 UTC+1 időpontban Tolosa a következőt írta:

Tolosa

unread,
Feb 26, 2012, 5:51:29 AM2/26/12
to szamo...@googlegroups.com
Nem is tudom, létezik-e olyan számológép /valóságos gépre gondolok/, amelyben az általunk eddig használt gépek legtöbb jó tulajdonsága megtalálható.
A Casio Classpad 330 azért közelíti a szintet. Viszont ellensúlyként vannak rossz tulajdonságai is.

Pipás

unread,
Feb 26, 2012, 6:00:29 AM2/26/12
to szamo...@googlegroups.com
Ja. Azért okos és praktikus megoldás hogy az ember mindenhova magával visz az összes létező számológépét egy jó nagy táskában. Vagy inkább egy bőröndben. :D

Pipás

unread,
Feb 26, 2012, 6:02:56 AM2/26/12
to szamo...@googlegroups.com
Javítani még mindig nem lehet. visz=viszi.

Pipás

unread,
Feb 26, 2012, 9:42:41 AM2/26/12
to szamo...@googlegroups.com
Vagy pl. ugyanez a program 50g-re:

<<  3.  ROLLD  -  LASTARG  SWAP  DROP  3.  ROLL  -  /  100.  *  >>

A LASTX helyetti LASTARG  SWAP  DROP megoldáson lehet hogy egy kicsit még csiszolni kell, csak épp ez jutott most eszembe. (Csak hogy legyen már egy kis aktivitás. ;)

Pipás

unread,
Feb 26, 2012, 12:15:55 PM2/26/12
to szamo...@googlegroups.com
 E  N  S   <<  DUP  ROT  SWAP -  SWAP  ROT - / 100 * >>

:) ?

ext

unread,
Feb 26, 2012, 1:46:01 PM2/26/12
to szamo...@googlegroups.com
Működik... :D

Pipás

unread,
Feb 26, 2012, 1:53:20 PM2/26/12
to szamo...@googlegroups.com
Próbáld beizzítani a 15C változatot is.

ZilogR

unread,
Feb 27, 2012, 1:24:59 AM2/27/12
to szamo...@googlegroups.com
... és ha N, S, E a sorrend? (Ha már a 15C változatot vesszük alapul...?!?)

Pipás

unread,
Feb 27, 2012, 11:53:26 AM2/27/12
to szamo...@googlegroups.com
N  S  E  <<  3.  ROLLD  -  LASTARG  SWAP  DROP  3.  ROLL  -  /  100.  *  >> (Emmán vót egyszer, de biztos van jobb megoldás...)

E  S  N  <<   OVER  -  SWAP  ROT  -  /  100  *  >>

:)


2012. február 27., hétfő 7:24:59 UTC+1 időpontban ZilogR a következőt írta:
... és ha N, S, E a sorrend? (Ha már a 15C változatot vesszük alapul...?!?)

ZilogR

unread,
Feb 27, 2012, 12:13:31 PM2/27/12
to szamo...@googlegroups.com
N [ENTER] S [ENTER] E

<< - LASTARG DROP ROT SWAP - / INV 100 * >>

Ez kicsit nyögvenyelős, de megcsinálja... Még agyalok valami szebben...

ZilogR

unread,
Feb 27, 2012, 1:04:20 PM2/27/12
to szamo...@googlegroups.com
Mellesleg lehet a %CHG -t használni az indító post B A -párosára:

B A %CHG


Pipás

unread,
Feb 27, 2012, 3:27:18 PM2/27/12
to szamo...@googlegroups.com
N S E [ENTER]

<<  OVER  SWAP  -  ROT  ROT  -  /  INV  100. *  >>

Tolosa

unread,
Feb 27, 2012, 3:36:26 PM2/27/12
to szamo...@googlegroups.com
Még egy kicsit csiszoltok rajta, oszt' má' olyan rövid lesz, hogy fejben is el lehet végezni!:-)

Pipás

unread,
Feb 27, 2012, 3:46:03 PM2/27/12