Svmmarivm
Haec lectio tertiam cvrsvs partem aperit, expressionibvs earvmqve operatoribvs dedicatam. Explicat ad qvid pars valeat: docere expressiones constrvere qvarvm valor certo praedici possit, sciendo qvae operatio prior fiat, cvivs generis sit eventvs, qvos effectvs secvndarios habeant et qvae expressiones significatione careant; qvattvor eivs lectiones exhibet et filvm qvo nectvntvr, ab arithmetica integra et reali vsqve ad bit et bibliothecam mathematicam, per condiciones et per catalogvm modi agendi indefiniti; in memoriam revocat qvae pars ex secvnda pro cognitis habet, id est genvs cvivsqve dati, eivs fines et conversiones; qvaestionem qvam pars solvit proponit, programmatis qvod sine vllo monito compilatvr et cvivs responsa ad sex qvaestiones scholares omnia falsa svnt, nisi omnino desvnt; et ostendit qvo dvcat, in partibvs seqventibvs et in cvrsv Programmatio Lingva C++ II.
Proposita discendi
- Ordinem argvmentorvm partis describere et explicare qvid qvaeqve lectio seqventi conferat.
- Necessaria ex parte 2 (genera integra et realia, eorvm spatia valorvm, exvndationem et conversiones) in memoriam revocare et, si opvs est, retractare.
- Exemplo praevidere valorem expressionis pendere a regvlis aestimationis (praecedentia, genere operandorvm, ordine effectvvm) qvae non semper cvm regvlis mathematicae scholaris congrvvnt.
- Agnoscere qvid in fine partis facere scire oporteat, idqve distingvere ab eo qvod in partibvs seqventibvs discetvr.
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 ex secvnda pro cognitis habet: divisionem inter integros, scriptvram in basi 2, svbtractionem sine signo et exvndationem cvm signo. Sex seqventes ordine lectionvm ideas praecipvas partis attingvnt, et complvres earvm a mathematica scholari vel a logica elementari proficiscvntvr. Nemo eas iam recte solvere cogitvr, et in dvabvs 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 prioribvsProgramma
const double r{7 / 2};declarat etrscribit. Qvid apparet?Pvtat genvs variabilis decernere qvomodo dividatvr; id decernit genvs operandorvm.Pvtat divisionem integram rotvndare; fractionem abicit.Valor 3 constans est et indoubleexacte repraesentatvr: nvlla angvstatio est qvae reiciatvr.Divisio7 / 2inter integros fit et qvotientem integrvm dat, 3; tvm demvm ille 3 indoubleconvertitvr. Genvs operandorvm operationem decernit, non genvs variabilis qvae eventvm accipit. Lectio 3.1 hanc observationem in regvlam generalem vertit: genvs in qvoqve nodo expressionis decernitvr.Repete: Characteres, valores Booleani, conversiones et constantes
Qvaestio 2Ex vnitatibvs prioribvsQvomodo nvmervs 13 in basi 2 scribitvr, octo bit adhibitis?
Pondera male addit: .Residva divisionvm svccessivarvm eo ordine scribit qvo prodevnt; ab vltimo ad primvm legvntvr.Haec forma est 26, dvplvm nvmeri 13: bit vna positione translata svnt.Qvaeqve positio dvplo plvs pendit qvam ea qvae ad dextram eivs est: cifrae 1 positiones ponderis 8, 4 et 1 occvpant. Lectio 3.4 in his bit directe operatvr, ita vt eos expedite legere conveniat.Qvaestio 3Ex vnitatibvs prioribvsQvid scribit
std::println("{}", 0u - 1);cvmunsigned int32 bit?Svffixvmunon respicit: genvs sine signo nvmeros negativos non habet.Arithmeticam sine signo, modvlo definitam, cvm exvndatione cvm signo confvndit.Pvtat svbtractionem in minimo valore generis consistere; in orbem redit.Arithmetica sine signo est modvlo : . Eventvs definitvs est, et ideo nvllvs detector evm notat. Pars evm rvrsvs invenit in conversionibvs expressionis mixtae et in operatoribvs bitorvm, qvi generibvs sine signo scribvntvr.Qvaestio 4Ex vnitatibvs prioribvsProgramma
int count{std::numeric_limits<int>::max()};et deindecount = count + 1;exseqvitvr. Qvid norma de valorecountpraestat?Confvndit qvod interdvm observatvr cvm eo qvod norma praestat; reditvs ad minimvm est id qvod genera sine signo facivnt, non ea cvm signo.Finem generis neglegit: ille nvmervs inint32 bit non capitvr.Compilator valores qvos programma in exsecvtione habebit non novit; fere semper compilat nihil dicens.Additio praecondicionem habet, vt eventvs in genere capiatvr, et extra eam norma nihil promittit. Detector cvrsvs programma sistit; sine eo qvidlibet scribi potest. Lectio 3.3 hvnc casvm cvm ceteris eivsdem speciei in catalogo colligit.Qvaestio 5Qvantvm valent et ?
A sinistra ad dextram operatvr, praecedentiam prodvcti non cvrans.Parentheses secvndae expressionis neglegit.Cviqve expressioni valorem alterivs tribvit: effectvm parenthesivm invertit.Prodvctvm artivs ligat qvam svmma: in primvm mvltiplicatvr, et parentheses hvnc ordinem mvtant. C++ eandem conventionem seqvitvr, et lectio 3.1 eam ad divisionem, ad residvvm et ad associativitatem extendit, arbore expressionis vt instrvmento.Repete: Arithmetica
Qvaestio 6Secvndvm theorema divisionis mathematicae, residvo condicioni svbiecto, qvi svnt qvotiens et residvvm nvmeri per divisi?
Hoc C++ compvtat, sed non implet: residvvm mathematicae non est negativvm.Identitatem non inspicit: , non .Ne hoc qvidem identitatem implet: .Theorema cvm postvlat, et hi dvo nvmeri soli id implent. C++ contra qvotientem versvs nihilvm trvncat:-7 / 2valet et-7 % 2valet . Lectio 3.1 discrimen explicat et docet residvvm mathematicae ex residvo C++ obtinere.Repete: Arithmetica
Qvaestio 7Qvae est negatio envntiati «plvit et frigvs est»?
Singvla membra negat connectivo non mvtato: hoc mvlto plvs affirmat qvam negatio, qvia etiam diem siccvm et frigidvm exclvdit.Vnvm tantvm e membris negat.Idem dicit ac secvnda optio, eodem errore.Negatio conivnctionis est disivnctio negationvm: haec est vna e legibvs De Morgani. Svfficit vt altera e dvabvs rebvs desit vt envntiatvm falsvm sit. Lectio 3.2 eandem legem ad condiciones programmatis adhibet.Repete: Relationes et logica
Qvaestio 8Qvid scribit
std::println("{}", 3 < 5);?Pvtat valorem logicvm vt nvmervm scribi; cvm signo loci{},std::printlnverbvm scribit.Pvtat expressionem vt textvm scribi; qvod scribitvr est eivs valor.Est: comparatio est expressio generisbool.Comparatio est expressio vt qvaelibet alia: valorem habet, generisbool, etstd::printlnevm scribit vttruevelfalse. Lectio 3.2 ab hac observatione proficiscitvr: condicio compvtatvr, et ideo praecedentiam, arborem et algebram habet.Repete: Relationes et logica
Qvaestio 9Post
int a{5};etint b{a++ * 2};, qvantvm valentaetb?Responsio honesta est: lectio 3.3 discrimen inter valorem expressionis et eivs effectvm docet, et probatio finalis id itervm interrogabit.Effectvs obliviscitvr:a++valoremaavget.Novo valoreavtitvr; incrementvm svffixvm valorem priorem dat.Expressioa++valorem habet, evm qvemahabebat (5), et effectvm, qviain 6 relinqvit. Prodvctvm valore vtitvr, non effectv. Lectio 3.3 docet vtrvmqve separare, et agnoscere qvando dvo effectvs in eadem expressione eam significatione privent.Repete: Assignatio, effectvs secvndarii et modvs agendi indefinitvs
Qvaestio 10Qvid scribit
std::println("{}", 2 ^ 3);?Responsio honesta est: lectio 3.4 id explicat, et probatio finalis id itervm interrogabit.Circvmflexvm vt potentiam legit, vt in notatione mvltarvm machinarvm calcvlatoriarvm; in C++ non est.Evm vt prodvctvm legit.In C++ circvmflexvs non est potentia, sed vel exclvsivvm per bit: et solo bit ponderis 1 differvnt, ita vt eventvs sit 1. C++ operatorem potentiae non habet; lectio 3.4 docet qvandostd::powadhibendvm sit et qvando translatio.Repete: Bit et bibliotheca mathematica
Argvmentvm oneratvr…