UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
lfCW n l.
fBTable 3:fP Built-in Constants
.sp .5
DEG 57.29577951308232087680 @180/ [email protected], degrees per radian
E 2.71828182845904523536 @[email protected], base of natural logarithms
GAMMA 0.57721566490153286060 @[email protected], Euler-Mascheroni constant
PHI 1.61803398874989484820 @( sqrt 5 +1)/[email protected], the golden ratio
PI 3.14159265358979323846 @[email protected], circular transcendental number
.ТЕ
.ix table~of [hoc] constants
.NH
Statements and Control Flow
.PP
.I Hoc
statements have the following grammar:
.DS
.I
stmt: expr
| variable = expr
| procedure ( arglist )
| while ( expr ) stmt
| if ( expr ) stmt
| if ( expr ) stmt else stmt
| { stmtlist }
| print expr-list
| return optional-expr
stmtlist: fR(nothing)fI
| stmlist stmt
.R
.DE
An assignment is parsed by default as a statement rather than
an expression, so assignments typed interactively
do not print their value.
.PP
Note that semicolons are not special to
.ix [hoc] input~format
@[email protected]: statements are terminated by newlines.
This causes some peculiar behavior.
The following are legal
.IT if
statements:
.DS
.ft CW
if (x < 0) print(y) else print(z)
if (x < 0) {
print(y)
} else {
print(z)
}
.ft
.DE
In the second example, the braces are mandatory:
the newline after the
.I if
would terminate the statement and produce a syntax error were
the brace omitted.
.PP
The syntax and semantics of @[email protected]
control flow facilities are basically the same as in C.
The
.I while
and
.I if
statements are just as in C, except there are no @[email protected] or
@[email protected] statements.
.NH
Input and Output: @[email protected] and @[email protected]
.PP
.ix [hoc] [read]~statement
.ix [hoc] [print]~statement
The input function @[email protected], like the other built-ins,
takes a single argument. Unlike the built-ins, though, the argument
is not ал expression: it is the name of a variable.
The next number (as defined above) is read from the standard input
and assigned to the named variable.
The return value of @[email protected] is 1 (true) if a value was read, and 0 (false)
if @[email protected] encountered end of file or an error.
.PP
Output is generated with the ©print© statement.
The arguments to @[email protected] are a comma-separated list of expressions
and strings in double quotes, as in C.
Newlines must be supplied;
they are never provided automatically by @[email protected]
.PP
Note that @[email protected] is a special built-in function, and therefore takes
a single parenthesized argument, while @[email protected] is a statement that takes
a comma-separated, unparenthesized list:
.DS
.ft CW
while (read(x)) {
print "value is ", x, "n"
}
.ft
.DE
.NH
Functions and Procedures
.PP
Functions and procedures are distinct in @[email protected],
although they are defined by the same mechanism.
This distinction is simply for run-time error checking:
it is an error for a procedure to return a value,
and for a function @[email protected] to return one.
.PP
The definition syntax is:
.ix [hoc] function~definition
.ix [hoc] procedure~definition
.DS