Lecture 1 Introduction Richard Gesick Figures from Lewis, “C# Software Solutions”, Addison Wesley Agenda • • • • Overview of Programming Languages Basics of C# and the IDE Errors Intro to Objects and Classes 1-2 Programming Languages • A programming language specifies the words and symbols that we can use to write a program • A programming language employs a set of rules that dictate how the words and symbols can be put together to form valid program statements 1-3 Programming Languages • Machine language • Assembly language • High-level languages 1-4 Machine & Assembly Languages • Machine language – Written in binary or hex – Written using CPU instruction set – Difficult to write, and not portable • Assembly language – Written using mnemonics for instructions and symbolic names for variables – Assembler converts code to machine language – Easier to write, but still not portable 1-5 High-Level Languages • • • • Examples: Fortran, Perl, COBOL, C++, Java Highly symbolic Portable among CPU architectures Languages can be designed for specific uses: – Perl: Internet applications – Fortran: scientific applications – COBOL: business applications 1-6 High-Level Languages • Compiled – Compiler converts source code (instructions and data) into machine language, then program is executed • Interpreted – Interpreter converts instructions into machine language at run time as instructions are executed – Usually executes more slowly than compiled program 1-7 1-8 Programming Basics • Programming is translating a problem into ordered steps consisting of operations a computer can perform: – Input – Calculations – Comparisons of values – Moving data – Output • The order of execution of instructions is called flow of control 1-9 Four Types of Flow of Control • Sequential Processing – Execute instructions in order • Method Call – Jump to code in method, then return • Selection – Choose code to execute based on data value • Looping or Iteration – Repeat operations for multiple data values 1-10 Program Development • The mechanics of developing a program include several activities – writing the program in a specific programming language – translating the program into a form that the computer can execute – investigating and fixing various types of errors that can occur • Software tools can be used to help with all parts of this process 1-11 Problem Solving • The purpose of writing a program is to solve a problem • Solving a problem consists of multiple activities: – Understand the problem – Design a solution – Consider alternatives and refine the solution – Implement the solution – Test the solution • These activities are not purely linear – they overlap and interact 1-12 Problem Solving • The key to designing a solution is breaking it down into manageable pieces • When writing software, we design separate pieces that are responsible for certain parts of the solution • An object-oriented approach lends itself to this kind of solution decomposition • We will dissect our solutions into pieces called objects and classes 1-13 Program Skeleton 1-14 1-15 Games Example using System; namespace CastleAttack { static class Program { /// <summary> /// The main entry point for the application. /// </summary> static void Main(string[] args) { using (CastleAttack game = new CastleAttack( )) { game.Run(); } } } } 1-16 Identifiers • Words in programs • Categories: – We make up – Others make up – Reserved in the language 1-17 C# Identifiers • Letter followed by zero or more letters and digits • Case sensitive 1-18 1-19 1-20 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 1-21 Comments • Comments in a program are called inline documentation • They should be included to explain the purpose of the program and describe processing steps • They do not affect how a program works • C# comments can take two forms: // this comment runs to the end of the line /* this comment runs to the terminating symbol, even across line breaks */ 1-22 Syntax and Semantics • The syntax rules of a language define how we can put together symbols, reserved words, and identifiers to make a valid program • The semantics of a program statement define what that statement means (its purpose or role in a program) • A program that is syntactically correct is not necessarily logically (semantically) correct • A program will always do what we tell it to do, not what we meant to tell it to do 1-23 Errors • A program can have three types of errors • The compiler will find syntax errors and other basic problems (compile-time errors) – If compile-time errors exist, an executable version of the program is not created • A problem can occur during program execution, such as trying to divide by zero, which causes a program to terminate abnormally (run-time errors) • A program may run, but produce incorrect results, perhaps using an incorrect formula (logical errors) 1-24 Program Errors • Compiler errors – Found by the compiler. – Usually caused by incorrect syntax or spelling • Run-time errors – Reported by the system – Usually caused by incorrect use of prewritten classes or invalid data • Logic errors – Found by testing the program – Incorrect program design or incorrect execution of the design 1-25 Expect Errors 1-26 .NET 1-27 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 1-28 Object-oriented Programming (OOP) • Class – tool for encapsulating data and operations (methods) into one package – defines a template or model for creating and manipulating objects • Objects – data created using the class and its methods – an object is an instance of the class – creating an object is instantiation 1-29 Objects • An object has: – state - descriptive characteristics – behaviors - what it can do (or what can be done to it) • The state of a bank account includes its current balance • The behaviors associated with a bank account include the ability to make deposits and withdrawals • Note that the behavior of an object might change its state 1-30 Classes • An object is defined by a class • A class is the blueprint of an object • The class uses methods to define the behaviors of the object • The class that contains the main method of a C# program represents the entire program • A class represents a concept, and an object represents the embodiment of that concept • Multiple objects can be created from the same class 1-31 1-32 Objects and Classes A class (the concept) An object (the realization) Bank Account John’s Bank Account Balance: $5,257 Multiple objects from the same class Bill’s Bank Account Balance: $1,245,069 Mary’s Bank Account Balance: $16,833 Class and Object Example • How would you describe or define these pictures? • What are the differences? • What are the similarities? • Are you describing a single entity or an entire group of entities? 1-34 What might the classes be? Objects? Summary • So what did you learn? • Name three important concepts from the first two lectures. • What would I put on a test?