Programa desenvolvido em Basic para cálculo do VAL e da  TIR

10 CLEAR

20 DIM c(100)

30 PRINT "calculo da TIR e do VAL"

40 INPUT "numero de anos do projecto";n

50 f=0

60 FOR x=0 TO n

70 PRINT "C.F. do Ano";x: INPUT "=";c(x+1)

80 IF x=0 THEN IF c(1)>0 THEN PRINT "investimento positivo"

90 f=f+c(x+1)

100 NEXT x

110 INPUT "quer a TIR (t) ou o VAL (v), recomeçar (r) ou acabar (a)";I$

120 IF I$="V" THEN GOTO 450

130 IF I$="v" THEN GOTO 450

140 IF I$="T" THEN GOTO 210

150 IF I$="t" THEN GOTO 210

160 IF I$="R" THEN GOTO 10

170 IF I$="r" THEN GOTO 10

180 IF I$="a" THEN GOTO 550

190 IF I$="A" THEN GOTO 550

200 PRINT "escolha outra vez": GOTO 110

210 IF f=0 THEN PRINT "tir=0": GOTO 110

220 INPUT "quantas casas decimais deseja (1 a 9)"; k

230 e=1

240 d=1000

250 FOR r=0 TO 10

260 z=10^r

270 FOR i=e*z TO d*z

280 a=0

290 FOR x=0 TO n

300 IF f>0 THEN v=c(x+1)/((1+0.01*(i/z))^x)

310 IF f<0 THEN v=c(x+1)/((1-0.01*(i/z))^x)

320 a=a+v

330 Next x

340 IF f>0 THEN IF a<0 THEN GOTO 410

350 IF f<0 THEN IF a>0 THEN GOTO 410

358 IF r=k+1 THEN IF f>0 THEN BEEP1:BEEP0:BEEP1

360 IF r=k+1 THEN IF f>0 THEN PRINT "tir=";(i/z)

368 IF r=k+1 THEN IF f<0 THEN BEEP0:BEEP1:BEEP0

370 IF r=k+1 THEN IF f<0 THEN PRINT "tir=";-(i/z)

380 IF r=k+1 THEN GOTO 440

390 NEXT i

400 GOTO 430

410 e=i/z-1/z

420 d=i

430 NEXT r

440 GOTO 200

450 INPUT "taxa de actualização";g

460 v=0

470 DIM m(n)

480 FOR y=0 TO n

490 m(y)=c(y+1)/((1+g/100)^y)

500 v=v+m(y)

510 PRINT "cash flow actualizacao do ano";y;"=";m(y)

520 NEXT y

530 PRINT "val=";v

540 GOTO 200

550 END