Lecture 26 – November 27, 2007
Returned graded
work and quizzes
Discussed answers
to quizzes
For final:
- know 2s complement representation of positive and
negative numbers
- know how to convert base 10 numbers into base 2 and vice
versa
- know how to determine the address of an element in a
two-dimensional array (be careful to pay attention as to whether the array
is stored in row-major or column major order).
- Know the definition of a (abstract) data type and be able
to indicate appropriate operations for a given data type.
- Know why we use two’s complement representation on a
computer instead of sign-magnitude,
Showed traces of
some Prolog programs
/*----------------------------------------------------------------------
*
"Agatha Christie" Problem
* Who
was the killer?
*
*
Alice, her husband, son, daughter,
* and
brother are involved in a murder.
* One
of the five killed one of the other
* four.
*
* 1. A
man and a woman were together in the bar at the time of the murder.
* 2.
The victim and the killer were together on the beach at the time of the murder.
* 3.
One of the children was alone at the
time of the murder.
* 4.
Alice and her husband were not together
at the time of the murder.
* 5.
The victim's twin was innocent.
* 6.
The killer was younger than the victim.
* NOTE:
you may assume that the father is older than the son and daughter
*----------------------------------------------------------
Alternate problem;
If my client is
guilty, then the knife was in the drawer.
Either the knife was not in the drawer or Jason Pritchard saw the
knife. If the knife was not there on
October 10, it follows that Jason Pritchard did not see the knife. Furthermore, if the knife was there on
October 10, then the knife was in the drawer and also the hammer was in the
barn. But we all know that the hammer
was not in the barn. QUESTION: is the client guilty?
Chapter 7-
- Arithmetic expressions
- Precedence rules – order of operations
- What type of operands go with what type of operators
- 2*3*4 - evaluated
left to right
- 2**3**4 – evaluated right to left
- Overloaded operators
- +
- Integers - addition
- Floats - addition
- Strings – concatenation
- Performing an operation on two objects – possible in Ada
and in C++ but not in Java or C
- Type conversions
- Widening vs narrowing
- Implicit vs explicit
- Implicit happens without your having to explicitly tell
it to do the conversion as in Snobol where we
can make a variable which is an integer become a string like magic
- Explicit conversion is really “like” a function call
- Relational and Boolean expressions
- Relational operators: 6 of them: GT, LT, GE, LE, EQ, NE
- Boolean operators : and, not, or, xor
- Relational expressions evaluate to true or false
- Boolean expressions evaluate to true or false
- Short Circuit Evaluation
- Only evaluates the operands necessary to determine T or
F
- AND – if first operand is false, 2nd isn’t
evaluated
- OR – if first operands is true, 2nd isn’t
evaluate
- Java’s ANDs and ORs statements default to short circuit
- Ada has special operators for short
circuit
- Normal is AND and OR
- Short circuit is AND THEN and OR ELSE
- In C
- Normal AND is
&, normal OR is |
- Short circuit AND is && and short circuit OR
is ||
- Assignment Statements
- Different symbols for the operator in different
languages
- = in FORTRAN
- := in Pascal
- When assignment can be carried out?
- Mixed-mode
- Ada example showing that mixed mode
arithmetic isn’t allowed (explicit conversion necessary.
o
procedure testMixedMode is
i,j : integer;
x,y : float;
begin
x :=3.14159;
i := 17;
-- y := x + i;
y := x + float(i);
end testMixedMode;
We will go over parameter passing modes on Thursday