Svmmarivm
Haec lectio sextam cvrsvs partem aperit, datis compositis dedicatam. Explicat ad qvid pars valeat: docere qvomodo collectiones datorvm repraesententvr (seqventiae magnitvdinis fixae et variabilis, tabvlae et tabvlaria) et algorithmis primariis tractentvr, manv scriptis et e bibliotheca svmptis, aestimando qvanti constent; sex eivs lectiones exhibet et filvm qvo nectvntvr; in memoriam revocat qvae pars pro cognitis habet, praesertim circvitvs cvm invariante et transmissionem per referentiam constantem; qvaestionem qvam pars solvit proponit, programmatis qvod data servare debet qvorvm nvmervm ignorat et qvod, variabilibvs singvlis scriptvm, ea qvae svpersvnt tacitvm praeterit; svmptvm praenvntiat vt alteram algorithmi mensvram, vna cvm eivs rectitvdine; et ostendit qvo dvcat, in partibvs seqventibvs et in cvrsv Programmatio Lingva C++ II.
Proposita discendi
- Seriem argvmentorvm partis describere et explicare qvid qvaeqve lectio seqventi conferat.
- Circvitvs, eorvm invariantes et transmissionem parametrorvm (per valorem, per referentiam et per referentiam constantem) in memoriam revocare, et eos, si opvs est, retractare.
- Exemplo svmptvm algorithmi praenvntiare vt alteram eivs qvalitatis mensvram, vna cvm eivs rectitvdine.
- Agnoscere qvid in fine partis facere scire oporteat, et id ab eis distingvere qvae in partibvs seqventibvs discentvr.
Probatio initialis
Anteqvam pars percvrritvr, initivm ipsvm metiri expedit. Haec probatio est svi ipsivs exploratio: nvlli censvrae svbicitvr, et solvm eivs propositvm est stvdivm dirigere. Qvattvor primae qvaestiones examinant qvae pars pro cognitis habet: invariantem circvitvs qvi maximvm qvaerit, modvm transmissionis parametri magni, nvmervm gyrorvm dvorvm circvitvvm nidificatorvm et arithmeticam sine signo. Sex seqventes ordine lectionvm ideas praecipvas partis attingvnt: indices validos seqventiae, creationem vectoris, qvotiens magnitvdo in dimidivm dividi possit, qvaesitionem in datis ordinatis, dvplicem indicem tabvlae et pericvlvm data eivsdem entis in collectionibvs separatis servandi. Nemo eas iam recte solvere cogitvr, et in nonnvllis earvm «nondvm scio» responsio honesta est: qvaeqve responsio, recta vel non, rem explicat et lectionem nominat qvae eam tractat. Eaedem facvltates in fine itervm metivntvr, in lectione synthesis.
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 prioribvsFragmentvm
int largest{0}; int t{}; while (std::cin >> t) { if (t > largest) { largest = t; } }inlargestmaximam temperatvrarvm lectarvm relinqvere debet. Qvo introitv deficit?Primvs gyrvs datvm cvm 0 comparat et id servat si positivvm est: vno solo dato positivo resvltatvm rectvm est. Vestigivm perseqvi expedit anteqvam respondetvr.Per>datvm maximo aeqvale id non svbstitvit, sed maximvm idem nvmervs est: repetitio resvltatvm non mvtat.Prodit initialisationem cvm invariante collatam non esse: circvitvs rectvs postvlat vt invarians ante primvm gyrvm valeat.Invarians optata, «largestest maximvm eorvm qvae hactenvs lecta svnt», initio non valet, qvia anteqvam qvicqvam legitvr nvllvm maximvm est, et 0 initiale omne datvm negativvm vincit. Corrigitvr initialisando primo dato, postqvam confirmatvm est id exstare. Lectio Vectores idem in seqventia servata facit, et bibliotheca id perstd::ranges::maxexprimit, cvivs praecondicio est vt seqventia vacva non sit.Repete: Circvitvs rectos designare
Qvaestio 2Ex vnitatibvs prioribvsFvnctio compvtat qvot vocales habeat textvs decies centenorvm milivm charactervm, in
std::stringservatvs, nec evm mvtat. Qvomodo eivs parametrvm declarare expedit?Transmissio per valorem decies centena milia charactervm in qvaqve vocatione exscribit: recta est, sed svmptvm solvit qvi nihil confert.Haec declaratio non exscribit, sed textvm sine necessitate mvtari sinit nec litteralem nec obiectvm temporarivm accipit: responsio «non exscribere» cvm «mvtare sinere» confvndit.Modvs transmissionis ad interfaciem pertinet: transmissio per valorem fvnctioni exemplvm proprivm promittit, et programma id facere debet.Referentia constans textvm legit sine exemplo facto et sine licentia evm mvtandi, et praeterea obiectvm temporarivm admittit. In parte 6 haec electio regvla fit: fvnctio qvae vectorem decies centenorvm milivm datorvm legit evm vtconst std::vector<int>&accipit, et exemplvm svpervacvvm error svmptvs freqventissimvs fit.Repete: Parametra et ambitvs
Qvaestio 3Ex vnitatibvs prioribvsQvotiens
++countexseqvitvr infor (int i{0}; i < 6; ++i) { for (int j{0}; j < i; ++j) { ++count; } }?Responsvm rectvm:
Circvitvs interior 0 gyros facit cvm , vnvm cvm , et sic deinceps vsqve ad 5 cvm : in svmma , qvod est . Lectio Svmptvs algorithmi nvmerationem generaliter extendit: dvo circvitvs qvi omnia paria datorvm percvrrvnt gyros facivnt, et hic nvmervs decernit vtrvm algorithmvs decies centenis milibvs datorvm conveniat.Repete: Circvitvs
Qvaestio 4Ex vnitatibvs prioribvsQvid scribit
std::println("{}", 0u - 1);in systemate vbiunsigned int32 bit habet?Pvtat genvs sine signo valores negativos admittere.Pvtat detractionem in minimo valore generis consistere; arithmetica sine signo circvmvertitvr, non satvratvr.Monitvm possibile cvm errore confvndit: expressio valida est et eivs valor definitvs.Arithmetica sine signo modvlaris est: 1 a 0 detrahere ad maximvm valorem generis circvmvertitvr, . Pars 6 magnitvdines perstd::size_tmetitvr, qvod item sine signo est, ita vtv.size() - 1cvm vectore vacvo non det , sed nvmervm ingentem; lectio Series de hac detractione monet, et lectio Vectores circvitvm ostendit qvi propter eam extra fines egreditvr.Qvaestio 5In seqventia elementorvm vt in C++ nvmeratorvm, qvi indices elementvm designant?
A vno nvmerat, vt in sermone commvni; in C++a[n]iam extra seqventiam est.Est error vnivs freqventissimvs: indices pro elementis nvmerat.Responsio honesta est: lectio 6.1 id explicat, cvm ratione cvr a nihilo nvmeretvr.Index lingvae C++ a nihilo nvmerat, qvia est intervallvm ab initio a primo elemento: primvm esta[0]et vltimvma[n - 1]. Per[]ad indicem extra hoc intervallvm accedere modvs agendi indefinitvs est, et lectio Series docet demonstrare, per invariantem circvitvs, qvemqve accessvm validvm esse.Repete: Series
Qvaestio 6Qvid continet
vpoststd::vector<int> v(3, 7);?Parentheses legit qvasi vnci cvrvi essent.Mvnera dvorvm nvmerorvm invertit.Responsio honesta est: lectio 6.2 vectorem eivsqve modos creandi praesentat.Qvaestio 7Qvot gyros facit
for (int m{1024}; m > 1; m /= 2) { ... }?Responsvm rectvm:
Valores ipsivsminitio cvivsqve gyri svnt 1024, 512, 256, 128, 64, 32, 16, 8, 4 et 2: decem gyri, qvia , et decem est . Algorithmvs qvi qvaestionem svam in qvoqve gradv ad dimidivm redvcit ordine gradvvm facit, et lectio Svmptvs algorithmi evm logarithmicvm appellat: cvm miliardo datorvm ei circiter triginta svfficivnt.Repete: Svmptvs algorithmi
Qvaestio 8Catalogvs decies centena milia nominvm ordine alphabetico continet. Vt vnvm inveniatvr, in medio aperitvr, dimidivm in qvo nomen esse non potest reicitvr, et idem cvm altero repetitvr. Qvotiens, ad svmmvm, aperiendvs est?
Est nvmeratio qvaesitionis qvae nomina singvla examinat: ordine non adhibito, medio dimidivm catalogi percvrritvr.Est radix qvadrata decies centenorvm milivm: tractvm in dimidivm dividere cvm evm in frvsta dividere confvndit.Logarithmo decimali vtitvr: qvaeqve apertio dimidivm reicit, non novem decimas.Qvaeqve apertio tractvm in qvo nomen esse potest ad dimidivm redvcit, et decies centena milia svperat: post viginti dimidiationes vnvm solvm nomen manet. Est qvaesitio binaria lectionis Qvaerere et ordinare, qvae tantvm valet si data ordinata svnt et qvae per invariantem ivstificatvr.Repete: Qvaerere et ordinare
Qvaestio 9Cvm
std::vector<std::vector<int>> t{{1, 2, 3}, {4, 5, 6}};, qvanti valentt[1][0]ett.size()?Primvm indicem vt colvmnam legit et colvmnas pro ordinibvs nvmerat.Pvtatsize()omnes cellas tabvlae nvmerare.Responsio honesta est: lectio 6.5 tabvlas vt vectores vectorvm praesentat.Qvaestio 10Programma nomina gregis in vno vectore servat et eorvm aestimationes in altero, ita vt aestimatio
grades[i]sit ipsivsnames[i]. Si solvm vectorem aestimationvm ordinat, qvid accidit?Compilatori dvo vectores independentes svnt: relatio solvm in mente eivs exstat qvi programma scripsit.Algorithmvs vnvm solvm vectorem accipit nec de altero qvicqvam scit.Omnis accessvs validvs est et omne resvltatvm definitvm: vitivm est logicae, et ideo nevter dvorvm detectorvm cvrsvs id nvntiat (is errorvm memoriae, AddressSanitizer, et is modi agendi indefiniti,UndefinedBehaviorSanitizer).
Argvmentvm oneratvr…