130 likes | 247 Views
16.216 ECE Application Programming. Instructor: Dr. Michael Geiger Spring 2012 Lecture 38: Exam 3 Preview. Lecture outline. Announcements/reminders Final exam: Tues., 5/15, 8:00-11:00 AM, Ball 314 Program 9 due today No regrades , late submissions allowed
E N D
16.216ECE Application Programming Instructor: Dr. Michael Geiger Spring 2012 Lecture 38: Exam 3 Preview
Lecture outline • Announcements/reminders • Final exam: Tues., 5/15, 8:00-11:00 AM, Ball 314 • Program 9 due today • No regrades, late submissions allowed • If submitted, will replace your lowest grade • Program grading (mostly) up to date • All penalty-free regrades due 11:59 PM today unless otherwise noted • Course evaluations • Excused students • Exam 3 Preview • General exam info • Topics covered • One-dimensional arrays • Pointer arithmetic • Strings • Two-dimensional arrays • File I/O • Structures ECE Application Programming: Lecture 38
Excused students • The following students are excused from the final exam (after completing a course evaluation) • Chheou, Dy • Citta, Timothy • Dongo, Mario • Hajj, Andrew • Haoui, Ali • Khuu, Jonathan • Miskell, Timothy • Muse, Bradley • Pflanz, Timothy • Pham, Philip • Taku, Jonathan • Tan, Yushi • Wall, Bradley ECE Application Programming: Lecture 38
Exam 3 notes • Q & A session 5/14—what times work best? • Allowed one 8.5” x 11” two-sided note sheet • No other notes or electronic devices • Exam lasts 3 hours (but is written for ~50 min) • Covers all lectures after Exam 2 (lec. 28-37) • Format similar to Exams 1/2 • 1 multiple choice problem (File I/O & structures) • 1 code reading problem • 1 code writing problem • Practice problems posted; can also look at old exams ECE Application Programming: Lecture 38
Review: arrays & pointer arithmetic • Arrays: groups of data with same type • x[10] has 10 elements, x[0] through x[9] • Can also define with initial values • e.g. double list[] = {1.2, 0.75, -3.233}; • Must be sure to access inside bounds • Array name is a pointer • Arrays are always passed by address to functions • Can use pointer to access array • Can use arithmetic to move pointer through array • p + 1 points to next element (after where p currently points) • p++ move pointer and point to next element • p-- move pointer and point to previous element ECE Application Programming: Lecture 38
Review: strings • Represented as character arrays • Can be initialized using string constants • char hello[] = “Hello”; • Can access individual elements • hello[3] = ‘l’; • Can print directly or with formatting • Print directly: printf(hello); • Print w/formatting using %s: printf(“%s\n”, hello); • Must leave enough room for terminating ‘\0’ ECE Application Programming: Lecture 38
Review: String functions • In <string.h> library: • Copying strings: • char *strcpy(char *dest, const char *source); • char *strncpy(char *dest, const char *source, size_t num); • Return dest • Comparing strings: • intstrcmp(const char *s1, const char *s2); • intstrncmp(const char *s1, const char *s2, size_t num); • Character-by-character comparison of character values • Returns 0 if s1 == s2, 1 if s1 > s2, -1 if s1 < s2 ECE Application Programming: Lecture 38
Review: String functions (cont.) • Find # of characters in a string • size_tstrlen(const char *s1); • Returns # characters before ‘\0’ • Not necessarily size of array • “Add” strings together—string concatenation • char *strcat(char *dest, const char *source); • char *strncat(char *dest, const char *source, size_t num); • Returns dest ECE Application Programming: Lecture 38
Review: 2D arrays • Declared similarly to 1D arrays • Example (see below): int x[3][4]; • Index elements similarly to 1-D arrays • Initialize:int y[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; • Typically used with nested for loops • Can pass to functions—must specify # columns ECE Application Programming: Lecture 38
Review: File I/O • Open file: FILE *fopen(filename, file_access) • Close file: fclose(file_handle) • Formatted I/O: • fprintf(file_handle, format_specifier, 0+ variables) • fscanf(file_handle, format_specifier, 0+ variables) • Unformatted I/O: • size_tfwrite(pointer, element size, # elements, file_handle) • size_tfread(pointer, element size, # elements, file_handle) • Check for EOF using either fscanf() result or feof(FILE *) ECE Application Programming: Lecture 38
Review: Unformatted I/O (cont.) • Character I/O • intfputc(int c, FILE *stream); • intputchar(int c); • intfgetc(FILE *stream); • intgetchar(); • intungetc(int c, FILE *stream); • Line I/O • intfputs(const char *s, FILE *stream); • int puts(const char *s); • char *fgets(char *s, intn, FILE *stream); • char *gets(char *s); ECE Application Programming: Lecture 35
Review: Structures • User-defined types • Example: typedefstruct { char first[50]; char middle; char last[50]; unsigned int ID; double GPA; } StudentInfo; • Can define variables of that type • Scalar: StudentInfo student1; • Array: StudentInfoclassList[10]; • Pointer: StudentInfo *sPtr; • Access members using • Dot operator: student1.middle = ‘J’; • Arrow (if pointers): sPtr->GPA = 3.5; ECE Application Programming: Lecture 38
Next time • Exam 3: Tues. 5/15, 8:00-11:00 AM ECE Application Programming: Lecture 38