Jump to content

Сравнение АЛГОЛА 68 и C++

В С++ нет:

В Алголе 68 нет:

Сравнение операторов присваивания и равенства

[ редактировать ]
Намерение АЛГОЛ 68 С++
Определить константу int x=888; const int x = 888;
Инициализировать переменную int x:=888; int x = 888;
Присвойте значение 888 переменной x. x:=888; x = 888;
Сравните два значения if x = 888 then ... fi if (x == 888) { ... }
Выделить переменную из кучи ref int x = heap int;
или просто:
heap int x;
int* x = new int;
Сравнить адрес двух указателей ref int x, y;
if x :=: y then ... fi
int* x; int* y;

if (x == y) { ... }

Сравнить значение, на которое ссылаются два указателя ref int x, y;
if x = y then ... fi
int* x; int* y;

if (*x == *y) { ... }

Назовите новый тип mode longreal = long real; typedef double longreal;
или (начиная с C++11):
using longreal = double;
Назовите новый тип записи mode cust = struct(string name, address); struct cust { std::string name, address; };
Назовите новый тип объединения mode taggedu = union(string s, real r); union u { std::string s; float f; };
Назовите процедуру или функцию proc f = (real x) real: ( code; result ); float f(float x) { code; return result; }
Параметры процедуры по умолчанию proc p = (union (real, void) in x)void:

    ( real x = (in x|(real x):x|888); code );

void p(float x=888) { code; }
Назовите нового оператора op ↑ = (real x,y) real: x**y;
Установите приоритет нового оператора prio ↑ = 9;
Назначение переменных цепочки a:=b:=c:=d; a = b = c = d;
Оператор смещения - АЛГОЛ 68C только a:=:=b:=:=c:=:=d; a = b; b = c; c = d;
Добавить «substr» к переменной str str +:= "substr"; str += "substr";
Префикс «substr» к переменной str "substr" +=: str; str = "substr" + str;

Примеры кода

[ редактировать ]

Декларация Союза и использование

[ редактировать ]

Присвоение значений в A68 union переменная автоматическая, тип «прикреплен» к переменной, но вытащить значение обратно синтаксически неудобно, поскольку условие соответствия требуется .

Пример Алгола 68:

 union(int, char) x:=666;
 printf(($3d l$, (x|(int i):i) ))

Пример С++:

  union { int i; char c; } x = { 666 };
  std::cout << x.i << std::endl;

Конечным эффектом «маркировки типов» является то, что строгая типизация Algol68 «половина» вторгается в union.

Объявление режима

[ редактировать ]

Новый режим (тип) может быть объявлен с использованием mode декларация:

int max=99;
mode newtype = [0:9][0:max]struct (
   long real a, b, c, short int i, j, k, ref real r
);

Это имеет тот же эффект, что и следующий код C++:

const int max=99;
typedef struct { 
    double a, b, c; short i, j, k; float& r;
} newtype[9+1][max+1];

Обратите внимание, что в АЛГОЛе 68 слева от равенства появляется только имя нового типа, и, что особенно важно, конструкция создается (и может быть прочитана) слева направо без учета приоритетов.

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5be696d0a4072eb3d6efb42638b76a18__1704740700
URL1:https://arc.ask3.ru/arc/aa/5b/18/5be696d0a4072eb3d6efb42638b76a18.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of ALGOL 68 and C++ - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)