duci.ro FORUM at forumco.com
duci.ro FORUM at forumco.com
Home | Profile | Register | Active Topics | Active Polls | Members | Private Messages | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?




 All Forums
 ProgrammingPool environment
 Elementele limbajului Liberty Basic
 Cateva elemente ale limbajului Liberty Basic
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Author Previous Topic Topic   

duci
Forum Admin


210 Posts

Posted - 07/19/2005 :  10:06:45  Show Profile  Email Poster Send duci a Private Message
Elementele Limbajului Liberty Basic(Just Basic)


Un program în limbajul BASIC consta dintr-un program principal, care se termina cu declaratia END (sfarsit) precum si functii si subrutine care urmeaza dupa programul principal.

O instructiune a programului se poate termina prin apasarea tastei <ENTER> (retur de car). Dar linia observata în editor poate contine mai multe instructiuni separate prin ":". O linie poate fi numerotata sau sa aiba o eticheta.

Este recomandat ca într-un program sa se evite utilizarea saltului neconditionat (GOTO), deoarece în cazul aparitiei unor greseli nu mai stim de unde s-a ajuns în acel punct. In locul acestui stil, întotdeauna se pot folosi structuri caracterizate prin început si sfârsit. Acesta este principiul de baza al programarii structurate.

Variabile

Numele variabilelor este un sir de litere eventual urmate de cifre. Numele poate contine semnul punct.

Pentru tablouri (vectori si matrici) se foloseste o declaratie care sa permita alocarea în memorie a spatiului necesar, deoarece acest spatiu (volum) poate fi foarte mare.

Exemplu:

Tema:

Rezerva spatiu în memorie pentru 100 de numere în variabila A.

Solutie:

DIM A(10,10)

Sau

DIM A(100)

Identificatori

Identificatorii pot fi

- nume de fisiere
- nume de functii sau subprograme
- etichete (de exemplu [start]) marcate cu [ ] sau numar de linie

Operatori

- Atribuirea: semnul folosit este "=". A=1 se citeste ca: A ia valoarea 1
- Inmultirea a doua numere: semnul folosit este "* "
- Impartirea a doua numere: semnul folosit este "/ "
- Scaderea a doua numere: semnul folosit este "- "
- Adunarea a doua numere: semnul folosit este "+ "
- Ridicarea la putere foloseste semnul ^ (de exemplu x^y însemna xy)
- Testarea egalitatii a doua numere (comparatia) foloseste tot semnul "="
- Testarea inegalitatii: >= mai mare sau egal; <= mai mic sau egal
- Operatorii logici: AND înaseamna si, OR înseamna sau iar NOT înseamna negare

Saltul neconditionat

Sintaxa:

GOTO [identificator]
...
[identificator] A=1

sau

GOTO 10
...
10 A=1



Structuri repetitive

Structura FOR:

Sintaxa:

FOR ... TO ... STEP ...
... ...
NEXT ...

Exemplu:

Tema:

[Inceput] Pentru variabila NUMAR care ia valoarea initiala 1 pâna la 100 cu pasul 0.1
[Actiune] tipareste numarul NUMAR/2*100
[Sfarsit] Creste NUMAR cu valoarea 0.1. Daca NUMAR este mai mic decât 100 reia tiparirea

Solutie:

FOR NUMAR=1 TO 100 STEP 0.1
PRINT NUMAR/2*100
NEXT NUMAR



Structura WHILE

Sintaxa:

WHILE ...
... ...
WEND

Exemplu:

Tema:

[început] Cât timp este îndeplinita conditia, A<10
[actiuni] valoarea variabilei A creste cu o unitate (noua valoare a lui A este A+1)
tipareste A
[sfârsit] Sfârsitul actiunilor

Solutie:

WHILE A<10
A=A+1
PRINT A
WEND

Structura alternativa

Sintaxa:

IF ... THEN ... ELSE ...

Exemplu:

Tema:

Daca A>10 atunci tipareste "Maria", altfel tipareste "Ana are mere"

Solutie

IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere"

Aceasta structura poate fi adaptata pentru salt conditionat daca pentru unul din corpurile actiunilor se propune un salt

IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere": GOTO 10

sau

IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere": GOSUB 100


Functii si subrutine

Cea mai utilizata declaratie pentru un corp de instructiuni care se repeta este:

1. Cu salt neconditionat

GOSUB [identificator]
... ...
END
[identificator]
... ...
RETURN

De obicei aceste structuri sunt plasate la sfârsitul programului, dupa declaratia de sfarsit a programului principal, END.

2. Declaratia de functie

... ...
END
FUNCTION F(x)
... ...
F=... ...
END FUNCTION

3. Subprogramul (subrutina)

... ...
END
SUB maria
... ...
END SUB

Operatii cu fisiere

Deschiderea si închiderea nunui fisier pe disc:

Sintaxa:

OPEN nume FOR scop AS #numar
... ...
CLOSE #numar

Exemplu

Tema:

Deschide fisierul "Maria.dat" pentru scriere ca nr. 1.
Inchide fisierul cu nr.1

Solutie:

OPEN "Maria.dat" FOR OUTPUT as #1
... ...
CLOSE #1

Obs: semnul # este o abreviere pentru cuvântul "numar".

Scopul poate fi:

scriere (OUTPUT),
citire (INPUT) sau
adaugare la un fisier existent (APPEND).

Numarul poate fi de asemenea si o succesiune de litere si cifre, eventual separte prin punct.

Functii de intrare/iesire

Citire:

INPUT variabila scalara

Tiparire (scriere)

PRINT lista de variabile separate prin ;

Pentru citirea dintr-un fisier sau scrierea într-un fisier se foloseste:

INPUT #numar, ...

si

PRINT #numar,...

Functii matematice

ABS( n ) valoarea absoluta a lui n
ACS( n ) arccosinus de n
ASN( n ) arcsinus de n
ATN( n ) arctangenta de n
COS( n ) cosinus de n (argumentul în radiani)
EXP( n ) exponentiala e^n
LOG( n ) logaritmul natural al lui n
RND( n ) genereaza un numar aleator între 0 si 1
SIN( n ) sinus de n (argumentul în radiani)
TAN( n ) tangenta de n (argumentul în radiani)
SORT nume ordoneaza un vector sau o matrice
INT( n ) partea întreaga a lui n

Operatii cu siruri de caractere

Sirurile de caractere pot fi declarate între ghilimele si sunt stocate în variabile al caror nume se termina cu semnul $

Exemplu:

Maria$="Ana are mere"

Concatenarea este operatia de compunere a unui sir de caractere din mai multe subsiruri. Se foloseste caracterul "+":

Exemplu:

Maria$="Ana"+" are"+" mere"

Cea mai utilizata functie pentru siruri de caractere este INKEY$, care citeste tastatura în asteptarea unei apasari de tasta:

Exemplu:

1010 IF inkey$="" THEN 1010 ELSE PRINT "GATA"

Alte functii:

ASC( s$ ) codul ASCII al caracterului s$
CHR$( n ) caracterul cu codul ASCII n
DATE$( ) sir de caractere care contine data curenta
INSTR(a$,b$,n) cauta sirul b$ în a$, pornind de la pozitia n
LEFT$( s$, n ) primele n caractere ale sirului s$
LEN( s$ ) lungimea sirului s$
MID$( ) subsir din sir
NAME a$ AS b$ redenumeste fisierul a$ ca b$
RIGHT$( s$, n ) cele n caractere de la dreapta din s$
SPACE$( n ) un sir cu n blancuri
STR$( n ) transforma un numar, n, în sir de caractere
TIME$( ) ora curenta ca un sir de caractere
VAL( s$ ) echivalentul numeric al lui s$
WORD$( s$, n ) cuvântul n din s$

Operatii cu ferestre

Deschiderea ferestrelor de tip Windows are aceeasi sintaxa ca si deschiderea unui fisier pe disc însa exista mai multe optiuni.

De un mare ajutor este programul care genereaza interactiv secventa de program, "FreeFormEditor" din meniul "Run".

Exemplu:

Nomainwin Dezactiveaza fereastra de dialog.
OPEN "Numele ferestrei: grafice de functii" FOR graphics as #1
print #1, "down" Penita jos
print #1, "line ";11;" ";11;" ";111;" ";111 Traseaza o linie de la x=11, y=11pâna la x=111, y=111
print #1, "up; goto 1 50 Penita sus. Du penita la x=1, y=50
print #1, "down" Penita jos
print #1, "color blue; goto 190 300" Ia penita albastra si du penita la x=190, y=300
print #1, "up;goto 120 100;\ mesaj" Scrie text la pozitia (x,y)=120,100
print #1, "up;goto 100 150;\ numar "+str$(987.125)
print #1, "flush"
notice "Mesaj final de terminare normala"+chr$(13)+" end "
input r$
close #1

end

Se observa ca instructiunile pentru miscarea penitei sunt scrise folosind conventiile si functiile pentru siruri de caractere.

Prof.Dr. D. Ciurchea

Google AdSense

USA
Mountain View


duci
Forum Admin



210 Posts

Posted - 07/19/2005 :  10:42:51  Show Profile  Email Poster Send duci a Private Message
Utilizarea mediului de programare


- Dupa apelarea mediului de programare vom obtine urmatoarea fereastra de editare a programului sursa:

- Meniul contine diferite optiuni pentru încarcarea si salvarea fisierelor, editare, depanarea programelor cu greseli, fisiere de ajutor (help), instrumente pentru proiectarea ferestrelor grafice.

-Rularea unui program exemplu

  • Pasul 1: Deschiderea optiunii din meniu care permite listarea programelor (File>>Open)

  • Pasul 2: Alegerea programului exemplificativ,în sectiunea din stânga, dupa care se alege "OK" în dreapta:

  • Pasul 3: Se alege din meniu optiunea (Run>>Run) dupa care apare o fereastra specifica programului ales:


Prof.Dr. D. Ciurchea
Go to Top of Page

duci
Forum Admin



210 Posts

Posted - 07/19/2005 :  10:48:47  Show Profile  Email Poster Send duci a Private Message
Superexemplu

Fitarea unui spectru Mossbauer prin metoda celor mai mici patrate





----- Output grafic ----




130 REPS = 1 'Incepe evaluarea lungimii mantisei masinii.
140 WHILE REPS+1<>1:REPS=REPS/2:WEND
180 REPS = REPS * 2'Lungimea mantisei masinii
220 NPCT = 5 ' Nr. punctelor experimentale.
230 NPAR = 3 ' nr. parametrilor din modelul teoretic.
240 DIM D(NPCT):dim T(NPCT)' Vect. care contin datele experim.
250 DIM W(NPAR):dim V(NPAR):dim VT(NPAR)' Vect.de lucru pt. param.
260 DIM A(NPAR, NPAR):dim X(NPAR):dim B(NPAR)
270 rem DIM AINV(NPAR, NPAR)' Calculul matr. inverse.
271 D(1)=12:D(2)=15.7:D(3)=18.8:D(4)=20.2:D(5)=19.2
272 T(1)=0:T(2)=10:T(3)=30:T(4)=100:T(5)=300
280 NSIG = 5 ' Nr. cifre semnif. in raportarea rez. final.
290 PREC = 10 ^ (-1*NSIG)
300 MAXFN = 5000' Nr. maxim de evaluari ale functiei c.m.m.p.
UpperLeftX=4
UpperleftY=-100
WindowWidth=420
WindowHeight= 420
open "grafic final" for graphics as #1
print #1, "fill yellow;color darkblue"
print #1, "goto ";11;" ";21
print #1, "backcolor yellow;\D (dimensiunea de graunte)"
print #1, "down; goto ";11;" ";300
print #1, "goto ";311;" ";300
print #1, "\ T (timpul)"
print #1, "color red;backcolor darkred"
for I=1 to 5
print #1, "down; place "+str$(11+T(I))+" "+str$(300-D(I)*100)
print #1, "circlefilled 6 "
next I
print #1, " flush"
WindowHeight= 420
UpperLeftX=550
UpperleftY=-100

open "Reprezentarea Experimental-Calculat" for graphics as #2
print #2, "fill blue"

360 ALM = 1 ' Parametrul Levenberg-Marquart.
370 V(1) = 20' Valorile initiale ale parametrilor.
380 V(2) = 0.5
390 V(3) = 0.5
400 EPS = REPS^0.5 '---Constanta folosita la deriv. numerica.
480 '------------------ INITIALIZARE ---------------
490 '
500 FOR I = 1 TO NPAR ' Incepe initializarea vect. de lucru.
510 W(I) = V(I)
520 NEXT I
530 GOSUB 2180 ' Calculul valorii functiei cu param. initiali.
540 FF = F
550 '
560 '---------------- INCEPUTUL PROCESULUI ITERATIV ---------
570 '
580 FOR I = 1 TO NPAR 'Afisaj val. corectiilor la param. calc.
590 PRINT I;" ";V(I)
600 NEXT I
610 '
620 '======== CONSTRUIREA SISTEMULUI LINIAR DE ECUATII =======
630 '
640 FOR I = 1 TO NPAR' Init. mat. Hessian si a term. liberi.
650 FOR J = I TO NPAR
660 A(I, J) = 0
670 A(J, I) = 0
680 NEXT J
690 W(I) = V(I)' Actualizarea vectorului de lucru.
700 B(I) = 0
710 NEXT I
720 '
730 '------ Calculul derivatelor numerice in fiecare punct ----
740 '
750 FOR IP = 1 TO NPCT
760 F1 = V(1) * (1 - V(2) * EXP(-1*V(3)*T(IP)))' Referinta
770 ' pentru calculul derivatei numerice.
780 DIF = D(IP) - F1
790 FOR I = 1 TO NPAR ' Calculul comp. grad. in punctul IP.
800 AA = ABS(V(I))
810 IF AA>0.1 THEN PAS=EPS*AA ELSE PAS=0.1*EPS' Scalarea pasului in deriv.num.
830 W(I) = V(I) + PAS ' Pasul in derivata numerica.
840 F2 = W(1) * (1 - W(2) * EXP(-1*W(3)*T(IP)))
850 G(I) = (F2 -1*F1) / PAS ' Componenta gradientului.
860 W(I) = V(I) ' Refacerea vectorului de lucru.
870 NEXT I
880 '
890 '- Calculul matricii Hessian, A si al term. liberi, B ---
900 '
910 FOR I = 1 TO NPAR
920 FOR J = I + 1 TO NPAR
930 A(I, J) = A(I, J) + G(I) * G(J)'Elem. matr.
940 A(J, I) = A(I, J) ' Hessian, simetrica.
950 NEXT J
960 A(I, I) = A(I, I) + G(I) * G(I)
970 B(I) = B(I) + DIF * G(I) ' Termenii liberi.
980 NEXT I
990 NEXT IP
1000 IFN = IFN + (NPAR * NPAR + NPAR) / 2
1010 GOSUB 2310 ' Rez. sist. liniar de ecuatii A(,)*X()=B().
1020 '
1030 '================= AJUSTAREA PASULUI ====================
1040 '
1050 IF INEF > 6 OR IFN > MAXFN THEN 1840
1060 ALFA = 1 ' Incercarea cu un pas cit mai mare
1070 GOSUB 3070
1080 F2 = F
1090 IF F2 < FF THEN AL = ALFA: FF = F2: GOTO 1290
1100 ALFA = 0.5 ' Incercarea cu jumatatea pasului maxim
1110 GOSUB 3070
1120 F1 = F
1130 IF F1 < FF THEN AL = ALFA: FF = F1: GOTO 1290
1140 'Ajustarea pasului cu o parabola prin abscisele ALFA=0,0.5,1.
1150 ALFA = (3*FF-4*F1+F2)/(FF-F1-F1+F2)/4
1160 GOSUB 3070
1170 IF F < FF THEN AL = ALFA: FF = F: GOTO 1290
1180 '
1190 '---------- Decizie pentru cautarea ineficienta -------
1200 '
1210 IF FF > F1 AND FF > F2 THEN 1270
1220 ALM = ALM * 1.1 ' Marim val. param. Levenberg-Marquart.
1230 INEF = INEF + 1
1240 GOSUB 2110 ' Schimbam semnul si marimea corectiilor X().
1250 GOTO 1050 'Reluam cautarea unui progres cu aceste cor.
1260 '
1270 ' ========= P R O G R E S I N C A U T A R E ========
1280 '
1290 ITN = ITN + 1
1300 ALM = ALM / 5 ' Param. Levenberg-Marquart este micsorat.
1310 INEF = 0
1315 PRINT "I v vechi() v nou() "
1320 FOR I = 1 TO NPAR
1330 W(I) = V(I) + AL * X(I)
1360 print I;" "; V(I);" "; W(I)
1370 NEXT I
1380 PRINT " alfa= "; AL;
1390 PRINT " Parametrul Levenberg-Marquart= "; ALM
1400 PRINT " itn= "; ITN;
1410 PRINT " rez= "; FF
1420 NQ = 0' Test pentru cifrele semnif. in param. calculati.
1430 FOR I = 1 TO NPAR
1440 IF ABS(V(I) / W(I) - 1) < PREC THEN NQ = NQ + 1
1450 NEXT I
1460 IF NQ = NPAR AND ITN > 2 THEN 1840
1470 '
1480 '=========== CAUTAREA DE-A LUNGUL GRADIENTULUI ==========
1580 PRINT "Kantorovici "; KO
1590 FOR I = 1 TO NPAR
1600 VT(I) = W(I)
1610 W(I) = W(I) + X(I) * AL / 2
1620 NEXT I
1630 KO = KO + 1
1640 GOSUB 2180
1645
1650 IF F < FF AND KO<10 THEN FF = F: GOTO 1290
1660 '
1670 '============== ACTUALIZAREA PARAMETRILOR OPTIMI =========
1680 '
1690 GOSUB 3190
1700 FOR I = 1 TO NPAR
1710 V(I) = VT(I)
1720 NEXT I
1730 GOSUB 3310
1750 KO = 0
1760 INEF = 0
1780 GOTO 550'================ RELUAREA CAUTARII
1800 '================ SFIRSITUL CAUTARII ================
1820 GOSUB 3130 ' Actualizarea param. optimi pt. raportul final.
1830 IFIN = 1
1840 REM notice "TERMINAT"
1890 IF NQ <> NPAR THEN 1940
1900 A$ = "TERMINATIE NORMALA."
1910 A$ = A$ + " S-AU OBTINUT ";NSIG;" CIFRE SEMNIF. IN ";ITN;" ITERATII"
1920 GOSUB 3310
1930 print A$: GOTO 1990
1940 A$ = "TERMINATIE ANORMALA. -> "
1950 B$ = "Datorata cautarii ineficiente"
1960 C$ = " S-a depasit nr. maxim de eval. ale fct."
1970 IF INEF > 0 THEN PRINT A$ + B$: GOTO 1990
1980 IF IFN > MAXFN THEN PRINT A$ + C$
1990 FOR I = 1 TO NPAR
2010 PRINT "Parametrul "; I;"= ";V(I)
2020 NEXT I
2030 GOSUB 3470
'NOTICE "TERMINAT"
INPUT R$

CLOSE #2
CLOSE #1



2040 END
2060 '* SFIRSITUL PROGRAMULUI PRINCIPAL *
2080 '
2090 '== SUB. PT. SCHIMBAREA SEMNULUI IN CAZUL CAUTARII INEF. ==
2110 FOR I = 1 TO NPAR
2120 X(I) = -1*X(I) / 5
2130 NEXT I
2140 RETURN
2150 '
2160 '==== SUBRUTINA PENTRU CALCULUL FUNCTIONALEI C.M.M.P. ===
2170 '
2180 IFN = IFN + 1
2190 F = 0
2210 FOR I = 1 TO NPCT
2220 AUX = W(1) * (1 - W(2) * EXP(-1*W(3) * T(I)))
2230 AUX = D(I) - AUX
2240 F = F + AUX * AUX
2250 NEXT I
2260 RETURN
2270 '
2280 '=== SUBRUTINA PENTRU REZOLVAREA SISTEMULUI LINIAR ===
2290 '
2300 ' Procedeul este eliminarea Gaussiana cu pivotare partiala
2310 '
2320 FOR I = 1 TO NPAR' Initializare
2330 A(I, I) = A(I, I) + ALM' Parametrul L-M este adaugat
2340 ' pe diagonala principala.
2360 NEXT I
2370 FOR K = 1 TO NPAR - 1' Contorizarea eliminarilor.
2380 '
2390 '--------------- Cautarea liniei pivot ---------------
2400 '
2410 L = K
2420 I = K
2430 I = I + 1
2440 IF ABS(A(I, K)) > ABS(A(L, K)) THEN L = I
2450 IF I < NPAR - 1 THEN 2430
2460 IF L = K THEN 2590
2470 FOR J = K TO NPAR
2480 T = A(K, J)
2490 A(K, J) = A(L, J)
2500 A(L, J) = T
2510 NEXT J
2520 T = B(K): B(K) = B(L): B(L) = T
2570 '----------- Triunghiularizarea metricii A ---------
2590 FOR I = K + 1 TO NPAR
2600 T = A(I, K) / A(K, K)
2610 A(I, K) = T ' Detaliile transformarii sunt
2620 ' salvate sub diagonala mat. Hessian.
2630 FOR J = K + 1 TO NPAR
2640 A(I, J) = A(I, J) - T * A(K, J)
2650 NEXT J
2660 B(I) = B(I) - T * B(K)
2670 NEXT I
2680 NEXT K
2700 '------- Construirea solutiilor sistemului liniar ------
2720 X(NPAR) = B(NPAR) / A(NPAR, NPAR)
2730 FOR I = NPAR - 1 TO 1 STEP -1
2740 S = 0
2750 FOR J = I + 1 TO NPAR
2760 S = S + A(I, J) * X(J)
2770 NEXT J
2780 X(I) = (B(I) - S) / A(I, I)
2790 NEXT I
2800 RETURN
3050 '== SUB. PT. INCERCAREA PASILOR IN OPTIMIZAREA PARAM. ====
3070 FOR I = 1 TO NPAR
3080 W(I) = V(I) + ALFA * X(I)
3090 NEXT I
3100 GOSUB 2180
3110 RETURN
3130 '===== SUBRUTINA PENTRU CONSTRUIREA VECTORULUI DE LUCRU CU
3140 ' VALOAREA FINALA A PASULUI =================
3150 FOR I = 1 TO NPAR
3160 W(I) = V(I) + AL * X(I)
3170 NEXT I
3180 RETURN
3190 REM
3200 '====== PROCEDURA GRAFICA PENTRU STERGEREA PUNCTELOR ===
3220 return

3310 '====== SUBRUTINA PENTRU REPREZENTAREA GRAFICA EXPERIMENTAL-CALCULAT =====


print #2,"cls"
print #2, "fill green;up;goto ";18;" ";31
print #2, "color darkred;backcolor green;\Experimental"
print #2, "goto ";11;" ";11;
print #2,"down;box 311 311;up;goto 11 311;down; line 11 311 311 11"
print #2, "up; goto ";201;" ";295
print #2, "\ Calculat"
print #2, "up; goto ";50;" ";95
print #2, "backcolor yellow"
REM print #2,"\Iteratia "+str$(ITN)
print #2, "up; goto ";185;" ";200
REM print #2,"\Reziduu ="+str$(int(F0*10000)/100)
print #2, "flush"

for I=1 to NPCT
xx=V(1)*(1-V(2)*exp(-1*V(3)*T(I)))
y.p=11+D(I)*10
x.p=311-xx*10
print #2, "up;goto "+str$(x.p)+" "+str$(y.p)
print #2,"down;color blue;backcolor red;circlefilled 5"
next I
3460 RETURN
3470 '
3480 '====== SUBRUTINA PENTRU REPREZENTAREA GRAFICA FINALA =====
3490 '


print #1, "fill yellow;color darkblue"
print #1, "goto ";11;" ";21
print #1, "backcolor yellow;\D (dimensiunea de graunte)"
print #1, "down; goto ";11;" ";300
print #1, "goto ";311;" ";300
print #1, "\ T (timpul)"
print #1, "color red;backcolor blue"
for I=1 to 5
print #1, "down; place "+str$(11+T(I))+" "+str$(300-D(I)*10)
print #1, "circlefilled 6 "
next I
print #1, "color black; size 2"
xx=V(1)*(1-1*V(2))
print #1, "up; place "+str$(11)+" "+str$(300-xx*10)
for tt=0 to 300
xx=V(1)*(1-V(2)*exp(-1*V(3)*tt))
print #1, "down; goto "+str$(tt+11)+" "+str$(300-xx*10)
next tt

print #1, " flush"

3710 RETURN



Prof.Dr. D. Ciurchea
Go to Top of Page
  Previous Topic Topic   
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Jump To:
duci.ro FORUM at forumco.com © 2000-05 ForumCo.com Go To Top Of Page
Generated in 0.27 seconds. Hello from Duci !!! Snitz Forums 2000
RSS Feed 1 RSS Feed 2
Powered by ForumCo 2000-2008
TOS - AUP - URA - Privacy Policy
ForumCo Free Blogs and Galleries
Signup for a free forum or Go Banner Free