Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Course Web Site: Have you filled out the questionnaire.

Slides:



Advertisements
Similar presentations
1.00 Lecture 37 A Brief Look at C++: A Guide to Reading C++ Programs.
Advertisements

A C++ Crash Course Part II UW Association for Computing Machinery Questions & Feedback.
C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.
Chapter 3: Beginning Problem Solving Concepts for the Computer Programming Computer Programming Skills /1436 Department of Computer Science.
COSC 120 Computer Programming
Three types of computer languages
1 Key Concepts:  Why C?  Life Cycle Of a C program,  What is a computer program?  A program statement?  Basic parts of a C program,  Printf() function?
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 15 - C++ As A "Better C" Outline 15.1Introduction.
1 ENERGY 211 / CME 211 Lecture 2 September 24, 2008.
Introduction to C++CS-2303, C-Term Introduction to C++ CS-2303 System Programming Concepts (Slides include materials from The C Programming Language,
Guide To UNIX Using Linux Third Edition
C++ fundamentals.
C programming Language and Data Structure For DIT Students.
Introduction To C++ Programming 1.0 Basic C++ Program Structure 2.0 Program Control 3.0 Array And Structures 4.0 Function 5.0 Pointer 6.0 Secure Programming.
CSE 332: C++ program structure and development environment C++ Program Structure (and tools) Today we’ll talk generally about C++ development (plus a few.
C Programming. Chapter – 1 Introduction Study Book for one month – 25% Learning rate Use Compiler for one month – 60%
Copyright 2003 Scott/Jones Publishing Brief Version of Starting Out with C++, 4th Edition Chapter 1 Introduction to Computers and Programming.
“C” Programming Language CIS 218. Description C is a procedural languages designed to provide lowlevel access to computer system resources, provide language.
Input & Output: Console
Instructor: Tina Tian. About me Office: RLC 203A Office Hours: Wednesday 1:30 - 4:30 PM or .
By – Tanvir Alam.  This tutorial offers several things.  You’ll see some neat features of the language.  You’ll learn the right things to google. 
Introduction to C++ Systems Programming. Systems Programming: Introduction to C++ 2 Systems Programming: 2 Introduction to C++  Syntax differences between.
Program A computer program (also software, or just a program) is a sequence of instructions written in a sequence to perform a specified task with a computer.
Creating your first C++ program
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
History of C 1950 – FORTRAN (Formula Translator) 1959 – COBOL (Common Business Oriented Language) 1971 – Pascal Between Ada.
Rossella Lau Lecture 1, DCO10105, Semester B, DCO10105 Object-Oriented Programming and Design  Lecture 1: Introduction What this course is about:
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
CS CS CS IA: Procedural Programming CS IB: Object-Oriented Programming.
Prepared by: Elsy Torres Shajida Berry Siobhan Westby.
Chapter 0 Getting Started. Objectives Understand the basic structure of a C++ program including: – Comments – Preprocessor instructions – Main function.
Monday, Jan 6, 2003Kate Gregory with material from Deitel and Deitel CO 204 Object Oriented Programming 2003 Trent University Kate Gregory.
Fall 2015CISC124 - Prof. McLeod1 CISC124 Have you filled out the lab section survey? (As of last night 54 left to fill out the survey.) TA names have been.
Chapter 4 Literals, Variables and Constants. #Page2 4.1 Literals Any numeric literal starting with 0x specifies that the following is a hexadecimal value.
Programming Fundamentals. Overview of Previous Lecture Phases of C++ Environment Program statement Vs Preprocessor directive Whitespaces Comments.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Today: –Review declaration, implementation, simple class structure. –Add an exception class and show.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Managers and “mentors” identified on projects page. All member accounts created and projects populated.
Today… “Hello World” ritual. Brief History of Java & How Java Works. Introduction to Java class structure. But first, next slide shows Java is No. 1 programming.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Have you filled out the questionnaire in Moodle? (23 left – as of last night). Are you able.
Lecture 01a: C++ review Topics: Setting up projects, main program Memory Diagrams Variables / Types (some of) the many-types-of-const's Input / Output.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Assignment 3 is due Sunday, the 8 th at 7pm. Problems with assn 3? Discuss at your team meeting tonight.
Course Title Object Oriented Programming with C++ instructor ADEEL ANJUM Chapter No: 03 Conditional statement 1 BY ADEEL ANJUM (MSc-cs, CCNA,WEB DEVELOPER)
Chapter 11  Getting ready to program  Hardware Model  Software Model  Programming Languages  Facts about C++  Program Development Process  The Hello-world.
C Part 1 Computer Organization I 1 August 2009 © McQuain, Feng & Ribbens A History Lesson Development of language by Dennis Ritchie at Bell.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Have you filled out the questionnaire in Moodle? (3 left – as of last night). Office hours.
Chad’s C++ Tutorial Demo Outline. 1. What is C++? C++ is an object-oriented programming (OOP) language that is viewed by many as the best language for.
Introduction to C Programming
Fundamentals of Programming C++ Programming Language CS 1400 Dennis A. Fairclough Version 1.1 C++ Programming Language CS 1400 Dennis A. Fairclough Version.
Introduction to C Programming I Subject: T0016 – ALGORITHM AND PROGRAMMING Year: 2013.
Quiz 1 A sample quiz 1 is linked to the grading page on the course web site. Everything up to and including this Friday’s lecture except that conditionals.
Week 13 - Friday.  What did we talk about last time?  Server communications on a socket  Function pointers.
1 ENERGY 211 / CME 211 Lecture 3 September 26, 2008.
STRUCTURED PROGRAMMING Complete C++ Program. Content 2  Main Function  Preprocessor directives  User comments  Escape characters  cout statement.
Chapter 15 - C++ As A "Better C"
Introduction to C++ Systems Programming.
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
C Basics.
Introduction to C Programming Language
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
Choice of Programming Language
INTRODUCTION c is a general purpose language which is very closely associated with UNIX for which it was developed in Bell Laboratories. Most of the programs.
Govt. Polytechnic,Dhangar
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
Chapter 1 c++ structure C++ Input / Output
SPL – PS1 Introduction to C++.
Presentation transcript:

Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Course Web Site: Have you filled out the questionnaire in Moodle? (39 left – as of last night). Are you able to run a C++ console program in your IDE of choice? Today: –“Hello World” Ritual –Some history of C++

Demo - “Hello World” in C++ For simple console demos I’m going to use the Eclipse CDT. A few notes: –Make sure your project has the proper “Includes” links. –You should provide the extension “.cpp” for a source code file, or “.h” for a header, or declaration file. –Suggest that you turn off automatic building. (Off by default…) –But, don’t forget to save, then build before you run. Fall 2015CISC/CMPE320 - Prof. McLeod2

Fall 2015CISC/CMPE320 - Prof. McLeod3 Some Explanation #include is a preprocessor directive that is used to include external code into your program. iostream is a library of I/O streams (makes sense!). A namespace is a collection of name definitions. (The same name can be used in separate namespaces). using namespace std; says that your program is using names from the std (or “standard”) namespace. Another way to do this is to use the :: “scope resolution operator”, as in std::cout (but this gets to be a pain of you are using a lot of names…)

Fall 2015CISC/CMPE320 - Prof. McLeod4 Some Explanation, Cont. int main() is a function header. Code within the function is contained between { } cout is an object from the iostream library that represents the console output stream. << is the “insertion operator” and is used to insert the supplied string literal into the cout object. endl stands in for a line feed character. In ISO C++ the return 0; is supposed to be optional, but some older compilers still require it.

Fall 2015CISC/CMPE320 - Prof. McLeod5 Some More Explanation… Note that older style C libraries still use the “.h” extension, as in stdio.h. The newer library uses cstdio instead. Sometimes you just don’t know, so you have to experiment. For example, from the STL, you could try: –Vector –vector.h –vector One of them should work! I will always try to use the latest library names.

Aside:How to Run C++11 Code in Eclipse Assuming the MinGW (or GCC) compiler. To change for just a project: C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags. Put “-std=c++11” at the end (after a space). Click on “Apply” after the change. Fall 2015CISC/CMPE320 - Prof. McLeod6

Fall 2015CISC/CMPE320 - Prof. McLeod7 History of C++ In the beginning there was C… Not really, but let’s not go back too far…

Fall 2015CISC/CMPE320 - Prof. McLeod8 History of C++ - BCPL 1966 is before you were born, so let’s start there: BCPL or “Basic Computer Programming Language” designed by Martin Richards of the University of Cambridge. Used to write compilers. It was the first language that created “O-code” before executable code:

Fall 2015CISC/CMPE320 - Prof. McLeod9 Aside – “O-Code” BCPL Source Code Machine Code Virtual Machine Compiler O-Code CPU Java Source Code Machine Code JVM Compiler Byte Code CPU Generic Hardware Dependent

Fall 2015CISC/CMPE320 - Prof. McLeod10 “O-Code”, Cont. Before BCPL, when they wanted to run on a new platform, the entire compiler program had to be re-written (took 5 man-months…). Now only the part (about 1/5 of the total code) that generated the machine code – the “Virtual Machine” had to be changed, the part that generated the generic O-Code did not have to change. Radical Idea! (Also the first language to use { } and // for comments.)

Fall 2015CISC/CMPE320 - Prof. McLeod11 B Written at Bell Labs by Ken Thompson with contributions by Dennis Ritchie. First appeared in Stripped down version of BCPL to run on “minicomputers” like the DEC PDP-11. Had a single data type, the “word” that was an integer most of the time, but could also be a memory reference. Gradually evolved into C in the early 70’s.

Ken Thompson (seated) and Dennis Ritchie working on a DEC PDP11 in 1970: They also invented the UNIX OS. (The PDP11 was a 16 bit machine.) Fall 2015CISC/CMPE320 - Prof. McLeod12

Fall 2015CISC/CMPE320 - Prof. McLeod13 C Dennis Ritchie, of Bell Labs, is given credit for C in A procedural language used for systems programming (compilers for example) and for embedded systems. Gives low level access to memory and efficient translation to machine code. No longer have to code in Assembly language! Used on any kind of computer during the late 70’s and early 80’s including the IBM-PC. In 1983 the language was standardized by ANSI, giving birth to “ANSI C”, also called “C89”.

Fall 2015CISC/CMPE320 - Prof. McLeod14 C With Classes Was developed by Bjarne Stroustrup at Bell Labs starting in 1979, as an enhancement to C. Added to C: –classes –virtual functions –operator overloading –multiple inheritance –templates –exception handling, etc. In 1983 the name of the language was changed to C++ (the increment operator…).

Fall 2015CISC/CMPE320 - Prof. McLeod15 C++ Standards It took a long time, but the language was first standardized in 1998 by ISO. The standard was updated in 2003 and amended in 2005 (310 pages, without the library!). Another standard was completed in 2011: “C++11” (August 12, 2011, 1338 pages!). C++14 came out on August 18, A smaller set of changes from C++11. Work is underway on C++17.

C++ Standards, Cont. But: It takes a while (and a considerable amount of work) to update compilers to the new standards. See: for a summary of how various compilers are doing. GCC version is now up-to-date with C++11. Visual Studio is almost as good and Clang is also up-to-date with C++11. Fall 2015CISC/CMPE320 - Prof. McLeod16

C++ Standards, Cont. Compilation is *not* standardized, just the syntax. How does Java compare, for example? Fall 2015CISC/CMPE320 - Prof. McLeod17

Fall 2015CISC/CMPE320 - Prof. McLeod18 The “Philosophy” of C++ From “The Design and Evolution of C++” by (who else!) Bjarne Stroustrup, 1994: C++ is designed to be a statically typed, general- purpose language that is as efficient and portable as C. C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming). C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly.

Fall 2015CISC/CMPE320 - Prof. McLeod19 The “Philosophy” of C++, Cont. C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C. C++ avoids features that are platform specific or not general purpose. C++ does not incur overhead for features that are not used (the "zero-overhead principle"). C++ is designed to function without a sophisticated programming environment.

Fall 2015CISC/CMPE320 - Prof. McLeod20 ISO C++ and C The C++ standard library has incorporated the standard C library with just a few optimizations. C++ also has the “Standard Template Library”, or “STL”, that contains many pre-defined data structures, for example. Generally, well-written C code will run in C++. But some C “things” will not work in C++ (for example, in C you can use new or class as variable names, since they are not C keywords.)

Fall 2015CISC/CMPE320 - Prof. McLeod21 Running a C++ Program Source Code, *.cpp, *.h Machine Code, *.exe Linker Compiler O-Code, *.o CPU Library Code Source Code Editor

Running a C++ Program, Cont. Thankfully, an IDE simplifies this process for you. A project (a set of source code and resource files) is “built” – which consists of both compilation and linking. MinGW (“Minimalist GNU for Windows”), for example uses the g++.exe program for this. The IDE makes up the command line calls to this program. Building creates a *.o file and then a *.exe file. Then you run the *.exe program. Each stage of this process can unearth errors. Fall 2015CISC/CMPE320 - Prof. McLeod22

Who Reports the Errors? An Eclipse pre-compiler does a pretty good job of reporting syntax errors and warnings. Errors may prevent building. You can (but should not!) ignore warnings. Build errors are reported by the compiler and are seen in the console window. Run-time errors are reported by the OS, which is running the *.exe file. Fall 2015CISC/CMPE320 - Prof. McLeod23

Variable Types How many variable types do you have in C? (not counting structs)? You can have the atomic types, pointers and arrays of these types. Anything else? How many types can you have in C++? Infinitely many! Thousands defined in the STL. You can define as many as you want. Oh – the atomic types are still there too… Fall 2015CISC/CMPE320 - Prof. McLeod24

Fall 2015CISC/CMPE320 - Prof. McLeod25 Variable Declaration C++ is declarative and statically typed. ie. “Declare before you use” and “You can’t change the type of a variable, once declared”. Unlike C, you can declare variables anywhere, as long as you satisfy the above. Initialization is good practice, but is optional. Examples: int numStudents(40); // C++ style declare bool flagVal(true); double aNum;

Variable Declaration, Cont. This is what we are used to from Java: int numStudents = 40; bool flagVal = true; For a C++ “style” declaration, use: int numStudents(40); bool flagVal(true); Looks like you are invoking a constructor doesn’t it? Fall 2015CISC/CMPE320 - Prof. McLeod26

Fall 2015CISC/CMPE320 - Prof. McLeod27 Type Categories in C++ Fundamental types: –bool, char, integer types and floating point types Enumerated types. The void type. Pointer types (like int* ) Array types (like int[] ) Reference types (like int& ) Data structures (like vector ) and classes

Fall 2015CISC/CMPE320 - Prof. McLeod28 bool and char Types bool literal values: true and false char literal values: 'H' Escape characters: –\n newline –\t tab –\b backspace –\r carriage return –\a BEL –\? ? –\\ \ –\' ' –\" " –\0 ##octal –\x ##hex

Fall 2015CISC/CMPE320 - Prof. McLeod29 Integer Types Simplify things a bit (forget unsigned …): –short 2 bytes –int 4 bytes –long 4 bytes –long long 8 bytes To get a long long literal append an l or better yet, an L to the end of the number. What is “unsigned” anyways?

Fall 2015CISC/CMPE320 - Prof. McLeod30 Floating Point Types float 4 bytes double 8 bytes long double 12 bytes Literal floating point numbers have a decimal place and/or an exponent: 4.5, 2.3e-7, for example. A float literal has an f or F appended to it. A long double gives you easy access to extended precision numbers.

Fall 2015CISC/CMPE320 - Prof. McLeod31 TestTypes Demo Your compiler will determine the amount of memory allocated to the numeric types. Use the sizeof() function to find out. Do integers wrap around as they do in Java? See the demo… Note that there is some variation on these types depending on the compiler you are using.

Fall 2015CISC/CMPE320 - Prof. McLeod32 Aside - Divide by Zero Example How does Eclipse/GCC handle a divide by zero? Check out TestZeroDivide.cpp. Note: compilation errors and warnings, run-time errors. Note that the run-time error results from the crashing of the executable, and is reported by the OS, not Eclipse. How does Java handle a divide by zero?