PL/I

Kadri Hendla

Liina Kamm

Tartu 2004

Ajalugu

IBM/360 (1963-1966)

NPL 1964

Eesmärk

Ühtne keel nii äri kui teadustöödeks

Võimalik realiseerida enamik algoritme

Lisada ALGOLi struktuurprogrammeerimise vahendid

Üldist

Kolmanda põlvkonna protseduurne keel

Sõltumatu masinast

Dünaamiline mäluhaldus

Struktureeritud, modulaarne

Mitmeotstarbeline

süsteemitarkvara

graafika

simulatsioonid

tekstitöötlus

veeb

ärirakendused

Suhe teiste keeltega

Fortran, COBOL

Tõlkimine teistest keeltest kerge

Fortran

ALGOL-60

COBOL

Tõlgitud programmid kergemad

Plokkstruktuur

Protseduurid (PROCEDURE)

Alamprogramm

Välisprotseduur

Sisemine protseduur

BEGIN-plokid

Grupid

DO ... END

Et muuta mitmest lausest koosnev jada formaalselt üheks lauseks

Võtmesõnad

Reservsõnad puuduvad

Võtmesõnad

Kompilaator eristab võtmesõnu muutujanimedest nende konteksti kaudu

FIXED, PROCEDURE, IF, DECLARE

Identifikaatorid

Kuni 31 sümbolit

Kasutada võib #, $, @, _,

Ei tohi lõppeda alakriipsuga

Ei tohi alata numbriga

Muutujanimed

Märgendid

Võtmesõnad

Failinimed

Operaatorid

Aritmeetilised

+, -, *, /, **

Võrdlusoperaatorid

>,¬>, <, ¬<, >=, <=, =, ¬=

Loogilised operaatorid

¬, &, |

Konkatenatsioon

'A' || 'BC' -> 'ABC'

Eraldajad

Kohustuslikud ja mittekohustuslikud tühikud

... ;

MÄRGEND : ...; A(-10:10);

R = R + 1.25; F = A.EL.N;

'Jaanuar'; DECLARE ARV PICTURE '999';

=

%

/* */

Laused

Lihtlaused

omistamine

GOTO

Liitlaused

IF ... THEN ... (ELSE...);

ON ENDFILE GOTO NEXT;

Laused 2

Mittetäidetavad laused

DECLARE

FORMAT

PROCEDURE

ENTRY

Juhtimislaused

GOTO

IF

STOP

DO (WHILE)... END

CALL, PROCEDURE, ENTRY, RETURN, END

DECLARE, DEFAULT, FORMAT

ON

DELAY, EXIT, HALT, WAIT

Andmed

Täielik kontroll andmeatribuutide üle

Skalaarandmed ja andmemassiivid

Andmemassiivid

Skalaarandmed

Andmed

Konstandid

Arvmuutujad

Lihtmuutujad

Massiivi

elemendid

Massiivid

Struktuurid

Struktuurmassiivid

Andmetüübid

Aritmeetilised

DECIMAL (vaikimisi), BINARY

FIXED, FLOAT (vaikimisi)

COMPLEX, REAL

Sõned

Maksimaalselt 255 sümbolit

Staatiline ja varieeruv pikkus

Sümbol- ja bittsõned

Šabloonid

Andmestruktuurid

Massiivid

Dimensioon

Pöördumine tervikuna (A = B)

Pöördumine elementide ja lõigete poole

Struktuurid

Eri atribuutidega elemendid

Tasemed

Pöördumine tervikuna

Pöördumine komponentide poole

Andmestruktuurid 2

Struktuurimassiivid

Elementideks struktuurid

Pöördumine tervikuna (lihtnimega)

Pöördumine komponentide poole

Pöördumine mistahes elementide poole

Andmete deklareerimine

DECLARE-atribuut

DEFINE-atribuut

Kogu mäluväli, mis on määratud baasmuutujale

Mitme erineva nimega viitamine

LIKE-atribuut

INITIAL-atribuut

algväärtustamine

koos mälu eraldamisega

Vaikeväärtused

Ulatuslik vaikeväärtuste süsteem

Ei pea kõiki tüüpe ise deklareerima

DEFAULT-lause

Sisseehitatud funktsioonid

Peaaegu 200 funktsiooni

Sõnetöötluse (SUBSTR, LENGTH)

Aritmeetilised (ABS, MAX, RANDOM)

Matemaatilised (SIN, COS, SQRT)

Massiivide jaoks (SUM, PROD)

Aeg (DATE, TIME)

Erindid

Detailne süsteem erindite käsitlemiseks

Veatingimused

Situatsiooninimed (OVERFLOW, ZERODIVIDE)

ON-lause

Mälujaotus

AUTOMATIC

STATIC

CONTROLLED

BASED

EXTERNAL

Sisend/Väljund

GET, PUT

FILEOPEN, ENDFILE, ENDPAGE

Sisseehitatud

Faile võib töödelda nagu baidivooge

Faile saab töödelda järjestikuselt või võtme järgi

Demo

Tere, maailm!

Faktoriaal

Fibonacci arvud

Suurim kolmest

Liina Kamm

2004-05-10T14:42:44

Kadri Hendla