Svmmarivm
Lectio A problemate ad algorithmvm tres modos gradvs componendi agnovit: seqventiam, decisionem et repetitionem. Dvo priores iam svam scriptvram in C++ habent; haec lectio tertio svam dat. Tres formas circvitvs tractat: while, qvi condicionem svam ante qvemqve gyrvm aestimat et corpvs svvm fortasse nvmqvam peragit; do, qvi eam postea aestimat et corpvs saltem semel peragit; et for, qvi vno versv initialisationem, condicionem et progressvm variabilis repetitionem moderantis conivngit. Ostendit tres formas vnvm evndemqve mechanismvm exprimere, ita vt qvaeqve in ceteras transformetvr, et docet clarissimam eligere; break et continue exponit, qvae cvrsvm gyri mvtant; et in circvitibvs nidificatis desinit, qvorvm corpvs interivs totiens peragitvr qvotiens svmma compvtata indicat. Instrvmentvm qvod totam lectionem comitatvr est tabvla vestigii: circvitvm manv perseqvi, gyrvm post gyrvm, via est praedicendi qvotiens corpvs eivs peragatvr et qvid exiens relinqvat.
Proposita discendi
- Circvitvm
while,dovelforpro repetitione data scribere, formam clarissimam eligendo. - Circvitvm manv cvm tabvla vestigii sva perseqvi et praedicere qvotiens corpvs peragatvr.
- Circvitvm ex vna forma in aliam transformare, significatione eivs servata.
- Circvitvs nidificatos scribere et compvtare qvotiens corpvs interivs peragatvr.
while
Forma circvitvs while
Circvitvs while sic scribitvr:
while (condicio) { corpvs}Significatio eivs tribvs gradibvs envntiatvr: condicio aestimatvr; si falsa est, circvitvs desinit et exsecvtio post vncvm cvrvvm qvi evm clavdit pergit; si vera est, corpvs peragitvr et ad primvm gradvm reditvr. Qvaeqve corporis exsecvtio gyrvs (sive iteratio) appellatvr. Condicio est expressio Booleana similis eis lectionis Relationes et logica, et corpvs est clavsvra; regvla vncorvm cvrvorvm qvam lectio Decisiones statvit hic qvoqve valet: corpvs circvitvs semper vncos cvrvos habet, etiam si vnam tantvm sententiam continet.
Dvae conseqventiae ex definitione seqvvntvr. Prima: condicio ante qvemqve gyrvm aestimatvr, ita vt, si ab initio falsa est, corpvs ne semel qvidem peragatvr. Altera: vt circvitvs desinat, corpvs aliqvid eorvm qvae condicio legit mvtare debet; si nihil mvtatvr, condicio qvae semel vera fvit semper vera erit. Atqvi mvtare non svfficit: lectio A problemate ad algorithmvm ostendit qvantitatem natvralem reqviri qvae in qvoqve gyro decrescat, varians, et lectio Circvitvs rectos designare ex ea methodvm faciet.
Divisio per svbtractiones svccessivas
Primvs cvrsvs algorithmvs cvm repetitione fvit divisio per svbtractiones svccessivas: dvm residvvm saltem divisori aeqvat, divisor ei svbtrahitvr et qvotienti vnvm additvr. In C++ scriptvs, algorithmvs fere verbvm de verbo transfertvr.
#include <iostream>#include <print>int main(){ int a{}; int b{}; std::cin >> a >> b; int q{0}; int r{a}; while (r >= b) { r -= b; ++q; } std::println("{} = {} · {} + {}", a, b, q, r);}23 723 = 7 · 3 + 2Versvs 9 et 10 variabilibvs valorem initialem dant: nihil adhvc svbtractvm est, ita vt qvotiens sit 0 et residvvm totvm dividendvm. Versvs 11 est condicio gradvs 2 algorithmi; versvs 12 et 13, corpvs. Programma, vt algorithmvs, ponit et : cvm , versvs 12 r non mvtaret neqve circvitvs desineret.
Tabvla vestigii
Circvitvm manv perseqvi est tabvlam implere: vnvs ordo pro qvoqve gyro, vna colvmna pro qvaqve variabili et vna pro condicione, initio gyri aestimata. Ordo 0 statvm ante primam aestimationem notat; vltimvs, aestimationem qvae falsa evadit et circvitvm finit.
Demonstratio
Ante circvitvm versvs 9 et 10 peragvntvr: et . Hic est ordo 0; condicio nondvm aestimata est.
Primvs gyrvs. Condicio vera est, ita vt corpvs peragatvr: fit 16 et fit 1. Deinde exsecvtio ad versvm 11 redit.
Secvndvs gyrvs. vera est: fit 9 et fit 2.
Tertivs gyrvs. vera est: fit 2 et fit 3.
Qvarta aestimatio, , falsa est: corpvs non peragitvr, circvitvs desinit et versvs 15 scribit .
Vestigivm nvmerare docet. Corpvs ter peractvm est, tot vicibvs qvot qvotiens valet, et condicio qvater aestimata est: semel pro qvoqve gyro et semel amplivs, ea qvae deficit. Haec relatio valet pro omni circvitv while qvi per condicionem svam desinit: si corpvs vicibvs peragitvr, condicio vicibvs aestimatvr. Et casvs extremvs id confirmat: cvm introitv 5 7, prima aestimatio, , iam falsa est, corpvs nvlla vice peragitvr, et programma scribit , qvod rectvm est. Circvitvs while bene scriptvs sine codice addito casvm cvrat in qvo nihil repetendvm est.
Argvmentvm oneratvr…