Svmmarivm
Haec lectio codicem non continet, neqve per neglegentiam: algorithmvs programma antecedit, et qvi accvrate describere nescit qvid faciendvm sit, ne in C++ qvidem id dicere sciet. Primvm docetvr qvomodo problema specificetvr, id est qvomodo declaretvr qvae data accipiat, qvem eventvm reddere debeat et qva relatione ea conivngantvr, et ostenditvr vnam eandemqve envntiationem varias specificationes admittere. Deinde algorithmvs definitvr vt processvs finitvs, praecisvs et generalis, et gradibvs nvmeratis scribitvr algorithmvs divisionis per svbtractiones svccessivas. Docetvr qvomodo algorithmvs tabvla vestigii manv perseqvendvs sit, qvae per totvm cvrsvm primvm instrvmentvm erit ad intellegendvm et ad emendandvm. Exponvntvr tres modi gradvs conivngendi (seqventia, decisio et repetitio), qvibvs omnis algorithmvs scribitvr, et discitvr ostendere repetitionem desinere ope qvantitatis qvae in qvoqve gyro decrescit neqve sine fine descendere potest.
Proposita discendi
- Problema simplex specificare, introitvs eivs, exitvs et condiciones qvas implere debent indicando.
- Algorithmvm gradibvs nvmeratis describere, sine ambigvitate, decisionibvs et repetitionibvs expressis.
- Algorithmvm tabvla vestigii manv perseqvi eivsqve eventvm pro introitv dato determinare.
- In processv dato seqventiam, decisionem et repetitionem distingvere, et ostendere repetitionem desinere.
Qvid sit problema compvtationale
Problema compvtationale est relatio inter dvas species datorvm: ea qvae accipivntvr, qvae introitvs appellantvr, et ea qvae reddenda svnt, qvae exitvs appellantvr. Id solvere non est responsvm pro vno casv obtinere, sed methodvm habere qvae, pro qvolibet introitv admissibili, exitvm prodvcat qvi relationem impleat. «Qvantvm est 17 per 5 divisvm?» qvaestio est; «datis dvobvs integris, eorvm qvotientem et residvvm invenire» problema est, qvia de omnibvs integrorvm paribvs simvl loqvitvr.
Iam vero sermo cotidianvs imprecisvs est, et eadem envntiatio plvribvs modis intellegi potest. Qvam ob rem, anteqvam solvitvr, specificatvr: scribitvr qvid intret, qvid exeat et qvas condiciones qvaeqve res implere debeat. Specificatio tria membra habet. Introitvs data cvm sva specie envmerat (integros, decimales, verba) et condiciones qvae ab eis exigvntvr, qvae praecondicio appellantvr: qvi solvtione vtitvr se eas servatvrvm spondet. Exitvs eventvs envmerat. Relatio, sive postcondicio, dicit qvid exitvs respectv introitvs implere debeat: qvi solvtionem scribit se eam praestatvrvm spondet, dvmmodo praecondicio servata sit. Inde seqvitvr specificationem esse pactvm inter evm qvi problema proponit et evm qvi solvit, et extra praecondicionem solvtionem nihil promittere.
Envntiatio cotidiana: «maximvm trivm nvmerorvm invenire». Specificatio:
- Introitvs: tres nvmeri , , (integri vel decimales, sine alia condicione).
- Exitvs: nvmervs .
- Relatio: vnvm ex tribvs datis est, nec vllvm eorvm maivs est qvam ; id est , et .
Relatio non dicit «maximvs trivm», qvod ipsvm est qvod definiri volebatvr, sed dvas condiciones qvae examinari possvnt. Prima exigit vt vnvm ex datis sit (sine ea, nvmervs 1000 secvndam pro paene qvolibet introitv impleret); secvnda, vt nvllvm id svperet. Et specificatio obiter dvbivm solvit qvod envntiatio apertvm relinqvebat: si dvo data in maximo aeqvantvr, vt in , exitvs est , nec vllvs in eo error est.
Eadem envntiatio varias specificationes admittit, et inter eas eligere decisio est, non neglegentia. Casvs maxime instrvctivvs est divisio integrorvm. Pro integris et omnes consentivnt: qvotiens et residvvm soli integri svnt qvi implent
Ita pro et svnt et , qvia . Sed envntiatio «dvos integros dividere» non dicit qvid faciendvm sit si negativvs est, nec qvaestio otiosa est: pro et dvo responsa rationabilia svnt.
Prima specificatio: residvvm nvmqvam negativvm est, . Tvm , et exitvs est , . Haec est qvae in mathematica traditvr, in lectione «Divisibilitas et divisio cvm residvo» cvrsvs Algebra et Geometria I.
Secvnda specificatio: qvotiens est eventvs divisionis cvm decimalibvs, decimalibvs abiectis, id est ad nihilvm versvs rotvndatvs; residvvm est qvod deest, et signvm dividendi habet. Tvm ad trvncatvr, et : exitvs est , .
Ambae implent; differvnt condicione qvae residvo imponitvr. Nevtra error est, sed programma qvod alteram adhibet credens se alteram adhibere cvm negativis falsos eventvs dabit. Rem in antecessvm dicamvs: C++ secvndam adoptat, vt in lectione Arithmetica videbitvr; qvi primam exspectat mirabitvr.
Est tertia optio, qvae in vsv freqventissima est: casvm per praecondicionem exclvdere. Si specificatio exigit, problema negativorvm evanescit, non qvia solvtvm sit, sed qvia qvi solvtione vtitvr se id non propositvrvm spopondit. Qvod fieri non potest est qvaestionem indecisam relinqvere. Et eadem de cavsa specificatio exigit: cvm non exsistvnt et qvi relationem impleant, et pactvm id dicere debet.
Error freqvens est per exemplvm specificare: «exitvs ex 17 et 5 est 3 et 2». Exemplvm illvstrat, sed non specificat, qvia non dicit qvid ceteris introitibvs accidat; infinitae relationes diversae in vno casv congrvvnt. Specificatio vt condicio generalis scribitvr, et exempla postea ad eam examinandam servivnt.
Algorithmi
Problemate specificato, qvaeritvr methodvs qva solvatvr. Algorithmvs est series instrvctionvm qvae, cvilibet introitvi praecondicionem implenti applicata, nvmero finito gradvvm exitvm prodvcit qvi postcondicionem implet. Definitio tres postvlationes continet.
- Finitas. Algorithmvs nvmero finito instrvctionvm scribitvr et, pro qvolibet introitv admissibili, desinit postqvam nvmervm finitvm earvm peregit. Processvs qvi pro aliqvo introitv in perpetvvm pergit pro illo introitv algorithmvs non est.
- Praecisio. Qvaeqve instrvctio vnam tantvm significationem habet, et qvi eam exseqvitvr omni momento scit qvid faciendvm sit et qvae instrvctio seqvatvr. Nvlla decisio arbitrio exseqventis relinqvitvr.
- Generalitas. Algorithmvs problema pro omnibvs introitibvs admissibilibvs solvit, non pro vno tantvm casv.
Aliqva cvm libertate, algorithmvs etiam appellatvr processvs praecisvs et qvi desinit, sed qvi pro aliqvo introitv admissibili postcondicionem non implet: stricte loqvendo est algorithmvs pro alio problemate, et dicetvr non rectvs pro problemate specificato. Sic loqventvr problemata hvivs lectionis, qvae algorithmos non rectos exemplo contrario refellvnt.
Praescriptvm cvlinarivm algorithmo simile est, et ideo comparatio vsitata est; sed paene nvllvm algorithmvs est. «Pvgillvm salis addere» praecisvm non est, qvia pvgillvs qvantitas non est; «in fvrno coqvere donec avratvm sit» ex ivdicio pendet qvod dvae personae diverse facerent; «saepivs agitare» non dicit qvot vicibvs. Coqvvs has lacvnas sva experientia explet; compvtatrvm nvllam habet. Inde seqvitvr postvlatio qvae totvm cvrsvm regit: algorithmvm seqvi posse debet etiam qvi problema non intellegit, nihil divinando. Si, vt gradvm exseqvaris, scire oportet ad qvid serviat, gradvs male scriptvs est.
Algorithmi hvivs cvrsvs primvm gradibvs nvmeratis scribvntvr, Latine, cvm qvibvsdam conventionibvs. Data qvae dvrante algorithmo mvtantvr litteris vel verbis nominantvr, vt vel , et variabiles appellantvr. Scribitvr « valorem accipit» vt dicatvr compvtari cvm valore praesenti ipsivs et eventvm fieri novvm valorem ipsivs ; valor prior amittitvr. In forma contracta, qvae in notis capiendis adhibetvr, eadem instrvctio sagitta sinistrorsvm versa scribitvr, qvae in claviatvra est r <- r - b. Instrvctiones ordine nvmerorvm svorvm peragvntvr, nisi vna earvm alivd dicat.
Problema est id qvod svpra specificatvm est: introitvs, dvo integri et ; exitvs, dvo integri et cvm et . Idea est distribvendi: ex avfervntvr acervi magnitvdinis dvm fieri potest, acervi ablati nvmerantvr, et qvod svperest residvvm est.
- valorem accipit, et valorem accipit.
- Dvm valet, gradvs 3 et 4 repete; cvm valere desinit, ad gradvm 5 perge.
- valorem accipit.
- valorem accipit; ad gradvm 2 redi.
- Redde et , et desine.
Gradvs 2 qvaestio est qvae qvoqve tempore ponitvr: ante primvm gyrvm et post vnvmqvemqve. Gradvs 3 et 4 corpvs repetitionis efficivnt, id qvod repetitvr. Nihil arbitrio exseqventis relinqvitvr: omni momento vna tantvm instrvctio seqvens est.
Algorithmvs lentvs est (vt decies centena milia per tria dividat, plvs qvam trecenta milia gyrorvm facit), et methodvs scholastica divisionis mvlto celerior est; sed rectvs est, et simplicitas eivs evm aptissimvm reddit vt de algorithmis ratiocinari discatvr. Cvrsvs ad discrimen inter algorithmvm rectvm et efficientem redibit in lectione Svmptvs algorithmi.
Deniqve expedit algorithmvm a scriptvra sva seivngere. Algorithmvs divisionis per svbtractiones idem est sive Latine scribitvr, sive in diagrammate, sive in C++ sive in alia qvavis lingva programmandi: qvod evm definit est series operationvm, non verba. Programma est scriptvra algorithmi in lingva qvam machina exseqvi potest, et lectio Programmata, compilatores et C++ explicabit qvomodo ea exsecvtio fiat. Qvae si ita svnt, programma dvobvs modis valde diversis vitiosvm esse potest: qvia algorithmvs non rectvs est, et tvm nvlla lingva evm servat, avt qvia algorithmvs rectvs est sed male scriptvs. Vtrvmqve casvm distingvere dimidivm est laboris emendandi, et ideo cvrsvs semper primvm algorithmvm scribit.
Algorithmvm manv perseqvi
Algorithmvm legere non svfficit vt sciatvr qvid faciat; exseqvendvs est. Evm manv perseqvi, vt machina faceret, nec gradvs omittendo nec eventvs divinando, facvltas est programmatoris vtilissima: ea algorithmvs examinatvr anteqvam scribatvr, exitvs programmatis praedicitvr anteqvam exseqvatvr, et error invenitvr in eo qvod deficit.
Instrvmentvm est tabvla vestigii: colvmna pro nvmero gradvs qvi peragitvr, vna colvmna pro qvaqve variabili et, si expedit, vna pro condicionibvs qvae aestimantvr; et vnvs ordo pro qvoqve gradv peracto. In qvoqve ordine notatvr novvs valor variabilis qvae eo gradv mvtata est, et vacvvm relinqvitvr qvod non mvtatvm est, ita vt valor praesens variabilis sit vltimvs in eivs colvmna scriptvs. Condiciones cvm svo eventv notantvr.
Divisionem per svbtractiones svccessivas perseqvimvr cvm et . Sagitta figvrae gradvm modo peractvm indicat; linea pvnctata admonet gradvm 4 ad gradvm 2 redire.
Demonstratio
Gradvs 1: valores initiales dantvr. Introitvs praecondicionem implet, qvia et .
Primvs gyrvs. In gradv 2 confirmatvr , itaqve corpvs peragitvr: gradvs 3 acervvm qvinqve avfert et gradvs 4 evm nvmerat.
Secvndvs gyrvs: , et corpvs itervm peragitvr.
Tertivs gyrvs: , et corpvs itervm peragitvr.
In gradv 2 condicio deficit, qvia : algorithmvs ad gradvm 5 pergit et reddit et . Exitvs postcondicionem implet.
Tabvla integra dvodecim ordines habet: gradvm 1, tres gyros ternorvm ordinvm (gradvs 2, 3 et 4), examinationem qvae deficit et redditionem.
Dvae observationes de tabvla. Prima: nvmervs gyrorvm qvotienti aeqvalis est, , et gradvs 2 semel saepivs qvam corpvs peractvs est, vicibvs; qvod semper fit in repetitione hvivs formae, qvia vltima examinatio ea est qvae deficit. Secvnda: vestigivm aliqvid docet qvod textvs algorithmi primo aspectv non dicit; si , exempli gratia et , condicio prima vice deficit, corpvs nvlla vice peragitvr, et exitvs est , , qvi rectvs est, qvia . Casvm oblivisci qvo repetitio non peragitvr vnvs ex erroribvs freqventissimis est in algorithmis designandis, et vestigivm cvm introitibvs parvis evm detegit.
Vestigivm vnivs casvs non demonstrat algorithmvm rectvm esse: vnvm casvm examinat. Sed vestigivm bene electvm (casvs commvnis, casvs marginalis, casvs qvo repetitio non peragitvr) plerosqve errores detegit, et qvod deficit ostendit vbi sint. Lectio Circvitvs rectos designare docebit qvomodo a casibvs ad demonstrationem transeatvr.
Seqventia, decisio et repetitio
Prope inspecti, algorithmi pavcissimis elementis constrvvntvr. Svnt instrvctiones elementares (variabili valorem dare, eventvm reddere) et tres modi eas conivngendi.
- Seqventia: instrvctio post instrvctionem, ordine. Gradvs 3 et 4 divisionis seqventia svnt: primvm svbtrahitvr, deinde nvmeratvr.
- Decisio: provt condicio impletvr necne, membrvm vnvm vel altervm peragitvr (vel membrvm vel nihil). «Si , valorem accipit» decisio est.
- Repetitio: dvm condicio impletvr, membrvm itervm atqve itervm peragitvr. Gradvs 2 divisionis, cvm svo corpore, repetitio est.
Qvaeqve forma vnvm aditvm et vnvm egressvm habet, et interivs eivs rvrsvs qvaelibet ex tribvs esse potest: corpvs repetitionis decisiones continere potest, ramvs decisionis repetitionem continere potest, et sic deinceps. Qvae si ita svnt, tribvs formis algorithmi cvivsvis complexitatis constrvvntvr, sicvt pavcis elementis inter se congrventibvs qvodvis aedificivm constrvitvr. Eas svfficere ad omnem algorithmvm exprimendvm notvm est theoriae programmandi effatvm (id demonstravervnt Corrado Böhm et Givseppe Iacopini anno 1966); hic non demonstratvr, sed totvs cvrsvs id confirmat: programmata qvae in eo scribentvr, qvamvis longa, nihil alivd adhibebvnt qvam has tres formas, in C++ scriptas vt if pro decisione et while vel for pro repetitione, in lectionibvs Decisiones et Circvitvs.
Notatio vtilis ad formam algorithmi videndam est diagramma flvxvs: qvaeqve instrvctio est rectangvlvm, qvaeqve condicio rhombvs cvm dvobvs egressibvs (impleta, qvam figvra signo notat, et non impleta, ), et sagittae dicvnt qvis gradvs seqvatvr. Notatio est, non finis: servit ad parvvm algorithmvm vno obtvtv inspiciendvm, sed ad magnitvdinem non accommodatvr, et nemo programma magnvm pingendo scribit.
Figvra tres formas pingit cvm instrvctionibvs genericis et et condicione , deinde eas componit in diagrammate divisionis per svbtractiones svccessivas.
Demonstratio
Seqventia: peragitvr et deinde ; vnvs aditvs est et vnvs egressvs.
Decisio: si impletvr, peragitvr ; sin minvs, . Ambo rami in vnvm egressvm convenivnt.
Repetitio: aestimatvr ; si impletvr, peragitvr et itervm aestimatvr ; sin minvs, exitvr. Condicio semel saepivs qvam corpvs aestimatvr.
Compositio: divisio per svbtractiones svccessivas est seqventia (valores initiales, repetitio, redditio) cvivs repetitio pro corpore aliam seqventiam habet (svbtrahere, nvmerare).
Tres formas in processv sermone cotidiano scripto distingvere primvs gradvs est ad evm convertendvm. Signvm decisionis est «si», «si forte» vel «provt»; repetitionis, «dvm», «donec», «pro qvoqve» vel «tot vicibvs qvot». Processvs sine vllo horvm verborvm seqventia est, et si introitvs magnitvdinis variabilis tractare debet (indicem nvmerorvm, textvm), ei deest repetitio.
Desinitne?
Finitas ad definitionem algorithmi pertinet, et repetitio solvs locvs est in qvo amitti potest: seqventia qvinqve gradvvm qvinqve gradvs peragit, et decisio vnvm ex ramis svis peragit; sed repetitio corpvs svvm tot vicibvs peragit qvot condicio impletvr, nec qvicqvam in antecessvm praestat eam impleri desitvram esse.
Vt ostendatvr repetitionem desinere, qvaeritvr qvantitas, ex variabilibvs compvtata, qvae dvas condiciones impleat: nvmervs natvralis est (integer nec negativvs) dvm repetitio pergit, et in qvoqve gyro stricte decrescit. Qvae si ita svnt, repetitio desinit: series natvralivm stricte decrescens infinita esse non potest, qvia qvisqve gyrvs eam saltem vno minvit et a natvrali non plvres qvam descensvs ad nihilvm svnt. Haec qvantitas varians vel fvnctio marginis appellatvr, et lectio Circvitvs rectos designare ea ratione certa et constanti vtetvr.
In divisione per svbtractiones svccessivas varians est . Dvm repetitio pergit, , itaqve natvralis est. In qvoqve gyro valorem accipit, et qvia (praecondicio), novvs valor stricte minor est. Ergo repetitio desinit, et id facit svmmvm post gyros (immo prorsvs post gyros, qvotientem).
Animadvertatvr vbi praecondicio adhibita sit. Si algorithmvs cvm peragitvr, gradvs 3 relinqvit immvtatvm, condicio semper impletvr et repetitio nvmqvam desinit: algorithmvs non est vitiosvs, sed ei datvs est introitvs qvem pactvm exclvdebat. Et si negativvs esset, in qvoqve gyro cresceret. Praecondicio non est ornamentvm: est prorsvs id qvod reqviritvr vt ratiocinatio procedat.
Ambae condiciones variantis necessariae svnt, et facile est in vtralibet errare. Consideretvr hic processvs, qvi decernere vvlt vtrvm natvralis par sit: «dvm , valorem accipit; si ad nihilvm pervenitvr, par erat». Qvantitas in qvoqve gyro decrescit, et tamen processvs non desinit si impar est: cvm per , , , transit, et condicio nvmqvam deficit. Qvod non impletvr est altera condicio: natvralis esse desinit, qvia condicio repetitionis non impedit qvominvs infra nihilvm descendat. Correctio est repetere dvm et in fine decernere secvndvm valorem qvi manet, vel ; nvnc in qvoqve gyro natvralis est, qvia tantvm svbtrahitvr cvm , et decrescit: processvs desinit.
Decernere vtrvm repetitio desinat non semper facile est. Exemplvm celebre: a natvrali incipiendo, dvm , si par est per dvo dividitvr, et si impar est per svbstitvitvr. Cvm series est , et desinit. Nemo invenit pro qvo non desinat, et compvtatris pro ingenti copia valorvm confirmatvm est; sed nemo demonstrare potvit eam semper desinere: est coniectvra Collatz, problema apertvm mathematicae. Nvlla qvantitas nota in qvoqve gyro decrescit. Doctrina pro eo qvi programmat modesta et firma est: algorithmvs cvivs finem qvis ostendere nescit absolvtvs non est.
Errores freqventes
- Gradvs ambigvi. «Saepivs repetere», «donec bene sit», «nvmervm idonevm svmere». Qvisqve gradvs peragi posse debet sine problemate intellecto; sin minvs, male scriptvs est.
- Casvm oblivisci qvo repetitio non peragitvr. Omnis repetitio cvm condicione in initio corpvs svvm nvlla vice peragere potest. Semper qvaerendvm est qvid algorithmvs eo casv reddat, et vestigivm cvm introitv minimo respondet.
- Per exemplvm specificare. «Pro 17 et 5 dat 3 et 2» specificatio non est; relatio vt condicio generalis scribitvr, et exemplvm eam illvstrat.
- Algorithmvm cvm programmate svo confvndere. Programma qvod deficit vitivm habere potest in algorithmo avt in eivs scriptvra. Qvi algorithmvm antea non scripsit nescit vtrvm qvaerat.
- Finem pro certo habere. Qvantitatem decrescere non svfficit: praeterea natvralis esse debet dvm repetitvr.
Problemata solvta
Algorithmvm scribere qvi specificationem maximi trivm nvmerorvm initio lectionis positam impleat, evmqve manv perseqvi pro introitibvs et .
Solvtio
Idea: introitvs percvrritvr et maximvs adhvc visvs in variabili servatvr. Primvs gradvs: valorem accipit. Post evm maximvm est datorvm visorvm, qvae svnt tantvm .
Secvndvs gradvs: si , valorem accipit. Tertivs gradvs: si , valorem accipit. Qvartvs gradvs: redde . Tres svnt instrvctiones in seqventia, qvarvm dvae decisiones svnt sine ramo alternativo.
Vestigivm pro : post primvm gradvm ; in secvndo, falsvm est et non mvtatvr; in tertio, falsvm est et non mvtatvr. Redditvr .
Vestigivm pro : post primvm gradvm ; in secvndo, et valorem accipit; in tertio, falsvm est et non mvtatvr. Redditvr , qvod rectvm est: aeqvalitas tractationem propriam non exigit.
Ratio: post qvemqve gradvm vnvm ex datis visis est nec vllvm eorvm id svperat. Vervm est post primvm, et qvaeqve decisio id conservat: si datvm novvm maivs est, fit ; sin minvs, non svperat. In fine tria visa svnt, et postcondicionem implet.
Si pro scriptvm esset, eventvs idem esset, qvia in aeqvalitate valor aeqvalis assignatvr. Electio inter et momentvm haberet si etiam positio maximi peteretvr: cvm prima positionvm aeqvalivm redditvr, cvm vltima; formvla positionem appellat .
In calendario Gregoriano annvs bissextilis est si per divisibilis est, exceptis iis qvi per divisibiles svnt, qvi tantvm bissextiles svnt si praeterea per divisibiles svnt. Discipvlvs algorithmvm proponit: «si annvs per divisibilis est, redde ita; sin minvs, redde non». Annvm invenire qvo deficit et algorithmvm rectvm scribere, cvm sva specificatione.
Solvtio
Specificatio. Introitvs: integer (calendarivm Gregorianvm ab Octobri mense anni 1582 viget). Exitvs: ita vel non. Relatio: exitvs est ita prorsvs cvm per divisibilis est nec per , vel per divisibilis est.
Algorithmvs propositvs in plerisqve annis recte respondet, et ideo rectvs videtvr. Ad evm refellendvm svfficit annvs per nec per divisibilis: per divisibilis est, et algorithmvs dicit ita; sed annvs bissextilis non fvit.
Algorithmvs correctvs, tribvs decisionibvs concatenatis. Gradvs 1: si per divisibilis est, redde ita et desine. Gradvs 2: si per divisibilis est, redde non et desine. Gradvs 3: si per divisibilis est, redde ita; sin minvs, redde non.
Ordo qvaestionvm essentialis est: a regvla maxime particvlari ad maxime generalem procedvnt. Si primvm de divisore qvaereretvr, annvs ita acciperet anteqvam ad exceptionem perveniretvr. Vestigivm pro qvattvor annis, vno pro qvoqve casv: (gradvs 1: ita), (gradvs 2: non), (gradvs 3: ita), (gradvs 3: non).
Docvmentvm non tantvm ad calendaria pertinet: algorithmvs vno exemplo contrario refellitvr, et exempla contraria in marginibvs regvlarvm qvaervntvr, non in casibvs commvnibvs. Annos , et temptare nihil detexisset.
Divisionem per svbtractiones svccessivas manv perseqvi cvm et , et cvm et . Deinde ostendere pro omni introitv admissibili algorithmvm post prorsvs gyros desinere eivsqve exitvm postcondicionem implere.
Solvtio
Vestigivm cvm , : per , , , , transit, et per , , , , . Qvinta examinatio, , deficit. Exitvs: , . Hic casvs marginalis est divisio exacta: qvartvs gyrvs fit qvia , et ideo condicio esse debet et non .
Vestigivm cvm , : prima examinatio, , deficit; corpvs nvlla vice peragitvr. Exitvs: , , qvi rectvs est.
Relatio qvae conservatvr. Ante primvm gyrvm, . In qvoqve gyro deminvitvr valore et avgetvr valore , ita vt non mvtetvr. Ergo aeqvalitas post qvemqve gyrvm valet.
Finis. Dvm repetitvr, , et natvralis est; in qvoqve gyro deminvitvr valore . Series natvralivm stricte decrescens finita est: repetitio desinit.
Cvm desinit, condicio defecit: . Praeterea , qvia tantvm svbtrahitvr cvm . Vna cvm relatione qvae conservatvr, exitvs postcondicionem implet; et qvia gyros nvmerat, nvmervs gyrorvm qvotiens est.
Exercitationes in linea
Algorithmvm seqventem manv perseqvi et in capsa valorem qvem reddit scribere, solvm nvmervm.
- valorem accipit, et valorem accipit.
- Dvm valet, gradvs 3 et 4 repete; cvm valere desinit, ad gradvm 5 perge.
- Si par est, valorem accipit; si impar est, valorem accipit.
- valorem accipit; ad gradvm 2 redi.
- Redde .
Navigatrvm responsvm tvvm statim inspicit, neqve aestimat.
Indicivm
Tabvlam fac: in primo gyro a ad transit. Vnvm gyrvm nvmera pro qvaqve mvtatione ipsivs , donec valorem habeat.
Solvtionem vide
7Algorithmvs seqvens, forma contracta scriptvs, qvotientem et residvvm divisionis per svbtractiones svccessivas compvtare debet, sed ei deest condicio repetitionis. Seriem lineolarvm infimarvm condicione recta svbstitvere, nihil alivd mvtando.
Navigatrvm responsvm tvvm statim inspicit, neqve aestimat.
Indicivm
Algorithmvm manv perseqvere cvm et : secvndvs gyrvs fieri debet qvamvis residvvm prorsvs valeat.
Solvtionem vide
Introitvs: a (integer, a >= 0), b (integer, b > 0)1. q <- 02. r <- a3. dvm r >= b repete: r <- r - b q <- q + 14. redde q, rProblemata proposita
Cviqve problemati indicivm est, qvod non nisi post conatvm aperire expedit, et responsvm, qvod indicio aperto apparet.
Specificationem problematis «tres nvmeros ordinare» scribere (introitvm, exitvm et relationem) et indicare qvas decisiones capere cogat qvas envntiatio non capiebat. Deinde confirmare specificationem pro introitv hos dvos exitvs reicere, et , et admittere .
Indicivm
Exitvs «ordinatvs» nihil cvm introitv commvne habere potest. Qvae condicio nvmeros exitvs cvm nvmeris introitvs conivngit, repetitis inclvsis? Crescens an decrescens? Strictvs an non?
Responsvm
Introitvs: tres nvmeri , , . Exitvs: tres nvmeri , , . Relatio: , et est permvtatio ipsivs , id est eosdem valores cvm eisdem repetitionibvs continet. Decisiones qvas envntiatio non capiebat: directio (hic a minimo ad maximvm); ordinem non esse strictvm ( et non , qvia cvm valoribvs repetitis ordo strictvs fieri non potest); et exitvm permvtationem esse debere. ordinatvs est sed continet qvi non aderat; qvattvor valores habet; vtramqve condicionem implet. Sine condicione permvtationis, exitvs rectvs pro qvolibet introitv esset.
Algorithmvm gradibvs nvmeratis scribere qvi natvralem accipiat et cifras eivs ab vltima ad primam reddat (pro reddit , , , ), solvm qvotiente et residvo divisionis per vtendo. Evm manv perseqvi pro et pro , et ostendere evm pro omni desinere.
Indicivm
Residvvm divisionis per vltima cifra est, et qvotiens est nvmervs sine ea. Decerne vtrvm condicio ante an post cifram redditam qvaeratvr, et vide qvid fiat cvm , qvi vnam cifram habet.
Responsvm
Algorithmvs rectvs: (1) redde residvvm divisionis ipsivs per ; (2) valorem qvotientis divisionis ipsivs per accipit; (3) si , ad gradvm 1 redi; sin minvs, desine. Qvaestio post corpvs ponitvr, ita vt corpvs saltem semel peragatvr: pro reddit , qvae vnica eivs cifra est. Si in initio qvaereretvr («dvm »), pro nihil redderetvr; is est error casvm obliviscendi qvo repetitio non peragitvr. Vestigivm pro : reddvntvr , , , , et per , , , transit. Finis: varians est , natvralis; si ad gradvm 1 reditvr, id fit qvia , et pro qvotiens per stricte minor est qvam , ita vt in qvoqve gyro stricte decrescat.
Praesto svnt nvmmi , et vnitatvm, copia illimitata. Specificatio: introitvs, natvralis ; exitvs, tres natvrales , , cvm et minimo nvmero nvmmorvm, . Qvaedam persona algorithmvm seqventem proponit. Introitvm invenire qvo deficit, qvodqve vitivm explicare et corrigere.
- , et valorem accipivnt.
- Si , valorem accipit et valorem accipit.
- Dvm : valorem accipit et valorem accipit.
- Dvm : valorem accipit et valorem accipit.
- Redde , et .
Indicivm
Svmma nvmmorvm semper est ; qvod deficere potest est eorvm nvmervs. Tempta mvltiplvm exactvm ipsivs et svmmam maiorem qvam , et te ipsvm interroga qvo modo gradvs conivngendi gradvs 2 vtatvr et qvo vti debeat.
Responsvm
Dvo vitia svnt. Primvm, gradvs 3 adhibet : cvm nvllvm nvmmvm reddit et decem nvmmos reddit, pro vno. Secvndvm, gradvs 2 decisio est vbi repetitio reqviritvr: cvm algorithmvs, vt scriptvs est, vnvm nvmmvm , sex et decem reddit (septendecim nvmmos), et etiam gradv 3 iam correcto vnvm et septem redderet (octo), pro dvobvs et dvobvs (qvattvor). Introitvs ambo vitia ostendit: algorithmvs vnvm , qvattvor et decem reddit, qvindecim nvmmos, pro dvobvs. Correctio: gradvs 2, «dvm , …»; gradvs 3, «dvm , …». Sic correctvs algorithmvs semper maximvm nvmmvm qvi capitvr svmit, et cvm his tribvs nvmmis id minimvm nvmervm dat: cifra vnitatvm ipsivs nvmmis tantvm solvi potest, et ex eo qvod restat expedit qvam plvrimvm nvmmis solvere, qvia qvinqve tantvm valent qvantvm vnvs . Cvm aliis nvmmis, exempli gratia , et pro , semper maximvm svmere minimvm iam non dat ( contra ).