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