Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PL/I, QB: FreeBasic - Goto + (muuttuja)

Sivun loppuun

ZuBer [31.08.2011 21:01:20]

#

Moi!

Aloitin nyt käyttämään Freebasicia. Olen omaksunut sen alkeet mielestäni kohtalaisesti. Nyt tuli sellainen ongelma, että kun haluan liittä goto:on muuttujan, en saa sitä tehtyä.

'............
Dim As String muuttuja
muuttuja = "tietty kohta"
goto muuttuja
PRINT "Selitysta."
tietty kohta:
PRINT "Jotain säätöä."
'............

Mitenköhän onnistuisi?

vehkis91 [31.08.2011 21:30:06]

#

Jos vaikka unohdat goton, ja käyttäisit funktioita?

Cornix [31.08.2011 22:02:35]

#

GOTO:n perään ei voi lisätä muuttujaa, vaan sinun täytyy tehdä homma esimerkiksi SELECT CASE -rakenteella.

ZuBer [01.09.2011 07:55:41]

#

Tähänkö tyyliin?

SELECT CASE muuttuja
CASE "esim1"
  GOTO esim1
CASE "esim2"
  GOTO esim2
CASE "esim3"
  GOTO esim3
CASE "esim4"
  GOTO esim4
CASE "esim5"
  GOTO esim5
END SELECT

En ole ennen casea käyttänyt...

jtha [01.09.2011 12:48:19]

#

Koeta pidättäytyä runsaan GOTO:n käyttämisestä - ohjelmasta voi tulla hyvinkin sekava. Funktioiden ja aliohjelmien käyttö kannattaa opetella heti alussa.

jalski [01.09.2011 13:03:34]

#

Suosittelen harkitsemaan toisenlaista lähestymistapaa ja käyttämään funktioita GOTO:n sijaan, kuten jtha ehti jo ehdottaa.

Toki GOTO:lla on myös käyttönsä, mutta itse käyttäisin sitä vain erityistapauksissa ja virheiden käsittelyssä.


Esim. PL/I:llä tämä on ihan ok tapa käyttää gotoa:

dcl n             fixed bin(31);
dcl nx            char(10) varying;

/***************************************/
/* On unit to handle non-numeric data. */
/***************************************/
on conversion
  begin;
    display( 'input must be numeric' );
    goto recover;
  end;

recover:
  display( 'input number (must be greater than 1) ?') reply( nx );

n = nx;    /* ON unit catches this, if input is not numeric. */

if n < 2 then
  do;
    display( 'number must be at least 2' );
    goto recover;
  end;

ZuBer [01.09.2011 13:16:58]

#

Kun teen tekstiseikkailua, missä on paljon valikoita, mielestäni se on ihan kätevä, ettei tarvitse valikoita yms. kirjoittaa montaa kertaa. En tosin yhtään osaa käyttää funktioita, ja jos joku opastaisi, voisin korvata gotot(joita löydyy koodistani aika paljon) functiolla, vielä kun sovellus on vasta alussa.

Macro [01.09.2011 15:47:08]

#

FreeBasicissa funktio määritellään seuraavasti

Declare Function funktionNimi(muuttuja As tyyppi, muuttuja2 As tyyppi2...) As funktionTyyppi

...

Function funktionNimi(muuttuja As tyyppi, muuttuja2 As tyyppi2) As tyyppi
   ...
   Return ...
EndFunction

Täällä näytti olevan jotain asiaa FreeBasicista.

vilperi [01.09.2011 15:57:04]

#

Jos käytät casea, muistalisätä ylös tämä:

public class ohjelma
public casen nimi as integer <-- TUO

ja sitten alas

select case casen nimi
case 1
goto....

ZuBer [01.09.2011 15:59:14]

#

Macro kirjoitti:

FreeBasicissa funktio määritellään seuraavasti

Declare Function funktionNimi(muuttuja As tyyppi, muuttuja2 As tyyppi2...) As funktionTyyppi

...

Function funktionNimi(muuttuja As tyyppi, muuttuja2 As tyyppi2) As tyyppi
   ...
   Return ...
EndFunction

Täällä näytti olevan jotain asiaa FreeBasicista.

Funktio ei oikein käy tarkoitukseeni, sillä siinä ei tarvitse palata sinne kohtaan mistä tuli, vaan seikkailu valikoissa jatkuu... Pelini on tämän tapainen ja valikot toimivat jo hyvin.
----------
Päävalikko:
__________________________________
PELI

Paavalikko

[1]Alavalikko 1
[2]Alavalikko 2
[3]Alavalikko 3
[Q]Poistu
__________________________________

Alavalikko:
__________________________________
PELI

Alavalikko

[1]Ala-alavalikko 1
[2]Ala-alavalikko 2
[3]Ala-alavalikko 3
[Q]Paavalikko
__________________________________
ym...
----------

vilperi kirjoitti:

Jos käytät casea, muistalisätä ylös tämä:

public class ohjelma
public casen nimi as integer <-- TUO

ja sitten alas

select case casen nimi
case 1
goto....

Mitäs tuo meinaa? Sain toimimaan ilman tuotakin...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta