cj9 - defense technical information center · thuirsday -26 january 9:00-42:00 bldg 1002 tasking...
TRANSCRIPT
![Page 1: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/1.jpg)
I I li Il I I *N Ii . - ....
ADVANCED ADA WORKSHOP
Sponsored ByAda Software Engineering
Education and Training(ASEET)
DTIC TeamS ELCTEMAY 2 3 1989
Keesler Air Force Base24-27 January 1989
~CNSMATEMENT ATEleassi
(J cj9
![Page 2: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/2.jpg)
AGENDA FOR THEAda SOFTWARE ENGINEERING EDUCATION AND
TRAINING (ASEET) TEAMADVANCED Ada WORKSHOPKEESLER AFB, BILOXI, MS
JANUARY 24-27, 1989
TUESDAY -24 JANUARY
8:30-9:00 Bldg 1002 Welcoming RemarksRoom 111
General AnnouncementsCapt Roger Beauman
9:00-12:00 Software Engineering(Break at 10:15) Capt David Vega
Capt Michael SimpsonKeesler AFB
12:00-1:30 Lunch
1:30-4:30 Software Engineering(Break at 2:30j
6:30-8:00 Keesler AFB ReceptionOfficers' Club
WEDNESDAY - 25 JANIJ1APY
9:00-12:00 Bldc 1002 Generics(Break at 10: 15) Room I111 LCDR Lindy Moran
US Naval AcademyMajor Chuck En -IS171
12:00-1:30 Lunch
1:30-4:30 Generics(Break at 2:30)
6:30-11:00 Bldg 1002 Hands-on Project(Optional) Room 148 Lt Dan O'Donnell
Lt Don PrinciottaLt Kevin McGintyKeesler AFB Instructor,
![Page 3: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/3.jpg)
THUIRSDAY -26 JANUARY
9:00-42:00 Bldg 1002 Tasking(Break at 10:15) Room 111 Capt David CookUSAF Academy
12:00-1:30 Lunch
1-30-4:30 Bldg 1002 Methodologies for Reuse
(Break at 2:30) Room 111 Capt Eugene BingueOffutt AFB, Nebraska
FRIDAY -27 JANUARY
9:00-12:00 Bldg 1002 Exceptions
(Break at 10:15) Room 111 MajorPat LawlisAFIT
12:00 - End of Workshop
tI-I
![Page 4: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/4.jpg)
z
z~ 00z Ll
E- 4
ZOno
!~1
i, m '--.-- - - -, m ,cmmm m mm m m m m m -'- - -
![Page 5: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/5.jpg)
C/)aci) UE
0 0 Li
Q) 0
L-
![Page 6: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/6.jpg)
m0a.
Y) n
C)0 wLC'Q)
Q- 0
-j
0)) En- V)
C c 0-- W-0 0 0
00j 0C' z0 - C3- I~ o 0
060
![Page 7: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/7.jpg)
c'Ic
CI)
CTC
L.n
OD C) C
![Page 8: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/8.jpg)
C
c Lii 0) iUa)
U)
(C) c 0< C)CNr
0 0)
C0 0 C:CI)N
4-')00
rCC)
a) -
0 0
0)l
Eo1 c
n r)~ N 04CN NCN - co -o-t
![Page 9: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/9.jpg)
U
C,, E
000n
mct7
CTQ)
![Page 10: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/10.jpg)
4-j
wE Q)
4-
4U)U-4-- (-)
C ) c - :
0. LLj a0UQ)C -0Cr) - .U--'Q
0 cj)CO - f: (1)0NOODQ U
w 0W C)0U xUa) H-
m0 m
_ L LI
![Page 11: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/11.jpg)
0'00( -0
E
-n CD
0 ELO z
0 (~0
c-c
![Page 12: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/12.jpg)
Lo ~z
z >0 <U
C7,L
0 m
c 0- LU -
CD E E
U 0 L
Z 0
c C CD __ _ -cs .0 ) m~ : -9
LL 04 -
0'
<
- < 0LnZ Z M LU
i < Z z i
z0 <0
=O c
![Page 13: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/13.jpg)
Et0
04- 0
<9 <I 0 N
0 :E0
D 02 0> 0 f)
0n Et 00
00a- C: 4-IC
0 0
o c
![Page 14: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/14.jpg)
Us(Inef
USER SPPLIETOOLS
LoaderComman
![Page 15: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/15.jpg)
-4-1 n >
a,0I 0 0
E -j--j00 -
mI 0 0 - r~, 0 -4-,
4- n0 0 u
oLj w11 1!EL~ o zL
0 0J CD4- 4-j L
E~0 0
Q)) 0
UCDoo~' cn~ 0
0 Q))
a,~E 0
Q) E
![Page 16: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/16.jpg)
V),
-4-
Os
![Page 17: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/17.jpg)
f-I- - I- ~NIIi) I I .'=-~---- I
CII - 'Iii ~, I.-
00
I ~JI ~J4~)
S o0 0V -4-, 0
C, LL. C a~ C
V 0C, -'-I0 U (~, C-, L.0 C L.-4-, -
a Ci~)m /
-4-,
oL.. p9~f\
0I.-oo
0.a
![Page 18: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/18.jpg)
Eoc
0 5 ,U
C -:
S o 0C) -
0 I0
0010
0 -0
00
![Page 19: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/19.jpg)
00
Co )4-)-
0
0Cm~
0 --j00
00
0-0V) 00
>% 0
![Page 20: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/20.jpg)
C:
SE.a, <
E E 0
0,. Zo LL4cy) o a-
C)i -0 : 2O
_ _ _ LC.
L. 0S0 0 )CEC
Lii
0 ~
![Page 21: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/21.jpg)
LU )Q
V) CD L) z
Q) 4-1~
nn _:
0 E~E
0D 0- D0(-a C/'
L- wE WCo)
o 00
a-~
![Page 22: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/22.jpg)
00
L-40j
Do 0-0
CI) On
0~ 3o-~ -4-0 n~-0
0n 0
0 -
![Page 23: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/23.jpg)
~4-1
0 Li Lii
o0CU) Mz L
C)
0 C)
0 -4
0*
C)CL
![Page 24: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/24.jpg)
0 ob
0
00
4-)c
0Z 0 t %LLJ00 V<
0~~c -c~) 0< )
__ 0 E cr- I
~~~ :2 0>- 0~OO O*- C/ L."z
< <,
![Page 25: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/25.jpg)
CD 0
4-j-
0 + C):2 .
r-D LLi
-JW W > Li.z L.L
LLI D < V **D
CD <Z
o (-DII
- LJ 0.
![Page 26: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/26.jpg)
_00UW)
U) -
r40 0
0) 0__ C0 U)
C) 0f CD
JLL 0Q)
_00 00
C)C
00 L
0 Cr C
![Page 27: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/27.jpg)
a) Q)EE
E0 1-
0 cn~~-
OLi
000. - QQ
00 0 /
![Page 28: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/28.jpg)
0HLi
LLICIC)
Y)f4) L
p Lr)
ZD0 0
DWLJ 00 n
<0 <-<
C)= >-J C)
< :3 Q)
> Z -
![Page 29: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/29.jpg)
LLLi
- D
0 cD
Li : 0 <LI
n - 01 D
- < - 0)0>0- -- - y
Lj 0
00
00 LLJ 7 I
0 ox <
LiJ Li
![Page 30: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/30.jpg)
(I))
E ~NOE
0>
![Page 31: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/31.jpg)
0a _0
C)U) a)
0 +a)
(44- +N
S 0 CN *
CO T-
-Q Zo c 0 CC/)u H
V4 j 0 o *
u C') \-- U ~
n <E u
![Page 32: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/32.jpg)
j
EDj LijA
VLLLJ
* I 1 LL...L
S- ur) O6.00omi< 0
.. 0 LU0
oo Ln zcLL1 L0w
,-00 0-00w<0 Q) 0
V) 0 U ~ ~ -4-.4.I4JO
L.JLLj 0 Ld D,
![Page 33: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/33.jpg)
00
zo A
co<
C/W 00-4-,0
0
CL <0 0 0
H)L N N N
od 0 0 0 0
0 0 <0<0<0:<01)
m0 0 0 0 z z 0z~
-C00 -0
![Page 34: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/34.jpg)
4I) 8n
0 V C) -l' -
-0 C- w:LJ VQ)00 0 /,0- H- -
U) 0Q 0(F) I L D
Mv. 0 -- c-H 0w CWLZ
0 c 0 0 -~ 0
0 LL Q
o oD o0 o m(
CL
(1 Q) C)0) 0
~C
![Page 35: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/35.jpg)
I 0)I0
L i 7 1 0liiJ
0 :
LII
I- a)o =
![Page 36: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/36.jpg)
0 Q) E00
Ua) E
00 z.
>I v 0LEU)00~ -0 E . Qj
a) 0 L-E~ z~~ LIEi44J) L- c Z-OH.-
0 :D 0L0F LL- ZI
0 0 U) OQ) CD Z
U) >)', Q) 0
c() -0 E ) o
I) I
C:
![Page 37: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/37.jpg)
cnnC C
C) 06LijLU
4- 0 LJ L
od LJUJL
1%(1)
00
![Page 38: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/38.jpg)
.0
LW0
00
c
W 0
V0.
![Page 39: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/39.jpg)
CL
00
I..I
CL z
0% z
Li0 Wd
o 0
*I E
NI-
![Page 40: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/40.jpg)
Cl)Q) 0D 0 0
0- L-
0 L- L
>~ CD
D 6D
0 1 LCI> CD)
4-j C1,4
DO
) 0 CDLi
0 0' ) LID -) -
Q) 0r)= I-1X a
![Page 41: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/41.jpg)
(.0 0
(D 0
Q-H-
-4-) -f (/)Cf-AA0. L
WLJC
0 I_j LO
![Page 42: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/42.jpg)
010l000
Q0T0-00
. 00
0: 00
0-) 0 C)
CD .NjC:)0qT-CD4--,
0. CCf
C)C
Q)~U Q) L. )o -I-5,I
I jC) D L
![Page 43: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/43.jpg)
(I) (.Ij
0- 0<
0 E0 -.J VZD(I
00
_ <<
L- vr~V 0 n'- -
~ -00 yU) W c-
o: >~C) ~ cn _' 3 r
Q ) Q- __Li w
4w 0)IIIC/)
![Page 44: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/44.jpg)
LU
U).
4-j
01
U)Q00 E
![Page 45: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/45.jpg)
Uu
C-)
CL)
U) -4--'
oc00
Lx
![Page 46: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/46.jpg)
41 0
N *CO)
-~ .4-10
o oQ) c;
c: E0 -4--,-
C!) _0 L- z
0n 6-4- -4- 4-
o0C; LL
CL) Li '4-z
cnU Q) U)-
_ a_
![Page 47: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/47.jpg)
V NU) UQ)
0 II
0~0O.-o 6
V)l
-4--, O U4- 1
CD
-c: - z~ Z -. llLLLL.
LU z LU -
oI Q) 0 Q)a- 0
![Page 48: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/48.jpg)
C >
Q)
ca U
QLQ a 6-%-
c
2 0cu
H0ca.~
E4J0U
![Page 49: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/49.jpg)
Q) 04,0 aD
C-4La 0
V)
V) 0--K () 0 CTC
L. U 0I I _I
CD C)
0o 0
LIC) Lff
=D=
0C-CD
-40-j 4-
![Page 50: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/50.jpg)
Q) U)
0
L -
QCQ)
LJ<L.l ,
L. L- 0 <:'
00Q) CD
_n 0
W~ QU) Ov'
F- L) (j) Ct) 0 Mw
0iT _-G' 3
z) Q) cQ C
~~4- >L '%>
![Page 51: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/51.jpg)
< C,
)- _)
zz00
C)/LU.
Col
DD * a
U~ m L
LLUJ0 0
L
![Page 52: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/52.jpg)
Ld
00
& cT0 0U 1 HI
0 Z-J
~~0
11.0'H-
-I u I1
00.<IL~ zS
0D L C)- > L i>\ >% >N
Q)
![Page 53: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/53.jpg)
LUJ
C-)
0(0*-% C
A
0) 0
UC(D(DWD>I- ~ NIZDH
_n n '-->
zo Z~r NCN
E E- cr ~UHZH 0~ 000 c
Lz 0>- >->.>2
nrDH
![Page 54: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/54.jpg)
-~ >II
&00t
-o
4)) -Z
"a LiJ z
LLi < Z LOii
U3 -M
Z~r ><-><- D -
<~~ <L 0. <.j
LU y -Y Li
LU LU .L
o LU <mo
4-1 4a'4-K .Hz
![Page 55: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/55.jpg)
LL
A uL 00
L- CD L
JK
L))L
Cf 0
< ~~
CD>0- LL- LL L
WUJi JQ0>>>
CLC)00z- z
Q,-Q
![Page 56: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/56.jpg)
0
0A
L.L
LLJ o
a A -
U)I
C)L f) L,
Cl) m1
C! C/') *LJL
0L 0: LII) : L
Q)J :D' LLDDm LL
CW Z)LLJ >j
LU ~ 0 DDry D
Zn
![Page 57: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/57.jpg)
z0 0<LL
G) C)
Cl) GO
0 [he -0 o :<IJL Q
Q)C _j Ih
cliZZZ<'-00 0 < a
u ~ ~ j C) A
Q) 0z11 AH- oLJ L )1
![Page 58: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/58.jpg)
< 0 UO
UJ i
Z Z Lji<
H< <
c 0
0 0J
a)<
00 W -o
![Page 59: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/59.jpg)
* _____Ila
Ec
0 0 -o44- ~0 -4-J -
Ct) Li N 0 ~C)0 0 CC 0
(~) 0- -4-,
00 _
-U C 0-D
>4- 0, -
![Page 60: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/60.jpg)
C
N
U) o A 44-
-~Li
-, L..j o I<a,) **4 * it
L
V) L) o0 LUJ
Q) x~ 0 L_- LK LJ<L LL<L
Q) <*C~~ Z<C) a -D-f
0WLJW >% >N C4-ja~a -4-
![Page 61: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/61.jpg)
Cl) 0
-om
0()
4-j E
G) ,~JLu Li L
CL LiJ
(~) 0 4u-<2 z LiJ D)7D L
o<
![Page 62: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/62.jpg)
CO)
0~0Q) I-
uJj
Ul) 0 H- C
fi Cl) f
Q)) 0*> -L
ril
![Page 63: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/63.jpg)
I- E
4--j4-
LOL
-4-JLLi
C7)
C) c4V)
Cl')LC)J
00L~L)
0 0Z
C: r L.L Qo
Q) 0 )
Cn o >~
no,
![Page 64: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/64.jpg)
0 a a
4 0
M L- Lm
LUJ
M MDs- zL DLI:
0 :LLJ: Z:3 DLD
.LU>LJ L L>
o M ~ U. mfV0m
0a <1 ) >~O-2 L0 C
U) LIJL/) U
![Page 65: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/65.jpg)
--4 -1
:2
V) ry L.LJ
or, -2 wk:
2D
U]'. D
WQ~D <.L
C!C) 2)L X>,~ 0~
10 0 0
0~
C)Q
![Page 66: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/66.jpg)
Lj m
4 -d E
-4-,-
4-LU Ljd
IN i0E I- D Z LJd
LO< o -jL
-- 0- 2; U1
U) 0-H LU LL / V
-JIV 0 L
LU cy 0~~o c
Q .(,
a - I z)
0 o
![Page 67: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/67.jpg)
C),
UJ 0
ZLI
~- Z-0 Z
o LI
Li LI
CL -~ 6
0o LI-0 L. E p ) LL-U LJ
~Ld -J Li u lLI7
ui LI1oC)C
o l o0QDZMD00
![Page 68: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/68.jpg)
E:4-
* ( Er ~ LJ CN :'-
< < **J0
XXL L>-<W~ <i 00n x
-U o zUlUJ V) <* D*
< < 0 o) (I .X H
LU _
4 JVo DL) --33:.
![Page 69: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/69.jpg)
(j*) 0
La 0
A
z < L><< Z 0
L U- X .w
0- 0 0 -0 LICg0 La :
0~* 0 0 x
_
OL'LJi
o U 0 z~ or- z U')
< L) La'.<-X X, Xw zz)
>- z,1 mfL(-03 X - LLJ W
o c 0LL
< xEz-j L< U ) a0 << <)~,U) in 2z U,0E/ ) 0 00U
V)~0 a -0V)V
![Page 70: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/70.jpg)
0 0 -
zL
AU~~
0-C, LO
o o0li~zcz
Z~ ~ Z C y-D I
z z c0..l L20L.(
Vl ul Z< -0 L.
0 2I CoI -0IZ Q) LJ LLJCY Z
![Page 71: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/71.jpg)
0-~ 0
U)
oo
4-1I
Ca) .9)
C01- 9-
0 0 0c Q-Cy
_j 000~)) C C -
C1 . f Q
L0 -Wi L. C
z ) z >QQ)- .701 )0C)C -
i w Q) I
![Page 72: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/72.jpg)
0
> 0J_0 4-j
Q)(~
004-1J
Q4J 0
W0 rr:D 010:D 0
I 0
![Page 73: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/73.jpg)
4-j
-1
00-+' Cc U U
cn o 0L
z- u n
I<-<
![Page 74: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/74.jpg)
zz
zo
U) II)
cn
0
LU
z IL
zI
![Page 75: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/75.jpg)
00 0 0L.Z Z Z z
20 2
C-,
z Ck 0
:D w
z
z D~ULu 030 L&J
o~ =ZCr) zLm
LL-Q0on
HzU)Z Q I
atw
![Page 76: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/76.jpg)
0
LLJ
LL,
7- -z
0> L0
Q___7)___J
C:- L 0 _L
oloc0 0
a m o0
00
![Page 77: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/77.jpg)
U*:z C)
Q) -- Q ) :3,
E 0n
0 0N
0CC
0 -0
![Page 78: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/78.jpg)
-J0
C/2~ 00 0~o-E -j
c LLz CE &i- C. c:
LLI X.
0 ) O C LLIU) XCJu
-j 0 0 z Sc
-Coz Z
>..J -oLZ-
Az-z )-zaz
![Page 79: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/79.jpg)
- -1- ---- ---- ----
00
CfCO
00nGO L,) (D0
I z 4LJ I-::tJ iQI
0 D-
0) 0 Z3zV) 0
L D Q)U~L 0
0-0 0 0 - -= (): 0 c 1
:3 C; CW- 4--L V
00n:
![Page 80: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/80.jpg)
0
Co0 0 r
zQ
C) 0 0 CLz -LLJ
![Page 81: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/81.jpg)
V 0
UQ)E cnc
-4-j c
<000 Co
L1 0
![Page 82: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/82.jpg)
rrALSr
LiL :4:D
0r
ry 0
::7 -
U)- 0- 0
0Y 110)
0 *.0? 4 -Li~ Q
![Page 83: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/83.jpg)
uLJ
D
3w
CD
OC
0 0r (
OH- 0
40 ~ 4 X 07~cL 0
![Page 84: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/84.jpg)
4- -4-j *I
LLLJ
WL L)LJ
I C:
CI)i U) n0 0-i-i
C0 0-- * 44o -1 ) c
![Page 85: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/85.jpg)
LUI
d. C.)
00
-4-,
U-) u. -j
OOJH 4)
-j 0 a0) 2L LJ
CL1 c& LU<HJ L)Lx LC). LU- 71 mE
0 LUI II ',1 ~ Ez~* .- LL-Q)
LULlZ Lz.J c -J, L4 0
Li- V) V)- O
-o v0 -LZ -- a~ aH cL cL Ha
~~~L Q)aa ~ ~ i C~.D- - -
![Page 86: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/86.jpg)
LU -
_ 0
LJ (I)
0 LL4 0
>) o- 0
1 o ul >J-- Li~
z Li
Co)V 0 w6c
a) 0(/ :2 C: 0
u~ 0)nz -a coaH Z- *aZ3i L i o) J a- a-
![Page 87: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/87.jpg)
:2 0 LZ 0 :2 -
F9.Lu U -j r0L .J.-I orf LUjLI
~ L U L LiU4.
0 0U-
N LUJ H 0
00 _ )11L 0H 0 CD a 0..
LU 0i 1. o I 11HJ0 j 0 - 0 ..** - :i~
C%4-0 C :: V 3 0 0
![Page 88: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/88.jpg)
4-jW
> - 0 w
()Z0 ~ LLlD
w <Z> L.
LLJ C) L) u u
< <<00 o
0aC,
![Page 89: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/89.jpg)
* a
0
cL 0 t
0
0L LUL
C. ) Z
L:Dt
a- DDXC0 CN1. Z
0- "U 0 0 0U
JQ~D L-I -aO5 3
L_ a-O _C
CLD
![Page 90: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/90.jpg)
H-7Li -
:D r
0 0 . I (
<00
0 0--t-
z~CL o>> H
0 >,
![Page 91: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/91.jpg)
LUJ LUi
L.Lj LI
A 1n W -L
-H-
- U)0 _jtV -L
4-j__ > L- -)
LiJ~ c
![Page 92: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/92.jpg)
Li-
0<
.1-II
~)
a- <
a- O-Q: . C) :D
LCiW LLJ C
LI LJ C)N..4
a- <.z - i I&L-J
:2 < a 3<000 V
1... C***_*
0L.. aa :D:L- L az u D z -o
![Page 93: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/93.jpg)
z:2 z
-j
:3 LUJ
00
>C
*~LLU
LUI
zH - LUH-LI LL
0LIJ < a.U lI
LJ
0- 0-
![Page 94: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/94.jpg)
uJLii
z
z0C.)
LLLi
CD0L
0V o
Li LLJU
(1) - LLJ Z
uLJ OL70 <
H-J LU 1 J
LUi
00
C z
![Page 95: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/95.jpg)
00
7Cl)> 4E
000
C) _00
C)C
U))
![Page 96: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/96.jpg)
44
OC:
-o
0-)CD'
![Page 97: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/97.jpg)
C,) 4-.
0 00- E -
0 -0u-hC: 0 4--(C: (n
![Page 98: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/98.jpg)
a:-0= o
z~~ Lucjc
0 _
0 zC:X C
LU LLZ QC.. 0DLUE jw a**
uLJ r
![Page 99: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/99.jpg)
-c
E
cn w
m Ew
0 0
LiJD W ) * Q)0 'Z A-Z t
xQ
![Page 100: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/100.jpg)
Q)
0 0)L
:3 Q
o ~~. C:: au
(D C 0 J0 L
XOM~ QU, 0
4) V u 9 9-
02 0C na) 'IQ) C)00
CC x _3: o 0
![Page 101: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/101.jpg)
ILd
z 0
o go00u
(n I k : I- Y
0 60
j-D~0 L
LL D0 E4oLJ:D: LI-
C L0
![Page 102: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/102.jpg)
-4-
00
C,
0 c
CL 0
00
xuLJ
![Page 103: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/103.jpg)
00
z-
0 0L)
0 c0
o >-0Q) w z~ 2LLCD
![Page 104: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/104.jpg)
00
0 00
'-4j
0 o 0N
0 0
0 0
0 0o NQ0Zo.
![Page 105: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/105.jpg)
C)
C/C2
W<
CDD(f)3 L LVZ0
0 0 -1 0
< CflZ(/LClCo
.4w) It
0 () 3 - <0~
U 0 c 00~
L(L
![Page 106: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/106.jpg)
iL
00
0 )
00
![Page 107: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/107.jpg)
Q0
C,) ONu24 - _
4-)
4-j~
- C!)
0 Li -
o 0 LIx00F
v/) 0*<
xH0
m Wi
![Page 108: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/108.jpg)
LLLi
LUJLL- 1
01
0 A
Ii'L A0 Z
o ~JLL <[LI
LLJ LJ < L
UU
![Page 109: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/109.jpg)
0 C
z
~LL
0 0 C
-z tz Qz
0- C uj.
4..= Ct )ZC)LU Z*< L 0
1
0 ~ 0
V)VV) _.L LL i
![Page 110: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/110.jpg)
-t 0
CiCQ
Z LLJ 0
4 )- 7 C )
Li _j
![Page 111: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/111.jpg)
Cl)N
01 ZCN D u-i
<~ <
> >cNI ZI Z<I LJ t
0 WLL~l Z l -
<LL~cn,
![Page 112: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/112.jpg)
C)
0
0
M <0-4-- 0
a) C: 4-
(10 Li 0
UZ-j -
4jo >1 0- w1L
0 0
0 <
Oj0> -Q0 C.
II
![Page 113: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/113.jpg)
z
41) 00 0
00
0 0 0-S1V 0 0U'-0 a0
in0 o 0E4-
(/) 4-
oj Af 0
o- C) nLZ c
LLUL
![Page 114: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/114.jpg)
0
-0
Cl)
0 CV)
) L ii Q
0,~ rjCDco
o L L Lfl
~~C L..Li
U C)LJDC 0 > -0 ~JO
L
0L. *C.<
0 ~
![Page 115: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/115.jpg)
4-
0
C QDC) +0 T
0 * /) Q
00LLJ CO
C L) J :3 00 i 0 OD W
:- zc -o)(1I xa_7Ez LLo L2z0w ~H DoD <r
C) z .LJLcn r?" ::
(p <z
![Page 116: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/116.jpg)
* WI)>1
<I0<0
00 CD0<
00
01<
CD10
4-) -jJ U I~-J< LLJ0M0)LJ
ZIDZ
I C -)O'I 0 0 1 1iLi,&~w D
![Page 117: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/117.jpg)
CO* -
CD--
o/) <J ~0~ ~ 00A4-j .2 A<C 2iL-
U f LiHl- ZZCN/)ALL C
L- AI02 IQLL II iiz>L
F-H CD W
LLJU H-CLU aLLJW :D D (D:
0 Q0-~Q0
![Page 118: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/118.jpg)
"e,
0 1 Ul)4 0
0
L "1 00 4-1
0n 7&O D 00I
0 0 00N0 4-
0 0 jF-
![Page 119: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/119.jpg)
CLC
LLI.
M C/ 0wOT~~ 0-
:mC
0
-b Q
0 obD ED 0-
C ~ ~ L LJJV)Vv)C) Cu,- 0 c
-C 0
0~LL
![Page 120: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/120.jpg)
c
2) ol U)L-mLoU%
LL )uzof)
z ::
42d). 0 2 .-
a -
C,,: crcLU(I)z
L LLJ
U) z C
CP Q) 000 z ca - OCOC -4-,1 a-
--N~ >s L . 0 0
o 4-1, c
![Page 121: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/121.jpg)
LU Z
UV)
-LJ 0 ~ Z
LU >
:D ZD m
0 0
L.J
L)o 0 - -0 - VHL.
CL -0
![Page 122: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/122.jpg)
M LJ
zmnD
CI) m. 0)W21D
0LLJ M
Vl) y Cl= )
A LLI -O 0f) WL
m (D J ZD)000 14 _j(1C) 0 . Q L
)- c0 -4--' a~.-Q ~ >>% L. =iL C% -
cl a)
![Page 123: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/123.jpg)
-
~~4LJ
:2 :D::DzUI)w ~ 0j 0D
U, D
-n -m 0J =>
:2 >- IID
U,- Ir
0; (I)LUozL '4- :2
(D D~L)U, ~
0 ob L-~ zW~ :3 0) UJ 0
1-0 C x () o)
![Page 124: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/124.jpg)
by
C..dr Lindy Moran Mai Chuck EngleUSNA SEI
Part of theAdvanced Ada Workshop
sponsored by theI Ada Software Engineering Education
J. & Training Team (ASEET)
![Page 125: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/125.jpg)
Acknowledge ment:
Much of the content of this tutorial comes froman earlier ASEET Advanced Ada Workshop.tutorial on generics presented by Mr. JohnBailey. Many thanks are due for the interestingexamples and ideas!
![Page 126: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/126.jpg)
GENERICS
0 Why program at all?
0 Why program generically?
0 What does generics provide?
0 How do you write a generic unit?
l Parameterless Generics
0l Parameterized Generics
0l Value and Object Parameters
E Type Parameters
E Subprogram Parameters
E What are the Cons of generics?
El What are the Pros of generics?
El What are the unresolved issues?
E How do you teach generics?
![Page 127: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/127.jpg)
Why p.ogram at all?
0 Reusability - a programmed solutioncan be used over and over
0 Reliability - program can be tested andverified to ensure correct results forsubsequent runs
U Readability - program formalizes humansolution and represents it in moreabstract readable form
D Maintainability - making a change toa program ensures that the change isconsistently applied to all problemsolutions
![Page 128: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/128.jpg)
Why program generically?
L Reusability - similar program unitsneeded but different enough topreclude simply entering differingvalues at run time
[0 Reliability - generic unit once testedand verified does not need to be retestedfor each new use or "instantiation"
0 Readability - using generic unit allowsextraction of the "essence" of the uniteliminating application specific detailsand produces a very uncluttered readableunit
0 Maintainability - a change made to theunit applies to all uses of the unit
0 Programming in the large - facilitatesconcentration on higher layers ofabstraction by providing reusableconceptual building blocks
![Page 129: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/129.jpg)
b0
bfi
~cs.
![Page 130: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/130.jpg)
.. .. ....
Qu
MrI
![Page 131: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/131.jpg)
What does generics provide?
" Templates for conceptual buildingblocks
" Remove problem specifics => greaterclarity and understandability ofcode
" Can add levels of abstraction
" Reduces source code size => codemore readable and maintainable
* Facilitates REUSE of software
* Elegant complement to strong typin.E
* Mechanism for doing 1,"0
![Page 132: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/132.jpg)
EQc(a(
17Mc-4--D ..........
uw'c) ~ 1~L6FTTQI~~
0L UW % l~-LS~ C cnmW( r to-~
mm
II~E.So ol inIQ )c~c c
a)CZ C) D
![Page 133: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/133.jpg)
b0ct
.w... ...
0 00
cci CZ
o C))
0 o
Lm 6
![Page 134: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/134.jpg)
CtCU
Fmon
Qt-~ ~uc o
![Page 135: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/135.jpg)
Creating a 'Need" for Generics
- A Simple Example -
0 Long Integers Problem
Ii Problem is to be able to add andmultiply non-negative integers ofunlimited digits
[I Simple problem to understand
0Z Creates "cognitive dissonance and"need" in student to solve problem
D Need for generic unbounded stackis relatively obvic,^:s
D Illustrates layers of abstraction
7 Long Integer - Top LevelZ-] Original level of student focus
0 Stack - Bottom Level0I Second level of student focus
![Page 136: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/136.jpg)
Conceptual Building Blocks.
/a
Pacag I ____________
![Page 137: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/137.jpg)
Long Integers Problem
An Example:
q59S73 (Ll)2S75 L2
-!3' - - -9'
Li 3 - / I , I .- 1
Li- 'S - -i - q i
L L- -i58 6 3. S" S u m
0 .
Carry Carrv
![Page 138: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/138.jpg)
J with Long Integer_Stack;package Long Integers is
type LongInteger is private;
f function MakeLongInteger(Numeral : in string) return LongInteger;
function "+" (First_Long_Integer, SecondLongInteger : LongInteger)return Long Integer;
function "*"(N : Natural; ALong Integer : LongInteger)return LongInteger;
function "*"(First_LongInteger, SecondLongInteger Long_Integer)return LongInteger;
procedure Put(ALongInteger : in LongInteger);
privatetype LongInteger is new LongIntegerStack.Stack;
end Long Integers;
![Page 139: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/139.jpg)
th Text_10;
ckage body Long_Integers is
use LongInteger_-Stack;
function Make_Long_Integer(Numeral :in string) return LongInt*eger is
L :LongInteger;begin
Clear (L);for Position in Nuzneral first. .Numeral'last loop
Push(characterpos(Numteral (Position)) -ch-aracter'pos ('') ,L);
end loop;return L;
end MakeLong_Integer;
function "1+" (FirstLongInteger, Second_LongInteger Lon--_Integer)
return Long_Integer isReversedSum, Sum Long_Integer;Carry :integer 0;SingleColumnSum integer :=0;Li LongInteger First_Long_Integer;L2 :LongInteger Second_Long_Integer;
begin
Clear (ReversedSumf);Clear (Sum) ;
while (NOT Is -Empty(Ll)) and (NOT Is_Empty(L2)) loop
SingleColumlSum :=TopOf(Ll) - TopOf(L2) +Carry;
Push(SingleColumnSum mod l0,Rever~sedSufl);Carry :=(SingleColumnSum - (SingleColumlSum mod 10,) 102-;
Pop (Li)Pop(L2);
end loop;
while NOT Is_-Empty(Li) loopSingleColunsum: TopOf(L1l) Carry;Push(SingleColumnSum nod J.C,ReversedSur'lCarry : (SingleColumflSur - (SingleColur.Sumno, !nC", 10 ;1
Pop (Li)end Loop"
while NOT I-S_Emzty(L2) loopSingleColunnSum.: Top O±1L2.) - carry;Push(Sing-leolumflSun mod 10,ReversedSum);
Carry := (SingleColumflSum - (SincleColunnSum mod 10)' 1-I;
Pop (L2);end loop;
if Carry = 1 thenPush (3 ,ReversedSut);
end if;
while NOT Is_Empty(ReverSedSumh) loopPush (Top 'Of (RevercedSum) ,Sum);Pop (ReversedSum);
end loop;
return Sum;end 1+"1;
![Page 140: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/140.jpg)
for Count in 1..N loopResult := Result + ALongInteger;
end loop;return Result;
end "*It;
function "*"(First LongInteger, Second_Long_Integer Long_Integer)return Long_Integer isLi : LongInteger := FirstLongInteger;L2 : LongInteger Second_LongInteger;Result LongInteger := MakeLong Integer("0") ;Digit integer;Position : integer := 0;Temp : Long_Integer;
beginwhile NOT IsErpty(Ll) loop
Digit :- Top_Of(Ll);Pop(Ll) ;Position := Position + 1;Temp := Digit * L2;for NumberOfTrailingZeros in 2..Position loop
Push(0,Temp);end loop;Result := Result + Temp;
end loop;return Result;
end "11* ;
procedure Put(ALongInteger : in LongInteger) isTemp, Temp2 : LongInteger;
beginTemp := A_Long_Integer;
-- reverse contents of Temp into Temp2while NOT IsEzpty(Temp) loop
Push(Top Of(Temp),Temp2);Pop(Temp);
end loop;
-- print contents of Temp2 on screenwhile NOT IsEmpty(Temp2) loop
Tet iO.Put(integerfimaae(Top_0fCTemz i (Pop (Temp2) ;
end loop;end Put;
and Long_Integers;
![Page 141: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/141.jpg)
:h Long Integers, Text_-10; use LongIntegers, Text_10;Dcedure Uselongintegers isA, B :Long_Int-eger;;inA Make_-Long_Integer("25012345"1);B MakeLong_Integer("22334455"1);Put (A * B);New Line;PutT2*A);tUseLonglntegers;
![Page 142: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/142.jpg)
generictype Item is private;
package StackSequentialUnbounded_UnmanagedNoniterator is
type Stack is limited private;
procedure Copy (FromTheStack : in Stack;To The Stack : in out Stack);
procedure Clear (The_Stack : in out Stack);procedure Push (TheItem : in Item;
On The Stack : in out Stack);procedure Pop (The_Stack : in out Stack);
function IsEqual (Left : in Stack;Right : in Stack) return Boolean;
function DepthOf (TheStack : in Stack) return Natural;function Is_Empty (The Stack : in Stack) return Boolean;function TopOf (TheStack : in Stack) return Item;
Overflow : exception;Underflow z exception;
privatetype Node;type Stack is access Node;
end StackSequentialUnboundedUnmanagedNoniterator;
Taken from Software Components with Ada by Grady Booch]
![Page 143: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/143.jpg)
th StackSequential UnboundedUnmanagedNoniterator;ckage LongInteger_Stack is newStackSequentialUnboundedUnmanagedNoniterator(Item=>integer);
![Page 144: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/144.jpg)
Traditional Programming
Algorithms, Objects, Resources-- intermixed with --
Problem specifics
f/ ,
Problem Specifics t s/ r
0, /
![Page 145: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/145.jpg)
procedure Swap(X,Y : in out integer) isTemp : integer :=X;
beginX:=Y;
Y := Temp:end;
procedure Swap(X,Y: in out character) isTemp : character :X;
beginX:=Y;
Y Temp;end;
procedure Swap(X,Y in out float) isTemp -float :.
beginX'-Y;Y Temp"
end;
type AnArray is array(i..l 0) of integer;
procedure Swap(X,Y : in out AnArray) isTemp : AnArray X;
beginX:=Y;
Y := Temp;end;
![Page 146: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/146.jpg)
Generic Programming
Algorithms, Objects, Resources
separated from
Problem specifics
) Objects / rneI SResources b c
Algorithms / p e
/SP(
![Page 147: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/147.jpg)
Syntax and Semantics
generic.. . generic formal paameters...subprogram or package specification;
subprogram or package body
![Page 148: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/148.jpg)
A Generic Swap Procedure
generictype Element is private;
procedure Swap(X,Y: in out Element);
procedure Swap(X,Y : in out Element) isTemp: constant Element := X;
begin
Y := Temp;end Swap;
![Page 149: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/149.jpg)
N"O!! Generic -unt not c1aLe~ua~
Exlpl-icitInstantiation
*Creates callable/usable U-m-it
with Swap:procedure Examnple is
procedure CharSwap is new Swapchaacter):
procedure IntSwap is new Swap (Element= >integer);
begin
CharSwfap (OneLe tte r, Ano the rLe tte r);IntSwap(Anlntegrer, AnotherInteger)l;
end Example;
![Page 150: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/150.jpg)
Overloading Instance Names
with Swap;procedure SwapThings is
X : integer :-5;
Y :integer :-10;
A character ''B character ''
procedure Exchange is new Swap (characterA):procedure Exchange is new Swap( integer)
beginExchange(XY);Exchange(A ,B);
end:
![Page 151: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/151.jpg)
Generic UnitsAn Analogy
Declaration Instantiation
Data Object Type Declaration Object Declaration
type Age 2 rage 0. 100 Old4ge.• Age;•
Generic Unit. Generic Declaration Generic Instantiation
"5 1 1-,
e 117
![Page 152: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/152.jpg)
Explicit Instantiation
generictype Element is < >;
procedure Swap (XY in out Element);procedure Swap (X,Y in out Element) is
Temp : Element := X;begin
X :=Y;Y Temp;
end;
with Swap;procedure SwapThings is
X integer 5,Y integer 10;A character 'A';B character B;
beginSwaD(X,Y); -- Whfy NOT?'
Swap(A,D); -- param yes difnfer after ,Iend SwapThings;
E Requirement to EXPLICITLY instantiatesimplifies compilation of units
0 The explicit instantiation provides
we11-defined Ilcus for reporting errors• *"{.-- ,' ~ ~ ~ r Tv:* - i-- .*. ¢ . r, ,-- , 1 4'r " .-i nc
![Page 153: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/153.jpg)
Explicit instantiation (contlnuec ;)
C Permits independent checking of genericunits and generic instant~ations
0 Resolves ambiguity of referen ce that,might otherwise occur
11 Provides better awareness of instancesand: improves reliabilitLy ari.-, readabil it-y
procedure Swapihiings isX integer 5;Y integer I0A character A
5characte-
end Swap,
beginSwvap(X,Y); -- generic S-wap usedS-wYap(A,ED); -- local Swap masks generic one
end SwapThings:
C What Abcut recursiv.e ca1N in the wma~r"
![Page 154: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/154.jpg)
'Cloning Things
-C-
~ :t~.
'.~>N. ~..
' ' '' ~ - '
~-'-'- -'- -
___ '-4-- -'
____ ~ ____
- - 4-- . - . -,____________ .4- - p p p -~
~
~.*%... .*.**.*%*I *~* p*%.%*%*%...~~'' ~p*%*%*%*%*%*'. %'
s.%**.**.**,**..*.**,**.**.*p.**.**.p*.**.~ ~p. ~ ~ ~.
~
"p.., *.*%**.**.*%*%*%**.** *..*..%.%.%.%*'**.*%**~*%**~*4-.........................~
.**.*.*.,.****%*.***.,.%* h... .%**.**%*%*.*%*%*.*.. ~*.%*% .**.**.%****.*....... ~
-- -v .-
I
![Page 155: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/155.jpg)
Para meteriess Genericsq
"Cloning't Units
A nongeneric "unique object" Stack package:
package Stack isprocedure Pop(1 out integer);procedure Push(I : in integer);function Empty, return boolean;funoction Full return boolean:
en-d Stack;
A non-generic "manyv objects" solution:
package Stacks istype Stack isprocedure Pop(S: in out Stack;, 1: out integer);procedure Push(S in out Stack: I : in integerflunction E"mpty"?(S :Stackf:) re- -urn boolean;function Full(S :S*,ack) return boolean:
end Stacks:
-- changTes must be made to body of package also
A sample user program:procedu%-re StackUp is
Si, 52d~ : Stack; It$,em :in-teger;begi n
Push"S I , 1); Pushts2l.5),; Pop(S I ,Item);end;
![Page 156: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/156.jpg)
Parameterless Generics cont.
A generic "many objects" solution:
genericpackage Stack is
procedure Pop(I : out integer);procedure Push(I : in integer);function Empty return boolean:function Full return boolean;
end Stack;
-- generic body is identical to non-generic one-- no changes have to be made to get many stacks
A sample user program:
with Stack;procedure StackUp is
Item : integer;package SI is new Stack;package S2 is new Stack:
beginSIL.Push(IO); S2.Push(-'! 7
SI.Pop(Item); S2.Pop(Item):end StackUp:
![Page 157: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/157.jpg)
Parameterless Generics cont.
0 Stack implementations compared
0 Non-generic package - only oneelaboration and initialization occur
0 Generic package - multipleelaborations and initializations occur- once for each package
Example: with TexlIO;package body Stack is
beginTextLtO.Put("New stack created.");
end Stack;
package S'I is new SacK;-- message printspackage S2 is new Stack;-- message prints againpacakge S3 is new SLack;-- message prints again
I
![Page 158: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/158.jpg)
Creating Library Unitsof
Generic Instantiations
-- compile following separately into the library
with Stack;package SI is new Stack;
-- SI is now a usable library unit
with SI; use SI;procedure StackUp is
Item : integer;begin
Push(10);Push(20);Pop(Item);
end StackUp;
![Page 159: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/159.jpg)
Parameterized Generics
o Generic Parameters
O Value and Object Parameters
O Type Parameters
0 Subprogram Parameters
![Page 160: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/160.jpg)
Value and Object Parameters
Li Value Parameters
0 Are of mode IN
0 Serve as local constants ingeneric units
Li Object Parameters
Li Are of mode IN OUT
Li Serve as global objects ingeneric units
![Page 161: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/161.jpg)
Value Parameters
genericMax: in integer;Min : integer; -- default mode is IN
procedure BigNSmall(X : in integer);
procedure BigNSmall(X: in integer) isbegin
if X > Max thenMax := X; -- not with mode IN
end if;if X < Min then
Min := X; -- not with mode INend if;
end BigNSmall:
![Page 162: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/162.jpg)
Value Parametersand
Initialization Before Instantiation
[I Actual parameters which are to matchwith formal generic value parameters"must" have been initialized before theinstantiation occurs
Example:
genericMax: in integer;Min : integer; -- default mode is IN
procedure BigNSmall(X : in integer);
with BigNSmall;procedure UseBigNSmall is
LocalMin : integer'; -- no initial valUeLocalMax : integer; -- no initial valueX : integer :-1 O0;
procedure Extremes is newBigNSmal I (Max= >Local Max,M in= >LocalMin);
-- run-timeerror occurs due to lack of initialization IF contents-- of uninitialized objects raises constraint-error
beginExtremes (X);
end UseBigNSmall;
![Page 163: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/163.jpg)
Value Parametersand
Levels of Abstraction
genericLower, Upper: in character;
function InRange(S : in string) return boolean;
function InRange(S : in string) return boolean isbegin
for I in S'Range loopif S(1) not in Lower..Upper then
return FALSE;end if;
end loop;return TRUE;
end I.PRange;
A non-generic version of In-Range:
function InRange(S : in string; U'per,Lowercharacter) return boolean is
beginfor I in S'Range loop
if S(I) not in Lower .. Upper thenreturn FALSE;
end if;end loop;return TRUE;
end In_.Range;
![Page 164: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/164.jpg)
Value Parametersand
Levels of Abstraction cont.
]Compare clarity in user's programs usinggenerics to add another level of abstractionin "customized" names for In-Range function
with InRange;procedure InBounds is
Name : string( L4) := 'JACK',Phone: string(.7) := 6725643^,
beginif InrRange(Name,'A','Z') then...if lI.rane(Phone,'O','9') then...
end InBounds;
------------------------------------------
with InRange;procedure InouLnds is
Name : sing( ..4) :='JACK';Pho-i--:s,. .g'1. . . 7, = - .ED , 7 .-.Phone s"-ri"(!..7) = 67,,, ....
function Is_ ILUpper-Case is new jr__:an~e('A,?);
function Is..AILLower-Case is new Ir.ange(az');
function IsAiLDecima is new In.Range('O','9);
beginif IsALUpper.Case(Name) then...if IsWLDeciral(Phone) then...
end In ounds;
[*nRange taken from Ada Lanr-lage and Methodology]
![Page 165: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/165.jpg)
Value Parameters
Our Stack Example Revisited
genericSize : in natural;
package Stacks istype Stack is limited private;procedure Push(S : in out Stack; I in integer);procedure Pop(S : in out Stack; I 'out integer);
privatesubtype NumberOfElements is integer
range O..Size;type ElementArray is
array(NumberOfElements' f integer;ty pe Stack is recorc
Elements : Element_4.rray:Top NumberOfElements 0
end record;end Stacks;
with Stacks;prcoedure StackUp ispackage SmallStack is new Stacks(5);pacakge BigStack is new Stack(5000):
begin
![Page 166: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/166.jpg)
Value Parametersand
Default Values
(only on VALUE parameters, not OBJECT parameters)
genericRows : in positive := 24;Columns : in positive :- 80;
package Terminal is
end Terminal;
-- some possible instantiations
package MicroTerminal is new Terminal(2i,40);-- using positional notation
package WordProcessor is newTerminal (Columns=>S5.Rows:
-- using named notation
package DefaultTerminal is new Terminal:-- using the default values of 2q and S0
package NewTerminal is newTerminal(X+Y,Z+ 10);
-- using expressions
![Page 167: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/167.jpg)
Value Parametersan d
The Sujbtleties of Default Values
What are the outputs of the following?
package CountingPackage isfunction NextNum return int-ager,
genericVal integer :=NextNum.,,
procedure Count,end cutni'oae
with Text C0'Package body CCoLn-:ngPac!kag- :c
Curent Value integer- 0,function NextLNurn. r-t' rvt i
end Courntingpackage,
wilth Courl"n4Pa,-age;procedure StartCounting is
procedure Fir-stCount is new Cou-ntingPackage.Coizit;pro:ed'ure Count Again is new 'Coun tingPackagefount,-
beginFirstr-ount;-CountA-1%ain,
![Page 168: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/168.jpg)
AN IMPLEMENTATION DEPENDENCY
with Text 10; use Text 10;procedure Imp is
Counter : integer := 0;
genericA : in integer;B : in integer;
procedure X;
procedure X isbegin
put_line(integer'image(A+B));end X;
function Next return integer is ICbegin C D"
Counter := Counter + 1;return Counter;
end Next; 5 1),
procedure InstanceOfX is new X ;
beginInstanceOfX;
end Inp;
![Page 169: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/169.jpg)
Value Parametersand
Limited Types
LD Value parameters are constants whosevalue is a copy of the value of thegeneric actual parameter suppliedin the instantiation.
0 Type of generic formal value parametertherefore cannot be limited type becausecopy of actual parameter value cannot beassigned to it.
with TextAO;generic
MyFile TextIO.FileType: -- NO!procedure Wrong;
-- problem is FileType is limited private
![Page 170: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/170.jpg)
Object Parameters
A More Useful Example
genericControl-Block : in out DeviceData;Kind : in VDUKind :- Basic-Kind;
package VDU is
end VDU;
with VDU;procedure ManyVDUs is
DeviceTable array(1..N) of DeviceData:
package VDU I is ne,VDU(DeviceTable( I ),K indA):
package VDU2 is newVDU(DeviceTab le(2),Kin ng_B);
begin
end ManyVDUs;
['Taken from Ada Language and Methodology by Watt, Wichmann, and Findlay]
![Page 171: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/171.jpg)
Object Parametersand
Subtleties
I Object parameters passed by referencenot by copy-restore method
[I Object parameters are "aliases" for theiractual parameter counterparts
Example:
with TextulO; use TextIO;procedure X is
Global : integer := 99;procedure Z(Param : in out integer) isbegin
Param := Param + 1;PutLine( integer' image(Param) !;PutIline(integer' image(GlobaI)):
end Z:begin
Z(Global);end X;
-- output is 100, 99 for copy-restore method-- output is 100,1 00 for pass by reference
![Page 172: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/172.jpg)
Object Parametersand
Subtleties cont.
0 Object parameters passed by referencenot by name -- not like Algol's "copyrule"
0 Address of actual parameter correspondingto formal generic object parameter isevaluated ONCE and does not change
D Using generic object parameter NOT likedoing textual substitution of actualparameter's name
![Page 173: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/173.jpg)
Object Parametersand
SubtLieties cont.
[- ADDRESS of actual parametercorresponding to a generic formal objectparameter is evaluated at time ofinstantiation
![Page 174: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/174.jpg)
d ecl'areY a-rray l.5) Of C haractier "kitty";Ine x :i n t eger 1
gener icX in out character;
procedure Replace;
procedure Replace is
elv
Put (Str ig (Y));end Rep~lace;
proCedure Update is niew Rep lace(Y (Index)'!*-- Index = 1Ihe this insta~ntiation occurs
b egin&-U pdate;
end;
![Page 175: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/175.jpg)
NON-EXAMPLE
declareY array(l..5) of character "kitty";Index : integer := I;
genericX: in out character;
procedure Replace;
procedure Replace isbegin
Index := 5:Vamft]) := w,'Put(String(Y));
end Replace:
procedure Update is new Replace( 'a, u )-- Index = I when this instarntiat.on occu-s
begin
Update:end;
![Page 176: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/176.jpg)
declaresubtype Small is integer range I .. 10:X: integer := 27;generic
S : Am Small;procedure Gen-procedure Gen isbegin
Put(" All OK );end Gen;procedure P is new Gen(X);-- ConstraintError raised at time of instant.
beginP;
e. d:
![Page 177: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/177.jpg)
declaresubtype Small is integer range I.. 1 0:X : integer := 27;generic
S :lil m @m& Small;procedure Gen;procedure Gen isbegin
Put("All OK");end Gen;procedure P is new Gen( X);-- executes OK --
begine ;
end:
![Page 178: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/178.jpg)
Object Parametersand
Constraints Imposed
D Constraints applied to generic formalobject parameter are those of corresp.ACTUAL parameter.
declaresubtype Small is integer range 1.. 10;X : ~l := 10:
genericS dm mma Small;
procedure Constraints;procedure Constraints isbegin
S :=S Iend;
procedure Actual Constraint is newConstraints(X); -- causes NO problem
-- constraints of Am% S.,JF applybegin
Actual Constraint;eAAL,
![Page 179: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/179.jpg)
declaresubtype SmallI is integ-er range 1.. 10:
gienericS AM~ @M Small;
procedure Cons traints;procedtuAre Constraints isb egi;n
S.= S + 1;end:-
Proced ure Actual Cons traint is newConstraintsKX': - causes prob-lemn
-- 1 tons-rains Of BL apply
beginActual Constraint:
![Page 180: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/180.jpg)
Object Parameters
[I Use not recommended because sufferfrom all same falacies as global objects
[ Generic object parameters usuallySHOULD have been regular formalparameters in the subprogram
![Page 181: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/181.jpg)
Object Parameters cont.
genericVariable : in out integer:Limit, ResetValue in integer;
procedure ResetIntegerTemp late;
procedure ResetIntegerTemp late isbegin
if Variable > Limit thenVariable := ResetValue;
end if;end ResetintegerTemp late;
Better written as
genericLimit., ResetVa!ue ; ite-,t;-.
procedure Resetinteger-Temf iate 'Varta., le •,.integer):
or'ocedure Reset ntegerTernl1aTem I ariat oe L -i nteger) is
beginif Variable Limit then
Variable R e .tal eend if;
end ResetlntegerTemp late:
, ,,r, ... . -c 1, a Second L .,;'-e t- "'. -
![Page 182: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/182.jpg)
Object Parametersand
Defined Operations
0 Operations defined on object are thebasic or predefined ope rators definedfor the matching actual type.., evenif operator redefined for actual type orparent type of actual type.
wt-, Te2,, 'use TextIC;procedure NotRedefined is
,'. , .1., 4 -. i. -mteger return i nt e, 'e = r rbegin
re~ti rn'-' - .
end
generic
tpe Son-.Ie: - - v.n.e ez
function P uskLR SorneTye etu-- Some ",yee
retur.n. L 4, R; -- predefined lnLeer plusend Plus-
finction P!l.snstance is newP1'us (SorneType =>integer );
beg-n
end,
![Page 183: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/183.jpg)
Type Parameters
Z type identifier is range <>:
[I type identifier is digits <>:
Z type identifier is delta <;
D type identifier is (/>);
type identifier is array( tyipemarkrange <,., typemait range .,>) of t.pemar,
7 type identifier is array( typemar-4 ... ,i.j pemarl(1 of tiypemark
L type /denifier is access typemaiw
I type idenfier is privae:
-- '" e " e
'~ 7 noS~ -es
![Page 184: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/184.jpg)
Integer Type Parameters
L type identifier is range <>;
0 matches an integer type, predefined oruser-defined
i operations defined are those defined forintegers such as + rem, mod,negation, abs, >, <, =,/=, <=, >=
0 attributes defined are those defined forintegers such as 'first, 'last, 'succ..
![Page 185: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/185.jpg)
Integer Type ParametersAn Example
generictype IntType is range >;
function Increment(X : IntType) return IntType;
function Increment(X:IntType) return IntType isbeginreturn X- 1;
end Increment-
with Increment;procedure IncrementThings is
type Age is rangeC 30type Temp is Ira IaC r,0:
_vAge .Age := 30:CurrentTemp Tem- p
function YearOlder is new lncremenrtiA e!function TempUp is new
Increment (I intTp e= >Tefrp ):
beginM',yAge := YearOlder(MyAge):CurrentTemp := TempUp(CurrentTemp);
end IncrementThings;
![Page 186: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/186.jpg)
Float Type Parameters
0 type identifier is digits <>;
O matches any floating point type, predefinedor user-defined
0 operations defined are those available forfloating point types such as +, -,/0 *,**, negation, abs, >, <,-,y/my <=p >=
U] attributes defined are those available forfloating point types such as 'small, 'large,'digits, 'mantisa, 'epsilon, ...
E useful in providing mathematical routineswhere user can control the precision used
![Page 187: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/187.jpg)
Float Type ParametersAn Example
generictype FloatType is digits <>;
function Sqrt(X : FloatType) return FloatType;
function Sqrt(X : FloatType) return FloatType isbegin
end Sqrt;
with Sqrt;procedure Rooting is
type VeryPrecise is digits 7:type Imprecise is digits :
A,, VeryPrecise 0.1 . 3+Imprecise C1.12
function ExactRoot is new Sqrt(VeryPrecise":function RoundRoot is new Sqrt(imprecise);
beginX: ExactRoot(X);Y RoundRoot(Y);
end Rooting;
![Page 188: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/188.jpg)
Discrete Type Parameters
0 type identifier is (o);
0 matches any discrete type -- includesinteger types and enumeration types(boolean also)
E attributes defined are those available forany discrete/scalar type such as 'first,'last, 'succ, 'pred, 'image, 'value, 'pos,Ival
0 operations defined are those defined fordiscrete/scalar types such as >, <, ,>m, <w
![Page 189: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/189.jpg)
Discrete Type ParametersAn Example
gener ictype Element is (o);
package Sets istype Set is private;function Intersection(SI,S2 : Set) return Set;function Union(Sl,S2 : Set) return Set;function IsIn(Item : Element; S : Set) return
boolean;function IsNull(S : Set) return boolean;
privatetype Set is array(Element) of boolean;
end Sets:
-- some possible instantiations
package ChaI-:-.teL'.eSez is n e S s~caa~rt
p a -I.-age In tegtor Se: in new S et s int'
type Student 's (1John, Joan, Ann, Sue, 7;Zi
package ScudentSet is new Sets (Student);
![Page 190: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/190.jpg)
Discrete Type Parameters cont.
0 Minimal assumptions about the typemust be made - operations must applyto ALL discrete types
Example:
generictype Element is (o);
function Next(X : Element) return Element;
function Next(X : Element) return Element isbegin
X :- X + 1; -- not defined for ALL-- discrete types
end Next;
use attributes:
function Next(X Element) return Element isbegin
if X - Element'Last thenreturn Element'First;
elsereturn Element'Succ(X);
end if;end Next;
![Page 191: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/191.jpg)
Constrained Array Type Parameters
0 type identifier is array (typemzark,typeuark) of ty),pemar,
F matches any constrained array typewhere:
1) number of dimensions match,2) index subtypes of corresponding
dimensions match,3) bounds in corresponding dimensions
are identical,4) component types match
0 attributes defined are those available forconstrained arrays such as 'first(n),'last(n), 'range(n), 'length(nh
operations define" include those .vz:iar!efor constrained array.s such as ,n,slice notation (for one dimensional arrays
![Page 192: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/192.jpg)
Constrained Array Type ParametersAn Example
generictype Index is range K>;
type Component is (<>);type AnArray is array(amin) of Component;-- LRM 12 1.2(2) onlv discrete range that is-- allowed is a type marN..AOT (.. 10, etc.
procedure Sort(A : in out AnArray);procedure Sort(A : in out AnArray) is
Temp : Component;begin
for I in A'first+ I .. A'last loopfor J in A'first..I- I loop
if A(l) < A(J) thenTemp := A(J);A(J) :=A(l):
A(1) := Temp:end if:
end loop:end loop;
end Sort;
![Page 193: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/193.jpg)
-in user programsubty-pe SmallI is integer rangve L..10;type Age is integer range 0..13O;type AgeArray is array(Small) of Age;X AgeArray : (8,0,9 .4,50.35,87,97, .2I)
plrocedulre AgeSortr is newSort( Index= >Smal 1,
Comp onen t= .,Age,'AnA rrav= >A geA rray):
.. AgeSort(V':.
![Page 194: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/194.jpg)
Unconstrained Array TypeParameters
0 type identifier is array( t).pemartrange <>,... , tpemark range <>) of tjoemark,
0 matches any unconstrained array where:1) number of dimensions the same2) subtype of index for corresponding
dimensions is the same3) component types match
0 attributes defined are those available forunconstrained arrays such as 'first(n),'last(n), 'range(n), 'length(n)
L0 operations defined include those availablefor unconstrained arrays such as =, "=,using slice notation (for one dimensionaltypearrays)
![Page 195: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/195.jpg)
Unconstrained Array TypeParametersAn Example
generictype Index is range o;type Component is range <>;type AnArray is array(Index range o) of
Component;procedure Sort(A : in out AnArray);procedure Sort(A : in out AnArray) is
Temp : Component;begin
for I in A'First+ I .. A'Last loopfor J in A'First .. I-I loopif A(1) < A(J) thenTemp "A(J);A(J) "= (1',A() Temp,
en if;
end Ioop;end loo-:
end So-:;
![Page 196: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/196.jpg)
-- in user's program
type Age is range 0.. 130;type EmployeeNumber is range I.. 100;type EmpList is array(EmployeeNumber range <4
of Age;procedure EmployeeAgeSort is new
Sort (Index= >Emp I oyeeNumber,Component= >Age,AnArray= >Emp List);
Employees EmpList(5..50) (...
.Emp loyeeAgeSort(Emp loyees); . .
I
![Page 197: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/197.jpg)
Private Type Parameters
U type identifier is private;
E matches any constrained type except alimited type
L operations available are only declaringobjects of the type, testing for equalityand inequality, and assigning values toobjects of the type
![Page 198: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/198.jpg)
Private Type ParametersAn Example
generictype Index is (o);type Component is private;type AnArray is array(Index) of Component;
function Found(A : AnArray; T : Component)return boolean;
function Found(A : AnArray; T: Component)return boolean is
beginfor I in A'First..A'Last loop
if A(1) = T thenreturn TRUE;
end if;end loop;return FALSE;
end Found;
![Page 199: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/199.jpg)
-- in user's program
type Student is (Joan, John,Sue,...,Debbie);type Grade is range 0.. 100;type GradeArray is array(Student) of Grade:function GradeMade is new
Found (Index= >Student,Component= >Grade,AnArray= >Grad eA ry):
Grades : GradeArray = . )
if GradeMade(Grades. 1II then .
![Page 200: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/200.jpg)
Private Type Parameters cont.and
Restrictions Imposed
What's wrong here?
generictype Index is (>);type Component is private;type IntArray is array(Index) of Component;
procedure SortArray(Arr : in out IntLArray);
procedure SortArray(Arr : in out IntArray) isTemp : Component;
beginfor I in Index'Succ(Arr'First)..Arr'Last loopfor J in Arr'First..Index'Pred(1) loop
if Arr(1) < Ar(J) thenTemp :- Arr(J);Arr(j) "-Arr(I'1:
Arr(1) : Temp;end if;
end loop;end loop;
end Sort-Array;
![Page 201: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/201.jpg)
-- in user's program
type Student is (Joan,John,Sue,...,Debbie);type Grade is range 0.. 100;type GradeArray is array(Student) of Grade;function GradeMade is new
Found (Index= >Student,Component= >Grade,AnArray= >GradeArray);
Grades : GradeArray (.
if GradeMade(Grades, 100) then ..
![Page 202: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/202.jpg)
Private Type Parameters
Another Caution
What's wrong here?
generictype Element is private;
procedure Swap(X,Y : in out Element);
procedure Swap(X.Y in out Element) isTemp Element:
beginTemp -- X:
Y := Temp;end Swap;
-- in user s program
HerName string(l..5) Lind,Hisi ame string(1..5) "Chuck";
procedure NameSwap is new Swap(string);
![Page 203: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/203.jpg)
procedure NameSwap(X,Y in out string) isTemp -- OOPS!
beginTemp X;
y Temp,end NameSwap;
![Page 204: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/204.jpg)
generictype Element is private;
procedure Swap(X,Y : in out Element);
procedure Swap(X,Y: in out Element) isTemp "constant Element :- X;
beginX :-Y;
Y := Temp;end Swap;
procedure NameSwap(X,Y in out string) isTemp • i t X:
beginX:=Y;
Y Temp:end NameSwap:
![Page 205: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/205.jpg)
Limited Private Type Parameters
0 matches any type including a limitedtype
0 only declaration of objects of the typepermitted and NOTHING else
![Page 206: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/206.jpg)
Access Type Parameters
0 matches any access type
0 operations defined for access typesavailable such as setting object to null,use of NEW allocator, use of .ALL notation
![Page 207: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/207.jpg)
Ac.-cess Type ParametersAln Example
aenenictype Node is private;type Link is acce,-,ss Node;paka Ce L is f is
tyvpe Sludent;ilr a
type S ud.e nt Isc.
A a e ine C,
pack age StudentPackace is new
![Page 208: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/208.jpg)
Generic Formal Type Parameters
A Synopsis
Generic formal parameter Actual parameter
type T is limited private; any typetype T is private; any non-limited typetype T is (<>); any discrete typetype T is range,>; any integer typetype T is digits o; any float typetype T is delta <-; any fixed point type
[*Take:n from Ada Languaje and vethodology,, by Watt. Wichman,
and Findlay]I
![Page 209: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/209.jpg)
Type Parametersand
The Standard Generic 1O Packages
package TextIO is... non- generic part of TextIOgeneric
type NUM is range <>;package IntegerIO is
end IntegerIO;
generictype NUM is digits <>;
package FloatIO is
end FloatIO:
gener..otype NU'M is tel1.a <
package ri.ed_IV is
end Fixed_1O;
generictype ENUM is (o);
package Enumeration-1O is
end EnumerationIO;end TeXLIO:
![Page 210: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/210.jpg)
How Do I Choose???
tvpe X is digils >*:
type N~ ag 77-VeNi
IvI
T P'
\--,S':
typ N is irmit~dpi-t
![Page 211: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/211.jpg)
Subprogram ParametersAn Example
generictype Index is (<>);type Component is private;type IntLArray is array(Index range <>) of
Component;with function "<"(X,Y:Component)
return boolean;procedure SortArray(Arr : in out IntLArray);
procedure SortArray(Arr : in out IntArray) isTemp : Component;
beginfor I in Index'Succ(Arr'First)..Arr'Last loopfor j in Arr'First..Index'Predf'P loop
if Arr(I)< Ar(J) thenTemp :- Arr(I':Arr(J) := Arr(l):
Arr(I) :- Temp;end if;
end loop;end loop;
end Sort-Array;
![Page 212: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/212.jpg)
Generic Formal Type ParametersHow To Choose?
U What operations are performed on thetype in the generic body?
0 How restrictive on the type that the usercan choose do you want to be?
![Page 213: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/213.jpg)
Subprogram Parameters
D allow definition and "pass in" ofadditional operations for genericformal type parameters - especiallyprivate and limited private types
5 can pass functions or procedures
0 formal parameters of generic formalsubprogram parameter are checked toensure match with actual parametersin a call to that subprogram at compiletime
![Page 214: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/214.jpg)
Subprogram Parameters
Stud entRec
\I
g e QPR18 3. 4 123
17' 2.8 45319 1.9 67,£
20 2.7 542
183.5 -74z
33
21 3.0 627
20 2 )897. -
30O 18 2. -.-
N
![Page 215: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/215.jpg)
Subprogram Parameters - cont.
type AnIndex is range L. 100;
type StudentRec is recordAger- :.natural,QPR ..floatJStudentNurnber :natural;
end record;-
type StOudent- rr ay is arr-ayt'AnInde-. range o)of Student.'ec;
funo TY , Stu d e: t Rceturn bolen A
beginreturn X S-"tudentNumber <Y StudentNumber;-,
end ILT'
fln-in"'."(" v bcoescr l et si
return X.Q? Y QD:.
(index= >An Index, Compone:-nt=>Stude-nt.-e,--,AnArray=>Student-,~kra-y, "<" => <)
Student-,ata -StudentArray(1I .30)(begin
NumberSort(StudentData);Q PR..S ort. ( St u den tD a t-)
![Page 216: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/216.jpg)
Subprogram Parametersand
Default Values
generictype Index is (o);type Component is private;type IntArray is array(Index range >) of
Component;with function "<"(X,Y:Component)
return boolean agj ();procedure SortArray(Arr in out AnArray):
-- in user's program
function "<"(X,Y : StudentRec) return boolean isbegin
return X.QPR < Y.QPR:end "< ";
procedure DefaultSort is new SortArray(Index= >Anlndex, Component= >Stud entRec,
A nA rray= >Stud entA rray);
DefaultSort(StudentData); -- will sort on-- QPR values
![Page 217: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/217.jpg)
Subprogram Parametersand
Default Values
-- in user's program
function LessThan(X,Y : StudentRec) returnboolean is
beginreturn X.QPR < Y.QPR:
end LessThan:
generictype Index is (o);type Component is private;type IntLArray is array(Index range DF
Component:with function "V >. :.Ip, e
re "turnin boolean J -1.procedure Sor- r y r • u ^ 7 '
procedure DefaultSort is new S.-o"'-r(Index= >Anlnd ex, Component= >Stud entRec,A nArray= ;Stud entArray);
DefaultSort(StudentData):-- will sort on-- QPR values
![Page 218: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/218.jpg)
Subprogram Parametersand
Default Values cont.
Another example:
type SmallRange is range L.. 0;type Values is array(SmallRange range <>) of
integer;
procedure IntegerSort is new Sort-Array(Index= >SmallRange, Component= >integer,
InL.Array- >alues);
V : Values(5..9):= ( .begin
IntegerSort(V); -- default "<" for integers usedend;
-- using Put for subprogram parameter name-- results in default to generic Put routines-- in the 1O packages
![Page 219: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/219.jpg)
Subprogram Parametersand
Subtleties of Default Values
0 Global references inside a generic areresolved to those at point of DECLARATION.
0 For subprogram parameters, defaultreferences resolve to matching names frompoint of INSTANTIATION.
![Page 220: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/220.jpg)
NAMING CONFUSION
with Text 10; use Text 10;procedure Doubles is
genericwith procedure (Char : in character);with procedure a(Value: in integer);
procedure GenericOne;
procedure GenericOne isbegin
DoSomething('A');DoSomething(lO);
end GenericOne;
procedure FirstSomething(Char in character) isbegin
null;end FirstSomething;
procedure SecondSomething(Char in integer) isbegin
null;end SecondSomething;
procedure InstanceOfGenericOne is newGenericOne- " ' ' ->stSomething,u ->ecndom .-
beginInstanceOfGenericOne;
end Doubles;
IIl
![Page 221: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/221.jpg)
with TextlO; use TextlO;package Shell is
Global : integer :- 17;generic
with procedure Put(Val : integer) is o;procedure Demo;
end Shell;
package body Shell isprocedure Demo isbegin
Put(Global);end Demo;
end Shell;
with Shell;package Inner isGlobal : integer := 39;procedure Put(I : integer);
procedure User is new Shel.Demcend fner;
with Text-Opackage body Inner isprocedure Put(I ' integer) isbegin
Text-iO.Put("Surprise" & integer' image(1));end Put;
end Inner;
... Inner-User; ...
![Page 222: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/222.jpg)
Subprogram Parametersand
Ne-tiong Generic UnitsAn Example
generictype KeyType is private;type ElementType is private;with function "<(Left,Right : KeyType)
return boolean is <>;package BinaryTreeMaker is
type Kind is private;function Make return Kind:function IsEmpty.(T : Kind) return boolean:procedure Insert(T in out Kind;
K : KeVType:E " ElementType):
function Retrieve(T Kind; K : KeyType)return EementType;
KeyNotFound "exception:
genericwith procedure Operation(K : KeyType;
E : ElementType);procedure InorderTraverse(TheTree: in Kind);
privatetype InternalRecord;type Kind is access InternalRecord;
end BinarvTreeMaker:-* 1-o
![Page 223: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/223.jpg)
with Empl1oyeeD ataBase; use Emp 1oyveeDataBas e:with Text-JO0 ; use TextJO0;procedure PrintReports is
package SalaryIC is new Fixed-IO(Dollar);.package AgelO is new Integer-iO(AgeType.1;use SalarylO, AgelO;
procedure PrintLSalary(Key :NameType:Info : Employeelinfo) is
beg in... Put(Info.Salary);
end;
procedure Print Age(Key NameType;Info : EmpioyeeInfro) i's
begin.. Put(Inifo.Age);
end;
procedure ReportSalaries is newE-mp 1 oy ec."Tr ee. I n order 'Ifave rs e
(Operation- PrintSalary K-'
procedure ReportAge is newEmployeeTree. InorderTraverse
(Operation=-> PrintAge);begin
ReportSalaries(RootNode);NewiLine;ReportAges (RootNode);
end PrintReports;
![Page 224: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/224.jpg)
with'' SinaryTreeMaker;package ExnployeeDataBase is
NameLength : constant := 40;
subtype NameType is string(l1.NameLength);type Dollar is delta 0.0 1 range 0.0.. 1.0e8;type AgeType is range 0 .. 150;type YearType is range 1900..2 100;type EmployeeInfo is record
Salary :Dollar;Age : AgeType;Hired :YearType;,
end record;
package EmployeeTree is newB'inaryTreeMaker(KeyType->Name'iype,
ElementType= >Emp loyee Info)';
RootNode :EmployeeTree.Kind:end ErnplIoyeeD ataBas e:
[I aken frolmU~rtr~n ~ y& c::: ~:
![Page 225: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/225.jpg)
Subprogram Parametersand
Handling Exceptions
genericpackage Stack is... same as before
Overflow, Underflow : exception;end Stack;
-- in user's program
package Si is new Stack;package S2 is new Stack;
begin
SI.Push(5>"S2.Pop(lterr)"
exceptionwhen S 1.Underflov-,.when S I.Overflow ,when S2.Underflow ->.when S2..Overflow =>
end;
![Page 226: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/226.jpg)
Subprogram Parametersand
Handling Exceptions cont.
0 Cannot pass exceptions as generic parameter
generic
When-Error :exception; -- NOT allowed
procedure X.
exceptionwhen others => raise When-Error;
end X;
My -Exception : exception;procedure S is new X(MyException)
beginS;
exceptionwhen My-Exception => .; NOT allowed
end;
![Page 227: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/227.jpg)
Subprogram Parametersand
Handling Exceptions cont.
genericwith procedure OverflowHandler;
package Stack is... same as before;
end Stack;
package body Stack is
... in Push procedure...when ConstraintError => OverflowHandler;
end Stack;
-- in user programwith Stark;
procedure OverflowHandler -begin
TextIO.PutLine("Overflow has occurred" end OverflowHandier;
package Si is new Stack(OverflowHandler);
begin
SI .Push(5); -- if overflow occurs msg printsend;
![Page 228: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/228.jpg)
Generic Can'ts
0 No generic SUBype parameters, only TYPEs
[-1 No generic record types
D No generic tasks
F- Wrap a package around it
"... Ada provides formal types for allclasses of type @ g ) Tr-s@@916 %types. The major reason for this is thatit is not clear that reasonable criteria formatching exist for these type classes -criteria that would be consistent with thedegree of type checking performedelsewhere, Vet at Ie same time have a ,g-oodprobability of being usable for many actualrecord types and task types." LRM 12.4.2
I
![Page 229: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/229.jpg)
- ' ' hi - ,- '-""
generic,, ,tern is private;
Size : Positive := 400;package OnBuffers is
task type Buffer isentry Read(C out Item);entry Write(C in Item);
end;end OnIuffers;
7, k ̂ 4 IV : r , r I-
,De.. Lenu; ,, i new teoer range, 1 , ize,S.:~ ,rg r,,ee > of e eg.,
%.,LA..' t - ' S~ I I~- *d I . I LAIIz II A II <
ac"en' w'e' in,,u
1.. t-. \ , ..
,ri C; .
accept. w:bite,,C in ,L&m. CC
Poi(intndex C;
end,in-index = (in-index mod Size) + 1
or
![Page 230: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/230.jpg)
when Count > 0accent Read(C out Item) do
C 2=Pool(1,Outi-ndex)I;
end;Out-Index := (Out__index mod Size)+1Count := Count - 1;
orteriminl-ate;
end selec t;,end loop;
end ~ufr
packaoe ChrcebfeIn Is Fe
[Taken from Ada R~ationale]
![Page 231: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/231.jpg)
No Staic i ses
010,
![Page 232: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/232.jpg)
Generic Foma Marmee,ad
C]3 Gen e r ic r ml parameters and thcl-r,Attributes NOT afowc'd constfituentszor static expresions.
n!- -f-
d:C-
IV' -1 n
ce ac ,.
end Choice;-
procedure Testinstarce is new /Cho-ice(X>5>'
Test-lnstance(VaI l)
![Page 233: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/233.jpg)
Gene1 rIc Formal Parametersana
Stat-'ic Uses (continued)
deciareqeneric
Integer;C:ick aue More_!'1 QaLse ! I-,
tyc)e Lenath is frainge 1 X
t.~~ ~ rrn~rr I
![Page 234: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/234.jpg)
What are the Cons of Generics?
O1 Takes longer/is harder to write generic code
Ol Usually some efficiency sacrificed for
the generality -- use of application
specifics could lead to increased efficiency
C3 Difficult to make component robust/reliable
enough to survive all uses
t
I
![Page 235: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/235.jpg)
What are the Pros of generics?
0 Reusability - no reinventing the wheelfor each specific application
0 Levels of abstraction added - separationof abstraction and implementation
0 Source code size of user programs reducedF] Maintainability, readability, and
understandability increased0 Verification more manageable
EU When used in coniunction with user-definedtypes increases portability across machines
F Provides necessary answer to strong typingwithout sacrificing increased reliability' ofcompile time checl:s
Provides f I e: ibie O packages which crbe U5,:¢ ( e ",ed for predefined A"'user-defined types
![Page 236: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/236.jpg)
Generics PhilosophU(From Ada Rationale)
Wvhereas such packages are likelyto be utilized by,. LARGE classes of STERS,
it sh1-1o uld b e r e a'liz ed tha F EW",E Rp rog-ramm111ers will actuall-v b-e involved inWVRI T ING genieric- paCkages. Accordingly
wehave trie.?d to d esign a facilitytat rabe alm-c s z1 ign ored bte M; a;o -v o f us ers
T 11ey ust i nd eed -now how, to ns a n taea generic p ackfage. and this Is fair ly eas.
On th othehan, the tnee not
familiar- with the rules and preCaUtionsQ'necessary for wiigenrcus."
Genrics GeercUsers riter
![Page 237: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/237.jpg)
Rationale for, Ge ierics
EConstrIIuc tion oil general-pur-poslepa aetriedpakages, Ircdres and l
fu nc tijonS
El Units to be used by lar-ge ciasses of ss
E Fe-wer programmers actually in-volv'.ed inwritina aeneric units"Gen-eric facilty -can te ;nc.r ed t-~
ia icit ofi Ad'- Iusers k k.jflr' osusror) ' r-n ca r~who t
Im A LA I of dA%
mc-epr s 0 e n o
Fl~~~ /eli m e m e nta bile tnsttcar
![Page 238: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/238.jpg)
More on the Generic Model
L Llers Of enrcunit,- should 1. be able toignore details of generilc body e ntirely
E1 Errors should be reported to usc--er interms of the instantiation not bodyv
E Generic body checked for cons Iste,,ncy%with respect to formal parameterspecd fi ca t ions
![Page 239: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/239.jpg)
Unresolved Issues in Generics
0 Compiler Issues
0- Use "code sharing" or "code copying" toimplement generics
0 Management Issues
, How to facilitate creation of generic unitsL In retrospect, after recognizing
similarity in produced units[ Beforehand using "domain analysis"
7 Ho, to manage storage and retrieval
of units in a library of generic units
LE How to "publicize" availability ofunits in generic library and providecriterion for selecting proper uni:
How to manage updating of used neneri,units as "bugs" are uncovered
0 Legal Issues
[3 Who owns the generic module
[0 Who is liable for the generic module'sperformance:,.7._:=.'..-i: t ,":- . . . .. . . .. ,
![Page 240: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/240.jpg)
-
"- C 3 .
21? I- Ic - -
ivate,'*<,
en d X
* -.. * . - - - -,
/ ..,,, .'
' J- 2,': yp e E is private,- rocedure N:
i :procedure N isbegin
Ifend N:
II
![Page 241: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/241.jpg)
How do you TEACH generics?
O Necessary as I is an issue arising earlyand should not be kept a "magic" process
[I One key is to use concrete examples
[I Driver's licence form is a generictemplate -- individual's license isa usable instantiation
[I One key is to tie to previous learning
0 Use old/familiar packages, procedures,and functions - Stacks, Swap, et-c.
![Page 242: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/242.jpg)
with Text -10, Binar-y_SearchTrees; use Text_10;procedure MidTree is
type AlphaType is range 1. .4000;type CompanyType is range 1.. 36;subtype NameType is string(l. .20);subtype MajorType is string(l. .4);
type MidRec is recordAlpha :AlphaType;Name :NameType;Company :CompanyTyrpe;Major :MajorType;
end record;
package AlphalO is new Integer_IO(AlphaType);package Companylc is new IntegerIO(CompanyType);use AlphaIO, CompanyIO;
MidFile :File_Type;
M.Rec :MidRec;
package MidTreePkg is new Binary _SearchTrees (temtype= >M4idRec);use MidTr-eePkg;
MidshipmanTree :Tree;
functioni 1'<1(Left,Right :nMidRec) return boolean isbec: -4
return Lefrt.Narne < Right.Name;end "f<f;
procedure Add is new insert(""="<)
procedure Print(M in out MidRec) i
Put ineI .N ame;end Pit
..~ozeureKamL~~~ n;':LNRTraversal V.i=Pit
:)pen'MidFilenFle "y$fac: 5sra .palisdat"',hile NOT end-_ _fle(MidFile) loop
Get (YidF- I e, M ec.Alpha);Get (MidFile,Y.ec.Name);Get(MidFile,M~ec.Company);Get (MidFile ,MRec.Maj or-)SkipLine(MidFile);Add (MidshipmanTree,MRec);
end loop;Close (MidFile);
NameList (MidshipmanTree);end;
![Page 243: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/243.jpg)
with TextI0, Bi4nary_SearchTrees: use Tex-_10j;procedure MoviesTree is
type CategoryType is (AD, DR, CL, SF, KU, MY);subtype IDType is string(1. .5);subtype LengthType is integer range 0. .300;subtype YearType is integer range 1800. .1988;type RatingType is (PG,R,G,NR);subtype TitleType is string(l. .80);
type MovieRec is recordCategory :CategorTyrp.-;ID :IDType;Length :LengthType;Rating :RatingType;Year :YearType;Title :Titletype;
end record;
package IntIC is new integer_10(iiteger);package CategoryIO is new Enumerat-ionI0(Categor-yType);package RatingIO is new Enumeration 10 (RatingType);use IntIG, Categorylo, Ratinglo;
MovieFile :Fi;le_Type;
M.Rec :MovieRec;Fi;'ller :character;Count :natural;Temp :string(1..80);Blanks :string(I..80) :=(others->' ');Coriando, Bearlsland, Daniel, Flashpcint, MassAnDeal MzvieRez;
package MovieTreePkg is new B4-nar _Searc-h Trees(1temt vze=>Mov -e'-ez',use MovieTreePkg;
MovieTree :Tree;
-nc:n 11<11(Ieft,Right: inMcvJe:-ecI return zza
end 11<1;
ztiQ~L~t, Kzht inYc-eI-1'c return IzIen sbegin
return Lef-.Title - Rlght.Tit.Ie;end EQ;
procedure Add is new Insert[-ByKey(I<=>IT <fI);
procedure Print(m: in out MovieRec) isbegin
Put_-Line (M. Title)end Print;
procedure NameList is new LNRTraversal(Visit=>Print);
Procedure Remove is new RemoveByKey("<"f=>"1<",EQ=>EQ);
beginConmmando.T4-le :=Blanks;
![Page 244: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/244.jpg)
Daniel. Title (1. .6) :- "Daniel";Flashpoint.Title := Blanks;Flashpoint.Title(1. .10) :- "Flashpoint";MassAppeal.Title :- Blanks;MassAppeal.Title(l. .11) := "Mass Appeal"t ;
open(MovieFile,IlnFile,"movies.dat"l);while NOT end-of-file(MovieFile) loop
Get (MovieFile, MRec. Category);Get (MovieFile, Filler);Get (MovieFile,MRec. ID);Get (MovieFile, Filler);Get (MovieFile,MRec. Length);Get (MovieFile, Filler);Get(MovieFile,MRec.Rating);Get (MovieFile, Filler);Get(MovieFile,MRec.Year);Get (MovieFile,Filler);Get_Line(MovieFijle,Temp,Count);MRec.Title :=Blanks;MRec.Title(l..Count) :=Teimp(l..Count);Add (MovieTree, MRec);
end loop;Close (MovieFile);
NamneList (MovieTr-ee);Remove (MovieTree, Bearlsland);Remove (MovieTree, Daniel);Remove (MovieTree, Flashpoint);Remove (MovieTree, MassAppeal);Remove (MovieTree, Commando);NameList (MovieTree);
end;
![Page 245: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/245.jpg)
generictype ItemType is private;
package BinarySearchTrees is
type Tree is private;
genericwith function "<"(Left,Right : in Itemtype) return boolean is <>;
procedure InsertByKey(T : in out Tree; Item : in Itemtype);
genericwith procedure Visit(item : in out Itemtype);
procedure NLRTraversal(T : in Tree);
genericwith procedure Visit(Item : in out Itemtype);
procedure LNRTraversal(T : in Tree);
genericwith procedure Visit(Item : in out Itemtype);
procedure LRNTraversal(T : in Tree);
procedure Share(OriginalTree : in Tree; SharingTree out Tree;,
procedure Clear(T : out Tree);
genericwith funczion EQ(Left,Right : in :temtype) return boolean;with funcion "1<"aLeft,Right : in :temtype) return boclean;
procedure RemoveByKev(T : in out Tree; Item : in Itemtype);
function Left SoniT: in Tree) return Tree;
function RigabtSn( in Tree) return Tree;
ur ..cion.. :n ree'c~~~ic -- 7~ ' ree re.rn
Zfc~o Y ezr exce-ctreurn
l~i :ree :e>xcez:cr.
zrrvate
type TreeStr .zure;type Tree is access TreeStructure;
end Binarv Search_Trees;
package body BinarySearchTrees is
type TreeStructure is recordIte. : Iterc'pe;LeftSon : Tree null;RightSon : Tree null;
end record;
procedure InsertByKey(T : in out Tree; Item in Itemtype) isbegin
if T = null then-- found leaf position where Iter to be inserted-- create new leaf and insert it
![Page 246: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/246.jpg)
else-- go down right subtreeInsertByKey (T.RightSon, Item);
end if;
exceptionwhen Storage_Error => raise OutOf_Memory;
end InsertByKey;
procedure NLRTraversal(T :in Tree) isbegin
if T /- null thenVisit CT. Item);NLR_-Traversal (T.LeftSon);NLRTraversal (T.RightSon);
end if;end NLR-Traversal;
procedure LNRTraversal(T :in Tree) isbegin
if T /= null thenLNRTraversal (T.LeftSon);VisIt (T. Item);LNR_-Traversal (T.RightSon);
end if;end LNRTraversal;
procedure LINTraversal(T :in Tree) isbegin
if T /= null thenLRNTraversal (T.LeftSon);LRNTraversal (T.RightSon);Visit (T. Itemn)
end if;eind LRN Traversal;
pro~cedure Share(CriginalTree :in~ Tree; Sharingaree out Tree! isbegin.
SharingTree := riginalTree;end Share;
proceiure CZlearjT :cut Tree;~ isbegin
T :=null;end Clear;N.
procedure RemoveByKey (T :in out Tree; Item in 1temType) isFather, ReplacementItem :Tree;
beginif T = null then
-- do nothing... item. not in the treenull;
elsif EQ(Item, T.Item) thenif (T.RightSon=null) and (T.LeftSon=null) then
-item is a leaf... no reattachment of children necessaryT := null;
else -- item not a leaf-go left arnd then right as far as possible to find-replacement "value" to put in del.eted place
if T.LeftSon /= null thenFather :=T;ReplacementItem :=T.LeftSon;
![Page 247: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/247.jpg)
transfer replacement value up into positionT.Item := ReplacementItem.Item;-- reattach children of replacement value that-- was pulled upif Father = T then
T.LeftSon := ReplacementItem. LeftSon;else
Father.RightSon := ReplacementItem. LeftScn;end if;
else-- go right and then left as far as possible to find-- replacement "value" to put in deleted placeFather := T;ReplacementIten. := T.RightSon;while ReplacementItem.LeftSon /= null loop
Father := ReplacementItem;ReplacementItem := ReplacementItem. LeftSon;
end loop;-- transfer replacement value up into positionT.Item := ReplacementItem.Item;-- reattach children of replacement value that-- was pulled upif Father = T then
T.RightSon := Replacementltem..RightScn;else
Father.LeftSon := Replacementitem.RightSon;end if;
end if;end if;
elsif Item < T.Itcm then-- go down left subtreeRemcveByKey(T.LeftSonI ter ;
else-- go down right subtreeRemoveByKey(T.RihtS n, :tem);
end if;end RemoveByKey;
function Left SonT : in Tree rezur,. Tree Lsbegin
T; = null thnrraise Nul!Tree:
elsereturn T.Iefuzon;
end if;end Left Son;
function Right_Scn(T : in Trec; return Tree isbegin
if T = null thenraise NullTree;
elsereturn T.Righ=Son;
end if;end Right_Son;
function IsEmpty(T : in Tree) return boolean isbegin
return T = null;end IsEmpty;
function GetRoctData(T : in Tree) return ItenType is
![Page 248: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/248.jpg)
return Ttmend if;
end GetRootData;
end BinarySearchTrees;
![Page 249: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/249.jpg)
with Lists, Text_10; use Text_10;procedure MoviesList is
type CategoryType is CAD, DR, CL, SF, MU, MY);subtype IDType is strina(1. .5);subtype LengthType is Integer range 0. .300;subtype Year-Type is integer range 1800. .1988;type RatingType is (PG,R,G,NR);subtype TitleType is string(l. .80)1;
type MovieRec is recordCategory :CategoryType;ID :IDType;Length :LengthType;Rating :RatingType;Year :YearType;T.tie :Titletvpe;
end record;
package intIG0 is new Integer I0(integer);package Categorylc is new EnumerationI 0 (CategoryType)package RatinglO is new Enumeration IO(RatingType);use IritlO, Categorylo, RatingIO;
MovieFile :FileType;
M-Rec :MovieRec;Filler :character;C:zunt :natural;
7enn :strincr'l..60);;E:7arks :string(i..8o) :=(others=>' ');
functicn. Get Tit-le(Movie :MovieRec) return Titletype;function %<-Lf, Right :Tit'LeTyvpe) return boolean;
function E-,_L1eft, Righ',._: TitleType) return boolea.n;
=Eckage Y.:vieListPkz is rw Lss(tn>~'i~
Kev= >Get- tle,
funct-'or Get TieMvemcoviaRec) rec:urn Ti-:le':vpe I's
return Movie.Title;end GetTitle;
function 11<11(Left,Right TitleType) return boolean isbegin
return Left < Right;end 1<11;
function EQ(Left,Right TitleType) return boolean isbegin
return Left = Right;end EQ;
beginOpen(MovieFile,In File,"mo-.-i.es.da t);
![Page 250: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/250.jpg)
Get (MovieFile, Filler);Get(MovieFile,MRec.Length);Get (MovieFile ,Filler);Get(MovieFile,MRec.Rating);Get (MovieFile, Filler) ;Get (MovieFile,MRec.Year);Get (MovieFile, Filler);Get Line(MovieFile,Temp,Count);MRecE.Title :- Blanks;?Rec.Title(l..Count) :=Temp(l..Count);Put(MRec.T;.tle(l..Count));InsertInOrderlnList (MovieList,M~ec);
end loop;Close (MovieFile);
end;
![Page 251: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/251.jpg)
-- Module L .ists-Author :LCDR MORAN-- Date :29 SEP 19817-Function :Implements basic operations on a singly linked list.
generictype Item is private;type KeyType is private;
with function Key(Anltem :Item) return KeyType;with function LE(Keyl, Key2 :KeyType) return boolea.;with function EQ(Keyl, Key2 :KeyType) return boclean;
package Lists is
subtype Count is natural;
type ListPointer is private;
procedure Copy(PointerToOriginalList :in ListPointer;PointerToCopyList :out ListPointer);
procedure Clear(PointerToTheLi4st :in out ListPointer);
procedure Share (Point-er"LooriginalList ,PointerToSharingList in out ListPointer);
procedure InsertAtHeadOfListI.(PointerToTheList :in out List-Pcinter-TheltemTc~elnserted : n :ter);
pocedure InsertAt.a :it(one~oh~s in out List~cinter-ThelternToBeinserted :in Iten);
rrocedure insert-InorderInLi4S4-(PoinzerT-TheList i- cut Liz-c n-er-Theitem.ToBe Tnserted -1. 7 -',7,
procedure RemoveFror. :ieadOfri st(Pcointer--cTheLi'st ~ n C. Lstci7eRem vedt7:en
p~rocedureReoer aiit? nerc eitR encved t en
procedure Reno-veB yKev---rm4:st (PcinterTcThe--isz n -z s
function Aeu.?itrcPntrL lszintEr rE,:*n :::z-,:
function IsEmp-.y(Pci4nterTo:. List.-Pinter) return boolean;
function Lengthof(PointerToL ListPointer) return Count;
funcz: .'n Predecessor(Pointer-ToAList, PointerToANode :List~ointer)return ListPo inter;
function Successor(PointerToAList, PointerToANode :List~ointer)return ListPointer;
function GetData(PointerToANode :ListPointer) return Iterm;
EmptyList :exception;
![Page 252: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/252.jpg)
privatetype ListNode;type ListPointer is access ListNode;
end Lists;
![Page 253: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/253.jpg)
-- Module : Lists-- Author : LCDR MORAN-- Date : 29 SEP 1987-- Function : Implements basic operations on a singly linked list.with Unchecked Deallocation;package body Lists is
type ListNode is recordData : Item;NextPointer : ListPointer;
end record;
function Successor(PointerToAList, PointerToANode ListPointer)return ListPointer is
beginreturn PointerToANode.NextPointer;
end Successor;
function Predecessor(PointerToAList, PointerToANode ListPointer)return ListPointer is
Prior, Temp : ListPointer := PointerToAList;begin
if PointerToANode = PointerToAList thenreturn null;
elsewhile Temp /= null and Temp /= PointerToANode loop
Prior := Temp;Temp := Temp.NextPointer;
end loop;if Temp /= null then
return Prior;else
return null;end if;
end if;end Predecessor;
funtion GetData(PcinzerTokNode : Lis=Pcinter re-urn e:- isbegin
if PointerTcANode /= null therreturn PointerToANode.lata
end if;end GetData;
procedure Dispose is new Unchecked Dealocation(lis!Nize,LisPciner,;
procedure Copy(PointerToOriginalList : in ListPointer;PointerToCopyList : out ListPointer) is
Temp : ListPointer := PointerT-ooriginalList;LastAddedPtr : ListPointer;NewNodePtr : ListPointer;
beginPointerToCopyList := null;while Temp /= null loop
-- make the new node and copy the data into itN:ewNodePtr := new ListNode;NewNodePtr.Data := Temp.Data;
if Temp = PointerTooriginalList then -- add tne first nodePointerToCopyList := NewNodePtr;
![Page 254: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/254.jpg)
-Velse -- add other than the fir-st nc-LastAddedPtr. NextPointer =NewNodePtr;
end if;
Temp :- Temp.NextPointer; -- move to next node in cria. '
LastAddedPtr :- NewNodePtr; -- keep track of last node addeo_end loop;
end Copy;
procedure Clear(PointerToTheList :in out ListPointer-) isTemp, Trail ListPointer := PointerToTheList;
beginwhile Temp 1=null loop
Trail :=Temp;Temp :=Temp.NextPointer;Dispose (Trail);
end loop;
PointerToTheList := null;end Clear;
procedure Share (PointerToOriginalList,PointerToSharingList :in out ListPointer) is
* beginPointerToSharingList :=PointerToOriginalList;
end Share;
function IsEmpty(PointerToL :ListPointer) return boolean isbegin
return (PointerToL = null);end IsEmpty;
procedure InsertAtHeadOfList,(Pointer-ToTheList. in oUt L4 st~cn 2:-r
TheltemToBelnserted :in !ter) isPointerToNewNodeToBeinserted ListPc inter;
beginPointer-ToNewNodeToBelnsertec-- new ListNode;Point%.erToNewNodeToBelnserted. Data =TeBn~to
if NOT IsEmpty(Poin'terToThe'_ist) thenPointer-ToNewNodeToBeinserte.Ne, -t-..te
end if;PointerToTheList A onterToNewNodeToBelnserted;
end InsertAt~ieadof-iist.:;
procedure insertAt ,a-lOf.List(Poi-nter~ror.heLi-st, in out Lisz:Pzciznzer;
4 ~~TempPointp- - Li-,tPointer; Tetmoenetd:I e.i
PointerToNewNodeToBelnserted ListPointer;begin
PointerToNewNodeToBelnserted :=new ListNode;PointerToNewNodeToBelnsert.ed. Data := TheltemToBelnserted;if IsEmpty(PointerToTheList) then
InsertAtHeadOfList (PointerToTheList ,TheltemToBelnserted);else
TempPointer := PointerToTheList;while TempPointer.NextPointer /= n~ullloop
TempPo inter := TempPo inter. NextPo inter;end loop;
TerpPointer.NextPointer :=Pointer~roNewNodeToBelnserted;
![Page 255: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/255.jpg)
end if;end InsertAtTailOfList;
procedure InsertlnOrderlnList(PointerToTheList in out ListPointer;TA.heltemToBelnserted in item) is
Temp, Trail :ListPointer := PointerToTheList:PointerTo. heNewNodeToBelnserted :ListPointer;
beginif IsEmpty(PointerToTheList) or else
(NOT LE(Key(Pointer".oTheList.Data) ,Key(TheltemToBelnserted))) the:Insert-AtHeadOfl List (PointerTcTheList,TheltemToBelnsert-ed);
elsewhile (Temp /= null) and then
(LE(Key(Temp.Data) ,Key(TheltemToBelnserted))) loopTrail :=Temp;Temp :=Temp.NextPointer;
end loop;PointerToTheNewNodeToBelnserted :=new ListNode;PointerToTheNewNodeToBelnserted. Data :=TheltemToBelnserted;Trail .NextPointer := PointerToTheNewNodeToBelnsert ed;PointerToTheNewNodeToBelnsert-ed. NextPo int er := Temp;
end if;end InsertlnOrderlTnList-;
procedure F-emoveFromHead~f List (PointerToTheList :in out List-Pciriter;Removedltem : out Item) is
Temp :ListPointer :=PointerToTheList;begin
if IsEmpty(PcinterTcTheList) thenraise Emvtvlist;
elseRemoved7tem :=pC4 -er,:,TheList. Data;Pc-'nterTo''IheLi4st =Poi-nterToTheLi-s-. NextPoi-nter;Di4spose (Temp);
end ifend RemcveFrom-iead~fL-4--,
=rocedure Ienv~rr CLLs:? rz.:~zot :iLst;: - -E
Remo, ,eTtez 0 ot :te.-, --STemn~clnter, rzz c scie:
RerncveFrom =ead~f:,is.t'Pcir.,:erTzThe'-ist, Removediter.else
Tem=zPointer :=Pointer"'oTheList;while TempPointer.NextPointer /'= nullloop
PriorPointer :=TempPointer-;TempPointer =TempPointer. NextPointer;
end loop;RemovedItem := TempPointer-Data;Dispose (TempPointer);PriorPointer.NextPointer :=null;
end i4f;end RenoveFromTailOfList;
procedure RemoveByKeyFromList(PointerToTheList in out ListPointer;RemovedItem :out Item;
![Page 256: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/256.jpg)
KeyValue in Keytype) isTempPointer, PriorPointer :ListPointer;
beginif IsEmpty(PointerToTheList) then
raise EmptyList;elsif EQ (Key(PointerToTheList. Data) ,KeyValue) then
RemoveFrom~eadOfLiSt (PointerToTheList, RemovedItem);else
TempPointer :=PointerToTheList;while (TempPointer /= null) and then
(NOT EQ(Key(TempPointer.Data) ,KeyValue))loop
PriorPointer TempPointer;TempPointer =TempPointer. NextPointer;
end loop;if TempPointer 1=null then
RemovedItem TempPointer.Data;PriorPointer.NextPointer :=TempPointer.NextPointer;Dispose (TempPo inter);
elseraise EmptyList;
end if;end if;
end RemoveByKeyFromList;
function AreEqual(PointerToLl, PointerToL2 :ListPointer) return boolean iTempPointerToLl :ListPointer PointerToLl;TempPointerToL2 :ListPointer PointerToL2;
beginwhile (TempPointerToLl.Data = TempPointerToL2.Data) and
(TempPointerToLl /= null) and (TemnpPointerToL2 /= null)l.oop
TempPointerToLl TempPointerToLl.NextPo inter;TempPointerToL2 TempPointerToL2.NextPo inter;
end loop;;if (TempPointerToLl null) and (Temp~ointerToL2 = ilthen
return true;elsif (TempPointerToLl =null) and (Temp~ointerToLZ nulj =hen
return false;elsif (TempPinterTzcll/ nuill and jTenp~cinerz2 -*.l: -E-
return false;else
return (Temp~ointerToLI.Data = TempPointeroL2.Data ;end if;
end AreEqual;
function Lengthof(PointerToL ListPointer) return Count isTempPointer :ListPointer PointerToL;Length :Count := 0;
beginwhile TempPointer /= nullloop
Length :=Length + 1;TempPointer := TempPointer. NextPointer;
end loop;return Length;
end LengthOf;
end Lists;
![Page 257: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/257.jpg)
with Lists;package Polynomials is
subtype CoefficientType is integer;subtype ExponentType is integer;
type Term is recordCoefficient : CoefficientType;Exponent : ExponentType;
end record;
function ExponentValue(ATerm : Term} return ExponentType;
function LE(Exponentl, Exponent2 : ExponentType) return boolean;
function EQ(Exponentl, Exponent2 : ExponentType) return boolean;
package PolynomialLists is new Lists (Item=>Te--m,KeyType=>ExponenzTvpe,LE => LE, EQ => EQ,Key => ExponentValue);
use PolynomialLists;
subtype Polynomial is ListPointer;
function CreatePolynomial(InputFile : string) return Polynomia>;
function "+"(PI,P2 : Polynomial) return Polynomial;
procedure Put(P in Polynomial);
end Polynomials;
![Page 258: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/258.jpg)
with Text 10; use Text_10:package body Polynomials is
function NoMoreTerms(P :Polynomial) return boolean renamesPolynomialLists. IsEmpty;
function TermValue(P :Polynomial) return Term renamesPolynomialLists.GetData;
procedure AddTermToPolynomi al(P :in out Polynomial; ATerm in Term)renames PolynomialLists. InsertlInOrderlnList;
function MoreTerms(P :Polynomial) return boolean isbegin
return NOT (NoMoreTerms(P));end MoreTerms;
function ExponentValue(ATerm :Term) return ExponentType isbegin
return ATerm. Exponent;end ExponentValue;
function CoefficientValue(ATerm :Term) return CoefficientType isbegin
return ATer-m. Coefficient;end CoefficientvValue;
function LE(Exponentl, Expcnent2 ExponentType) return boolean isbegin
return Exponent! <= Exponent27;end LE;
tunction EQ(Exponenti, Expcnernr2 7Expcner-.rTx're. return boccLea. is
return Expcnent.7 = Exzcnent2;end EQ;
function Crael'na.~rt~e sr~cretur-ATerm Ter=;PclynorialFile :file :'.ne;
pe-ckaae 7nrC -- s new :n: eaer_ tcr
begin0pen'Polncr-aFilE,7n F ile,7nputJile';while NOT end-of-file(PolvnomialFile)loor
Get (Polynomial.7ile, ATer-m. Coeff ici-en,);Get (PolynomialFile, ATer-m. Exponent);if ATerm.Coefficient /= 0 then
AddTer-mToPolynomial (P,ATe-r);end if;
end loop;return P;
except ionwhen NameError=>Put Line("IERROR - Nonexistent file");when DataError=>PutLine("IERROR - Data error in file");
end CreatePolynomial;
function "1+"(Pl,P2 :Polynomial) return Polynomial is
![Page 259: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/259.jpg)
Temp,. Polynomial :=P1;Temp2 :Polynomial :=P2;Sum :Polynomial;Tail :Polynomial;
beginif IsEmpty(Pl) then
Copy(P2,Sun);elsif IsEmpty(P2) then
Copy (P1, Sum) ;else
while (MoreTerms (Tempi) and MoreTerms (Temp2))loop
-ewhile (MoreTerms(Templ) and MoreTerms(Temp2)) and the(ExponentValue (TermValue (Terpi) ) =ExponentValue (TermValue (Trerp:
loopif (CoefficientValue(TermhValue(Templ)) +
CoefficientValue(TermVa-ue(Temp2))) /= 0 thenAddTer-mToPolynomial (Sum, (CoefficientValue (Ter-mValue (Templ',
+CoefficientValue (TermValue (Tein=2,ExponentValue (Ter-mValue (Templ>','
end if;Temp-' Successor(Pl,Templ);Temp2 Successor(P2,Temp2);
end loop;
while (MoreTerms(Templ) and MoreTerms(Temp2)) and then(ExponentValue (TermValue (Templ) ) <ExponentValue (TermValue (Ter=--
1 cpAddTer-mToPolvnomiaI (Sum, (Coef ficientValue (TermValue (TenPI.
Ecponent"Value(Ter-mValue(Templ!)),',Templ : Successor,'Pl,Templ);
end loop;
while (MoreTe--s (Templ) and MoreTerms (Temp2) ) and then(ExponentValue (Ter-rValue (Temp2) )<rExpcnentValue (TermValue 'Temr I
. cc:e r i r. o? - Ivny r. :'. ( Sur~ (Co e ic ie n tV a Iue ( T e n Va Iue(Te m
ExnonentValue rTert=\alue (en=2Ternz2 S. z:cesscrI-?-2,Tenzp2'
end z : =en' C~
-f M:re-esrs': ernZ hTenp!: Tenz2;
end :whil 1e McreTerms (Ter= 1) 1loop
Add".ermnToPolynomial 'Sum, (CoefficientValue (TermnVa'lue (Templ)),Exponent Value(Ter-mValQe(Tenpl))));
TIempi : Successor(Pl,Temnpl);end loop;
return Sur.;en,.-';
procedure Put(P :in Polynomial) isTemp :Polynomial:=Ppackage Int_IO is new integer_IO(integer);use Int 10;
begin
![Page 260: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/260.jpg)
while MoreTerms(Temp) loop
if CoefficiefltValue(Term~Value(Temp)) > 0 thenPut(,'+,);
end if;Put(CoefficientValue(TerKValue( 'Iemp)) ,O);Put (11X )Put, (ExponentValue(TermfValue(Temp)) ,O);Temp :=Successor(P,Temp);
end loop;end Put;
end Polynomials;
![Page 261: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/261.jpg)
with Polynomials, Text ' 1; use Polynomials, Text_10;procedure AddPolynomials is
FirstPolynomial,SecofldPolylomial :string(l. .30)it to ;
procedure GetPolynomialFileName(FieNamhe: out string) isNuinChars natural;TFileName string(l. .30);
beginNewLine(2);PutUine("Enter filename where a polynonr4a2 i- lc-e.)Get Line(TFileName,NumChars);FileName := TFilename(l. .NumChar-s);
end GetPolynomialFileName;
beginNewPage;GetPolynomialFileNane (First Polynomial);GetPolynomialFileName (SecondPolynomial)7Put (CreatePolynomial(Fi-rst-Polynomial) -' Cr-eatePclynomnial (SecondPci-vnoc.za-
end' AddPolynomials;
![Page 262: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/262.jpg)
generictype Item is private;type Index is (<>);type Items is array(Index range <>) of Item;with function "<" (Left : in Item;
Right : in Item) return Boolean;package Heap-Sort is
procedure Sort (TheItems : in out Items);
end HeapSort;
generictype Item is private;type Index is (<>);type Items is array(Index range <>) of Item;with function "<01 (Left : in Item,
Right : in Item) return Boolean;package QuickSort is
procedure Sort (TheItems in out Items);
end QuickSort;
7enerictype Item is private;type Index is (<>);type Items is array(index range <>) of Item;with function "<" (Left : in Item;
Right : in Item) return Boolean;package BinaryInsertionSort is
procedure Sort (TheItems : in out Items);
end BinaryInsertionSort;
[Taken from Software Components with Ada by Grady Booch]
![Page 263: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/263.jpg)
generictype Key is limited private;type Item is limited private;type Index is (<>);type Items is array (Index range <>) of Item;with function IsEqual (Left : in Key;
Right r in Item) return Boolean;package SequentialSearch is
function LocationOf (The_Key : in Key;InTheItems : in Items) return Index;
Item-NotFound : exception;
end SequentialSearch;
generictype Key is limited private;type Item is limited private;type Index is (<>);type Items is array(Index range <>) of Item;with function Is_Eaual (Left : in Key;
Right : in Item) return Boclean;with function IsLessThan (Left : in Key;
Right : in Item) return Boolean;package OrderedSequentialSearch is
function Location_Of (The Key : in Key;InTheItems : in Items) return index;
item_Nct_Found : exception;
end OrmeredSecuentia._Searon :
~endr~
t"pe Key is limited private;me e1s l..te_ private;
type :ndex is (<>);type Itens is array(Index range <>) of Item,with function Is_Equal (Left : in Key;
Right : in Item) return Boolean;with function IsLessThan (Left : in Key;Right in Item) return Bolean;acka=ge BinarySearch is
function Location Of (TheKey : in Key;InTheItems : in Items) return ndex7
ItemNotFound : exception;
2nd Binary_Search;
Taken from Software Comoonents with Ada by
![Page 264: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/264.jpg)
0
LA
0 0
LLA
0 C0
0 @0
WLcong
0~*
(UC
U w.j<U
L
+)+
![Page 265: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/265.jpg)
z0
1-
Z N
z0D W1 0z (
u U> z
F- C U) cI W
W w uI w z zw Q C
H 1- 04 z>LL LL c
w M mw
![Page 266: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/266.jpg)
z
z0
z 0 :30LL >r C Z
0 H 1%I- z)>0C -
00 It
C0 H t mm0
I- a I-m :
ZL WIL WWm z
CD1-o
![Page 267: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/267.jpg)
U) (11I w J
cc ww w w
Zn Z >w w
I- W U) a: x0 H
CI 7. w - F
Q N Z :3 CC 0 > 0 W
Jl N H- Jlc w (N m i X:u1-4 0 ZZ Jl W0 ED rM
z(n
![Page 268: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/268.jpg)
LU > -
L z LU I- LUJu0Jz u.
LU Zr L(Z
LU Lii IMi F- crc -ILU (Z0 0 '--
1-
0xLU I Co ri z LUz~L W-- L
LU aL 0
J C mLzI-ZL
L)uC )I-I MLU
F-LU..J IC
LuC LU) J)
![Page 269: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/269.jpg)
CD
wIw
J -
WZ
0- LLW F-z
W W- U aIm C4 0
F- ZmxcUZ - w) U
CCz z 'mI. -4W C H D
F-) 0D C:m
![Page 270: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/270.jpg)
w w
F- W F
F- W W Cw
0D F- mZD 0 0 WO0z
z C wItwZ z w a 0
I- 0 .WCD (nU)F- CU) - W H WF
Z Z CZ (1) 16/1
a. uL C 0
U) W I ww 00))WW 0 01r -
F- ~j x> CzmD wa .1 - LLO0
Z C(.30 O C)-iI
H F-D> WZ w I-Q
CD mDL z I umV- :Cw 3w w W u14
Wz t ( - z w ww 0
a (z IW COLF-(
![Page 271: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/271.jpg)
w ~0 0) w
w Iz C
mOw
x-l w zIt 0) ZF
Z
0:
z U)CE Z 9 1r w Citz Z w4 F-
O.0 ie(u L it
wz n It 0 0w 0 E JC (z
0 u
LL
![Page 272: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/272.jpg)
wI w
F- I >U
I-r WM F- MXW
W ZI F- (r
F- Uz w
F- F- C 0 - F-Q wC r) U)
C w > sit.phJIF- F- F-ZXw
U) ( F- M W H.J-~W >L u a0 I
0 H0 ~OW - LUZF- ~m 00(
uJ ezW I$ ZZ 0 >W >Lw H JWZ 0 zZ
W FI- W F- C 00 0x (r > F- CL
HIt4 WM - -0.CM
(1)M - iw 0 a.W W4(EctwCJILL 00u
0) CLL wLLW wW xX(I C L.0Im w w
I- w I-
![Page 273: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/273.jpg)
vo
So
![Page 274: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/274.jpg)
*~~j Cl -nULL0 0
0crJ 0 X OW
.4 ww > (1)Z uj LL F- F- 0w
(XLL Cl) O H I,F - C() C U) m
z U) F- W 0an wa
F- WCJI Ul)1U4 LW w 10 WU)
w W 0F- F-C CDWCl) U) W F- U
U)ww( 4wW W 0w Iw z C
U I- 0 a. F- 0 0U F- 00 cn>C .w
CJ) F- >)0
F- < 1) U) ImZ LL J 0u F-L Ww wQ W I-
W Cn z z H Z I-PCD M U - 0 (Zw
J 4W Z W 14C
(Xm0 0 0F- Z LLC
![Page 275: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/275.jpg)
I-t
mm,1.p .4
C. L .
I-
L L
![Page 276: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/276.jpg)
/I"
/\ ,/
II
! . I,, \ .L
, x ,
,- - " a
I t ( '
A u
I, .
![Page 277: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/277.jpg)
zC J WCD W0.m HzzLIz
LL F-0 WHH) m a (3
0 wa CCZ - W Z(1)C UJ Z z IQ ICf 3w z w
C W C.Z Im c :c lI -0. C. .JZ w 0 m x z w
0o ~C 0 I W - 0W cr a - F>aL 0 J - .O C) (
C~U crr) W - 0 lL0- UOw C J WJ (j)
C )U 0CW.)- )L). F- C a(J cr a M w
C w ~ Uc Z U-L) z leuo vW C
Ci 0) 1) 0 j)) U rz ()()W c Zi C 0~ 0O c CC C
F- I Cj F- L
-I wED I - C Cz w w z
0 .lejZ3 0 C 0
a Z a 0 x It Z.iw j0 W m
W mi m13 - C
![Page 278: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/278.jpg)
task (type] [is{ entry declaration }representation Iclause)I
end [task~si uple name)
task body task simple_name is(declarative part]
beg in[ sequence -of a ta tements]I
[exceptionexception handler{exception-handler))
end [task_simple name];
14
![Page 279: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/279.jpg)
W On
F- w w(w1 W - (ax 0) (Da(Z 0 > C(
z z W: CD 1) F-W
Im H W ImCD z 0 .J~ g- I - -
x Z - J MU)- F- HH- 0 C w :)zZJJ 0 F- (JI z 0 0w J J I. FXuW u 0 (u I 00 0C H 0 (m a H.H
x- C F- 0 0
w ~ C z wZDIJF- UW Z) F- CWW
F..- (.3CLCLJ H.. H F-) (D uL
uW z 0 -0 nCHC VW (3 Hz 0
UZ 0 WHZW 0Hz -zo 0- xJ D o
F- F- F- C<1
![Page 280: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/280.jpg)
SIMPLEST FORM OF TASK ENTRY
ACCEPTTASK Ti is
ENTRY ENTRYl;END TI;
TASK BODY TI isBEG IN
LOOP
ACCEPT ENTRYI DO<SOS>
<O>END ENTRYl;
END LOOP;END TI;
--WAIT FOREVER FOR CALL To ENTRYl
16
![Page 281: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/281.jpg)
I-
W C0..J
ILIL (s W
oL >-W z
>- zaF-H
(1) UX u 0O
F- 0- WCOimC WI 1U C Cf
'C 01 z D0-F- J : Z z
0 ZO 0WCD
W z 00-a
> u I I 0. F> ow -0II ZW -XF
![Page 282: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/282.jpg)
w > w J)
>- 1-4F- w jw 0 0 I-z Cfl 00 so.
F- z w
C. Cee 0 fm
cm >- 1- o.
L.) C) itmi-r W C-lizC0z J-~ F- 04MQu
0 -CLU - . anF- HF- n( QC 0 0)><r> 6C j0 WJ OOft
- a H C). W WF-w z 0J w0i 40wz I I
W) I- iiU I(3
![Page 283: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/283.jpg)
0
0 Wj0.
CL. Ei C:
I I
C 0J>-- C
CC ZC F-
(W tm l (X0I
ZH C 0
0 j J F-IU UZ
Uzz uo IIzU0C w(>ww asWjQa mIz ma> 0a L (WJ0F
![Page 284: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/284.jpg)
TASK TI isENTRY ENTRYl;
END Ti;
TASK BODY Ti isBEGIN
LOOP
ACCEPT ENTRYl; -- 'SYNC' CALL ONLY<SOS>
END LOOP;END TI;
-- WAIT FOREVER FOR CALL TO ENTRYl
-- EVEN IF ENTRYI HAS PARAMETERS ASSOCIATED WITH-- IT, THE ACCEPT BLOCK DOES NOT HAVE TO HAVE A-- SEQUENCE OF STATEMENTS
20
![Page 285: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/285.jpg)
SELECT STATEMENT
USED BY THE TASK TO ALLOW OPTIONS
SIMPLEST FORM IS THE SELECTIVE WAIT (WAIT FOREVER)
TASK Ti ISENTRY ENTRY1;ENTRY ENTRY2;
END Ti;
TASK BODY TI isBEGIN
LOOPSELECT
ACCEPT ENTRY1 DO
END ENTRYI;<SOS>
ORACCEPT ENTRY2 DO
<SOS>END ENTRY2;<SOS>
-- AS MANY 'OR' AND ACCEPT CLAUSES AS NEEDED
END SELECT;END LOOPJ
END T.";-- WAIT FOP EITHER Pi EN7RYZ
21
![Page 286: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/286.jpg)
SELECTIVE WAIT WITH ELSE (DON'T WAIT AT ALL)
TASK Ti isENTRY ENTRY1;
END Tl;
TASK BODY TI tsB EG I N
LOOPSELECTACCEPT ENTRYl Do
<SOS>END ENTRYl;<SOS>
ELSE<SOS>
END SELECT;END LOOP;
END T I;
IF THERE IS NCT A CALLER WAJ1T N6 1T JDO THE ELSE PART-
22
![Page 287: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/287.jpg)
SELECTIVE WAIT WITH ELSE, MULTIPLE
ACCEPTS
TASK TI ISENTRY ENTRYI;ENTRY ENTRY2;
END TI;
TASK BODY Ti isBEGIN
LOOPSELECT
ACCEPT ENTRYI DO<SOS>
END ENTRYl;<SOS>
OR
ACCEPT ENTRY2 DO
AS MANY 'OR' AND 'ACCEPT' CLAUSES AS NEEDED
ELSE<SOS>;
END SELECT;END LOOP;
END TI;
23
![Page 288: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/288.jpg)
SELECT WITH DELAY ALTERNATIVE
(WAIT A FINITE TIME)
TASK BODY TI IS
BEG I N
LOOPSELECTACCEPT ENTRYI Do ....
[ORACCEPT ENTRY2 ..... I
ORDELAY 15-0; -- ECONDS
<SOS>;END SELECT;
END LOOP;END TI;
IF ENTRYI CALLED WITHIN 15 SECONDS,
THEN YOU ACCEPT THE CALL. OTHERWISE,
AFTER 15 SECONDS YOU WILL DO SOMETHING.
24
![Page 289: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/289.jpg)
'DELAY' RULES
YOU MAY HAVE SEVERAL ALTERNATIVESWITH A DELAY STATEMENT.
SINCE DELAYS CAN BE STATIC, THE SHORTESTDELAY ALTERNATIVE WILL RE SELECTED.
ZERO AND NEGATIVE DELAYS ARE LEGAL.
YOU MAY NOT HAVE AN ELSE PART WITHA DELAY, SINCE THE DELAY WOULD NEVERBE ACCEPTED.
I] 25
![Page 290: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/290.jpg)
SELECT WITH DELAY ALTERNATIVE(WAIT A FINITE TIM E)
TASK BODY Ti isBEGIN
LOOPSELECTACCEPT ENTRYI DO ....
[ORACCEPT ENTRY2 ..... ]I
ORDELAY <EXPRESSION>;
f OR <SOS>;
DELAY <EXPRESSION);<SOS>;
--SHORTEST DELAY WILL GET CHOSEN
END SELECT;END LOOP;
END Ti;
26
![Page 291: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/291.jpg)
GUARDS CAN BE USED ON ANY ACCEPT
STATEMENT
*WHEN SOME CONDITION =>ACCEPT-ENTRY1 ......
IF THERE IS NO GUARD, THE ACCEPT STATEMENTIS SAID TO BE OPEN.
IF THERE IS A GUARD, AND THE WHEN CONDITIONIS TRUE, THE ACCEPT IS ALSO OPEN.
FALSE GUARD STATEMENTS ARE SAID TO BE CLOSED.
OPEN ALTERNATIVES ARE CONSIDERED- IF THERE ISMORE THAN ONE, THEN ONE IS SELECTED ARBITRARILY.
IF THERE ARE NO OPEN ALTERNATIVES (AND NO ELSEPART), THE EXCEPTION PROGRAMERROR IS RAISED.
27
![Page 292: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/292.jpg)
TERMINATION
WHEN A TASK HAS COMPLETED ITS SEQUENCEOF STATEMENTS, ITS STATUS IS COMPLETED
ADDITIONALLY, THERE IS AN OPTION THATALLOWS A TASK TO TERMINATE-
SELECTACCEPT ENTRY1 DO
[ORACCEPT ENTRY2 DO ..... ]
ORTERMINATE;
END SELECT;
THIS MAY NOT BE USED WI T H EITHER THETHE DELAY OR AN ELSE CLAUSE-
SINCE THIS IS USED ONLY WITH A 'WAIT FOREVER'TASK, THIS OPTION ALLOWS A TASK THAT ISWAITING FOREVER TO TERMINATE IF ITS PARENT
IS ALSO READY TO QUIT.
28
![Page 293: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/293.jpg)
q
*rMI
L zw
fl(D
z NU LA
zU 3
LU
cl L
![Page 294: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/294.jpg)
wJ0 0: J
%Eo - C
W W Z ..
> I-I Z Z LL
UC I- 0H W~)Cir1 W l C J:
I-C WO U) :3z -
W C 0 0 0I- Wm I- WCm
z-' ZW J - > (L' Q0H4 H- H- _. UD W H
Z 0W u C u V.
L C U) QH F
Cl) :3 F- z LC F- 0 ) W (C
W-C I xi. u F-
Z Z C uW C F- CW CU CC~ ODc -0Z
IL'- 1Cm 0O m0 1- H- L.F
![Page 295: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/295.jpg)
w W) w
w wH Jw CO x IJ
F- F-C
0i H a.oW W F
0 x - . ( 0 it
OWW OW 00IF
JZn L-0LDF I
wH vW IXF- () IF IW~~ F- aH I <1
F- w F W( - z
0 H (ti HIE Cu I x (.3
II (C OI W W-
0 W0m JI
zr ILW :I z F-H c 0 0 Q
WOWo0 iCw J Wz
F- M w
![Page 296: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/296.jpg)
a-
En~C w . - I)I- a a Lu
04 0 U wCi
4 it ItI U) Z .
0i 0 1 I>
a. LL w t0 x (
u ~ CLL W (
Im (j) Ci J U)
ww F-LL u U)air.) 0 Im w0
I IIC 13 ( - Li.w F-0 Z W W mc.j skM UX 1 ciC3 z U)
0 w IX F- c Uj).. aiw~o I : . u 0
0a. (j) Li Ca u3 W WX xa za W! 0 >
j ua 0 0 ( Li. Jz z
Z amW 0
![Page 297: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/297.jpg)
w I
W 1) x
m ww z W
mJI-fH xC )
0C-
z~ (j) 1))
C w
![Page 298: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/298.jpg)
TASK SEMAPHORE isENTRY P; --GET RESOURCEENTRY V---RELEASE
END SEMAPHOAE;
TASK BODY SEMAPHORE isAVAILABLE : BOOLEAN := TRUE;BEG IN
LOOPSELECT
WHEN AVAILABLEACCEPT P DO
AVAILABLE := FALSE;END P;
ORWHEN NOT AVAILABLEACCEPT V DOAVAILABLE TRUE;END V;
ORTERMINATE;
END LOOP;END SEMAPHORE;
32. 1
![Page 299: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/299.jpg)
TASK SPECIAL OPS ISENTRY ASSIGN ( OBJECT :IN SOMETYPE )ENTRYv RETRIEVE ( OBJECT :OUT SOMETYPE);
END CLPECIALOPS;
TASK BODY SPECIALOPS ISTHEOBJECT :SOME_TYPE;BEG IN
LOOPSELECTACCEPT ASSIGN(OBJECT:IN SOMETYPE)DO
THE OBJECT := OBJECT;END ASSIGN;
ORACCEPT RETRIEVE(OBJECT:OUT SOME-TYPE)DO
OBJECT:; THEOBJECT;END RETRIEVE
ORTERMINATE;
END SELECT;END LOOP;
END SPECIAL-OPS;
~33
![Page 300: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/300.jpg)
0z
(0 0Li.
> - (1)
WL 0
w Li - (n W>(
u L) a
J z ZHL) )6/ L)H
0 F- (Z It w
umm I mci Z~mI I-
![Page 301: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/301.jpg)
CALL AND WAIT FOREVER
To CALL AN ENTRY, SPECIFY THETASK NAME AND THEN THE ENTRY NAME
BEGIN
Ti. ENTRY1(DATA);
35
![Page 302: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/302.jpg)
TIMED ENTRY CALL(WAIT FOR A FINITE TIME)
SELECTT1.ENTRYI(DATA);
<SOS>OR DELAY
60;<SOS>
END SELECT;
YOU CANNOT USE AN 'OR' TO CALL TWO (OR MORE)TASK ENTRIES!!!
THIS WOULD BE EQUIVALENT TO STANDING IN TWO
DIFFERENT LINES AT ONCE.
36
![Page 303: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/303.jpg)
CONDITIONAL ENTRY CALLS(DON'T WAIT AT ALL)
SELECTTl.ENTRY1(DATA);<SOS>
ELSE<SOS>
END SELECT;
NOTICE THE 'ORTHOGONALITY' OR THE
SELECT STATEMENT- IT IS USED INEITHER A TASK ENTRY CALL OR ANACCEPT STATEMENT-
ALSO NOTICE THAT INSTEAD OFIACCEPT-..BEGIN... END ACCEPT;
IT IS
'ACCEPT.-.DO .... END ENTRYNAME;
WHY???
37
![Page 304: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/304.jpg)
.wL ww IMZ-U) Z
J W -Z (C J
> m jw Itz uZCZ IZrWH
n~ c 0zcaD wz r
w~ z z . C iZ I M rHz w 00(1F
~wcn z J.iw m0Hj/-3j =) F- F XWC )
x ~I - LLM - m zC-
wI
W I-zz
W 0
I-r I- U
![Page 305: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/305.jpg)
(3 >U (3
al) JI V-LU. LU Ia OZ
crxz LUa. z :) I>-
ci) x LL L t( xw LU 0 I - -
'p-4 I> aD)rF- u ) U 1- .Z
w- w' u H a~it I
0C( Im ~0 aw (3: HU C
a) 0 (1) Z wJCL %oo a a.w > iJ
F- 0F
E0 1- LUtC '-' ) (Zxx
cr. LU 0 0 a DI
Sco U) mN LL
0 0 u 0 CNZ Mz 0 3 ww w
c w 1 0 I C
0a.: LLZ J~
![Page 306: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/306.jpg)
SYNCHRONIZATION OF DATA
TASK SYNC IsENTRY UPDATE ( DATA : IN DATA TYPE);ENTRY READ ( DATA :OUT DATA-TYPE);
END SYNC;
TASK BODY SYNC isLOCAL : DATATYPE;BEGIN
LOOP
SELECTACCEPT UPDATE(DATA : IN DATATYPE) DO
LOCAL :- DATA;END UPDATE;
ORTERMINATE;
END SELECT;
SELECTACCEPT READ (DATA OUT DATATYPE) DO
DATA := LOCAL;END READ;
ORTERMINATE;
END SELECT;
END LOOP;END SYNC;
40
![Page 307: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/307.jpg)
FAMILIES OF ENTR:Es
TYPE URGENCY is (LOW, MEDIUM, HIGH);
TASK MESSAGE isENTRY RECEIVE(URGENCY) (DATA : DATATYPE);
END MESSAGE;
TASK BODY MESSAGE isBEGIN
LOOPSELECT
ACCEPT RECEIVE(HIGH) (DATA:DATATYPE) Do
END RECEIVE;ORWHEN RECEIVE(HIGH)'COUNT = 0 =>ACCEPT RECEIVE(MEDIUM) (DATA:DATATYPE) DO
END RECEIVE;ORWHEN RECEIVE(HIGH)'COUNT+RECEIVE(MEDIUM)'COUNT=OACCEPT RECEIVE(LOW) (DATA:DATATYPE) DO
END RECEIVE;OR
DELAY 1.0; -- SHORT WAITEND MESSAGE;
41
![Page 308: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/308.jpg)
SAME THING, WITH NO GUARDS
TYPE URGENCY is (LOW, MEDIUM, HIGH);
TASK MESSAGE isENTRY RECEIVE(URGENCY) (DATA : DATATYPE);
END MESSAGE;
TASK BODY MESSAGE isBEGIN
LOOPSELECT
ACCEPT RECEIVE(HIGH) (DATA:DATATYPE) DO
END RECEIVE;ELSE
SELECTACCEPT RECEIVE(MEDIUM) (DATA:DATATYPE) DO
END RECEIVE;ELSE
SELECTACCEPT RECEIVE(LOW) (DATA:DATATYPE) Do
END RECEIVE;OR
DELAY 1.0; -- SHORT WAIT
END SELECT;END SELECT;
END SELECT;END MESSAGE;
41.1
![Page 309: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/309.jpg)
REPRESENTATION SPECIFICATIONS
LENGTH CLAUSE
T'STORAGESIZE
TASK TYPE Ti isENTRY ENTRY 1;FOR T1'STOR GE SIZE USE
2000*SY TEM.STORAGE_UNIT);END Ti;
THE PREFIX T DENOTES A TASK TYPE.
THE SIMPLE EXPRESSION MAY BE STATIC, AND IS USED
TO SPECIFY THE NUMBER OS STORAGE UNITS TO BE
RESERVED OR FOR EACH ACTIVATION (NOT THE CODE) OF
THE TASK.
42
![Page 310: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/310.jpg)
ADDRESS CLAUSE
TASK TYPE Ti isENTRY ENTRYi;FOR TI USE AT 16#167A#;
END TI;
IN THIS CASE, THE ADDRESS SPECIFIES THE ACTUAL
LOCATION IN MEMORY WHERE THE MACHINE CODE
ASSOCIATED WITH TI WILL BE PLACED.
TASK Ti isENTRY ENTRY_1;FOR ENTRY_1 USE AT 16#40#;
END TI;
IF THIS CASE, ENTRY_1 WILL BE MAPPED TO HARDWARE
INTERRUPT 64.
ONLY IN PARAMETERS CAN BE ASSOCIATED WITH
INTERRUPT ENTRIES-
AN INTERRUPT WILL ACT AS AN ENTRY CALL ISSUED BY
THE HARDWARE, WITH A PRIORITY HIGHER THAN ANY
USER-DEFINED TASK-
DEPENDING UPON THE IMPLEMENTATION, THERE CAN BE
MANY RESTRICTIONS UPON THE TYPE OF CALL TO THE
INTERRUPT, AND UPON THE TERMINATE ALTERNATIVES.
NOTE: YOU CAN DIRECTLY CALL AN INTERRUPT ENTRY.
43
![Page 311: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/311.jpg)
TASKS AT DIFFERENT PRIORITIES
GIVEN 5 TASKS, 3 OF VARYING PRIORITY, 1 TO BE INTERRUPTDRIVEN, AND I THAT WILL BE TIED TO THE CLOCK.
PROCEDURE HEAVY-STUFF IS
TASK HIGH-PRIORITY ISPRAGMA PRIORITY(50); --OR AS HIGH AS SYSTEM ALLOWSENTRY POINT;
END HIGHPRIORITY;
TASK MEDIUMPRIORITY isPRAGMA PRIORITY(25);ENTRY POINT;
END MEDIUMPRIORITY;
TASK LOWPRIORITY isPRAGMA PRIORITY(1);ENTRY POINT;
END LOWPRIORITY;
TASK INTERRUPT DRIVEN isENTRY P01NT;FOR POINT USE AT 16#61#; -- INTERRUPT 97
END INTERRUPTDRIVEN;
TASK CLOCKDRIVEN is-- THERE ARE TWO WAYS TO DO THIS
-- FIRST WAY IS TO HAVE ANOTHER TASK MONITOR-- THE CLOCK, AND CALL CLOCKDRIVEN.CALL-- EVERY TIME UNIT.ENTRY CALL;
-- SECONo WAY IS TO ACTUALLY TIE CALL TO AN-- CLOCK INTERRUPT, AND LET CALL DETERMINE WHEN-- HE WISHES TO PERFORM AN ACTIONFOR CALL USE AT 169324; --ASSUME INTERRUPT 50
IS A CLOCK INTERRuIPTEND CLOCK DRIVEN;
END 4EAVYSTUFF;
I
1 43.1
![Page 312: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/312.jpg)
TASK QUEUE ISENTRY INSERT(DATA : IN DATA TYPE);ENTRY REMOVE(DATA :OUT DATA-TYPE);
END QUEUE;
TASK BODY QUEUE isHEADTAIL : INTEGER := 0;Q : ARRAY (1..100) OF DATATYPE;BEGIN
LOOPSELECT
WHEN TAIL - HEAD + 1 /= 0 AND THENTAIL - HEAD + 1 /= 100 =>
ACCEPT INSERT(DATA : IN DATATYPE) DOIF HEAD - 0 THEN HEAD := 1; END IF;IF TAIL = 100 THEN TAIL := 0; END IF;TAIL :- TAIL + 1;Q(TAIL) := DATA;
END INSERT;OR
WHEN HEAD /= 0 =>ACCEPT REMOVE(DATA :OUT DATATYPE) DO
DATA := Q(HEAD);IF HEAD = TAIL THEN
HEAD 0;TAIL 0;
ELSEHEAD HEAD + 1;IF HEAD > 100 THEN HEAD 1; END !F;
END IF;END REMOVE;
ORTERMINATE;
END SELECT;END LOOP;
END QUEUE;
44
![Page 313: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/313.jpg)
TASK TYPE QUEUE isENTRY INSERT(DATA : IN DATA TYPE);ENTRY REMOVE(DATA :oUT DATA-TYPE);
END QUEUE;
TASK BODY QUEUE isHEAD,TAIL : INTEGER :-O0Q : ARRAY (I..100) OF DAtA_TYPE;BEGIN
LOOPSELECTWHEN TAIL - HEAD + 1 /= 0 AND THEN
TAIL - HEAD + 1 /= 100 =>ACCEPT INSERT(DATA : IN DATA TYPE) DO
IF HEAD - 0 THEN HEAD :; 1; END IF;IF TAIL - 100 THEN TAIL :- 0; END IF;TAIL :- TAIL + 1;Q(TAIL) := DATA;
END INSERT;OR
WHEN HEAD /= 0 =>ACCEPT REMIOVE(DATA :OUT DATA-TYPE) DO
DATA : Q(HEAD);IF HEAD TAIL THEN
HEAD : 0;TAIL :" 0;
ELSEHEAD HEAD 1;IF HEAD > 100 THEN HEAD 1; M NO F;
END IF;END REMOVE;
ORTERm NATE;
END SELECT;END LOOP;
END QUEUE;
MYQUEUE, YJUR_,JEUE :QUEE; -- Two "sKs
45
![Page 314: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/314.jpg)
GE.;ER ICDATA TYPE : PRIVATEQUEUESIZE: POSITIVE : 100;
PACKAGE QUEUEPACK is
TASK QUEUE ISENTRY INSERT(DATA : IN DATA TYPE);ENTRY REMOVE(DATA :OUT DATA-TYPE);
END QUEUE;
PACKAGE BODY QUEUE_PACK isTASK BODY QUEUE is
HEADTAIL : INTEGER : 0;Q : ARRAY (1..QUEUE SIZE) OF DATA-TYPE;BEGIN
LOOPSELECT
WHEN TAIL - HEAD + 1 / 0 AND THENTAIL - HEAD + I /= QUEUE SIZE =
ACCEPT INSERT(DATA : IN DATA TYPE) DOIF HEAD - 0 THEN HEAD := 1; END IF;IF TAIL = QUEUE SIZE THEN TAIL := 0; END IF;TAIL := TAIL + 1;Q(TAIL) : DATA;
END INSERT;OR
WHEN HEAD /= 0 =>ACCEPT REMOVE(DATA :OUT DATA-TYPE) DO
DATA := Q(HEAD);IF HEAD TAIL THEN
HEAD 0;TAIL 0;
ELSEHEAD HEAD + 1;IF HEAD> QUEUESIZE THEN HEAD , ; E r
END IF;END PEMOVE;
ORTERMINATE;
END SELECT;
END LOOP;END QUEUE;
PACKAGE NEW QUEUE IS NEW QUEUE PACK(MY RECORD, 250);PACKAGE OLDQUEUE IS NEW QUEUEPACK(INTEGER);
46
![Page 315: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/315.jpg)
PROCEDURE INSERT INTEGER (DATA : IN INTEGER ) RENAMESOLDQUEUE.IN ERT;
PROCEDURE REMOVEINTEGER (DATA :OUT INTEGER ) RENAMESOLD_QUEUE.REMOVE;
47
![Page 316: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/316.jpg)
PROCEDURE SPIN (R RESOURCE) isBEGIN
LOOPSELECT
R.SEIZE;RETURN;
ELSENULL; --BUSY WAITING
END SELECT;END LOOP;
END;
-OR--
PROCEDURE SPIN (R RESOURCE) isBE GI N
R.SEIZE;RETURN;
END;
48
![Page 317: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/317.jpg)
0oz z 00 0 0 0
-LLz ZL
w so as as so
Iml
z C (1) l ()
V '-4 z>>
w 0u. LO w (0ww
> > C >U>F- a:>
cW wwW WF- Cf) cn Enf Ul)
NIm z
(II) 0
CD
![Page 318: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/318.jpg)
am
CL U.
>>
II-> .
I ,L
EL LM >
law u -
L1. IS=I =W e_
to" cz
. J ma 2 ,
.4 ~ a mmdlw 0cso*
0Z~gj wlow s
![Page 319: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/319.jpg)
rLLU
U
'I.
0, Zo
Ina.
LLJ
o6 L)L
0CC L go Nra.
C
>~ .0UM
![Page 320: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/320.jpg)
C
lwC>
C LU
04 1U.
a
> L
>0JIu1= M
L )1
a 0 = z
INI
![Page 321: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/321.jpg)
-'I-
L6m>'
is
> D
on" am
I-rn
aoc
Sm 4m0
a go.L "z 0 --
![Page 322: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/322.jpg)
C
LL.
mob
U.
>
uII
C LL
U..
1w 0
> L
Cm sobcu L
01
+
![Page 323: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/323.jpg)
> ..
CLU
= a
> IL UN
ILO
![Page 324: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/324.jpg)
mm
mmj
>
E uw%W O
uU,
00
o >I E
> %0
E -A
%20 =0 mwj
WL sob"
61 1; lLi.I s odLJ"I
GD W10GD C9
Mo noD C ~Go n
ml cCo wa
No GD
![Page 325: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/325.jpg)
w
oY >
%wo
aw
z Uloba
wIoo>>
0 oaLM~
LjJ U,LM w
00 iS
![Page 326: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/326.jpg)
> I
E uE
MLLM
IL
ILI
![Page 327: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/327.jpg)
IIULL
omob~L.U
5Oft
w
Now a E:t
- 0C L No
0 co C L)
-- t-
![Page 328: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/328.jpg)
0oz zo00 0 0 0LLZ xxLL
z z- MzUQ l
S0 ~U)QM
Li >w ::) >F- CL 00a 0 a
z C. w yL
(z U) 0 WW WW L
IU) 1)(nU)0
Im NU ZZ 0
CD
![Page 329: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/329.jpg)
sob m01
>.> >,w I.I
II I>
,U . U. U--1 -
a ,
,L, M laa '.
II-
N N
I la 0 laa, c
![Page 330: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/330.jpg)
cr.
so I C
LAJ COI z0.s U. 1J
>. +U.1 as 0 1
loss 01LI0 0 W I + o os
PR Um J %s PLO
iCL ~ :w ___w
> 0 r
I L M . * ; 0 0 = IO NS el2 1:=C w
LWD"ZI1 -W N
u3j0it
2E -Yw
LL.
IX C IL 6*100 I 00"
'5 :Lm2cC 1 ; O
c uj = =+
![Page 331: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/331.jpg)
I U
> >3 =f
C' I Iz 1W 0%
o 1 +0 la> mL
01 u 1 - .. I
uj lon> ZUZ r
g2 LL I W0'2cE iLM1- CC2MzL
0 .1 uwIL L C L Lsf
0 0 0
WIU> 5aC 4
law
![Page 332: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/332.jpg)
Lu
LiLU z
0 00 0 0 CO0'ILL M IL
0
(Z 0 ~ U) I oIz L L dLLu >Z > >u F- 0~ aO a0
0 uL)ri WuL F-00
U) >>F->> a>>
En Cfl N Cf) CJ) (z z
u 0 C* E D x
![Page 333: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/333.jpg)
W 2J
im ONC
00 1"3:
w uwU.-
U; 0
'zU Jc Lu
E~~V n C o-it nL
CAi mWc
44 0C U I z
aI ) E D- oa
so. w WI- w
![Page 334: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/334.jpg)
so
III
sb am
U,
0I1w L
0o.
o sob
U U UL
WIJ'5z
I- -I.
![Page 335: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/335.jpg)
cu
0l
CoU wM
P-6 cQ- uL41 to c
N 1~LLJL
zLL 0 aai s m = U I
z Lww II N
c CI
Io'5p
![Page 336: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/336.jpg)
L~
IM-
pmUO LMlCu L bo
C ZL L0
CU L
.0 wM
%4-C2 LM
0 LL.P"CuC
Paw 4141 ia:PON I IP S
toS CL CU CU
CVL
ko+
![Page 337: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/337.jpg)
am U'
cz I mo
CD~o 14 19 LMs
0 I= U.1 Z
= 0 0
CLUJ & zLU CLLJ la
UL LM0~ C: LOE
U)c. 0 LM I loOW=~ LU '
lowLflcw
LS C Ift cI S I Ul
![Page 338: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/338.jpg)
U.,.
emCL
sob*. L looOLJutov _" ~mEEAW=U
U11f ix
Cz IJ liwi 0ULJ CO LL 1
LUW "w L.. s u
L)1 I c amlwlol 0C-
P"nJJ laa : mb . a rICZ1
CLU >
0~ .z c0'UXP"L
![Page 339: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/339.jpg)
z" cas E
U'l L,
IINO Cz
C ~~ C+ IMX XL
EU~ r6 *-
LaL
CzCLWW L.U
is lL CLO U . -
i~~E 0gm m nC z C E0f Els
imm, =wUzwm NC0 az oft
LU E CI
ka -0
law" Ch +
![Page 340: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/340.jpg)
- >
cu cu
I
U.
0o 1 01' L
l I 4 ., >
ull 0
'w VI CC% .J
law
![Page 341: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/341.jpg)
l- I-r - Z Z
-- 11 Z P.4 H4
) 0 >- C .
I- (L lF- JI _ z
Cn z J C C Citw C uZ
w - :: ,.4J z 1 ~F- M(1
ED > 0 H (C ,"z 0- a:0H a. f. l- > I. LLv 0 En
Hn H 30 e wsI- C- I" - 1- in Iw Iml I.
Z - x W - W -W I~ 0 C 1W, 1
(Z w w C a)0 0 LOa I 1CLO U) Z11C n ( cww >n>
z n IZ a: .1 0 C3 Y. 0a3: CU)- H La:w U tw
M a. m F- H-
m W 0 W H P4 W I4-Hj .> > H-> >
U 0 w Z Wa I . c00 n m 0 cf U0. ) OWW
![Page 342: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/342.jpg)
mob
C II
"Mull CJ
I INA
_M as zZ
Now~ zU-,CL C
C IXa .C lZ L0I I j
ILIJ U.L>.~ - ru
L6 %two
Cu CL Li
...J C C L c.L 1M
CL 01 0. 2CL' C
c c
CL +
![Page 343: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/343.jpg)
Lo0
LU 41
0 Jj urn
> 0. 0
Pa J U L
"M -0 urnysa
CL. ZCu g
poo Iiu IM - L
co 0 01 A 5lp ' oP 0 -
0 L C
II S
![Page 344: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/344.jpg)
0sss*0a
z f
C A
cz wOngU
Is~ IL am _
CL
w - PIK c L f f
a *Po L
No CL ulsl
M 0 Cspa 01"
'a'
![Page 345: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/345.jpg)
cr
0mod
C
L.
U.m
C~ I (mu
PoC
CDm
CL Z
0.0C . a
3. Ii Z 4.
![Page 346: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/346.jpg)
uwa. z
)CDC -F -Ir F - z
z w
zw zF-
it Q J
CcCU
- wmI CO0 CCm W -
Jm J
H F- 1- 0
U) U)
![Page 347: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/347.jpg)
z'.me
>~
I-zwz
CU.
CD-a-j
Cm)
I
N
zC141-
-J0
U)
![Page 348: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/348.jpg)
z w
ww
<1U c '-4
LJJZ
F- 0
z> Wco
uz-J
z J,
![Page 349: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/349.jpg)
0
-J
LIu
ILL
F-
MF-
I-4w
z
u uUJ u CJ0 a
![Page 350: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/350.jpg)
IN-CLASS EXERCISE
LET US DESIGN THE TASK SPECIFICATIONS FOR THE FOLLOWINGSENARIO.
THREE TASKS HAVE ACCES TO A TYPE KNOWN AS MESSAGETYPE.
TASK_1 PRODUCES MESSAGES. TASK_2 CAN RECEIVE MESSAGES,HOLD THEM IN A BUFFER (IF NECESSARY), AND SENDS THEM TOTASK_3 WHEN THE DATE/TIME FIELD (PART OF MESSAGE-TYPE,SAYS TO.
TASK TASK_1 is
END TASK_1;
TASK TASK_2 is
END TASK_2;
TASK TASK_3 is
END TASK_3;
83
![Page 351: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/351.jpg)
TASKING EXERCISE
WRITE A MAIN PROGRAM AND TWO TASKS TO SIMULATE A HOUSE ALARMSYSTEM- THE MAIN PROGRAM IS AN INPUT SIMULATOR TO THETASKS. ONE TASK KEEPS TRACK OF THE STATUS OF THE HOUSE.ANOTHER IS THE ACTUAL ALARM SYSTEM.
TASK i: THE HOUSE STATUS (TASK NAME :HOUSE)THREE ENTRIES -> OK, NOTOK, WRITE
THE ENTRIES OK AND NOTOK SET OR RESET A FLAG THATDETERMINES THE STATUS OF THE HOUSE. NOT-OK WILL ALSO SET AVARIABLE TO TELL YOU WHICH ALARM IS CURRENTLY GOING OFF.BOTH OK AND NOTOK SHOULD PRINT OUT A MESSAGE VERIFYING THATTHEY WERE CALLED. THE WRITE ENTRY WILL PRINT THE STATUS OFTHE HOUSE- IF THERE IS AN ALARM CURRENTLY GOING OFF, WRITEWILL TELL YOU THE ALARM NUMBER.
TASK 2: THE ALARM SYSTEM (TASK NAME: ALARM)THREE ENTRIES => FIRE, INTRUDER, SHUTOFF
THE ALARM SYSTEM WILL ACCEPT ANY OF THE THREE ENTRYCALLS FROM THE INPUT SIMULATOR. IF THERE ARE NO ENTRY CALLSWITHIN 5 SECONDS, IT WILL CALL HOUSE.WRITE TO DISPLAY THESTATUS. FIRE AND INTRUDER EACH HAVE A PARAMETER INDICATIONTHE ALARM LOCATION. FIRE LOCATIONS ARE '1' THRU '9'.INTRUDER LOCATIONS ARE 'A' THRU 'Z'. FIRE AND INTRUDERSHOULD CALL HOUSE.NOTOK (AND TELL THE HOUSE WHERE THE ALARMIS SOUNDING), AND THEN PRINT OUT A MESSAGE
MAIN PROGRAM
THE MAIN PROGRAM WILL READ IN CHARACTERS FROM THEKEYBOARD. IF THE CHARACTER IS A '1' THRU '9', CALL THE FIREALARM. IF THE CHARACTER IS A 'A' THRU 'Z' THEN IT CALLS THEINTRUDER ALARM. IF THE CHARACTER IS A '0'(ZERO), THE HOUSEIS RESET TO OK. IF THE CHARACTER IS A '. ', THEN THE ALARMIS SHUTDOWN, AND THE PROGRAM ENDS. ALL OTHER CHARACTERS DONOTHING.
THE HOUSE STATUS SHOULD BE OK TO START.
84
![Page 352: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/352.jpg)
run cookie
The house is ok
The house is ok
&
Invalid character. Try aqain
The house is ok
GHouse alarm set to not OK at location GIntruder in room G
The house is not ok ..alarm is off at location G
The house is not ok ..alarm is off at location G
4House alarm set to not OK at location 4Fire Alarm # 4 has been set off.
The house is not ok ..alarm is off at location 4
0House alarm reset to OK.
The house is ok
The house is ok
The alarm has been turned off
85
![Page 353: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/353.jpg)
wi. TEXT 10;
USE TEXTTO;
PROCEDURE COOKIE is
CHAR : CHARACTER;
TASK HOUSE isENTRY OK;ENTRY NOT OK (WHERE:CHARACTER);ENTRY WRITE;
END HOUSE ;
TASK ALARM isENTRY FIRE (LOCATION:CHARACTER);ENTRY INTRUDER (LOCATION:CHARACTER);ENTRY SHUTOFF;
END ALARM ;
86
![Page 354: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/354.jpg)
TASK BODY HOUSE isTYPE CONDITION is (OK, NOT OK);ALARM-STATUS : CONDITION :z OK;ALARMLOCATION : CHARACTER;
BEGINLOOP
SELECTACCEPT OK DO
ALARM STATUS :- OK;PUTLTNE('HOusE ALARM RESET TO OK.');
END OK;OR
ACCEPT NOT OK (WHERE:CHARACTER) DOALARM TATUS :- NOT OK;ALARM-LOCATION :- WFERE;PuT_LTNE(HOUSE ALARM SET TO NOT OK AT0&
"LOCATION " & ALARMLOCATION);END NOTOK;
ORACCEPT WRITE DO
NEWLINE;CASE ALARM STATUS is
WHEN OK Z>PUTLINE('THE HOUSE IS OK");WIHEN NOT-OK => PUTLINE
('THE HOUSE IS NOT OK"&..ALARM IS OFF AT LOCATION "&ALARMLOCATION);
END CASE;NEW LINE;
END WRITE;OR
TERMINATE;END SELECT;
END LOOP;END HOUSE ;
87
![Page 355: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/355.jpg)
TASK BODY ALARM isBEGIN
LOOPSELECT
ACCEPT FIRE (LOCATION:CHARACTER) DOHOUSE.NOT OK(LOCATION);PUT ('FIRE ALARM # a);PUT (LOCATION);PUT LINE (" HAS BEEN SET OFF.);
END FIRE;OR
ACCEPT INTRUDER (LOCATION:CHARACTER) DOHOUSE.NOTOK(LOCATION);PUT ('INTRUDER IN ROOM ');PUT (LOCATION);NEW LINE;
END INTRUDER;OR
ACCEPT SHUTOFF;PUT_" LINE ('THE ALARM HAS BEEN TURNED OFF');EXIT;
ORDELAY 5.0;HOUSE.WRITE;
END SELECT;END LOOP;
END ALARM;
88
![Page 356: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/356.jpg)
BEGIN --MAINLOOP
GET (CHAR);SKI P-L I NE;CASE CHAR is
WHEN 'I' .. '9' -> ALARM.FIRE (CHAR);WHEN 'A' -. 'Z' > ALARM.INTRUDER (CHAR);WHEN 'A' .. 'Z' -> ALARM.INTRUDER (CHAR);WHEN '0' "> HOUSE.OK;WHEN '!' => ALARM.SHUTOFF;WHEN OTHERS => PUT-LINE
('INVALID CHARACTER. TRY AGAIN');END CASE;EXIT WHEN CHAR - 'I';
END LOOP;
END COOKIE;
89
![Page 357: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/357.jpg)
Tutorial on Ada Exceptions
byMajor Patricia K. Lawlis
lawlis % asu@csnet-relay
Air Force Institute of Technology (AFIT)
and
Arizona State University (ASU)
27 January 1989
![Page 358: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/358.jpg)
" Student Handout, "Ada Applications Programmer - AdvancedAda Software Engineering", USAF Technical Training School,Keesler Air Force Base, July 1986.
" J. G. P. Barnes, Programming in Ada, Second edition,Addison-Wesley, 1984.
" Grady Booch, Software Engineering with Ada, Second Edition,Benjamin/Cummings, 1987.
* Putnam P. Texel, Introductory Ada: Packages forProgramming, Wadsworth, 1986.
£ Eugen N. Vasilescu, Ada Programming with ADlications,Allyn and Bacon, 1986.
ANSI/MIL-STD-1815A, "Military Standard - Ada ProgrammingLanguage" (LRM), U. S. Department of Defense, 22 January1983.
![Page 359: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/359.jpg)
=> Overview
" Naming an exception
* Creating an exception handler
• Raising an exception
* Handling exceptions
* Turning off exception checking
* Tasking exceptions
" More examples
" Summary
![Page 360: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/360.jpg)
• What is an exception
* Ada exceptions
* Comparison
- the American way
- using exceptions
4
![Page 361: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/361.jpg)
Wht an Excapi1n
" A run time error
• An unusual or unexpected condition
* A condition requiring special attention
* Other than normal processing
" An important feature for debugging
* A critical feature for operational software
![Page 362: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/362.jpg)
" An exception has a name
- may be predefined
- may be declared
* The exception is raised
- may be raised implicitly by run time system
- may be raised explicitly by raise statement
• The exception is handled
- exception handler may be placed in any frame*
- exception propagates until handler is found
- if no handler anywhere, process aborts
executable part surrounded by begin - end
![Page 363: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/363.jpg)
package StackPackage is
type StackType is limited private;
procedure Push (Stack 'in out StackType;Element "in Element-Type;OverflowFlag "out BOOLEAN);
end StackPackage;
with TEXT_10;with StackPackage; use StackPackage;procedure FlagWaving is
Stack Stack-Type;Element ElementType;Flag BOOLEAN;
begin
Push (Stack, Element, Flag);if Flag then
TEXT_IO.PUT ("Stack overflow");
end if;
end FlagWaving;7
![Page 364: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/364.jpg)
package StackPackage is
type Stack-Type is limited private;StackOverflow,StackUnderflow : exception;
procedure Push (Stack in out StackType;Element in Element-Type);
- may raise StackOverflow
end StackPackage;
with TEXT_10;with StackPackage; use StackPackage;procedure MoreNatural is
Stack Stack-Type;Element Element-Type;
begin
Push (Stack, Element);
exceptionwhen StackOverflow =>
TEXTIO.PUT ("Stack overflow");
end MoreNaturfa;
7a
![Page 365: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/365.jpg)
• Overview
=> Naming an exception
- Creating an exception handler
* Raising an exception
* Handling exceptions
* Turning off exception checking
' Tasking exceptions
* More examples
* Summary
![Page 366: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/366.jpg)
Namnganr Expto
* Predefined exceptions
* Declaring exceptions
* 1/0 exceptions
![Page 367: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/367.jpg)
_ E e,
" In package STANDARD (also see chap 11 of LRM)
" CONSTRAINTERROR
violation of range, index, or discriminant constraint...
° NUMERICERROR
execution of a predefined numeric operation cannotdeliver a correct result
" PROGRAMERROR
attempt to access a program unit which has not yetbeen elaborated...
• STORAGEERROR
storage allocation is exceeded...
" TASKINGERROR
exception arising during intertask communication
10
![Page 368: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/368.jpg)
exception-declaration ::= identifierlist :exception;
" Exception may be declared anywhere an object declarationis appropriate
* However, exception is not an object
- may not be used as subprogram parameter, recordor array component
- has same scope as an object, but its effect mayextend beyond its scope
Example:
procedure Calculation is
Singular : exception;Overflow, Underflow : exception;
begin
end Calculation;11
![Page 369: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/369.jpg)
YOc Exccepta§cn
" Exceptions relating to file processing
" In predefined library unit 10_EXCEPTIONS(also see chap 14 of LRM)
• TEXT_10, DIRECT_10, and SEQUENTIAL_10 with it
package 10_EXCEPTIONS is
NAMEERROR exception;USEERROR "exception; --attempt to use
--invalid operationSTATUSERROR : exception;MODE ERROR :exception;DEVICEERROR exception;ENDERROR exception; --attempt to read
--beyond end of fileDATAERROR exception; --attempt to input
--wrong typeLAYOUTERROR exception; --for text processing
end 10_EXCEPTIONS;
12
![Page 370: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/370.jpg)
• Overview
• Naming an exception
=> Creating an exception handler
• Raising an exception
• Handling exceptions
" Turning off exception checking
" Tasking exceptions
• More examples
* Summary
13
![Page 371: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/371.jpg)
" Defining an exception handler
" Restrictions
" Handler example
14
![Page 372: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/372.jpg)
• Exception condition is "caught" and "handled" by an exceptionhandler
" Exception handler may appear at the end of any frame (block,subprogram, package or task body)
begin
exception-- exception handler(s)
end;
" Form similar to case statement
exception handler ---when exceptionchoice {I exception-choice} =>
sequence of statements
exception-choice ::= exceptionname I others
15
![Page 373: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/373.jpg)
* Exception handlers must be at the end of a frame
" Nothing but exception handlers may lie between exceptionand end of frame
" A handler may name any visible exception declared orpredefined
* A handler includes a sequence of statements
- response to exception condition
* A handler for others may be used
- must be the last handler in the frame
- handles all exceptions not listed in previoushandlers of the frame(including those not in scope of visibility)
- can be the only handler in the frame
16
![Page 374: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/374.jpg)
procedure Whatever is
ProblemCondition :exception;
begin
exception
when ProblemCondition =>FixIt;
when CONSTRAINTERROR =>ReportIt;
when others =>Punt;
end Whatever;
17
![Page 375: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/375.jpg)
• Overview
" Naming an exception
• Creating an exception handler
=> Raising an exception
" Handling exceptions
* Turning off exception checking
* Tasking exceptions
* More examples
" Summary
18
![Page 376: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/376.jpg)
* Elaboration and execution exceptions
" How exceptions are raised
" Effects of raising an exception
* Raising example
19
![Page 377: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/377.jpg)
* Elaboration exceptions occur when declarations are being
elaborated
- after a unit is "called"
- before execution of the unit begins
- can only be predefined exceptions
* Execution exceptions occur during execution of a frame
* Elaboration exceptions can also be considered as executionexceptions
- depending on viewpoint
- can consider as part of the execution of the lastexecutable statement making the call to the unitbeing elaborated
- this helps with understanding the consistency of
the rules for exception handling
19a
![Page 378: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/378.jpg)
• Implicitly by run time system
- predefined exceptions
* Explicitly by raise statement
raisestatement ::= raise [exception_name];
- the name of the exception must be visible at thepoint of the raise statement
- a raise statement without an exception name isallowpd only within an exception handler
iI
20
![Page 379: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/379.jpg)
(1) Control transfers to exception handler at end of frame
being executed (if handler exists)
(2) Exception is lowered
(3) Sequence of statements in exception hander is executed
(4) Control passes to end of frame
If frame does not contain an appropriate exception handler,the exception is propagated - effectively skipping steps1 thru 3 and going straight to step 4
21
![Page 380: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/380.jpg)
procedure Whatever is
ProblemCondition "exception;RealBadCondition "exception;
begin
if ProblemArises thenraise ProblemCondition; -- 1
end if;
if SeriousProblem thenraise RealBadCondition; -- 1
end if;
exception
when ProblemCondition => -- 2Fix_It; -- 3
when CONSTRAINTERROR => -- 2Report-It; -- 3
when others => -- 2Punt; -- 3
end Whatever; -- 4
22
![Page 381: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/381.jpg)
" Overview
" Naming an exception
" Creating an exception handler
" Raising an exception
=> Handling exceptions
• Turning off exception checking
* Tasking exceptions
• More examples
* Summary
23
![Page 382: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/382.jpg)
" How exception handling can be useful
* Which exception handler is used
* Sequence of statements in exception handler
* Propagation
• Propagation example
24
![Page 383: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/383.jpg)
Il
" Normal processing could continue if
- cause of exception condition can be "repaired"
- alternative approach can be used
- operation can be retried
" Degraded processing could be better than termination
- for example, safety-critical systems
• If termination is necessary, "clean-up" can be done first
25
![Page 384: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/384.jpg)
* When exception is raised, system looks for an exceptionhandler at the end of the frame being executed
* If exception is raised during elaboration of the declarativepart of a unit (unit is not yet ready to execute)
. elaboration is abandoned and control goes to theend of the unit with the exception still raised
- exception part of the unit is not searched for anappropriate handler
- effectively, the calling unit will be searched for anappropriate handler
-- consistent with execution viewpoint
- if elaboration of library unit, program execution isabandoned
-- all library units are elaborated with themain program
• If exception is raised in exception handler
- handler may contain block(s) with handler(s)
- if not handled locally within handler, control goesto end of frame with exception raised
26
![Page 385: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/385.jpg)
* Handler completes the execution of the frame
handler for a function should usually contain areturn statement
• Statements can be of arbitrary complexity
- can use most any language construct that makessense in that context
- cannot use goto statement to transfer into ahandler
- if handler is in a block inside a loop, could use exitstatement
* Handler at end of package body applies only to packageinitialization
27
![Page 386: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/386.jpg)
" Occurs if no handler exists in frame where execution
exception is raised
* Always occurs if elaboration exception is raised
- Also occurs if raise statement is used in handler
" Exception is propagated dynamically
- propagates from subprogram to unit calling it(not necessarily unit containing its declaration)
- this can result in propagation outside its scope
- task propagation follows same principle, but alittle more complicated
* Propagation continues u-,til
- an appropriate handler is found
- exception propagates to main program (still withno handler) and program execution is abandoned
28
![Page 387: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/387.jpg)
procedure DoNothing is
procedure Hasit isSomeProblem : exception;
begin
raise SomeProblem;
exceptionwhen SomeProblem =>
CleanUp;raise;
end Has_It;
procedure CallsIt is
begin
Has_It;
end CallsIt;----------------
begin -- DoNothing
Calls_It;
exceptionwhen others => Fix-Everything;
end DoNothing;
29
I
![Page 388: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/388.jpg)
" Overview
" Naming an exception
" Creating an exception handler
" Raising an exception
* Handling exceptions
=> Turning off exception checking
* Tasking exceptions
* More examples
• Summary
30
![Page 389: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/389.jpg)
" Overhead vs efficiency
" Pragma SUPPRESS
* Check identifiers
31
I
![Page 390: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/390.jpg)
* Exception checking imposes run time overhead
- interactive applications will never notice- real-time applications have legitimate concerns
but must not sacrifice system safety
* When efficiency counts
- first, make program work (using good design)- be sure possible problems are covered by exception
handlers- check if efficient enough - stop if it is
- if not, study execution profile-- eliminate bottlenecks-- improve algorithm-- avoid "cute" tricks
- check if efficient enough - stop if it is- if not, trade-offs may be necessary- some exception checks may be expendable since
debugging is done
- however, every suppressed check poses newpossibilities for problems
-- must re-examine possible problems-- must re-examine exception handlers
- always keep in mind-- problems will happen-- critical applications must be able to
deal with these problems32
![Page 391: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/391.jpg)
Improving the design is far better - and easier inthe long run - than suppressing checks
32a
![Page 392: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/392.jpg)
Only allowed immediately within a declarative part or
immediately within a package specification
pragma SUPPRESS (identifier [,[ ON =>] name]);
- identifier is that of the check to be omitted(next slide lists identifiers)
- name is that of an object, type, or unit for whichthe check is to be suppressed
-- if no name is given, it applies to theremaining declarative region
An implementation is free to ignore the suppress directivefor any check which may be impossible or too costly tosuppress
Example:
pragma SUPPRESS (INDEXCHECK, ON => Index);
33
![Page 393: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/393.jpg)
Check Idnife
* These identifiers are explained in more detail in chap 11 ofthe LRM
- Check identifiers for suppression of CONSTRAINTERRORchecks
ACCESSCHECKDISCRIMINANT CHECKINDEXCHECKLENGTHCHECKRANGECHECK
* Check identifiers for suppression of NUMERICERROR checks
DIVISIONCHECKOVERFLOW CHECK
• Check identifier for suppression of PROGRAMERROR checks
ELABORATIONCHECK
- Check identifier for suppression of STORAGEERROR check
STORAGECHECK34
![Page 394: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/394.jpg)
* Overview
" Naming an exception
" Creating an exception handler
* Raising an exception
• Handling exceptions
" Turning off exception checking
=> Tasking exceptions
• More examples
• Summary
35
![Page 395: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/395.jpg)
I
I
" Exception handling is trickier for tasks
" Exceptions during task communication
" Tasking example
36
![Page 396: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/396.jpg)
* Rules are not really different, just more involved
- local exceptions handled the same within frames
If exception is raised
* during elaboration of task declarations
the exception TASKINGERROR will be raised at thepoint of task activation (becomes executionexception in enclosing subprogram)
the task will be marked completed
* during execution of task body (and not resolved there)
task is completed
- exception is not propagated
- during task rendezvous
- this is the really tricky part
37
![Page 397: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/397.jpg)
* If the called task terminates abnormally
exception TASKINGERROR is raised in calling task at thepoint of the entry call
" If an entry call is made for entry of a task that becomescompleted before accepting the entry
exception TASKINGERROR is raised in calling task at thepoint of the entry call
" If the calling task terminates abnormally
no exception propagates to the called task
" If an exception is raised in called task within an accept (andnot handled there locally)
the same exception is raised in the calling task at the pointof the entry call(even if exception is later handled outside of the accept inthe called task)
38
![Page 398: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/398.jpg)
procedure CriticalCode is
Failure :exception;
task Monitor isentry Do-Something;
end Monitor;task body Monitor is
begin
accept DoSomething do
raise Failure;
end DoSomething;
exception -- exception handled herewhen Failure =>
Termination_Message;end Monitor;
begin -- Critical_Czde
Monitor.DoSomething;
exception -- same exception will be handled herewhen Failure =>
CriticalProblem_Message;
end CriticalCode;
39
![Page 399: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/399.jpg)
I
- Overview
. Naming an exception
- Creating an exception handler
* Raising an exception
- Handling exceptions
* Turning off exception checking
* Tasking exceptions
=> More examples
* Summary
40
![Page 400: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/400.jpg)
• Interactive data input
• Propagating exception out of scope and back in
* Keeping a task alive
41
![Page 401: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/401.jpg)
I
I
with TEXT_10; use TEXT_10;procedure GetInput (Number : out integer) is
subtype InputType is integer range 0.. 100;package Int_io is new INTEGER_10 (Input-Type);InNumber: InputType;
begin -- GetInput
loop -- to try again after Incorrect input
begin -- inner block to hold exception handler
put ("Enter a number 0 to 100");Int_io.GET (In_Number);Number := InNumber;exit; -- to exit loop after correct input
exceptionwhen DATAERROR =>
put ("Try again, fat fingers!");SkipLine; -- must clear buffer
end; -- inner block
end loop;
end Get-input;42
![Page 402: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/402.jpg)
IPrapatingJ F =*#tia Out (0 SCOPS sa JIBac[k In
declarepackage Container is
procedure HasHandler;procedure RaisesException;
end Container;
procedure Not in Package isbegin
Container. Raises_Exception;exception
when others => raise;end Not inPackage;
package body Container isCrazy "exception;procedure Has_Handler is
beginNot inPackage;
exception
when Crazy => Tell_Everyone;end HasHandLer;procedure Raises_Exception is
beginraise Crazy;
end Raises_Exception;
end Container;begin
Container. Has_Handler;
end;
4 II
![Page 403: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/403.jpg)
re. a T
task Monitor isentry Do-Something;
end Monitor;
task body Monitor isbegin
loop -- for never-ending repetition
select
accept DoSomething do
begin -- block for exception handler
raise Failure;
exceptionwhen Failure => Recover;
end; -- block
end DoSomething; -- exception must be
-- lowered before exiting
end select;
end loop;
exceptionwhen others =>
TerminationMessage;end Monitor;
![Page 404: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/404.jpg)
* Overview
" Naming an exception
* Creating an exception handler
" Raising an exception
• Handling exceptions
* Turning off exception checking
* Tasking exceptions
" More examples
=> Summary
45
![Page 405: cj9 - Defense Technical Information Center · THUIRSDAY -26 JANUARY 9:00-42:00 Bldg 1002 Tasking (Break at 10:15) Room 111 Capt David Cook USAF Academy 12:00-1:30 Lunch 1-30-4:30](https://reader033.vdocuments.site/reader033/viewer/2022052013/6029e7b0452894642c432d40/html5/thumbnails/405.jpg)
* Exception handling principles are consistent
• Suppression of exception checking will usually do more harmthan good
* Use of exceptions must become a habit to be usefult
I