Difference between revisions of "OOP Class3"
(→if) |
|||
(51 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:IAM Classes]] |
+ | ==Conversion Casting== | ||
+ | Casting is the process of converting form one type of object to another, There are two Conversion types in C# implicit and explicit. Implicit conversion is handled by the compiler and requires no extra work. Implicit conversion is only possible if the new data type can hold the old data type with out any data loss. explicit conversion forces on datatype into another even if it doesn't fit. It is up to the programmer to define explicit casts. | ||
+ | |||
+ | ===implicit conversion=== | ||
+ | |||
+ | <syntaxhighlight lang="csharp" >int intNumber = 1000; | ||
+ | long lngNumber; | ||
+ | lngNumber = intNumber; | ||
+ | |||
+ | int Number1= 6; | ||
+ | int Number2= 5; | ||
+ | int Number3 = Number1 / Number2; | ||
+ | //Number3 == 1 NOT 1.2 because Number3 is an int | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class2/implicitConversion.cs implicitConversion.cs] | ||
+ | |||
+ | ===explicit conversion=== | ||
+ | |||
+ | <syntaxhighlight lang="csharp">long lngNumber = 1000; | ||
+ | int intNumber; | ||
+ | intNumber = (int)lngNumber; | ||
+ | |||
+ | int Number1= 6; | ||
+ | int Number2= 5; | ||
+ | double Number3 = (double)Number1 / (double)Number2; | ||
+ | //Number3 == 1.2</syntaxhighlight> | ||
+ | |||
+ | [http://iam.colum.edu/poop/gbrowser.php?file=/classsource/class2/explicitConversion.cs explicitConversion.cs] | ||
+ | |||
+ | Some types cannot be cast from one type to another but the Framework has it's ows Conversion Class. | ||
+ | [http://iam.colum.edu/quickstart/util/classbrowser.aspx?assembly=mscorlib,%20Version=2.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089&namespace=System&class=Convert Convert ] | ||
+ | |||
+ | [http://iam.colum.edu/poop/gbrowser.php?file=/classsource/class2/ConvertClass.cs ConvertClass.cs] and Emample of using the convert class to convert an interger to a boolean | ||
=Operators= | =Operators= | ||
Line 9: | Line 43: | ||
The Assigment operator in c# is the '=' sign. You can assign variables like this... | The Assigment operator in c# is the '=' sign. You can assign variables like this... | ||
− | <csharp>int myVar; //declare varible of type int called myVar | + | <syntaxhighlight lang="csharp">int myVar; //declare varible of type int called myVar |
− | myVar = 15; //assign myVar the value of 15 using the '=' sign</ | + | myVar = 15; //assign myVar the value of 15 using the '=' sign</syntaxhighlight> |
==Comparison Operators== | ==Comparison Operators== | ||
Line 26: | Line 60: | ||
|>= ||Greater than or equal to | |>= ||Greater than or equal to | ||
|- | |- | ||
− | |!= || | + | |!= ||Inequality |
|} | |} | ||
Line 39: | Line 73: | ||
|! || Logical NOT | |! || Logical NOT | ||
|} | |} | ||
+ | |||
+ | ==Boolean Expressions== | ||
+ | Logical operators usually work on bollean expressions. Boolean expressions are is a statement that evaluates to true of false | ||
+ | |||
+ | (1 < 2) | ||
+ | or | ||
+ | (y == x) | ||
+ | |||
+ | Boolean expressions are often grouped with logical operator to combine comparisons | ||
+ | |||
+ | (x > 0) && (x <100) //x is greater than 0 and less than 100 | ||
+ | |||
+ | (x < 0) || (x >100) //x is less than zero or x is greater than 100 | ||
==Logical operator Precedence== | ==Logical operator Precedence== | ||
Line 63: | Line 110: | ||
syntax | syntax | ||
− | <csharp>if (expression) | + | <syntaxhighlight lang="csharp">if (expression) |
// statement | // statement | ||
Line 76: | Line 123: | ||
else { | else { | ||
// statements | // statements | ||
− | }</ | + | }</syntaxhighlight> |
Line 94: | Line 141: | ||
if example [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/IfSelection.cs IfSelection.cs - source] | if example [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/IfSelection.cs IfSelection.cs - source] | ||
− | The following code uses a bunch of operator and if | + | The following code uses a bunch of operator and if statements to do some basic sanity checks. Analyze it and try to predict the output<br> |
sanityCheck.cs - source | sanityCheck.cs - source | ||
Line 111: | Line 158: | ||
example 1 | example 1 | ||
− | <csharp>// switch with integer type | + | <syntaxhighlight lang="csharp">// switch with integer type |
switch (myInt) | switch (myInt) | ||
{ | { | ||
Line 126: | Line 173: | ||
Console.WriteLine("Your number {0} is not between 1 and 3.", myInt); | Console.WriteLine("Your number {0} is not between 1 and 3.", myInt); | ||
break; | break; | ||
− | }</ | + | }</syntaxhighlight> |
+ | |||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/Switch1to3.cs Switch1to3.cs]<br /> | ||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/Switch1to3WithTryAndCatch.cs Switch1to3WithTryAndCatch.cs]<br /> | ||
fall though and goto case | fall though and goto case | ||
− | <csharp>// fall though and goto case | + | <syntaxhighlight lang="csharp">// fall though and goto case |
switch (myChoice) | switch (myChoice) | ||
{ | { | ||
Line 146: | Line 196: | ||
Console.WriteLine("Please vote...."); | Console.WriteLine("Please vote...."); | ||
break; | break; | ||
− | }</ | + | }</syntaxhighlight> |
+ | |||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/SwitchPolitics.cs SwitchPolitics.cs]<br /> | ||
==Looping Statements== | ==Looping Statements== | ||
Line 155: | Line 207: | ||
− | <csharp>for (int i=0; i < 10; i++) | + | <syntaxhighlight lang="csharp">for (int i=0; i < 10; i++) |
{ | { | ||
forOneResult += "For Loop " + i + "<br />"; | forOneResult += "For Loop " + i + "<br />"; | ||
− | }</ | + | }</syntaxhighlight> |
Produces | Produces | ||
Line 173: | Line 225: | ||
For Loop 9 | For Loop 9 | ||
</pre> | </pre> | ||
− | <csharp>for (int i=0; i < 20; i++) | + | <syntaxhighlight lang="csharp">for (int i=0; i < 20; i++) |
{ | { | ||
if (i == 10) | if (i == 10) | ||
Line 182: | Line 234: | ||
forTwoResult += "For Loop " + i + "<br />"; | forTwoResult += "For Loop " + i + "<br />"; | ||
− | }</ | + | }</syntaxhighlight> |
Produces | Produces | ||
Line 202: | Line 254: | ||
while (expression) statement | while (expression) statement | ||
− | <csharp>string whileLoopResult = ""; | + | <syntaxhighlight lang="csharp">string whileLoopResult = ""; |
− | int | + | int MyInt = 0; |
− | while ( | + | while (MyInt < 10) |
{ | { | ||
− | Whileloopresult +="While Loop " + | + | Whileloopresult +="While Loop " + MyInt + "\n"; |
− | + | MyInt++; | |
− | }</ | + | }</syntaxhighlight> |
produces | produces | ||
Line 231: | Line 283: | ||
− | <csharp>string doLoopResult = ""; | + | <syntaxhighlight lang="csharp">string doLoopResult = ""; |
int myIntDo = 0; | int myIntDo = 0; | ||
do | do | ||
{ | { | ||
− | doLoopResult +="do Loop " + myIntDo + " | + | doLoopResult +="do Loop " + myIntDo + "\n"; |
myIntDo++; | myIntDo++; | ||
− | } while (myIntDo < 10);</ | + | } while (myIntDo < 10);</syntaxhighlight> |
produces | produces | ||
Line 255: | Line 307: | ||
− | <csharp>string doLoopResult2 = ""; | + | <syntaxhighlight lang="csharp">string doLoopResult2 = ""; |
int myIntDo2 = 30; | int myIntDo2 = 30; | ||
do | do | ||
{ | { | ||
− | doLoopResult2 +="do Loop " + myInt + " | + | doLoopResult2 +="do Loop " + myInt + "\n"; |
myIntDo2++; | myIntDo2++; | ||
− | } while (myIntDo2 < 10);</ | + | } while (myIntDo2 < 10);</syntaxhighlight> |
produces | produces | ||
Line 268: | Line 320: | ||
==for each== | ==for each== | ||
− | A for | + | A for each loop requires and iterator.. more on this iterator thing later... |
− | <csharp>string[] names = {"Cheryl", "Joe", "Matt", "Robert"}; | + | <syntaxhighlight lang="csharp">string[] names = {"Cheryl", "Joe", "Matt", "Robert"}; |
foreach (string person in names) | foreach (string person in names) | ||
{ | { | ||
Console.Write (" " + person); | Console.Write (" " + person); | ||
− | }</ | + | }</syntaxhighlight> |
produces<br> | produces<br> | ||
− | Cheryl Joe Matt Robert | + | |
+ | <pre> | ||
+ | Cheryl Joe Matt Robert | ||
+ | </pre> | ||
[http://iam.colum.edu/poop/gbrowser.php?file=/classsource/class3/ForEachLoop.cs ForEachLoop.cs - source] | [http://iam.colum.edu/poop/gbrowser.php?file=/classsource/class3/ForEachLoop.cs ForEachLoop.cs - source] | ||
− | The for each loop is a key component in polymorphism | + | The for each loop is a key component in polymorphism. Remember the age selector example what if we want to select more than one age. It would be simple to change the dropdownlist into a listbox and turn SelectionMode ="Multiple" so the user can select multiple items but how do check to see if every Item is selected. Is to have each item check itself and use a for each loop. |
− | |||
− | + | ==Generics== | |
− | |||
− | + | *List | |
− | + | *Queue | |
− | + | *Stack | |
+ | *.etc | ||
+ | |||
+ | ==IN Class== | ||
+ | |||
+ | Build a c# app that writes the words to 99 bottles of beer on the wall using a loopin statement | ||
+ | [[99 bottles of beer csharp example]] | ||
==Try and Catch== | ==Try and Catch== | ||
− | <csharp>try | + | Try and catch is useful when you are going to do something that may cause a runtime error. These arrroe my occur when |
+ | |||
+ | *Parsing user input | ||
+ | *Converting Datatypes | ||
+ | *Trying to connect to a remote server | ||
+ | *Connecting to a database | ||
+ | |||
+ | For example consider a program that asks the user what their favorite number is. | ||
+ | |||
+ | <syntaxhighlight lang="csharp"> | ||
+ | using System; | ||
+ | using System.Collections.Generic; | ||
+ | using System.Text; | ||
+ | |||
+ | namespace FavoriteNumber | ||
+ | { | ||
+ | class Program | ||
+ | { | ||
+ | static void Main(string[] args) | ||
+ | { | ||
+ | int intFavNumber; | ||
+ | string strFavNumber; | ||
+ | |||
+ | Console.Write("What is you favorite number?"); | ||
+ | strFavNumber = Console.ReadLine(); | ||
+ | |||
+ | intFavNumber = Int16.Parse(strFavNumber); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | if you type 'monkey' for your favorite number the program crashes with the folling message | ||
+ | <pre> | ||
+ | |||
+ | Unhandled Exception: System.FormatException: Input string was not in a correct format. | ||
+ | at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolea | ||
+ | n parseDecimal) | ||
+ | at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) | ||
+ | at System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) | ||
+ | at FavoriteNumber.Program.Main(String[] args) | ||
+ | </pre> | ||
+ | |||
+ | This program can be fixed be using a try and catch | ||
+ | |||
+ | <syntaxhighlight lang="csharp">try | ||
{ | { | ||
//some crazy code that may cause errors | //some crazy code that may cause errors | ||
Line 300: | Line 405: | ||
{ | { | ||
string FstrError = e.ToString(); | string FstrError = e.ToString(); | ||
− | }</ | + | }</syntaxhighlight> |
− | + | ||
− | |||
Console Example | Console Example | ||
+ | http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/try.cs | ||
− | <csharp>using System; | + | <syntaxhighlight lang="csharp">using System; |
namespace HelloClass | namespace HelloClass | ||
{ | { | ||
Line 321: | Line 426: | ||
catch (Exception e) | catch (Exception e) | ||
{ | { | ||
− | //put | + | //put Exceptioninto string strError |
string strError = e.ToString(); | string strError = e.ToString(); | ||
//write error to label lblOutput | //write error to label lblOutput | ||
Line 328: | Line 433: | ||
} | } | ||
} | } | ||
− | }</ | + | }</syntaxhighlight> |
<pre> | <pre> | ||
C:\User\csharp>csc try.cs | C:\User\csharp>csc try.cs | ||
Line 344: | Line 449: | ||
</pre> | </pre> | ||
/infod/jeff/classSource/class2/try.cs - source | /infod/jeff/classSource/class2/try.cs - source | ||
+ | |||
+ | {{Csharp string functions}} | ||
+ | |||
==Functions/Methods== | ==Functions/Methods== | ||
Line 364: | Line 472: | ||
Defining | Defining | ||
− | <csharp>string Hello () | + | <syntaxhighlight lang="csharp">string Hello () |
{ | { | ||
return "Hello "; | return "Hello "; | ||
Line 372: | Line 480: | ||
{ | { | ||
return "Hello " + Name; | return "Hello " + Name; | ||
− | }</ | + | }</syntaxhighlight> |
Calling a finction in c# | Calling a finction in c# | ||
− | <csharp>string firstHello, jeffHello; //declare some strings | + | <syntaxhighlight lang="csharp">string firstHello, jeffHello; //declare some strings |
firstHello = Hello(); //call the function Hello | firstHello = Hello(); //call the function Hello | ||
jeffHello = HelloToName("Jeff"); //call the function HelloToName | jeffHello = HelloToName("Jeff"); //call the function HelloToName | ||
− | </ | + | </syntaxhighlight> |
Console Example | Console Example | ||
Line 401: | Line 509: | ||
</pre> | </pre> | ||
− | + | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/function.cs function.cs] | |
− | / | ||
Passing variable into a function/method passes be instance. Variables passed by instance do not actually pass in the original variable rather a copy or new instance of the variable is passed. It you want to pass in the actual variable you need to pass be referance | Passing variable into a function/method passes be instance. Variables passed by instance do not actually pass in the original variable rather a copy or new instance of the variable is passed. It you want to pass in the actual variable you need to pass be referance | ||
Line 408: | Line 515: | ||
/infod/jeff/classSource/class3/instanceReference.aspx - Source | /infod/jeff/classSource/class3/instanceReference.aspx - Source | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Variables== | ==Variables== | ||
===Scope=== | ===Scope=== | ||
Line 444: | Line 522: | ||
Variables declared with functions/methods are only around as long as the function/method is running. These variables are known as local varables | Variables declared with functions/methods are only around as long as the function/method is running. These variables are known as local varables | ||
− | Global Variables | + | ===Global Variables=== |
+ | |||
+ | Global variables are variables that are around for the entire length of execution. They are declared a public within the programs base class.<br /> | ||
+ | In c# since everything must be contianed in a class global variables do not really exist. | ||
+ | |||
+ | ===Block Level Variables=== | ||
+ | |||
+ | Block level variables exitist with the code block.<br /> | ||
+ | A code block is contained by { }. | ||
+ | |||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/Scope.cs Scope.cs]<br /> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Additional Reading== | ||
+ | |||
+ | *http://www.csharp-station.com/Tutorials/Lesson03.aspx | ||
+ | *http://www.csharp-station.com/Tutorials/Lesson04.aspx | ||
+ | |||
+ | ==Structs== | ||
+ | |||
+ | Lightweight alternatives to classes. Structs do not support inheritance or destructors. Don't worry if you don't understand structs yet it hard cuz the book teaches them before classes. We will talk more about stucts after we talk about classes | ||
+ | Syntax | ||
+ | |||
+ | [ attributes] [access-modifiers] struct identifier | ||
+ | [:interface-list {struct members} | ||
+ | |||
+ | <syntaxhighlight lang="csharp">struct Dog | ||
+ | { | ||
+ | public string name; | ||
+ | public string weight; | ||
+ | public int age; | ||
+ | }</syntaxhighlight> | ||
+ | |||
+ | ==Enumerators== | ||
+ | |||
+ | Enumerators are used to set predefined list of named constants. | ||
+ | Syntax | ||
+ | |||
+ | [ attributes] [modifiers] enum identifier | ||
+ | [:base-type {enumerator-list}; | ||
+ | |||
+ | <syntaxhighlight lang="csharp">//An enumerator for ServingSizes at BK | ||
+ | enum ServingSizes : uint | ||
+ | { | ||
+ | Small = 0, | ||
+ | Regular = 1, | ||
+ | Large = 2, | ||
+ | SuperSize = 3 | ||
+ | }</syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="csharp">//another more useful example | ||
+ | // forced sequence to start | ||
+ | // from 1 instead of 0 (default) | ||
+ | enum Months | ||
+ | { | ||
+ | January = 1, February , March, April , | ||
+ | May , June , July , August , Sept , Oct , Nov , Dec | ||
+ | }</syntaxhighlight> | ||
+ | |||
+ | Enumerator Example [http://iam.colum.edu/Poop/gbrowser.php?file=/classsource/class2/Enum.cs Enum.cs] | ||
+ | |||
+ | ==Home work== | ||
+ | |||
+ | 2. Read Chapter 6,7 in Learning c# | ||
+ | |||
+ | *Create a console Game of Chance 2 pts | ||
+ | **A coinflipper | ||
+ | **A dice roller | ||
+ | **Guess My Number | ||
+ | |||
+ | The game should contain some level of randomness. | ||
+ | It should also demonstrate operators and branching statements. It would sure be nice if the game had some level input from the user. | ||
+ | |||
+ | |||
+ | Here is an example coin flipper worth 2 pts | ||
+ | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/CoinFilpperSimple.cs CoinFilpperSimple.cs] | ||
+ | |||
+ | This game flips a whole bunch of coins two and compares the results. If the two coins are the same then you are a winner and it displays true. If they are different then you loose and if displays false. | ||
+ | This program was created to test the old question 'If you flip a coins 99 times and get 99 head what are the odds of the 100th flip turning up heads?' | ||
+ | |||
+ | It shows some strange properties of randomness. | ||
− | + | [http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/CoinFilpperFunner.cs CoinFilpperFunner.cs] | |
− | |||
− | + | This is the end of the intro review... |
Latest revision as of 16:37, 10 June 2019
Contents
- 1 Conversion Casting
- 2 Operators
- 3 Branching
Conversion Casting
Casting is the process of converting form one type of object to another, There are two Conversion types in C# implicit and explicit. Implicit conversion is handled by the compiler and requires no extra work. Implicit conversion is only possible if the new data type can hold the old data type with out any data loss. explicit conversion forces on datatype into another even if it doesn't fit. It is up to the programmer to define explicit casts.
implicit conversion
int intNumber = 1000;
long lngNumber;
lngNumber = intNumber;
int Number1= 6;
int Number2= 5;
int Number3 = Number1 / Number2;
//Number3 == 1 NOT 1.2 because Number3 is an int
explicit conversion
long lngNumber = 1000;
int intNumber;
intNumber = (int)lngNumber;
int Number1= 6;
int Number2= 5;
double Number3 = (double)Number1 / (double)Number2;
//Number3 == 1.2
Some types cannot be cast from one type to another but the Framework has it's ows Conversion Class. Convert
ConvertClass.cs and Emample of using the convert class to convert an interger to a boolean
Operators
ECMA-334 Operators and punctuators
Assignment
The Assigment operator in c# is the '=' sign. You can assign variables like this...
int myVar; //declare varible of type int called myVar
myVar = 15; //assign myVar the value of 15 using the '=' sign
Comparison Operators
Operator | Description |
== | Equality |
< | Less Than |
<= | Less than or equal to |
> | Greater than |
>= | Greater than or equal to |
!= | Inequality |
Logical Operators
Operator | Description |
&& | Logical AND |
II | Logical OR (note the II are really pipes) |
! | Logical NOT |
Boolean Expressions
Logical operators usually work on bollean expressions. Boolean expressions are is a statement that evaluates to true of false
(1 < 2) or (y == x)
Boolean expressions are often grouped with logical operator to combine comparisons
(x > 0) && (x <100) //x is greater than 0 and less than 100
(x < 0) || (x >100) //x is less than zero or x is greater than 100
Logical operator Precedence
- ! (NOT)
- && (AND)
- || (OR)
Branching
evil goto - I won't show it figure it out on your own...
- if
- switch
Looping
- for
- while
- do... while
- foreach
Branching Statements
if
syntax
if (expression)
// statement
if (expression) {
// statements
// statements
}
if (expression) {
// statements
// statements
}
else {
// statements
}
About braces and indenting. I usually use BSD/Allman Style.
Jargon File
indent style n.
The One True Brace Style
Console Input There are several ways to get data into your program. One of the simplest is to have someone type it into the console. The frame work supports Console.ReadLine() this method reads on line from the input of the console.
EchoOnce.cs
Another popular way to get data into your program is to send it in as an argument when the program is run.
HelloName.cs
HelloNameSafe.cs
if example IfSelection.cs - source
The following code uses a bunch of operator and if statements to do some basic sanity checks. Analyze it and try to predict the output
sanityCheck.cs - source
switch
syntax
switch (expression)
{ case constant-expression: statement jump-statement [default: statement] }
example 1
// switch with integer type
switch (myInt)
{
case 1:
Console.WriteLine("Your number is {0}.", myInt);
break;
case 2:
Console.WriteLine("Your number is {0}.", myInt);
break;
case 3:
Console.WriteLine("Your number is {0}.", myInt);
break;
default:
Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
break;
}
Switch1to3.cs
Switch1to3WithTryAndCatch.cs
fall though and goto case
// fall though and goto case
switch (myChoice)
{
case "NewLeft":
Console.WriteLine("Newleft is voting Democratic.");
goto case "Democrat";
case "Democrat":
Console.WriteLine("You voted Democratic.");
break;
case "CompassionateRepublican":
case "Republican":
Console.WriteLine("You voted Republican.");
break;
default:
Console.WriteLine("Please vote....");
break;
}
Looping Statements
for
syntax
for ([initializers]; [expression]; [iterators]) statement
for (int i=0; i < 10; i++)
{
forOneResult += "For Loop " + i + "<br />";
}
Produces
For Loop 0 For Loop 1 For Loop 2 For Loop 3 For Loop 4 For Loop 5 For Loop 6 For Loop 7 For Loop 8 For Loop 9
for (int i=0; i < 20; i++)
{
if (i == 10)
break;
if (i % 2 == 0)
continue;
forTwoResult += "For Loop " + i + "<br />";
}
Produces
For Loop 1 For Loop 3 For Loop 5 For Loop 7 For Loop 9
For loops can also be good to dynamically add or alter the contents or web controls. For example If I wanted a web control to have 100 items in it like this . I could use a for loop to add them here's an example
/infod/jeff/classSource/class3/DynamicAddDropdown.aspx - source
while
while syntax
while (expression) statement
string whileLoopResult = "";
int MyInt = 0;
while (MyInt < 10)
{
Whileloopresult +="While Loop " + MyInt + "\n";
MyInt++;
}
produces
While Loop 0 While Loop 1 While Loop 2 While Loop 3 While Loop 4 While Loop 5 While Loop 6 While Loop 7 While Loop 8 While Loop 9
do
do... while syntax
do statement while (boolean-expression);
string doLoopResult = "";
int myIntDo = 0;
do
{
doLoopResult +="do Loop " + myIntDo + "\n";
myIntDo++;
} while (myIntDo < 10);
produces
do Loop 0 do Loop 1 do Loop 2 do Loop 3 do Loop 4 do Loop 5 do Loop 6 do Loop 7 do Loop 8 do Loop 9
string doLoopResult2 = "";
int myIntDo2 = 30;
do
{
doLoopResult2 +="do Loop " + myInt + "\n";
myIntDo2++;
} while (myIntDo2 < 10);
produces do Loop 30
for each
A for each loop requires and iterator.. more on this iterator thing later...
string[] names = {"Cheryl", "Joe", "Matt", "Robert"};
foreach (string person in names)
{
Console.Write (" " + person);
}
produces
Cheryl Joe Matt Robert
The for each loop is a key component in polymorphism. Remember the age selector example what if we want to select more than one age. It would be simple to change the dropdownlist into a listbox and turn SelectionMode ="Multiple" so the user can select multiple items but how do check to see if every Item is selected. Is to have each item check itself and use a for each loop.
Generics
- List
- Queue
- Stack
- .etc
IN Class
Build a c# app that writes the words to 99 bottles of beer on the wall using a loopin statement
99 bottles of beer csharp example
Try and Catch
Try and catch is useful when you are going to do something that may cause a runtime error. These arrroe my occur when
- Parsing user input
- Converting Datatypes
- Trying to connect to a remote server
- Connecting to a database
For example consider a program that asks the user what their favorite number is.
using System;
using System.Collections.Generic;
using System.Text;
namespace FavoriteNumber
{
class Program
{
static void Main(string[] args)
{
int intFavNumber;
string strFavNumber;
Console.Write("What is you favorite number?");
strFavNumber = Console.ReadLine();
intFavNumber = Int16.Parse(strFavNumber);
}
}
}
if you type 'monkey' for your favorite number the program crashes with the folling message
Unhandled Exception: System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolea n parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) at FavoriteNumber.Program.Main(String[] args)
This program can be fixed be using a try and catch
try
{
//some crazy code that may cause errors
}
catch (Exception e)
{
string FstrError = e.ToString();
}
Console Example http://iam.colum.edu/oop/gbrowser.php?file=/classsource/class3/try.cs
using System;
namespace HelloClass
{
class HelloWorld
{
public static void Main()
{
object o2 = null;
try
{
int i2 = (int) o2; // Error
}
catch (Exception e)
{
//put Exceptioninto string strError
string strError = e.ToString();
//write error to label lblOutput
Console.WriteLine(strError);
}
}
}
}
C:\User\csharp>csc try.cs Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4 for Microsoft (R) .NET Framework version 1.1.4322 Copyright (C) Microsoft Corporation 2001-2002. All rights reserved. C:\User\csharp>try.exe System.NullReferenceException: Object reference not set to an instance of an obj ect. at HelloClass.HelloWorld.Main() C:\User\csharp>
/infod/jeff/classSource/class2/try.cs - source
String Functions in csharp
To Upper method returns a string that only has upper case letters
string strName = "jeff";
Console.WriteLine(strName.ToUpper());
will write JEFF
string strName = "Jeff";
Console.WriteLine(strName.ToLower());
will write jeff
string strName = "jMeyers";
string strNamej = "john jacob jingleheimer Schmidt";
strName = strName .Replace("j" , "J");
strNamej = strNamej.Replace("j" , "J");
strName will be "JMeyers" strName will be "John Jacob Jingleheimer Schmidt"
etc
Make Our Own String function
protected static void WriteColorFull(string s)
{
//Save current console color so we can restore it when we are done
//We don't want to leave the console with a random color
ConsoleColor originalConsoleColor = Console.ForegroundColor;
for (int index = 0; index < s.Length; index++)
{
Console.ForegroundColor = mycolors[(mycolors.Length + index) % mycolors.Length]; //Rotate through colors
Console.Write(s[index]); //Write the current letter from the string
}
Console.Write("\n");
//Restore Console
Console.ForegroundColor = originalConsoleColor;
}
//An array of console colors
private static ConsoleColor[] mycolors =
{
ConsoleColor.Red,
ConsoleColor.Magenta,
ConsoleColor.DarkMagenta,
ConsoleColor.DarkGreen,
ConsoleColor.DarkRed,
ConsoleColor.DarkGray,
ConsoleColor.DarkBlue,
ConsoleColor.Blue,
ConsoleColor.Gray,
ConsoleColor.Green,
ConsoleColor.Yellow,
ConsoleColor.White
};
Functions/Methods
Function help with code reuse. If your going to use it more than once make it into a funtions. syntax simple
[access-modifier] return type indentifier ( [parateters] ) {
//some code
}
access-modifiers
public
private
protected
internal
protected internal
more on these next week.
Defining
string Hello ()
{
return "Hello ";
}
string HelloToName (string Name)
{
return "Hello " + Name;
}
Calling a finction in c#
string firstHello, jeffHello; //declare some strings
firstHello = Hello(); //call the function Hello
jeffHello = HelloToName("Jeff"); //call the function HelloToName
Console Example /infod/jeff/classSource/class3/function.cs - source
C:\User\csharp>csc function.cs Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4 for Microsoft (R) .NET Framework version 1.1.4322 Copyright (C) Microsoft Corporation 2001-2002. All rights reserved. C:\User\csharp>function.cs C:\User\csharp>function.exe Hello World! Hello Hello Jeff Hello Marge C:\User\csharp>
Passing variable into a function/method passes be instance. Variables passed by instance do not actually pass in the original variable rather a copy or new instance of the variable is passed. It you want to pass in the actual variable you need to pass be referance Examples of passesing by instamce and passing by refecnce... /infod/jeff/classSource/class3/instanceReference.aspx - Source
Variables
Scope
scope defines the life of a variable. Local Variables
Variables declared with functions/methods are only around as long as the function/method is running. These variables are known as local varables
Global Variables
Global variables are variables that are around for the entire length of execution. They are declared a public within the programs base class.
In c# since everything must be contianed in a class global variables do not really exist.
Block Level Variables
Block level variables exitist with the code block.
A code block is contained by { }.
Additional Reading
- http://www.csharp-station.com/Tutorials/Lesson03.aspx
- http://www.csharp-station.com/Tutorials/Lesson04.aspx
Structs
Lightweight alternatives to classes. Structs do not support inheritance or destructors. Don't worry if you don't understand structs yet it hard cuz the book teaches them before classes. We will talk more about stucts after we talk about classes Syntax
[ attributes] [access-modifiers] struct identifier [:interface-list {struct members}
struct Dog
{
public string name;
public string weight;
public int age;
}
Enumerators
Enumerators are used to set predefined list of named constants. Syntax
[ attributes] [modifiers] enum identifier [:base-type {enumerator-list};
//An enumerator for ServingSizes at BK
enum ServingSizes : uint
{
Small = 0,
Regular = 1,
Large = 2,
SuperSize = 3
}
//another more useful example
// forced sequence to start
// from 1 instead of 0 (default)
enum Months
{
January = 1, February , March, April ,
May , June , July , August , Sept , Oct , Nov , Dec
}
Enumerator Example Enum.cs
Home work
2. Read Chapter 6,7 in Learning c#
- Create a console Game of Chance 2 pts
- A coinflipper
- A dice roller
- Guess My Number
The game should contain some level of randomness. It should also demonstrate operators and branching statements. It would sure be nice if the game had some level input from the user.
Here is an example coin flipper worth 2 pts
CoinFilpperSimple.cs
This game flips a whole bunch of coins two and compares the results. If the two coins are the same then you are a winner and it displays true. If they are different then you loose and if displays false. This program was created to test the old question 'If you flip a coins 99 times and get 99 head what are the odds of the 100th flip turning up heads?'
It shows some strange properties of randomness.
This is the end of the intro review...