1 / 58

PASCAL II - Data Structures

PASCAL II - Data Structures. Philip Fees CS341. Introduction. What will be studied? Data Types Arrays Records Abstract Data Pointers Linked lists, Stacks, Queues What is a data structure?. Workshop 1. File I/O Concepts Pascal File I/O User Defined Types. File I/O Concepts.

elmo-ware
Download Presentation

PASCAL II - Data Structures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PASCAL II - Data Structures Philip Fees CS341 CS341 PASCAL II - Data Structures

  2. Introduction • What will be studied? • Data Types • Arrays • Records • Abstract Data • Pointers • Linked lists, Stacks, Queues • What is a data structure? CS341 PASCAL II - Data Structures

  3. Workshop 1 • File I/O Concepts • Pascal File I/O • User Defined Types CS341 PASCAL II - Data Structures

  4. File I/O Concepts • Generally termed Device I/O • Could be hard disk, CD-ROM, tape, etc. • Could be terminal, socket (IPC/Internet), etc. • Delimited files (whitespace, eol, eof) vs. non delimited • Encoded (ASCII, EBCDIC) vs. binary • Open and Close • Read or write via file/device handle (symbolic name) • Seek vs. non-seek devices • Sequential vs. Indexed CS341 PASCAL II - Data Structures

  5. Pascal File I/O - Handles • Identify handle (symbolic name) Program myProgram (input, output, fileHandle); … VAR fileHandle : text; • Associate file to handle • “create procedure file prior to compiling and running the program” • TP: assign(fileHandle,’myTextFile.txt’); CS341 PASCAL II - Data Structures

  6. Pascal File I/O - Open & Seek • Open the file reset(fileHandle); • rewind is part of “seeking” • delimiter tests WHILE not eol DO WHILE not eol(fileHandle) DO WHILE not eof DO WHILE not eof(fileHandle) DO CS341 PASCAL II - Data Structures

  7. Pascal File I/O - Read & Write • Read from file via handle readln(fileHandle, variable1, variable2, …); • Write to file via handle writeln(fileHandle, ‘this is a test’, variable1, …); • Ease old file contents rewrite(fileHandle); • See example pg. 444 CS341 PASCAL II - Data Structures

  8. Exercises • Pg. 448 25 - 30 CS341 PASCAL II - Data Structures

  9. User Defined Types • Characteristic of a data type (int, char, boolean) • set of value • fixed amount of memory • Ordinal data type have pred() and succ() values • User defined a.k.a. enumerated data type CS341 PASCAL II - Data Structures

  10. Enumerated Data Type • Syntax Type Weekday = (Mon, Tues, Wed, Thur, Fri); • Usage VAR Day : Weekday; … Day := Mon; if (Day = Mon) then CS341 PASCAL II - Data Structures

  11. Subranges • Define one type as subset of another type • Examples TYPE USYears = 1776..1998; Days = (Sun, Mon, Tues, Wed, Thur, Fri, Sat); Weekdays = Mon..Fri; • Operations: succ() and pred() CS341 PASCAL II - Data Structures

  12. Exercises • Pg. 454-455 # 2, 15 • Pg. 461 #22-26 • Pg. 465 #8, 20, 21, 22 CS341 PASCAL II - Data Structures

  13. Workshop 2 • Single Dimensional Arrays • Selection Sort • Arrays and Subroutines • Searching Arrays CS341 PASCAL II - Data Structures

  14. Arrays • Collection of data elements • Data elements are the same type • Contiguous in memory • Access individuals by subscript • Array size determined by: element size * number of elements CS341 PASCAL II - Data Structures

  15. Pascal Arrays • name : ARRAY [ index type ] OF type; • Example 1: VAR List : ARRAY [1..5] OF integer; • Example 2: TYPE Numbers = ARRAY [1..5] OF integer; VAR List : Numbers; CS341 PASCAL II - Data Structures

  16. Pascal Arrays (cont.) • index type alternatives TYPE DAYS = (SUN, MON, TUES, WED, THUR, FRI, SAT); VAR StockPriceList : ARRAY [9..16] OF real; NegativeList : ARRAY [-2..3] OF char; HoursWorked : ARRAY [MON..FRI] of real; CS341 PASCAL II - Data Structures

  17. Use of Constants • Good Pratice CONST ClassSize = 35; Type TestScores = 0..100; VAR Score : ARRAY [1..ClassSize] of TestScores; CS341 PASCAL II - Data Structures

  18. Arrays and Loops • “Looping” over the array • Example: FOR J := 1 to ClassSize DO BEGIN write(‘next: ‘); readln(Score[J]); writeln(‘value = ‘, Score[J]); END CS341 PASCAL II - Data Structures

  19. Review • Example 10.7 pg. 491 • Example 10.9 pg. 493 • Example 10.10 pg. 494 CS341 PASCAL II - Data Structures

  20. Selection Sort • Sorting a list of values • Algorithm • start with first element [1] (current) • find smallest element in array and exchange with current • current := next array element (current + 1) • continue to end of array • What is the best and worst case? CS341 PASCAL II - Data Structures

  21. Arrays and Subroutines • See GetData example on pg. 508 • Call by value vs. call by reference • Call by value: create a copy of the array • Call by reference: refer to the passed array • Performance implications CS341 PASCAL II - Data Structures

  22. Search Algorithms • Sequential Search (pg. 526) • search entire array until value located or “hit” the end of the array • Average of N iterations of loop • Binary Search (pg. 528) • Assumes sorted array • start in middle; look in upper or lower half • Average of log N iterations of loop CS341 PASCAL II - Data Structures

  23. Analysis • Overhead of inserting new value in sorted array • What should maximum size of the array be? • When should an array be used? CS341 PASCAL II - Data Structures

  24. Exercises • Arrays: pp. 497-500 # 1-5, 10, 20 • Sorts: pg. 507 # 2, 3, 6 • Subroutines: pg. 516 # 16-19 • Searching: pg. #533 5, 15 CS341 PASCAL II - Data Structures

  25. Workshop 3 • Multi-dimensional arrays CS341 PASCAL II - Data Structures

  26. Array in Memory • Array stored in contiguous memory • Location is calculated: • Starting address + (row index * # of columns) + column index • Row Major vs. Column Major CS341 PASCAL II - Data Structures

  27. Pascal Syntax • Syntax <name> : ARRAY [ <row index>, <column index> ] OF <element type> CS341 PASCAL II - Data Structures

  28. Two Dimensional Example • Example 1: VAR Table : ARRAY [ 1..3, 1.. 4 ] OF integer; • Example 2: TYPE Maxtrix = [ 1.. 3, 1.. 4] OF integer; VAR Table : Matrix; CS341 PASCAL II - Data Structures

  29. Iteration • Example: FOR row := 1 to 3 DO FOR column := 1 to 4 DO writeln(‘Table[‘,row,’, ‘, column,’] = ‘, Table[row][column]); CS341 PASCAL II - Data Structures

  30. Higher Dimensional Arrays • Syntax <identifier> : ARRAY [ A1 .. B1, A2 .. B2, …, An .. Bn] OF <type> • Example1: cube : ARRAY [ 1..3, 1..4, 1..5] OF integer; • Example 2: cube : ARRAY [ 1..3 ] OF ARRAY [ 1..4, 1..5 ] OF integer; CS341 PASCAL II - Data Structures

  31. Exercises • pg. 567 # 4, 9-12, 13-15 CS341 PASCAL II - Data Structures

  32. Workshop 4 • Records • Variants • Binary Files CS341 PASCAL II - Data Structures

  33. Workshop 5 • Sets CS341 PASCAL II - Data Structures

  34. Defining and Declaring • Syntax TYPE <type name> = SET OF <base type> ; VAR <variable name> : <type name> ; • Example TYPE Digits = SET OF 0..9; VAR numbers : Digits; CS341 PASCAL II - Data Structures

  35. Different than Subtypes • Assignment numbers := [ 0, 2, 4, 6, 8 ]; • Set is undefined until assignment • Assigned values must be in base type - elements of the set • Universal sets contain all values • Subsets - one set contains all members of another set • See set definitions on top of page 735. CS341 PASCAL II - Data Structures

  36. Set Operations • Union: A + B • Intersection: A * B • Difference: A - B CS341 PASCAL II - Data Structures

  37. Relational Operators • equal: A = B sets A and B are identical • not equal: A <> B set A and B are not identical • subset: A <= B A is a subset of B • superset A >= B A is a superset of B (A<=B) CS341 PASCAL II - Data Structures

  38. Membership • Syntax <element> IN <set> • Example 2 IN numbers • Boolean value: is 2 in the numbers set? CS341 PASCAL II - Data Structures

  39. Membership Example • Useful for “edit checks” • Example IF response IN [‘Y’, ‘y’] THEN (continue action here) ELSE (alternative action here) • Review example on page 744. CS341 PASCAL II - Data Structures

  40. Exercises • Page 739 # 9-15, 26-30 • Page 743 # 2, 7-20, 27 • Programming Problem Page 759 # 1, 3 CS341 PASCAL II - Data Structures

  41. Workshop 6 • Model Builder • Abstract Data Type (ADT) • String ADT • Linked List ADT CS341 PASCAL II - Data Structures

  42. Model Builder • Model, design, or abstraction - analysis without being concern for details • Examples • World Wide Web • Windows • Virus • UNIX: parent process, child process, kill, fork, etc. CS341 PASCAL II - Data Structures

  43. Abstract Data Type • collection of data (objects) • shared properties • shared operations • Examples: Array, Integers, CS341 PASCAL II - Data Structures

  44. ADT Example - String • definition - finite sequence of characters • terminated with null character • access individual elements (substring) • Operations: create, read, write, assign, length • reconsider operations if string is defined by length not null terminator. CS341 PASCAL II - Data Structures

  45. ADT Example - Linked List • Definition - list of data items associated by a link to one or more nodes. • Typically point to next node (single linked) or previous node (double linked) • Head node is first node in list • To “walk” the list, must start at head and proceed sequentially. • Task: Define operations, define interfaces, implement CS341 PASCAL II - Data Structures

  46. Workshop 7 • Linked Lists • Array Implementation of Linked Lists • Pointers • Pointer Implementation of Linked Lists CS341 PASCAL II - Data Structures

  47. Why Linked Lists • Arrays • Size fixed at Compile Time, inefficient space utilization • Inserting, deleting, organizing are costly. Why? • Requirement • Size determined at Run Time • Minimal cost to insert, delete, and organize data • Examples • Sorting, data with undetermined number of items CS341 PASCAL II - Data Structures

  48. Linked Lists • Diagram data structure (See page 872) • Define operations (See page 881) • Define implementation base data structures (See page 873) • Diagram operation’s effect on sample data structure (See page 887) CS341 PASCAL II - Data Structures

  49. Introduction to Pointers • A pointer doesn’t contain the data, but contains a way of locating the data. • Example: Array subscript pointer : integer data : array [1..100] of char; … pointer := 5; writeln(array[pointer]); CS341 PASCAL II - Data Structures

  50. Array Implementation of Linked Lists • Issues • Still have compile time limit on number of nodes, wasted space • Which nodes are “free” • Benefits • Simple base data type • Ok if max nodes know at compile time • Still have benefits of low cost insert, update, and organize CS341 PASCAL II - Data Structures

More Related