A handy system feature is the ability to put one or more commands into a file and then execute the file, instead of giving all of the commands directly to the shell. This is called a shell script. For example, we can use a shell script to keep from having to type that long print command (nenscript -2rG filename) by putting the command, slightly modifed (see below), into a file called print (or something else if you prefer) in your home directory. After changing the permissions on the file to make it executable (text files aren't executable by default), you can refer to it instead of the whole command. Here are the steps:
           nenscript -2rG $1 
This looks just like the print command you have been using, but it has a $1
instead of the filename.
The $1 
is an argument, or parameter; 
it tells the command to use whatever you type after
the name of this script file in the place of the $1.
           ls -l print
Look at the permissions; you should see that no one has execute permission.
To change this, issue the following command:
           chmod a+x print
The Unix command chmod changes the permissions, or mode, of a file.  The
"a+x" part means for all(a) users, add(+) the execute(x) privilege.  The 
last part (print) is just the name of the file.  If you look at the 
permissions again, you'll see that the file is now executable.
           ~/print filename
This tells it to use the print command in your home directory to print
the file.
Variables
A variable is a name for a memory location that holds a value. The value that is stored in this location can be changed, hence the name variable. In Java, a variable must be declared before it can be used. The declaration gives the type of value that will be stored so that the compiler knows how much space to allocate for it. By convention, Java variables start with a lower case letter.
A constant is simply a name for a value. As its name implies, its value cannot be changed. In Java, a constant declaration looks just like a variable declaration except it has the reserved word final in front. By convention, constants are written in all capitals so that they are easily distinguished from variables.
Study the program below, which uses both variables and constants:
//**************************************************************
// File: Circle.java
// Name: 
//
// Purpose: Print the area of a circle with two different radii
//**************************************************************
public class Circle
{
    public static void main(String[] args)
    {
     final double PI = 3.14159;
     
     int radius = 10;
     double area = PI * radius * radius;
     System.out.println("The area of a circle with radius " + radius +
                        " is " + area);
    }
}
Some things to notice:
Save this program, which is in file Circle.java, into your lab2 directory and modify it as follows:
    import java.util.Scanner;
This tells the compiler that you will be using methods from the Scanner class
which is defined in the java.util class library.
    Scanner scan = new Scanner (System.in);
Print your Circle.java to turn in. Use the command
       ~/print Circle.java
//**********************************************************
//  File: Paint.java
//  Name: 
//
//  Purpose: Determine how much paint is needed to paint the walls 
//  (not including the floor or ceiling) of a room given its length, 
//  width, and height
//**********************************************************
import java.util.Scanner;
public class Paint
{
    public static void main(String[] args)
    {
	final double COVERAGE = 350.0;  //paint covers 350 sq ft/gal
        //declare integers length, width, and height
	//declare integers sideWallArea, endWallArea, and totalArea
        //declare double paintNeeded
        // Create a Scanner object (named scan)
        //Prompt for and read in the length of the room
        //Prompt for and read in the width of the room
        //Prompt for and read in the height of the room
	//Compute the area of a side wall (running the length 
	//of the room) in square feet.
	//Compute the area of an end wall (running the width 
	//of the room) in square feet.
        //Compute the total square feet to be painted (4 walls!)
        //Compute the amount of paint needed
        //Print the length, width, and height of the room, the total
	//area, and the number of gallons of paint needed.
    }
}
Save this file
to your lab2 directory and do the following:
Print your Paint.java to turn in.
The program LabGrade.java (printout attached) is supposed to compute the lab grade for a student. To do this it gets as input the number of points the student earned on the prelab assignment and the maximum number of points the student could have earned; the number of points earned on the lab itself and the maximum number of points; the number of points earned on the postlab assignment and the maximum number of points. The lab grade is computed as described above: the in-class and out-of-class grades (in percent) are computed separately then a weighted average of these is computed. The program currently assumes the out-of-class work counts 40% and the in-class counts 60%. Note that the constants store the out-of-class and in-class weights and that variables are used to store the values entered by the user. Do the following:
Welcome to the Lab Grade Calculator Enter the number of points you earned on the pre-lab: 17 What was the maximum number of points you could have earned? 20 Enter the number of points you earned on the lab: 23 What was the maximum number of points for the lab? 25 Enter the number of points you earned on the post-lab: 11 What was the maximum number of points for the post-lab? 15
preLabPts _______ preLabMax ________ labPts _______ labMax ______ postLabPts _______ postLabMax ________
outClassAvg = preLabPts + postLabPts / preLabMax + postLabMax * 100;The expression on the right side of the assignment has 4 operators (two +'s, a /, and a *). Show the order in which the operations will be performed by numbering the operations -- that is, put a 1 above the operation that will be performed first, a 2 above the operation that will be performed next, and so on.
Now, for the particular input above the expression in the assignment becomes
        17 + 11 / 20 + 15 * 100
Show what the computer will get for the value of this expression (show
the steps and the final answer).
         inClassAvg =  labPts / labMax * 100;
Print your corrected LabGrade.java to turn in.
Making a tar file
An easy way to send someone several files at once is to make a tar file. (Tar stands for tape archive, a rather archaic name for this function.) To "tar up" everything in your lab2 directory, do the following:
tar czf lab2.tgz .This strange looking command can be understood as follows:
c -- "create" a file containing the tarred up files z -- "zip" this file, that is, compress it so it takes less space f -- use the next argument to name this file lab2.tgz -- the name to be used for the tar file . -- tar up everything in the current directory
What to turn in