week 7 lecture 3 - nathaniel g. martinsp.nathanielgmartin.com/wk07/w7l3-arraysofstructs.pdf · week...
TRANSCRIPT
![Page 1: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/1.jpg)
Week 7 1
Week 7 Lecture 3
Arrays of Structures
![Page 2: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/2.jpg)
Week 7 2
Objectives
● Understand arrays of structures– Add an array of structures
– Print an array of structures
– Find an element in an array of structures
– Modify an element in an array of structures
– Delete an element in an array of structures
![Page 3: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/3.jpg)
Week 7 3
Print and Add
![Page 4: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/4.jpg)
Week 7 4
First: implement output, then input
● Output: Write a function to print the structure– Test this function by building a struct by hand
● Input: Write a function to add a structure– Test this function by adding then printing a structure
● Output: Print an array of structures– Simply call the function to print the structure in a loop
– Test this function by calling add a few times, then printing the array
● Input: Add an array of records– Call the function to add a record in a loop
– Test this function by calling the function to print an array of structures
![Page 5: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/5.jpg)
Week 7 5
Print the struct
File: struct.c
File: struct.h
![Page 6: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/6.jpg)
Week 7 6
Extract print to function
File: struct.c (partial)
![Page 7: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/7.jpg)
Week 7 7
Test the add function
File: struct.c
Output
![Page 8: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/8.jpg)
Week 7 8
Extract add to function
File: struct.c (partial)
![Page 9: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/9.jpg)
Week 7 9
Test the function
File: struct.c
Output
![Page 10: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/10.jpg)
Week 7 10
Moving to arrays of structs
● We need to change the name to an array ofchar– A char * does not allocate space for the name, it
only allocates space for the pointer.
– With an array of structs we need to store multiplenames
● We need to change the add_record function tocopy the character into the new array
![Page 11: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/11.jpg)
Week 7 11
Add to Array of Structs
File: struct.h
File: struct.c (partial)
![Page 12: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/12.jpg)
Week 7 12
Test the function
File: struct.c
Output
![Page 13: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/13.jpg)
Week 7 13
Moving to arrays of structs
● We need to add an array of structs
● We need to print out the array
![Page 14: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/14.jpg)
Week 7 14
Printing Array of Structs
File: struct.c (partial)
![Page 15: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/15.jpg)
Week 7 15
Test the function
File: struct.c (partial)
Output
![Page 16: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/16.jpg)
Week 7 16
Initializing a Database
● Now that we can insert students into thedatabase we want to add a class
● Create a new function that will add 10 students– We will need to create new names for the students.
– We create names by manipulating the string that willbe the name
![Page 17: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/17.jpg)
Week 7 17
Initializing the database
File: struct.c (partial)
![Page 18: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/18.jpg)
Week 7 18
Test the function
File: struct.c (partial)
Output
![Page 19: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/19.jpg)
Week 7 19
Find
![Page 20: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/20.jpg)
Week 7 20
Finding an Element in the Array
● Now that we have a class we can search in it.
● Create a find a student by serial number– Look at all of the elements
– Return when you find one
– Return the index of the element found
– Return -1 (an illegal index) is not found
![Page 21: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/21.jpg)
Week 7 21
Searching the array
File: struct.c (partial)
![Page 22: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/22.jpg)
Week 7 22
Test the function
File: struct.c (partial)
Output
![Page 23: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/23.jpg)
Week 7 23
A single test is not enough● We need to test the
function throughly– Search for first element
– Search for element inmiddle
– Search for last element
– Search for an elementnot in array
● Extract the test function
● Good tests elicit failure– Boundary conditions
● Succeed but the next fails● E.g., first and last elements
of the array
– Failure conditions:● Should fail● E.g., elements not in the
array.
– Normal condition● Should succeed
– must be selected
● E.g. element found in middle
![Page 24: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/24.jpg)
Week 7 24
Extract the test function
File: struct.c (partial)
![Page 25: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/25.jpg)
Week 7 25
Run tests
File: struct.c (partial)
Output
![Page 26: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/26.jpg)
Week 7 26
Modify
![Page 27: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/27.jpg)
Week 7 27
Modify
● Find the serial number
● Add a new record if not found.
● Change the other values if found.
● Return index of modified record (-1 if notfound)
![Page 28: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/28.jpg)
Week 7 28
Modify implementation
File: struct.c (partial)
![Page 29: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/29.jpg)
Week 7 29
Run tests
File: struct.c (partial) Output
![Page 30: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/30.jpg)
Week 7 30
Delete
![Page 31: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/31.jpg)
Week 7 31
Delete
● Find the serial number
● Return -1 if not found
● Move all of the records following the onefound up one space– The delete one will be overwritten
– The following ones will overwrite it
● Reduce the number of elements in the arrayby 1.
![Page 32: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/32.jpg)
Week 7 32
Delete implementation
File: struct.c (partial)
![Page 33: Week 7 Lecture 3 - Nathaniel G. Martinsp.nathanielgmartin.com/wk07/W7L3-ArraysOfStructs.pdf · Week 7 4 First: implement output, then input Output: Write a function to print the structure](https://reader036.vdocuments.net/reader036/viewer/2022071019/5fd306d3ad9c1866d54f8e11/html5/thumbnails/33.jpg)
Week 7 33
Run tests
File: struct.c (partial)Output