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.

  1. 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.

  2. 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.

  3. 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š.

  4. 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.

  5. 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.
hh (hja) hi.is, 17. janśar, 2005.