INF160Lec03 PL C#

Download Report

Transcript INF160Lec03 PL C#

INF160 IS Development Environments
AUBG, COS dept
Lecture 03
Title:
Tutorial Introduction to C#
(Extract from Syllabus)
1
Lecture Contents:




C# program – general definition/description
C# program – basic structure
C# program – demo example
Detailed description of C# as a conventional
programming language
2
To students with skills in C#

















Write a program - Tester for factorial, greatest common divisor, Fibonacci series number
PRELUDE:
To compute Fibonacci series nnumber you need a method like this header
int Fibonacci( int n )
{
…
}
To compute factorial you need a method like this header
int Factorial( int n )
{
…
}
To compute greatest common divisor you need a method like this header
int GCD( int m, int n )
{
…
}
3
Program – definition/description
 Program: An organized list of instructions that, when executed,
causes the computer to behave in a predetermined manner.
 C# program: Collection of one or more classes, one of which has
method titled public static void Main(string[] args).
 C# class: mechanism that allows to combine data and operations
/named methods/ on that data into a single unit.
 C# method: Set of instructions designed to accomplish a
specific task.
 In OOD the final C# program is a collection of interacting
objects /instances of classes/.
4
C# Program – basic structure
 C# programs can consist of one or more files.
 Each file can contain zero or more namespaces.
 A namespace can contain types such as classes,
structs, interfaces, enumerations, and
delegates, in addition to other namespaces.
 The following is the skeleton of a C# program
that contains all of these elements.
5
‘Review:VB Program – basic structure
<Imports declarations>
<Module heading>
Sub Main()
<definition/declaration statements>
<executable statements>
End Sub
<Module end delimiter>
Review
On
VBASIC
‘ Review: VB program – demo example
Imports System
Module thisModule
Sub Main()
Console.WriteLine(“Hello, World!”)
Console.ReadKey()
End Sub
6
End Module
// Review: C++ Program – basic structure
Review
<preprocessor directives>
using namespace <region>;
On
void main()
{
C++
<definition/declaration statements>
Native code
<executable statements>
}
// Review: C++ Program – demo example
#include <iostream>
using namespace std;
void main( )
{
cout << “\nHello, World!”;
system(“pause”);
7
}
// Review: C++ Program – basic structure
Review
<preprocessor directives>
using namespace <region>;
On
void main()
C++
{
<definition/declaration statements>
Managed code
<executable statements> // Review: C++ Program – demo example
}
#include "stdafx.h"
using namespace System;
int main( )
{
Console::WriteLine("Hello World");
Console::ReadKey();
return 0;
8
}
// C# Program – basic structure
using System;
namespace YourNamespace
{
class YourClass
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
}
class YourMainClass
{
static void Main(string[] args)
{
//Your program starts here...
}
}
New:
C#
// C# Program – demo example
using System;
namespace MyProject
{
public class Hello
{
public static void Main(string[] args)
{
Console.WriteLine("Hello world in C#");
Console.ReadLine();
}
}
}
9
.
Detailed description
of
C# as Conventional Prog Lan
10
Lecture Contents (new):
• Why C# (instead intro)
• Anatomy of a C# program
–
–
–
–
–
Sample source text
Namespaces
Comments
Names – identifiers, reserved words, modifiers
Classes – data fields, methods (statements, blocks of statements )
• Components of a C# program
–
–
–
–
–
–
–
Data – by category
Data – by type
Expressions (incl. operands & operators)
Statements
Routines (member functions - methods)
I/O facilities
Data collections – arrays, etc
• Demo programs - examples
11
Why C#
• Conforms closely to C and C++. Has the added power of C++
• Has the rapid graphical user interface (GUI) features of
previous versions of Visual Basic
• Has the object-oriented class libraries similar to Java
• Can be used to develop a number of applications
–
–
–
–
–
–
–
Software components
Mobile applications
Dynamic Web pages
Database access components
Windows desktop applications
Web services
Console-based applications
C# Programming: From Problem Analysis to Program Design
12 12
C# Plang provides features, such as:










OOP, Event driven programming, visual programming
strings,
graphics,
graphical-user-interface (GUI) components,
exception handling,
multithreading,
multimedia (audio, images, animation and video),
file processing,
database processing,
Internet and WWW-based client/server networking and distributed computing.
• C# programs are created using Integrated Development Environment
(IDE).
• With the IDE, a programmer can create, run, test and debug C#
programs.
• The process of rapidly creating an application using an IDE is
typically referred to as Rapid Application Development (RAD).
13
Anatomy of a C# program:
Sample source text
14
Syntax for simple C# program
// Program start class
using System;
namespace space_name
{
public class class_name
{
// Main begins program execution
public static void Main(string[] args)
{
// implementation of method
}
}
}
15
Hello World!
Console Application
16
Namespaces. The using directive
• using System; directive is generated by the Visual Studio IDE
and declares that the program uses features in the System
namespace.
• A namespace groups various C# features into related
categories.
• C# programmers can use the rich set of namespaces provided
by the .NET framework. The namespaces that are defined in the
.NET Framework contain preexisting code known as the .NET
Framework Class Library Over 2,000 classes included.
• An example of one of the features in namespace System is
Console.
• In console applications, we use Console.method when we want
to handle standard input, output, and error streams for our
applications
17
Namespace
• Namespaces provide scope for the names defined
within the group
• Groups semantically related types under a single
umbrella
• System: most important and frequently used
namespace
• Can define your own namespace
• Used to avoid naming collisions
• Each namespace enclosed in curly braces: { }
C# Programming: From Problem Analysis to Program Design
18 18
Namespace (continued)
Predefined namespace
(System) – part of
.NET FCL
From Example 1-1
line 1
line 2
line 3
line 4
// This is traditionally the first program written.
using System;
namespace HelloWorldProgram
{
line 12
}
User-defined
namespace
Body of userdefined namespace
C# Programming: From Problem Analysis to Program Design
19 19
Concole.WriteLine
• In C# statements we normally precede each class name
with its namespace name and a period.
• For example, line of source text would normally be:
System.Console.WriteLine( "Welcome to C# Programming!" );
for the program to run correctly.
• The using System; directive eliminates the need to
specify explicitly the namespace System when using
classes in the namespace. This can save time and
confusion for programmers.
20
Anatomy of a C# program: classes
21
Line 6-12: Class Welcome1
• Line 6-12 class (these lines collectively are called a
class definition).
• C# programs consist of pieces called classes,
• Classes are logical groupings of members (e.g.,
methods) that simplify program organization. These
methods (which are like functions in procedural
programming languages) perform tasks and return
information when the tasks are completed.
• A C# program consists of classes and methods
created by the programmer and of preexisting
classes found in the Framework Class Library.
22
Class Welcome1
• The class keyword begins a class definition in C#
and is followed immediately by the class name
(Welcome1, in this example).
• The left brace ({) at line 7 begins the body of the
class definition.
• The corresponding right brace (}) at line 12 ends the
class definition.
• Notice that lines 8–11 in the body of the class are
indented. This is one of the spacing conventions .
Indentation improves program readability
23
Anatomy of a C# program:
classes (methods)
• C# class definitions normally contain one or
more methods (member functions) and C#
applications contain one or more classes.
• For a C# console or Windows application,
exactly one of those methods must be called
Main, and it must be defined as shown:
static void Main(string[] args)
24
Main
• These applications begin executing at Main,
which is known as the entry point of the
program.
• The parentheses after Main indicate that
Main is a program building block, called a
method.
25
26
More Choices
public static void Main() {
...
}
public static int Main() {
...
return 0;
}
public static int Main(string[] args) {
...
return 0;
}
27
Syntax of body method
• The left brace ({) on line 9 begins the body of the
method definition (the code which will be executed
as a part of our program).
• A corresponding right brace (}) terminates the
method definition’s body (line 11).
• The body method includes/contains statements.
28
Console.WriteLine(“Welcome to C# programming!”);
• The entire line, including Console.WriteLine, its
argument in the parentheses ("Welcome to C#
Programming!") and the semicolon (;), is called a
statement.
• Every statement must end with a semicolon (known
as the statement terminator).
• When this statement executes, it displays the
message Welcome to C# Programming! in the
console window
29
Types of Statements
• Declaration statements - describe the data
the function needs:
float miles, kms;
const float KM_PER_MILE = 1.609;
• Executable statements - specify the actions
the program will take:
Console.WriteLine(“Welcome to C# programming!”);
30
Anatomy of a C# program:
statements, blocks of statements
• {…}
• Block
• Compound statement
31
Names: Identifiers
• The name of the class is known as an identifier, which is a series of
characters consisting of letters, digits, underscores ( _ ) and “at”
symbols (@).
• Identifiers cannot begin with a digit and cannot contain spaces.
• Examples of valid identifiers are Welcome1, _value, m_inputField1
and button7.
• The name 7button is not a valid identifier because it begins with a digit
• The name input field is not a valid identifier because it contains a
space.
• The “at” character (@) can be used only as the first character in an
identifier.
• C# is case sensitive — uppercase and lowercase letters are
considered different letters.
32
Reserved Words in C#
Keywords (or reserved words) are reserved for use by
C# and always consist of lowercase letters.
C# Programming: From Problem Analysis to Program Design
33 33
Reserved Words in C# (continued)
• Contextual keywords
• As powerful as regular keywords
• Contextual keywords have special meaning only
when used in a specific context; other times they
can be used as identifiers
C# Programming: From Problem Analysis to Program Design
34 34
Data
Java Programming: From Problem Analysis to Program Design, 4e
35 35
Components of a C# program
Data – by category
• Literals
• Variables
• Constants
36
Constant Definition
• Named Constant definitions have the following
syntax:
const datatype name = value;
• To define a constant to hold the value of pi, for
example, you could use a statement such as
this:
const double c_pi = 3.14159265358979;
37
Declaring Variables
datatype variablename = initialvalue;
• You don’t have to specify an initial value for a variable, although
being able to do so in the declaration statement is useful. To
create a new string variable and initialize it with a value, for
example, you could use two statements, such as the following:
string strName;
strName = “Matt Perry”;
• However, if you know the initial value of the variable at design
time, you can include it on the declaration statement, like this:
string strName = “Matt Perry”;
• Note, however, that supplying an initial value doesn’t make this a
constant; it’s still a variable, and the value of the variable can be
changed at any time.
38
Components of a C# program:
Data – by type
• Value types
• Reference types
39
Value type
- where a variable X contains a value type, it directly
contains an entity with some value. No other variable Y can
directly contain the object contained by X (although Y might
contain an entity with the same value).
Reference type
- where a variable X contains a reference type, what it
directly contains is something that refers to an object.
Another variable Y can contain a reference to the same
object referred to by X.
Reference types actually hold the value of a memory address
occupied by the object they reference.
40
41
Predefined (Data) Types
•
C# predefined types
–
–
–
–
–
–
The “root”
Logical
Signed
Unsigned
Floating-point
Textual
•
object
bool
sbyte, short, int, long
byte, ushort, uint, ulong
float, double, decimal
char, string
Textual types use Unicode (16-bit characters)
42
All types are compatible with object
- can be assigned to variables of type object
- all operations of type object are applicable to them
43
Predefined Data Types
• Common Type System (CTS)
• Divided into two major categories
Figure 2-3 .NET common types
C# Programming: From Problem Analysis to Program Design
44 44
Value and Reference Types
Figure 2-4 Memory representation for value and reference types
C# Programming: From Problem Analysis to Program Design
45 45
Value Types
• Fundamental or primitive data types
Figure 2-5 Value type hierarchy
C# Programming: From Problem Analysis to Program Design
46 46
Integer type
In C#, an integer is a category of types. They are whole
numbers, either signed or unsigned.
47
Floating-Point and Decimal Types
A C# floating-point type is either a float or double. They are
used any time you need to represent a real number.
Decimal types should be used when representing financial or
money values.
48
The String Type
A string is a string of text characters.
The keyword string is an alias for the class System.String.
Either may be used to define a string variable.
string aa = "Sofia";
String bb = "BG";
System.String cc = " AA ";
A string literal is just some text enclosed with double quotes.
E.g. “This is a string”
There is a char type used to represent one Unicode character.
49
Class System.String
Can be used as standard type string
string s = “AUBG";
Note
• Strings are immutable (use class StringBuilder if you
want to extend a string)
• Can be concatenated with +: “COS @ " + s;
• Can be indexed: s[i]
• String length: s.Length
• Strings are reference types  reference semantics in
assignments.
• But their values can be compared with == and !=:
if (s == "AUBG") ...
• Class String defines many useful operations:
CompareTo, IndexOf, StartsWith, Substring, ...
50
Casting Data from
One Data Type to Another
51
52
Expressions (operands and operators)
Java Programming: From Problem Analysis to Program Design, 4e
53 53
Components of a C# program:
Expressions (operands)
• Operands
–Literal Values
–Constants
–Variables – scalar or indexed
–Structure member
–Function call
–Sub expression like ( … )
54
C# Operators
The table on the following slide describes the allowable
operators, their precedence, and associativity.
Left associativity means that operations are evaluated
from left to right.
Right associativity mean all operations occur from right to
left, such as assignment operators where everything to the right
is evaluated before the result is placed into the variable on the
left.
55
56
Mixed Expressions
• Implicit type coercion
– Changes int data type into a double
– No implicit conversion from double to int
Figure 2-14 Syntax error generated for assigning a double to an int
C# Programming: From Problem Analysis to Program Design
57 57
Mixed Expressions (continued)
• Explicit type coercion
– Cast
– (type) expression
– examAverage = (exam1+exam2+exam3) / (double) count;
Int
value1 = 0,
double value2 = 100.99,
anotherNumber = 75;
anotherDouble = 100;
value1 = (int) value2;
// value1 = 100
value2 = (double) anotherNumber; // value2 = 75.0
C# Programming: From Problem Analysis to Program Design
58 58
Components of a C# program:
Executable Statements
59
Statements in C#
• C# supports the standard assortment …
• assignment
• subroutine and function call
• conditional
– if, switch
• iteration
– for, while, do-while, foreach
• control Flow
– return, break, continue, goto
60
Passing Literal Values to a Variable
• The syntax of assigning a literal value (a hard-coded value such
as 6 or “guitar”) to a variable depends on the variable’s data
type.
• For strings, you must pass the value in quotation marks, like
this:
strCollegeName = “Bellevue University”;
• There is one caveat when assigning literal values to strings:
Visual C# interprets slashes (\) as being a special type of
escape sequence. If you pass a literal string containing one or
more slashes to a variable, you get an error. What you have to
do in such instances is preface the literal with the symbol @, like
this:
strFilePath = @”c:\Temp”;
• When Visual C# encounters the @ symbol after the equal sign
as shown in the preceding example, it knows not to treat slashes
61
in the string as escape sequences.
Decision Structures - Selection
Same syntax for C++, C#, and Java
if (condition) statement;
if (condition) statement1; else statement2;
switch statement
62
Examples
if (x == valueOne)
{
Console.Writeline("x is ");
Console.Writeline( x );
}
if (x == valueOne)
Console.Writeline("x is 100");
else
Console.Writeline("x is not 100");
63
Switch construct
Same syntax for C++, C#, and Java
switch can only be used to compare an expression with
different constants.
The types of the values a switch statement operates on can be
booleans, enums, integral types, and strings (null is
acceptable as a case label).
No fall-through!
- Every statement sequence in a case must be
terminated with break (or return, goto, throw).
If no case label matches  default
If no default specified  continuation after the switch
statement
64
switch (x)
{
case 5: Console.Writeline("x is 5");
break;
case 99: Console.Writeline("x is 99");
break;
default: Console.Writeline("value of x unknown"); break;
}
switch(country) {
case"Germany":
case"Austria":
case"Switzerland":
language = "German"; break;
case"England":
case"USA":
language = "English"; break;
case null:
Console.WriteLine("no country specified"); break;
default:
Console.WriteLine("don't know language of", country);break;
}
65
66
Loops
Same syntax for C++, C#, and Java
for (initialization; condition; in(de)crement)
{statement;}
while (Boolean expression)
{statements}
do
{statements}
while (Boolean expression)
foreach statement
67
Loops
for (int n=10; n>0; n--)
{
Console.Write( n );
Console.Write(", ");
}
while ( x > 1 )
{
Console.Writeline("x is ");
x--;
}
Console.Writeline( x );
do
{
Console.Writeline("x is "); Console.Writeline( x );
x--;
} while (x !=1 );
68
foreach statement: For iterating over collections and arrays.
foreach can not be used to change the contents of the array
foreach (Type variableName in container)
{
// statements;
}
// array traverse using foreach
int[] a = {3, 17, 4, 8, 2, 29};
foreach (int x in a) sum += x;
// string traverse using foreach
string s = "Hello";
foreach (char ch in s) Console.WriteLine(ch);
69
Control flow - return
Java Programming: From Problem Analysis to Program Design, 4e
70 70
Components of a C# program:
Routines (methods)
• Main method Already discussed in section
classes(methods(statements))
• Same as in C++, Java
71
Components of a C# program:
Routines (methods)
static void Main(string[] args)
{
Console.WriteLine("Summing numbers result is = {0}", sum(21,30));
Console.WriteLine("Summing numbers result is = {0}", sum(501, 630));
Console.WriteLine("Multiplying numbers result is = {0}", product(1,10));
}
static int sum(int m, int n)
{
int i, suma = 0;
if (m > n) return -1;
if (m == n) return m;
for (i=m ; i<=n ; i++) suma += i;
return suma;
}
static int product(int m, int n)
{
int i, res = 1;
if (m > n) return -1;
if (m == n) return m;
for (i = m; i <= n; i++) res *= i;
return res;
}
72
Components of a C# program:
Routines (methods)
static void Main(string[] args)
{
Console.WriteLine("Summing numbers result is = {0}", sum(21,30));
Console.WriteLine("Summing numbers result is = {0}", sum(501, 630));
Console.WriteLine("Multiplying numbers result is = {0}", product(1,10));
}
static int product(int m, int n)
{
int i, res = 1;
if (m > n) return -1;
if (m == n) return m;
for (i = m; i <= n; i++) res *= i;
return res;
}
static int sum(int m, int n)
{
int i, suma = 0;
if (m > n) return -1;
if (m == n) return m;
for (i=m ; i<=n ; i++) suma += i;
return suma;
}
73
Components of a C# program:
I/O
74
Console Input
The Console class provides basic support for applications that input
characters.
Data is read from the standard input stream
int x;
string alpha;
alpha = Console.ReadLine(); // will read the input from the keyboard
x = System.Convert.ToInt32(alpha); // and save it in variable x
Console Output
Output is managed by a class named Console. This Console class has a
method WriteLine() which takes a string (a set of characters) and writes
it to the standard output.
Console.WriteLine("Text");
Console.WriteLine(120);
// prints “Text” to the screen
// prints value 120 on screen
Console.WriteLine(x.ToString());
// prints the content of x on screen
75
76
77
Input Data
• You can eliminate the need for string
variables firstNumber and secondNumber
by combining the input and conversion
operations as follows:
int number1;
number1 = Int32.Parse( Console.ReadLine() );
78
WriteLine format
• After performing the calculation, line 33 displays the result of
the addition. In this example, we want to output the value in a
variable using method WriteLine. Let us discuss how this is
done.
• The comma-separated arguments to Console.WriteLine
"\nThe sum is {0}.", sum
use {0} to indicate a placeholder for a variable’s value.
• If we assume that sum contains the value 117, the expression
evaluates as follows:
79
80
Components of a C# program:
Data collections
• Arrays
• Records (C-like structs)
81
Data Collections
Typical popular Data collections:
• Arrays
• Structures
Detailed discussion on arrays and structures
presented in separate lectures later
82
Demo Programs
D
83
Demo Programs
Demonstrate end-of-file controlled loop using standard
input from the keyboard and standard output to the
screen
Solution to implement in a version:
as managed code console application
Problem:
To accumulate sum of stream of input integers
terminated by end-of-data (CTRL/Z) indicator 84
Demo Program – Managed Code Only
// C# demo program, standard Input (keyboard) / Output (screen)
// Int Console.Read(),
// String Console.ReadLine() // ReadKey()
// Methods Convert.ToInt32(string), etc …
using System;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
string pom;
while ((pom = Console.ReadLine()) != null)
{
sum += Convert.ToInt32(pom);
}
Console.WriteLine("Final sum = {0}",sum);
}
}
}
85
Thank You
For
Your Attention!
86