Lecture 2 Data Types Richard Gesick Figures from Lewis, “C# Software Solutions”, Addison Wesley CSE 1301 Topics • Character Strings • Variables and Assignments • Primitive Data Types CSE 1301 Review • • • • • • • CSE 1301 C# program structure Comments Identifiers White space Objects Classes Methods CSE 1301 Program Structure • In the C# programming language: – A program is made up of one or more classes – A class contains one or more methods – A method contains program statements • These terms will be explored in detail throughout the course • An application always contains a method called Main CSE 1301 Building Blocks - Comments • Comments explain the program to yourself and others • Block comments – – – – Can span several lines Begin with /* End with */ Compiler ignores all text between /* and */ • Line comments – Start with // – Compiler ignores text from // to end of line CSE 1301 Identifiers - symbolic names • Identifiers are used to name classes, variables, and methods • Identifier Rules: – Must start with a letter – Can contain essentially any number of letters and digits, but no spaces – Case sensitive!! • Number1 and number1 are different! – Cannot be keywords or reserved words CSE 1301 CSE 1301 White Space • Spaces, blank lines, and tabs are called white space • White space is used to separate words and symbols in a program • Extra white space is ignored • A valid C# program can be formatted many ways • Programs should be formatted to enhance readability, using consistent indentation CSE 1301 Character Strings • Object in C#, defined by string class • String literal is 0 or more characters enclosed with double quotes – “The quick brown fox jumped.” – “x” – “” • Can contain any valid character CSE 1301 Write and WriteLine Methods Console.Out.WriteLine (“Whatever you are, be a good one.”); Output device Monitor Method name parameter Console – class Out - objects WriteLine method includes a “new line” character. CSE 1301 CSE 1301 string Concatenation Operator (+) • String literals cannot span lines • Combines string literals with other data types for printing Example: String hello = "Hello"; String there = "there"; String greeting = hello + ' ' + there; Console.Out.WriteLine( greeting ); Output is: Hello there CSE 1301 The + Operator • What it does depends on the order – String concatenation – addition CSE 1301 string + number = string CSE 1301 number + number = number Escape Sequences To include a special character in a string, use an escape sequence CSE 1301 CSE 1301 • Variables A variable is a name for a location in memory used to hold a data value. • A variable must be declared by specifying the variable's name and the type of information that it will hold Multiple variables can be created in one declaration data type variable name int total; int count, temp, result; CSE 1301 CSE 1301 Conventions • Names of variables should be meaningful and reflect the data they will store – This makes the logic of the program clearer • Don't skimp on characters, but avoid extremely long names • Avoid names similar to C# keywords CSE 1301 Assignment • An assignment statement changes the value of a variable • The assignment operator is the = sign total = 55; • The expression on the right is evaluated and the result is stored in the variable on the left • The value that was in total is overwritten • You can only assign a value to a variable that is consistent with the variable's declared type CSE 1301 Assignment Operator Syntax: target = expression; expression: operators and operands that evaluate to a single value --value is then assigned to target --target must be a variable (or constant) --value must be compatible with target's data type CSE 1301 Examples: int numPlayers = 10; // numPlayers holds 10 numPlayers = 8; // numPlayers now holds 8 int legalAge = 18; int voterAge = legalAge; The next statement is illegal int height = weight * 2; // weight is not defined int weight = 20; CSE 1301 CSE 1301 • Declare a variable only once • Once a variable is declared, its data type cannot be changed. These statements: double twoCents; double twoCents = .02; generate a compiler error CSE 1301 • Once a variable is declared, its data type cannot be changed. These statements: double cashInHand; int cashInHand; generate a compiler error CSE 1301 Constants • Value cannot change during program execution • Syntax: const dataType constantIdentifier =assignedValue; Note: assigning a value when the constant is declared is optional. But a value must be assigned before the constant is used. CSE 1301 Constants • Constants are useful for three important reasons • First, they give meaning to otherwise unclear literal values – For example, MAX_LOAD means more than the literal 250 • Second, they facilitate program maintenance – If a constant is used in multiple places, its value need only be updated in one place • Third, they formally establish that a value should not change, avoiding inadvertent errors by other programmers CSE 1301 Conventions • Use all capital letters for constants and separate words with an underscore: Example: const double TAX_RATE = .05; • Declare constants at the top of the program so their values can easily be seen • Declare as a constant any data that should not change during program execution CSE 1301 Data Types • For all data, assign a name (identifier) and a data type • Data type tells compiler: – How much memory to allocate – Format in which to store data – Types of operations you will perform on data • Compiler monitors use of data – C# is a "strongly typed" language CSE 1301 Primitive Data Types • 13 simple data types: – 8 subsets of integers – 2 subsets of floating point numbers – Character – Boolean – Decimal data type • Everything else is an object CSE 1301 CSE 1301 Why so many types? • Difference is in amount of memory reserved for each (and hence the size of the value stored • float only has 7 significant digits • Signed numbers have both positive and negative values • Unsigned numbers are >= 0 CSE 1301 Literals • All numeric values without a decimal point are considered int • All numeric values with decimal point are considered double int testGrade = 100; long cityPopulation = 425612340L; byte ageInYears = 19; float salesTax = .05F; double interestRate = 0.725; double avogadroNumber = +6.022E23; CSE 1301 Decimal Data Type • 128 bit storage • greater precision and smaller range than other numeric types • suitable for financial and monetary calculations CSE 1301 char Data Type • One Unicode character (16 bits - 2 bytes) Type char Size Minimum Value in Bytes 2 character encoded as 0 Maximum Value character encoded as FFFF Example declarations: char finalGrade = ‘A’; char newline, tab, doubleQuotes; CSE 1301 boolean Data Type • Two values only: true false • Used for decision making or as "flag" variables • Example declarations: bool isEmpty; bool passed, failed = false; CSE 1301