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?
Jos vaikka unohdat goton, ja käyttäisit funktioita?
GOTO:n perään ei voi lisätä muuttujaa, vaan sinun täytyy tehdä homma esimerkiksi SELECT CASE -rakenteella.
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...
Koeta pidättäytyä runsaan GOTO:n käyttämisestä - ohjelmasta voi tulla hyvinkin sekava. Funktioiden ja aliohjelmien käyttö kannattaa opetella heti alussa.
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;
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.
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.
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....
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 ... EndFunctionTää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 <-- TUOja sitten alas
select case casen nimi
case 1
goto....
Mitäs tuo meinaa? Sain toimimaan ilman tuotakin...
Aihe on jo aika vanha, joten et voi enää vastata siihen.