Presentation is loading. Please wait.

Presentation is loading. Please wait.

CECS 130 Mid-term Test Review Provided by REACH – Resources for Academic Achievement Presenter: [REACH Tutor]

Similar presentations


Presentation on theme: "CECS 130 Mid-term Test Review Provided by REACH – Resources for Academic Achievement Presenter: [REACH Tutor]"— Presentation transcript:

1 CECS 130 Mid-term Test Review Provided by REACH – Resources for Academic Achievement Presenter: [REACH Tutor]

2 To download this presentation… Go to reach.louisville.edureach.louisville.edu Click “Tutoring” at the top left of the page. Click “Computer Tutoring” under the heading “TUTORING SERVICES FOR ALL STUDENTS.” Click “CECS Test Reviews” on the right-hand column. Scroll down to find your class. Or, just go to tiny.cc/REACH4CECStiny.cc/REACH4CECS

3 Content on the Mid-term Exam o Chapters 1-10 from C Programming for the Absolute Beginner, Second Edition by Michael Vine

4 So, we will be covering:  Data types  Conditions  Loops  Functions  Arrays  Pointers  Strings  Data Structures  Dynamic Memory

5 Data TypeDescriptionDeclarationExample IntegerWhole numbers, positive or negative int x = ;-3, 0, 3, 29 Floating- point number All numbers, positive or negative, decimals and fractions float x = ;-0.35543, 0.00, 554433.33281 CharacterRepresentations of integer values known as character codes char x = ‘ ’;m, M, * To declare a constant (read only) value: const int x = 20; const float PI = 3.14; Variable Types

6

7 scanf( ) ; printf( ) int x = 0; printf(“ What number should I print out? \n ”); scanf(“%d”, &x); //variables require an “&” sign before them for scanf() printf(“\n You chose: %d \n”, x); //but not for printf()

8 Conversion Specifiers  Character - %c  Integer - %d  Float (decimal)- %f  String - %s  Printf Format Tags: Format: %[flags][width][.precision][length]specifier Example: %[.precision]specifier Output: 12.12, 12.123, 12.12343

9 Scanf( );

10 Arithmetic and Order of Precedence

11 Output: Please enter first number: 2 Enter second number: 4 The result is 5. Predict the printout: User enters ‘2’ and ‘4’:

12 Output: Please enter first number: 2 Enter second number: 4 The result is 5. Predict the printout: User enters ‘2’ and ‘4’:

13 Can you predict the printout? Output: The result is 2.25

14 Can you predict the printout? Output: The result is 2.25

15 Conditions and Operators

16 Comparisons > greater than5 > 4 is TRUE <less than4 < 5 is TRUE >=greater than or equal 4 >= 4 is TRUE <=less than or equal3 <= 4 is TRUE ==equal to5 == 5 is TRUE !=not equal to5 != 4 is TRUE

17 Boolean Operators Do you know the answer to these?  A. !( 1 | | 0 )  B. !( 1 | |1&& 0 )  C. !(( 1 | | 0 ) && 0) = !( 1 ) = 0 = !( 1 | |0 ) = 0 = !(1 && 0) = !0 = 1

18 Boolean Operators Do you know the answer to these?  A. !( 1 | | 0 )  B. !( 1 | | 1 && 0 )  C. !(( 1 | | 0 ) && 0) = !1 = 0 = !( 1 | |0 ) = !1 = 0 = !(1 && 0) = !0 = 1

19 Example Using if-statements, write a program that will ask a user to enter a number 1, 2, or 3, and print out the following:

20 Example:

21 Switch-Case Statement

22 The while( ) loop while ( condition ) { Code to execute while the condition is true }

23 For Loop Often used when the # of iterations is already known. Contains 3 separate expressions: 1.Variable initialization 2.Conditional expression 3.Increment/Decrement

24 Break/Continue Statements break; Used to exit a loop. Once this statement is executed the program will execute the statement immediately following the end of the loop. continue; Used to manipulate program flow in a loop. When executed, any remaining statements in the loop will be skipped and the next iteration of the loop will begin.

25 Function Prototypes & Definitions Function Prototype Syntax return-type function_name ( arg_type arg1,..., arg_type argN ) Function Prototypes tell you the data type returned by the function, the data type of parameters, how many parameters, and the order of parameters. Function definitions implement the function prototype Where are function prototypes located in the program? Where do you find function definitions?

26 Function Prototypes & Definitions Where are function prototypes located in the program? Answer: before the main( ) { } function. Where do you find function definitions? Answer: function definitions are self-contained outside of the main( ) { } function, usually written below it.

27 Function Example #include int mult (int,int); // function prototype int main() { int x; int y; int z; printf( “ x = " );scanf( "%d", &x ); printf( “\n y = ”);scanf( "%d", &y ); printf( “\n z = ”);scanf( "%d", &z ); printf( “\n x*y = %d\n", mult( x, y ) ); printf( “\n z^2 = %d\n", mult( z, z ) ); } int mult (int a, int b) //function definition { return a * b; } #include int mult (int,int); // function prototype int main() { int x; int y; int z; printf( “ x = " );scanf( "%d", &x ); printf( “\n y = ”);scanf( "%d", &y ); printf( “\n z = ”);scanf( "%d", &z ); printf( “\n x*y = %d\n", mult( x, y ) ); printf( “\n z^2 = %d\n", mult( z, z ) ); } int mult (int a, int b) //function definition { return a * b; }

28 Function Example #include int mult (int,int); // function prototype int main() { int x; int y; int z; printf( “ x = " );scanf( "%d", &x ); printf( “\n y = ”);scanf( "%d", &y ); printf( “\n z = ”);scanf( "%d", &z ); printf( “\n\n x*y = %d\n", mult( x, y ) ); printf( “\n z^2 = %d\n", mult( z, z ) ); } int mult (int a, int b) //function definition { return a * b; } #include int mult (int,int); // function prototype int main() { int x; int y; int z; printf( “ x = " );scanf( "%d", &x ); printf( “\n y = ”);scanf( "%d", &y ); printf( “\n z = ”);scanf( "%d", &z ); printf( “\n\n x*y = %d\n", mult( x, y ) ); printf( “\n z^2 = %d\n", mult( z, z ) ); } int mult (int a, int b) //function definition { return a * b; } Output: x = 2 y = 3 z = 4 x*y = 6 z^2 = 16

29 Declaring a 1-D Array How do you declare a one-dimensional array made up of 10 integers? Answer: int iArray[10] Other array declarations: int iArray[10]; float fAverages[30]; double dResults[3]; short sSalaries [9]; char cName[19]; // 18 characters and 1 null character

30 Declaring a 1-D Array Why do we initialize? Because memory spaces may not be cleared from previous values when arrays are created. Can initialize an array directly. Example: int iArray[5]={0,1,2,3,4}; Can also initialize an array with a loop such as FOR( ) #include main() { int x; int iArray[5]; for( x=0; x < 5 ; x++) { iArray[x] = 0; } #include main() { int x; int iArray[5]; for( x=0; x < 5 ; x++) { iArray[x] = 0; }

31 Example: searching an array #include main() { int x; int iValue; int iFound = -1; int iArray[5]; // initialize the array for( x=0; x < 5 ; x++) { iArray[x] = ( x + x ); } printf(“\n Enter value to search for:”); scanf(“%d”, &iValue); // search for number for(x=0 ; x<5; x++) { if( iArray[x] ==iValue) { iFound = x; break; } if(iFound >-1) printf(“\n I found your search value in element %d \n”, iFound); else printf(“\n Sorry, your search value was not found \n”); } #include main() { int x; int iValue; int iFound = -1; int iArray[5]; // initialize the array for( x=0; x < 5 ; x++) { iArray[x] = ( x + x ); } printf(“\n Enter value to search for:”); scanf(“%d”, &iValue); // search for number for(x=0 ; x<5; x++) { if( iArray[x] ==iValue) { iFound = x; break; } if(iFound >-1) printf(“\n I found your search value in element %d \n”, iFound); else printf(“\n Sorry, your search value was not found \n”); }

32 Pointers Pointer variables, simply called pointers, are designed to hold memory addresses as their values. Normally, a variable contains a specific value, e.g., an integer, a floating-point value, or a character. However, a pointer contains the memory address of a variable that in turn contains a specific value.

33 Pointer Syntax dataType *pointer_name = &variable_name; (You can also initialize it “…= NULL;” or “… = 0;”)  It’s important to initialize pointers to prevent fatal runtime errors or accidentally modifying important data.

34 Pointers int val = 5; int *val_ptr = &val; 0x3F *val_ptr 0x83 5 val 0x3F name: Value name: location:

35 Pointers When an ampersand (&) is prefixed to a variable name, it refers to the memory address of this variable. 0x3F *val_ptr &val_ptr = 0x83 5 val &val = 0x3F name: Value name:

36 Ampersand example #include int main() { char someChar = 'x'; printf(“%p\n", &someChar); system("pause"); return 0; } #include int main() { char someChar = 'x'; printf(“%p\n", &someChar); system("pause"); return 0; } Output: ?????

37 Ampersand example #include int main() { char someChar = 'x'; printf(“%p\n", &someChar); system("pause"); return 0; } #include int main() { char someChar = 'x'; printf(“%p\n", &someChar); system("pause"); return 0; } Output: 0x02f4c7

38 Passing variables with pointers void xchng(int*, int*); main() { int a = 5; int b = 3; exchange(&a,&b); [print a and b] } //pass by reference void xchng(int *x, int *y) { [print *x and *y] int temp = *i; int *x = *y; int *y = temp; [print *x and *y] } void xchng(int*, int*); main() { int a = 5; int b = 3; exchange(&a,&b); [print a and b] } //pass by reference void xchng(int *x, int *y) { [print *x and *y] int temp = *i; int *x = *y; int *y = temp; [print *x and *y] } Output: *x = 5, *y = 3 *x = 3, *y = 5 a = 3, b = 5 Output: *x = 5, *y = 3 *x = 3, *y = 5 a = 3, b = 5 void exchange(int, int); main() { int a = 5; int b = 3; xchng(a,b); [(3)print a and b] } //pass by value void xchng(int x, int y) { [(1)print x and y] int temp = x; int x = y; int y = temp; [(2)print x and y] } void exchange(int, int); main() { int a = 5; int b = 3; xchng(a,b); [(3)print a and b] } //pass by value void xchng(int x, int y) { [(1)print x and y] int temp = x; int x = y; int y = temp; [(2)print x and y] } Output: (1) x = 5, y = 3 (2) x = 3, y = 5 (3) a = 5, b = 3 Output: (1) x = 5, y = 3 (2) x = 3, y = 5 (3) a = 5, b = 3 Output: (1) x = 5, y = 3 (2) x = 3, y = 5 (3) a = 3, b = 5 Output: (1) x = 5, y = 3 (2) x = 3, y = 5 (3) a = 3, b = 5

39 Pointers to Arrays An array variable without a bracket and a subscript represents the starting address of the array. An array variable is essentially a pointer. Suppose you declare an array of integer values as follows: int list[6] = {11, 12, 13, 14, 15, 16}; *(list + 1) is different from *list + 1. The dereference operator (*) has precedence over +. So, *list + 1 adds 1 to the value of the first element in the array, while *(list + 1) dereferences the element at address list[1] in the array.

40 Pointers to Arrays main() { int list[3] = {10, 3, 5}; int k = 10; k = *list + 1; [print k] } main() { int list[3] = {10, 3, 5}; int k = 10; k = *list + 1; [print k] } Output: k = 11 main() { int list[3] = {10, 3, 5}; int k = 10; k = *(list + 1); [print k] } main() { int list[3] = {10, 3, 5}; int k = 10; k = *(list + 1); [print k] } Output: k = 3

41 Strings FunctionDescription strlen()Returns numeric string length up to, but not including null character tolower() and toupper()Converts a single character to upper or lower case strcpy()Copies the contents of one string into another string strcat()Appends one string onto the end of another strcmp()Compares two strings for equality strstr()Searches the first string for the first occurrence of the second string

42 Strings #include main() { char *str1 = “REACH”; char str2[] = “Tutoring”; printf(“\nThe length of string 1 is %d \n”, strlen(str1)); printf(“The length of string 2 is %d\n”,strlen(str2)); } #include main() { char *str1 = “REACH”; char str2[] = “Tutoring”; printf(“\nThe length of string 1 is %d \n”, strlen(str1)); printf(“The length of string 2 is %d\n”,strlen(str2)); } Output: The length of string 1 is 5 The length of string 2 is 8 Output: The length of string 1 is 5 The length of string 2 is 8

43 Strings #include void convertL(char *); main() { char name1[] = “Barbara Bush”; convertL(name1); } void convertL(char *str) { int x; for ( x = 0; x <=strlen(str) ; x++) str[x] = tolower(str[x]); printf(“\nThe name in lowercase is %s\n”, str); } #include void convertL(char *); main() { char name1[] = “Barbara Bush”; convertL(name1); } void convertL(char *str) { int x; for ( x = 0; x <=strlen(str) ; x++) str[x] = tolower(str[x]); printf(“\nThe name in lowercase is %s\n”, str); } Output: The name in lowercase is barbarabush Output: The name in lowercase is barbarabush

44 Data File Hierarchy EntityDescription BitBinary digit, 0 or 1Smallest value in a data file ByteEight bitsStores a single character FieldGrouping of bytesi.e a word, social security number RecordGrouping of fieldsa single row of information, student name, age, ID, GPA FileGrouping of records separate fields in a record using spaces, tabs, or commas

45 Data File Example #include main() { FILE *pRead; char name[10]; pRead = fopen(“names.dat”, “r”); if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else { printf(“\nContents of names.dat\n”); fscanf( pRead, “%s”, name ); while( !feof(pRead) ) { printf( “%s\n”, name ); fscanf( pRead, “%s”, name ); } #include main() { FILE *pRead; char name[10]; pRead = fopen(“names.dat”, “r”); if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else { printf(“\nContents of names.dat\n”); fscanf( pRead, “%s”, name ); while( !feof(pRead) ) { printf( “%s\n”, name ); fscanf( pRead, “%s”, name ); }

46 Data File Example #include main() { FILE *pRead; char name[10]; char birthdate[9]; float number; char hometown[20]; pRead = fopen(“information.dat”, “r”); if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else { fscanf( pRead, “%s%s%f%s”, name, birthdate, &number, hometown ); while( !feof(pRead) ) { printf( “%s \t %s \t %f \t %s\n”, name, birthdate, number, hometown ); fscanf( pRead, “%s%s%f%s”, name, birthdate, &number, hometown ); } #include main() { FILE *pRead; char name[10]; char birthdate[9]; float number; char hometown[20]; pRead = fopen(“information.dat”, “r”); if( pRead == NULL ) printf( “\nFile cannot be opened\n”); else { fscanf( pRead, “%s%s%f%s”, name, birthdate, &number, hometown ); while( !feof(pRead) ) { printf( “%s \t %s \t %f \t %s\n”, name, birthdate, number, hometown ); fscanf( pRead, “%s%s%f%s”, name, birthdate, &number, hometown ); }

47 Data Structures Arrays require that all elements be of the same data type. Many times it is necessary to group information of different data types. An example is a list of materials for a product. The list typically includes a name for each item, a part number, dimensions, weight, and cost. C and C++ support data structures that can store combinations of character, integer floating point and enumerated type data. They are called - structs.

48 Structure Syntax struct listOfCars //elements in a list of cars { int year; char make[10]; char model[10]; char tag[8]; }fleet; //for short we’ll call it a fleet fleet rentals[5]; // five cars that we rent out to clients rentals[0].year = 2008; rentals[0].make = “Honda”; rentals[0].model = “Element”; rentals[0].tag = “AS2395”; […] rentals[4].year = 2015; rentals[4].make = “Tesla” rentals[4].model = “Model S”; rentals[4].tag = “2FST4U”; struct listOfCars //elements in a list of cars { int year; char make[10]; char model[10]; char tag[8]; }fleet; //for short we’ll call it a fleet fleet rentals[5]; // five cars that we rent out to clients rentals[0].year = 2008; rentals[0].make = “Honda”; rentals[0].model = “Element”; rentals[0].tag = “AS2395”; […] rentals[4].year = 2015; rentals[4].make = “Tesla” rentals[4].model = “Model S”; rentals[4].tag = “2FST4U”; fleet vans[3]; //company vans vans[0].year = 2012; vans[0].make = “Ford”; vans[0].model = “EconoVan”; Vans[0].tag = “MV1NUP”; fleet vans[3]; //company vans vans[0].year = 2012; vans[0].make = “Ford”; vans[0].model = “EconoVan”; Vans[0].tag = “MV1NUP”;

49 Dynamic Memor malloc() calloc() realloc() free() Four functions related to memory allocation that you need to know:

50 Dynamic Memory Example #include main() //programming for temperature logging device { int *temptime; // temp/time log [HHMMTTT] int hist = 0;// how many readings taken temp = (int *) calloc(10, sizeof(int)); // pre-allocate some memory if (temptime == NULL)// check if it worked send_alert(“Memory failed!”);// send alert if not while (reset_button == “LOW”) {// keep logging until reset if( temp_sense != temptime[hist -1] ) {// check if temp has changed if( hist < 10 ) {// check whether you need memory temptime=realloc(temptime,(sizeof(int)*(hist+10)));// if so, add more memory if (temptime == NULL) { // check if it worked send_alert(“Memory is full!”);// send alert if not break;// and exit process } temptime[hist] = sensor_output;// otherwise, log the temp. hist = hist + 1;// and account for the new entry } store_log(temptime);// save the log elsewhere free(temptime);// free up memory for reset processes to use reset_device();// start the device reset process } #include main() //programming for temperature logging device { int *temptime; // temp/time log [HHMMTTT] int hist = 0;// how many readings taken temp = (int *) calloc(10, sizeof(int)); // pre-allocate some memory if (temptime == NULL)// check if it worked send_alert(“Memory failed!”);// send alert if not while (reset_button == “LOW”) {// keep logging until reset if( temp_sense != temptime[hist -1] ) {// check if temp has changed if( hist < 10 ) {// check whether you need memory temptime=realloc(temptime,(sizeof(int)*(hist+10)));// if so, add more memory if (temptime == NULL) { // check if it worked send_alert(“Memory is full!”);// send alert if not break;// and exit process } temptime[hist] = sensor_output;// otherwise, log the temp. hist = hist + 1;// and account for the new entry } store_log(temptime);// save the log elsewhere free(temptime);// free up memory for reset processes to use reset_device();// start the device reset process }

51 Thank you! This presentation was provided by REACH – Resources for Academic Achievement


Download ppt "CECS 130 Mid-term Test Review Provided by REACH – Resources for Academic Achievement Presenter: [REACH Tutor]"

Similar presentations


Ads by Google