· Text 7758 · w8 · inlagg
Härom dagen började jag att peta lite i filtrans/QZ/T .806
för att få skärmen släckt när jag loggade ut. Eftersom jag börjat lite
med QB så fick jag ideen att man skulle prova att funktionisera hela
BASIC programmet - d v s att i princip alla instruktioner var av typen
DEF FN. Fördelen med det är ju att man slipper hålla reda på radnummer
i programmet som helhet - bara inom funktionen.
Man kan då bygga upp hela programmen med sk strukturerad programmering.
Man har då en huvudfunktion som normalt är sk huvudprogrammet
DEF FNHuvud
Z=FNFörst detta
Z=FNSedan detta
Z=FNDärefter detta
Z=FNSlutligen detta
Return 0
FNEND
Z=FNHuvud
Eftersom jag inte programmerar så ofta skulle jag uppskatta om någon
ville lämna lite formella tips och kommentarer på följande:
Hur hanteras ON ERROR exvis om man trycker ned PF-tangenter - hur
vidarebefordrar man hanteringen från dessa väl så nästade funktioner
om det genomförs konsekvent - hur undviker man att minnet blir fullt
- p g a att för många nivåer lätt kan ge en uppsjö av pekare.
Formellt är ju en FN uppbyggd av:
Z = FNNamnet(Parameter_1,Parameter_2, .... ,Parameter_N)
och där FN deklareras:
DEF FNNamnet(P1,P2, ... ,Pn)
Rad1
Rad2
Rad3
Return Q1
Rad10
Rad20
Rad30
Return Q2
.
.
.
Rad1n
Rad2n
Rad3n
Return Qn
FNEND
Beroende på förlopp kommer då Z=Qx när funktionen lämnas.
Om man ej klarar att helt formalisera detta - finns det knep för
hur man kan överföra ett goto-värde till huvudfunktionen?
Dvs RETURN Hopp
Och i huvudprogrammet Z=Hopp
GOTO Hopp
Anledningen till att detta kan vara intressant är att om man har en
knutpunkt dit man medvetet styr hopp så upphäver man därmed faran
med spagettisyndromet.
Naturligtvis kan man sätta sig ned och testa - men det är ju bättre
om vi hjälps åt - målet skulle vara att få BASICII att fungera som
om BASICEN vore radnummerlös.
Då uppnås två saker
1) Det är lättare att editera i radnummerförsedda rader - eftersom de
INOM funktionen hålls ihop av radnumrena. Man kan då lätt flytta
block och hitta till rader vart som helst i programmet.
2) Radnumrenas funktion har i stort upphävts - man har gjort sig
närmast oberoende av dem.
Dessutom kan man återanvända fungerande funktioner - man får ett
med tiden svällande bibliotek av väl inkörda funktioner ...
som kan överföras till PC och återanvändas där.
I QB får man bara anropa funktioner som redan deklarerats - därför
måste man göra tvärt emot som man är van i BASICII.
Man definierar då först alla funktioner man använder och har huvud-
programmet sist. Eftersom detta går att göra för både BASICII och QB
kan man ju om man tänker köra båda rätta sig efter de BEGRÄNSNINGAR
som QB påtvingar en.