ALGOL

Frå Wikipedia – det frie oppslagsverket
(Omdirigert frå Algol 60)

ALGOL (fokorting for ALGOrithmic Language) er eit programmeringsspråk som starta utviklinga midt på 1950-talet, og er eit tidleg programmeringsspråk. Den første standarden vart ferdig i 1958. Seinare versjonar kom i 1960 og 1968. I dag er Algol først og fremst av historisk interesse, men er viktig fordi svært mange konsept i dei programmeringsspråka som blir brukt i dag kjem frå Algol, og blir derfor rekna som viktigare enn Fortran og COBOL, som var dei mest populære språka på den tida.

Eigenskapar og historie[endre | endre wikiteksten]

Algol vart utvikla av ein internasjonal komité frå slutten av 1950-åra og framover. Den første rapporten som spesifiserte Algol58 vart ferdig i 1958. Særleg versjonen frå 1960 var nyskapande. Algol60 introduserte blokkstuktur, som finst i nesten alle programeringsspråk introduserte sidan, og som gjer lokale variablar mogeleg. I tillegg vart parameteroverføringsmodi som call by value og call by name, slik at ein kan lage rekursive funksjonar. if-then-else og generelle mekanismar for iterasjon var og nytt i Algol60.

Ei anna nyvinning er at syntaksen til algol er formelt definert i form av ein gramatikk. Denne var i såkalla Bachus-Neur-form (BNF), og dette er i dag den vanlegaste måten å spesifisere eit programmeringsspråk.

Andre eigenskapar som var nye i Algol:

  • Dynamiske arrayar: Arrayar som ikkje måtte spesifiserast når programmet

vart laga, men kunne allokerast dynamisk under køyring.

  • Nøkkelord: Nøkkelorda i språket kan ikkje brukast som variablar i Algol-program.
  • Brukardefinerte datatypar: datatyper som speglar problemetområdet programmeraren forsøker skrive eit program for

Døme på programmering i Algol[endre | endre wikiteksten]

Dette programmet reknar ut gjenomsnittet av alle elementa i ein array.

 // the main program (this is a comment)
 !
 begin
   integer N;
   Read Int(N);
   !
   begin
     real array Data[1:N];
     real sum, avg;
     integer i;
     sum:=0;
     !
     for i:=1 step 1 until N do
       begin real val;
         Read Real(val);
         Data[i]:=if val<0 then -val else val
       end;
     !
     for i:=1 step 1 until N do
       sum:=sum + Data[i];
     avg:=sum/N;
     Print Real(avg)
   end
 end