,,,
1. :
- .
2. :
- , -
Bit :
╔════════════════════════════════════════════════════════╗
║ ║
╠═══╦════════════════════╦════╦═════╦════════════════════╣
║ ║ Π ║ ║ No ║ ║
║No ╠═══════╦═══╦════════╣ ║ .╠══════╦══════╦══════╣
║ ║║║║ ║║ 1 ║ 2 ║ 3 ║
╠═══╬═══════╬═══╬════════╬════╬═════╬══════╬══════╬══════╣
Bit stud :
╔════════════════════════════════════════════════════════╗
║ ║
╠════╦═════════════════════════════════════╦═════╦═══════╣
║ ║ Π ║ No ║ ║
║ No ╠════════════╦═══════════╦════════════╣ .║ ║
║ ║ ║ ║ ║║ ║
╠════╬════════════╬═══════════╬════════════╬═════╬═══════╣
, -
, , .
.
3. , :
3.1 , -
, , -
:
- ,
- ,
- ,
- ,
- ,
- .
3.2 :
- ,
- ,
- ,
- ,
- ,
- .
4. :
4.1
4.2 .
5. - :
1.
4.10.96
2. , ,
18.10.96
3.
25.10.96
4. -
15.11.96
5.
29.11.96
6. -
24.12.96
7.
25.12.96
/ ../
/ .., -1-95/
.................................... 4
1.
................... 4
2. ... 4
3. ............... 5
4. ........... 7
5. :
5.1 Begin ............. 8
5.2 Main_menu ....... 8
5.3 Autoload .. 9
5.4
Working(0) ........................... 9
5.5 Working(1) . 9
5.6 Working(2) .......... 9
5.7 Working(3) ..... 9
5.8 Working(4) ..... 10
5.9 Working(5) ... 10
5.10 Working(6) ....... 10
5.11 Working(7) ..... 10
5.12
Working(_) ......................... 10
5.13 Correct(1) .... 10
5.14 Correct(2). 11
5.15 View .................. 11
5.16 Accept ............. 11
5.17 Skip Skip1 ....... 11
5.18 Bd_load ........ 12
5.19 Bd_save ..... 12
5.20 Ask ................ 12
5.21 Mesage ............................. 12
5.22 Error Io_error ................... 12
5.23 Ok ................................. 12
6. ....................... 13
7. ....................... 24
8.
: ................... 25
................................. 28
.......................... 29
Turbo Prolog
v 2.0 ( ). -
-
, -
- . -
.
, - , -
- ..
-
- .
- - -,
.
- -
-
. -
.
,
: - -
.
-
: , -
-
,
.
--
-
. -
,
.
-
,
, -
. :
, .
, .
, -
- , - ,
- .
, -
, - , -
- , - . -
-
.
,
main_menu. -
,
.
:
0 - ... -
1 - -
2 - -
3 - -
4 - -
5 - -
6 - -
7 - -
.
╔═══════════════════╗
║ begin ║
║───────────────────║
║ ║
╚═════════╦═════════╝
╔════════════════╩═══════════════╗
╔═══════╩═════════╗ ╔══════╩═══════╗
║ autoload ║ ║ main_manu ║
║─────────────────║ ║──────────────║
║ ║ ║ ║
╚═════════════════╝ ╚══════╦═══════╝
║
╔════════╦════════╦════════╦═══════╦══════╬═══════╗
║ ║ ║ ║ ║ ║ ║
╔═══╩══════╗ ║ ╔══════╩══════╗ ║ ╔═════╩════╗ ║ ╔═════╩════╗
║working(0)║ ║ ║ working(1) ║ ║ ║working(2)║ ║ ║working(3)║
║──────────║ ║ ║─────────────║ ║ ║──────────║ ║ ║──────────║
║║ ║ ║║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║
╚══════════╝ ║ ╚══════╦══════╝ ║ ╚═════╦════╝ ║ ╚═════╦════╝
╔═════════════╣ ╔╝ ║ ╚╗ ║ ╚═════╗
║ ║ ║ ║ ║ ╚═╗ ║
║ ╔═════╩═════╗ ║ ╔══════╩══════╗ ║ ╔═════╩════╗ ║
║ ║ working(4)║ ║ ║ working(5) ║ ║ ║working(6)║ ║
║ ║───────────║ ║ ║─────────────║ ║ ║──────────║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║ ╚═════╦═════╝ ║ ╚══════╦══════╝ ║ ╚══════════╝ ║
║ ║ ║ ╚══════╗ ║ ║
║ ╚╗ ╠═══════╦══════╗ ║ ╚═══════════╗ ║
║ ╔══════════╗ ║ ║ ║ ║ ╚═════╗ ║ ║
║ ║working(7)║ ║ ╔════╩═════╗ ║ ╔════╩═════╗ ║ ╔═════╩═════╗ ║
╠═╣──────────║ ║ ║correct(1)║ ║ ║correct(2)║ ║ ║ accept(N) ║ ║
║ ║ 䠠 ║ ║ ║──────────║ ║ ║──────────║ ║ ║───────────║ ║
║ ╚══════════╝ ║ ║ ║ ║ ║ ║ ║ ║║ ║
║ ╔══════════╗ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║working(_)║ ║ ╚══════════╝ ║ ╚══════════╝ ║ ║ ║ ║
╚═╣──────────║ ║ ╔═══════╩════════╗ ║ ╚═══════════╝ ║
║ ║ ║ ║ correct(_) ║ ║ ║
║ ║ ║ ║────────────────║ ║ ║
╚══════════╝ ║ ║ ║ ║ ╔═══╝
║ ║ ║ ║ ║
║ ╚════════════════╝ ║ ║
║ ║ ║
║ ║ ║
(1) (2) (3)
(1) (2) (3)
║ ║ ║
║ ║ ╚══╗
║ ╚═══════════╗ ║
╔═══════╩═══════╦════════════╦══════════════╗ ║ ║
╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║ ║
║ load_bd(1) ║ ║ load_bd(2)║ ║ load_bd(3) ║ ║load_bd(4)║ ║ ║
║────────────║ ║───────────║ ║────────────║ ║──────────║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ Ġ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║║ ║ bit.dat ║ ║║ ║ bstud.dat║ ║ ║
╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║ ║
║ ║
╔═══════════════╦════════════╦══════════════╦══════╝ ║
╔═════╩══════╗ ╔══════╩════╗ ╔═════╩══════╗ ╔═════╩════╗ ║
║ save_bd(1) ║ ║ save_bd(2)║ ║ save_bd(3) ║ ║save_bd(4)║ ║
║────────────║ ║───────────║ ║────────────║ ║──────────║ ║
║ ║ ║ ║ ║ ║ ║║ ║
║ ║ ║ ║ ║ Ġ ║ ║ ║ ║
║ 堠 ║ ║ ║ ║ 堠 ║ ║ ║ ║
║║ ║ bit.dat ║ ║║ ║ bstud.dat║ ║
╚════════════╝ ╚═══════════╝ ╚════════════╝ ╚══════════╝ ║
║
╔═══════════════════╦═══════════════════╦═════════╝
╔══════╩══════╗ ╔══════╩══════╗ ╔══════╩══════╗
║ view(1) ║ ║ view(2) ║ ║ view(_) ║
║─────────────║ ║─────────────║ ║─────────────║
║ ║ ║ ║ ║ 䠠 ║
║ ║ ║ Ġ ║ ║ ║
╚═════════════╝ ╚═════════════╝ ╚═════════════╝
, -
.
Begin GOAL -
. -
Autoload, -
Main_menu.
-
, -
C. -
Working, C -
. Repeat,
Working , C 7
.
Autoload -
.
,
"".
Autoload bit.dat -
existfile
consult.
.
, -
.
Working(1) -
, , . -
: "-
", " " " ".
.
X,
Correct, X. Ѡ
Correct(1) Correct(2), , -
. Working(1)
Repeat, -
.
. -
, ,
. Accept,
. Accept -
retract
. ( ,
)
( Error).
Working(3) , : "-
", " BSTUD" " -
". Ġ
View(1) View(2), . Working(3) -
Main_menu Working(1)
Repeat.
, :
" ", " -
bit.dat", " BSTUD
"," BSTUD bstud.dat" "
". -
Load_bd, C, -
. Working(4) Repeat.
Working(5) Working(4).
Save_bd, , -
I.
. -
: , "-
" , ,
assertz -
"". , -
, fail. Ġ -
,
.
,
.
Main_menu, C=7,
.
Working(_) -
, 0 7.
, -
sound.
.
.
-
, . -
Accept, ,
" ". Accept -
N, -
. -
; -
- , <Enter>.
, , .
-
<Enter>.
Skip ( ) Skip1 ( -
). -
, <Enter>
Correct(1) , ,
Skip1 str_int -
. -
retract, assertz.
, -
( Mesage).
Correct(2) .
,
. assertz
, Ask,
.
, Repeat
, -
( Mesage) -
Correct(2).
-
( View(1) ) ( View(2) ) . -
, -
. Ġ
fail. -
.
Correct(1) Working(2). -
Acp -
,
( , -
Accept) .
Skip Skip1 -
Correct(1). ,
( -
<Enter>). , -
. , -
. -
, ( Skip1
-
).
-
, :
Bd_load(1) , -
, Bd_load(2) - bit.dat, Bd_load(3) - BSTUD
, BD_load(4) - BSTUD -
bstud.dat.
existfile -
consult. , -
( Io_error).
-
, :
Bd_save(1) , ,
Bd_save(2) - bit.dat, Bd_save(3) - BSTUD ,
BD_save(4) - BSTUD ⠠
bstud.dat. Ġ
save. -
( Error).
Ask 頠 ꠠ
Correct(2). , -
.
.
.
.
domains
Str=string
Int=integer
=(Str,Str,Str)
=(Int,Int,Int)
database -
(Int,,Int,Int),
database -
(Int,,Str,Int,)
predicates
begin
main_menu
autoload
accept(Int)
acp(Int,Int)
working(Int)
correct(Int)
view(Int)
skip(Str,Str,Str)
skip1(Str,Int,Int)
ask
mesage
error
io_error
ok
save_bd(Int)
load_bd(Int)
repeat
goal
begin.
clauses
/* , .8 */
begin:-
makewindow(1,26,94," ",0,0,25,80),
clearwindow,
autoload,
main_menu.
/* , .8 */
main_menu:-
repeat,
cursor(7,0),
write(" 0 - ... "),nl,
write(" 1 - "),nl,
write(" 2 - "),nl,
write(" 3 - "),nl,
write(" 4 - "),nl,
write(" 5 - "),nl,
write(" 6 - "),nl,
write(" 7 - "),nl,
write(" =>"),
readint(C),
clearwindow,
working(C),
clearwindow,
C = 7,
retractall(_),
removewindow.
/* , .9 */
autoload:-
retractall(_,),
existfile("bit.dat"),
consult("bit.dat",),
cursor(21,30),
write("* *").
autoload:-
makewindow(2,74,79,"",6,18,8,40),
cursor(2,10),
write(" "),
sound(70,294),
removewindow,
!.
/* , .9 */
working(0):-
makewindow(3,27,30," ...",0,0,25,80),
nl,nl,
write(" p-p "),
nl,nl,
write(" ⠠ "),
nl,nl,nl,nl,
write(" 堠 "),
nl,
write(" TURBO-PROLOG v.2.0."),
nl,nl,nl,
write(" p: .."),
nl,nl,
write(" , p.-1-95 () 1996 . "),
nl,
sound(5,220),
cursor(22,26),
write(" "),
readchar(_),
removewindow,!.
/* , .9 */
working(1):-
makewindow(4,26,48,"pp ",0,0,25,80),
sound(5,220),
repeat,
nl,
nl,
cursor(9,0),
write(" 1 - "),nl,
write(" 2 - "),nl,
write(" 3 - " ),nl,
write(" =>"),
readint(X),
clearwindow,
X>0,X<=3,
correct(X),
clearwindow,
X=3,!,
removewindow.
/* , .9 */
working(2):-
makewindow(5,48,107," ",0,0,25,80),
sound(5,220),
nl,
accept(N),
X=N,
(X,(Fm,Nm,Ot),Pl,Ls,(E1,E2,E3)),
retract((X,(Fm,Nm,Ot),Pl,Ls,(E1,E2,E3))),
ok,
!,
removewindow.
working(2):-
error,
removewindow,!.
/* , .9 */
working(3):-
makewindow(6,30,26,"p ",0,0,25,80),
sound(5,220),
repeat,
nl,
nl,
cursor(10,0),
write(" 1 - "),nl,
write(" 2 - BSTUD"),nl,
write(" 3 - " ),nl,
write(" =>"),
readint(X),
clearwindow,
X>0,X<=3,
view(X),
clearwindow,
X=3,!,
removewindow.
/* , .10 */
working(4):-
makewindow(7,62,120,"",5,10,15,60),
sound(5,220),
repeat,
nl,nl,
write("1 - "),nl,
write("2 - bit.dat"),nl,
write("3 - BSTUD "),nl,
write("4 - BSTUD bstud.dat"),nl,
write("5 - "),nl,
write("=>"),
readint(C),
clearwindow,
C>0,C<=5,
load_bd(C),
clearwindow,
C = 5,!,
removewindow.
/* , .10 */
working(5):-
makewindow(8,62,120,"",5,10,15,60),
sound(5,220),
repeat,
nl,nl,
write("1 - "),nl,
write("2 - bit.dat"),nl,
write("3 - BSTUD "),nl,
write("4 - BSTUD bstud.dat"),nl,
write("5 - "),nl,
write("=>"),
readint(I),
clearwindow,
I>0,I<=5,
save_bd(I),
clearwindow,!,
removewindow.
/* , .10 */
working(6):-
makewindow(10,43,120," BSTUD",6,18,8,40),
sound(5,220),
nl,
retractall(_,),
(N,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),
N=N1, Fam1=Fam, Nam1=Nam,
Otch1=Otch, List1=List, Sum=E1+E2+E3,
assertz((N1,(Fam1,Nam1,Otch1),List,Sum)),
fail.
working(6):-
write(" BSTUD ."),
nl,
write(" !"),
nl,nl,
write(" "),
readchar(_),
removewindow,!.
/* , .10 */
working(7):-!.
/* , .10 */
working(_):-
makewindow(16,74,79," ",6,18,8,40),
nl,
write(" 0 7,"),nl,
write(" "),nl,nl,nl,
write(" "),
sound(20,494),
sound(30,392),
readchar(_),
removewindow.
/* , .10 */
correct(1):-
makewindow(4,26,48," ",0,0,25,80),
nl,
accept(N),
X=N,
(X,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),
clearwindow,nl,
write(" : "),write(N),nl,
write(" : "),write(Fam),nl,
write(" : "),write(Nam),nl,
write(" : "),write(Otch),nl,
write("렠 : "),write(Pol),nl,
write(" : "),write(List),nl,nl,
write(" - "),nl,nl,
write(" : "),write(E1),write(" "),
write(" : "),write(E2),write(" "),
write(" : "),write(E3),
nl,nl,nl,
write(" : "),readln(Fam1),
write(" : "),readln(Nam1),
write(" : "),readln(Otch1),
write(" 렠 : "),readln(Pol1),
write(" : "),readln(List1),
write(" - "),nl,
write(" 頠 : "),readln(Ekz1),
write(" 頠 : "),readln(Ekz2),
write(" 頠 : "),readln(Ekz3),nl,
X1=X,
retract((X,(Fam,Nam,Otch),Pol,List,(E1,E2,E3))),
skip(Fam1,Fam,Fam2),
skip(Nam1,Nam,Nam2),
skip(Otch1,Otch,Otch2),
skip(Pol1,Pol,Pol2),
skip1(List1,List,List2),
skip1(Ekz1,E1,E11),
skip1(Ekz2,E2,E22),
skip1(Ekz3,E3,E33),
assertz((X1,(Fam2,Nam2,Otch2),Pol2,List2,(E11,E22,E33))),
!,
mesage,
removewindow.
/* , .11 */
correct(2):-
makewindow(9,26,48," ",0,0,25,80),
repeat,
nl,
write(" : "),readint(K),nl,
write(" : "),readln(F),nl,
write(" : "),readln(N),nl,
write(" : "),readln(O),nl,
write(" 렠 : "),readln(P),nl,
write(" : "), readint(L),nl,
write(" -"),nl,nl,
write(" 頠 : "),readint(E1),nl,
write(" 頠 : "),readint(E2),nl,
write(" 頠 : "),readint(E3),nl,
N1=K,
Fam=F,Nam=N,Otch=O,
Pol=P,List=L,
Ekz1=E1,Ekz2=E2,Ekz3=E3,
assertz((N1,(Fam,Nam,Otch),Pol,List,(Ekz1,Ekz2,Ekz3))),
ask,!,
mesage,
removewindow.
correct(_).
/* , .11 */
view(1):-
makewindow(16,31,26,"p ",0,0,25,80),
nl,nl,
write("╔═══════════════════════════════════════════════════════╗"),nl,
write("║ ║"),nl,
write("╠════╦═════════════════════╦═══╦═════╦══════════════════╣"),nl,
write("║ ║ Π ║ ║ No ║ ║"),nl,
write("║ No ╠═══════╦════╦════════╣║ .╠═════╦══════╦═════╣"),nl,
write("║ ║║ ║║ ║║1 ║ 2 ║3 ║"),nl,
write("╠════╬═══════╬════╬════════╬═══╬═════╬═════╬══════╬═════╣"),nl,
(N,(Fam,Nam,Otch),Pol,List,(E1,E2,E3)),
cursor(Z,_),
cursor(Z,2),write(N),
cursor(Z,5),write("║",Fam),
cursor(Z,18),write("║",Nam),
cursor(Z,30),write("║",Otch),
cursor(Z,43),write("║ ",Pol),
cursor(Z,49),write("║ ",List),
cursor(Z,55),write("║ ",E1),
cursor(Z,62),write("║ ",E2),
cursor(Z,69),write("║ ",E3),
cursor(Z,0),write("║"),
cursor(Z,76),write("║"),
nl,
fail.
view(1):-
write("╚════╩═══════╩════╩════════╩═══╩═════╩═════╩══════╩═════╝"),
nl,
cursor(22,26),
write(" "),
readchar(_),
removewindow.
view(2):-
nl,
makewindow(13,31,26," ",0,0,25,80),
write("╔═══════════════════════════════════════════════════════╗"),nl,
write("║ ║"),nl,
write("╠════╦════════════════════════════════════╦═════╦═══════╣"),nl,
write("║ ║ Π ║ No ║ ║"),nl,
write("║ No ╠════════════╦═══════════╦═══════════╣ .║ ║"),nl,
write("║ ║ ║ ║ ║║ ║"),nl,
write("╠════╬════════════╬═══════════╬═══════════╬═════╬═══════╣"),nl,
(N,(Fam,Nam,Otch),List,Sum),
cursor(Z,_),
cursor(Z,11),write(N),
cursor(Z,14),write("║",Fam),
cursor(Z,27),write("║",Nam),
cursor(Z,39),write("║",Otch),
cursor(Z,52),write("║ ",List),
cursor(Z,58),write("║ ",Sum),
cursor(Z,9),write("║"),
cursor(Z,66),write("║"),
nl,
fail.
view(2):-
write("╚════╩════════════╩═══════════╩═══════════╩═════╩═══════╝"),
nl,
cursor(22,26),
write(" "),
readchar(_),
removewindow.
view(_).
/* */
/* correct(1) working(2), .11 */
accept(N):-
nl,
cursor(10,0),
write(" 1 - "),nl,
write(" 2 - "),nl,
write(" =>"),
readint(X),
acp(X,N).
acp(1,N):-
nl,
write(" : "),nl,
write(" >"),
readint(N),
(P,_,_,_,_),
P=N.
acp(1,N):-
N=0.
acp(2,N):-
nl,
write(" : "),nl,
write(" >"),
readln(L),
(Y,(L,_,_),_,_,_),
N=Y.
acp(2,N):-
N=0.
/* correct(1), .11 */
skip("",Fam,Fam2):-
Fam2=Fam,
!.
skip(Fam1,_,Fam2):-
Fam2=Fam1,
!.
skip1("",Fam,Fam2):-
Fam2=Fam,
!.
skip1(Fam1,_,Fam2):-
str_int(Fam1,Fam3),
Fam2=Fam3,
!.
/* , .12 */
load_bd(1):-
retractall(_,),nl,nl,
write(" :"),
readln(N),
existfile(N),
consult(N,),
ok,
!.
load_bd(1):-
io_error,
!.
load_bd(2):-
retractall(_,),
existfile("bit.dat"),
consult("bit.dat",),
ok,
!.
load_bd(2):-
io_error,
!.
load_bd(3):-
retractall(_,),nl,nl,
write(" :"),
readln(N),
existfile(N),
consult(N,),
ok,
!.
load_bd(3):-
io_error,
!.
load_bd(4):-
retractall(_,),
existfile("bstud.dat"),
consult("bstud.dat",),
ok,
!.
load_bd(4):-
io_error,
!.
load_bd(_).
/* , .12 */
save_bd(1):-
nl,nl,
write(" : "),
readln(N),
save(N,),nl,
ok,
!.
save_bd(1):-
error.
save_bd(2):-
save("bit.dat",),
ok,
!.
save_bd(2):-
error.
save_bd(3):-
nl,nl,
write(" : "),
readln(N),
save(N,),nl,
ok,
!.
save_bd(3):-
error.
save_bd(4):-
save("bstud.dat",),
ok,
!.
save_bd(4):-
error.
save_bd(_).
/* correct(2), .12 */
ask:-
makewindow(10,43,120,"",6,18,8,40),nl,nl,
write(" ? "),nl,nl,
write(" []/[]"),
readchar(Ch),
removewindow,
clearwindow,
Ch='',!.
/* , .12 */
mesage:-
makewindow(17,74,79,"",6,18,8,40),nl,
write(" "),nl,
write(" !"),nl,nl,
write(" "),
readchar(Ch),
removewindow.
/* , .12 */
error:-
makewindow(15,74,79,"",6,18,8,40),
cursor(2,16),
write(""),nl,nl,
write(" "),
sound(70,294),
readchar(_),
removewindow,
!.
io_error:-
makewindow(16,74,79,"",6,18,8,40),
cursor(2,7),
write(" "),nl,nl,
write(" "),
sound(70,294),
readchar(_),
removewindow.
/* */
/* , .12 */
ok:-
makewindow(17,27,90,"",6,18,8,40),
cursor(2,7),
write(" "),nl,nl,
write(" "),
readchar(_),
removewindow.
/* repeat */
repeat.
repeat:- repeat.
.
-
.
, -
predicates .. ,
, -
-
. , -
. -
fail.
. ,
- . :
Working(4)
" ", "" (.. -
""). ,
Repeat ( -
,
makewindow), -
"" . -
.
.
" " -
- . -
,
. ,
, ,
.
, -
.
:
0 - ...
1 -
2 -
3 -
4 -
5 -
6 -
7 -
- -
. -
.
, -
.
.
.
.
:
1 -
2 -
3 -
1 .
:
1 -
2 -
,
1, - 2.
.
( ) -
. -
, .
,
<Enter>. -
-
" ".
2 " " -
. -
.
,
. (
)
, .
( (.) -
)
-
" ".
3 .
.
" " " -
" ,
.
, -
. -
( ),
.
-
. -
:
1 -
2 - BSTUD
3 -
1 ,
(
bit.dat) - -
. , -
. -
.
2
BSTUD. ,
6
4 . -
.
3 .
-
. :
1 -
2 - bit.dat
3 - BSTUD
4 - BSTUD bstud.dat
5 -
2 4 -
Ġ bit.dat
bstud.dat, -
.
.
1 3 , -
. -
,
.
5 .
.
:
1 -
2 - bit.dat
3 - BSTUD
4 - BSTUD bstud.dat
5 -
-
" ".
-
. -
,
. -
.
-
- .
. -
. ,
, , .
.
--
. ,
-
.
. "
"
. " - "
. " -
. 2.3"
___
1. : - . 2. : - , - Bit : ╔
Copyright (c) 2024 Stud-Baza.ru , , , .