Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

BS(1)

��������
bs - ����������/������������� �������� ��������� ��������

���������

bs  [���� [�������� ...]]

��������
���� bs - ���������� ������� ������� � �������-4 � ���������� ������������ �� ����� C. ���� bs ������ ��� ��� ����� ����������������, � ������� ����� ���������� ��� �� �����, ��� � ���������� � ���������� �������� ����������. ������������ �� ������� ������ � ����������� � ������� � ���������� ��������������. ���������� �������, ��������� trace � dump, � ����� ��������� ��������� �� ������� ���������� �������� ������������ ��������. ����� ����, ����� ���������� ������������� ���������; ���������� ������� ����� ������������� �� ����, ��� �������� ������� �������, � ��������.

���� � ��������� ������ ������ �������� ����, ���� ���������� �� ���� � ������������ � ���������. �� ���������, ���������, ����������� �� �����, ������������� ��� ������������ ����������. ���������, ��������� � ���������, ������ ����������� ���������� (��. ���� ��������� compile � execute). ���� ��������� �������� - �� ������������, ��������� ���������-��������� ����������.

��������� �� ����� bs ������� �� �����. �������� ����������� �������� \ � ����� ������. ���� ��������� ������ ���������� ����:

     ��������
     �����  ��������

����� - ��� ��� (��. ����), �� ������� ������� ���������. ����� � ���������� ����� ����� ���� � �� �� �����.

�������� ����� bs - ��� ��������� ��� �������� �����, �� ������� ������� 0 ��� ����� ���������. ��������� �������� ����� (clear, compile, !, execute, include, ibase, obase � run) ������ �����������, ��� ������ ��� ���������������.

��������� ����������

���������
����� ���������� ��������� �������� ��� �������� ������� (��������, ������������ ��� ����� �������). ������ ���������� ����, ����� �������� ����� ����������.
break
����� �� ������ ����������� for/while �����.
clear
����������� ����������. �������� ������� ���� � ������� ���������������� ���������.
compile [���������]
����������� ����������. ��������������� ����������� ��������� (�� �������� �� �������� ������������� ����� ������������ ����������). �������������� ��������� ����������� � ������������ � �������� ����� ����� ��� ������������ �����. � ��������� ������ ����������� clear.
continue
������� � ��������� �������� �������� for/while �����.
dump [���]
���������� ����� � ������� �������� ���� ����������� ����������. ���� ������� ����� ���, ���������� ������ � ������ ����������. ����� ������ ��� ���������� ��������� ����� ���������� ��������� � (��������) ����������� ���������������� �������.
exit [���������]
��������� �� ��������� �������. ��������� ������������ � �������� ���� ����������.
execute
�������� ����� ���������� �� ����������� (���������� ���� ����������� ������). ��� ������� �� �������� ���������� ����������� ���������� (��. ���� ������� run).
for ��� = ��������� ��������� ��������
for ��� = ��������� ���������
...
next

for ���������, ���������, ��������� ��������
for ���������, ���������, ���������
...
next ���������� ��������� �������� (������ �����) ��� ������ ���������� (������ �����) ��� ����������� ���������� � ��������� ������. ���������� ��������� �������� ������� ���������, ����� ��� ������������� �� ������� � ������ �����, ���� �� ���������� �������� ������� ���������. ������� � ��������� ������ ��������� ��� ���������, ����������� ��������. ������ �� ��� - �������������, ������
������� (���� �������, �� ����������), � ������
�������� ��� �������� � ��������� �������� (������ ����������).
fun f([a, ...]) [v, ...]
...
nuf
���������� ���, ��������� � ��������� ���������� ���������� ������������� �������. ����������� �� 10 ���������� � ��������� ����������. ��� ����� �� ����� ���� ���������, � ����� �� ����� ���� ������� �� ����� � ������. ����������� ������� �� ����� ���� ����������.
freturn
��������������� � ��������� ���������� ���������������� �������. ��. ���� �������� ������ (?). ���� ����� �����������, freturn ���������� 0. ����� ����� �������, freturn ������������ � ���������������� ��������� (��������, �������� �������� �� ��������� �������).
goto ���
�������� ���������� �� ���������� � ������ �������� � ��������������� ������.
ibase N
���������� ��������� ������� ��������� ��� ����� ����� ������ N. �������������� ������ ��������� �������� N: 8, 10 (�� ���������) � 16. ����������������� �������� 10-15 �������� ��� a-f. ������ ������ ������ ����� (�� ���� f0a ������� ������� ��� 0f0a). Ibase (�, ����, obase) ����������� ����������.
if ��������� ��������
if ���������
...
[else
...]
fi
��������� �������� (������ �����) ��� ������ ���������� (������ �����), ���� ��������� ���������� ��������� ���������. ������� �������� 0 � "" (������) ��������� ��������. �� ������ ����� ����������� �������������� ������ ����������, ������� ������ �����������, ����� �� ����������� ������ ������. ������������ ��������, ���������� � ��� �� ������, ��� � else, - ��� if; ������ ������ fi ����� ���� � ��� �� ������, ��� � fi. �������������� ���������� else � if � elif. ����� ������� ������������������ if ... elif ... [ else ... ], ��������� ������ ���� fi.
include ���������
��������� ������ ���������� ��� �����. ���� ������ ��������� bs-���������. ����� ��������� ���������� ������ ������������� ���������. ��������� include �� ����� ���� ����������.
obase N
���������� ��������� ������� ��������� ��� ������ ����� ������ N (��. ���� ibase).
onintr �����
onintr
����������� ��������� ����������. � ������ ����� ����� ���������� ���������� ���������� �� ��������� �����, � �������� ���, ��� ���� �� � ������ ���������� ��� �������� �������� goto. ����� ������ ��������� ���������� ������������� ������� ����������. �� ������ ����� ���������� �������� ���������� ����������.
return [���������]
��������� ��������� � ���������� ��� �������� � �������� ���������� ������ �������. ���� ��������� �� �������, ������������ 0.
run ������������� ��������� ��������� �����. �������� ���������� �� ������ ���������������� ��������. ���� �������� run ���������� � �����, �� ������ ���� ��������� ����������.
stop ���������� ���������� ���������������� ����������. Bs ������������ � ����� ������������ ����������.
trace [���������]
���������� ������������ �������. ���� ��������� �� ������� (��� ����� ������� ��������), ����������� �����������; � ��������� ������ ���������� �������� ������� ���������������� ������� � ��������� �� ���. ������ ������� ��������� �� ������� �������� ���������, ���������� � ��������� trace.
while ��������� ��������
while ���������
...
next
�������� while ���������� for �� ����������� ����, ��� ����������� ������� ����������� �����.
! ������� shell'�
��������� ������� shell'�.
# ...
���� �������� ������������. �� ������������ ��� ��������� � ��������� ������������.

��������� ���������

��� ��� ������������ ��� ����, ����� ������� ����������. ����� ������� �� ����� (��������� ��� ��������), �� ������� ����� ��������� ����� � �����. ������ ������ ����� �������� � ����� �������� ���������. �� ����������� ����, �� �������� � ���������� fun, ��� ����� �������� �����������. ���������� ���� ����� ���� ����� (������������ ������� ��������) � ������� ��������; ����� ����, ����� ����� ���� ������� �� �����/������ (��. ���� ���������� ������� open).
��� ([��������� [, ���������] ...])
� �������� ����� ���������� �� �����, �� ������� ������� ��������� � �������, ����������� ��������. �� ����������� ���������� ������� (��������� ����), ��� ������ ���� ���������� ��� ������ ��������� fun. ��������� ������� ���������� �� ��������.
��� [��������� [, ���������] ...]
����� ��������� ������������ ��� ��������� � �������� ��� �������� (��. ���� �������� ���������� ������� ��� ������ � ���������). ��� �������� ������ ��������� ��������� �� ������ � ������������ ��� ������������ ��� �����. �������������� ��������� ������������� ������������ ����� (�� ���� ����� ������������� � ��� �� ������, ��� � ���); ������ a[1,2] � a[1][2] ���������� ���� � �� ��. �������� ��������� ��������� ������ ���� � �������� �� 0 �� 32767.
�����
����� ������������ ��� ������������� ������������ ��������. ����� ������������ � ����� �������� � �������� �����, ���������� ����� (�� �����������) �, ��������, ���������� ���������, ��������� �� ������� e, �� ������� ����� ��������� �������������� �� ������.
�������_��������
�������_�������� �������������� ������� ". ���� \ ��������� ��������� � ������� ��������� �������: ������� (\"), ������� ������ (\n), ������� ������� (\r), ������ (\b) � ��������� (\t). � ��������� ������� ������ \ ���������� ��� ����.
(���������)
������ ������������ ��� ����, ����� �������� ������� ����������.
(���������, ��������� [, ��������� ...]) [���������]
��������� ��������� ������������ ��� ������, ����� ������� ���� ������� �� ������� � ������� ������ ������ ���������, ����������� ��������. �������� ������ ���������� �����, ������� � ����. ���������:
(False, True)[a == b]
����� �������� True, ���� a ����� b.
? ���������
�������� ������ ��������� "�����" ���������� ���������, � �� ��� ��������. �� ������������� ������������ ��� �������� ������ �� ����� ����� (��. ���� �������), ���������� ���������� ���������� ������� � ��� �������� �������� �� ������������ ������������� ������� (��. freturn). "������� �� ����������", ��������������� ������ ��������� (��������, ����� �����), �������� � ������������ �������� � ������ ���������� ������ � ��������� ��������� ���������� ������������ ��� ��������� ����� ������ ����������� �������.
- ���������
����������� �������� �������� ��������� � �������� ������.
++ ���
����������� �� ������� �������� ���������� (��� �������� �������). ����������� �������� ����� ��������.
-- ���
��������� �� ������� �������� ����������. ����������� �������� ����� ��������.
! ���������
���������� ��������� �������� ���������. ������ ���������, ����� ��������� ����� ���� ���������� ��� ������ �� ���������� ������� shell'�.
��������� �������� ���������
��������� � ��������������� �������� ���� ���������� ������������ ����� �����������, ������� ����������� ���������, ����������� �������. �� ����������� ������������, ������������ � �������� ���������, ����� ���, ��� ����������� ��������, ��� �������� ������������� � ������ ����.

�������� �������� (����������� �� ����������� ����������):

=
�������� ������������. ����� ������� ������ ���� ������ ��� ��������� �������. ����������� �������� ������ �������. ���������������� ������������ ����������� ������ ������; ��� ������ �������� - ����� �������.
_ (�������������).
�������� ������������.
& |
����������� & (���������� �) �������� 0, ���� �����-������ �� �� ���������� - 0; ��������� ����� 1, ���� ��� ��������� ���������; ����������� | (���������� ���) �������� 0, ���� ��� ��������� ����� ����; ��������� ����� 1, ���� �����-������ �� ���������� ���������. ��� �������� �������� ������ ������� �������� ��� 0.
< <= > >= == !=
�������� ��������� (������, ������ ��� �����, ������, ������ ��� �����, �����, �� �����) ���������� 1, ���� �� ��������� ��������� � ��������� ���������. � ��������� ������ ��� ���������� 0. ��������� ���������, �������� a>b>c (��� ������������ a>b & b>c). ���� ��� ��������� �������� ��������� ��������, ����������� ������������������ ���������������.
+
�������� � ���������.
* / %
���������, ������� � �������.
^
���������� � �������.

���������� �������
������ � �����������

arg(i)
�������� i-�� ������������ ��������� �������� ������ ������ �������. �� ������� ������ arg ���������� i-�� �������� ��������� ������ (arg (0) ���������� bs).
narg( )
���������� ����� ���������� ����������. �� ������� ������ ������������ ����� ���������� ��������� ������.

�������������� �������

abs(x)
���������� �������� x.
atan(x)
���������� x. �������� ����� - �/2 � �/2.
ceil(x)
����������� �����, �� ������� x.
cos(x)
������� x (���� �������� � ��������).
exp(x)
���������� x.
floor(x)
���������� ����� �����, �� ������������� x.
log(x)
����������� �������� x.
rand( )
���������� �������������� ����� 0 � 1 ��������� �����.
sin(x)
����� x.
sqrt(x)
���������� ������ �� x.

�������� � ��������� ��������

size(s)
������ (����� � ������) ������� s.
format(f, a)
���������� ����������������� �������� a. ��������������, ��� f - ��� ������������ ������� � ������ printf(3S). ������������� ������������ ������ ��������� ���� �������������� �������: %...f, %...e � %...s.
index(x, y)
����� ������� ������� � x, ������������ � �����
���� �������� �� y. ���� ������ ���, ������������ 0.
trans(s, f, t)
������������ ������� ��������� s � ��������� f, � �������� �� �� �������, ������� � ��� �� ������� ������� t. ������� ���������, ������� �� ����������� � f, ���������� � ���������. ���� f �������, ��� t, ������� ���������, ������� �������������� � ���������� ������ f, �� ���������� � ���������.
substr(s, ������, ������)
���������� s � ��������� ������� � �������.
match(�������_��������, ������)
mstring(n)
������ ����� ���������, ����������� ���������� ���������� ������� ed(1). ������� ., [, ] (���������� ������), ^, * � $ �������� ������������. ������� mstring ���������� n-�� (1 n 10) ���������� �������������� �������_��������, ������� ������� ������������ � ���������� �������, ������������ ����� ������ �������� \( � \), �� ���������� ��������� � match. ������� �������������� � ������� �������_�������� (��� ���� �� ��� ��� ���������� �������� ^). ������� match ���������� ����� ������� �������������� ��������. ������:
match("a123ab123", ".*\([a-z]\)") == 6
mstring(1) == "b"

������ � �������

open(���, ����, ���)
close(���)
�������� ��� ������ ���� ������ ���������� � ������ bs (���������� ��� ������� ��������). ��� ��������� � ������� open � �������� ��������� ���� ����� ��������:
  1. 0, 1, ��� 2, ��� �������� ����������� ����, ����������� ����� � ����������� �������� ��������������.
  2. ������� ��������, �������������� ��� �����.
  3. ������� �������� � ! � ������, �������������� �������, ������� ������ ���� ��������� (����������� sh -c).
�������� ��� ������ ���� ����� �� ���������: r (������), w (������), W (������ ��� �������� ������), a (���������). ����� ���� ��� ��������� ������� close, ��� ���������� ������� ����������. ��������� ���������� ������:
open("get", 0, "r")
open("put", 1, "w")
open("puterr", 2, "w")
������� ��������� ����.
access(s, m)
��������� ����� access(2).
ftype(s)
���������� �������������� ��������� ���� �����: f ��� �������� �����, p ��� ������������ ������, d ��� ��������, b ��� �������� ����������, c ��� ����������� ����������.

�������

table(���, ������)
������� � bs - ��� ���������� ������ � ������������� ��������. "���������" (�� �������� ����� �������) �������� ������� �������� (����� ������������� � �������). �������� ��� ������ ���� ������ ���������� � ������ bs (���������� ��� ������� ��������). �������� ������ ������������� ����������� ����� ���������, ������� ������ ���� ���������. Bs �������� ��������� �� ������ � ��������� ������, ����� ������� �������������.
item(���, �����)
key( )
������� item ������������ ������ � ��������� ������� �� �� ������� (������ ��������� �������� ������ �� ��������� ���������������� ��������). ����� ����, ��� ������� item ��������� �������� �������� �������, ����������� ������� key ����� "������" (����) ����� ��������. �������� ��� ������ ����� � �������. ��� ��� ������ ������� ������� �� ����������, ���� ������������ �������� ������, ����� ���������� ����� �������, ��������:
table("t", 100)
 ...
 
# ���� ��������� ���������� word �������� �����,
# ��������� ��������� ��������� �������
# � �������� ����� �����:
++t[word]
 ...
 
# ���������� ���� ����/��������:
for i = 0, ?(s = item(t, i)), ++i  if key() \
 put = key()_":"_s
iskey(���, �����)
���������, ���� �� ���� ����� � ������� ���; ���������� 1, ���� ����, � 0, ���� ���.

������ �������

eval(�������_��������)
��������� ���� �������� ��� ��������� � ������ bs. ��� ������� ������ ��� �������������� �������� ����� �� ���������� �������� �����. Eval ����� ����� �������������� ��� ������ ����� ��������� ���������. ��������, ����� ���������� ����������
name = "xyz"
eval("++"_name)
�������� ���������� xyz ���������� �� 1. ����� ����, ������� eval � �������������� ��������� ������ ��������� ��������� ���������� ��������� ��������. ����������� ���������� ���������
?eval("open(\"X\", \"XXX\", \"r\")")
����� 0, ���� ����� � ������ "XXX" ��� (������ ���������� ���������� ��������� ������������). ��������� �������� ��������� ������� �� ����� L (���� ��� ����������):
label="L"
if !(?eval("goto "_label)) puterr = "no label"
plot(������, ���������)
��������� ����� ��� ���������, ������� �������������� ���������� tplot(1G). ��������� ��������� �������:
plot(0, ��������)
����������, ��� ���������� ����� ��������� plot ������ ������������ ��������� tplot(1G) � ���������� -T��������.
plot(4)
"�������" �������.
plot(2, �����)
������ ����� �� ������� �����.
plot(3, x1, y1, x2, y2)
������ ������� ����� (x1,y1) � (x2,y2).
plot(4, x, y, r)
������ ���� � ������� (x,y) � �������� r.
plot(5, x1, y1, x2, y2, x3, y3)
������ ���� � ������� (x1,y1) � ������� (x2,y2) � (x3,y3).
plot(6)
�� ����������.
plot(7, x, y)
������ ����� (x,y) �������.
plot(8, x, y)
������ ������� �� ������� ����� � (x,y).
plot(9, x, y)
������ ����� � (x,y).
plot(10, �����)
������������� �������� ����� ���������� �����.
plot(11, x1, y1, x2, y2)
������������� ����� ������ ���� ������� ��������� � (x1,y1), � ������ ������� - � (x2,y2).
plot(12, x1, y1, x2, y2)
����������, ��� ��������������� x (y) ���������� ������ ���������� �� x1 (y1) � ����� ������������ � x2 (y2) ����� ���, ��� ��� ������������. �������������� ������� - plot(12, 1.0, 1.0, 0.0, 0.0).
��������� ������� ��������� �� �� ���� ���������. ��� �������, ����� 0 � 12, ����������� �� ������ �������� �������� ��������� tplot(1G). ����� �������� �������������� ����������, ��. plot(4).
last( )
� ������ ������������ ���������� ���������� ��������� ����������� ��������.

�������

  1. ������������� bs � �������� ������������:
    $ bs
    #  ���������� (� ������), ������� ����
    #  �������� �� �����������.
    186000 * 5280 * 12 / 1e9
    11.78496
    
    #  ������� ������� (�� 6% �� 5 ���
    #  � 1000 ��������).
    int = .06 / 4
    bal = 1000
    for i = 1 5*4  bal = bal + bal*int
    bal - 1000
    346.855007
    
    
    exit
  2. ����� ��� �������� bs-��������:
    #  �������������:
    var1 = 1
    open("read", "infile", "r")
    ...
    
    #  ����������:
    while  ?(str = read)
    ...
    next
    #  ����������
    close("read")
    ...
    
    #  ��������� ����������� �������� (exit ��� stop):
    exit
    #  ��������� ������� ������
    run
    
  3. ������� �����/������:
    #  ���������� "oldfile" � "newfile".
    open("read", "oldfile", "r")
    open("write", "newfile", "w")
    ...
    while ?(write = read) ...
    ...
    # ������� "read" � "write":
    close("read")
    close("write")
    
    #  ����� ����� ���������.
    open("ls", "!ls *", "r")
    open("pr", "!pr -2 -h 'List'", "w")
    while ?(pr = ls)  ...
    ...
    
    #  ������� �����:
    close("ls")
    close("pr")
    

��. �����
ed(1), sh(1), tplot(1G).
access(2), printf(3S), stdio(3S), plot(4) � ����������� ������������.

����� ������ �������� �������������� ������� ��. � ������� 3M ����������� ������������ (��� ���������� � ������� ������������ ������� pow, ��������� � exp(3M); ����� �����/������ ������������ �����������.

��������
"���������" �������������������� ��������� ������� �������� ������� �� ���� �������� � ������������� ������ 43 � 300, ������� ����������� ������ ������ ��� ����/�������� ����� �������� �������.

� ������� �������� ������ ���������� ���� #, ��������� �� ������ ������� �����������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT