Introduction to C - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Introduction to C

Description:

Linux wags: Db (D-flat, same note, different name) ... Hejlsberg experience: Turbo Pascal, Borland Delphi, J . C# standardized via ECMA and ISO ... – PowerPoint PPT presentation

Number of Views:66
Avg rating:3.0/5.0
Slides: 27
Provided by: jimw180
Category:

less

Transcript and Presenter's Notes

Title: Introduction to C


1
Introduction to C
  • Modified by Ian Horswill,based on slides from
  • Game Design Experience
  • Professor Jim Whitehead
  • January 22, 2008

Creative Commons Attribution 3.0(Except imported
slides, as noted)creativecommons.org/licenses/by/
3.0
2
Brief history of C
  • Originated by Microsoft as a response to Java
  • Initial public release in 2000
  • Language name inspired by musical note C
  • A step above C/C (and Java)
  • Linux wags Db (D-flat, same note, different
    name)
  • Lead designers Anders Hejlsberg, Scott Wiltamuth
  • Hejlsberg experience Turbo Pascal, Borland
    Delphi, J
  • C standardized via ECMA and ISO
  • However, Microsoft retains architectural control

3
Key language features
  • Syntax similar to ActionScript
  • Types similar to Meta
  • But named differently
  • Object called object
  • Integer called int
  • List of objects is called object
  • Arrays (lists) are strongly typed
  • Array of integers different from array of strings
  • Inheritance similar to Meta
  • Interfaces
  • Contain methods, but no fields
  • Structs
  • Like classes, but handle memory differently
  • More efficient for certain applications
  • Delegates
  • Procedures, similar to ? in meta

cking, Flickrwww.flickr.com/photos/spotsgot/14143
45/
4
Hello World example
  • class Hello
  • static void Main()
  • // Use the system console object
  • System.Console.WriteLine(Hello, World!)
  • (Nearly) all C code consists of class
    definitions
  • Class definitions contain both the fields of
    the class and all its methods
  • C programs start by running the method named
    Main inside a particular class
  • Here that class is called Hello
  • For XNA games, its usually called Game1

oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
5
Hello World example
  • class Hello
  • static void Main()
  • // Use the system console object
  • System.Console.WriteLine(Hello, World!)

Creates a new object type (class) called
Hello. It contains a single method, called
Main. Main contains one line, which writes
Hello, World! on the display. The method that
performs this action is called WriteLine. The
WriteLine method belongs to the System.Console
object. The keyword static means that the
method Main can be called even if there is no
current instance of the class. Its a class
method, not an instance method. The line
beginning with // is a comment, and does not
execute. Demonstration of creating Hello World
inside Visual C Express
oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
6
What it would really look like
  • using System
  • namespace MyProgram
  • class Hello
  • static void Main()
  • // Use the system console object
  • Console.WriteLine(Hello, World!)

oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
  • Classes are structured into namespaces, as in
    Meta
  • System is the namespace with all the built-in
    C stuff
  • System.Console is a class with static methods
    for printing to the screen

7
What it would really look like
  • using System
  • namespace MyProgram
  • class Hello
  • static void Main()
  • // Use the system console object
  • Console.WriteLine(Hello, World!)

oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
  • As in Meta, the using directive tells C that
    it should check the System namespace when
    looking for the values of names

8
What it would really look like
  • using System
  • namespace MyProgram
  • class Hello
  • static void Main()
  • // Use the system console object
  • Console.WriteLine(Hello, World!)

oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
  • As in Meta, the using directive tells C that
    it should check the System namespace when
    looking for the values of names
  • So using it allows us to just say
    Console.WriteLine, rather than
    System.Console.WriteLine, because the System
    part is understood.

9
What it would really look like
  • using System
  • namespace MyProgram
  • class Hello
  • static void Main()
  • // Use the system console object
  • Console.WriteLine(Hello, World!)

oskay, Flickrwww.flickr.com/photos/oskay/47209790
3/
  • As in Meta, the using directive tells C that
    it should check the System namespace when
    looking for the values of names
  • So using it allows us to just say
    Console.WriteLine, rather than
    System.Console.WriteLine, because the System
    part is understood.
  • And in practice, we generally tell C what
    namespace our new classes are supposed to be
    added to.

10
Syntax
  • Case-sensitive
  • Whitespace has no meaning
  • Sequences of space, tab, linefeed, carriage
    return
  • Semicolons are used to terminate statements ()
  • Curly braces enclose code blocks
  • Comments
  • / comment /
  • // comment
  • /// ltcomment_in_xmlgt
  • Automatic XML commenting facility

Peter Hellberg, Flickrwww.flickr.com/photos/peter
hellberg/1858249410
11
Classes and Objects
  • A class combines together
  • Data
  • Class variables
  • Behavior
  • Methods
  • Class/instance distinction
  • Class defines variables methods
  • Need to create instanced of the class, called
    objects, to use variables methods
  • Exception static methods and variables
  • Analogy a jelly bean mold (class) can be used to
    create a large number of jelly beans (objects,
    instances of the class)

Jelly bean mold, photo by daxiang
stef www.flickr.com/photos/daxiang/96508482/
12
Defining a variable or field
Type name initialvalue Simple examples int
num 0 //
an integer set to 0 int num
// an integer, no initial
value specified string myString this is a
string! // a string set to this is a
string! string mystrings
// this variable can hold a list
(array) of
// strings, but doesnt yet have a
value string mystrings new string10()
// an array of 10 strings (each of which is
initially null)
cking, Flickrwww.flickr.com/photos/spotsgot/15590
60/
  • Type
  • The kind of data the variable is restricted to
  • Use object if you dont want to restrict what
    kind of data it stores
  • Name
  • Name of the field of variable
  • Initial value
  • Expression for the initial value to give to this
    variable
  • For fields, you can only put constants here (e.g.
    numbers, strings, null), and a few other things

13
Defining a method (i.e. a procedure)
ReturnType name(Type arg1, Type arg2, ) body
Simple example int Square(int num)
return numnum
cking, Flickrwww.flickr.com/photos/spotsgot/15590
60/
  • ReturnType
  • Type of value returned by the procedure
  • Use void if it doesnt return anything
  • Type arg
  • Type and name of each argument
  • Body
  • Code to run when the procedure is called
  • Use return statement to return a value

14
Defining a class (simple version)
class name base-class class-body Simple
example class MyClass int num 0 //
a simple variable MyClass (int initial_num)
num initial_num // set initial
value of num
cking, Flickrwww.flickr.com/photos/spotsgot/15590
60/
  • Base-class (optional)
  • Indicates (optional) parent for inheritance
  • If omitted, assumed to be Object
  • Class-bodyCode for the variables and methods of
    the class
  • Fields to be stored within objects of this class
  • Methods that can be called on objects of this
    class
  • Constructor, a special kind of method thats
    called automatically when an object of this type
    is created. Always named the same as the class,
    and doesnt include a return type

15
Inheritance
  • Operationally
  • If class B inherits from base class A, it gains
    all of the variables and methods of A
  • Class B can optionally add more variables and
    methods
  • Class B can optionally change the methods of A
  • Uses
  • Reuse of class by specializing it for a specific
    context
  • Extending a general class for morespecific uses

cking, Flickrwww.flickr.com/photos/spotsgot/15008
55/
16
Inheritance Example
class A public void display_one()
System.Console.WriteLine("I
come from A") class B A
public void display_two()
System.Console.WriteLine("I come from
B, child of A") class App
static void Main()
A a new A() // Create instance of A
B b new B() // Create instance
of B a.display_one() // I come
from A b.display_one() // I come
from A b.display_two() // I come
from B, child of A
Enya_z, Flickrwww.flickr.com/photos/nawuxika/2700
33468/
17
Visibility
  • A class is a container for data and behavior
  • Often want to control over which code
  • Can read write data
  • Can call methods
  • Access modifiers
  • Public
  • No restrictions. Members visible to any method
    of any class
  • Private
  • Members in class A marked private only accessible
    to methods of class A
  • Default visibility of class variables
  • Protected
  • Members in class A marked protected accessible to
    methods of class A and subclasses of A.

Clearly Ambiguous, Flickrwww.flickr.com/photos/cl
earlyambiguous/47022668/
18
Visibility Example
  • class A
  • public int num_slugs
  • protected int num_trees
  • class B A
  • private int num_tree_sitters
  • class C
  • Class A can see
  • num_slugs is public
  • num_trees is protected, but is defined in A
  • Class B can see
  • num_slugs is public in A
  • num_trees is protected in parent A
  • num_tree_sitters is private, but is defined in B
  • Class C can see
  • num_slugs is public in A
  • Cant see
  • num_trees protected in A
  • num_tree_sitters private in B

Raindog, Flickrwww.flickr.com/photos/raindog/436
176848/
19
Constructors
  • Use new to create a new object instance
  • This causes the constructor to be called
  • A constructor is a method called when an object
    is created
  • C provides a default constructorfor every class
  • Creates object but takes no other action
  • Typically classes have explicitly provided
    constructor
  • Constructor
  • Has same name as the class
  • Can take arguments
  • Usually public, though not always
  • Singleton design pattern makes constructor
    private to ensure only one object instance is
    created

bucklava, Flickrwww.flickr.com/photos/9229859_at_N02
/1985775921/
20
Type System
  • Value types
  • Directly contain data
  • Cannot be null
  • Allocated on the stack
  • Reference types
  • Contain references to objects
  • May be null
  • Allocated on the heap

int i 123 string s "Hello world"
Numeral type, by threedotswww.flickr.com/photos/t
hreedots/115805043/
123
i
s
"Hello world"
Slide adapted from Introduction to C, Anders
Hejlsbergwww.ecma-international.org/activities/La
nguages/Introduction20to20Csharp.ppt
21
Predefined Types
  • C predefined types
  • Reference object, string
  • Signed sbyte, short, int, long
  • Unsigned byte, ushort, uint, ulong
  • Character char
  • Floating-point float, double, decimal
  • Logical bool
  • Predefined types are simply aliases for
    system-provided types
  • For example, int System.Int32

Slide from Introduction to C, Anders
Hejlsbergwww.ecma-international.org/activities/La
nguages/Introduction20to20Csharp.ppt
22
Variables
type variable-name initialization-expression
Examples int number_of_slugs 0 string
name float myfloat 0.5f bool hotOrNot true
Also constants const int freezingPoint 32
  • Variables must be initialized or assigned to
    before first use
  • Class members take a visibility operator
    beforehand
  • Constants cannot be changed

23
Enumerations
enum identifier base-type
enumerator-list Example enum Grades
gradeA 94, gradeAminus 90, gradeBplus
87, gradeB 84
  • Base type can be any integral type (ushort, long)
    except for char
  • Defaults to int
  • Must cast to int to display in Writeln
  • Example (int)g.gradeA

24
Conditionals
if (expression) statement1 else
statement2 Example if (i lt 5)
System.Console.Writeln(i is smaller than 5)
else System.Console.Writeln(i is greater
than or equal to 5)
  • C supports C/C/Java/JavaScript/ActionScript
    syntax for if statement
  • Expression must evaluate to a bool value
  • No integer expressions here
  • means equal to for boolean comparison
  • if (i 5) // if i equals 5
  • if (i 5) // error, since i 5 is not a
    boolean expression

25
Switch statement
switch (expression) case constant-expression
statement(s) break default
statement(s)
Example string weather snowing switch
(weather) case snowing System.Console.Writ
eln(It is snowing!) break case
raining System.Console.Writeln(I am
wet!) break default
System.Console.Writeln(Weather OK)
break
  • Alternative to if
  • Evaluates expression
  • Finds matching case and executes its code
  • Case (usually) must end with break

26
More resources
  • Introduction to CAnders Hejlsberg
  • http//www.ecma-international.org/activities/Langu
    ages/Introduction20to20Csharp.ppt
  • High-level powerpoint presentation introducing
    the C language by its designer
Write a Comment
User Comments (0)
About PowerShow.com