-->

UNIX — универсальная среда программирования

На нашем литературном портале можно бесплатно читать книгу UNIX — универсальная среда программирования, Керниган Брайан Уилсон-- . Жанр: ОС и Сети / Интернет. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
UNIX — универсальная среда программирования
Название: UNIX — универсальная среда программирования
Дата добавления: 16 январь 2020
Количество просмотров: 434
Читать онлайн

UNIX — универсальная среда программирования читать книгу онлайн

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

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями

shell.

 

Для программистов-пользователей операционной системы UNIX.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

Таблица П.2.2. Встроенные функции

Логические выражения имеют значения 1 (истина) и 0 (ложь). Как и в Си, любое ненулевое значение означает истину. При всех операциях над числами с плавающей точкой сравнения на равенство могут быть неточными. Кроме того,

hoc
имеет несколько встроенных констант, приведенных в табл. П.2.3.

DEG 57.2957795130823208768 180/π, градусы на радианы
E
2.71828182845904523536 е, основание натуральных логарифмов
GAMMA
0.57721566490153286060 γ, константа Эйлера-Масчерони
PHI
1.61803398874989484820 (√5+1)/2, золотое сечение
PI
3.14159265358979323846 π, круговое трансцендентное число

Таблица П.2.3. Встроенные константы

Операторы и поток управления

Операторы

hoc
имеют следующую грамматику:

оператор : выражение

 | переменная выражение

 | процедура (список, аргументов)

 | while (выражение) оператор

 | if (выражение) оператор

 | if (выражение) оператор else оператор

 | список_операторов

 | print список_выражений

 | return возможное_выражение

список_операторов : (пусто)

 | список_операторов оператор

Присваивание распознается по умолчанию как оператор, а не как выражение, поэтому после ввода в диалоге присваиваний их значения не печатаются.

Отметим, что символ

;
не является для
hoc
специальным: оператор оканчивается символом перевода строки. Это обусловливает некоторые особенности. Ниже показан допустимый оператор
if
:

if (x < 0) print(у) else print (z)

if (x < 0) {

 print(y)

} else {

 print(z)

}

Во втором примере скобки не обязательны: символ перевода строки после

if
оканчивал бы оператор и вызывал бы синтаксическую ошибку там, где опущены скобки.

Синтаксис и семантика средств управления в

hoc
в основном те же, что и в Си. Одинаковы также
while
и
if
, однако в
hoc
нет операторов
break
и
continue
.

Ввод и вывод:
read
и
print

Функция ввода

read
(читать) имеет, подобно другим встроенным функциям, один аргумент: однако он не является выражением: это имя переменной. Следующее число, как определено выше, читается из стандартного входного потока и присваивается поименованной переменной. Функция
read
возвращает значения 1 (истина), если величина была прочитана, и 0 (ложь), если
read
встретила конец файла либо ошибку.

Выходной поток порождается оператором

print
. Аргументы
print
составляют разделяемый запятыми список выражений и строк, взятых в кавычки, как в Си. Символы перевода строки должны добавляться:
print
их никогда автоматически не вводит.

Отметим, что

read
есть специальная встроенная функция и поэтому получает один аргумент в скобках, тогда как
print
оператор, получающий список, разделяемый запятыми без скобок:

while (read (x)) {

 print "value is", x, "n"

}

Функции и процедуры

Функции и процедуры в

hoc
различаются, хотя и определены одним и тем же механизмом. Это различие введено просто для контроля ошибок во время исполнения: возврат значения является ошибкой для процедуры, для функции же ошибочно не возвращать значения.

Синтаксис определения таков:

function: func имя () оператор

procedure: proc имя() оператор

Здесь имя может быть именем некоторой переменной встроенные функции исключаются. Определение, вплоть до открывающейся скобки оператора, должно помещаться на одной строке, как в приведенном выше операторе

if
.

В отличие от Си тело функции или процедуры может быть любым оператором, не обязательно составным (в скобках). Поскольку символ ; не имеет своего значения в

hoc
, пустое тело процедуры формируется пустой парой скобок.

Функции и процедуры при вызовах могут получать аргументы, отделенные запятыми. На аргументы ссылаются так же, как в

shell
:
$3
относится к третьему, индексируемому, начиная с единицы, аргументу. Они передаются значениями и внутри функций семантически эквивалентны переменным. Ссылка на аргумент с помощью числа, превышающего число аргументов, переданных процедуре, считается ошибкой. Контроль ошибок динамический, поскольку подпрограмма может иметь переменное число параметров, если ее начальные аргументы влияют на это число (см. функцию
printf
в Си).

Функции и процедуры могут быть рекурсивными, но стек имеет ограниченную глубину (около сотни вызовов).

Примеры

• Ниже показано определение функции Аккерманна в

hoc
:

$ hoc

time ack() {

 if ($1 == 0) return $2+1

 if ($2 ==0) return ack($1 - 1, 1)

 return ack($1 - 1, ack($1, $2 - 1))

}

ack(3,2)

 29

ack(3,3)

Перейти на страницу:
Комментариев (0)
название