Tölvunarfręši 2

Vikublaš 3


Ķ žessari viku veršur fariš ķ żmislegt višbótarefni um klasa (e. class) ķ C++. Žetta er efni ķ kafla 10, en einnig veršur fariš hratt yfir kafla 12 um erfšir (e. inheritance). Erfšir virka mjög svipaš ķ C++ og Java, en framsetning (e. syntax) žeirra er ašeins frįbrugšin. Eina efniš sem viš eigum žį eftir aš fara yfir śr C++ bókinni ķ žessari lotu er fyrri hluti kafla 12 um vektora (arrays). Žaš kemur annaš hvort ķ lok žessarar viku eša ķ byrjun nęstu.

Žaš er żmislegt annaš um C++ sem fariš veršur yfir ķ nįmskeišinu, en žaš kemur smįtt og smįtt inn žegar viš žurfum į žvķ aš halda. Žetta į sérstaklega viš um fjölnota föll og klasa (e. templates), sem eru ķ kafla 19 ķ kennslubók.

Dęmatķmar žessa viku (25.-26. jan.) verša ķ tölvuverum og er žetta ķ sķšasta sinn sem žeir eru ķ tölvuverunum. Ķ nęstu viku verša dęmatķmarnir ķ stofunum į stundatöflunum ykkar.

Skiladęmi 3

Leysiš eftirfarandi dęmi og skiliš ķ hólf dęmatķmakennara ykkar fyrir kl. 12:00 mįnudaginn 31. janśar. Žeir taka ekki viš dęmum sem koma seinna.

  1. Skrifiš hrašvirkara C++ forrit til aš reikna Wolfram rununa sem skilgreind var ķ Dęmi 1 į Vikublaši 2. Finniš gildiš f(100) meš žessari ašferš.
    (Vķsbending: Notiš vektor)

  2. Skrifiš klasann Circle sem er eins og klasinn Rectangle ķ forriti 10.2, nema aš smišurinn og ašferšin DrawShape hafa nś ašeins višfangiš "int radius". Eins į DrawShape aš teikna hring śr stjörnum (*) meš žessum radķus. Žetta žarf ekki aš vera alveg nįkvęmur hringur, en žiš gętuš žurft aš nota hornaföll til aš fį hann til aš lķta vel śt.

  3. Eftirfarandi C++ fall er skilgreint:
    	int& fall( int i )
    	{
    	    int j = i*2;
    	    return j;
    	}
     
    Ķ ašalforriti er kallaš į falliš į eftirfarandi hįtt:
    	int i = fall( 5 ) + fall( 2 );
     
    Er eitthvaš athugavert viš žessa notkun? Ef svo er, śtskżriš žį vandamįliš, en hvort sem eitthvaš er athugavert eša ekki śtskżriš nįkvęmlega gildi breytunnar i eftir keyrslu skipunarinnar.

  4. Bętiš viš Cat-klasann ķ forriti 6.4 ašferšinni Attacks. Hśn tekur sem višfang hlut af klasanum Bird. Ķ 10% tilfella nęr kötturinn fuglinum og žį prentar ašferšin śt eitthvaš eins og "Smjatt, smjatt", en ef kötturinn nęr fuglinum ekki žį prentast śt "Arg!". Žaš er slembitölugjafi sem ręšur žvķ hvort kötturinn nęr fuglinum (sjį sżnisforrit fyrir slembitölugjafa). Žiš žurfiš lķka aš smķša klasann Bird, sem į aš vera svipašur Cat klasanum, nema önnur hljóš.
    Breytiš sķšan žeim hluta Attacks ašferšarinna sem įkvaršar hvort kötturinn nęr fuglinum, žannig aš ef kötturinn nęr fuglinum, žį lęrir hann į žvķ og nęst verša hęrri lķkur į žvķ aš hann nįi fugli. Hafiš falliš samt žannig aš lķkurnar verši aldrei 100%. Śtskżriš og réttlętiš lęrdómsfalliš ykkar.

  5. Ķ forriti 10.5 eru aldur og žyngd kattarins geymd ķ ónefndum breytum sem innri breyturnar itsAge og itsWeight benda į. Bętiš viš strengbreytum fyrir nafn kattarins (itsName) og nafn eiganda hans (itsOwner). Skilgreiniš žęr į sama hįtt og gert er meš aldurinn og žyngdina. Lagiš smišinn og eyšinn aš žessum nżju breytum og bętiš inn ašferšum til aš fį nafniš og eigandann, og einnig til aš skipta um eiganda.

Žeir sem vilja fį ašeins meiri ę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, 24. janśar, 2005.