of these types of commands is required. In practice there are various special cases which occur quite often; these may make a program easier to understand, may make programming easier, and can often be implemented much more efficiently. There are many subtleties not mentioned here; see the linked articles for details. count-controlled loop: Algol 60: for index := 1 step 1 until limit do <statement> ; Pascal: for index := 1 to limit do <statement> ; C, Java: for ( index = 1; index <= limit; index += 1) <statement> ; Ada: for index in 1..limit loop <sequence> end loop Fortran 90: condition-controlled loop with test at start of loop: Algol 60: for index := expression while test do <statement> ; Pascal: while test do <statement> ; C, Java: while (test) <statement> ; Ada: while test loop <sequence> end loop Fortran 90: condition-controlled loop with test at end of loop: Pascal: repeat <sequence> until test; { note reversed test} C, Java: do { <sequence> } while (test) ; Ada: loop <sequence> exit when test; end loop; condition-controlled loop with test in the middle of the loop: C: do { <sequence> if (test) break; <sequence> } while (true) ; Ada: loop <sequence> exit when test; <sequence> end loop; if-statement simple situation: Algol 60:if test then <unconditional statement> ; Pascal:if test then <statement> ; C, Java: if (test) <statement> ; Ada: if test then <sequence> end if; Fortran 77+: if-statement two-way choice: Algol 60:if test then <unconditional statement> else <statement> ; Pascal:if test then <statement> else <statement> ; C, Java: it (test) <statement> else <statement> ; Ada: if test then <sequence> else <sequence> end if; Fortran 77+: case/switch statement multi-way choice: Pascal: Ada: C, Java: Exception handling: Ada: begin protected code except when exception specification => exception handler Java: try { protected code } catch (exception specification) { exception handler } finally { cleanup } Python: try: protected code except exception specification: exception handler else: no exceptions finally: cleanup Syntax Apart from assignments and subroutine calls, most languages start each statement with a special word (e.g. goto, if, while, etc.) as shown in the above examples. Various methods have been used to describe the form of statements in different languages; the more formal methods tend to be more precise: Algol 60 used Backus–Naur form (BNF) which set a new level for language grammar specification. Up until Fortran 77, the language was described