NIM: 1801382963
Kali ini saya akan menjawab Assignment #6 dari Chapter 6 Programming Language Concepts R Sebesta
Review Questions
6. What are
the advantages of user-defined enumeration types?
*User-defined
enumeration types are most useful when a data type can take one of a small,
discrete set of values, each of which have some meaning that is not a number. A
favorite example in textbooks is a type for the suit of a playing card. There
are four options: SPADE, CLUB, HEART, DIAMOND, and so we would make an
enumeration type with these four entries. The main advantages are efficiency in
storage (compared to e.g. storing these values as strings) and more readable
code.
7. In what
ways are the user-defined enumeration types of C# more reliable than those of
C++?
*Since C#
enumeration types are not coerced into integer types, as the C++ does so, it's
more reliable.
8. What are
the design issues for arrays?
*-What
types are legal for subscripts?
-Are
subscripting expressions in elemnet refrence range checked?
-When are
subscript ranges bound?
-When does
allocation take place?
-What is
the maximum number of subscripts?
-Can array
objects be initialized?
-Are any
kind of slices supported?
9. Define static, fixed stack-dynamic, stack-dynamic,
fixed heap-dynamic, and heap-dynamic arrays. What are the
advantages of each?
*Static
array is an array which the subscript ranges are statically bound and storage
allocation is static (before run-time). The advantage is efficiency (no dynamic
allocation).
Fixed
stack-dynamic array is an array which the subscript ranges are statically
bound, but the allocation is done at declaration time. The advantage is space
efficiency
Stack-dynamic
array is an array which the subscript ranges are dynamically bound and the
storage allocation is dynamic (done at run-time). The advantage is flexibility (the
size of an array need not be known until the array is to be used).
Fixed
heap-dynamic array is similar to fixed stack-dynamic, storage binding is dynamic
but fixed after allocation (i.e., binding is done when requested and storage is
allocated from heap, not stack). The advantage of fixed heap-dynamic array is
flexibility (the array’s size always fits the problem).
Heap-dynamic
array is an array which the binding of subscript ranges and storage allocation
is dynamic and can change any number of times. The advantage is flexibility
(arrays can grow or shrink during program execution).
10. What
happens when a nonexistent element of an array is referenced in Perl?
*If an
r-value is required, undef is returned. If an l-value is required, the array is
extended, then the newly created but undefined element is returned. No error is
reported.
Problem Set
6. Explain
all of the differences between Ada’s subtypes and derived types.
*Ada’s
subtype is compatible with its base type, so you can mix operands of the base
type with operands of the base type. While Ada’s derived type is a completely
separate type that has the same characteristics as its base type. We can’t mix
operands of a derived type with operands of the base type.
7. What
significant justification is there for the -> operator in C and C++?
*The only
justification for -> operator in C and C++ is writability. It is slightly
easier to write p->q than (*p).q.
8. What are all of the differences between the enumeration types of C++ and those of Java?
*In C++, an enumeration is just a set of named, integral constants. Also, C++ will implicitly convert enum values to their integral equivalent. In Java, an enumeration is more like a named instance of a class. You have the ability to customize the members available on the enumeration. Java will explicitly convert enum values to their integral equivalent.
9. The unions in C and C++ are separate from the records of those languages, rather than combined as they are in Ada. What are the advantages and disadvantages to these two choices?
*
|
Union separated from records
|
Union combined with records
|
Advantages
|
-Reduce developer
overhead (less checking)
-Goes with the C++
design (C++ is not a weak strong typing language)
|
-Support type
checking
-Goes with the Ada
design (Ada is strong typing language)
|
Disadvantages
|
-No type checking of
references
-May end with wrong
or unexpected results
|
-Increase developer
overhead
-Using more
functions to resolve type compatibility
|
10. Multidimensional
arrays can be stored in row major order, as in C++, or in column major order,
as in Fortran. Develop the access functions for both of these arrangements for
three-dimensional arrays.
*Let the
subscript ranges of the three dimensions be named min(1), min(2), min(3),
max(1), max(2), and max(3). Let the sizes of the subscript ranges be size(1),
size(2), and size(3). Assume the element size is 1.
Row Major
Order:
location(a[i,j,k]) = (address of
a[min(1),min(2),min(3)]) + ((i-min(1))*size(3) + (j-min(2)))*size(2) + (k-min(3))
Column
Major Order:
location(a[i,j,k]) = (address of
a[min(1),min(2),min(3)]) + ((k-min(3))*size(1) + (j-min(2)))*size(2) +
(i-min(1))