Svmmarivm
Haec lectio partem octavam et vltimam cvrsvs aperit, programmatis maioribvs dedicatam. Propositvm eivs explicat: programmata ordinare, confirmare et emendare qvae iam neqve in vnam plicam neqve in capvt capivntvr; tres eivs lectiones exhibet et filvm qvo conectvntvr, qvod circvlvm in prima lectione cvrsvs apertvm clavdit (specificare, constrvere, confirmare); revocat qvae pars pro cognitis habet, id est totvm cvrsvm; qvaestionem format qvam pars solvit, programmatis vnivs plicae qvod cvm datis qvibvs temptatvm est recte procedit et errorem in margine specificationis svae tacet; differentiam inter temptare et demonstrare anticipat; et ostendit qvo dvcat, in opere finali et in Programmatione Lingva C++ II.
Proposita discendi
- Seqventiam argvmentorvm partis describere et explicare qvid qvaeqve lectio seqventi conferat.
- Exemplo revocare differentiam inter fvnctionem declarare et definire, pactvm qvod eam specificat et stadia (compilationem et conivnctionem) qvae plvres plicas in vnvm programma convertvnt.
- Exemplo anticipare differentiam inter programma nonnvllis casibvs temptare et demonstrare id rectvm esse pro omnibvs admissibilibvs.
- Agnoscere qvid fine partis et cvrsvs facere scire exspectetvr, idqve distingvere ab eo qvod in Programmatione Lingva C++ II discetvr.
Probatio initialis
Anteqvam pars percvrritvr, initivm ipsvm metiri expedit. Haec probatio nvlli censvrae svbicitvr: stvdivm dirigit. Septem primae qvaestiones examinant qvae pars pro cognitis habet (declarare et definire, praecondicionem, pactvm fvnctionis partis 6, nvntia conivnctoris, casvs qvaesitionis binariae, tabvlam vestigii et lectvram extra vectorem); tres seqventes ordine lectionvm ideas praecipvas partis attingvnt, et in eis «nondvm scio» responsio honesta est. Qvaeqve responsio rem explicat et lectionem nominat qvae eam tractat; eaedem facvltates in lectione synthesis itervm metivntvr.
Antequam vnitatem incipias, pvnctvm vnde proficisceris metire. Brevis est sui ipsivs probatio: non aestimatvr, et eivs exitvs in solo tvo navigatro servatvr.
Qvaestio 1Ex vnitatibvs prioribvsQvid facit versvs
int gcd(int a, int b);antemainscriptvs?Declarationem et definitionem confvndit: sine corpore nihil est qvod exseqvatvr, et nvlla fvnctio exseqvitvr qvia scripta est, sed cvm vocatvr.Declarare cvm vocare confvndit: vocatio genera parametrorvm non fert.Ignorat compilatori signatvram svfficere ad vocationem examinandam; corporis defectvm, si nemo id scribit, conivnctor detegit, non compilator.Declaratio svfficit vt compilator qvamqve vocationem examinet; definitio, cvm corpore, inferivs vel in alia plica esse potest. Tota lectio Plvres plicae et bibliothecae propriae hac separatione nititvr: capvt declarat, plica implementationis definit.Repete: Fvnctiones
Qvaestio 2Ex vnitatibvs prioribvsFvnctio
toBase(n, base)praecondicionem habet «n >= 0et2 <= base <= 10». Qvis eam praestare debet?Praecondicionem cvm validatione introitvvm confvndit: validare mvnvs est confinii programmatis, non cvivsqve fvnctionis.Credit commentarios examinari; compilator eos abicit.Non videt pactvm officia distribvere; sine eo nemo scit qvis erraverit cvm aliqvid deficit.Praecondicio est membrvm pacti qvod vocantem obligat; vicissim fvnctio postcondicionem svam praestat. Si praecondicio violatvr, fvnctio nihil promittit. Lectio Temptare docebit eamassertexaminare dvm programma elaboratvr.Repete: Fvnctiones
Qvaestio 3Ex vnitatibvs prioribvsFvnctio
binarySearch(values, target)lectionis 6.4 positionemtargetreddit, velvalues.size()si non adest. Qvae est eivs praecondicio?Vectore vacvo circvitvs nvllvm gyrvm facit et fvnctio 0 reddit, qvod estvalues.size(): casvs postcondicione tegitvr.Fvnctio absentiam nvntiat; praesentiam exigere eam invtilem redderet.Cvm elementis repetitis fvnctio vnam ex positionibvs valoris reddit, qvod postcondicio admittit.Qvisqve gyrvs dimidivm intervalli abicit cvm elemento medio comparando, idqve validvm est solvm si vector ordinatvs est. Datis non ordinatis fvnctio sine monito falsvm aliqvid respondet. Praecondicio in pacto scribitvr, vbi vocans eam videt.Repete: Qvaerere et ordinare
Qvaestio 4Ex vnitatibvs prioribvsProgramma sine erroribvs compilatvr et, cvm plica exsecvtabilis aedificatvr, apparet
undefined reference to `tetrahedral(int)'. Qvod stadivm defecit?Nvntia compilatoris, qvae plicam et versvm citant, a nvntiis conivnctoris, qvae obiecta et nomina citant, non distingvit.Programma nvmqvam exstitit: sine plica exsecvtabili nvlla est exsecvtio.#includeabsens, dvm compilatvr,was not declared in this scopegignit, non hoc nvntivm.Compilator qvamqve vocationem accepit qvia declarationem vidit; conivnctor definitionem in omnibvs obiectis et in bibliothecis qvaesivit, nec invenit. Lectio Plvres plicae et bibliothecae propriae cavsas eivs vsitatas explicat: plicam qvae compilata non est, vel declarationem cvm alio genere descriptam.Repete: Programmata, compilatores et C++
Qvaestio 5Ex vnitatibvs prioribvsQvae ex his casvvm collectionibvs qvaesitionem binariam optime temptat?
Copiam cvm extensione confvndit: nvmqvam absentiam neqve margines temptat, vbi errores plervmqve latent.Casvs qvi iam transiit is est qvi minime verisimiliter aliqvid novi detegit.Infiniti svnt, vel intra limites generis nvmero immensi: temptare eligere postvlat.Qvisqve casvs alivm marginem intervalli exercet: intervallvm ab initio vacvvm, id qvod ad vnvm elementvm redigitvr, extrema et tres modos absentiae. Casvs ex specificatione eligere, per regiones et margines, argvmentvm est lectionis Temptare.Repete: Qvaerere et ordinare
Qvaestio 6Ex vnitatibvs prioribvsQvid valent
aetbpostint a{0}; int b{1}; for (int i{0}; i < 4; ++i) { const int t{a + b}; a = b; b = t; }?Vnvm gyrvm plvs nvmerat: cvmi < 4corpvs qvater percvrritvr, non qvinqvies.Vnvm gyrvm minvs nvmerat, errorem vnivs symmetricvm.Obliviscitvrtsvmmam servare compvtatam anteqvamamvtetvr: in vltimo gyroa3 exbaccipit, sedbeam svmmam, 5, accipit, non novvm valorema.Qvaestio 7Ex vnitatibvs prioribvsCvr
std::vector<int> v{1, 2}; std::println("{}", v[2]);optionibvs cvrsvs sistitvr et, solo-O2compilatvm, sine detectoribvs, nvmervm qvemlibet scribere potest?Credit optimizationem errores reparare; tantvm examinationes tollit et svpponit programma normam non violare.Effectvm invertit: examinatio qvae programma sistit est bibliothecae sine optimizatione.Est error vnivs indicvm: indices vectoris dvorvm elementorvm svnt 0 et 1.Qvaestio 8Capvt cvm cvstodiis inclvsionis
double scale(double x)definit (non solvm declarat), sineinline, et id inclvdvntmain.cppetreport.cpp. Qvid accidit cvm programma aedificatvr?Credit cvstodias inter plicas agere; intra qvamqve vnitatem translationis agvnt.Plicam qvae compilatvr cvm toto programmate confvndit: intra qvamqve plicam vna tantvm definitio est.Responsio honesta est: lectio 8.1 id ostendit cvm vero nvntio conivnctoris.Cvstodiae impedivnt ne capvt bis in eandem plicam intret, sed qvaeqve.cppseparatim compilatvr et svvm exemplvm definitionis accipit: conivnctor dvas invenit. Haec est regvla vnivs definitionis, ex lectione Plvres plicae et bibliothecae propriae.Qvaestio 9Fvnctio qvingenta tentamina avtomatica diligenter electa transit. Qvid affirmari potest?
Abvndantiam cvm demonstratione confvndit; error in margine qvem nvllvs casvs tetigit qvemlibet nvmervm casvvm interiorvm svperat.Casvs non svnt specimen fortvitvm errorvm possibilivm, et freqventia svccessvvm non metitvr qvam verisimile sit programma rectvm esse.Responsio honesta est: lectio 8.2 ab hac qvaestione incipit.Tentamen praesentiam erroris ostendere potest, nvmqvam absentiam: rectitvdinem pro omnibvs casibvs affirmare argvmentvm postvlat, sicvt invariantem lectionis 4.3, non indicem casvvm. Tentamina bene electa improbabile reddvnt vt error commvnis elabatvr, et ideo tanti valent. Lectio Temptare hanc distinctionem explicat.Repete: Temptare
Qvaestio 10Pvnctvm interrvptionis in versv
total += k;est, intra circvitvm, et programma ibi tertivm sistitvr. Qvid versvs illvminatvs indicat?Consistentiam cvm gradv iam facto confvndit.Locvm vbi programma sistitvr, qvem is qvi emendat eligit, cvm cavsa defectionis confvndit.Responsio honesta est: lectio 8.3 pvncta interrvptionis et gradvs tractat.
Argvmentvm oneratvr…