29
Lect 5 P. 1 Engineering H192 - Computer Programming Winter Quarter Gateway Engineering Education Coalition C Programming Basics Lecture 5

Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Embed Size (px)

Citation preview

Page 1: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 1

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

C Programming Basics

Lecture 5

Page 2: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 2

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

ENG H192 Course Web Page

• A web page which contains the course syllabus, updated lecture notes and other useful information may be found at:

http://feh.eng.ohio-state.edu

Page 3: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 3

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

C Program Basics

• C vs. C++

– C is a subset of C++. All of features in C are contained in C++

– C++ adds more libraries with functions for object oriented programming

– C++ also adds more keywords and some added features.

Page 4: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 4

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Keywords in C and C++

Certain words have a special meaning to the C or C++ compiler. They are called reserved words or keywords. We should not try to use these words as names of variables or function names in a program.

The keyword list for C contains 32 words (see text, pg. 545). C++ adds 30 more keywords.

Page 5: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 5

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Some Keywords in C and C++ switchtemplatethisthrowtrytypedefunionunsignedvirtualvoidvolatilewhile

newoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstruct

doubleelseenumexternfloatforfriendgotoifinlineintlong

asmautobreakcasecatchcharclassconstcontinuedefaultdeletedo

Page 6: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 6

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Program Structure in C

• EACH complete C program is composed of:

– Comment statements– Pre-processor directives– Declaration statements– One or more functions– Executable statements

Page 7: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 7

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Program Structure in C

• EACH complete C program is composed of:– Comment statements– Pre-processor directives– Comment statements– Declaration statements– Comment statements– One or more functions– Comment statements– Executable statements – Comment statements

Page 8: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 8

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Comment Statements

• Formal Comments:/* Comment ….. */

– Used for detailed description of functions or operations (for our benefit, not compiler’s).

– Can take multiple lines in source file.

• Informal Comments (only in C++, not C):// Comment ….. Ends at the end of line

– Used for quick comments like:int temp; // temporary variable for storing

// the input value

Page 9: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 9

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Pre-Processor Directives

#include -- header files for library functions

Example:

#include <stdio.h>

#define -- define constants and macrosExamples:

#define e 2.7182818 #define pi 3.14159265359

Note Space

Note Spaces

Page 10: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 10

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Declarations

• Declarations tell the compiler what variable names will be used and what type of data each can handle (store).

• Example declarations:

int a, b, c ;

float r, p, q ;

double x, y, z ;

char m, n ;

Page 11: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 11

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Data Types

• Integer variables: int a, b ;

• Integer variables, like a or b, store only whole numbers like 3 or 7, not 3.33 or 7.65, and only up to certain maximum values.

• Floating point variables: float c, d ;

• Floating point variables, like c or d, store rational numbers, like 3.14159, but only a limited number of digits of precision.

Page 12: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 12

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Internal Storage Representation

• Definitions:– Binary digit -- or a "bit", is either a 0 or a 1– Byte -- usually a collection of 8 bits together– Word -- often a collection of 4 bytes together

• On the SGI Unix system:– an "int" data type takes up 4 bytes

(on some systems, an "int" is only 2 bytes)– a "float" data type takes up 4 bytes– a "double" data type take up 8 bytes– a "char" data type takes up 1 byte

Page 13: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 13

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Programs Have One or More Functions

• Even the main program is a function.

The body of each user-written function is enclosed in braces, { } (or curly brackets)

• The syntax of a function is: <function type> function_name (arg. list) {

/* beginning of function */

} /* end of function */

Page 14: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 14

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Executable Statements

• SimpleDeclaring variables

int temp ;char a ;

Assigning Values temp = 5 ;

• Complex, i.e., Calling Functionsfubar (x, y) ;

• Calculationsx = (5. / 2 + 6) * 7 ;

Page 15: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 15

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Arithmetic Operators

* multiply + add

/ divide - subtract

% remainder, where:

x = 13 % 5 ; /* x will be equal to 3 */

• An expression can be used almost anywhere a variable of the same type can be used.

Ex. expressions: num + 3, a * d - 5, ...

Page 16: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 16

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Mixed Mode Arithmetic

• When performing arithmetic operations, the "mode" will one of:– Floating point, if both operands are floating

point– Integer, if both operands are integer– Mixed, if one operand in integer and the other

is floating point -- the result is floating point• Integer operations produce integer results

(remember how you first learned to to division?)

Page 17: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 17

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Assignment Operators

Operator: Example: Meaning:

= x = 5 ; x = 5 ;

+= x += 5 ; x = x + 5 ;

–= x –= 5 ; x = x – 5 ;

/= x /= 5 ; x = x / 5 ;

*= x *= 5 ; x = x * 5 ;

%= x %= 5; x = x % 5 ;

Page 18: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 18

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Assignment Operators

Example of assignment operators:

int a = 4, b = 2, c = 36 ;

a += b ; /* This adds b to a, a = ? */

c /= a + b ; /* What is value of c now? */

Page 19: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 19

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Assignment Operators

Example of assignment operators:

int a = 4, b = 2, c = 36 ;

a += b ; /* This adds b to a, a = ? */

[ Answer: a = a + b, so a = 4 + 2 or a = 6 ]

c /= a + b ; /* What is value of c now? */

Page 20: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 20

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Assignment Operators

Example of assignment operators:

int a = 4, b = 2, c = 36 ;

a += b ; /* This adds b to a, a = ? */

[ Answer: a = a + b, so a = 4 + 2 or a = 6 ]

c /= a + b ; /* What is value of c now? */

[ Answer: c = c / (a + b), and a = 6 now,

so c = 36 / (6 + 2), so c = 36 / 8 or c = 4 ]

Page 21: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 21

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Increment/Decrement Operators

Operator: Meaning: When?

count++ ; count = count + 1 ; After use

++count ; count = count + 1 ; Before use

count-- ; count = count - 1 ; After use

--count ; count = count - 1 ; Before use

Page 22: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 22

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Increment/Decrement Operators

Examples of increment and decrement operators:

int a = 4, b = 2, c;

c = ++a + b-- ;

/* What are the values of a, b, c now? */

c = b-- - ++a ;

/* What are the values of a, b, c now? */

Page 23: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 23

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Increment/Decrement Operators

Examples of increment and decrement operators:

int a = 4, b = 2, c; c = ++a + b-- ; /* What are the values of a, b, c now? */

(Answers: a = 5, b = 1, c = 7)c = b-- - ++a ;/* What are the values of a, b, c now? */

Page 24: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 24

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Increment/Decrement Operators

Examples of increment and decrement operators:

int a = 4, b = 2, c; c = ++a + b-- ; /* What are the values of a, b, c now? */

(Answers: a = 5, b = 1, c = 7)c = b-- - ++a ;/* What are the values of a, b, c now? */

(Answers: a = 6, b = 0, c = -5)

Page 25: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 25

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Relational Operators

Operator: Meaning:

< Less Than> Greater Than<= Less Than or Equal To>= Greater Than or Equal To== Exactly Equal To!= Not Equal To

Page 26: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 26

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Relational Operators

• Used for asking questions like: Is x bigger than 10?

• In C, the value of 1 stands for true and 0 stands for false. But C will recognize any non zero value as true.

• NOTE: "==" is NOT same as "="

Page 27: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 27

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Logical Operators

! (not)

Ex: a != b is true if a and b are not equal

&& (and)

Ex: 5<6 && 7>4 is true, but

5>6 && 7>4 is not true (i.e., false)

|| (or)

Ex: 5>6 || 7>4 is true

5<6 || 7<4 is also true

Page 28: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 28

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Exponentiation Operations

Exponentiation is not written as x**2 or x^2

C does not have an exponentiation operator. You can use the math function pow (a, b) which raises a to the b power. You must put a #include <math.h> in your source code and must also use the -lm switch in your compile command when on the SGI UNIX system.

 Ex: >CC -o myprog.out myprog.cpp -lm

Page 29: Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 5P. 1Winter Quarter C Programming Basics Lecture 5

Lect 5 P. 29

Engineering H192 - Computer Programming

Winter Quarter Gateway Engineering Education Coalition

Skeleton Program

/* Name: Brutus Buckeye *//* Seat No. 0, Instr: W. Hayes *//* Program progname */#include <stdio.h>#include <stdlib.h>#include <math.h>void main ( ){ statements ;}