Presentation is loading. Please wait.

Presentation is loading. Please wait.

Fall 1999CS 23101 Composite Data Types. Fall 1999CS 23102 Topics to be Covered l Abstract data types l One-dimensional arrays l Two-dimensional arrays.

Similar presentations


Presentation on theme: "Fall 1999CS 23101 Composite Data Types. Fall 1999CS 23102 Topics to be Covered l Abstract data types l One-dimensional arrays l Two-dimensional arrays."— Presentation transcript:

1 Fall 1999CS 23101 Composite Data Types

2 Fall 1999CS 23102 Topics to be Covered l Abstract data types l One-dimensional arrays l Two-dimensional arrays l Records

3 Fall 1999CS 23103 Data Abstraction l Separation of a data type’s logical properties from its implementation. LOGICAL PROPERTIESIMPLEMENTATION What are the possible values? How can this be done in C++? What operations will be needed? How can data types be used?

4 Fall 1999CS 23104 APPLICATION 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 REPRESENTATION Data Encapsulation l is the separation of the representation of data from the applications that use the data at a logical level; a programming language feature that enforces information hiding. int y; y = 25;

5 Fall 1999CS 23105 Encapsulated C++ Data Type int Value range: INT_MIN.. INT_MAX Operations: + prefix - prefix + infix - infix * infix / infix % infix Relational Operators infix TYPE int (inside) Representation of int as 16 bits two’s complement + Implementation of Operations

6 Fall 1999CS 23106 Abstract Data Type (ADT) l A data type whose properties (domain and operations) are specified independently of any particular implementation.

7 Fall 1999CS 23107 Data Structures l A collection of data elements n that can be decomposed into its component elements n whose organization is a feature how each element is accessed. n that its implementation of both organization and accessing of data elements in an ADT

8 Fall 1999CS 23108 l Application (or user) level: modeling real-life data in a specific context. l Logical (or ADT) level: abstract view of the domain and operations. WHAT l Implementation level: specific representation of the structure to hold the data items, and the coding for operations. HOW Data from 3 different levels

9 Fall 1999CS 23109 Viewing a library from 3 different levels l Application (or user) level: Library of Congress, or Baltimore County Public Library. l Logical (or ADT) level: domain is a collection of books; operations include: check book out, check book in, pay fine, reserve a book. l Implementation level: representation of the structure to hold the “books”, and the coding for operations.

10 Fall 1999CS 231010 Viewing a ATM Machine from 3 different levels l Application (or user) level: l Logical (or ADT) level: l Implementation level:

11 Fall 1999CS 231011 Composite Data Type A composite (or structured) data type is a type which l stores a collection of individual data components (values) under one variable name, l and allows the individual data components to be accessed for assignment or use.

12 Fall 1999CS 231012 4 Basic Kinds of ADT Operations l Constructor -- creates a new instance (object) of an ADT. l Transformer -- changes the state of one or more of the data values of an instance. l Observer -- allows us to observe the state of one or more of the data values without changing them. l Iterator -- allows us to process all the components in a data structure sequentially. 12

13 Fall 1999CS 231013 Two Forms of Composite Data Types Components are not organized with respect to one another. The organization determines method used to access individual data components. UNSTRUCTURED STRUCTURED EXAMPLES: EXAMPLES: arrays classes and structs 13

14 Fall 1999CS 231014 C++ Built-In Data Types Composite array struct union class Address pointer reference Simple IntegralFloating char short int long enum float double long double

15 Fall 1999CS 231015 One-Dimensional Array at the Logical Level A one-dimensional array is a structured composite data type made up of a finite, fixed size (known at compile time) collection of homogeneous (all of the same data type) elements having relative positions and to which there is direct access (any element can be accessed immediately). Array operations (creation, storing a value, retrieving a value) are performed using a declaration and indexes.

16 Fall 1999CS 231016 Implementation Example float values[5]; // assume element size is 4 bytes This ACCESSING FUNCTION gives position of values[Index] Address(Index) = BaseAddress + Index * SizeOfElement Base Address values[0] values[1] values[2] values[3] values[4] 7000 7004 7008 7012 7016 Indexes

17 Fall 1999CS 231017 One-Dimensional Arrays in C++ l The index must be of an integral type (char, short, int, long, or enum). l The index range is always 0 through the array size minus 1. l Arrays cannot be assigned, and cannot be the return type of a function. SYNTAX DataType ArrayName [ConstIntExpression];

18 Fall 1999CS 231018 Another Example char name[10]; // assume element size is 1 byte name[0] name[1] name[2] name[3] name[4]..... name[9] 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 Base Address This ACCESSING FUNCTION gives position of name[Index] Address(Index) = BaseAddress + Index * SizeOfElement

19 Fall 1999CS 231019 Assigning values to individual array elements float temps[ 5 ] ; // allocates memory for array int m = 4 ; temps[ 2 ] = 98.6 ; temps[ 3 ] = 101.2 ; temps[ 0 ] = 99.4 ; temps[ m ] = temps[ 3 ] / 2.0 ; temps[ 1 ] = temps[ 3 ] - 1.2 ; // what value is assigned? temps[0] temps[1] temps[2] temps[3] temps[4] 7000 7004 7008 7012 7016 99.4 ? 98.6 101.2 50.6

20 Fall 1999CS 231020 What values are assigned? float temps[ 5 ] ; // allocates memory for array int m ; for (m = 0; m < 5; m++) { temps[ m ] = 100.0 + m  0.2 ; } temps[0] temps[1] temps[2] temps[3] temps[4] 7000 7004 7008 7012 7016 ? ? ? ? ?

21 Fall 1999CS 231021 Now what values are printed? float temps[ 5 ] ; // allocates memory for array int m ;..... for (m = 4; m >= 0; m-- ) { cout << temps[ m ] << endl ; } temps[0] temps[1] temps[2] temps[3] temps[4] 7000 7004 7008 7012 7016 100.0 100.2 100.4 100.6 100.8

22 Fall 1999CS 231022 Variable subscripts float temps[ 5 ] ; // allocates memory for array int m = 3 ;...... What is temps[ m + 1] ? What is temps[ m ] + 1 ? temps[0] temps[1] temps[2] temps[3] temps[4] 7000 7004 7008 7012 7016 100.0 100.2 100.4 100.6 100.8

23 Fall 1999CS 231023 A Closer Look at the Compiler float temps[5]; // this declaration allocates memory To the compiler, the value of the identifier temps alone is the base address of the array. We say temps is a pointer (because its value is an address). It “points” to a memory location. temps[0] temps[1] temps[2] temps[3] temps[4] 7000 7004 7008 7012 7016 100.0 100.2 100.4 100.6 100.8

24 Fall 1999CS 231024 Initializing in a declaration int ages[ 5 ] = { 40, 13, 20, 19, 36 } ; for ( int m = 0; m < 5; m++ ) { cout << ages[ m ] ; } ages[0] ages[1] ages[2] ages[3] ages[4] 6000 6002 6004 6006 6008 40 13 20 19 36

25 Fall 1999CS 231025 Passing Arrays as Parameters l In C++, arrays are always passed by reference, and & is not used with the formal parameter type. l Whenever an array is passed as a parameter, its base address is sent to the called function.

26 Fall 1999CS 231026 Passing Arrays as Parameters Generally, functions that work with arrays require 2 items of information as actual parameters: the beginning address of the array (in memory), and the number of elements to process in the array.

27 Fall 1999CS 231027 const Array Parameter Because arrays are always passed as reference parameters, you can protect the actual parameter from unintentional changes by using const in formal parameter list and function prototype. FOR EXAMPLE... // prototype float SumValues(const float values[ ], int numOfValues );

28 float SumValues (const float values[ ], int numOfValues ) // Pre: values[ 0] through values[numOfValues-1] // have been assigned // Returns the sum of values[0] through // values[numOfValues-1] { float sum = 0; for ( int index = 0; index < numOfValues; index++ ) { sum += values [ index ] ; } return sum; } 28

29 Fall 1999CS 231029 Array Index Array index can be any integral type. This includes char and enum types. l It is programmer’s responsibility to make sure that an array index does not go out of bounds. The index must be within the range 0 through the declared array size minus one. l Using an index value outside this range causes the program to access memory locations outside the array. The index value determines which memory location is used.

30 Fall 1999CS 231030 Array with enum Index Type DECLARATION enum Department { WOMENS, MENS, CHILDRENS, LINENS, HOUSEWARES, ELECTRONICS }; float salesAmt [ 6 ] ; Department which; USE for ( which = WOMENS ; which <= ELECTRONICS ; which = Department ( which + 1 ) ) cout << salesAmt [ which ] << endl;

31 Fall 1999CS 231031 float salesAmt [6]; salesAmt [ WOMENS ] ( i. e. salesAmt [ 0 ] ) salesAmt [ MENS] ( i. e. salesAmt [ 1 ] ) salesAmt [ CHILDRENS ] ( i. e. salesAmt [ 2 ] ) salesAmt [ LINENS ] ( i. e. salesAmt [ 3 ] ) salesAmt [ HOUSEWARES ] ( i. e. salesAmt [ 4 ] ) salesAmt [ ELECTRONICS ] ( i. e. salesAmt [ 5 ] )

32 Fall 1999CS 231032 Parallel arrays DEFINITION Parallel arrays are 2 or more arrays that have the same index range, and whose elements contain related information, possibly of different data types. EXAMPLE const int SIZE 50 ; int idNumber [ SIZE ] ; float hourlyWage [ SIZE ] ; parallel arrays

33 Fall 1999CS 231033 const int SIZE 50 ; int idNumber [ SIZE ] ; // parallel arrays hold float hourlyWage [ SIZE ] ; // related information idNumber [ 0 ] 4562 hourlyWage [ 0 ] 9.68 idNumber [ 1 ] 1235 hourlyWage [ 1 ] 45.75 idNumber [ 2 ] 6278 hourlyWage [ 2 ] 12.71.... idNumber [ 48 ] 8754 hourlyWage [ 48 ] 67.96 idNumber [ 49 ] 2460 hourlyWage [ 49 ] 8.97

34 Fall 1999CS 2310342 String in C++ A string is an array of characters which contains a non-printing null character ‘\0’ ( with ASCII value 0 ) marking its end. A string can be initialized in its declaration in two equivalent ways. char message [ 8 ] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ }; char message [ 8 ] = “Hello” ; message [0] [1] [2] [3] [4] [5] [6] [7] ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’

35 Fall 1999CS 2310353 char vs. string ‘A’ has data type char and is stored in 1 byte “A” is a string of 2 characters and is stored in 2 bytes 5000 ‘A’ 6000 ‘A’ 6001 ‘\0’

36 Fall 1999CS 2310364 Recall that... char message[8]; // this declaration allocates memory To the compiler, the value of the identifier message alone is the base address of the array. We say message is a pointer (because its value is an address). It “points” to a memory location. message [0] [1] [2] [3] [4] [5] [6] [7] ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’ 6000

37 Fall 1999CS 2310375 Aggregate String I/O in C++ I/O of an entire string is possible using the array identifier with no subscripts and no looping. EXAMPLE char message [ 8 ] ; cin >> message ; cout << message ; HOWEVER...

38 Fall 1999CS 2310386 Extraction operator >> When using the extraction operator ( >> ) to read input characters into a string variable, l the >> operator skips any leading whitespace characters such as blanks and newlines. l It then reads successive characters into the array, and stops at the first trailing whitespace character (which is not consumed, but remains waiting in the input stream). l The >> operator adds the null character to the end of the string.

39 Fall 1999CS 2310397 Example using >> char name [ 5 ] ; cin >> name ; Suppose input stream looks like this: J o e name [0] name [1] name [2] name [3] name [4] 7000 total number of elements in the array null character is added ‘J’ ‘o’ ‘e’ ‘\0’

40 Fall 1999CS 2310408 Function get( ) l Because the extraction operator stops reading at the first trailing whitespace, >> cannot be used to input a string with blanks in it. l If your string’s declared size is not large enough to hold the input characters and add the ‘\0’, the extraction operator stores characters into memory beyond the end of the array. l Use get function with 2 parameters to overcome these obstacles. EXAMPLE char message [ 8 ] ; cin.get ( message, 8 ) ; // inputs at most 7 characters plus ‘\0’

41 Fall 1999CS 2310419 inFileStream.get ( str, count + 1) l get does not skip leading whitespace characters such as blanks and newlines. l get reads successive characters (including blanks) into the array, and stops when it either has read count characters, or it reaches the newline character ‘\n’, whichever comes first. l get appends the null character to str. l If it is reached, newline is not consumed by get, but remains waiting in the input stream.

42 Fall 1999CS 23104210 Function ignore( ) l can be used to consume any remaining characters up to and including the newline ‘\n’ left in the input stream by get l EXAMPLE cin.get ( string1, 81 ) ; // inputs at most 80 characters cin.ignore ( 30, ‘\n’ ) ; // skips at most 30 characters // but stops if ‘\n’ is read cin.get ( string2, 81 ) ;

43 Fall 1999CS 23104311 Another example using get( ) char ch ; char fullName [ 31 ] ; char address [ 31 ] ; cout << “Enter your full name: “ ; cin.get ( fullName, 31 ) ; cin.get (ch) ; // to consume the newline cout << “Enter your address: “ ; cin.get ( address, 31 ) ; fullName [0] ‘N’ ‘e’ ‘l’ ‘l’ ‘ ’ ‘D’ ‘a’ ‘l’ ‘e’ ‘\0’... address [0] ‘A’ ‘u’ ‘s’ ‘t’ ‘i‘ ‘n’ ‘ ’ ‘T’ ‘X’ ‘\0’...

44 Fall 1999CS 23104412 String function prototypes in int strlen (char str [ ] ); // FCTNVAL == integer length of string str ( not including ‘\0’ ) int strcmp ( char str1 [ ], char str2 [ ] ); // FCTNVAL== negative, if str1 precedes str2 lexicographically //== positive, if str1 follows str2 lexicographically //== 0, if str1 and str2 characters same through ‘\0’ char * strcpy ( char toStr [ ], char fromStr [ ] ); // FCTNVAL== base address of toStr ( usually ignored ) // POSTCONDITION : characters in string fromStr are copied to //string toStr, up to and including ‘\0’, //overwriting contents of string toStr

45 # include. char author [ 21 ] ; int length ; cin.get ( author, 21 ) ; length = strlen ( author ) ; // What is the value of length ? 5000 author [0] ‘C’ ‘h’ ‘i’ ‘p’ ‘ ’ ‘W’ ‘e’ ‘e’ ‘m’ ‘s’ ‘\0’....

46 char myName [ 21 ] = “Huang” ;// WHAT IS OUTPUT? char yourName [ 21 ] ; cout << “Enter your last name : “ ; cin.get ( yourName, 21 ) ; if ( strcmp ( myName, yourName ) == 0 ) cout << “We have the same name! “ ; else if ( strcmp ( myName, yourName ) < 0 ) cout << myName << “ comes before “ << yourName ; else if ( strcmp ( myName, yourName ) > 0 ) cout << yourName << “comes before “ << myName ; myName [0] ‘H’ ‘u’ ‘a’ ‘n’ ‘g’ ‘\0’... yourName [0] ‘H’ ‘e’ ‘a’ ‘d’ ‘i‘ ‘n’ ‘ g’ ‘t’ ‘o’ ‘n’ ‘\0’...

47 char myName [ 21 ] = “Huang” ; char yourName [ 21 ] ; if ( myName == yourName ) // compares addresses only! { // That is, 4000 and 6000 here.. // DOES NOT COMPARE CONTENTS!. } myName [0] ‘H’ ‘u’ ‘a’ ‘n’ ‘g’ ‘\0’... yourName [0] ‘H’ ‘e’ ‘a’ ‘d’ ‘i‘ ‘n’ ‘ g’ ‘t’ ‘o’ ‘n’ ‘\0’... 4000 6000

48 char myName [ 21 ] = “Huang” ; char yourName [ 21 ] ; cin.get ( yourName, 21 ) ; yourName = myName; // DOES NOT COMPILE! // What is the value of myName ? myName [0] ‘H’ ‘u’ ‘a’ ‘n’ ‘g’ ‘\0’... yourName [0] 4000 6000 ‘H’ ‘e’ ‘a’ ‘d’ ‘i‘ ‘n’ ‘ g’ ‘t’ ‘o’ ‘n’ ‘\0’...

49 char myName [ 21 ] = “Huang” ; char yourName [ 21 ] ; cin.get ( yourName, 21 ) ; strcpy ( yourName, myName ) ; // changes string yourName // OVERWRITES CONTENTS! myName [0] ‘H’ ‘u’ ‘a’ ‘n’ ‘g’ ‘\0’... yourName [0] ‘H’ ‘e’ ‘a’ ‘d’ ‘i‘ ‘n’ ‘ g’ ‘t’ ‘o’ ‘n’ ‘\0’... 4000 6000 ‘u’ ‘n’ ‘g’ ‘\0’

50 Fall 1999CS 23105018 Using typedef with arrays typedef int Boolean ; // names Boolean as a data type typedef char String20 [ 21 ] ; // names String20 as an array type String20 myName ; // these declarations String20 yourName ; // allocate memory for 3 variables Boolean isSeniorCitizen ; 5000 7000 6000

51 Fall 1999CS 23105119 Write a program that will... Read the ID numbers, hourly wages, and names, for up to 50 persons from a data file. Then display the ID number and hourly wage for any person in the file whose name is entered at the keyboard, or indicate that the person was not located, if that is the case.

52 Fall 1999CS 23105220 Assume file has this form with data for no more than 50 persons 4562 19.68 Dale Nell 1235 15.75 Weems Chip 6278 12.71 Headington Mark... 8754 17.96 Cooper Sonia 2460 14.97 Huang Jeff

53 Fall 1999CS 23105321 Parallel arrays hold related data const int MAX_PERSONS = 50; typedef char String20[ 21] ; // define data type. // declare 3 parallel arrays int idNums[ MAX_PERSONS ] ; float wages[ MAX_PERSONS ] ; String20 names[ MAX_PERSONS ] ; // holds up to 50 strings each with // up to 20 characters plus null character ‘\0’

54 Fall 1999CS 23105422 idNums[ 0 ] 4562 wages[ 0 ] 19.68 names[ 0 ] “Dale Nell” idNums[ 1 ] 1235 wages[ 1 ] 15.75 names[ 1 ] “Weems Chip” idNums[ 2 ] 6278 wages[ 2 ] 12.71 names[ 2 ] “Headington Mark”...... idNums[ 48] 8754 wages[ 48] 17.96 names[ 48] “Cooper Sonia” idNums[ 49] 2460 wages[ 49] 14.97 names[ 49] “Huang Jeff” int idNums [ MAX_PERSONS ] ; // parallel arrays float wages [ MAX_PERSONS ] ; String20 names [ MAX_PERSONS ] ;

55 Fall 1999CS 231055 Two-Dimensional Array at the Logical Level A two-dimensional array is a structured composite data type made up of a finite, fixed size collection of homogeneous elements having relative positions and to which there is direct access. Array operations (creation, storing a value, retrieving a value) are performed using a declaration and a pair of indexes (called row and column) representing the component’s position in each dimension.

56 Fall 1999CS 231056 EXAMPLE -- To keep monthly high temperatures for 50 states in a two-dimensional array. const int NUM_STATES = 50 ; const int NUM_MONTHS = 12 ; int stateHighs [ NUM_STATES ] [ NUM_MONTHS ] ; [ 0 ] [ 1 ] [ 2 ].. stateHighs [2] [7]. [ 48 ] [ 49 ] [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 66 64 72 78 85 90 99 115 98 90 88 80 row 2, col 7 might be Arizona’s high for August

57 Fall 1999CS 231057 Finding the average high temperature for Arizona int total = 0 ; int month ; int average ; for ( month = 0 ; month < NUM_MONTHS ; month ++ ) total = total + stateHighs [ 2 ] [ month ] ; average = int ( total / 12.0 + 0.5 ) ;

58 Fall 1999CS 231058 const int NUM_STATES = 50 ; const int NUM_MONTHS = 12 ; int stateHighs [ NUM_STATES ] [ NUM_MONTHS ] ; l In memory, C++ stores arrays in row order. The first row is followed by the second row, etc. 12 highs for state 0 12 highs for state 1 etc. Alabama Alaska first row second row 800080248048 Base Address STORAGE... rows columns

59 Fall 1999CS 231059 Implementation Level View stateHighs[ 0 ] [ 0 ] stateHighs[ 0 ] [ 1 ] stateHighs[ 0 ] [ 2 ] stateHighs[ 0 ] [ 3 ] stateHighs[ 0 ] [ 4 ] stateHighs[ 0 ] [ 5 ] stateHighs[ 0 ] [ 6 ] stateHighs[ 0 ] [ 7 ] stateHighs[ 0 ] [ 8 ] stateHighs[ 0 ] [ 9 ] stateHighs[ 0 ] [10 ] stateHighs[ 0 ] [11 ] stateHighs[ 1 ] [ 0 ] stateHighs[ 1 ] [ 1 ] stateHighs[ 1 ] [ 2 ] stateHighs[ 1 ] [ 3 ]. To locate an element such as stateHighs [ 2 ] [ 7] the compiler needs to know that there are 12 columns in this two-dimensional array. At what address will stateHighs [ 2 ] [ 7 ] be found? Assume 2 bytes for type int. Base Address 8000

60 Fall 1999CS 231060 Two-Dimensional Array Parameters l Just as with a one-dimensional array, when a two- (or higher) dimensional array is passed as a parameter, the base address of the actual array is sent to the function. l The size of all dimensions except the first must be included in the function heading and prototype. l The sizes of those dimensions for the formal parameter must be exactly the same as in the actual array.

61 Fall 1999CS 231061 const int NUM_STATES = 50 ; const int NUM_MONTHS = 12 ; int stateHighs [ NUM_STATES ] [ NUM_MONTHS ] ; int stateAverages [ NUM_STATES ] ; [ 0 ] ? [ 1 ] ? [ 2 ]. [ 48 ] [ 49 ] [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 43 42 50 55 60 78 79 80 77 72 63 40 66 64 72 78 85 90 99 115 98 90 88 80 Use the two-dimensional stateHighs array to fill a one-dimensional stateAverages array Alaska Arizona

62 void findAverages ( const int stateHighs [ ] [ NUM_MONTHS], int stateAverages [ ] ) // Pre: stateHighs[ 0..NUM_STATES-1] [ 0..NUM_MONTHS-1] assigned // Post: stateAverages[ 0..NUM_STATES-1 ] contains rounded average // high temperature for each state { int state; int month; int total; for ( state = 0 ; state < NUM_STATES; state++ ) { total = 0 ; for ( month = 0 ; month < NUM_MONTHS ; month++ ) total += stateHighs [ state ] [ month ] ; stateAverages [ state ] = int ( total / 12.0 + 0.5 ) ; } 62

63 Fall 1999CS 231063 Using typedef with arrays helps eliminate the chances of size mismatches between formal and actual parameters. FOR EXAMPLE, typedef int StateHighsType [ NUM_STATES ] [ NUM_MONTHS ] ; typedef int StateAveragesType [ NUM_STATES ] ; void findAverages( const StateHighsType stateHighs, StateAveragesType stateAverages ) {. } 63

64 Fall 1999CS 231064 Declaring Multidimensional Arrays EXAMPLE OF THREE-DIMENSIONAL ARRAY const NUM_DEPTS = 5 ; // mens, womens, childrens, electronics, furniture const NUM_MONTHS = 12 ; const NUM_STORES = 3 ; // White Marsh, Owings Mills, Towson int monthlySales [ NUM_DEPTS ] [ NUM_MONTHS ] [ NUM_STORES ] ; rows columns sheets OR USING TYPEDEF typedef int MonthlySalesType [NUM_DEPTS] [NUM_MONTHS] [NUM_STORES] ; MonthlySalesType monthlySales;

65 const int NUM_DEPTS = 5 ; // mens, womens, childrens, electronics, linens const int NUM_MONTHS = 12 ; const int NUM_STORES = 3 ; // White Marsh, Owings Mills, Towson typedef long MonthlySalesType [NUM_DEPTS] [NUM_MONTHS] [NUM_STORES] ; MonthlySalesType monthlySales; monthlySales [ 3 ][ 7 ][ 0 ] sales for electronics in August at White Marsh 12 MONTHS columns 5 DEPTS rows 3 STORES sheets 65


Download ppt "Fall 1999CS 23101 Composite Data Types. Fall 1999CS 23102 Topics to be Covered l Abstract data types l One-dimensional arrays l Two-dimensional arrays."

Similar presentations


Ads by Google