$30 off During Our Annual Pro Sale. View Details »

CSE240 Lecture 12

CSE240 Lecture 12

Introduction to Programming Languages
Struct
(202110)

Javier Gonzalez-Sanchez
PRO

January 12, 2017
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. 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

    View Slide

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

    View Slide

  3. jgs
    string.h

    View Slide

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

    View Slide

  5. jgs
    typedef and enum

    View Slide

  6. 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.
    }

    View Slide

  7. 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.
    }

    View Slide

  8. 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);
    }

    View Slide

  9. 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;
    }
    }

    View Slide

  10. jgs
    struct

    View Slide

  11. 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

    View Slide

  12. 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);
    }

    View Slide

  13. 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);
    }

    View Slide

  14. 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

    View Slide

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

    View Slide

  16. 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.

    View Slide