Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

 case EOF:

if (moreinput)

goto Again;

d.val = var->u.val = 0.0;

break;

 case 0:

execerror("non-number read into", var->name);

break;

 default:

d.val = 1.0;

break;

 }

 var->type = VAR;

 push(d);

}

Inst *code(f) /* install one instruction or operand */

 Inst f;

{

 Inst *oprogp = progp;

 if (progp >= &prog[NPROG])

execerror("program too big", (char*)0);

 *progp++ = f;

 return oprogp;

}

execute(p)

 Inst *p;

{

 for (pc = p; *pc != STOP && !returning; )

(*((++pc)[-1]));

}

3.7.4

double

proc double {

 if ($1 > 1) {

double($1/2)

 }

 print($1)

}

double(1024)

3.7.5

fac

func fac {

 if ($1 <= 0) return 1 else return $1 * fac($1-1)

}

3.7.6

fac1

func fac if ($1 <= 0) return 1 else return $1 * fac($1-1)

fac(0)

fac(7)

fac(10)

3.7.7

fac2

func fac {

 if ($1 <= 0) {

return 1

 }

 return $1 * fac($1-1)

}

i=0

while(i<=20){

 print "factorial of ", i, "is ", fac(i), "\n"

 i=i+1

}

3.7.8

fib

proc fib {

 a = 0

 b = 1

 while (b < $1) {

print b

c = b

b = a+b

a = c

 }

 print "\n"

}

3.7.9

fib2

{

 n=0

 a=0

 b=1

 while(b<10000000){

n=n+1

c=b

b=a+b

a=c

print(b)

 }

 print(n)

}

3.7.10

fibsum

proc fib{

 a=1

 b=1

 c=2

 d=3

 sum = a+b+c+d

 while(d<$1){

e=d+c

print(e)

a=b

b=c

c=d

d=e

sum=sum+e

 }

 print(sum)

}

fib(1000)

3.7.11

fibtest

proc fib {

 a = 0

 b = 1

 while (b < $1) {

c = b

b = a+b

a = c

 }

}

i = 1

while (i < 1000) {

 fib(1000)

 i = i + 1

}

3.7.12

hoc.h

typedef struct Symbol { /* symbol table entry */

 char *name;

 short type;

 union {

double val; /* VAR */

double (*ptr); /* BLTIN */

int (*defn); /* FUNCTION, PROCEDURE */

char *str; /* STRING */

 } u;

 struct Symbol *next; /* to link to another */

  • Читать дальше
  • 1
  • ...
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: