[SOLVED] Java database data structure COMP284 Scripting Languages Handouts (8 on 1)

$25

File Name: Java_database_data_structure_COMP284_Scripting_Languages__Handouts_(8_on_1).zip
File Size: 706.5 KB

5/5 - (1 vote)

COMP284 Scripting Languages Handouts (8 on 1)

COMP284 Scripting Languages
Lecture 3: Perl (Part 2)

Handouts (8 on 1)

Ullrich Hustadt

Department of Computer Science
School of Electrical Engineering, Electronics, and Computer Science

University of Liverpool

Contents

1 Control structures
Conditional statements
Switch statements
While- and Until-loops
For-loops

2 Lists and Arrays
Identifiers
List literals
Contexts
List and array functions
Foreach-loops

3 Hashes
Identifiers

COMP284 Scripting Languages Lecture 3 Slide L3 1

Control structures Conditional statements

Control structures: conditional statements

The general format of conditional statements is very similar to that in
Java:

if (condition) {

statements

} elsif (condition) {

statements

} else {

statements

}

condition is an arbitrary expression
the elsif-clauses is optional and there can be more than one
the else-clause is optional but there can be at most one
in contrast to Java, the curly brackets must be present

even if statements consist only of a single statement

COMP284 Scripting Languages Lecture 3 Slide L3 2

Control structures Conditional statements

Control structures: conditional statements

Perl also offers two shorter conditional statements:

statement if (condition );

and

statement unless (condition );

In analogy to conditional statements
Perl offers conditional expressions:

condition ? if_true_expr : if_false_expr

Examples:

$descr = ($distance < 50) ? “near” : “far”;$size = ($width < 10) ? “small” :($width < 20) ? “medium” :”large”;COMP284 Scripting Languages Lecture 3 Slide L3 3Control structures Conditional statementsBlocks A sequence of statements in curly brackets is a block; an alternative definition of conditional statements isif (condition) blockelsif (condition) blockelse block Instatement if (condition );statement unless (condition );only a single statement is allowedbut do block counts as a single statement,so we can writedo block if (condition );do block unless (condition );COMP284 Scripting Languages Lecture 3 Slide L3 4Control structures Switch statementsControl structures: switch statement/expressionStarting with Perl 5.10 (released Dec 2007), the language includes aswitch statement and corresponding switch expressionBut these are considered experimental and need to be enabled explicitlyExample:use feature “switch”;given ($month) {when ([1,3,5,7,8,10,12]) { $days = 31 }when ([4 ,6 ,9,11]) { $days = 30 }when (2) { $days = 28 }default { $days = 0 }}Note: No explicit break statement is neededCOMP284 Scripting Languages Lecture 3 Slide L3 5Control structures While- and Until-loopsControl structures: while- and until-loops Perl offers while-loops and until-loopswhile (condition) {statements}until (condition) {statements} A proper until-loop where the loop is executed at least oncecan be obtained as followsdo { statements } until (condition );The same construct also works for if, unless and whileIn case there is only a single statement it is also possible to writestatement until (condition );Again this also works for if, unless and whileCOMP284 Scripting Languages Lecture 3 Slide L3 6Control structures For-loopsControl structures: for-loops for-loops in Perl take the formfor (initialisation; test; increment) {statements}Again, the curly brackets are required even if the body of the loop onlyconsists of a single statement Such a for-loop is equivalent to the following while-loop:initialisation;while (test) {statements;increment;}COMP284 Scripting Languages Lecture 3 Slide L3 7Lists and Arrays IdentifiersLists and Arrays A list is an ordered collection of scalars An array (array variable) is a variable that contains a list Array variables start with @ followed by a Perl identifier@identifierAn array variable denotes the entire list stored in that variable Perl uses$identifier[index]to denote the element stored at position index in @identifierThe first array element has index 0 Note that$identifier@identifierare two unrelated variables (but this situation should be avoided)COMP284 Scripting Languages Lecture 3 Slide L3 8Lists and Arrays List literalsList literals A list can be specified by a list literal, a comma-separated list of valuesenclosed by parentheses(1, 2, 3)(“adam”, “ben”, “colin”, “david”)(“adam”, 1, “ben”, 3)( )(1..10 , 15, 20..30)($start ..$end) List literals can be assigned to an array:@numbers = (1..10 , 15, 20..30);@names = (“adam”, “ben”, “colin”, “david”); Examples of more complex assignments, involving array concatenation:@numbers = (1..10 , undef , @numbers , ( ));@names = (@names ,@numbers ); Note that arrays do not have a pre-defined size/lengthCOMP284 Scripting Languages Lecture 3 Slide L3 9Lists and Arrays List literalsSize of an array There are three different ways to determine the size of an array$arraySize = scalar(@array);$arraySize = @array;$arraySize = $#array + 1; One can access all elements of an array using indicesin the range 0 to $#array But Perl also allows negative array indices:The expression $array[-index]is equivalent to $array[scalar(@array)-index]Example:$array[-1] is the same as $array[scalar(@array)-1]is the same as $array[$#array]that is the last element in @arrayCOMP284 Scripting Languages Lecture 3 Slide L3 10Lists and Arrays List literalsArray index out of bound Perl, in contrast to Java, allows you to access array indices that areout of bounds The value undef will be returned in such a case@array = (0, undef , 22, 33);print $array [1] = ,$array [1], , which ,(defined($array [1]) ? “IS NOT” : “IS”, “undef
“;print $array [5] = ,$array [5], , which ,(defined($array [5]) ? “IS NOT” : “IS”, “undef
“;$array [1] = , which IS undef$array [5] = , which IS undef The function exists can be used to determine whether an array indexis within bounds and has a value (including undef) associated with itprint $array [1] exists: ,exists($array [1]) ? “T”:”F”,”
“;print $array [5] exists: ,exists($array [5]) ? “T”:”F”,”
“;$array [1] exists: T$array [5] exists: FCOMP284 Scripting Languages Lecture 3 Slide L3 11Lists and Arrays ContextsScalar context versus list context Scalar contextwhen an expression is used as an argument of an operation that requiresa scalar value, the expression will be evaluated in a scalar contextExample:$arraySize = @array;; @array stores a list, but returns the number of elements of @arrayin a scalar context List contextwhen an expression is used as an argument of an operation that requiresa list value, the expression will be evaluated in a list contextExample:@sorted = sort 5;; A single scalar value is treated as a list with one element in alist contextCOMP284 Scripting Languages Lecture 3 Slide L3 12Lists and Arrays ContextsScalar context versus list contextExpressions behave differently in different contexts following these rules: Some operators and functions automatically return different values indifferent contexts$line = ; # return one line from IN

@lines = ; # return a list of all lines from IN

If an expression returns a scalar value in a list context, then by default
Perl will convert it into a list value with the returned scalar value being
the one and only element

If an expression returns a list value in a scalar context, then by default
Perl will convert it into a scalar value by take the last element of the
returned list value

COMP284 Scripting Languages Lecture 3 Slide L3 13

Lists and Arrays List and array functions

List functions

Function Semantics

grep(expr,list) in a list context, returns those elements of
list for which expr is true;
in a scalar context, returns the number of
times the expression was true

join(string,list) returns a string that contains the elements
of list connected through a separator
string

reverse(list) returns a list with elements in reverse order

sort(list) returns a list with elements sorted in
standard string comparison order

split(/regexpr/,string) returns a list obtained by splitting string
into substring using regexpr as separator

(list) x number returns a list composed of number copies
of list

COMP284 Scripting Languages Lecture 3 Slide L3 14

Lists and Arrays List and array functions

Array functions: push, pop, shift, unshift

Perl has no stack or queue data structures,
but has stack and queue functions for arrays:

Function Semantics

push(@array1,value)

push(@array1,list)

appends an element or an entire list to the
end of an array variable;
returns the number of elements in the
resulting array

pop(@array1) extracts the last element from an array
and returns it

shift(@array1) shift extracts the first element of an array
and returns it

unshift(@array1,value)

unshift(@array1,list)

insert an element or an entire list at the
start of an array variable;
returns the number of elements in the
resulting array

COMP284 Scripting Languages Lecture 3 Slide L3 15

Lists and Arrays List and array functions

Array operators: push, pop, shift, unshift

Example:

1 @planets = (earth);
2 unshift(@planets ,mercury,venus);
3 push(@planets ,mars,jupiter,saturn);
4 print Array@1: , join( ,@planets),
;
5 $last = pop(@planets );
6 print Array@2: , join( ,@planets),
;
7 $first = shift(@planets );
8 print Array@3: , join( ,@planets),
;
9 print @4: ,$first , ,$last ,
;

Output:

Array@1: mercury venus earth mars jupiter saturn

Array@2: mercury venus earth mars jupiter

Array@3: venus earth mars jupiter

@4: mercury saturn

COMP284 Scripting Languages Lecture 3 Slide L3 16

Lists and Arrays List and array functions

Array operators: delete

It is possible to delete array elements
delete($array[index])

removes the value stored at index in @array and returns it
only if index equals $#array will the arrays size shrink to the

position of the highest element that returns true for exists()

@array = (0, 11, 22, 33);

delete($array [2]);

print $array [2] exists: ,exists($array [2])?T:F,
;

print Size of $array: ,$#array+1,
;

delete($array [3]);

print $array [3] exists: ,exists($array [3])?T:F,
;

print Size of $array: ,$#array+1,
;

$array [2] exists: F

Size of $array: 4

$array [3] exists: F

Size of $array: 2

COMP284 Scripting Languages Lecture 3 Slide L3 17

Lists and Arrays Foreach-loops

Control structures: foreach-loop

Perl provides the foreach-construct to loop through the elements of a
list

foreach $variable (list) {

statements

}

where $variable, the foreach-variable, stores a different element of the
list in each iteration of the loop

Example:

@my_list = (1..5 ,20 ,11..18);

foreach $number (@my_list) {

$max = $number if (! defined($max) || $number > $max);

}

print(Maximum number in ,join(,,@my_list), is $max
);

Output:

Maximum number in 1,2,3,4,5,20,11,12,13,14,15,16,17,18 is 20

COMP284 Scripting Languages Lecture 3 Slide L3 18

Lists and Arrays Foreach-loops

Control structures: foreach-loop

Changing the value of the foreach-variable changes the element of the list
that it currently stores

Example:

@my_list = (1..5 ,20 ,11..18);

print Before: .join(, ,@my_list ).
;

foreach $number (@my_list) {

$number ++;

}

print After:.join(, ,@my_list ).
;

Output:

Before: 1, 2, 3, 4, 5, 20, 11, 12, 13, 14, 15, 16, 17, 18

After: 2, 3, 4, 5, 6, 21, 12, 13, 14, 15, 16, 17, 18, 19

Note: If no variable is specified, then the special variable $_ will be
used to store the array elements

COMP284 Scripting Languages Lecture 3 Slide L3 19

Lists and Arrays Foreach-loops

Control structures: foreach-loop

An alternative way to traverse an array is

foreach $index (0..$#array) {

statements

}

where an element of the array is then accessed using $array[$index] in
statements

Example:

@my_list = (1..5 ,20 ,11..18);

foreach $index (0..$# my_list) {

$max = $my_list[$index] if ($my_list[$index] > $max);

}

print(Maximum number in ,join(,,@my_list), is $max
);

COMP284 Scripting Languages Lecture 3 Slide L3 20

Lists and Arrays Foreach-loops

Control structures: foreach-loop

In analogy to while- and until-loops, there are the following variants of
foreach-loops:

do { statements } foreach list;

statement foreach list;

In the execution of the statements within the loop, the special variable
$_ will be set to consecutive elements of list

Instead of foreach we can also use for:

do { statements } for list;

statement for list;

Example:

print Hello $_!
foreach (Peter,Paul,

Mary);

COMP284 Scripting Languages Lecture 3 Slide L3 21

Lists and Arrays Foreach-loops

Control structures: last and next

The last command can be used in while-, until-, and foreach-loops
and discontinues the execution of a loop

while ($value = shift($data)) {

$written = print(FILE $value );

if (! $written) { last; }

}

# Execution of last takes us here

The next command stops the execution of the current iteration
of a loop and moves the execution to the next iteration

foreach $x ( -2..2) {

if ($x == 0) { next; }

printf(10 / %2d = %3d
,$x ,(10/ $x));

}

10 / -2 = -5

10 / -1 = -10

10 / 1 = 10

10 / 2 = 5

COMP284 Scripting Languages Lecture 3 Slide L3 22

Hashes Identifiers

Hashes

A hash is a data structure similar to an array but it associates scalars
with a string instead of a number

Alternatively, a hash can be seen as a partial function mapping strings
to scalars

Remember that Perl can auto-magically convert any scalar into a string

Hash variables start with a percent sign followed by a Perl identifier

%identifier

A hash variable denotes the entirety of the hash

Perl uses

$identifier{key}

where key is a string, to refer to the value associated with key

COMP284 Scripting Languages Lecture 3 Slide L3 23

Hashes Identifiers

Hashes

Note that

$identifier

%identifier

are two unrelated variables (but this situation should be avoided)

An easy way to print all key-value pairs of a hash %hash is the following

use Data:: Dumper;

$Data :: Dumper ::Terse = 1;

print Dumper %hash;

Note the use of %hash instead of %hash
(%hash is a reference to %hash)

Data::Dumper can produce string representations for
arbitrary Perl data structures

COMP284 Scripting Languages Lecture 3 Slide L3 24

Hashes Basic hash operations

Basic hash operations

Initialise a hash using a list of key-value pairs

%hash = (key1 , value1 , key2 , value2 , );

Initialise a hash using a list in big arrow notation

%hash = (key1 => value1 , key2 => value2 , );

Associate a single value with a key

$hash{key} = value;

Remember that undef is a scalar value

$hash{key} = undef;

extends a hash with another key but unknown value

COMP284 Scripting Languages Lecture 3 Slide L3 25

Hashes Basic hash operations

Basic hash operations

One can use the exists or defined function to check
whether a key exists in a hash:

if (exists $hash{key}) { }

Note that if $hash{key} eq undef, then exists $hash{key} is true

The delete function removes a given key and its corresponding value
from a hash:

delete($hash{key});

After executing delete($hash{key}), exists $hash{key} will be
false

The undef function removes the contents and memory allocated to
a hash:

undef %hash

COMP284 Scripting Languages Lecture 3 Slide L3 26

Hashes Basic hash operations

Basic hash operations

It is also possible to assign one hash to another

%hash1 = %hash2;

In contrast to C or Java this operation creates a copy of %hash2
that is then assigned to %hash1

Example:

%hash1 = (a => 1, b => 2);

%hash2 = %hash1;

$hash1{b} = 4;

print $hash1{b } = $hash1{b }
;

print $hash2{b } = $hash2{b }
;

Output:

$hash1{b} = 4

$hash2{b} = 2

COMP284 Scripting Languages Lecture 3 Slide L3 27

Hashes Foreach

The each, keys, and values functions

each %hash returns a 2-element list consisting of the key and
value for the next element of %hash, so that one can
iterate over it

values %hash returns a list consisting of all the values of %hash,
resets the internal iterator for %hash

keys %hash returns a list consisting of all keys of %hash,
resets the internal iterator for %hash

Examples:

while ( ($key ,$value) = each %hash ) {

statements

}

foreach $key (sort keys %hash) {

$value = $hash{$key};

}

COMP284 Scripting Languages Lecture 3 Slide L3 28

Hashes Foreach

Example: Two-dimensional hash as a database

1 use List::Util sum;
2 $name{200846369 } = Jan Olsen ;
3 $marks{200846369 }{COMP201 } = 61;
4 $marks{200846369 }{COMP207 } = 57;
5 $marks{200846369 }{COMP213 } = 43;
6 $marks{200846369 }{COMP219 } = 79;
7
8 $average = sum(values($marks{200846369 }))/
9 scalar(values($marks{200846369 });

10 print(avg: $average
);

Output:

avg: 60

COMP284 Scripting Languages Lecture 3 Slide L3 29

Hashes Foreach

Example: Frequency of words

1 # Establish the frequency of words in a string
2 $string = peter paul mary paul jim mary paul;
3
4 # Split the string into words and use a hash
5 # to accumulate the word count for each word
6 ++ $count{$_} foreach split (/s+/,$string );
7
8 # Print the frequency of each word found in the
9 # string

10 while ( ($key ,$value) = each %count ) {
11 print($key => $value; );
12 }

Output:

jim => 1; peter => 1; mary => 2; paul => 3

COMP284 Scripting Languages Lecture 3 Slide L3 30

Hashes Foreach

Revision

Read

Chapter 3: Lists and Arrays

Chapter 6: Hashes

of

R. L. Schwartz, brian d foy, T. Phoenix:
Learning Perl.
OReilly, 2011.
Harold Cohen Library: 518.579.86.S39 or e-book

COMP284 Scripting Languages Lecture 3 Slide L3 31

Lecture 3
Control structures
Conditional statements
Switch statements
While- and Until-loops
For-loops

Lists and Arrays
Identifiers
List literals
Contexts
List and array functions
Foreach-loops

Hashes
Identifiers
Basic hash operations
Foreach

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] Java database data structure COMP284 Scripting Languages Handouts (8 on 1)
$25