Presentation is loading. Please wait.

Presentation is loading. Please wait.

Prof. Alfred J Bird, Ph.D., NBCT Office – McCormick 3rd floor 607 Office Hours – Tuesday and.

Similar presentations


Presentation on theme: "Prof. Alfred J Bird, Ph.D., NBCT Office – McCormick 3rd floor 607 Office Hours – Tuesday and."— Presentation transcript:

1 Prof. Alfred J Bird, Ph.D., NBCT abird@cs.umb.edu http://it441-s14-bird.wikispaces.umb.edu/ Office – McCormick 3rd floor 607 Office Hours – Tuesday and Thursday 4:00PM to 5:15PM

2  What is a Scalar?  Types of Scalars:  Numbers  Strings  Logical or Boolean  Automatic conversion between types

3  Decimal  Binary  Octal  Hexadecimal

4  What is a constant?  Why do we use a constant?  Write a simple program to print out a few constants.  Single quoted vs. Double quoted strings

5  What is a variable?  How do we name variables?  Starts with $  Next either letter or _  Rest can be letters or numbers  You should develop a pattern so you are consistent within your programs.  Make the name mean something!!!

6  + Addition  - Subtraction  * Multiplication  / Division  ** Exponentiation  % Modulo (Remainder)

7  && And  || Or  ! Not

8  == Equality  < Less Than  <= Less Than or Equal To  > Greater Than  >= Greater Than or Equal To

9 . Concatenation  x Repetition  ord()ASCII Value of a character  lt Less Than  gt Greater Than  eq Equal To

10  $x gt $y  $x lt $y  $x ge $y  $x le $y  $x eq $y  $x ne $y

11  $a++ Autoincrement  $b-- Autodecrement  Scoping: Blocks of code limit the range of a variables definition $numDef=25; print $numDef; { my $numDef=1; print $numDef;} print $numDef;

12  exit (0);  die $string;

13  A very helpful construct is the increment/decrement statement  $i++ is equivalent to $i = $i+1  $j = $i++  $j = ++$i  $j = $i - -  $j = - - $i

14  $x and &y  $x && $y  $x or $y  $x || $y  not $x  !$x

15  What is a control statement?  Types of control statements:  if  while  for

16  if  if ( condition ) { action }  if else  if (condition ) { action }  else {another action }  if elsif else  if ( condition ) { action }  elsif (another condition ) { another action }  …  else { a further action }

17  unless statement unless (condition) {action};  Reversed order print “Hello Al\n” if($inputName = “Al”); die “Can’t divide by zero\n:” if ($num4 == 0);

18  while loops  while ( condition ) { action }  $i=1;  while ($i<=5) {  print $i, “\n”;  $i++;  }  until loops  Same form but opposite action of the while loop

19  $_ is the default variable for many functions  while ( $line = ) {  chomp ($line);  …  }  while ( ) {  chomp;  …  }

20  There are three ways to modify the execution of the loop:  last;  next;  redo;  Statement labels  Labels a location in the program  Best to use all uppercase letters OUTER: while(…) { … }

21  do { action } while ( condition );  do { action } until ( condition );

22  for loop  for ( init_exp ; test_exp; step_exp) { action }  for ($i=1; $i<5; $i++) {print $i, “\n”;}

23  foreach my $number (1..10) {  print “The number is: $number \n”;  }

24  q// single quoted string  qq// double quoted string  In qq// the // can be replaced with any other non-alphanumeric character provided you use the same character on both ends of the string

25  $a = “123”  $b = “456”  What do we get if we write this line of code,  print $a + $b;  How about this line of code,  print $a. $b;

26  ** Exponentiation  -Unitary Negation  * Multiplication  /Division  %Modulo (Remainder)  +Addition  -Subtraction

27  Use the file handle  Try this out print “Input something:”; my $newInput= ; print $newInput;  chomp ($newInput);  chop($newInput);

28  We want to know for sure that we were successful opening the file so we include a test:  open (OUT1, “>>test.txt”) or die $!;

29  To use a filehandle you wrap it in angle brackets.  print OUT1 “Hello World!\n”;  chomp ($in = );

30  Remember what the redirectors do:  >  >>  <

31  Perl normally treats lines beginning with a # as a comment.  Get in the habit of including comments with your code.  Put a comment block at the beginning of your code which includes your name, the name of the module, date written and the purpose of the code.

32 #!/usr/bin/perl -w # #Module Name: helloWorld.pl # #Written by Alfred J Bird, Ph.D., NBCT #Date Written – 21 September 2011 #Purpose: To print out the string “Hello world!” # #Date Modified – 25 September, 2011 #Purpose of modification: To fix spelling errors. #Modified by: Al Bird # print “Hello world! \n”;

33  Remember there are three basic data types in Perl  Numeric  String  Boolean (Logical)  I differentiate between data types and data structures. Not every author or teacher does. Some books use the terms interchangeably so watch out!

34  In PERL there are three types of data structures:  Scalars  Arrays  Hashes  Each structure has it own naming syntax.  $scalar  @array  %hash

35  I do not consider a list a data structure but some authors, teachers and CS pros do so be careful.  A list is defined as an ordered set of scalar values.  Lists are delimited by parentheses such as  ()  (1)  (“a”)  (1, 2, 3, 4, 5)  (“a”, “b”, “c”, “d”, “e”)  (‘e’, ‘d’, ‘c’, ‘b’, ‘a’)  Remember that a list is ordered!

36  You have already been using lists without knowing it.  When you type the following statement print (“Hello ”, “world”, “! “, “\n”); You are passing a list to the print function.  I have just used a new Perl term, function.  A function is subroutine (a free standing piece of code) or an operator that returns a value and/or does something

37  Given a list we created this way: (‘Hello’, ‘world.’, ‘I’, ‘am’, Al’)  We can use another method to create it: qw/Hello world I am Al/  As with earlier similar operators we can use any nonalphanumeric character as a separator: qw#Hello world I am Al# qw&Hello world I am Al& qw{Hello world I am Al}

38  We can create a list by using a range.  This list (1, 2, 3, 4, 5, 6)  Is the same as this list (1..6)  But this will not work:  (6..1) does not give (6, 5, 4, 3, 2, 1)  because the left hand side must be less than the rhs  To get the list (6, 5, 4, 3, 2, 1) using a range we need to type reverse (1..6)  Try these using a print statement!

39  Remember that a list is ordered!  The elements have a location that can be counted  The counting starts with 0 (the 1 st element is number 0)  How do we print a list?  What is the result of the following statements? print (qw/a b c d e f g/);  How about this statement? print qw/a b c d e f g/;  First predict the results and then try them and see what happens.

40  We can refer to individual elements in a list by using a number in brackets [] after the list.  What is the result of the following statement? print ((qw/a b c d e f g/)[2]);  How about this statement: print ((‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’) [3]);  First predict the results and then try them and see what happens.  You can put a scalar variable into the braces $i = 3; print ((qw/a b c d e f g/)[$i]);

41  We can refer to a range inside the braces.  What do we get when we run the following statement: print ((qw/a b c d e f g/)[2..4]);  First predict the results and then run the statement.  What about this statement: print ((qw/a b c d e f g/)[3..1]);

42  What do you think will happen if you enter the following code: print ((‘z’, ‘x’, ‘c’, ‘v’, ’b’, ‘n’, ‘m’)[-1]);  First make a prediction and then run the code.  How about this code $i=2.9; print ((‘z’, ‘x’, ‘c’, ‘v’, ’b’, ‘n’, ‘m’)[$i]);  First make a prediction and then run the code.

43 The problem with a list is that it cannot be named! We need to retype the list every time we want to use it. To solve this difficulty we have a data structure called an array. We can give an array a name that starts with a @.

44  An array is a data structure that has the characteristics of a list but can be named!  To store a scalar into a variable we use an assignment statement $a = 1;  To store a list into an array we do the same thing:  @a = (1,2,3,4,5);  @l = (‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’);  @m = qw ;

45 How do we access an individual element in an array? Just like we did in a list.  Using a list if we code: print ((‘now’, ‘is’, ‘the’, ‘time’)[2]);  It will print out the  Likewise if we define an array: @s = (‘now’, ‘is’, ‘the’, ‘time’); print @s[2];  Will also print out the  What about print $s[2];? What will it print out?

46  Why does the statement print $s[2]; work?  Use the prefix for what you want not what you have.  This is referred to as list vs. scalar context.  It can become a very important concept later.

47  How do we add data to an array?  @array = (@array, $scalar); #is one way!  But there is a better way!!  push @array, $scalar; #will do the same thing!  push will append the value in $scalar to the top of @array  Likewise pop will take the last value in an array and do something with it.  $scalar = pop @array

48  push() and pop() act on the top of an array (the highest indexed end)  shift() and unshift() act on the bottom of an array and perform the same function.  We already know what reverse() does.

49  Another function is sort().  What do you think it does?  Write a simple program to try it with your array of months.  Predict the output before you try it.  What happened?  Now write a simple program to try it with your array of number of days.  Predict the output before you try it.  What happened?????  Why?????


Download ppt "Prof. Alfred J Bird, Ph.D., NBCT Office – McCormick 3rd floor 607 Office Hours – Tuesday and."

Similar presentations


Ads by Google