cs 330 organization of programming languages
Skip this Video
Download Presentation
CS 330 Organization of Programming Languages

Loading in 2 Seconds...

play fullscreen
1 / 19

CS 330 Organization of Programming Languages - PowerPoint PPT Presentation

  • Uploaded on

CS 330 Organization of Programming Languages . Soundararajan Ezekiel Department of Computer Science Ohio Northern University ADA, Ohio 45810 e-mail: [email protected] http://www.onu.edu/user/FS/sezekiel. FORTRAN CODE WALK PROBLEMS.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' CS 330 Organization of Programming Languages ' - carys

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
cs 330 organization of programming languages

CS 330 Organization of Programming Languages

Soundararajan Ezekiel

Department of Computer Science

Ohio Northern University

ADA, Ohio 45810

e-mail: [email protected]


fortran code walk problems
  • 1. Wrtie a program to read two n-dimensional vectors and then evaluate
    • the norm of each vector
    • unit vectors having the same direction as the vectors
    • the sum, difference and dot product
    • the cosine of the angle between the vectors calculated using cos0 = a.b /(|a||b|)
2. Write a program that reads a list of numbers , count them, and the calculate their mean, variance, and standard deviation. Print how many numbers there are and their mean, variance, and SD
expressions and assignment statements
Expressions and Assignment Statements
  • Introduction
  • Arithmetic expressions
  • Overloaded Operators
  • Type Conversions
  • Relational and Boolean Expressions
  • Short-Circuit Evaluation
  • Assignment Statements
  • Mixed-Mode Assignments
  • Expressions are the fundamental means of specifying computations in a programming language
  • Programmers should understand both syntax and semantics of expression
  • To understand evaluation -- understand the order of operator and operand evaluation
  • An assignment statement can simply cause a value to be copied from one memory cell to another-- in many case it include expressions with operators, which cause values to be copied to the processor and to be operated on, and the result to be copied back to memory
  • simple assignment statements specify an expression to be evaluated and a target location in which to place the result of the expression evaluation
  • we will see number of variation on this basic form
2 arithmetic expression
2. Arithmetic Expression
  • Most of the characteristic of Arithmetic expression were inherited from Math
  • Consists of operators, operands, parentheses, and function calls
  • operator can be
    • unary--- single operands
    • binary -- double operands
    • C, C++, Java, - ternary-- three operands
  • Most cases-- binary operators are infix-- between their operands
  • In Perl-- some of them are prefix-- precede their operands
The purpose is to specify an arithmetic computation
  • Implementation of such computation must cause two action
    • fetching the operands-- usually from memory
    • executing arithmetic operations on those operands
  • Design issues
    • 1. What are the operator precedence rules
    • 2. What are the operator associativity rules
    • 3. What is the order of operand evaluation
    • 4. Are there restrictions on operands evaluation side effect
    • 5. Does the language allow user-defined operator overloading
    • 6. What mode mixing is allowed in expression
  • Consider the following expression -- a+b*c
  • suppose a=3, b=4, c=5---- evaluate left to right=> 35, right to left=> 23
  • FORTRAN:- **,* /+-
  • Pascal: *,/,div, mod+ -
  • Ada: **, abs*/ unary +/binary +-
  • C: postfix ++, --prefix ++.-- , unary +-,*/&binary +-
  • APL is odd among languages because it has single level of precedence
  • consider the following expression a-b+c-d
  • here + - are the same level of precedence-- this case which operator is evaluated first is answered by the associativity rule of the language
  • Fortran:- left to right ( exponential right to left A**B**C )
  • Ada: exponential is nonassociative-- A**B**C is illegal () should be used that is (A**B)**C or A** (B**C)
  • FORTRAN and Ada have the exp operator

Language Associativity Rule

FORTRAN Left: */+-

Right: **

Pascal Left: all

C Left: postfix++, postfix--, */%binary+ binary-

Right: prefix++ prefix--, unary + unary-

C++ Left: */%binary+ binary-

Right: ++, --, unary -, unary +

Ada Left: all except **

Nonassociativity **

in APL: AxB+C (x means multiplication) A=3, B=4, C=5 then 27

How: associative right to left-- addition first then multiplication

  • programmers can alter the precedence and associativity rules by placing () in expression --- (A+B)*C
  • programmer would specify the desired order of evaluation with parentheses
  • the disadvantage of this scheme is that it makes writing expression more tedious and it also seriously compromises the readability of the code
conditional expression
Conditional expression
  • we will look at the the ternary operator ?: which is part of C, C++ Java
  • this operator is used to form conditional expression
  • sometimes if then else statements are used to perform a conditional expression assignment
  • example
  • if (count = = 0)
  • average =0;
  • else
  • average= sum/count;
  • In C, C++ and Java this can be specified more conveniently in an assignment statement using condition expression
expression_1 ? Expression_2 :expression_3
  • expression_1 is Boolean expression--- if that is true do expression_2 otherwise expression_3
  • average= (count = = 0)? 0 : sum/count;
operand evaluation order
Operand evaluation order
  • A less commonly discussed design characteristics of expression is the order of evaluation of operands
  • Side Effects:- A side effect of a function called a functional side effect, occurs when the function changes either of its parameters or global variable ( variable declared outside of the function)
  • consider the expression a+fun(a)
  • if fun does not have the side effect of changing a, the order of evaluation is two operands a fun(a) has no effect on value of the expression
  • if fun changes the value of a say divide by 2 and change its parameter to have the value 20 then it matters
  • a=10;
  • b=a+fun(a)
  • two answers--- 15 from left to right and 25 from right to left
c example
C example
  • the following c code will the same problem like before
  • int a=5;
  • int fun1(){
  • a=17;
  • return 3;
  • } /* of fun1*/
  • void fun2(){
  • a=a+fun1();
  • } /* of fun2*/
  • void main(){
  • fun2();
  • }/* of main */

The value computed for a in fun2

depends on the order of evaluation

of the operands in the expression


the value will be 8 or 20

  • 1. The language designer could disallow functional side effect
  • 2. Avoid the problem by stating in the language definition that operands in expressions are to be evaluated in a particular order and demand that implementors guarantee that order
overloaded operators
Overloaded operators
  • Arithmetic operators are often used for more than one purpose
  • example:- + for addition In Java it is used for string catenation
  • This multiple use of an operator is called operator overloading
  • consider the use of ampersand in (&) in C
  • As a binary operator--- it specifies bitwise logical AND operation
  • As a Unary operator-- with variable as its operand, the expression value is the address of that variable-- this case & is called address-of operator
  • example x=&y execution of this causes the address of y to be placed in x