cse1222: lecture 1the ohio state university1. computing basics computers cpu, memory input/output...

41
CSE1222: Lecture 1 The Ohio State University 1

Upload: brett-townsend

Post on 18-Jan-2018

219 views

Category:

Documents


0 download

DESCRIPTION

CSE 1222  Operating System: Unix (Linux)  Programming Language: C++  Editor: emacs  Compiler: GNU C++ compiler (g++) CSE1222: Lecture 1The Ohio State University3

TRANSCRIPT

Page 1: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

CSE1222: Lecture 1 The Ohio State University 1

Page 2: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Computing Basics Computers

CPU, Memory & Input/Output (IO)

ProgramSequence of instructions for the computer

Operating system (OS)Program which controls all other programs

CompilerProgram to convert programs written in C, C++,

Java, Fortran, etc. into machine language (i.e., 0’s and 1’s)

CSE1222: Lecture 1 The Ohio State University 2

Page 3: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

CSE 1222 Operating System: Unix (Linux)

Programming Language: C++

Editor: emacs

Compiler: GNU C++ compiler (g++)

CSE1222: Lecture 1 The Ohio State University 3

Page 4: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

First C++ Program - helloworld.cpp// This is a comment. The compiler ignores comments.

// header information// File iostream contains "cout" and "endl"// Namespace std contains "cout" and "endl"#include <iostream>using namespace std;

int main(){ cout << "Hello World!" << endl; cout << "Goodbye World!" << endl;

// Exit program. return 0; }

CSE1222: Lecture 1 The Ohio State University 4

Page 5: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Syntax and Semantics A programming language is similar to a human language, e.g. English,

French, German, etc.

Syntax is the set of rules for forming “grammatically” correct statements

The compiler tells informs you if your program is syntactically correct (or incorrect)So, don’t misspell statements or leave out important symbols

Semantics refers to the meaning associated with syntax

For example, cout is the command to display output to your monitor

One of your jobs in this course is to learn the syntax and semantics of the C++ programming language

You must study C++ syntax and semantics of C++ closelyYou will be expected to write correct C++ programs on paper during the Midterm and Final Exams. So, practice writing programs on paper.

CSE1222: Lecture 1 The Ohio State University 5

Page 6: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Compiling and running helloworld.cpp> g++ helloworld.cpp

> a.outHello World!Goodbye World!

>

CSE1222: Lecture 1 The Ohio State University 6

Page 7: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

The main Function

The main() function is where your programs will start executionYou will always need one of these

It tells the other modules in what order to execute.In a way, it “drives” your program

CSE1222: Lecture 1 The Ohio State University 7

int main(){

// program statements here

return 0;}

Page 8: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

include #include <iostream> is known a

preprocessor directive

It attaches the file, iostream, at the head of the program before it is compiled

“iostream” is needed to use the cout object

Note that preprocessor directives do not end with a semicolon

CSE1222: Lecture 1 The Ohio State University 8

Page 9: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

namespace using namespace std;

Tells the compiler to look in the namespace std (standard namespace) for objects (functions, classes, etc.) – more on this later

cout is in the namespace std

CSE1222: Lecture 1 The Ohio State University 9

Page 10: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Outputting with cout

cout allows us to easily output data to the standard output display (your monitor)

Its name comes from “Console OUTput”.

In cout’s context, << is known as the insertion operator

Any literal (character string) that is to be output must be in between double quotes

The quotes delimit the text so the computer knows it is not an instruction

CSE1222: Lecture 1 The Ohio State University 10

… cout << "Hello World!" << endl; cout << "Goodbye World!" << endl;…

Page 11: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworld2.cpp#include <iostream>using namespace std;

int main(){ // statements can be on multiple lines cout << "Hello World!" << endl; cout << "Goodbye World!" << endl; // comments can be here

return 0; // exit program}

CSE1222: Lecture 1 The Ohio State University 11

Page 12: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Program Errors Syntax Errors

You probably misspelled something, forget a symbol(s), or added an erroneous symbol(s)

Also called compiler errors○ The job of the compiler is to deal with the syntactical

correctness of your program The following examples contain syntax errors

Logic and Run-Time Errors

These errors occur after the compiler has accepted your program as syntactically correct

These errors occur during the execution of your program

CSE1222: Lecture 1 The Ohio State University 12

Page 13: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldNoInclude.cpp1. // Example of compiler (syntax) error.2. 3. // Forgot "#include <iostream>"4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 13

Page 14: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldNoInclude.cpphelloworldNoInclude.cpp: In function ’int main()’:helloworldNoInclude.cpp:8: ’cout' undeclared (first use this function)helloworldNoInclude.cpp:8: (Each undeclared identifier is reported only once for each function it appears in.)helloworldNoInclude.cpp:8: ‘endl' undeclared (first use this function)

CSE1222: Lecture 1 The Ohio State University 14

1. // Example of compiler(syntax) error.2. 3. // Forgot "#include <iostream>"4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

Page 15: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldNoNamespace.cpp1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. // Forgot "using namespace std;"5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 15

Page 16: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldNoInclude.cpphelloworldNoInclude.cpp: In function ’int main()’:helloworldNoInclude.cpp:8: ’cout’ undeclared (first use this function)helloworldNoInclude.cpp:8: (Each undeclared identifier is reported only once for each function it appears in.)helloworldNoInclude.cpp:8: ’endl’ undeclared (first use this function)

CSE1222: Lecture 1 The Ohio State University 16

1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. // Forgot "using namespace std;"5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

Page 17: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError1.cpp1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << Hello World! << endl;9. cout << Goodbye World! << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 17

Page 18: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError1.cpphelloworldError1.cpp: In function `int main()’:helloworldError1.cpp:8: ’Hello' undeclared (first use this function)helloworldError1.cpp:8: (Each undeclared identifier is reported only once for each function it appears in.)helloworldError1.cpp:8: parse error before ’!' tokenhelloworldError1.cpp:9: ’Goodbye' undeclared (first use this function)helloworldError1.cpp:9: parse error before ’!' token

CSE1222: Lecture 1 The Ohio State University 18

1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << Hello World! << endl;9. cout << Goodbye World! << endl;10. 11. return 0; // exit program12. }

Page 19: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError2.cpp1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout < "Hello World!" < endl;9. cout < "Goodbye World!" < endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 19

Page 20: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError2.cpphelloworldError2.cpp: In function ’int main()':helloworldError2.cpp:8: no match for ’std::ostream& < const char[13]' operatorhelloworldError2.cpp:8: candidates are: operator<(const char*, const char*) <builtin>helloworldError2.cpp:8: operator<(void*, void*) <builtin>helloworldError2.cpp:9: no match for ’std::ostream& < const char[15]' operatorhelloworldError2.cpp:9: candidates are: operator<(const char*, const char*) <builtin>helloworldError2.cpp:9: operator<(void*, void*) <builtin>

CSE1222: Lecture 1 The Ohio State University 20

1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout < "Hello World!" < endl;9. cout < "Goodbye World!" < endl;10. 11. return 0; // exit program12. }

Page 21: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError3.cpp1. // Example of compiler (syntax) error.2. 3. #include <iostream>4. using namespace std5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 21

Page 22: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError3.cpphelloworldError3.cpp:6: parse error before ’int'helloworldError3.cpp:9: syntax error before ’<<' token/usr/local/include/g++-v3/bits/stl_algobase.h: In function ’const _Tp& std::min(const _Tp&, const _Tp&) [with _Tp = size_t]':/usr/local/include/g++-v3/bits/stl_algobase.h:643: instantiated from here/usr/local/include/g++-v3/bits/stl_algobase.h:134: ’__b' undeclared (first use this function)/usr/local/include/g++-v3/bits/stl_algobase.h:134: (Each undeclared identifier is reported only once for each function it appears in.)/usr/local/include/g++-v3/bits/stl_algobase.h:134: ’__a' undeclared (first use this function)...

CSE1222: Lecture 1 The Ohio State University 22

…3. #include <iostream>4. using namespace std5. 6. int main()7. {8. cout << "Hello World!" << endl;…

Page 23: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError4.cpp1. // Example of compiler warning.2. 3. #include <iostream>;4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 23

Page 24: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError4.cpphelloworldError4.cpp:3:20: warning: extra tokens at end of #include directive

> a.outHello World!Goodbye World!

>

CSE1222: Lecture 1 The Ohio State University 24

1. // Example of compiler error.2. 3. #include <iostream>;4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl;9. cout << "Goodbye World!" << endl;10. 11. return 0; // exit program12. }

Page 25: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError5.cpp1. // Example of compile error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl9. cout << "Goodbye World!" << endl10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 25

Page 26: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError5.cpphelloworldError5.cpp: In function ’int main()':helloworldError5.cpp:9: parse error before ’<<' token

>

CSE1222: Lecture 1 The Ohio State University 26

1. // Example of compile error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!" << endl9. cout << "Goodbye World!" << endl10. 11. return 0; // exit program12. }

Page 27: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError6.cpp1. // Example of compile error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << 'Hello World!' << endl;9. cout << 'Goodbye World!' << endl;10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 27

Page 28: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError6.cpphelloworldError6.cpp: In function ’int main()':helloworldError6.cpp:8: character constant too longhelloworldError6.cpp:9: character constant too long

>

CSE1222: Lecture 1 The Ohio State University 28

1. // Example of compile error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << 'Hello World!' << endl;9. cout << 'Goodbye World!' << endl;10. 11. return 0; // exit program12. }

Page 29: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Program Errors Syntax Errors

You are expected to recognize and remember common Compiler errors You may be asked to identify these on an exam

Logic Errors

Your program made it past the compiler, i.e. is syntactically correct Your program successfully completed execution But, it gave you a wrong answer! If your program executes and outputs “2 + 2 = 5”, then your program

has a logical error

Run-time error

Your program made it past the compiler, i.e. is syntactically correct An error occurred during the execution of your program that made it

prematurely end before it could finish

CSE1222: Lecture 1 The Ohio State University 29

Page 30: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworldError7.cpp1. // Example of logical error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!";9. cout << "Goodbye World!";10. 11. return 0; // exit program12. }

CSE1222: Lecture 1 The Ohio State University 30

Page 31: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ helloworldError7.cpp

> a.outHello World!Goodbye World!>

CSE1222: Lecture 1 The Ohio State University 31

1. // Example of logical error2. 3. #include <iostream>4. using namespace std;5. 6. int main()7. {8. cout << "Hello World!";9. cout << "Goodbye World!";10. 11. return 0; // exit program12. }

Page 32: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

helloworld3.cpp/* This is also a comment. The compiler ignores comments. */

/* This is a multiline comment. The compiler ignores comments.*/

#include <iostream>using namespace std;

int main(){ /* These statements use '\n' for newline in place of "<< endl" */ cout << "Hello World!\n"; cout << "Goodbye World!\n";

return 0; /* exit program */}

CSE1222: Lecture 1 The Ohio State University 32

Page 33: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

mathExample1.cpp// math example

#include <iostream>#include <cmath> /* File cmath contains math functions:

sqrt, exp, sin, cos, ... */using namespace std; /* cout, endl, sqrt, exp are in

the namespace std */

int main(){ cout << "1+2+3+4+5+6 = " << 1+2+3+4+5+6 << endl; cout << "The average of 1,2,3,4,5,6 is “ <<

(1.0+2.0+3.0+4.0+5.0+6.0)/6.0 << endl; cout << "The reciprocal of 1+2+3+4+5+6 is “ <<

1.0/(1.0+2.0+3.0+4.0+5.0+6.0) << endl; cout << "The square root of 1+2+3+4+5+6 is “ << sqrt(1.0+2.0+3.0+4.0+5.0+6.0) << endl; cout << "e^(1+2+3+4+5+6) = " << exp(1.0+2.0+3.0+4.0+5.0+6.0) <<

endl;

return 0; // exit program}

CSE1222: Lecture 1 The Ohio State University 33

Page 34: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Compiling and running mathExample1.cpp> g++ mathExample1.cpp

> a.out1+2+3+4+5+6 = 21The average of 1,2,3,4,5,6 is 3.5The reciprocal of 1+2+3+4+5+6 is 0.047619The square root of 1+2+3+4+5+6 is 4.58258e^(1+2+3+4+5+6) = 1.31882e+09

>

CSE1222: Lecture 1 The Ohio State University 34

Page 35: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

mathExample1.cpp (2)

Multiple objects can be inserted into cout.

Objects that should not be taken literally should not be enclosed by double quotes. Here, we actually want to compute the expression 1+2+3+4+5+6.

CSE1222: Lecture 1 The Ohio State University 35

… cout << "1+2+3+4+5+6 = " << 1+2+3+4+5+6 << endl;

Page 36: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

mathError1.cpp// math error

#include <iostream>#include <cmath>using namespace std;

int main(){ // These statements are incorrect cout << "The average of 1,2,3,4,5,6 = “ << (1+2+3+4+5+6)/6 <<

endl; // WRONG! cout << "The reciprocal of 1+2+3+4+5+6 is “ << 1/(1+2+3+4+5+6)

<< endl; // WRONG!

return 0; // exit program}

CSE1222: Lecture 1 The Ohio State University 36

Page 37: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

> g++ mathError1.cpp

> mathError1The average of 1,2,3,4,5,6 = 3The reciprocal of 1+2+3+4+5+6 is 0

>

CSE1222: Lecture 1 The Ohio State University 37

…int main(){ // These statements are incorrect cout << "The average of 1,2,3,4,5,6 = “ << (1+2+3+4+5+6)/6 <<

endl; // WRONG! cout << "The reciprocal of 1+2+3+4+5+6 is “ << 1/(1+2+3+4+5+6)

<< endl; // WRONG!

return 0; // exit program}

Page 38: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

C++ Program Template (for now)#include <iostream>using namespace std;

int main(){ // program statements here

return 0; // exit program}

CSE1222: Lecture 1 The Ohio State University 38

Page 39: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

C++ Program Template (with Math)#include <iostream>#include <cmath>using namespace std;

int main(){ // program statements here

return 0; // exit program}

CSE1222: Lecture 1 The Ohio State University 39

Page 40: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Comments and Programming Style Good programming style

The readability of your program by other C++ programmers is very important

This is required in your assignments

Pay attention to: Indent when appropriate. You will develop a feel for this as you

see more programs.

Place comments to help explain your code. Use them to describe what the program does, to put your name on the program, to describe a function, etc.

// ... is for single line comments/* ... */ are for multi-line comments

Comments are treated as white-space, and are unseen by the compiler

CSE1222: Lecture 1 The Ohio State University 40

Page 41: CSE1222: Lecture 1The Ohio State University1. Computing Basics  Computers CPU, Memory  Input/Output (IO)  Program Sequence of instructions for the

Textbook Readings Now go home and start your assigned

reading for Chapters 1 and 2 in your text

CSE1222: Lecture 1 The Ohio State University 41