Last Topic Review

62
CISC 105 – Topic 2 Last Topic Review Name the principle components of a computer. What advantage does assembly language have over machine language? What are three responsibilities of the operating system? What advantages do high-level languages have over assembly language?

description

Last Topic Review. Name the principle components of a computer. What are three responsibilities of the operating system?. What advantage does assembly language have over machine language?. What advantages do high-level languages have over assembly language?. Last Topic Review. - PowerPoint PPT Presentation

Transcript of Last Topic Review

Page 1: Last Topic Review

CISC 105 – Topic 2

Last Topic Review Name the principle components of a

computer.

What advantage does assembly language have over machine language?

What are three responsibilities of the operating system?

What advantages do high-level languages have over assembly language?

Page 2: Last Topic Review

CISC 105 – Topic 2

Last Topic Review What computer program translates a

source code file into an object file? What program combines object files and

produces an executable file? What part of the operating system is

responsible for the loading and scheduling of programs?

What are the steps in the software development method?

Page 3: Last Topic Review

Topic 2 – Introduction to the C Programming Language

Page 4: Last Topic Review

CISC 105 – Topic 2

What is C? C is a high-level language. A C compiler takes a C source code

file as input and produces an executable file, after compiling, assembling, and linking.

C is the industry standard high-level programming language.

Page 5: Last Topic Review

CISC 105 – Topic 2

An Example C Program/* Converts distances from miles to kilometers */

#include <stdio.h>#define KMS_PER_MILE 1.609

int main(void){

double miles, /* distance in miles */kms; /* equiv. distance in kms */

/* Get the distance in miles */printf(“Enter the distance in miles>”);scanf (“%lf”, &miles);

/* Convert the distance to kilometers */kms = KMS_PER_MILE * miles;

/* Display the distance in kilometers */printf (“That equals %f kilometers.\n”,kms);

return(0);}

Page 6: Last Topic Review

CISC 105 – Topic 2

Comments Comments are text provided by the

programmer to allow others (and the programmer too) to better understand what the program is doing

Any text between a “/*” and a “*/” is considered to be a comment and is ignored by the C preprocessor and the compiler itself.

Comments can appear anywhere in a program and can be multiline.

Page 7: Last Topic Review

CISC 105 – Topic 2

Comments/* Converts distances from miles to kilometers */

#include <stdio.h>#define KMS_PER_MILE 1.609

int main(void){

double miles, /* distance in miles */kms; /* equiv. distance in kms */

/* Get the distance in miles */printf(“Enter the distance in miles>”);scanf (“%lf”, &miles);

/* Convert the distance to kilometers */kms = KMS_PER_MILE * miles;

/* Display the distance in kilometers */printf (“That equals %f kilometers.\n”,kms);

return(0);}

comment –Ignored by the C preprocessorand the compiler.

Page 8: Last Topic Review

CISC 105 – Topic 2

Preprocessor Directives A preprocessor directive is a command

given to the C preprocessor, which is a part of the compilation process that modifies a C source code file before it is compiled.

Preprocessor directives always begin with a “#” character.

In the example program, there are two preprocessor directives used, #include and #define.

Page 9: Last Topic Review

CISC 105 – Topic 2

#include The #include directive tells the C

preprocessor to give a program access to a library. By putting a #include in a program, the preprocessor loads a header file, which tells the compiler what functions and other information is provided in the library.

In this program, #include <stdio.h> indicates that this program uses the stdio library which contains functions such as printf(). Page 542 of Deitel lists standard libraries.

Page 10: Last Topic Review

CISC 105 – Topic 2

#define The #define directive specifies a

constant macro. This tells the preprocessor that every

time it encounters the first text, it should replace it with the second text.

In this program, #define KMS_PER_MILE 1.609 tells the preprocessor to replace KMS_PER_MILE with 1.609 every place KMS_PER_MILE appears in the program.

Page 11: Last Topic Review

CISC 105 – Topic 2

Preprocessor Directives/* Converts distances from miles to kilometers */

#include <stdio.h>#define KMS_PER_MILE 1.609

int main(void){

double miles, /* distance in miles */kms; /* equiv. distance in kms */

/* Get the distance in miles */printf(“Enter the distance in miles>”);scanf (“%lf”, &miles);

/* Convert the distance to kilometers */kms = KMS_PER_MILE * miles;

/* Display the distance in kilometers */printf (“That equals %f kilometers.\n”,kms);

return(0);}

#include directive –Tells the preprocessor to include the stdio.h header file.This file describes the functionsand other information included in the stdio library.

#define directive –Tells the preprocessor to replace every occurrence ofKMS_PER_MILE in the programwith 1.609.

Page 12: Last Topic Review

CISC 105 – Topic 2

Reserved Words Reserved words are words that

have special meaning in the C language and cannot be used for other purposes.

In this program, examples include int, void, double, and return.

Page 13: Last Topic Review

CISC 105 – Topic 2

Reserved Words/* Converts distances from miles to kilometers */

#include <stdio.h>#define KMS_PER_MILE 1.609

int main(void){

double miles, /* distance in miles */kms; /* equiv. distance in kms */

/* Get the distance in miles */printf(“Enter the distance in miles>”);scanf (“%lf”, &miles);

/* Convert the distance to kilometers */kms = KMS_PER_MILE * miles;

/* Display the distance in kilometers */printf (“That equals %f kilometers.\n”,kms);

return(0);}

Reserved Words –These have special meaning in C and cannot be used foranything else.

Page 14: Last Topic Review

CISC 105 – Topic 2

Identifiers Identifiers identify memory cells that

hold data or operations (and functions). Standard identifiers have special

meaning in C, however they can be redefined by the programmer.

Examples of standard identifiers in the program are printf and scanf.

User-defined identifiers are memory cells that hold data, operations, and functions that the programmer defines.

Page 15: Last Topic Review

CISC 105 – Topic 2

Identifiers/* Converts distances from miles to kilometers */

#include <stdio.h>#define KMS_PER_MILE 1.609

int main(void){

double miles, /* distance in miles */kms; /* equiv. distance in kms */

/* Get the distance in miles */printf(“Enter the distance in miles>”);scanf (“%lf”, &miles);

/* Convert the distance to kilometers */kms = KMS_PER_MILE * miles;

/* Display the distance in kilometers */printf (“That equals %f kilometers.\n”,kms);

return(0);}

Standard Identifiers

User-defined Identifiers

Page 16: Last Topic Review

CISC 105 – Topic 2

What is a valid identifier? Identifiers can only be composed of

letters, digits, and underscores. Identifiers cannot begin with a digit. Reserved words cannot be identifiers. Identifiers can be as long as you

want. Upper and lower case letters are

different (i.e. kms and Kms are not considered to be the same identifier).

Page 17: Last Topic Review

CISC 105 – Topic 2

Review Which of the following are valid identifiers? For

each that is not valid, why is it not?

This_is_a_long_identifier_but_is_it_valid?8timesTheRadiusmilesPhil’s variablekilometers_per_hour

“radius”x

Page 18: Last Topic Review

CISC 105 – Topic 2

Variables A variable is a memory cell that is used

to hold data acted upon by the program. A variable declaration tells the C

compiler the name and type of a variable used in a program.

A variable declaration consists of a data type and an identifier which is the name of that variable.

Every variable that will be used in a program must be declared.

Page 19: Last Topic Review

CISC 105 – Topic 2

Variable Declarations

The first line declares a variable named mile of the double data type.

The second line declares a variable named counter of the int data type.

double mile;int counter;

Page 20: Last Topic Review

CISC 105 – Topic 2

Data Types There are a large number of data types.

These are some of the most popular ones.

void – this keyword means “no data type”.

int – An integer (a whole number). This data type can represent an integer in a specific range, at least –32767 through 32767.

Page 21: Last Topic Review

CISC 105 – Topic 2

Data Types char – A character. One letter, digit, or

symbol. This is enclosed in single quotes. float – A real number (an integer part and

a decimal part). double – A real number. Note that this data

type is a memory cell double the size of a float data type. This allows a bigger number to be represented, or a specific number to be represented more precisely. This is referred to as a double-precision floating point number.

Page 22: Last Topic Review

CISC 105 – Topic 2

Bigger or More Precise? Why can we represent either bigger

numbers or more precise numbers?

Because floating points numbers are stored in scientific notation, consisting of a number and an exponent, i.e.

1.2555 x 10^6

Page 23: Last Topic Review

CISC 105 – Topic 2

Review of Variables Write a #define preprocessor declaration for a

constant macro of STUDENTS_PER_SECTION to 22 and variable declarations of num_students as an integer, GPA and class_GPA as double-precision floating point numbers, and letter_grade as a character data type.

#define STUDENTS_PER_SECTION 22

int num_students;double GPA, class_GPA;char letter_grade;

Page 24: Last Topic Review

CISC 105 – Topic 2

Assignment Statements An assignment statement is one

type of executable statement. An assignment statement uses the

“=“ operator, and follows the form:variable = expression;

This statement first evaluates the expression on the right and stores the result in the variable on the left.

Page 25: Last Topic Review

CISC 105 – Topic 2

Assignment Statements Here are some examples of assignment

statements: x = 12; negative_x = -x; x = y + 12 + z * 5; result = y;

Note that any variables in the right-side expression are not modified by an assignment statement.

Page 26: Last Topic Review

CISC 105 – Topic 2

Function Calls A function is a piece of code which

performs a specific task. Functions can be created by programmers

or supplied as part of the C compiler toolset.

A function is called, which causes it to execute.

A function call is composed of the function name, an open paren, a set of function arguments separated by commas, and a close paren.

Page 27: Last Topic Review

CISC 105 – Topic 2

Function Calls A function call looks like this:

function_name(argument1, argument2, argument3);

function name function arguments

open paren close paren

Page 28: Last Topic Review

CISC 105 – Topic 2

The printf Function The C function for displaying output on

the screen to the user is printf. printf is called in the following manner:

printf(“The final GPA of student number %d is %f.\n”,student_num, GPA);

format string print list

function arguments

Page 29: Last Topic Review

CISC 105 – Topic 2

The Format Stringand Print List The format string is the text that is to

be displayed on the screen. The “%” characters are called

placeholders. They indicate the display position for variables whose values are to be displayed.

The variable names to be displayed are specified in the print list and appear in the same order as their placeholders.

Page 30: Last Topic Review

CISC 105 – Topic 2

Placeholders

printf(“The final GPA of student number %d is %f.\n”,student_num, GPA);

This pair specifies the location in the printstring to display the student_num value.

This pair specifies the location in the printstring to display the GPA value.

Page 31: Last Topic Review

CISC 105 – Topic 2

Placeholders All placeholders begin with a “%”. The text after the “%” symbol

indicates how to format the output, i.e. what kind of variable it is. %d – decimal number (int) %f – floating-point number (float or double)

%c – character (char)

Page 32: Last Topic Review

CISC 105 – Topic 2

Escape Sequences All escape-sequences begin with a

backslash, “\”. A letter after the “\” character denotes

an escape sequence, which has special meaning.

The “\n” sequence indicates a new-line character, which cause any following text to appear on the next line on the display.

In order to display a “\”, the format string must contain a “\\”.

Page 33: Last Topic Review

CISC 105 – Topic 2

Placeholders and theNewline Escape Sequence

printf(“The final GPA of student number %d is %f.\n”,student_num, GPA);

Specifies to display student_num,which is an integer.

Specifies to display GPA,which is an floating-point number.

Therefore, if the student_num variable was set to10 and the GPA variable was set to 3.03

this printf function call would cause:

The final GPA of student number 10 is 3.03.

to be displayed on the screen and any subsequent output to begin on the next line.

Page 34: Last Topic Review

CISC 105 – Topic 2

The scanf Function The C function for reading input

from the user is scanf.

scanf(“%d %f”,&student_num, &GPA);

format stringinput list

function arguments

Page 35: Last Topic Review

CISC 105 – Topic 2

The Format String The format string is the set of

placeholders which specify what type of data is being input.

The same placeholders are used as for printf, except for when inputting a floating-point number. A float type still uses the “%f”, however the double type uses the “%lf” placeholder.

Page 36: Last Topic Review

CISC 105 – Topic 2

The Input List The variables to store the inputted data are

specified in the input list. They must be in the same order as their corresponding placeholders.

Notice that each variable name is preceded by a “&”.

The “&” is an operator which means “the address of”.

Therefore, “&student_num” tells the scanf function to store what it reads from the user at the memory address of student_num.

Page 37: Last Topic Review

CISC 105 – Topic 2

Placeholders and the Input List

scanf(“%d %f”,&student_num, &GPA);

This pair specifies to readin an integer and store itat the memory address ofstudent_num, thus settingthe student_num variable

to the inputted value.

This pair specifies to readin a single-precision floating

point number and store itat the memory address ofGPA, thus setting the GPA

variable to the inputted value.

Therefore, if the input into thisscanf function call was:

9 3.560 <ENTER>the student_num variable would be

set to 9 and the GPA variable would beset to 3.560

Page 38: Last Topic Review

CISC 105 – Topic 2

Review of printf and scanf What happens when the following

code fragment is run?

int student_num;float GPA;

printf(“Enter the student number>”);scanf(“%d”,&student_num);printf(“Enter student number %d’s GPA>”,student_num);scanf(“%f”,&GPA);printf(“Student number %d now has a %f GPA.\n”,student_num, GPA);

Page 39: Last Topic Review

CISC 105 – Topic 2

Review of printf and scanf What is the displayed output when

the following code fragment is run and the inputs are 8 and 12?

int x, y;

printf(“My name is”);printf(“ Phil Viscito”);printf(“\nEnter two integers> ”);scanf(“%d%d”,&x, &y);x = x + 2;y = x + y;printf(“Thanks! The answer is %d.\nBye now!”,y);

My name is Phil Viscito.Enter two integers> 8 12Thanks! The answer is 22.Bye now!

Page 40: Last Topic Review

CISC 105 – Topic 2

Customizing Integer Output The “%d” placeholder, used to display an

integer variable, can be altered to format how the number is displayed.

Instead of “%d”, use a “%Xd” where the X is an integer that is the field width, the number of digits to display.

For example, “%4d” displays four digits of the result. The negative sign (for negative integers) is also considered a digit here.

Page 41: Last Topic Review

CISC 105 – Topic 2

Customizing Integer Output When there are more places (the

field width) than digits to be displayed, the output is right-justified.

When there are more digits than places, the field width is ignored, and the entire integer is displayed.

Page 42: Last Topic Review

CISC 105 – Topic 2

Customizing Integer Output As an example:

Value Placeholder Output

643 %1d 643

643 %4d 643

643 %5d 643

-643 %2d -643

-643 %6d -643

Page 43: Last Topic Review

CISC 105 – Topic 2

Customizing Floating-Point Output Floating point output (float and double)

can be formatted in the same manner, using “%X.Yf”).

Here, X is the total number of digits to display (the field width) and Y is the number of digits to display to the right of the decimal point.

The same rules for field width apply as for integer formatting.

The specified number of decimal digits is always displayed.

Page 44: Last Topic Review

CISC 105 – Topic 2

CustomizingFloating-Point Output

Value Placeholder Output

3.14159 %5.2f 3.14

3.14159 %3.2f 3.14

3.14159 %5.3f 3.142

0.1234 %4.2f 0.12

-0.006 %8.5f -0.00600

As an example:

Page 45: Last Topic Review

CISC 105 – Topic 2

The return Function The return function terminates a

running function and returns control to the function that called the function.

In the case of main(), the return function returns control back to the computer’s operating system and ends the program.

This function has one argument. The main() function must return an integer, normally just set to 0 (zero).

Page 46: Last Topic Review

CISC 105 – Topic 2

Arithmetic Expressions Arithmetic expressions are executable

statements that manipulate data. Arithmetic expressions operate on both

integer (int) and floating-point (float and double) numbers.

Arithmetic operators can operate on mixed types (i.e. one int and one float). The resulting type of such an expression is the “highest” data type present.

Page 47: Last Topic Review

CISC 105 – Topic 2

Resulting Data Types The “highest” data type is always

considered to be a floating point number, with double-precision floating point numbers taking precedence over single-precision floating point numbers.

int + int = intint + float = floatint + double = doublefloat + double = double

Page 48: Last Topic Review

CISC 105 – Topic 2

Arithmetic Expressions All of the common arithmetic

operators are present in C: + (addition) - (subtraction) * (multiplication) / (division) % (modulus – or “remainder”)

Page 49: Last Topic Review

CISC 105 – Topic 2

Note: Integer Division If two integer values are divided,

the resulting data type is also an integer, as previously described.

Therefore, only the integer portion of the actual result will be the returned result.

For example, 9 / 4 = 29 / 10 = 0

Page 50: Last Topic Review

CISC 105 – Topic 2

The Modulus Operator The “%” operator is a modulus

operator, which also means the remainder of the division.

For example,

9 % 3 = 010 % 6 = 490 % 8 = 2

Page 51: Last Topic Review

CISC 105 – Topic 2

Review of BasicArithmetic Expressions What is the resulting output of this

program segment?

int x, y, z;float a;

x = 9 * 0.5;a = 9 * 0.5;y = 15 % 15;z = 15 % 2;printf(“x=%d\n, a=%f\n, y=%d\n, z=%d\n”,x,a,y,z)

x=4a=4.5y=0z=1

Page 52: Last Topic Review

CISC 105 – Topic 2

More ComplexArithmetic Expressions C evaluates arithmetic expressions

in the same order rules as normal mathematics. Parentheses take priority over

everything else. Then, multiplication, division, and

modulus operations from left to right. Then, addition and subtraction from

left to right.

Page 53: Last Topic Review

CISC 105 – Topic 2

More ComplexArithmetic Expressions

x2 + 2xy + 4y2 (x * x) + (2 * x * y) + (4 * y * y)

a + b--------c2 * 4d

(a + b) / (c * c * 4 * d)

a * (4x % y2) a * (4 * x % (y * y))

x + y(x2 + y) x + y * (x * x + y)

Page 54: Last Topic Review

CISC 105 – Topic 2

Review

#definePI 3.14159

int x, y, z;float a, b;

x = 5;y = 10;z = x + (4 * y * y * y) + PI;a = x + (4 * y * y * y) + PI;b = (x / y) + a;

printf(“x=%d, y=%d, z=%d\na=%7.2f, b=%f\n”,x,y,z,a,b);

What is the resulting output of this program segment?

x=5, y=10, z=4008a=4008.14, b=4008.14159

Page 55: Last Topic Review

CISC 105 – Topic 2

Special Case:Operations on a Variable Often, one wishes to perform an

operation on a variable, such as adding or subtracting a value.

C has a special syntax for an operation performed on a variable (i.e. the variable is used on the right side of the assignment statement and is the target of the assignment as well.)

Page 56: Last Topic Review

CISC 105 – Topic 2

Special Case:Operations on a Variable This syntax follows the form:

variable (operation)= expression;

This statement first computes the operation on the right side of the equals sign. Then, it performs the (operation) on the variable and the expression.

Page 57: Last Topic Review

CISC 105 – Topic 2

Special Case:Operations on a Variable For example,

This statement adds 19 to the value contained in x.

This statement is exactly the same as

x += 19;

x = x + 19;

Page 58: Last Topic Review

CISC 105 – Topic 2

Another Special Case:Increment and Decrement Incrementing (adding one) and

decrementing (subtracting one) are two very common operations.

C has a special syntax for increment and decrement operations that follows this form:x++; ++x; --x;x--;OR OR

Increment Decrement

Page 59: Last Topic Review

CISC 105 – Topic 2

Another Special Case:Increment and Decrement

Notice that the increment operator expression x++ is the same as saying: x += 1;

So, why are there two forms of each operator? The answer lies in when the increment (or

decrement) operation is actually performed. This distinction only occurs when the ++ (or --)

operator is used on a variable in the same expression in which the value of the variable is used.

Page 60: Last Topic Review

CISC 105 – Topic 2

Another Special Case:Increment and Decrement For example,

int x = 20, y;

y = x++;printf(“x=%d, y=%d\n”,x,y);

int x = 20, y;

y = ++x;printf(“x=%d, y=%d\n”,x,y);

x=21, y=20 x=21, y=21

y = x;x += 1;printf(“x=%d, y=%d\n”,x,y);

x += 1;y = x;printf(“x=%d, y=%d\n”,x,y);

Page 61: Last Topic Review

CISC 105 – Topic 2

Another Special Case:Increment and Decrement The difference lies in when the expression

(x++ or ++x) gets evaluated in relation to when the operator (++) gets performed.

The x++ expression is equal to the value of x and the ++ operator is performed after the evaluation is over.

The ++x expression indicates that the ++ operator is performed first (before ++x is evaluated) and thus, is equal to the value of x + 1.

Page 62: Last Topic Review

CISC 105 – Topic 2

Review What is the output of the following

program fragment?

int x, y, z;

x = 5;y = 10;

z = x++ * y – 2;z += ++x;

printf(“x=%d, y=%d, z=%d\n”,x,y,z);

x=7, y=10, z=55