Ad argvmentvm transi
Topos Uranos

Svmmarivm

Hactenvs omne programma cvrsvs vna clavsvra fvit, main, in qva omnia ibi scribvntvr vbi adhibentvr. Haec lectio docet qvomodo membro programmatis nomen detvr eaqve adhibeatvr interiore eivs non inspecto: fvnctio. Tractantvr declaratio, qvae compilatori nomen, genvs redditvm et parametra nvntiat; definitio, qvae corpvs addit; et vocatio, qvae moderationem ad id corpvs transfert et valorem redditvm accipit. Distingvitvr id qvod compilator in compilatione inspicit (vt qvaeqve vocatio cvm aliqva declaratione congrvat) ab eo qvod in exsecvtione accidit (saltvs ad definitionem et reditvs). Explicatvr cvr ad finem fvnctionis qvae valorem reddere debet sine return pervenire modvs agendi indefinitvs sit. Exsecvtio acervo vocationvm vestigatvr, qvi pro vnaqvaqve vocatione nondvm finita vnvm qvadrvm servat. Et qvaeqve fvnctio pacto specificatvr, praecondicione et postcondicione sva, qvod dicit qvid fvnctio a vocante postvlet et qvid vicissim praestet.

Proposita discendi

  1. Fvnctiones cvm parametris et valore reddito declarare, definire et vocare, et in programmate indicare qvod membrvm declaratio sit et qvod definitio.
  2. Diagrammate acervi vocationvm exsecvtionem programmatis seqvi cvivs fvnctiones inter se vocant.
  3. Fvnctionem praecondicione et postcondicione sva specificare, et vocationem scribere qvae praecondicionem violet.
  4. Explicare cvr fvnctio qvae in aliqva via valorem non reddit modvs agendi indefinitvs sit, et monitvm compilatoris respondens agnoscere.

Cvr fvnctiones

Programmata partis prioris qvamqve qvaestionem intra main solvebant, idqve svffecit dvm qvaestiones parvae erant. Atqvi simvlac programma crescit, tres difficvltates apparent. Prima est repetitio: si idem calcvlvs tribvs locis reqviritvr, ter scribitvr, et error in eo ter corrigitvr (avt vno loco corrigere obliviscimvr). Secvnda est lectvra: clavsvra qvinqvaginta versvvm non dicit qvid faciat, sed qvomodo faciat, et lector consilivm ex mechanismo restitvere debet. Tertia est tentamen: si omnia commixta svnt, nvlla via est membrvm confirmandi qvin reliqvvm exseqvaris.

Fvnctio est fragmentvm programmatis nomine praeditvm, qvod data accipit, qvae parametra vocantvr, et eventvm tradit, qvi valor redditvs vocatvr. Mathematica ideam iam per saecvla novit: distantia inter dvo pvncta plani est fvnctio qvattvor coordinatarvm eorvm, d(x1,y1,x2,y2)=(x2−x1)2+(y2−y1)2d(x_1, y_1, x_2, y_2) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}, et qvi perimetrvm triangvli compvtat formvlam non ter repetit, sed eam nominat et ter adhibet. In C++ idem scribitvr.

ExemplvmPerimetrvm triangvli

Programma coordinatas trivm verticvm triangvli legit et perimetrvm eivs scribit, qvod est svmma longitvdinvm trivm latervm eivs.

Programma in C++
#include <cmath>#include <iostream>#include <print>​// Distantia inter pvncta (x1, y1) et (x2, y2).double distance(double x1, double y1, double x2, double y2){    const double dx{x2 - x1};    const double dy{y2 - y1};    return std::sqrt(dx * dx + dy * dy);}​int main(){    double ax{};    double ay{};    double bx{};    double by{};    double cx{};    double cy{};    std::cin >> ax >> ay >> bx >> by >> cx >> cy;    const double perimeter{distance(ax, ay, bx, by) + distance(bx, by, cx, cy)                           + distance(cx, cy, ax, ay)};    std::println("Perimetrvm: {}", perimeter);}
Data programmati inserenda
0 0 3 0 0 4
Exitvs
Perimetrvm: 12

Latera triangvli verticibvs (0,0)(0, 0), (3,0)(3, 0) et (0,4)(0, 4) metivntvr 3, 5 et 4, et eorvm svmma est 12.

Fvnctio distance semel scribitvr et ter adhibetvr; main legitvr tamqvam definitio perimetri, «svmma trivm distantiarvm»; et distance per se temptari potest, cvm pari pvnctorvm qvorvm distantia nota est. Sic tria qvae deerant acqvirvntvr. Doctrina generalis, qvae in qvalibet lingva valet, est fvnctionem ideam nominare: qvi ea vtitvr cogitat qvid faciat, non qvomodo faciat. Haec separatio inter vsvm et effectionem abstractio procedvralis vocatvr, et argvmentvm est totivs partis.