ALGOL

Sejarah

ALGOL dibangunkan secara bersama oleh komitee pakar sains komputer Eropah dan Amerika dalam perjumpaan pada tahun 1958 di ETH Zurich, yang menghasilkan Preliminary Report on the International Algorithmic Language. Lapuran ini menjalani beberapa perubahan sebelum menjadi (‘’Revised Report’’) dari mana kebanyakan perlaksanaan ALGOL diasaskan. Hasilnya, ALGO dan "ALGOL" awal yang lain mempunyai sintak yang amat berlainan dengan ALGOL 60. Antar alain, ia menetapkan tiga sintak berlainan: sintek rujukan, sintek penerbitan, dan sintek perlaksanaan. Sintek berlainan dibenarkan bagi menggunakan nama kata kunci berlainan dan biasa bagi titik perpuluhan (koma vs. titik) bagi bahasa berlainan.
Beberapa bahasa yang dimajukan dari lapuran Zürich termasuk BALGOL, MAD (Michigan Algorithm Decoder) dan NELIAC.

Contoh kod (ALGOL 60)

(Cara teks tebal ditulis bergantung kepada perlaksanaan, contoh. 'INTEGER' (termasuk tanda pembuka kata) bagi integer.)
procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m 
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
    y := 0; i := k := 1;
    for p:=1 step 1 until n do
    for q:=1 step 1 until m do
        if abs(a[p, q]) > y then
            begin y := abs(a[p, q]);
            i := p; k := q
            endend Absmax
Ini adalah contoh bagi menghasilkan jadual dengan menggunakan Elliott 803 ALGOL. .

 FLOATING POINT ALGOL TEST'
 BEGIN REAL A,B,C,D'

 READ D'

 FOR A:= 0.0 STEP D UNTIL 6.3 DO
 BEGIN
   PRINT PUNCH(3),££L??'
   B := SIN(A)'
   C := COS(A)'
   PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'
 END'
 END'
PUNCH(3) output kepada pencetak dan bukannya penebuk tape.

SAMELINE menghalang carriage return + line feed yangbiasanya dicetak antara pernyataan.

ALIGNED(1,6) mengawal format output dangan 1 digit sebelum dan 6 selepas titik perpuluhan.

Timeline: Hello dunia

Variasi dan ketiadaan pemindahan bagi aturcara dari satu perlaksanaan dengan yang lain dapat ditonjulkan dengan mudah melalui aturcara hello dunia.

ALGOL 58 (IAL)

ALGOL 58 tidak mempunyai kemudahan I/O.

keluarga ALGOL 60

Oleh kerana ALGOL 60 tidak mempunyai kemudahan I/O, tidak “Hello world” program terdapat boleh pindah dalam ALGOL. Aturcara berikut boleh (dan masih akan) kompil dan dilaksanakan pada perlaksanaan ALGOL bagi komputer kerangka Unisys A-Series, dan merupakan kod ringkas diambil dari this site.

BEGIN
  FILE F(KIND=REMOTE);
  EBCDIC ARRAY E[0:11];
  REPLACE E BY "HELLO DUNIA!";
  WRITE(F, *, E);
END.
Contoh lain, menggunakan Elliott Algol I/O seperti berikut. Elliott Algol menggunakan huruf berlainan bagi ‘pembuka-kata’ dan ‘penutup kata’, diwakili di sini oleh ‘ dan ’.

 program HiFolks;
 begin
    print ‘Hello dunia’;
 end;
Ini adalah versi Elliott 803 Algol (A104). Elliott 803 piwaian menggunakan tape kertas 5 lubang dan dengan itu hanya memiliki huruf besar. Kod kekurangan sebarang huruf pembuka kata oleh itu £ (Tanda Paun UK) digunakan bagi pembuka kata dan ? (Tanda Soal) bagi penutup kata. Aturan khas diletakkan dalam dua pembuka kata(e.g. ££L?? menghasilkan baris baru pada pencetak).

  HIFOLKS’  
  BEGIN
     PRINT £HELLO DUNIA££L??’
  END’

Versi ICL 1900 Algol I/O membenarkan input dari tape kertas atau kad tebuk. Tape kertas mod 'penuh' membenarkan huruf kecil. Output kepada pencetak baris.

  'BEGIN'
     'WRITE TEXT'("HELLO DUNIA");
  'END'

ALGOL 68

Dalam bahasa "Algol 68 Report", kemudahan Input/output secara keseluruhan dikenali sebagai "Transput".
Kod ALGOL 68 merupakan kata simpanan diterbitkan biasanya huruf kecil, tetapi tebal atau digaris bawah.
begin
  print(("Hello, dunia!",newline))
end
OR menggunakan salur transput khas:
begin
  putf((stand out,$gl$,"Hello, world!"))
end
Bagi memudahkan pengaturcaraan pada komputer 7-bit masa ituterdapat kaedah "rasmi" bagi TEBALKAN kata simpanan, secagai contoh, dengan menggunakan huruf besar:

BEGIN
  print(("Hello, dunia!",newline))
END
Pengaturcara kadang-kala terpaksa memikit "BERFIKIR HURUF BESAR" pada komputer yang hanya memiliki 6-bit huruf, contoh The CDC 6600: mentakrifkan komputer utama". Dalam kes ini kod di atas akan ditulis sebagai:

'BEGIN'
  PRINT(("HELLO, DUNIA!",NEWLINE))
'END'
"Laporan Algol 68" diterjemah kepada Russian, Jerman, Perancis dan Bulgarian, dan membenarkan pengaturcara dalam bahasa dengan set huruf lebih besar , contoh huruf Cyrillic. contoh BESM-4 Russian.

BEGIN
  print(("Здравствуй, мир!",newline))
END
Nota: Piwaian 1964 Russia GOST 10859 membenarkan pengkod 4-bit, 5-bit, 6-bit dan 7-bit huruf dalam ALGOL .

Contoh

Ini adalah algorithm Trabb Pardo-Knuth dalam ALGO:

1. TITLE TRABB PARDO-KNUTH ALGORITHM
2. SUBSCript I,J
3. DATA A(11)
4. FORMAt FI(2DT), FLARGE(3D)
5. PROCEdure F(T=Z)
6. BEGIN
7. Z=SQRT(ABS(T))+5*T^3
8. END
9. FOR I=0(1)10
10. A[I]=KEYBD
11. FOR J=0(1)10 BEGIN
11. I=J-10
12. F(A[I]=Y)
13. PRINT(FI)=I
14. IF Y > 400
15. GO TO LARGE
16. PRINT(FL)=Y
17. GO TO NEXT
18. LARGE: PRINT(FLARGE)=999
19. NEXT: CARR(1) END
20. END

Kata khas ALGOL 60 dan had pengenalpasti

Terdapat 35 perkataan sedemikian dalam sistem besar Burroughs piwaian: ALPHA, ARRAY, BEGIN, BOOLEAN, COMMENT, CONTINUE, DIRECT, DO, DOUBLE, ELSE, END, EVENT, FALSE, FILE, FOR, FORMAT, GO, IF, INTEGER, LABEL, LIST, LONG, OWN, POINTER, PROCEDURE, REAL, STEP, SWITCH, TASK, THEN, TRUE, UNTIL, VALUE, WHILE, ZIP.
Terdapat 71 had pengenalpasti dalam sistem besar Burroughs piwaian sub-bahasa: ACCEPT, AND, ATTACH, BY, CALL, CASE, CAUSE, CLOSE, DEALLOCATE, DEFINE, DETACH, DISABLE, DISPLAY, DIV, DUMP, ENABLE, EQL, EQV, EXCHANGE, EXTERNAL, FILL, FORWARD, GEQ, GTR, IMP, IN, INTERRUPT, IS, LB, LEQ, LIBERATE, LINE, LOCK, LSS, MERGE, MOD, MONITOR, MUX, NEQ, NO, NOT, ON, OPEN, OR, OUT, PICTURE, PROCESS, PROCURE, PROGRAMDUMP, RB, READ, RELEASE, REPLACE, RESET, RESIZE, REWIND, RUN, SCAN, SEEK, SET, SKIP, SORT, SPACE, SWAP, THRU, TIMES, TO, WAIT, WHEN, WITH, WRITE termasuk nama kesemua fungsi intrinsik.