Computing with C# and the.NET Framework Chapter 2 C# Programming Basics ©2003, 2011 Art Gittleman
Variables A variable represents a storage location. Every variable has a name and a type. int age = 19; Name is “age” Type is “int” Value is 19. age 19
Identifiers An identifier names program elements. C# is case sensitive. Digits may occur, but cannot be the first character. Identifiers may use the underscore character. Keywords are identifiers reserved for special uses.
abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while
Some valid C# identifiers are: savings textLabel rest_stop_12 B3 _test My____my Some invalid identifiers are: 4you // Starts with a number x<y // Includes an illegal character, < top-gun // Includes an illegal character, - int // Reserved keyword
The character set The ASCII character set contain 128 printing and nonprinting characters including upper and lower case letters, digits, and punctuation. C# uses Unicode with contains thousands of characters including ASCII. For English ASCII is sufficient
Type int A type defines the values a variable can have. Type int represents a range of integer values from int.MaxValue -2,147,483,648 to int.MinValue 2,147,483,647.
Assignment Initialize a variable once int age = 19; Assign values during runtime The assignment operator is the equals sign, = age = 10; The value is stored in the memory location allocated for that variable.
a. int age =19; b. age = 10; c. age = 20;
Constructing a program Define a class (used later to define object types) Include a method that contains executable code The Main method starts execution. It must have the static modifier to be accessible before any objects are created.
public class AssignIt { public static void Main( ) { int number1 = 25; int number2 = 12; number2 = number1 + 15; System.Console.WriteLine ("Number2 is now {0}", number2); } // Output -- Number2 is now 40 Example 2.3
UML (Unified Modeling Language) Standard notation for object-oriented design Class diagram has three parts Upper section – class name Middle section – data fields Lower section – methods Underline static methods AssignIt Main
Constants const int FIXED = 25; Cannot assign to a constant. We use upper case names for constants to remind us.
Input from the keyboard System.Console.Write("Enter your name: "); // displays a prompt to the user String name = System.Console.ReadLine(); // reads the line the user enters // saves it as a string of characters int number = int.Parse (System.Console.ReadLine()); // converts input to an integer
Using The statement using System; Allows the code to refer to classes in the System namespace with the explicit prefix. We can replace System.Console.ReadLine(); with Console.ReadLine();
Formatting output {0:C} formats output as currency, dollars and cents in the US. {0, 10} right-aligns the output in a 10 character field {0, -10} left-aligns the output in a 10 character field
Arithmetic Operators Integer data produces integer results. Binary operators, +, -, *, /, % two operands Unary operators +, - one operand
Operation Math notation C# (constants) C# (variables) Addition a + b score1 + score2 Subtraction a - b bats - gloves Multiplication ab 12 * 17 twelve * dozens Division a/b 7 / 3 total / quantity Remainder r in a=qb+r 43 % 5 cookies % people Negation -a -6 -amount Figure 2.9 C# arithmetic operations
Operator Precedence Evaluate * 5 Which operator gets its operands first? has higher precedence than + so * 5 = = 23 Avoid parentheses With parentheses 3 + (4 * 5) = 23 but (3 + 4) * 5 = 7 * 5 = 35
3 + 4 * 5 Figure 2.10 Multiplication gets its operands first
* 5 (3 + 4) Figure 2.11 Compute within parentheses first
Precedence Table Higher precedence -, + Unary Negation and Plus *, /, %Multiplication, Division, Remainder +, -Binary Addition and Subtraction =Assignment Lower precedence See Appendix for full table
Combining Assign and Increment Postincrement – evaluate then add 1 x=5 x++ evaluates to 5 and x becomes 6 Preincrement – add 1 then evaluate x=5 ++x, x becomes 6 then ++x value is 6 Postdecrement – evaluate then subtract 1 x=5 x-- evaluates to 5 and x becomes 4 Predecrement – subtract 1 then evaluate x=5 --x, x becomes 4 and --x value is 4
Figure 2.12 Expression a) and equivalent expression b) then 3 + x x++ a.b. 3 + x++
Figure 2.13 Expression a) and equivalent expression b) then ++x 3 + x a.b x
Methods A method can contain the code for an operation. public static int MultiplyBy4(int aNumber) { return 4*aNumber; } Parameters pass data to the method return statement specifies the return value, if any
Argument 5 multiplyBy4 Return value 20
Pass By Value C#passes arguments by value by default The called method receives the value of the argument not the location The value from the caller gets copied to the parameter which is like a local variable of the method PassByValue.cs illustrates value of argument x copied to aNumber
Figure 2.17 Memory usage cube aNumber 12 x value 0 After the call then 17 During the call main result Before the call to cube(x)