CISC/CMPE320 - Prof. McLeod

Slides:



Advertisements
Similar presentations
C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.
Advertisements

Introduction to C Programming CE Lecture 1 Introduction to C.
Three types of computer languages
Unix Continuum of Tools Do something once: use the command line Do something many times: –Use an alias –Use a shell script Do something that is complex.
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?
1 ENERGY 211 / CME 211 Lecture 2 September 24, 2008.
CMSC 104, Version 9/011 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program 104 C Programming Standards and Indentation.
Copyright 2003 Scott/Jones Publishing Brief Version of Starting Out with C++, 4th Edition Chapter 1 Introduction to Computers and Programming.
“C” Programming Language What is language ? Language is medium of communication. If two persons want to communicate with each other, they have to use.
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
Instructor: Tina Tian. About me Office: RLC 203A Office Hours: Wednesday 1:30 - 4:30 PM or .
Outline  History  What is C++  How does C++ relate to other OO languages  Types of applications for C++  Components of MS’s Visual C  Advantages.
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. 
Creating your first C++ program
History of C 1950 – FORTRAN (Formula Translator) 1959 – COBOL (Common Business Oriented Language) 1971 – Pascal Between Ada.
Introduction to C++ Programming Language
COMPUTER PROGRAMMING. A Typical C++ Environment Phases of C++ Programs: 1- Edit 2- Preprocess 3- Compile 4- Link 5- Load 6- Execute Loader Primary Memory.
N from what language did C++ originate? n what’s input, output device? n what’s main memory, memory location, memory address? n what’s a program, data?
CS CS CS IA: Procedural Programming CS IB: Object-Oriented Programming.
Chapter 0 Getting Started. Objectives Understand the basic structure of a C++ program including: – Comments – Preprocessor instructions – Main function.
Algorithms  Problem: Write pseudocode for a program that keeps asking the user to input integers until the user enters zero, and then determines and outputs.
Monday, Jan 6, 2003Kate Gregory with material from Deitel and Deitel CO 204 Object Oriented Programming 2003 Trent University Kate Gregory.
CS Computer Science I. BCPL was developed in 1967 as a language for writing operating systems and software compilers In 1970, the creators of the.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Reminders: Course Web Site: Have you filled out the questionnaire.
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.
Introduction to C Programming Language. History of C  C was evolved by Dennis Ritchie at AT&T Bell Laboratories in early of 1970s  Successor of: ALGOL.
Chapter 11  Getting ready to program  Hardware Model  Software Model  Programming Languages  Facts about C++  Program Development Process  The Hello-world.
L071 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program Reading Sections
Fundamentals of Programming C++ Programming Language CS 1400 Dennis A. Fairclough Version 1.1 C++ Programming Language CS 1400 Dennis A. Fairclough Version.
Week 13 - Friday.  What did we talk about last time?  Server communications on a socket  Function pointers.
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 Topics Compilation Using the gcc Compiler
UMBC CMSC 104 – Section 01, Fall 2016
Prof: Dr. Shu-Ching Chen TA: Samira Pouyanfar Spring 2017
Topic Pre-processor cout To output a message.
Introduction to C++ Systems Programming.
Programming Introduction to C++.
Algorithms Problem: Write pseudocode for a program that keeps asking the user to input integers until the user enters zero, and then determines and outputs.
Beginning C++ Programming
CISC/CMPE320 - Prof. McLeod
Introduction to C Topics Compilation Using the gcc Compiler
Introduction to C Topics Compilation Using the gcc Compiler
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.
Computer science By/ Midhat Mohiey. Introduction to Programming using C ++ 2.
CMPE212 – Stuff… Course Web Site:
CISC101 Reminders Assn 3 due tomorrow, 7pm.
Programming 1 (CS112) Dr. Mohamed Mostafa Zayed 1.
Creating your first C program
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.
2008/09/29: Lecture 7 CMSC 104, Section 0101 John Y. Park
CISC124 From Thursday: Course Web Site:
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CS IA: Procedural Programming CS IB: Object-Oriented Programming
(Computer fundamental Lab)
CMPE212 – Reminders Course Web Site:
CSC215 Lecture Introduction.
Computer Terms Review from what language did C++ originate?
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CMPE212 – Reminders Assignment 2 due today, 7pm.
Winter 2019 CMPE212 5/25/2019 CMPE212 – Reminders
CISC101 Reminders Assignment 3 due today.
Introduction to C Topics Compilation Using the gcc Compiler
CMPE212 – Reminders Assignment 2 due next Friday.
SPL – PS1 Introduction to C++.
Presentation transcript:

CISC/CMPE320 - Prof. McLeod Winter 2013 CISC/CMPE320 8/26/2018 CISC/CMPE320 Reminders: CMPE320 students in onQ yet? Next week’s tutorial? I’ll let you know in Thursday’s lecture… Course Web Site: http://research.cs.queensu.ca/home/cisc320 Are you able to run a C++ console program in your IDE of choice? Fall 2017 CISC/CMPE320 - Prof. McLeod Prof. Alan McLeod

CISC/CMPE320 - Prof. McLeod Today “Hello World” Ritual and some explanation. Some history of C++. Fall 2017 CISC/CMPE320 - Prof. McLeod

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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod 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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod 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 2017 CISC/CMPE320 - Prof. McLeod

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. Fall 2017 CISC/CMPE320 - Prof. McLeod

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). Or choose “Dialect” and the C++11 option. (Don’t do both of the above.) Click on “Apply” after the change. Fall 2017 CISC/CMPE320 - Prof. McLeod

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

CISC/CMPE320 - Prof. McLeod 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 2017 CISC/CMPE320 - Prof. McLeod

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

CISC/CMPE320 - Prof. McLeod “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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod B Written at Bell Labs by Ken Thompson with contributions by Dennis Ritchie. First appeared in 1969. 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. Fall 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod Thompson & Ritchie 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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod Dennis Ritchie, of Bell Labs, is given credit for C in 1972. 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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod 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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod 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, 2014. A smaller set of changes from C++11. Work is underway on C++17. Fall 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod C++ Standards, Cont. But: It takes a while (and a considerable amount of work) to update compilers to the new standards. See: http://en.cppreference.com/w/cpp/compiler_support for a summary of how various compilers are doing. GCC version 4.8.1 and later is now up-to-date with C++11. We are using version 6.3.0 Other big compilers like Visual Studio and Clang are also now up-to-date with C++11. Fall 2017 CISC/CMPE320 - Prof. McLeod

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

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 2017 CISC/CMPE320 - Prof. McLeod

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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod 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 2017 CISC/CMPE320 - Prof. McLeod

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

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 2017 CISC/CMPE320 - Prof. McLeod

CISC/CMPE320 - Prof. McLeod Who Reports the Errors? An Eclipse pre-compiler does a pretty good (but not perfect!) 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 2017 CISC/CMPE320 - Prof. McLeod