10 ! GLBANT 1991.04.26 20 ! 30 EXTEND 40 ! 50 Rader=8 60 DIM Text$(Rader)=20 70 Filnamn$='GLSYS.DAT' 80 Bytprog$='GLMENY.BAC' 90 ! 100 Z=FNH{mta 110 Z=FNVariablar 120 ! 130 WHILE -1 140 Z=FNMeny 150 Z=FNInmatning 160 Z=FNKalorier 170 Z=FNUtskrift 180 WEND 190 ! 200 ! CHAIN 'GLMENY.BAC' 210 ! 220 DEF FNMeny 230 PRINT CHR$(12) 240 PRINT CUR(0,0) ' HUVUDPROGRAM KALORIBER[KNING ' 250 PRINT CUR(1,0) STRING$(80,45) 260 PRINT CUR(20,0) STRING$(80,45) 270 PRINT CUR(21,0) 'PF1 ]ter PF5 Upp PF7 Ned PF8 nollst{ll <- radera tecken CE radera rad' 280 ! 290 RESTORE 360 300 FOR Antal=1 TO Rader 310 READ Text$ 320 PRINT CUR(2+Antal,4) Text$+STRING$(30-LEN(Text$),46) 330 PRINT CUR(2+Antal,35) Text$(Antal) 340 NEXT Antal 350 ! 360 DATA 'L{ngd cm','Nuvarande vikt kg','Reduceringstid m}n' 370 DATA 'K|n 1=man 2=kvinna','Bestomme 1=kraftig 2=normal','Aktivgrad 1-4' 380 DATA 'Idealvikt kg','M}lvikt kg' 390 RETURN 0 400 FNEND 410 ! 420 ! 430 DEF FNH{mta 440 OPEN Filnamn$ AS FILE 1 450 INPUT #1Aktiv(1) 460 INPUT #1Aktiv(2) 470 INPUT #1Aktiv(3) 480 INPUT #1Aktiv(4) 490 INPUT #1Fett 500 INPUT #1Normal 510 INPUT #1H}rd 520 INPUT #1Korr 530 INPUT #1Pr$ 540 CLOSE 1 550 Fett=Fett/Korr ! Korrigerar {mnesoms{ttningen 560 ! 570 RETURN 0 580 FNEND 590 ! 600 DEF FNInmatning 610 FOR Antal=1 TO Rader 620 WHILE Flagga<>1 630 ! 640 IF ASCII(Tecken$)=198 AND Antal>Rader THEN RETURN 0 650 PRINT CUR(Antal+2,35+LEN(Text$(Antal))); 660 GET Tecken$ 670 IF ASCII(Tecken$)=13 Z=FNNed 680 IF ASCII(Tecken$)=13 AND Antal>Rader THEN RETURN 0 690 IF ASCII(Tecken$)=8 AND LEN(Text$(Antal))>0 Z=FNSudda 700 IF ASCII(Tecken$)=24 Z=FNSuddaallt 710 IF ASCII(Tecken$)=196 Z=FNUpp 720 IF ASCII(Tecken$)=198 Z=FNNed 730 IF ASCII(Tecken$)=192 Z=FNSluta 740 IF ASCII(Tecken$)=199 Z=FNNoll 750 IF ASCII(Tecken$)<127 AND ASCII(Tecken$)>=32 Z=FN\katext 760 IF Antal=6 Z=FNHj{lp ELSE Z=FNSl{ck 770 ! 780 WEND 790 NEXT Antal 800 RETURN 0 810 FNEND 820 ! 830 DEF FN\katext 840 Text$(Antal)=Text$(Antal)+Tecken$ 850 PRINT CUR(Antal+2,35);Text$(Antal) 860 Pos=LEN(Text$(Antal)) 870 RETURN 0 880 FNEND 890 ! 900 DEF FNNoll 910 FOR Snurr=1 TO Rader 920 PRINT CUR(2+Snurr,35) SPACE$(LEN(Text$(Snurr))) 930 Text$(Snurr)='' 940 NEXT Snurr 950 Antal=1 960 RETURN 0 970 FNEND 980 ! 990 DEF FNSudda 1000 Text$(Antal)=LEFT$(Text$(Antal),LEN(Text$(Antal))-1) 1010 PRINT CUR(Antal+2,35);Text$(Antal)+SPACE$(1) 1020 RETURN 0 1030 FNEND 1040 ! 1050 DEF FNSuddaallt 1060 PRINT CUR(Antal+2,35);SPACE$(LEN(Text$(Antal))) 1070 Text$(Antal)='' 1080 RETURN 0 1090 FNEND 1100 ! 1110 DEF FNUpp 1120 Antal=Antal-1 1130 IF Antal<=1 Antal=1 1140 RETURN 0 1150 FNEND 1160 ! 1170 DEF FNNed 1180 Antal=Antal+1 1190 Z=FNIdeal 1200 RETURN 0 1210 FNEND 1220 ! 1230 DEF FNG|raom 1240 IF LEN(Text$(1))>0 L{ngd=VAL(Text$(1)) 1250 IF LEN(Text$(2))>0 Vikt=VAL(Text$(2)) 1260 IF LEN(Text$(3))>0 Tid=VAL(Text$(3)) 1270 IF LEN(Text$(4))>0 K|n=VAL(Text$(4)) 1280 IF LEN(Text$(5))>0 Stomme=VAL(Text$(5)) 1290 IF LEN(Text$(6))>0 Grad=VAL(Text$(6)) 1300 IF LEN(Text$(8))>0 M}l=VAL(Text$(8)) 1310 RETURN 0 1320 FNEND 1330 ! 1340 DEF FNSluta 1350 CHAIN 'GLMENY.BAC' 1360 RETURN 0 1370 FNEND 1380 ! 1390 DEF FNVariablar 1400 Aktiv$(1)='Mycket aktiv' 1410 Aktiv$(2)='Ganska aktiv' 1420 Aktiv$(3)='Normalr|rlig' 1430 Aktiv$(4)='Pension{r' 1440 K|n$(1)='Man' 1450 K|n$(2)='Kvinna' 1460 Stomme$(1)='Kraftig' 1470 Stomme$(2)='Normal' 1480 RETURN 0 1490 FNEND 1500 ! 1510 DEF FNKalorier 1520 Z=FNG|raom 1530 Utr{kn=FNUtr{kning 1540 Tid=FNTidsintervall 1550 RETURN 0 1560 FNEND 1570 ! 1580 DEF FNIdeal 1590 ! 1600 Slask=0 1610 FOR Snurr=1 TO 6 1620 IF LEN(Text$(Snurr))=0 Slask=1 1630 NEXT Snurr 1640 ! 1650 IF Slask=1 RETURN 0 1660 Z=FNG|raom 1670 IF Stomme=1 AND K|n=2 Ideal=L{ngd-100 1680 IF Stomme=1 AND K|n=1 Ideal=L{ngd-95 1690 IF Stomme=2 AND K|n=2 Ideal=L{ngd-105 1700 IF Stomme=2 AND K|n=1 Ideal=L{ngd-100 1710 Text$(7)=NUM$(Ideal) : ; CUR(9,35) Text$(7)+SPACE$(3) 1720 RETURN 0 1730 FNEND 1740 ! 1750 DEF FNUtr{kning 1760 Minskning=Vikt-M}l 1770 Dagsbehov(1)=Aktiv(Grad)*Vikt ! dagsbehovet f|rsta delen 1780 Dagsbehov(2)=Aktiv(Grad)*(Vikt+M}l)/2 ! dagsbehovet mitten delen 1790 Dagsbehov(3)=Aktiv(Grad)*M}l ! dagsbehovet sista delen 1800 FOR I=1 TO 3 1810 Bantbehov(I)=INT(Dagsbehov(I)-(Fett*Minskning/Tid/30)) 1820 NEXT I 1830 RETURN Utr{kn 1840 FNEND 1850 ! 1860 DEF FNTidsintervall 1870 Tid(1)=1 1880 Tid(2)=Tid*30/3 1890 Tid(3)=Tid*30*2/3 1900 Tid(4)=Tid*30 1910 RETURN Tid 1920 FNEND 1930 ! 1940 DEF FNUtskrift 1950 PRINT CUR(21,0) SPACE$(80); : ; CUR(21,0) 'Utskrift p} (S)krivare (B)ildsk{rm (S/B) :'; : INPUT ''Svar$ 1960 IF Svar$='S' OR Svar$='s' Fil=1 ELSE Fil=0 1970 IF Fil=0 PRINT CHR$(12) 1980 OPEN Pr$ AS FILE 1 1990 ; #Fil 'Din identitet' 2000 ; #Fil '---------------' 2010 ; #Fil 2020 ; #Fil 'Du {r en ' K|n$(K|n) ' och {r ' Aktiv$(Grad) ' och har en ' Stomme$(Stomme) ' benstomme' 2030 ; #Fil 2040 ; #Fil 'Du v{ger f|r n{rvarande '; : PRINT #Fil USING "###" Vikt; : ; #Fil ' kg' 2050 ; #Fil 'Din m}lvikt {r '; : PRINT #Fil USING "###" M}l; : ; #Fil ' kg' 2060 ; #Fil 'Allts} ska du g} ned '; : PRINT #Fil USING "###" Minskning; : ; #Fil ' kg' 2070 ; #Fil 2080 ; #Fil 'Eftersom du vill g} ned denna |vervikt p}' Tid 'm}nader' 2090 ; #Fil 'skall du minska ditt energiintag med' INT(Fett*Minskning/Tid/30) 'kalorier per dag' 2100 ; #Fil 2110 ; #Fil 'Om du f|ljer nedanst}ende schema kommer du att lyckas mycket bra' 2120 ; #Fil '----------------------------------------------------------------' 2130 ; #Fil 2140 ; #Fil 'Under de f|rsta' Tid(2) 'dagarna skall du {ta' Bantbehov(1) 'kalorier' 2150 ; #Fil 'Mellan dag' Tid(2)+1 'och' Tid(3) 'skall du {ta' Bantbehov(2) 'kalorier' 2160 ; #Fil 'Mellan dag' Tid(3)+1 'och' Tid(4) 'skall du {ta' Bantbehov(3) 'kalorier' 2170 IF Fil=0 Z=FNBytsida 2180 ; #Fil 2190 ; #Fil 'F|rdela kaloriintaget enligt f|ljande :' 2200 ; #Fil 2210 ; #Fil TAB(17) ' period 1 period 2 period 3 ' 2220 ; #Fil TAB(17) ' ---------------------------- ' 2230 ; #Fil 'Frukost '; : ; #Fil USING "###" TAB(20) INT(Bantbehov(1)*.25) TAB(30) INT(Bantbehov(2)*.25) TAB(40) INT(Bantbehov(3)*.25) 2240 ; #Fil 'Mellanm}l '; : ; #Fil USING "###" TAB(20) INT(Bantbehov(1)*.1) TAB(30) INT(Bantbehov(2)*.1) TAB(40) INT(Bantbehov(3)*.1) 2250 ; #Fil 'Lunch '; : ; #Fil USING "###" TAB(20) INT(Bantbehov(1)*.25) TAB(30) INT(Bantbehov(2)*.25) TAB(40) INT(Bantbehov(3)*.25) 2260 ; #Fil 'Mellanm}l '; : ; #Fil USING "###" TAB(20) INT(Bantbehov(1)*.1) TAB(30) INT(Bantbehov(2)*.1) TAB(40) INT(Bantbehov(3)*.1) 2270 ; #Fil 'Middag '; : ; #Fil USING "###" TAB(20) INT(Bantbehov(1)*.3) TAB(30) INT(Bantbehov(2)*.3) TAB(40) INT(Bantbehov(3)*.3) 2280 ! 2290 ! -----r{knar ut summorna p} delm}ltiderna----- 2300 ! 2310 Summa(1)=0 2320 Summa(2)=0 2330 Summa(3)=0 2340 FOR Period=1 TO 3 2350 RESTORE 2430 2360 FOR Summa=1 TO 5 2370 READ Del 2380 Summa(Period)=Summa(Period)+INT(Bantbehov(Period)*Del) 2390 NEXT Summa 2400 NEXT Period 2410 ! 2420 ! 25% Frukost 10% Mellanm}l 25% Lunch 10% Mellanm}l 25% Middag 2430 DATA .25,.1,.25,.1,.3 2440 ! 2450 ! -----utr{kning av hur m}nga dagar reducering med motion----- 2460 ! 2470 Reducering=(Minskning-(Tid*30*Normal/Fett))*Tid/Minskning 2480 Dagar=INT((Reducering-INT(Reducering))*30) 2490 M}nader=INT(Reducering) 2500 ! 2510 ; #Fil TAB(17) ' ---------------------------- ' 2520 ; #Fil 'Summa'; : ; #Fil USING "####," TAB(18) Summa(1) TAB(28) Summa(2) TAB(38) Summa(3) 2530 ; #Fil 2540 ; #Fil 'F|r att sedan h}lla vikten skall du {ta c:a ' INT(M}l*Aktiv(Grad)) 'kalorier per dag' 2550 ; #Fil 2560 ; #Fil 'N{r man cyklar, simmar och }ker skidor f|rbrukar man c:a' H}rd 'Kcal per halvtimme' 2570 ; #Fil 'P] en rask promenad i en halvtimme f|rbrukas c:a' Normal 'Kcal' 2580 ; #Fil 'Om du skulle tex cykla en 1/2 timme per dag under' Tid 'm}nader g}r du ned' 2590 ; #Fil 'Yttligare' Tid*30*180/6000 'kilo, eller s} klarar du bantningen med ovanst}ende kaloriintag' 2600 ; #Fil 'p}' M}nader 'm}nader och' Dagar 'dagar' 2610 Z=FNBytsida 2612 IF Fil=1 PRINT #1 CHR$(12) 2615 CLOSE 1 2620 RETURN 0 2630 FNEND 2640 ! 2650 ! -----hj{lptext f|r aktivitetsgrad----- 2660 ! 2670 DEF FNHj{lp 2680 FOR I=1 TO 4 2690 ; CUR(I+2,60) I ' ' Aktiv$(I) 2700 NEXT I 2710 ; CUR(2,0) 2720 RETURN Hj{lp 2730 FNEND 2740 ! 2750 ! -----sl{ckning av hj{lptext 2760 ! 2770 DEF FNSl{ck 2780 FOR I=1 TO 4 2790 ; CUR(I+2,60) SPACE$(LEN(Aktiv$(I))+5) 2800 NEXT I 2810 ; CUR(3,0) 2820 RETURN Sl{ck 2830 FNEND 2840 ! 2850 DEF FNBytsida 2860 IF Fil=1 RETURN 0 2870 ; #Fil 'Tryck p} RETURN f|r forts{ttning'; : INPUT ''Slask$ 2880 IF Fil=0 PRINT #Fil CHR$(12) 2890 RETURN 0 2900 FNEND