Presentation is loading. Please wait.

Presentation is loading. Please wait.

EECE.2160 ECE Application Programming

Similar presentations


Presentation on theme: "EECE.2160 ECE Application Programming"— Presentation transcript:

1 EECE.2160 ECE Application Programming
Instructors: Dr. Michael Geiger Fall 2018 Lecture 26 Structures

2 ECE Application Programming: Lecture 26
Lecture outline Announcements/reminders Program 5 due today Program 4 regrades due Friday, 11/9 Program 6 to be posted; due Friday, 11/16 No lecture Monday (observing Veterans Day) Today’s lecture Structures 9/22/2019 ECE Application Programming: Lecture 26

3 ECE Application Programming: Lecture 26
Structures Arrays: groups of data with same type Structures: groups of data with (potentially) different types Example: record to store information about student: First name (char []) Middle initial (char) Last name (char []) ID # (unsigned int) GPA (double) Any data type—scalar, array, pointer (even other structures) allowed 9/22/2019 ECE Application Programming: Lecture 26

4 Declaring structure types
Can define structure as a type using typedef Could omit typedef, but would need “struct” before type name Syntax: typedef struct { <list of variables> } <typeName>; Example: typedef struct { char first[50]; char middle; char last[50]; unsigned int ID; double GPA; } StudentInfo; typedef usually at program start (with #include, #define) <typeName> usually starts with capital letter 9/22/2019 ECE Application Programming: Lecture 26

5 ECE Application Programming: Lecture 26
Using structure types Once defined, can declare variables using that type Scalar: StudentInfo student1; Array: StudentInfo classList[10]; Pointer: StudentInfo *sPtr; 9/22/2019 ECE Application Programming: Lecture 26

6 Using structure variables
Initialization very similar to array initialization: StudentInfo student1 = { “John”, ‘Q’, “Smith”, , 3.75 }; Accessing structure elements: . operator Syntax: <var name>.<element name> Examples: printf(“%s %c %s”, student1.first, student1.middle, student1.last); student1.GPA = 3.5; 9/22/2019 ECE Application Programming: Lecture 26

7 Example: Using structures
What does the following print? typedef struct { double real; double imag; } Complex; int main() { Complex a = {1, 2}; Complex b = {3.4, 5.6}; Complex c, d, e; printf("A = %.2lf+%.2lfi\n", a.real, a.imag); printf("B = %.2lf+%.2lfi\n", b.real, b.imag); c = a; d.real = a.real + b.real; d.imag = a.imag + b.imag; e.real = a.real - b.real; e.imag = a.imag - b.imag; printf("C = %.2lf+%.2lfi\n", c.real, c.imag); printf("D = %.2lf+%.2lfi\n", d.real, d.imag); printf("E = %.2lf+%.2lfi\n", e.real, e.imag); return 0; } 9/22/2019 ECE Application Programming: Lecture 26

8 ECE Application Programming: Lecture 26
Example solution A = i B = i C = i D = i E = i Note: code in handout has spaces before and after ‘+’ for readability; code on previous slide doesn’t because it wouldn’t fit! 9/22/2019 ECE Application Programming: Lecture 26

9 Structures and functions
Can pass structures to functions int f(StudentInfo s); Structures consume significant memory Usually much more efficient to simply pass pointer int g(StudentInfo *p); Access structure through pointer: -> operator Handles dereferencing and field access Example: p->GPA = 3.0; 9/22/2019 ECE Application Programming: Lecture 26

10 Example: Structures and functions
Write the following functions that use the StudentInfo structure Given a pointer to a single StudentInfo variable, print all of the student info to the screen using the following format: Michael J. Geiger ID # GPA: 1.23 Given an array of StudentInfo variables and the size of the array, compute and return the average GPA of all students in the list Prompt the user to enter 3 lines of input (using the format below), read the appropriate values into StudentInfo elements, and return a value of type StudentInfo Format (user input underlined) Enter name: Michael J. Geiger Enter ID #: Enter GPA: 1.23 9/22/2019 ECE Application Programming: Lecture 26

11 ECE Application Programming: Lecture 26
Example solution void printStudent(StudentInfo *s) { printf(“%s %c. %s\n”, s->first, s->middle, s->last); printf(“ID #%u\n”, s->ID); printf(“GPA %.2lf\n”, s->GPA); } 9/22/2019 ECE Application Programming: Lecture 26

12 Example solution (cont.)
double avgGPA(StudentInfo list[], int n) { int i; double sum = 0; for (i = 0; i < n; i++) sum += list[i].GPA; return sum / n; } 9/22/2019 ECE Application Programming: Lecture 26

13 Example solution (cont.)
StudentInfo readStudent() { StudentInfo s; printf(“Enter name: ”); scanf(“%s %c. %s”, s.first, &s.middle, s.last); printf(“Enter ID #: ”); scanf(“%u”, &s.ID); printf(“Enter GPA: ”); scanf(“%lf”, &s.GPA); return s; } 9/22/2019 ECE Application Programming: Lecture 26

14 ECE Application Programming: Lecture 26
Final notes Next time Return exams –or– Nested structures Reminders: Program 5 due today Program 4 regrades due Friday, 11/9 Program 6 to be posted; due Friday, 11/16 No lecture Monday (observing Veterans Day) 9/22/2019 ECE Application Programming: Lecture 26


Download ppt "EECE.2160 ECE Application Programming"

Similar presentations


Ads by Google