1 Midterm 1 Review. 2 Midterm 1 on Friday February 27 Closed book, closed notes No computer can be...

Post on 20-Jan-2018

216 views 0 download

description

3 C Numeric Data Types

Transcript of 1 Midterm 1 Review. 2 Midterm 1 on Friday February 27 Closed book, closed notes No computer can be...

1

Midterm 1 Review

2

Midterm 1 on Friday February 27 Closed book, closed notes No computer can be used 50 minutes 4 or 5 questions

write full programs write partial programs find output of a program

3

C Numeric Data Types

4

C Character Data Type: char

In memory, everything is stored as binary value, which can be interpreted as char or integer. Examples of ASCII Codes

char result =‘Y’;

5

Precedence of Arithmetic Operators

6

Standard Input and Output Output: printf Input: scanf

Remember the program computing the distance between two points!

/* Declare and initialize variables. */ double x1=1, y1=5, x2=4, y2=7, side_1, side_2, distance; How can we compute distance for different points? It would be better to get new points from user, right?

For this we will use scanf To use these functions, we need to use

#include <stdio.h>

7

Standard Output printf Function

prints information to the screen requires two arguments

control string Contains text, conversion specifiers or both

Identifier to be printed Example

double angle = 45.5;printf(“Angle = %.2f degrees \n”, angle);

Output:Angle = 45.50 degrees

Control String

Identifier

Conversion Specifier

8

Math Functionsfabs(x) Absolute value of x.

sqrt(x) Square root of x, where x>=0.

pow(x,y) Exponentiation, xy. Errors occur if x=0 and y<=0, or if x<0 and y is not an integer.

ceil(x) Rounds x to the nearest integer toward (infinity). Example, ceil(2.01) is equal to 3.

floor(x) Rounds x to the nearest integer toward - (negative infinity). Example, floor(2.01) is equal to 2.

exp(x) Computes the value of ex.

log(x) Returns ln x, the natural logarithm of x to the base e. Errors occur if x<=0.

log10(x) Returns log10x, logarithm of x to the base 10. Errors occur if x<=0.

9

Relational Operators == equality (x == 3) != non equality (y != 0) < less than (x<y) > greater than (y>10) <= less than equal to (x<=0) >= greater than equal to (x>=y)

!!! a==b vs. a=b !!!

10

Logical Operators ! not !(x==0) && and (x>=0) && (x<=10) || or (x>0) || (x<0)A B A && B A || B !A !BFalse False False False True TrueFalse True False True True FalseTrue False False True False TrueTrue True True True False False

11

Precedence for Arithmetic, Relational, and Logical Operators

12

If statement if(Boolean expression)

statement; //single statement if(Boolean expression) { //more than one statement

statement1;.statement n;

}

13

if - else statement if(Boolean expression)

statement;else

statement; if(Boolean expression)

{statement block

}else{

statement block}

14

Loop (repetition) statements while statement do while statement for statement

15

while statement while(expression)

statement; while(expression)

{ statement;statement;

.}

x=1;while (x<5) x = x + 1;

x = 1;while (x<5){ x = x+1; printf(“X=“%d”,x);}

16

do while do

statement;while(expression);

do{statement1;statement2;.} while(expression);

note - the expression is tested after the statement(s) are executed, so statements are executed at least once.

x=1;do x = x + 1;while (x<5);

x = 1;do{ x = x+1; printf(“X=“%d”,x);} while (x<5);

17

for statement for(initialization; test; increment/decrement)

statement;

for(initialization; test; increment/decrement){statement;statement;.}

for (x=1; x<5; x++) printf(“x=%d\n”,x);

for (x=1; x<5; x++){ printf(“X=“%d\n”,x); printf(“X^2 = %d\n”,x*x);}

18

for statement

initalizetest

increment/decrement

true

statement(s)statement(s)

19

Data FilesEach data file must have a file pointer

file pointer must be defined FILE *sensor1; FILE *balloon;

file pointer must be associated with a specific file using the fopen function

sensor1 = fopen(“sensor1.dat”, “r”); balloon = fopen(“balloon.dat”, “w”);

Read information from file

Write information

to a file

20

I/O Statements Input file - use fscanf instead of scanf

fscanf(sensor1, “%1f %lf”, &t, &motion);

Output file - use fprint instead of printf fprintf(balloon, “%f %f %f\n”, time,

height, velocity);

21

Reading Data Files counter controlled loop

First line in file contains count for loop

end of file controlled loop When file is created EOF is inserted while loop feof(fileptr) > 0 when EOF reached

22

End of file controlled loop#include <stdio.h>

int main(){ FILE *scorefile; int score;

scorefile = fopen("scores.txt","r");

while (feof(scorefile) <= 0) { fscanf(scorefile,"%d",&score); printf("%d\n",score); }

fclose(scorefile); return(0);}

File

567893248563

Available on webpage as chapter3e11.c

Available on webpage as scores.txt

23

Functions Defined to

return a single value to the calling function

perform a task change the value of the function

arguments (call by reference)

24

Function Format

return_type function_name (parameter_declarations)

{declarations;statements;

}

25

Example - factorial function

int fact(int n){ int factres = 1; while(n>1) {

factres = factres*n;n--;

} return(factres);}

n!=n*(n-1)*…*1, 0! = 1 by definition

Return Type Function name

Parameter DeclarationsDeclarations

Statements

26

Example - factorial function

int main(void){ int t= 5,s; s=fact(t)

return 0;}

5t

s

27

Example - factorial function

int main(void){ int t= 5,s; s=fact(t)

return 0;}

int fact(int n){ int factres = 1;

return(factres);}

5t

s

n

factres

5

1

28

Example - factorial function

int main(void){ int t= 5,s; s=fact(t)

return 0;}

int fact(int n){ int factres = 1;

return(factres);}

5t

s

n

factres

5

120 120

29

Example - factorial function

int main(void){ int t= 5,s; s=fact(t)

return 0;}

5t

s120

30

Arrays

31

Definition and Initialization An array is defined using a declaration statement. data type array_name[size];

allocates memory for size elements subscript of first element is 0 subscript of last element is size-1 size must be a constant

32

Exampleint list[5];

allocates memory for 5 integer variables subscript of first element is 0 subscript of last element is 4 C does not perform any bounds checking on

arrayslist[0]

list[1]list[2]list[3]

list[4]

33

Initializing Arrays Arrays can be initialized at the time they

are declared. Examples:

double taxrate[3] ={0.15, 0.25, 0.3};char list[5] = {‘h’,’e’,’l’,’l’,’o’};double vector[100] = {0.0}; /*assigns zero to all 100

elements*/int s[] = {5,0,-5}; /*the size of a s is 3 */

34

Assigning values to an arrayfor loops are often used to assign values to an array

Example:

int list[5], i;for(i=0; i<5; i++){

list[i] = i;}

list[0]

list[1]list[2]list[3]

list[4]

01234

35

Exercise int data[100] Store random numbers [0,99) in data

for (i=0; i<100; i++) data[i] = rand() % 100;

36

Function Arguments Individual elements of an array can be

passed as regular arguments. void donothing(int a, int b){…}int main(void){ /* Declare variables and functions */int array[5] = {1,2,3,4,5};

donothing(array[2], array[4]);..}

37

Passing Arrays to Functions Arrays are always pass by reference

Modifications to the array are reflected to main program

The array name is the address of the first element The maximum size of the array must be specified at

the time the array is declared. The actual number of array elements that are used

will vary, so the actual size of the array is usually passed as another argument to the function

38

Exercise

int maximum(int fdata[], int n){ int i, fmax; fmax = fdata[0]; for (i=0; i<n; i++) if (fdata[i] > fmax) fmax = fdata[i]; return(fmax);}

int data[100]Write a function to find maximum value in the array data

int main(){ int data[100],i, max;

for (i=0; i<100; i++) data[i] = rand() % 100; max = maximum(data,100); printf("Max = %d\n",max); return(0);}

39

Exercisevoid print(int pdata[], int n){ int i; for (i=0; i<n; i++) printf("data[%d]=%d\n",i,pdata[i]); return;}void modify(int fdata[], int n){ int i; for (i=0; i<n; i++) fdata[i] = 1; return;}

What is the output of the following program?int main(){ int data[10];

for (i=0; i<10; i++) data[i] = rand() % 100; print(data,10); modify(data,10); print(data,10);

return(0);}