Tải bản đầy đủ (.pdf) (652 trang)

Fundamentals of data structures ellis horowitz

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.02 MB, 652 trang )


APPENDIXA:SPARKS
Thissectionismeantforpeoplewhodomostoftheirprogrammingin
FORTRAN.FORTRANhasthedistinctionofbeingessentiallytheearliest
higherlevelprogramminglanguage,developedabout1957byagroupatIBM.
Sincethenitanditsderivativeshavebecomeestablishedastheprimary
languageforscientificandengineeringcomputation.But,withourgreater
understandingoftheprocessofcreatingprogramshascomearealizationofthe
deficienciesofFORTRAN.Creatingaprogramisproperlythoughtofastakinga
realworldproblemandtranslatingitintoacomputersolution.Conceptsinthe
realworldsuchasageneologytreeoraqueueofairplanesmustbetranslated
intocomputerconcepts.Alanguageisgoodifitenablesonetodescribethese
abstractionsoftherealworldinanaturalway.Perhapsbecauseofitsveryearly
development,FORTRANlacksmanysuchfeatures.Inthisappendixweexplore
theideaofwritingapreprocessorforFORTRANwhichinexpensivelyadds
someofthesemissingfeatures.
ApreprocessorisaprogramwhichtranslatesstatementswritteninalanguageX
intoFORTRAN.InourcaseXiscalledSPARKS.Suchaprogramisnormally
calledacompilersowhygiveitthespecialnamepreprocessor?Apreprocessor
isdistinguishedfromacompilerinthefollowingway:thesourceandtarget
languagehavemanystatementsincommon.
Suchatranslatorhasmanyadvantages.Mostimportantlyitpreservesaclose
connectionwithFORTRAN.DespiteFORTRAN'smanynegativeattributes,it
hasseveralpracticalpluses:1)itisalmostalwaysavailableandcompilersare
oftengood,2)thereisalanguagestandardwhichallowsadegreeofportability
notobtainablewithotherlanguages,3)thereareextensivesubroutinelibraries,
and4)thereisalargelaborforcefamiliarwithit.ThesereasonsgiveFORTRAN
astrongholdintheindustrialmarketplace.AstructuredFORTRANtranslator
preservesthesevirtueswhileitaugmentsthelanguagewithimprovedsyntactical
constructsandotherusefulfeatures.
Anotherconsiderationisthatatmanyinstallationsanicelystructuredlanguage


isunavailable.Inthiseventatranslatorprovidesasimplemeansfor
supplementinganexistingFORTRANcapability.Thetranslatortobedescribed
herecanbeobtainedbywritingtotheaddressgivenattheendofthisappendix.


InordertoseethedifferencebetweenFORTRANandSPARKSconsiderwriting
aprogramwhichsearchesforXinthesortedarrayofintegersA(N),N 100.
TheoutputistheintegerJwhichiseitherzeroifXisnotfoundorA(J)=X,1
J N.Themethodusedhereisthewellknownbinarysearchalgorithm.The
FORTRANversionlookssomethinglikethis:
SUBROUTINEBINS(A,N,X,J)
IMPLICITINTEGER(A-Z)
DIMENSIONA(100)
BOT=1
TOP=N
J=0
100IF(BOT.GT.TOP)RETURN
MID=(BOT+TOP)/2
IF(X.GE.A(MID))GOTO101
TOP=MID-1
GOTO100
101IF(X.EQ.A(MID))GOTO102
BOT=MID+1
GOTO100
102J=MID
RETURN
END

Thismaynotbethe"best"waytowritethisprogram,butitisareasonable
attempt.NowwewritethisalgorithminSPARKS.

SUBROUTINEBINS(A,N,X,J)


IMPLICITINTEGER(A-Z)
DIMENSIONA(100)
BOT=1;TOP=N;J=0
WHILEBOT.LE.TOPDO
MID=(BOT+TOP)/2
CASE
:X.LT.A(MID):TOP=MID-1
:X.GT.A(MID):BOT=MID+1
:ELSE:J=MID;RETURN
ENDCASE
REPEAT
RETURN
END

Thedifferencebetweenthesetwoalgorithmsmaynotbedramatic,butitis
significant.TheWHILEandCASEstatementsallowthealgorithmtobe
describedinamorenaturalway.Theprogramcanbereadfromtoptobottom
withoutyoureyesconstantlyjumpingupanddownthepage.Whensuch
improvementsareconsistentlyadoptedinalargesoftwareproject,theresulting
codeisboundtobeeasiertocomprehend.
WebeginbydefiningpreciselytheSPARKSlanguage.Adistinctionismade
betweenFORTRANstatementsandSPARKSstatements.Thelatterare
recognizedbycertainkeywordsand/ordelimiters.Allotherstatementsare
regardedasFORTRANandarepasseddirectlytotheFORTRANcompiler
withoutalteration.Thus,SPARKSiscompatiblewithFORTRANanda
FORTRANprogramisaSPARKSprogram.SPARKSstatementscausethe
translatortoproduceANSIFORTRANstatementswhichaccomplishthe

equivalentcomputation.Hence,thelocalcompilerultimatelydefinesthe
semanticsofallSPARKSstatements.


Thereservedwordsandspecialsymbolsare:
BYCASECYCLEDOELSEENDCASE
ENDIFEOJEXITFORIFLOOP
REPEATUNTILWHILETOTHEN:
;//

Reservedwordsmustalwaysbesurroundedbyblanks.Reservedmeansthey
cannotbeusedbytheprogrammerasvariables.
WenowdefinetheSPARKSstatementsbygivingtheirFORTRANequivalents.
Inthefollowinganyreferencetotheterm"statements"ismeanttoincludeboth
SPARKSandFORTRANstatements.TherearesixbasicSPARKSstatements,
twowhichimprovethetestingofcasesandfourwhichimprovethedescription
oflooping.
IFcondTHENIF(.NOT.(cond))GOTO100
S1S1
ELSEGOTO101
S2100S2
ENDIF101CONTINUE

S1andS2arearbitrarysizegroupsofstatements.Condmustbealegal
FORTRANconditional.TheELSEclauseisoptionalbuttheENDIFisrequired
anditalwaysterminatestheinnermostIF.

S1,S2,...,Sn+1arearbitrarysizegroupsofstatements.Cond1,cond2,...,condn
arelegalFORTRANconditionals.ThesymbolELSEsurroundedbycolons
designatesthatSn+lwillbeautomaticallyexecutedifallpreviousconditionsare

false.Thispartofthecasestatementisoptional.
Thefourloopingstatementsare:


WHILEcondDO100IF(.NOT.(cond))GOTO101
SS
REPEATGOTO100
101CONTINUE

SisanarbitrarygroupofstatementsandcondalegalFORTRANconditional.
LOOP100CONTINUE
SS
UNTILcondREPEATIF(.NOT.(cond))GOTO100

Sandcondarethesameasforthewhilestatementimmediatelypreceding.
LOOP100CONTINUE
SS
REPEATGOTO100
101CONTINUE

Sisanarbitrarysizegroupofstatements.
FORvble=explTOexp2BYexp3DO
S
REPEAT

Thishasatranslationof:
vble=expl
GOTO100
102vble=vble+exp3
100IF((vble-(exp2))*(exp3).GT.0)GOTO101

S


GOTO102
101CONTINUE

Thethreeexpressionsexp1,exp2,exp3areallowedtobearbitraryFORTRAN
arithmeticexpressionsofanytype.Similarlyvblemaybeofanytype.However,
thecomparisontestismadeagainstintegerzero.Sinceexp2andexp3arereevaluatedeachtimethroughtheloop,caremustbetakeninitsuse.
EXITisaSPARKSstatementwhichcausesatransferofcontroltothefirst
statementoutsideoftheinnermostLOOP-REPEATstatementwhichcontainsit.
Oneexampleofitsuseis:
LOOP100CONTINUE
S1S1
IFcondTHENEXITIF(.NOT.(cond))GOTO102
ENDIFGOTO101
S2102CONTINUE
REPEATS2
GOTO100
101CONTINUE

AgeneralizationofthisstatementallowsEXITtobeusedwithinanyofthefour
SPARKSloopingstatements:WHILE,LOOP,LOOP-UNTILandFOR.When
executed,EXITbranchestothestatementimmediatelyfollowingtheinnermost
loopingstatementwhichcontainsit.
ThestatementCYCLEisalsousedwithinanySPARKSloopingstatement.Its
executioncausesabranchtotheendoftheinnermostloopwhichcontainsit.A
testmaybemadeandifpassedthenextiterationistaken.Anexampleoftheuse
ofEXITandCYCLEfollow.
LOOP100CONTINUE

S1S1


CASEIF(.NOT.(cond1)GOTO103
:cond1:EXITGOTO102
:cond2:CYCLEIF(.NOT.(cond2))GOTO104
ENDCASE103GOTO101
S2CONTINUE
REPEAT104S2
GOTO100
101CONTINUE
102

EOJorendofjobmustappearattheendoftheentireSPARKSprogram.Asa
statement,itmustappearsomewhereincolumns7through72andsurrounded
byblanks.
ENDIFisusedtoterminatetheIFandENDCASEtoterminatetheCASE
statement.REPEATterminatestheloopingstatementsWHILE,LOOPandFOR.
LabelsfollowtheFORTRANconventionofbeingnumericandincolumnsone
tofive.
Theuseofdoubleslashisasadelimiterforcomments.Thusonecanwrite
//Thisisacomment//
andallcharacterswithinthedoubleslasheswillbeignored.Commentsare
restrictedtoonelineandFORTRANcommentsareallowed.
Thesemi-coloncanbeusedtoincludemorethanonestatementonasingleline
Forexample,beginningincolumnonethestatement
99999A=B+C;C=D+E;X=A
wouldbelegalinSPARKS.Toincludeasemicoloninahollerithfielditshould
befollowedbyasecondsemicolon.Thiswillbedeletedintheresulting
FORTRAN.



Wearenowreadytodescribetheoperationofthetranslator.Twodesign
approachesarefeasible.Thefirstisatable-drivenmethodwhichscansa
programandrecognizeskeywords.Thisapproachisessentiallythewaya
compilerworksinthatitrequiresascanner,asymboltable(thoughlimited),
verylimitedparsingandthegenerationofobject(FORTRAN)code.Asecond
approachistowriteageneralmacropreprocessorandthentodefineeach
SPARKSstatementasanewmacro.Suchaprocessorisusuallysmalland
allowstheusertoeasilydefinenewconstructs.However,theseprocessorstend
tobeslowerthantheapproachofdirecttranslation.Moreover,itishardtobuild
intheappropriateerrordetectionandrecoveryfacilitieswhicharesorelyneeded
ifSPARKSistobeusedseriously.Therefore,wehavechosenthefirstapproach.
FigureA.1containsaflowdescriptionofthetranslator.

FigureA.1:OverviewofSPARKSTranslator
Themainprocessingloopconsistsofdeterminingthenextstatementand
branchingwithinalargeCASE.ThisdoeswhatevertranslationintoFORTRAN
isnecessary.WhenEOJisfoundtheloopisbrokenandtheprogramis
concluded.
TheSPARKStranslatorwasfirstwritteninSPARKS.Theoriginalversionwas
handtranslatedintoFORTRANtoproduceourfirstrunningsystem.Sincethat
timeithasbeenusedbyavarietyofpeopleandclasses.Thusitisrunningfar
betterthantheoriginalversion.Nevertheless,thetranslatorhasnotbeenproved
correctandsoitmustbeusedwithcaution.


Extensions
BelowisalistofpossibleextensionsforSPARKS.Somearerelativelyeasyto
implement,whileothersrequireagreatdealofeffort.

E.1SpecialcasesoftheCASEstatement
CASESGN:exp:CASE:integervariable:
:.EQ.0:S1:1:S1
:.LT.0:S2and:2:S2
:.GT.0:S3
ENDCASE:n:Sn
ENDCASE

ThefirstgetstranslatedintotheFORTRANarithmeticIFstatement.Thesecond
formistranslatedintoaFORTRANcomputedgoto.
E.2AsimpleformoftheFORstatementwouldlooklike
LOOPexpTIMES
S
REPEAT

whereexpisanexpressionwhichevaluatestoanon-negativeinteger.The
statementsmeaningcanbedescribedbytheSPARKSforstatement:
FORITEMP=1TOexpDO
S
REPEAT

AninternalintegervariableITEMPmustbecreated.


E.3IfFappearsincolumnonethenallsubsequentcardsareassumedtobepure
FORTRAN.TheyarepasseddirectlytotheoutputuntilanFisencounteredin
columnone.
E.4Addthecapabilityofprofilingaprogrambydeterminingthenumberof
executionsofeachloopduringasingleexecutionandthevalueofconditional
expressions.

HINT:Foreachsubroutinedeclareasetofvariableswhichcanbeinsertedafter
encounteringaWHILE,LOOP,REPEAT,FOR,THENorELSEstatement.At
theendofeachsubroutineawritestatementprintsthevaluesofthesecounters.
E.5Addthemultiplereplacementstatementsothat
A=B=C=D+E
istranslatedinto
C=D+E;B=C;A=B
E.6Addthevectorreplacementstatementsothat
(A,B,C)=(X+Y,10,2*E)
producesA=X+Y:B=10;C=2*E
E.7Addanarray"fill"statementsothat
NAME(*)

exp1,exp2,exp3

getstranslatedinto
NAME(1)=exp1;NAME(2)=exp2;NAME(3)=exp3
E.8IntroduceappropriatesyntaxandreasonableconventionssothatSPARKs
programscanberecursive.
HINT:Mutuallyrecursiveprogramsaregatheredtogetherinamodule,
MODULE(X(A,B,C)(100))whosenameisX,whoseparametersareA,B,Cand
whosestacksizeshouldbe100.


E.9AddacharacterstringcapabilitytoSPARKS.
E.10Addaninternalprocedurecapabilitytoaidtheprogrammerindoingtopdownprogramrefinement.
E.11AttachsequencenumberstotheresultingFORTRANoutputwhichrelates
eachstatementbacktotheoriginalSPARKSstatementwhichgeneratedit.This
isparticularlyhelpfulfordebugging.
E.12AlongwiththeindentedSPARKSsourceprintanumberwhichrepresents

thelevelofnestingofeachstatement.
E.13GeneralizetheEXITstatementsothatuponitsexecutionitcanbeassigned
avalue,e.g.,
LOOP
S1
IFcondlTHENEXIT:exp1:ENDIF
S2
IFcond2THENEXIT:exp2:ENDIF
S3
REPEAT

willassigneitherexplorexp2asthevalueofthevariableEXIT.
E.14Supplyasimplifiedreadandwritestatement.Forexample,allowfor
hollerithstringstobeincludedwithinquotesandtranslatedtothenHx1...xn
format.
AllfurtherquestionsaboutthedefinitionofSPARKSshouldbeaddressedto:
Chairman,SPARKSUsersGroup
ComputerScience,PowellHall
UniversityofSouthernCalifornia


LosAngeles,California9007
ToreceiveacompleteANSIFORTRANversionofSPARKSsend$20.00(for
postageandhandling)toDr.EllisHorowitzattheaboveaddress.
GotoAppendixBBacktoTableofContents



APPENDIXB:ETHICALCODEIN
INFORMATIONPROCESSING



ACMCODEOFPROFESSIONAL
CONDUCT


PREAMBLE
Recognitionofprofessionalstatusbythepublicdependsnotonlyonskilland
dedicationbutalsoonadherencetoarecognizedcodeofProfessionalConduct.
ThefollowingCodesetsforththegeneralprinciples(Canons),professional
ideals(EthicalConsiderations),andmandatoryrules(DisciplinaryRules)
applicabletoeachACMMember.
Theverbs"shall"(imperative)and"should"(encouragement)areused
purposefullyintheCode.TheCanonsandEthicalConsiderationsarenot,
however,bindingrules.EachDisciplinaryRuleisbindingoneachindividual
MemberofACM.FailuretoobservetheDisciplinaryRulessubjectstheMember
toadmonition,suspension,orexpulsionfromtheAssociationasprovidedbythe
ConstitutionandBylaws.Theterm"member(s)"isusedintheCode.The
DisciplinaryRulesoftheCodeapply,however,onlytotheclassesof
membershipspecifiedinArticle3,Section4,oftheConstitutionoftheACM.


CANON1
AnACMmembershallactatalltimeswithintegrity.
EthicalConsiderations
EC1.1.AnACMmembershallproperlyqualifyhimselfwhenexpressingan
opinionoutsidehisareasofcompetence.Amemberisencouragedtoexpresshis
opiniononsubjectswithinhisareasofcompetence.
EC1.2.AnACMmembershallprefaceanpartisanstatementsaboutinformation
processingbyindicatingclearlyonwhosebehalftheyaremade.

EC1.3.AnACMmembershallactfaithfullyonbehalfofhisemployersor
clients.
DisciplinaryRules
DR1.1.1.AnACMmembershallnotintentionallymisrepresenthis
qualificationsorcredentialstopresentorprospectiveemployersorclients.
DR1.1.2.AnACMmembershallnotmakedeliberatelyfalseordeceptive
statementsastothepresentorexpectedstateofaffairsinanyaspectofthe
capability,delivery,oruseofinformationprocessingsystems.
DR1.2.1.AnACMmembershallnotintentionallyconcealormisrepresenton
whosebehalfanypartisanstatementsaremade.
DR1.3.1.AnACMmemberactingoremployedasaconsultantshall,priorto
acceptinginformationfromaprospectiveclient,informtheclientofallfactors
ofwhichthememberisawarewhichmayaffecttheproperperformanceofthe
task.
DR1.3.2.AnACMmembershalldiscloseanyinterestofwhichheisaware
whichdoesormayconflictwithhisdutytoapresentorprospectiveemployeror
client.
DR1.3.3.AnACMmembershallnotuseanyconfidentialinformationfromany
employerorclient,pastorpresent,withoutpriorpermission.


CANON2
AnACMmembershouldstrivetoincreasehiscompetenceandthecompetence
andprestigeoftheprofession.
EthicalConsiderations
EC2.1.AnACMmemberisencouragedtoextendpublicknowledge,
understanding,andappreciationofinformationprocessing,andtoopposeany
falseordeceptivestatementsrelatingtoinformationprocessingofwhichheis
aware.
EC2.2AnACMmembershallnotusehisprofessionalcredentialsto

misrepresenthiscompetence.
EC2.3.AnACMmembershallundertakeonlythoseprofessionalassignments
andcommitmentsforwhichheisqualified.
EC2.4.AnACMmembershallstrivetodesignanddevelopsystemsthat
adequatelyperformtheintendedfunctionsandthatsatisfyhisemployer'sor
client'soperationalneeds.
EC2.5.AnACMmembershouldmaintainandincreasehiscompetencethrough
aprogramofcontinuingeducationencompassingthetechniques,technical
standards,andpracticesinhisfieldsofprofessionalactivity.
EC2.6.AnACMmembershouldprovideopportunityandencouragementfor
professionaldevelopmentandadvancementofbothprofessionalsandthose
aspiringtobecomeprofessionals.
DisciplinaryRules
DR2.2.1.AnACMmembershallnotusehisprofessionalcredentialsto
misrepresenthiscompetence.
DR2.3.1.AnACMmembershallnotundertakeprofessionalassignments
withoutadequatepreparationinthecircumstances.
DR2.3.2.AnACMmembershallnotundertakeprofessionalassignmentsfor


whichheknowsorshouldknowheisnotcompetentorcannotbecome
adequatelycompetentwithoutacquiringtheassistanceofaprofessionalwhois
competenttoperformtheassignment.
DR2.4.1.AnACMmembershallnotrepresentthataproductofhisworkwill
performitsfunctionadequatelyandwillmeetthereceiver'soperationalneeds
whenheknowsorshouldknowthattheproductisdeficient.


CANON3
AnACMmembershallacceptresponsibilityforhiswork.

EthicalConsiderations
EC3.1.AnACMmembershallacceptonlythoseassignmentsforwhichthereis
reasonableexpectancyofmeetingrequirementsorspecifications,andshall
performhisassignmentsinaprofessionalmanner.
DisciplinaryRules
DR3.1.1.AnACMmembershallnotneglectanyprofessionalassignmentwhich
hasbeenaccepted.
DR3.1.2.AnACMmembershallkeephisemployerorclientproperlyinformed
ontheprogressofhisassignments.
DR3.1.3.AnACMmembershallnotattempttoexoneratehimselffrom,orto
limit,hisliabilitytohisclientsforhispersonalmalpractice.
DR3.1.4.AnACMmembershallindicatetohisemployerorclientthe
consequencestobeexpectedifhisprofessionaljudgementisoverruled.


CANON4
AnACMmembershallactwithprofessionalresponsibility.
EthicalConsiderations
EC4.1AnACMmembershallnotusehismembershipinACMimproperlyfor
professionaladvantageortomisrepresenttheauthorityofhisstatements.
EC4.2.AnACMmembershallconductprofessionalactivitiesonahighplane.
EC4.3.AnACMmemberisencouragedtoupholdandimprovetheprofessional
standardsoftheAssociationthroughparticipationintheirformulation,
establishment,andenforcement.
DisciplinaryRules
DR4.1.1.AnACMmembershallnotspeakonbehalfoftheAssociationorany
ofitssubgroupswithoutproperauthority.
DR4.1.2.AnACMmembershallnotknowinglymisrepresentthepoliciesand
viewsoftheAssociationoranyofitssubgroups.
DR4.1.3.AnACMmembershallprefacepartisanstatementsaboutinformation

processingbyindicatingclearlyonwhosebehalftheyaremade.
DR4.2.1.AnACMmembershallnotmaliciouslyinjuretheprofessional
reputationofanyotherperson.
DR4.2.2.AnACMmembershallnotusetheservicesoforhismembershipin
theAssociationtogainunfairadvantage.
DR4.2.3.AnACMmembershalltakecarethatcreditforworkisgiventowhom
creditisproperlydue.


CANON5
AnACMmembershouldusehisspecialknowledgeandskillsforthe
advancementofhumanwelfare.
EthicalConsiderations
EC5.1.AnACMmembershouldconsiderthehealth,privacy,andgeneral
welfareofthepublicintheperformanceofhiswork.
EC5.2.AnACMmember,wheneverdealingwithdataconcerningindividuals,
shallalwaysconsidertheprincipleoftheindividual'sprivacyandseekthe
following:
--Tominimizethedatacollected.
--Tolimitauthorizedaccesstothedata.
--Toprovidepropersecurityforthedata.
--Todeterminetherequiredretentionperiodofthedata.
--Toensureproperdisposalofthedata.
Disciplinaryrules
DR5.2.1.AnACMmembershallexpresshisprofessionalopiniontohis
employersorclientsregardinganyadverseconsequencestothepublicwhich
mightresultfromworkproposedtohim.
GotoAppendixCBacktoTableofContents




APPENDIXC:ALGORITHM
INDEXBYCHAPTER
CHAPTER1--INTRODUCTION
Exchangesorting--SORT1.3
Binarysearch--BINSRCH1.3
FIBONACCI1.4
Fillingamagicsquare--MAGIC1.4
CHAPTER2--ARRAYS
Polynomialaddition--PADD2.2
Fibonaccipolynomials--MAIN2.2
Sparsematrixtranspose--TRANSPOSE2.3
Sparsematrixtranspose--FAST-TRANSPOSE2.3
Sparsematrixmultiplication--MMULT2.3
CHAPTER3--STACKSANDQUEUES
Sequentialstacks--ADD,DELETE3.1
Sequentialqueues--ADDQ,DELETEQ3.1
Circularsequentialqueues--ADDQ,DELETEQ3.1
Paththroughamaze--PATH3.2
Evaluationofapostfixexpression--EVAL3.3


×