crash course session 1---recursion, iteration, listscs1102s/slides/slides_cc_01.bw.pdf · recursion...

43
Languages and Language Processors Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data Structures and Algorithms Martin Henz 14 January, 2010 Generated on Thursday 14 th January, 2010, 17:51 CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 1

Upload: others

Post on 01-Oct-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Crash Course Session 1—Recursion, Iteration,Lists

CS 1102S—Data Structures and Algorithms

Martin Henz

14 January, 2010

Generated on Thursday 14th January, 2010, 17:51CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 1

Page 2: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 2

Page 3: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 3

Page 4: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Languages vs Implementation

Programming language

Programming languages are the languages in which aprogrammer writes the instructions that the computer willultimately execute. Encyclopedia Britannica

Programming system

Set of tools that help achieving this execution.

Same language, different tools

For the same language, different tools are available for differentpurposes.

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 4

Page 5: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

T-Diagrams

586 x86 Processor

GTA

x86 Program “GTA” (x86 code)

GTA

x86

x86

“GTA” running on x86

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 5

Page 6: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Interpreter

Interpreter is program that executes another program

The interpreter’s source language is the language in whichthe interpreter is written

The interpreter’s target language is the language in whichthe programs are written which the interpreter can execute

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 6

Page 7: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Interpreters

Scheme

x86

Interpreter for Scheme (x86 machine code)

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 7

Page 8: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Interpreting a Program

GTA

Scheme

Scheme

x86

x86

Scheme program “GTA”running on x86 using interpretation

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 8

Page 9: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Hardware Emulation

GTA

x86

x86

MPC7450

MPC7450

“GTA” x86 executable running on a PowerPC using hardwareemulation

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 9

Page 10: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Translators

Translator translates from one language—thefrom-language—to another language—the to-language

Compiler translates from “high-level” language to“low-level” language

De-compiler translates from “low-level” language to“high-level” language

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 10

Page 11: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

T-Diagram of Translator

Scheme C

x86

-

Scheme-to-C compiler written in x86 machine code

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 11

Page 12: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Compilation

GTA

Scheme Scheme C

x86

-

x86

GTA

C

Compiling “GTA” from Scheme to C

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 12

Page 13: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Two-stage Compilation

GTA

Scheme Scheme C

x86

-

x86

GTA

C C x86

x86

-

x86

GTA

x86

Compiling “GTA” from Scheme to C to x86 machine code

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 13

Page 14: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Compiling a Compiler

Scheme x86

C

-

C x86

x86

-

Scheme x86

x86

-

x86

Compiling a Scheme-to-x86 compiler from C to x86 machinecode

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 14

Page 15: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Is Scheme Compiled or Interpreted?T-DiagramsInterpretersTranslatorsCombinations

Typical Execution of Java Programs

HelloWorld

Java Java JVM

x86

-

x86

HelloWorld

JVM

-

HelloWorld

JVM

JVM

x86

x86

Compiling “HelloWorld” from Java to JVM code, and runningthe JVM code on a JVM running on an x86

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 15

Page 16: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 16

Page 17: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Factorial Function

( define ( f a c t o r i a l i )( i f (<= i 0)

1(∗ i ( f a c t o r i a l (− i 1 ) ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 17

Page 18: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Factorial In Java

publ ic s t a t i c i n t f a c t o r i a l ( i n t i ) {i f ( i <= 1) {

return 1;} else {

return i ∗ f a c t o r i a l ( i − 1 ) ;}

}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 18

Page 19: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Iteration vs Recursion in Scheme

Iteration

A (recursive) Scheme function is iterative, if the recursive call isalways the last thing to do in its body.

Is Factorial Iterative?

No! (* i (factorial (- i 1)))In Java: i * factorial(i - 1);

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 19

Page 20: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Iterative Factorial Function In Scheme

( define ( i t e r f a c t o r i a l i acc )( i f (<= i 1)

acc( i t e r f a c t o r i a l (− i 1) (∗ acc i ) ) ) )

( define ( i t e r a t i v e f a c t o r i a l i )( i t e r f a c t o r i a l i 1 ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 20

Page 21: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Iterative Factorial Function In Java?

pr iva te s t a t i c i n t i t e r F a c t o r i a l T r y ( i n t i , i n t acc ){i f ( i <= 1) {

return acc ;} else {

return i t e r F a c t o r i a l T r y ( i −1,acc∗ i ) ;}

}publ ic s t a t i c i n t i t e r a t i v e F a c t o r i a l T r y ( i n t i ) {

return i t e r F a c t o r i a l T r y ( i , 1 ) ;}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 21

Page 22: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

The Sad Truth about Java

Java has no iterative recursion!

Every function call requires space on a Java runtime stack.

Recursion is always recursive!

A recursive function in Java will never use constant space.

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 22

Page 23: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Loops to the rescue!

Loop constucts

Java contains loop constructs such as while and for .

Iteration in Java

Iteration can only be achieved using loops in Java.

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 23

Page 24: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Recursion in SchemeIteration in SchemeIteration in Java?Iteration in Java!

Iterative Factorial Function In Java

publ ic s t a t i c i n t i t e r a t i v e F a c t o r i a l ( i n t i ) {i n t acc = 1;while ( i > 1) {

acc = acc ∗ i ;i = i − 1;

}return acc ;

}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 24

Page 25: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Lists in Scheme and Java

Lists in Scheme

Built-in, using cons, car, cdr, ’() , null ?.

Lists in Java

There is a List interface in Java, seehttp://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html

Start with List of Integers

Here, we study a restricted form of lists first: IntList .

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 25

Page 26: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Lists in Scheme

( cons 1 2) ; ; a p a i r’ ( ) ; ; an empty l i s t( cons 7 ’ ( ) ) ; ; a l i s t w i th one i n t e g e r( cons 4 ( cons 9 ’ ( ) ) ) ; ; a l i s t w i th two in tege rs

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 26

Page 27: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Builtin Operations on Lists in Scheme

’ ( ) ; ; an empty l i s t( cons 1 2) ; ; a p a i r( car a l i s t ) ; ; f i r s t component ( head )( cdr a l i s t ) ; ; second component ( t a i l )( n u l l ? a l i s t ) ; ; whether l i s t i s empty

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 27

Page 28: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Operations on Lists of Integers in Java

publ ic s t a t i c I n t L i s t n i l = new I n t L i s t ( )publ ic s t a t i c I n t L i s t cons ( i n t i , I n t L i s t l i s t )publ ic s t a t i c i n t car ( I n t L i s t l i s t )publ ic s t a t i c I n t L i s t cdr ( I n t L i s t l i s t )publ ic s t a t i c boolean i s N i l ( I n t L i s t l i s t )publ ic s t a t i c void p r i n t ( I n t L i s t l i s t )

IntList

These functions are available in the library (class) IntList.

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 28

Page 29: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Some Cheating (for convenience)

publ ic s t a t i c I n t L i s t i n t L i s t ( i n t [ ] elements ) {

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 29

Page 30: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Length in Scheme

( define ( l eng th xs )( i f ( n u l l ? xs )

0(+ 1 ( leng th ( cdr xs ) ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 30

Page 31: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Length in Java

publ ic s t a t i c i n t l eng th ( I n t L i s t a L i s t ) {i f ( I n t L i s t . i s N i l ( a L i s t ) ) {

return 0;} else {

return 1 + leng th ( I n t L i s t . cdr ( a L i s t ) ) ;}

}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 31

Page 32: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Iterative Length in Scheme

( define ( i t e r l e n g t h a l i s t acc )( i f ( n u l l ? a l i s t )

acc( i t e r l e n g t h ( cdr a l i s t ) (+ acc 1 ) ) ) )

( define ( i t e r a t i v e l e n g t h a l i s t )( i t e r l e n g t h a l i s t 0 ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 32

Page 33: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Iterative Length in Java?

publ ic s t a t i c i n t i t e rLeng thT ry ( I n t L i s t aL is t ,i n t acc ) {

i f ( I n t L i s t . i s N i l ( a L i s t ) ) {return acc ;

} else {return i t e rLeng thT ry ( I n t L i s t . cdr ( a L i s t ) , acc +1) ;

}}publ ic s t a t i c i n t i t e r a t i v e L e n g t h T r y ( I n t L i s t aLst ){

return i t e rLeng thT ry ( aLst , 0 ) ;}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 33

Page 34: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Iterative Length in Java!

publ ic s t a t i c i n t i t e r a t i v e L e n g t h ( I n t L i s t a L i s t ) {i n t acc = 0;while ( ! I n t L i s t . i s N i l ( a L i s t ) ) {

a L i s t = I n t L i s t . cdr ( a L i s t ) ;acc ++;

}return acc ;

}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 34

Page 35: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Append in Scheme

( define ( append a l i s t a n o t h e r l i s t )( i f ( n u l l ? a l i s t )

a n o t h e r l i s t( cons ( car a l i s t )

( append ( cdr a l i s t ) a n o t h e r l i s t ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 35

Page 36: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Append in Java

publ ic s t a t i c I n t L i s t append ( I n t L i s t aL is t , I n t L i s ti f ( I n t L i s t . i s N i l ( a L i s t ) ) {

return ano the rL i s t ;} else {

returnI n t L i s t . cons ( I n t L i s t . car ( a L i s t ) ,

append ( I n t L i s t . cdr ( a L i s t ) ,ano the rL i s t ) ) ;

}}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 36

Page 37: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Naive Reverse in Scheme

( define ( na ivereverse a l i s t )( i f ( n u l l ? a l i s t )

’ ( )( append ( na ivereverse ( cdr a l i s t ) )

( cons ( car a l i s t ) ’ ( ) ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 37

Page 38: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Naive Reverse in Java

publ ic s t a t i c I n t L i s t naiveReverse ( I n t L i s t a L i s t ) {i f ( I n t L i s t . i s N i l ( a L i s t ) ) {

return I n t L i s t . n i l ;} else {

return append ( naiveReverse ( I n t L i s t . cdr ( a L i s t ) ) ,I n t L i s t . cons ( I n t L i s t . car ( a L i s t ) ,

I n t L i s t . n i l ) ) ;}

}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 38

Page 39: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Square All in Scheme

( define ( squa rea l l a l i s t )( i f ( n u l l ? a l i s t )

’ ( )( cons (∗ ( car a l i s t ) ( car a l i s t ) )

( squa rea l l ( cdr a l i s t ) ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 39

Page 40: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Square All in Java

publ ic s t a t i c I n t L i s t squareA l l ( I n t L i s t a L i s t ) {i f ( I n t L i s t . i s N i l ( a L i s t ) ) {

return I n t L i s t . n i l ;} else {

returnI n t L i s t . cons ( I n t L i s t . car ( a L i s t )

∗ I n t L i s t . car ( a L i s t ) ,squareA l l ( I n t L i s t . cdr ( a L i s t ) ) ) ;

}}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 40

Page 41: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Sum in Scheme

( define (sum a l i s t )( i f ( n u l l ? a l i s t )

0(+ ( car a l i s t ) (sum ( cdr a l i s t ) ) ) ) )

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 41

Page 42: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Sum in Java

publ ic s t a t i c i n t sum( I n t L i s t a L i s t ) {i f ( I n t L i s t . i s N i l ( a L i s t ) ) {

return 0;} else {

return I n t L i s t . car ( a L i s t )+ sum( I n t L i s t . cdr ( a L i s t ) ) ;

}}

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 42

Page 43: Crash Course Session 1---Recursion, Iteration, Listscs1102s/slides/slides_cc_01.bw.pdf · Recursion and Iteration Lists Crash Course Session 1—Recursion, Iteration, Lists CS 1102S—Data

Languages and Language ProcessorsRecursion and Iteration

Lists

Lists in SchemeLists of Integers in JavaExamples

Next Session

More built-in types

Loops

Arrays

CS 1102S—Data Structures and Algorithms Crash Course Session 1—Recursion, Iteration, Lists 43