>> DAVID J. Malan: Gadewch i ysgrifennu rhaglen yn yr ydym yn ceisio cyfnewid y gwerthoedd
dau newidyn, x ac y.
Ymlaen llaw, yr wyf wedi ysgrifennu llawer o'r rhaglen hon eisoes.
Yn gyntaf, yr wyf yn datgan newidyn, x, ac yn ei storio ynddo gwerth, 1.
Yna, yr wyf yn datgan amrywiol y a storio ynddo gwerth, 2.
>> Yna mi fwrw ymlaen â printf i arddangos gwerthoedd y ddau newidyn.
Yna mi hawlio â printf arall i gael eu cyfnewid newidynnau hynny.
Yna mi galw swyddogaeth o'r enw cyfnewid.
Ac yna yr wyf yn honni bod y newidynnau wedi cael eu cyfnewid.
Ac yna yr wyf yn argraffu allan bod yr hyn yr wyf yn hawlio yw gwerthoedd newydd o x ac y.
>> Nawr beth yw hyn cyfnewid swyddogaeth?
Nid yw'n rhywbeth sy'n dod â C. Yn wir, os edrychwn ar ben fy
ffeil, byddwch yn sylwi fy mod wedi datgan prototeip ar gyfer y cyfnewid swyddogaeth
yn nodi ei bod yn cymryd dau ints, a elwir yn a b fympwyol, ac mae hyn yn
Nid yw swyddogaeth yn dychwelyd unrhyw beth.
Felly yn ôl pob tebyg, mae'n gwneud yr hyn y mae'n ei ddweud mewn cyfnewidiadau yn a gwerthoedd b yn.
Gadewch i ni yn awr weithredu cyfnewid.
>> Yn gyntaf, yr wyf i'n mynd i ddatgan dros dro amrywiol ac aseinio iddo
gwerth mewn, er y gallwn dim ond mor hawdd storio ynddo b.
Yna yr wyf i'n mynd i newid y gwerth o fod yn gyfartal i'r un yn b.
Ac yna yn olaf, yr wyf i'n mynd i newid y gwerth b i fod yn beth oedd ond
bellach mewn tymheredd.
>> Nawr rwy'n hawlio hyn yr wyf wedi ei wneud yn unig yn rhesymegol gywir.
Rwyf wedi ei storio yn mewn newidyn dros dro, newid gwerth yn i fod yn b, ac yna
newid gwerth b i fod beth oedd.
Ond pan fyddaf yn llunio ac yn rhedeg y rhaglen, yr wyf yn poeni nad yw hynny'n
mynd hyn yr wyf yn ei weld.
>> Gwnewch, dim cyfnewid.
dot slaes, dim cyfnewid.
Ac yn anffodus, yn ôl printf, gwerth x ac y, hyd yn oed
ar ôl i ni honni eu bod yn cyfnewid nhw, yn dal i fod 1 a 2.
>> Nawr pam hynny?
Wel, mae'n ymddangos fod yn y prif, pan fyddwn yn yn galw hyn yn cyfnewid swyddogaeth, gan fynd yn
x ac y fel dadleuon, mae'n mewn gwirionedd yn copïau o x ac y sy'n
yn cael eu pasio i mewn i cyfnewid.
Sef, eu gwerthoedd 1 a 2 yn basio i mewn cyfnewid fel a b.
Ac mae'n a b ein bod yn y pen draw cyfnewid yn y prif.
>> Hynny yw, 1 yn dod yn 2, 2 yn dod yn 1.
Ond oherwydd bod cyfnewid unrhyw werth dychwelyd ac oherwydd ei fod yn derbyn copïau o x
ac y, mae'n hymddygiad wedi unrhyw effaith ar x ac y.
Yn wir, a a b yn cael eu cwmpasu, fel petai, i gyfnewid, tra x ac y yn parhau i fod
cwmpasu i brif.
>> Felly mae gennym broblem.
Ond sut i drwsio?