Ad argvmentvm transi
Topos Uranos

Svmmarivm

Haec lectio pars initialis cvrsvs est eivsqve rationem stvdiorvm integram exponit. Declarat qvid cvrsvs spectet, nempe ipsam programmationem, non lingvam; explicat cvr fvndamenta eivs in lingva C++ doceantvr, qvae machinam non occvltat, potivs qvam in lingva cvivs aditvs facilior est; indicat qvibvs discipvlis destinetvr, qvam pavca praesvpponat et ad qvos cvrsvs dvcat; septem proposita discendi generalia envntiat et partes qvae ad qvodqve confervnt; octo eivs partes materiae describit et lectiones qvibvs constant; aestimat qvantvm laboris vniversvs cvrsvs postvlet, qvomodo is per partes distribvatvr, qvam celeritatem stvdendi svadeat et qvot credita habeat; explicat qvomodo lectiones eivs factae sint; deniqve monet qvo modo stvdendvs sit, qvomodo adivtoribvs intellegentiae artificialis vtendvm sit et qvomodo versiones moderandae sint.

Proposita discendi

  1. Ordinem octo partivm cvrsvs describere et explicare qvid qvaeqve seqventibvs conferat.
  2. Septem proposita discendi generalia cvrsvs envntiare et agnoscere qvae partes ad qvodqve conferant.
  3. Exemplo explicare cvr cvrsvs fvndamenta programmationis in lingva C++ doceat, non in lingva qvae genera et memoriam occvltet.
  4. Ex horis per partes aestimatis compvtare qvantvm laboris cvrsvs vel aliqva eivs portio postvlet, et ex eo propriam stvdendi celeritatem disponere.

Propositvm

Cvrsvs docet programmata recta ab initio scribere: problema verbis envntiatvm in seqventiam accvratam instrvctionvm convertere, eligere qvomodo data repraesententvr, ordinem regere qvo scripta exsecvtioni dantvr, et codicem in fvnctiones cvm interfacie clara disponere. Si ita est, obiectvm eivs non est lingva, sed ipsa programmatio: algorithmvm excogitare, data repraesentare, problema dividere et de rectitvdine ac svmptv eorvm qvae scribvntvr ratiocinari. Ideo «Fvndamenta Programmationis» appellatvr, et ideo qvaeqve constrvctio lingvae C++ vna cvm problemate qvod solvit et cvm modo de ea ratiocinandi exhibetvr, nvmqvam vt catalogvs syntaxis.

C++ igitvr instrvmentvm cvrsvs est, non finis eivs. Atqvi instrvmentvm non est indifferens ad ea qvae per id discvntvr, et hvivs electio, qvae primo aspectv difficillima videtvr, consvlto facta est; sectio seqvens eam ivstificat. Praemonere tamen convenit de eivs conseqventia maxime conspicva: qvaeqve synthesis partis sectionem fixam continet, «Qvae in qvalibet lingva valent», qvae ea qvae didicimvs a forma sva in C++ separat et dicit qvomodo in aliis lingvis exprimantvr, vel qvid ibi mvtetvr. Ex qvo seqvitvr vt discipvlvs qvi cvrsvm perfecerit non solvm in C++ scribere sciat, sed etiam in qvalibet lingva easdem ideas alio habitv indvtas agnoscat.

Cvr C++ et non lingva comior

Svnt lingvae aditv leniore, vt Python, in qvibvs primvm programma vtile pavcis versibvs scribitvr, sine generibvs declarandis, sine compilatione et sine qvaestione vbi datvm habitet. Si consilivm esset cito programmata scribere qvae recte operantvr, haec via esset. Consilivm hvivs cvrsvs contra est intellegere qvid programma faciat, et ad hoc lingva convenit qvae machinam non occvltet. C++ cogit sex res videre qvas lingvae commodiores tacite expedivnt:

  • Genera. Qvodqve datvm cvm genere declaratvr, qvod statvit qvos valores accipere possit, qvantvm spatii occvpet et qvas operationes admittat; compilator qvod non congrvit reicit anteqvam qvicqvam exsecvtioni detvr.
  • Compilatio. Scribere, compilare, conivngere et exseqvi momenta distincta svnt, et qvisqve error ad vnvm eorvm pertinet; scire ad qvod pertineat dimidivm est correctionis.
  • Memoria. Variabilis est cella nominata, cvm tempore vitae et ambitv; referentia est alivd nomen eivsdem cellae, et referentia ad cellam qvae iam non exstat vervs error est.
  • Svmptvs exscribendi. Vectorem fvnctioni tradere evm totvm exscribere potest; inter valorem et referentiam eligere consilivm programmatoris est, non machinae.
  • Fines nvmerorvm. Integer 32 bit non vltra 2 147 483 6472\,147\,483\,647 progreditvr, et nvmervs virgvlae flvitantis 0,10{,}1 exacte non servat.
  • Modvs agendi indefinitvs. Qvod norma non definit (egressvs extra seriem, exvndatio integri cvm signo, lectvra variabilis non initialisatae) non errorem certvm parit, sed qvidlibet; ideo cvrsvs semper cvm monitis et cvm detectoribvs (sanitizers) compilat.

Exemplvm seqvens id in parvo ostendit. Programma factoriales a 11 ad 1515 in variabili generis int compvtat. In Python, cvivs integri sine fine crescvnt, idem calcvlvs sine qverela 13!=6 227 020 80013! = 6\,227\,020\,800 imprimeret; in C++, prodvctvm 12!12! per 1313 in int non capitvr, et detector modi agendi indefiniti, cvm qvo cvrsvs omnia exempla sva compilat, programma in ipso versv sistit:

Programma in C++
#include <print>​int main(){    int factorial{1};    for (int n{1}; n <= 15; ++n) {        factorial = factorial * n;   // capitvrne prodvctvm in int?        std::println("{}! = {}", n, factorial);    }}
Exitvs
1! = 12! = 23! = 64! = 245! = 1206! = 7207! = 50408! = 403209! = 36288010! = 362880011! = 3991680012! = 479001600main.cpp:7:31: runtime error: signed integer overflow: 479001600 * 13 cannot be represented in type 'int'

Programma codice 1 finitvm est.

Si ita est, lingva coegit qvaestionem ponere qvam altera occvltavisset: qvantvm in genere electo capiatvr et qvid faciendvm sit cvm non capitvr. Nevtrvm responsvm in abstracto melivs est; qvod refert est scire qvaestionem exstare. Lectio Nvmeri integri eorvmqve repraesentatio ei respondet, et sectio de modo agendi indefinito cvivsqve synthesis ad eam redit.

Ex qvo asymmetria seqvitvr, qvae ratio intima electionis est. Qvi fvndamenta in C++ discit postea intellegit qvid lingvae commodiores pro eo faciant: collectorem pvrgamentorvm, integros sine fine, inspectionem indicvm, tacitam genervm conversionem. Qvi contra primvm in vna earvm discit, haec strata non videt, et serivs in ea offendit, cvm programma vervm ob aliqvam cavsarvm deficit qvas lingva ei occvltaverat. Itaqve via qvam cvrsvs eligit initio difficilior est, sed facilivs transfertvr: qvod hic discitvr in qvalibet lingva valet, et qvod in lingva discitvr qvae id occvltat non semper hic valet.

Atqvi C++ lingva magna est, et cvrsvs fvndamentorvm cvpiditati resistere debet eam totam docendi. Hic primvs cvrsvs se ad programmationem strvctvratam continet (data, expressiones, moderationem flvxvs, seqventias, textvm et fvnctiones) in norma C++23, cvm formis eivs recentibvs: exitvm per std::println, seqventias per std::array et std::vector, textvm per std::string, algorithmos bibliothecae in forma intervallorvm. Programmationi Lingva C++ II relinqvit qvod haec basis postvlat: indicatores et memoriam dynamicam, classes cvm methodis, exemplaria propria, fvnctiones anonymas et exceptiones.

Discipvli et cognitiones praeviae

Cvrsvs iis destinatvr qvi nvmqvam programmavervnt, cvivslibet ordinis stvdiorvm et iam a primo anno: discipvlis informaticae qvi fvndamento firmo egent ante cvrsvs de strvctvris datorvm et de systematibvs, discipvlis artis ingeniariae et scientiarvm qvi compvtatro compvtare debent sine caeca in eo fidvcia, et discipvlis mathematicae qvi algorithmos svos in programmata conversos videre volvnt qvae exsecvtioni dantvr.

Cvrsvs est ordinis 1, sine reqvisitis et per se constans. Dvo tantvm praesvpponit: arithmeticam scholarem, cvm divisione integra et residvo eivs, et vsvm elementarem compvtatri (receptacvlvm creare, plicam servare, programma aperire). Qvae de repraesentatione binaria, de ratiocinatione per casvs, de logica condicionvm vel de indvctione adhibet, ea docet eo loco qvo eis eget: systema binarivm, in lectione de nvmeris integris; leges De Morgani, in lectione de relationibvs et logica; indvctionem, in lectione de recvrsione. Remissiones igitvr ad alios cvrsvs sitvs qvae in lectionibvs occvrrvnt ad altivs penetrandvm spectant, non svnt reqvisita.

Qvo dvcat

Ex praecedentibvs seqvitvr locvs cvrsvs in sitv. Reqvisita non habet et meta est dvorvm ordinvm stvdiorvm, Informaticae et Compvtationis atqve Artis Ingeniariae, qvia in vtroqve programmatio simvl instrvmentvm et obiectvm est. Convenit igitvr vt sit inter primos cvrsvs horvm ordinvm, vna cvm LaTeX ad Scriptionem Academicam et Logica Mathematica I.

Cvrsvm complementarivm habet, qvem ante, simvl vel postea seqvi licet. Logica Mathematica I vt theoriam investigat qvod hic vt praxis adhibetvr: condiciones compositas, tabvlas veritatis et leges De Morgani partis 3, atqve ideam demonstrandi rationem procedendi rectam esse, qvae in hoc cvrsv formam accipit invariantis circvitvs et indvctionis in recvrsione. Algebra et Geometria I avtem demonstrat eventvs de nvmeris qvos cvrsvs in programmata convertit: divisionem Evclideam, algorithmvm Evclidis, systemata nvmerationis et regvlam Horneri. Et LaTeX ad Scriptionem Academicam in lectione sva Scribere cvm sociis moderationem versionvm per Git docet, qvam hic cvrsvs a primo programmate adhibere commendat.

Atqvi cvrsvs consvlto omittit qvod basis eivs postvlat. Continvatio eivs praevisa est Programmatio Lingva C++ II, qvae indicatores et memoriam dynamicam, classes et obiecta, exemplaria, fvnctiones anonymas, exceptiones et bibliothecam normalem penitvs tractabit. Vnde cvrsvs non est primvm segmentvm enchiridii lingvae C++, sed cvrsvs fvndamentorvm integer, qvi hic clavdi potest; qvi avtem pergit, in cvrsv II eandem disciplinam inveniet programmatis adhibitam qvorvm magnitvdo iam non sinit ea carere.

Proposita discendi generalia

Proposita qvae seqvvntvr describvnt qvid discipvlvs qvi cvrsvm perfecerit facere possit. Vnvmqvodqve vt actio observabilis formvlatvr, ita vt certo penso confirmari possit; vnaqvaeqve avtem lectio materiae sva proposita declarat, qvae vni vel plvribvs generalivm servivnt, et lectio conclvsiva ostendit in qvibvs partibvs et lectionibvs qvodqve tractetvr. Septem proposita nvmerantvr vt citari possint.

  1. Propositvm 1. Problemata programmatis solvere: specificare qvid intret et qvid exeat, algorithmvm designare, evm manv perseqvi, evmqve scribere, compilare, exseqvi et emendare, nvntia et monita compilatoris interpretando.
  2. Propositvm 2. Pro qvoqve dato genvs aptvm eligere et de finibvs repraesentationis eivs ratiocinari: de spatio valorvm integrorvm, de exvndatione, de rotvndatione virgvlae flvitantis et de codificatione textvs.
  3. Propositvm 3. Expressiones rectas constrvere, praecedentiam, conversiones genervm, effectvs secvndarios et ea qvae norma indefinita relinqvit cognoscendo.
  4. Propositvm 4. Moderationem flvxvs decisionibvs et circvitibvs rectis, qvi desinvnt, designare, et rectitvdinem eorvm invarianti ivstificare.
  5. Propositvm 5. Problema in fvnctiones cvm interfaciebvs claris dividere, eligere qvomodo parametra tradantvr, et problemata per recvrsionem solvere.
  6. Propositvm 6. Data composita (seqventias, tabvlas, tabvlaria, textvm et plicas) algorithmis fvndamentalibvs et bibliotheca normali repraesentare et tractare, svmptv eorvm aestimato.
  7. Propositvm 7. Programmata maiora in plvres plicas disponere, ea praecondicione et postcondicione specificare, ea ratione certa temptare et rectitvdinem eorvm argvere.

Qvinqve proposita svam partem habent: propositvm 2, partem de datis et generibvs; propositvm 3, partem de expressionibvs; propositvm 4, partem de moderatione flvxvs; propositvm 5, partem de fvnctionibvs; et propositvm 6, partem de datis compositis, qvae in partem de textv et plicis prodvcitvr, vbi propositvm 2 cvm codificatione UTF-8 redit. Reliqva dvo contra totvm cvrsvm percvrrvnt. Propositvm 1 partem principalem habet primam, qvae cvrsvm laboris docet ex specificando, scribendo, compilando et exseqvendo constantem, et lectionem de emendatione vltimae; sed in omnibvs exercetvr, qvia qvodqve programma cvrsvs compilatvr, exsecvtioni datvr et corrigitvr. Propositvm 7 partem principalem habet vltimam, eam de programmatis maioribvs; sed incipit in praeceptis stili primae, pergit in constantibvs secvndae, formam accipit in pactis qvintae, qvae inde omnem fvnctionem comitantvr, et in invariantibvs qvartae et sextae. Ex qvo seqvitvr vt assecvtio eorvm vni parti tribvi non possit, et vt ea per totvm cvrsvm colere conveniat.

Argvmenta

Cvrsvs in decem partes distribvitvr: hanc praesentationem, octo partes materiae et conclvsionem. Qvaeqve pars materiae lectione introdvctionis aperitvr, qvae lectiones eivs, qvae pro cognitis habet et qvaestionem qvam solvit exhibet, et a probatione initiali incipit; lectione synthesis clavditvr, qvae catenam notionvm partis reconstrvit, qvae in qvalibet lingva valent a forma eorvm in C++ separat, modvm agendi indefinitvm partis colligit, in probatione finali artes probationis initialis repetit et provocationes proponit difficiliores qvam problemata lectionvm.

Pars 0. Praesentatio cvrsvs

Constat hac lectione, qvae consilivm, electionem lingvae, proposita generalia, argvmenta, laborem et designationem cvrsvs statvit.

Pars 1. Primi gradvs

Eivs propositvm est discipvlvm a problemate verbis envntiato ad programma dvcere qvod compilatvr, exsecvtioni datvr, data legit et eventvs scribit, ita vt sciat qvid qvodqve instrvmentvm in via fecerit. Sine codice incipit, qvia algorithmvs programma antecedit; in fine discipvlvs adhvc parvm de C++ scit, sed scit qvomodo cvm ea laboretvr.

  1. Introdvctio: primi gradvs.
  2. A problemate ad algorithmvm: specificatio introitvvm et exitvvm, gradvs nvmerati, vestigivm manv persecvtvm, seqventia, decisio et repetitio.
  3. Programmata, compilatores et C++: praeprocessio, compilatio et conivnctio; compilatvm contra interpretatvm; normae lingvae.
  4. Instrvmentarivm institvere in Windows, macOS et Linux: tres descriptiones integrae, compilator, Visual Studio Code eivsqve extensio C++, confirmatio et defectiones freqventes.
  5. Compilare, exseqvi et configvrare: optiones cvrsvs, errores et monita, detectores, pensvm compilationis editoris et codificatio consolae.
  6. Anatomia programmatis: inclvsio, main, sententiae, clavsvrae, commentarii et praecepta stili cvrsvs.
  7. Introitvs, exitvs et errores: std::cin, std::println et specificationes formae, introitvs male formatvs et distribvtio errorvm.
  8. Synthesis et provocationes: primi gradvs.

Pars 2. Data et genera

Eivs propositvm est docere omne datvm in memoria vivere cvm genere qvod statvit qvos valores accipere possit, qvantvm spatii occvpet et qvas operationes admittat, et nvmervm programmatis non esse nvmervm mathematicae, sed repraesentationem finibvs circvmscriptam.

  1. Introdvctio: data et genera.
  2. Variabiles et memoria: declaratio et initialisatio vncis cvrvis, assignatio, vestigivm statvs, nomina et variabilis non initialisata.
  3. Nvmeri integri eorvmqve repraesentatio: bases 2 et 16, spativm valorvm cvivsqve generis, complementvm ad dvo et exvndatio cvm signo et sine signo.
  4. Nvmeri virgvlae flvitantis: cvr 0,10{,}1 exactvs non sit, rotvndatio accvmvlata, comparatio cvm tolerantia, infinitvm et valor non nvmericvs.
  5. Characteres, valores Booleani, conversiones et constantes: codex characteris, conversiones implicitae et explicitae, reiectio conversionvm qvae informationem amittvnt, const, constexpr et auto.
  6. Synthesis et provocationes: data et genera.

Pars 3. Expressiones et operatores

Eivs propositvm est docere expressiones constrvere qvarvm valor certo praedici possit: qvae operatio primvm fiat, cvivs generis sit eventvs, qvos effectvs secvndarios habeat et qvae expressiones significatione careant. Pars nondvm decisiones neqve circvitvs habet: condiciones aestimantvr et imprimvntvr.

  1. Introdvctio: expressiones et operatores.
  2. Arithmetica: qvotiens et residvvm cvm nvmeris negativis, arbor expressionis, praecedentia, associativitas et genvs eventvs.
  3. Relationes et logica: condiciones compositae, negatio earvm per De Morganvm, aestimatio brevi circvitv et error 1 < x < 5.
  4. Assignatio, effectvs secvndarii et modvs agendi indefinitvs: valor et effectvs expressionis, incrementa, ordo aestimationis et catalogvs eorvm qvae norma non definit.
  5. Bit et bibliotheca mathematica: operatores bitorvm, translationes, larvae, <cmath> et constantes <numbers>.
  6. Synthesis et provocationes: expressiones et operatores.

Pars 4. Moderatio flvxvs

Eivs propositvm est docere ordinem exsecvtionis decisionibvs et circvitibvs regere, et de rectitvdine eorvm ratiocinari: vt qvisqve casvs tractetvr, vt qvisqve circvitvs faciat qvod debet et vt desinat. Efficit qvod prima lectio cvrsvs nvntiavit: decisionem et repetitionem, nvnc scriptas et confirmatas.

  1. Introdvctio: moderatio flvxvs.
  2. Decisiones: if et else catenata et nidificata, casvs disivncti et exhavstivi, switch cvm enum class eivsqve insidiae.
  3. Circvitvs: while, do et for, vestigivm circvitvs, conversio inter formas eivs et circvitvs nidificati.
  4. Circvitvs rectos designare: formae nvmeratoris, accvmvlatoris, maximi et excvbitoris, invarians, terminatio et primvs contactvs cvm emendatore.
  5. Algorithmi nvmerici: primalitas, algorithmvs Evclidis, mvtatio basis, regvla Horneri et bisectio, qvisqve cvm sva ivstificatione.
  6. Synthesis et provocationes: moderatio flvxvs.

Pars 5. Fvnctiones

Eivs propositvm est docere problema in membra nominata dividere, qvodqve cvm interfacie et pacto, et problemata per recvrsionem solvere. Programmata longa partis 4 in programmata convertit ex membris composita qvae singillatim confirmantvr.

  1. Introdvctio: fvnctiones.
  2. Fvnctiones: declaratio, definitio et vocatio, acervvs vocationvm, praecondicio et postcondicio, et fvnctio qvae valorem non reddit.
  3. Parametra et ambitvs: transmissio per valorem, per referentiam et per referentiam constantem, eventvs mvltiplices per ligatvras strvctvratas, ambitvs et dvratio variabilivm.
  4. Designare per fvnctiones: expolitio gradatim, interfacies ante corpvs, regvla «vna fvnctio, vnvm mvnvs» et svperoneratio.
  5. Recvrsio: casvs basis et casvs recvrsivvs, rectitvdo et terminatio per indvctionem, acervvs et svmptvs recvrsionis.
  6. Synthesis et provocationes: fvnctiones.

Pars 6. Data composita

Eivs propositvm est docere collectiones datorvm repraesentare easqve algorithmis fvndamentalibvs tractare, manv scriptis et ex bibliotheca svmptis, aestimando qvanti constent. A dato singvlari ad collectionem dvcit, et a qvaestione «rectvmne est?» ad qvaestionem «qvanti constat?».

  1. Introdvctio: data composita.
  2. Series: std::array, percvrsvs per indices et per intervallvm, index intra fines et series C ad comparationem.
  3. Vectores: std::vector, lectvra seqventiae longitvdinis ignotae, accvmvlatio, colatio et transformatio, magnitvdo et capacitas.
  4. Svmptvs algorithmi: nvmeratio operationvm dominantivm, ordines incrementi et mensvra temporis.
  5. Qvaerere et ordinare: inqvisitio linearis et binaria, ordinatio per selectionem et per insertionem cvm invariantibvs svis, et algorithmi bibliothecae.
  6. Tabvlae: tabvlae dvarvm dimensionvm, percvrsvs earvm per versvs et per colvmnas, transposita, prodvctvm et tabvla in vectore plano.
  7. Tabvlaria: struct, initialisatores designati, tabvlaria vt parametra et ordinatio per campvm.
  8. Synthesis et provocationes: data composita.

Pars 7. Textvs et plicae

Eivs propositvm est docere textvm vt datvm tractare et efficere vt programma plicas legat et scribat neqve introitv male formato frangatvr. In fine discipvlvs programmata scribere potest qvae data vera tractant, accentibvs et erroribvs comprehensis.

  1. Introdvctio: textvs et plicae.
  2. Catenae charactervm: std::string eivsqve operationes, npos, conspectvs std::string_view et catenae C ad comparationem.
  3. Textvs non est ASCII: codificatio UTF-8, octeti et characteres, et operationes qvae textvm frangvnt.
  4. Bene legere: std::getline, statvs flvxvs, recvperatio post datvm invalidvm et validatio per std::from_chars.
  5. Plicae textvs: aperire, per versvs legere, scribere, addere, et plicam valorvm virgvlis separatorvm tractare.
  6. Synthesis et provocationes: textvs et plicae.

Pars 8. Programmata maiora

Eivs propositvm est docere programmata disponere, confirmare et emendare qvae iam neqve vna plica neqve mente capivntvr. Circvlvm clavdit qvem prima lectio apervit: specificare, constrvere, confirmare; synthesis eivs in opere finali desinit qvod totvm cvrsvm colligit.

  1. Introdvctio: programmata maiora.
  2. Plvres plicae et bibliothecae propriae: capvt et implementatio, cvstodiae inclvsionis, regvla vnivs definitionis et compilatio separata.
  3. Temptare: casvs tentaminis ex specificatione dedvcti, tentamina avtomatica, assert et static_assert.
  4. Emendare: emendator Visual Studio Code, pvncta interrvptionis, acervvs vocationvm et ratio certa errorem inveniendi.
  5. Synthesis et provocationes: programmata maiora.

Pars 9. Conclvsio cvrsvs

Constat lectione Recognitio finalis cvrsvs Programmationis Lingva C++ I, qvae septem proposita generalia in memoriam revocat, in figvra ostendit in qvibvs partibvs et lectionibvs qvodqve tractetvr, primvm conatvm probationvm finalivm per proposita colligit et indicat qvo stvdivm pergat.

Labor et credita

Labor cvrsvs non horis expositionis metitvr, qvae in cvrsv asynchrono non exstant, sed toto discipvli labore: legere, exempla scribere et compilare, problemata solvere et repetere. Aestimatio eadem ratione in omnibvs cvrsibvs sitvs procedit: tempvs legendi textvm cvivsqve lectionis compvtat, codice exemplorvm comprehenso, centenis verbis singvlis minvtis, viginti minvtis in singvla problemata solvta, triginta qvinqve in proposita, qvadraginta qvinqve in provocationes et dvodecim in probationes initiales vel finales, et marginem vnivs decimae ad repetendvm addit.

Eventvs

Lectiones cvrsvs vniversae continent 105105 problemata solvta, 105105 problemata proposita et 5252 provocationes, praeter sedecim probationes partivm et septvaginta exercitationes breves qvas sitvs statim corrigit. Labor per partes aestimatvs, ad horam rotvndatvs, hic est:

  • Pars 0, praesentatio cvrsvs: 11 hora.
  • Pars 1, primi gradvs: 2828 horae.
  • Pars 2, data et genera: 2222 horae.
  • Pars 3, expressiones et operatores: 2222 horae.
  • Pars 4, moderatio flvxvs: 2222 horae.
  • Pars 5, fvnctiones: 2222 horae.
  • Pars 6, data composita: 3030 horae.
  • Pars 7, textvs et plicae: 2121 horae.
  • Pars 8, programmata maiora: 2020 horae.
  • Pars 9, conclvsio cvrsvs: minvs qvam 11 hora.

Svmma est circiter 188188 horarvm laboris discipvli. Hvnc nvmervm legere convenit vt id qvod est: aestimationem pro discipvlo qvi omnia exempla scribit et compilat et omnia problemata et provocationes solvit. Qvi iam in alia lingva programmavit mvlto minvs temporis in primis partibvs impendet; qvi nvmqvam programma institvit neqve nvntivm erroris legit plvribvs horis egere potest, praesertim in parte 1, qvae etiam, cvm parte de datis compositis, amplissima est.

Atqvi nvmervs nominalis est: is est qvi credita cvrsvs statvit, et praesvpponit legendi celeritatem constantem et dodrantem horae in singvlas provocationes. Donec cvm discipvlis veris metiatvr, convenit evm spatio verisimili comitari. Si legendi celeritas dimidia esset eivs qvae svpponitvr, vt fit cvm qvodqve exemplvm manv scribitvr, compilatvr et mvtatvr vt videatvr qvid mvtetvr, et qvaeqve provocatio septvaginta qvinqve minvta pro qvadraginta qvinqve postvlaret, eadem ratio circiter 250250 horas daret. Itaqve labor exspectandvs inter circiter 188188 et circiter 250250 horas iacet. Extremvm svperivs margo prvdens est, non mensvra; spativm corrigetvr cvm tempvs cognitvm erit qvod ii impendvnt qvi cvrsvm stvdent, et interea credita nvmero nominali compvtantvr.

Celeritas svasa

Ad celeritates nominandas, haec ratio idem ivdicivm adhibet qvod ceterae rationes sitvs: stvdivm plenvm est id anni academici 6060 creditorvm, circiter 16501650 horarvm per qvadraginta fere hebdomades distribvtarvm, id est circiter 4040 horarvm in hebdomade, et stvdivm dimidivm eivs dimidivm est, circiter 2020 horarvm in hebdomade. Ex qvo seqvitvr celeritas commendata vnivs semestris sedecim hebdomadvm, cvm circiter 1212 horis stvdii in hebdomade, pavlo minvs qvam triens stvdii pleni; cvm spatio verisimili, a 1212 ad 1616 horas in hebdomade. Id semestre cvm Logica Mathematica I commvnicari potest, cvivs tabvlae veritatis et idea demonstrationis in condicionibvs et in invariantibvs hvivs cvrsvs agnoscvntvr.

Celeritas intenta, circiter 2020 horarvm in hebdomade, id est stvdivm dimidivm, cvrsvm novem vel decem hebdomadibvs perficit. Celeritas remissior, circiter 66 horarvm in hebdomade, evm ad dvo semestria extendit, qvae fere bifariam evm dividvnt: partes 0 ad 4, ab algorithmo ad moderationem flvxvs, circiter 9595 horas occvpant, et partes 5 ad 9, a fvnctionibvs ad opvs finale, circiter 9393. Sectio natvralis est: parte 4 perfecta, discipvlvs iam programmata integra in vno main scribit, et altera medietas evm ea disponere docet.

Credita

Credita hvivs sitvs totvm laborem metivntvr qvem cvrsvs ab eo qvi evm stvdet postvlat (legendi, problemata solvendi, provocationes aggrediendi et repetendi), non horas scholarvm. Singvla credita circiter 27,527{,}5 horis laboris aeqvivalent, et annvs stvdii pleni 6060 creditis, id est circiter 16501650 horis; idem est ivdicivm qvo sectio svperior celeritates stvdendi nominat.

Atqvi, si 188188 horae aestimatae per 27,527{,}5 dividvntvr, prodit nvmervs 6,8, qvi ad 77 rotvndatvr. Si pro singvlis creditis spativm a 2525 ad 3030 horas laboris admittitvr, nvmervs CC creditorvm cvrsvs inter 6,3 et 7,5 circvmscribitvr:

(18830)≤C≤(18825)\left( \frac{188}{30} \right) \leq C \leq \left( \frac{188}{25} \right)

Itaqve cvrsvs 77 credita habet, pavlo plvs qvam nonam portionem anni stvdii pleni. Nvmervs non est neglegentia: cvrsvs tamdiv dvrat qvamdiv dvrare debet vt fvndamenta doceat, nec decvrtatvs est vt ad nvmervm rotvndvm creditorvm accommodaretvr.

Vtilitas eorvm practica est: sinvnt onvs cvrsvvm sitvs inter se comparare et decernere qvot simvl stvdere conveniat, ne tempvs qvod svppetit excedatvr. Stvdio dimidio per semestre sedecim hebdomadvm, id est circiter 320320 horis, exempli gratia, cvrsvs aggredi licet qvi simvl circiter 1212 credita efficivnt; stvdio pleno eivsdem semestris, circiter 2323.

Haec credita mensvra propria sitvs svnt ad stvdivm ordinandvm: nvlli systemati pvblico creditorvm respondent neqve agnitionem academicam vllivs institvtionis affervnt.

Designatio cvrsvs

Modvs

Cvrsvs asynchronvs est, in linea et celeritate libera: dies, sessiones vivas et terminos non habet, et qvisqve discipvlvs ea celeritate progreditvr qvam praeparatio et tempvs eivs sinvnt. Qvattvordecim lingvis sitvs offeretvr. Identificatores programmatvm Anglice scripti svnt et in omnibvs versionibvs idem svnt; commentarii avtem et nvntia qvae programmata ostendvnt lingva paginae scripta svnt, ita vt qvaeqve versio cvm svo exitv compiletvr et exsecvtioni detvr. Lectiones declarant qvas alias lectiones ante stvdvisse conveniat, ita vt ordo commendatvs manifestvs sit.

Strvctvra lectionis

Omnes lectiones materiae eandem strvctvram seqvvntvr. Incipivnt a svmmario et ab envmeratione propositorvm discendi propriorvm, vt actiones observabiles formvlatorvm. Seqvitvr expositio, cvivs nvclevs programmata svnt. Qvodqve programma integrvm cvrsvs, anteqvam sitvs constrveretvr, norma C++23, omnibvs monitis excitatis et detectoribvs errorvm memoriae et modi agendi indefiniti compilatvm et exsecvtioni datvm est; qvod svb codice pvblicatvr vervs eivs exitvs est, vel vera compilatoris nvntia cvm error vel monitvm docetvr, vel vera detectoris relatio cvm programma in modvm agendi indefinitvm incvrrit. Si ita est, nvllvs exitvs cvrsvs manv scriptvs est: sitvs, dvm constrvitvr, inspicit nvm qvodqve programma exitvm versionis svae praesentis servatvm habeat, nec pvblicaretvr si alicvi deesset. Aliae figvrae gradatim animant qvod textvs ratiocinatvr: cellas memoriae cvm nomine et valore svo, acervvm vocationvm, percvrsvm circvitvs, bit nvmeri.

Qvamqve lectionem clavdvnt tria problemata solvta, cvm solvtione gradatim exposita, et tria problemata proposita, qvodqve cvm indicio complicato et, postea, responso, interdvm cvm solvtione explicata comitato qvam aperire convenit tantvm postqvam propria scripta est. Problemata ideam postvlant, nvmqvam exempli repetitionem mechanicam, et ea tantvm adhibent qvae vsqve ad eam lectionem docta svnt. Qvaeqve lectio praeterea dvas exercitationes breves continet qvas sitvs statim corrigit: in altera exitvs exactvs programmatis praedicitvr, in altera fragmentvm completvr vel corrigitvr. Scire convenit qvid haec correctio faciat et qvid non faciat: sitvs codicem discipvli non compilat, sed per formvlas inspicit nvm essentialia adsint et nvm error qvaesitvs evanverit. Itaqve exercitatio in sitv svperata adhvc in compvtatro proprio compilanda et exseqvenda est, qvod vnicvs ivdex definitivvs est.

Lectiones introdvctionis et synthesis strvctvram propriam habent. Introdvctio partem exhibet, lectiones eivs et filvm qvod eas conivngit, qvae pro cognitis habet et qvaestionem qvam solvit, et probationem initialem continet. Synthesis catenam notionvm partis reconstrvit, cvm lectione in qva qvisqve anvlvs statvitvr et eo qvo qvisqve vtitvr; dvas sectiones fixas continet, «Qvae in qvalibet lingva valent» et «Modvs agendi indefinitvs vnitatis», probationem finalem et sex provocationes (decem in vltima parte, cvivs opvs finale in gradvs dividitvr), qvamqve cvm indicio, responso et, cvm ratiocinatio id meretvr, solvtione explicata complicata.

Lector vocis

Qvaeqve lectio voce alta avdiri potest per lectorem sitvs, qvi vocibvs ipsivs apparatvs vtitvr: textvs legitvr vt scriptvs est, codex in eo citatvs cvm sensv pronvntiatvr et segmenta codicis nvntiantvr, nec charactere post characterem legvntvr. Hoc sinit expositionem procvl a visorio repetere; programmata contra semper editorem postvlant.

Probatio

Cvrsvs aestimationes non tribvit: probatio eivs formativa est et in probatione svi nititvr. Problemata proposita sinvnt confirmare nvm proposita cvivsqve lectionis attingantvr, et provocationes, nvm ea cvivsqve partis; in omnibvs ivdex vltimvs est compilator, cvm monitis et detectoribvs svis, qvia programma qvod sine monitis compilatvr, casvs tentaminis svi svperat et nvllvm detectorem excitat argvmentvm est qvod dispvtationem non admittit, qvamqvam, vt lectio de tentaminibvs docet, non demonstratio.

Accedvnt probationes partivm. Initialis, in introdvctione, probatio svi brevis est qvae pvnctvm initii metitvr; finalis, in synthesi et ante provocationes, ea qvae adepta svnt metitvr et cvm initiali comparatvr. Vtraqve in ipso navigatro corrigitvr: qvodqve responsvm explicationem accipit, qvisqve error typicvs animadversionem qvae evm agnoscit, et qvaeqve qvaestio ad lectionem remittit qvam repetere convenit. Nevtra aestimationem tribvit neqve certificat, et eventvs earvm tantvm in navigatro discipvli servantvr; confirmatio facvltatvm acqvisitarvm postea in alio svggestv fiet. Recognitio finalis primvm conatvm cvivsqve probationis finalis in effigiem per proposita generalia colligit.

Adivtores intellegentiae artificialis

Exstant hodie adivtores intellegentiae artificialis qvi pavcis secvndis solvtionem fere cvivslibet problematis hvivs cvrsvs scribere possvnt. Convenit clare dicere qvis locvs eis competat, et ratio eadem est qvae cetera omnia ivstificat: cvrsvs non exercet programmatvm prodvctionem, sed facvltatem, eam problema eo vsqve cogitandi donec in programma rectvm convertatvr. Si ita est, exercitationem adivtori mandare exercitationem tollit, eodem modo qvo responsvm problematis ante conatvm inspicere id in meram lectvram convertit. Programma inde ortvm rectvm esse potest; qvi avtem id tradit scribere non didicit, nec id facere sciet cvm adivtor erraverit, qvod est id ipsvm tempvs qvo maxime opvs est.

Ex qvo seqvitvr regvla vsvs, non prohibitio. Adivtor prodest ad nvntivm erroris explicandvm qvod non intellegitvr, ad casvs tentaminis proponendos qvi non cogitati erant, ad solvtionem propriam iam perfectam cvm alia comparandam, vel ad ideam expositionis ex alio latere illvstrandam. Non prodest ad exercitationes, problemata vel provocationes scribendas. Et in omnibvs casibvs valet principivm qvod ad qvemlibet codicem alienvm pertinet, sive ab adivtore sive a foro sive a condiscipvlo venit: legitvr, temptatvr et intellegitvr anteqvam accipiatvr. Adivtor codicem prodvcere potest qvi compilatvr et rectvs videtvr, sed qvi in modvm agendi indefinitvm incvrrit vel formam lingvae antiqvam adhibet; discipvlvs qvi cvrsvm perfecerit id agnoscere sciet, et qvi cvrsvm alteri mandaverit, non.

Qvomodo hic cvrsvs stvdendvs sit

Cvrsvs ita excogitatvs est vt ordine stvdeatvr. Qvaeqve pars priores praesvpponit: expressiones generibvs secvndae partis scribvntvr, circvitvs expressionibvs tertiae, fvnctiones circvitvs qvartae inclvdvnt, et data composita fvnctionibvs tractantvr; qvi lectionem praetermittit cogitvr, serivs ocivs, ad eam redire.

Regvla principalis vna est: qvodqve exemplvm scribere et compilare. Programmatio non legendo discitvr, sed scribendo, compilando et legendo qvod compilator respondet. Ideo discipvlvs instrvmentarivm svvm institvit lectionem Instrvmentarivm institvere in Windows, macOS et Linux secvtvs, et qvodqve programma in svo Visual Studio Code reddit, cvm optionibvs qvas lectio Compilare, exseqvi et configvrare statvere docet; qvi compvtatro vtitvr in qvo programmata institvere non potest, ad tempvs compilatorem in linea habet, qvem lectio institvtionis describit. Convenit exempla manv scribere potivs qvam exscribere, qvia manvs retinet qvod ocvlvs praeterit; convenit exitvm cvivsqve programmatis praedicere anteqvam exsecvtioni detvr, qvia differentia inter praedictvm et obtentvm id ipsvm est qvod discendvm restat; et convenit qvodqve monitvm compilatoris legere vt qvaestionem qvae responsvm meretvr, non vt strepitvm qvi toleratvr. Postqvam programma recte operatvr, convenit praeterea id consvlto mvtare (pvnctvm cvm virgvla delere, genvs mvtare, vectorem excedere) et legere qvid compilator vel detector dicat, qvia qvisqve error provocatvs error est qvi postea agnoscetvr.

Qvaeqve pars dvo pvncta inspectionis habet. Probatio initialis, in introdvctione, pvnctvm initii est: convenit ei respondere anteqvam pars stvdeatvr, nihil consvlendo, et lectiones notare ad qvas errores remittvnt. Probatio finalis, in synthesi et ante provocationes, comparatio est: ei responditvr lectionibvs perfectis, item nihil consvlendo, et cvm initiali comparatvr. In vtraqve primvs conatvs valet, qvi comparatvr et qvem effigies recognitionis finalis colligit. In problematis propositis et in provocationibvs convenit indicivm aperire tantvm cvm conatvs exhavstvs est, et responsvm tantvm in fine, ad confirmandvm. Problema cvivs responsvm consvltvm est anteqvam proprivm compilaretvr non solvtvm, sed lectvm est.

Moderatio versionvm

Postremo convenit laborem cvrsvs systemate moderationis versionvm a primo programmate servare. Git qvemqve statvm receptacvli laboris consignat, sinit ad qvemlibet eorvm redire et ostendit qvid inter dvos mvtatvm sit; ei qvi programmat hoc significat posse experiri sine metv amittendi qvod operabatvr, et invenire, versiones comparando, mvtationem qvae errorem indvxit, qvo bisectio qvam lectio de emendatione docet ad historiam programmatis transfertvr. Cvrsvs Git non docet, qvia alivs cvrsvs sitvs id iam facit: lectio Scribere cvm sociis, ex cvrsv LaTeX ad Scriptionem Academicam, cvrsvm laboris minimvm explicat, qvae plicae servantvr et qvae exclvdvntvr, et qvomodo conflictvs solvitvr. Qvod ibi valet pro fontibvs docvmenti aeqve valet pro fontibvs programmatis; satis est exclvdere, pro plicis avxiliaribvs LaTeX, plicas exsecvtabiles et plicas obiecti qvas compilatio regenerat.