プログラミング言語論 第2回 命令型言語 (...

Download プログラミング言語論 第2回 命令型言語 ( 構造化プログラミング、制御フロー)

Post on 06-Jan-2016

56 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

プログラミング言語論 第2回 命令型言語 ( 構造化プログラミング、制御フロー). 情報工学科 篠埜 功. 命令型言語について. 命令型言語では、計算とは アクションの列であると見られる。 命令型言語の例: Fortran (1957, John Backus, アメリカ人、 1977 Turing 賞 ), Algol 60 (1960, 国際委員会で作成 ) Pascal (1970 , Niklaus Wirth, スイス人 , 1984 Turing 賞 ), - PowerPoint PPT Presentation

TRANSCRIPT

Fortran (1957, John Backus, 1977 Turing), Algol 60 (1960, ) Pascal (1970, Niklaus Wirth, , 1984 Turing), C (1972, Dennis Ritchie, , 1983 Turing)FortranwhilegotoFortran 90 (1991)Algol, Pascal(while, begin end)(assignment) x := 2+3 x := a[i] a[i] := x() read(x) write(x)structured programminggoto[] Edsger Dijkstra, Go to statement considered harmful, Communication of the ACM, Vol. 11, No. 3, pp. 147-148, 1968.single entry, single exitcasesingle entry, single exit x := 3 x := 3(entry point)(exit point)Pascals1, s2, , sn s1; s2; ; snCsingle entry, single exitsingle entry, single exit temp := x x := y y := temp temp := x; x := y; y := tempALGOLbegin, end (C { } ) 1 begin temp := x; x := y; y := temp endbegin, end begin endsingle entry, single exitsingle entry, single exit temp := x x := y y := temp conditional statementsPascal if then else if then if x=0 then begin x:=1; y:=3 end else x:=2x=0 x:=1 x:=2if-then-elsethenelsesingle entry, single exitsingle entry, single exit y := 3 else if x=0 then begin x:=1; y:=3 endx=0 x:=1 y := 3 loop Pascal while do while x > 0 do x := x-1x>0 x := x-1whilesingle entry, single exitsingle entry, single exit case of constant1 : 1; constant2 : 2; constantn : n endCswitch case x of 1 : begin y:=x; x:=0 end; 2: y:=x+1; 4: y:=x+2 endy := x y := x+214 x := 0 x2 x := x+1 breakcontinue(C)breakcontinuebreakwhile x>0 do begin if x=5 then break; x := x-1 endx>0 x := x-1x=5breakifwhilesingle entry, single exitcontinuewhile x>0 do begin if x 8 then begin x := x-1; continue end; x := x-5 endx>0 x := x-1x8continueifwhilesingle entry, single exitx := x-5gotogoto goto gotoifwhilex>0 x := x-1x=8x := x - 4 L: x := x - 4; while x>0 do if x=8 then goto L else x := x-1returnreturnModula-2 return return Creturn; return ; return

Returngotobreakcontinue

breakreturnif x > 0 then x := x 1else if y > 0 then y := y 1 else y := y + 1while x>0 do begin if x=3 then break; y := y + 1; x := x - 1 endwhile x>0 do begin while y>0 do begin if x=3 then break; z := z + 1; y := y - 1 end; x := x 1 endwhile x>0 do begin while y>0 do begin if x3 then begin y := y 1; continue end z := z + 1; y := y - 1 end; x := x 1 endx := 10;sum := 0;L: sum := sum + x;x := x 1;if x > 0 then goto Ly := 3;case x of 1 : y := 1; 2 : y := x * 2; 3 : if z = 0 then y := y * y else y := y * y * yendifwhilewhile x>0 do begin while y>0 do begin if x=3 then break; L: z := z + 1; y := y - 1 end; x := x 1; if x = 2 then goto L end

Recommended

View more >