Lecture 14 - October 11, 2007

 

Returned some FirstPascal programs

 

Discussed/Corrected some misconceptions found in comments in the programs

-          Pascal procedures return 0,1, or main values through the parameter list.

-          Pascal functions return 1 value by assignment to the function name.

-          Procedures are not functions.  They are sub-programs.

-          In Pascal the semi-colon is a statement separator.

-          Begin end pairs in Pascal function like the curly braces in Java.  They are needed at the start and end of every sub-program and wherever you want to have multiple statements act as a single statement.

-          Parameters come in two flavors.  Var parmeter values are passed by reference.  value parameter values are passed by being copied in the sub-program. Value parameters are the default in Pascal.

-          A repeat until loop is a post test loop.  It is always executed at least once.\

-          A while loop is a pre test loop.  It may not every be executed.

-          Read the specifications for a program CAREFULLY, very carefully.

-          Don't ever use any variables in a sub-program that are not either declared in the sub-program or declared in the parameter list.

 

 

Showed use of compiler directive to allow program not to bomb if user enters an incorrect name for the input data file

   function exists

 

Showed that it IS possible in Pascal to use a formatted writeln statement that will print out different types of variables in the same statement.

    testoutput.pp

 

Talked about acceptable programming languages for project choices

    available languages    

 

Showed the project information guidelines and talked briefly about them

 

Talked about the Snobol programming language

 

About Snobol

 

To run a SNOBOL program interactively  type the following from the directory where snobol4.exe is found                 

 snobol4 code.sno

 

If there are no errors, you’re ready to go.  The cursor is in column one and anything you type there will be considered a label so if you don't want a label, leave a space before typing any other statement..  

 

Operators require spaces around them

            =         is one  assignment operator - used for normal assignment

            .           is the other assignment operator - used for conditional assignment

            +          is the addition operator

 

Look up the available binary operators in the manual.

Exponentiation is evaluated right to left.

Addition has higher precedence than concatenation

All unary operators are left associative!

Use parenthesis to put parenthesis around the subject to put in multiple variables in a subject

There is no explicit concatenation operator - a space is used  (look at five.sno)

You may use single or double quotes around characters or strings as long as the beginning and ending quotes match

 

Probably vanilla.zip is a good download.  There are lots of good files in there.

README.DOC  - tells you about all those files

PM.EXE  - prints a manual (don’t do this unless you have 144 pages of paper and ink to spare)

By putting a drive address following pm  it will create a snobol4.man which you can open with Notepad so that you can read selectively on your drive.

PRINTMAN.BAK - allows you to read the tutorial.

Do not try to decipher the code in DEMO.SNO  - it’s more complex than we need.

 

To run your snobol program,  which should have the extension .sno type,  snobol4 filename.sno

You can create a copy of your snobol program (i.e. filename.sno) with line numbers if you type  snobol4 /L filename.sno . 

It will be saved on your disk as filename.lst.  The line numbers there will be helpful in debugging your code

 

In all of SNOBOL there are only 4 different kinds of statements:

Assignment Statements

            – Column 1 reserved for labels

            - Success, failure statements :S(gohere)F(gothere)

(S is for success, F for failure…label must go in parenthesis)

:(gotolabel)à is used for unconditional gotos

            - loop : (gotolabel)

            - to indicate end of keyboard input <ctrl> z

End Statements – end in column 1

Pattern Matching Statements

-          see FOURA.SNO

-          see FIVE.SNO

-          see SIXA.SNO

Replacement Statements

-          see SEVENA.SNO

-          see oct17.sno

-          eight.sno

The  pattern matching and replacement statements are  where the heart of SNOBOL resides