> А мой вариант на Си не структурный?  У него один вход и один выход.
> Что и есть по вашему определению структурность.  Или отреклись уже? :)

Формально выход один, так что по сформулированному мной определению, да, 
структурно.

> При этом у меня процедура вроде правильно работает.  А ваша на
> Алголе-68 ошибится индексированием — операция and в Алголе-68 не ленивая :)

Спасибо, поправил. :-)

proc sift = (ref [] T a, int n, int p) void: (
  int j;
  T x := a[p];
  while (
    if j := 2*p + 1; (j + 1 < n | a[j] < a[j + 1] | false) then  j +:= 1;
    (j < n| a[j] > x | false)
  ) do
    a[p] := a[j]; p := j
  od;
  a[p] := x
)

Заодно понял, для чего нужна сокращённая запись if.

-----Original Message-----
From: Boyko Bantchev [mailto:boyk...@gmail.com] 
Sent: Thursday, August 10, 2017 11:57 AM
To: refal@botik.ru
Subject: Re: FW: Рефал умер?

> Красота. И никаких break’ов и goto. Структурное программирование :-)

А мой вариант на Си не структурный?  У него один вход и один выход.
Что и есть по вашему определению структурность.  Или отреклись уже? :)

При этом у меня процедура вроде правильно работает.  А ваша на
Алголе-68 ошибится индексированием — операция and в Алголе-68 не ленивая :)

Ответить