Slide 1

Slide 1 text

jgs CSE 240 Introduction to Programming Languages Lecture 12: struct Dr. Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment

Slide 2

Slide 2 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 2 jgs Announcement § Homework 02 Programming with C

Slide 3

Slide 3 text

jgs string.h

Slide 4

Slide 4 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 4 jgs string.h library

Slide 5

Slide 5 text

jgs typedef and enum

Slide 6

Slide 6 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 6 jgs typedef § typedef typename newname; § introduces a new name that becomes a synonym for the type given by the typename portion of the declaration. typedef int booOoolean; typedef char FlagType; int main() { booOoolean x = 0; int counter FlagType y = 'A'; // etc. }

Slide 7

Slide 7 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 7 jgs typedef § typedef typename newname; § introduces a new name that becomes a synonym for the type given by the typename portion of the declaration. typedef int booOoolean; typedef char FlagType; int main() { booOoolean x = 0; int counter FlagType y = 'A'; // etc. }

Slide 8

Slide 8 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 8 jgs typedef and enum § enum allow us to define the allowed values for a new type § The elements in an enumeration are integer constants, i.e., they are labels that represent an integer value typedef enum {false, true} booOoolean; typedef enum {Sun, Mon, Tue, Wed, Thu, Fri, Sat} days; int main() { booOoolean a = false; int counter; days x = Mon, y = Fri; days today = x + y; printf("%d", today); }

Slide 9

Slide 9 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 9 jgs typedef and enum #include typedef enum { red, amber, green} traffic_light; typedef enum { No, Yes} logic; void main( ) { traffic_light x = red; logic var = Yes; while (var == Yes) { switch (x) { case amber: x = red; printf("Red Light"); break; case red: x = green; printf("Green Light"); break; case green: x = amber; printf("Amber Light"); break; } var = No; } }

Slide 10

Slide 10 text

jgs struct

Slide 11

Slide 11 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 11 jgs struct type § A structure is is a composite data type declaration that defines a physically grouped list of variables to be placed under one name in a block of memory. § It is created by the keyword struct. § Similar to a Java class; but DOES NOT allow methods

Slide 12

Slide 12 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 12 jgs struct type struct type_name { type1 element1; type2 element2; . . . typen elementn; }; struct type_name a, b; // Example #include struct person { char name[30]; int id; }; void main( ) { struct person x, y; scanf("%s", x.name ); scanf("%d", &x.id); printf("%s", x.name); printf("\n"); printf("%d", x.id); }

Slide 13

Slide 13 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 13 jgs Arrays of struct #include struct contact { char name[30]; int phone; char email[30]; }; struct contact contact_book[100]; // an array of structures void main() { int index = 0; scanf("%d", &contact_book[index].phone); scanf("%s", contact_book[index].name ); scanf("%s", contact_book[index].email); printf("\n %d", contact_book[index].phone); printf("\n %s", contact_book[index].name); printf("\n %s", contact_book[index].email); }

Slide 14

Slide 14 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 14 jgs Pointers to struct name phone email x struct contact { char name[30]; int phone; char email[30]; }; main () { struct contact x; struct contact *y; scanf("%s", x.name); //dot with x scanf("%d", &x.phone); scanf("%s", x.email); printf ("%d \n", x.phone); y = &x; (*y).phone = 101010; //asterisk and dot with y y->phone = 404040; // arrow with y printf ("%d \n", y->phone); } y

Slide 15

Slide 15 text

Javier Gonzalez-Sanchez | CSE240 | Fall 2021 | 15 jgs Questions

Slide 16

Slide 16 text

jgs CSE 240 Introduction to Programming Languages Javier Gonzalez-Sanchez, Ph.D. [email protected] Fall 2021 Copyright. These slides can only be used as study material for the class CSE240 at Arizona State University. They cannot be distributed or used for another purpose.