Difference between revisions of "Control Structures"

From CompSciWiki
Jump to: navigation, search
(Conditions)
m (Change italic to bold in intro)
 
(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Control Structures''' are blocks of code that force the computer to make a decision.  Sometimes you will want your program to perform different tasks depending on certain [[boolean]] conditions.  For example if you were writing a game you would probably find it very useful to be able to know when the user has won the game so that you could show a high scores page.
+
{{1010Chapter
 +
|ChapterNum=4
 +
|Picture=Wiki_sign01.jpg
 +
|Introduction='''Control Structures''' are blocks of code that force the computer to make a decision.  Sometimes you will want your program to perform different tasks depending on certain [[Common Primitive Variables#Primitive Type boolean|boolean]] conditions.  For example if you were writing a game you would probably find it very useful to be able to know when the user has won the game so that you could show a high scores page.
  
Without control structures programs would begin at the first line and excecute every line of code in order, giving the same output every time. Imagine how boring ''Tetris'' would be if there was only one piece!  Control structures allow you to change the order of execution, jumping from one section of code to another as needed.
+
If control structures were not used then programs would begin at the first line and excecute every line of code in order, giving the same output every time. Imagine how boring ''Tetris'' would be if there was only one piece!  Control structures allow you to change the order of execution, jumping from one section of code to another as needed.
  
 +
|Body=
 +
==[[The If-Statement]]==
  
==The If-Statement==
+
==[[The If-Else Statement]]==
===A First Example===
+
In this example the user is asked for a number and the program tells the user if the number is even.  Pay careful attention to lines '''05 to 08'''.
+
  
<pre>
+
==[[Conditions]]==
00 public static void main(String[] args)
+
01 {
+
02    int number;
+
03    number = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a number"));
+
04
+
05    if(number%2 == 0)
+
06    {
+
07        System.out.println("The number is even");
+
08    }//if
+
09
+
10 }//main
+
</pre>
+
  
The keyword '''if''' is used to tell the computer to make a decision based on a '''condition'''.  If the condition returns a value of ''true'' then the lines of code contained inside the '''body''' is executed.  If the condition returns ''false'' the code inside the body is skipped entirely.
+
==[[Nesting]]==
  
In this example the condition is '''number%2 == 0'''.  You can always identify the condition of an if-statement by looking at what is contained in the parentheses after the word ''if''.  The condition must always return either ''true'' or ''false''.  Any other values (such as a number, string, or character) will result in an error when you try to compile your program.
+
==[[Control Structures Review Questions and Exercises|Review Questions and Exercises]]==
  
The '''body''' of the if-statement is everything contained within the curled braces.  In this case the body contains one line: '''System.out.println("The number is even");'''.
+
|PChapterNum=3
 +
|PChapterLink=[[Calling Methods]]
 +
|NChapterNum=5
 +
|NChapterLink=[[Loops]]
 +
}}
  
Together the keyword ''if'', the condition, and the body form what is called an '''''if block''''' or '''''if statement'''''.
 
 
 
===Anatomy of the If-Statement===
 
As described in the previous example an if-statement is made up of several parts:
 
*the keyword '''if'''
 
*the '''condition'''
 
*the '''body'''
 
 
The general form for the if-statement is:
 
<pre>
 
if (condition)    //"if" and condition on same line, condition is contained inside parentheses
 
{
 
    body          //all statements that should be executed if and only if the condition returns a value of true
 
}//if
 
</pre>
 
 
 
==The If-Else Statement==
 
Sometimes it is not sufficient to simply tell the computer "If such-and-such condition is true do this".  Somtimes you will want to say "If such-and-such is true do this, ''otherwise'' do that".  A simple way of doing this would be to have a separate if-statement that will return the opposite value of the first:
 
 
<pre>
 
if (number%2 == 0)
 
{
 
    System.out.println("The number is even");
 
}//if
 
 
if (number%2 !=0)
 
{
 
    System.out.println("The number is odd");
 
}//if
 
</pre>
 
 
While this approach works, it is needlessly complicated; there is a better way of doing the same task, but with less work.  The keyword '''else''' can be used to tell the computer do execute a different body of code if the condition of an if-statement returns ''false''.  We can rewrite the code from above to take advantage of this keyword like this:
 
 
<pre>
 
if (number%2 == 0)
 
{
 
    System.out.println("The number is even");
 
}//if
 
 
else
 
{
 
    System.out.println("The number is odd");
 
}//else
 
</pre>
 
 
If we step through this last example the computer will evaluate the condition ''number%2 == 0'' and check the result.  If the result is ''true'' the body of the if-statement will be executed, just like in the previous examples.  If the result is ''false'' then the body of the '''else-statement''' is executed.
 
 
The keyword ''else'' and the corresponding body form what is called an '''''else-block''''' or '''''else-statement'''''.  It is very important to note that an else-block is always associated with an if-block, and each if-block can only ever be associated with zero or one else-blocks.
 
 
Together the keywords ''if'', ''else'', the condition, and the two bodies form a code-block known as an '''''if-else block''''' or '''''if-else statement'''''.
 
 
 
===Anatomy of the If-Else Statement===
 
The if-else statement is made up of the following parts:
 
*the keyword '''if'''
 
*the '''condition'''
 
*the '''body''' of the if-statement
 
*the keyword '''else'''
 
*the '''body''' of the else-statement
 
 
The general form of an if-else statement is:
 
<pre>
 
if (condition)
 
{
 
    code to execute if condition == true
 
}
 
 
else
 
{
 
    code to execute if condition == false
 
}
 
</pre>
 
 
 
==Conditions==
 
===Logical and Relative Operators===
 
What happens if you have a statement the requires several conditions to be true before it will be executed? You could nest if statements, but this is messy are certainly not good practice. This is where logical operators come in. The snippet of code below is 100% valid, but is overly complicated.
 
 
<PRE>
 
if (x == 1)
 
{
 
  if (y == 1)
 
  {
 
    System.out.println("X is 1 and Y is 1");
 
  }
 
}
 
</PRE>
 
 
The next version will yield the same result. Also, it shows how logical operators can clean up code.
 
 
<PRE>
 
if (x == 1 && y == 1)
 
{
 
  System.out.println("X is 1 and Y is 1");
 
}
 
</PRE>
 
 
There are three logical operators used for conditional statements. They are ''AND'', ''OR'', and ''NOT''. The ''AND'' is represented in code as '''&&'''. The ''OR'' is represented as '''||'''. Lastly, the ''NOT'' is represented as '''!'''. The purpose of these operators is to combine the boolean values of all the conditions and come up with a single boolean value.
 
 
Relational operators are nothing new. You have seen and been using them and probably did not realize it. Relational operators are part of what makes up a conditional statement. They will determine whether a condition will be true or false. Below is a list of the different relational operators.
 
 
<PRE>
 
Operator  True if...
 
  >      Left operand is greater than right operand
 
  >=      Left operand is greater than or equal to right operand
 
 
  <      Left operand is less than right operand
 
  <=      Left operand is less than or equal to right operand
 
 
  ==      Left operand is equal to right operand
 
  !=      Left operand is not equal to right operand
 
</PRE>
 
 
The operands are the numbers that are being compared.
 
 
Now that you know what logical and relative operators are, you can start to build more complex statements.
 
 
===Comparing Strings===
 
Strings are a very large subject so we will only touch the basics about comparing strings in this section. The first way to compare strings is by using the relational operators. The most common approach is to use the '''==''' to see if two strings are equal. Here is an example on how strings can be compared.
 
 
<PRE>
 
String str1 = "hello";
 
String str2 = "hello";
 
 
if (str1 == str2)
 
  System.out.println("The strings are equal");
 
else
 
  System.out.println("The strings are not equal");
 
</PRE>
 
 
The example above will print out "The strings are equal". It seems simple enough. However, when using the '''==''' to compare strings, it will compare by reference instead of by value. Another example will help demonstrate what this means.
 
 
<PRE>
 
String str1 = "hello";
 
String str2 = "he";
 
String str3 = "llo";
 
str2 = str2 + str3; // The value is now "hello".
 
 
if (str1 == str2)
 
  System.out.println("The strings are equal");
 
else
 
  System.out.println("The strings are not equal");
 
</PRE>
 
 
What will be the output of the code above? If you said "The strings are equal" because "hello" is equal to "hello" even though they are concatenated together, you are wrong. We will avoid explaining the details for now. All you need to know is that the values of the strings are '''NOT''' being compared. This will vary between every programming language. In C# you may compare by values or by references, while in Java you can compare references only.
 
 
There is a safer way to compare strings. The [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html Java String API] contains dozens of useful methods, but we will only look at one. The "equals" method is a great way to compare the values between two strings. Here is the same code as above using the "equals" method for comparison.
 
 
<PRE>
 
String str1 = "hello";
 
String str2 = "he";
 
String str3 = "llo";
 
str2 = str2 + str3; // The value is now "hello".
 
 
if (str1.equals(str2))
 
  System.out.println("The strings are equal");
 
else
 
  System.out.println("The strings are not equal");
 
</PRE>
 
 
This time the program will print out "The strings are equal".
 
 
==Nesting==
 
 
===If-Else Ladders===
 
====A Second Example====
 
The following program asks the user for two sports scores and tells the user which team won or if the game was a draw.  The key components to pay attention to are lines '''07 to 14'''.
 
 
<pre>
 
00 public static void main(String[] args)
 
01 {
 
02    int scoreA, scoreB;
 
03   
 
04    scoreA = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Team A's score"));
 
05    scoreB = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Team B's score"));
 
06
 
07    if(scoreA > scoreB)
 
08    {
 
09        System.out.println("Team A won");
 
10    }//if
 
11
 
12    else if(scoreA < scoreB)
 
13    {
 
14        System.out.println("Team B won");
 
15    }//else if
 
16
 
17    else
 
18    {
 
19        System.out.println("The game was a draw");
 
20    }//else
 
21 }//main
 
</pre>
 
 
 
==Review Questions and Exercises==
 
  
 
{{Category:COMP 1010}}
 
{{Category:COMP 1010}}
{{Category:Java}}
 

Latest revision as of 13:57, 7 December 2011


Wiki 1010 Table of Contents

Wiki sign01.jpg

Chapter 4

Control Structures are blocks of code that force the computer to make a decision. Sometimes you will want your program to perform different tasks depending on certain boolean conditions. For example if you were writing a game you would probably find it very useful to be able to know when the user has won the game so that you could show a high scores page.

If control structures were not used then programs would begin at the first line and excecute every line of code in order, giving the same output every time. Imagine how boring Tetris would be if there was only one piece! Control structures allow you to change the order of execution, jumping from one section of code to another as needed.

  Write a Program a Day Case Studies

The If-Statement

The If-Else Statement

Conditions

Nesting

Review Questions and Exercises




Chapter 3: Calling Methods Table of Contents Chapter 5: Loops



Template loop detected: