Категории
Самые читаемые
ChitatKnigi.com » 🟢Компьютеры и Интернет » Интернет » UNIX — универсальная среда программирования - Керниган Брайан Уилсон

UNIX — универсальная среда программирования - Керниган Брайан Уилсон

Читать онлайн UNIX — универсальная среда программирования - Керниган Брайан Уилсон
1 ... 163 164 165 166 167 168 169 170 171 ... 187
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

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

1 ... 163 164 165 166 167 168 169 170 171 ... 187
Перейти на страницу:
Открыть боковую панель
Комментарии
Ксения
Ксения 25.01.2025 - 12:30
Неплохая подборка книг. Прочитаю все однозначно.
Jonna
Jonna 02.01.2025 - 01:03
Страстно🔥 очень страстно
Ксения
Ксения 20.12.2024 - 00:16
Через чур правильный герой. Поэтому и остался один
Настя
Настя 08.12.2024 - 03:18
Прочла с удовольствием. Необычный сюжет с замечательной концовкой
Марина
Марина 08.12.2024 - 02:13
Не могу понять, где продолжение... Очень интересная история, хочется прочесть далее