Tölvunarfręši 2
Vikublaš 2
Ķ sķšustu viku var fariš į hrašferš yfir efni kafla 1-5 og 7 ķ
C++ kennslubókinni. Til aš fullvissa ykkur um aš žiš hafiš ekki
misst af neinu mikilvęgu skuluš žiš nżta ykkur prófin sem eru į
fyrri geisladiski bókarinnar.
Ķ žessari veršur byrjaš į žvķ aš fara ķ benda (pointers), tilvķsanir
(references) og klasa (class). Žetta eru kaflar 8, 9 og 6 ķ kennslubók.
Ķ nęstu viku veršur sķšan fariš ķ efni kafla 10, sem fjallar um żmsa flóknari hluti
ķ sambandi viš ašferšir (member functions, methods) į klösum.
Žaš er mķn reynsla aš nemendur eigi ķ mestum erfišleikum meš aš nį
tökum į bendum ķ C++. Bendar munu koma mikiš viš sögu ķ žessu nįmskeiši
og žiš munum lenda ķ miklum vandręšum ef žiš nįiš ekki aš skilja hvernig
žeir vinna.
Heimadęmi 2
Leysiš eftirfarandi dęmi og skiliš ķ hólf dęmatķmakennara ykkar fyrir kl.
12:00 mįnudaginn 24. janśar. Žeir munu ekki taka viš dęmum sem koma seinna.
- Skrifiš C++ forrit til aš reikna śt talnarununa sem skilgreind er žannig aš
f(1) = f(2) = 1, en almennt gildir aš
f(n) = f(n - f(n-1) - 1) + f(n - f(n-2) - 1)
Prentiš śt fyrstu gildin ķ rununni.
- Skrifiš falliš string Sesar( string inn, int k ) sem dulmįlskóšar strenginn
inn meš Sesarkóšun (e. Caesar cipher) og skilar streng meš dulmįlsśtgįfunni.
Sesarkóšun vinnur žannig aš stafrófinu er hlišraš um k (0 ≤ k < 26) stafi
(viš skulum bara nota enska hįstafi, žaš einfaldar forritiš). Ef k er 2 žį veršur
stafurinn 'A' aš stafnum 'C', stafurinn 'R' veršur aš 'T', o.s.frv. Athugiš aš žaš er fariš
hringinn, žannig aš stafurinn 'Z' veršur aš 'B'.
Skrifiš einnig ašalforrit sem leyfir notandanum aš slį inn streng įsamt lyklinum k og
žaš skrifar śt dulkóšaša strenginn. Til aš vinna meš strengi žurfiš žiš aš bęta viš safninu
string.
- Gefiš C++ forrit sem skilgreinir int-bendinn p og setur
gildiš 20 innķ hann. Hvaš gerist ef žiš framkvęmiš skipunina "*p = 2;"
og hvers vegna? Śtskżriš.
- Minnishólfum sem fengin eru meš skipuninni new er skilaš aftur meš
skipuninni delete. Ef žiš bišjiš sķšan aftur um minnishólf žį er lķklegt
aš žiš fįiš aftur hólfiš sem žiš skilušuš. Rannsakiš hvort žetta sé tilfelliš
meš žvķ aš athuga vistfang hólfsins sem žiš fįiš. Athugiš einnig hvort gildi sem
žiš setjiš ķ hólfin séu žar ennžį ef žiš fįiš sömu hólfin.
- Skošiš forritsbśtinn hér aš nešan:
double x = 2.0;
int *p = new int;
double *q = &x;
*p = *q;
x = *p**q;
Sżniš meš teikningu stöšu breytanna aš loknum žessum skipunum. Hvaša gildi
hefur hver breyta aš loknum skipununum?
Žeir sem vilja fį ašeins meiri forritunaręfingu ęttu aš reyna viš eftirfarandi dęmi. Lausnirnar
į žeim öllum eru tiltękar, annars vegar į gömlum heimasķšum nįmskeišsins og hins vegar
aftast ķ C++ kennslubókinni. Ef žiš viljiš fį nįnari śtskżringar į lausnunum žį getiš
žiš spurt um žęr ķ dęmatķmunum.
- Dęmi 1 og 2 į vikublaši 2
frį žvķ ķ fyrra.
- Dęmi 1 į vikublaši 2
frį žvķ ķ voriš 2003.
- Dęmi 4 og 5 ķ Degi 4 į bls. 92 ķ C++ kennslubók.
- Dęmi 5 ķ Degi 5 į bls. 128 ķ C++ kennslubók.
- Dęmi 6 ķ Degi 7 į bls. 198 ķ C++ kennslubók.
- Dęmi 6 ķ Degi 8 į bls. 242 ķ C++ kennslubók.
hh (hja) hi.is, 17. janśar, 2005.