wiki:monisteenKorjaukset
Last modified 4 years ago Last modified on 2013-12-01 22:40:59

Ohjelmointi 1 » Luentomonisteessa havaitut virheet

Monisteen tämän hetkinen nettiversio löytyy http://kurssit.it.jyu.fi/ITKP102/monistecs/.

Korjaamatta

Korjatut

Nettiversioon tehdyt korjaukset, joita ei ole vielä painetussa monisteessa

  • 12.9.2013: BackgroundColor muutettu Background.Color
  • 21.9.2013: Sivu 21, y = 50 selitykseen lisätty: y arvo 50 (jos Level.Bottom sattuu olemaan vaikka -150).
  • 1.12.2013: Korjattu luvun 18 tulostus muotoon: // Tulostuu -4 -2 5 4 5 12 9

Nämä korjaukset tehtiin syksyllä 2013 painettuun versioon

Nämä korjaukset tehtiin keväällä 2013 painettuun versioon

  • 7.1.2013: Tekstin lukeminen tiedostosta tehty helpommin ReadAllLines-metodilla: http://msdn.microsoft.com/en-us/library/system.io.file.readalllines.aspx
  • 7.1.2013: Lisätty täydennys taulukko-luvun perään: Wikistä löytyy täydennyksiä monisteeseen
  • 7.1.2013: Lisätty täydennykset aliohjelmien kutsumiseen ja aliohjelmien kirjoittamiseen: Wikistä löytyy täydennyksiä monisteeseen
  • 7.1.2013: Sijoituslauseen suuntaa korostettu kohdassa 7.3 Arvon asettaminen muuttujaan
  • 7.1.2013: 4-luvun alkuun huomautus Visual Studion asentamisesta
  • 7.1.2013: Lukuisia kirjoitus- ja muotoiluvirheitä
  • Useassa kohdassa jypeli4.dll korjattu muotoon jypeli.dll
  • NettiDemoWWW:n Doxygen unohtaa @author yms tagit jos koodi on muotoa:
/// @author  Antti-Jussi Lakanen
/// @version 28.8.2012

/// <summary>
/// Esimerkkiohjelma, joka tulostaa tekstin "Hello World!"
/// </summary>

Eli pitää olla muodossa (kaikki yhteen kommenttipötköön)

/// @author  Antti-Jussi Lakanen
/// @version 28.8.2012
///
/// <summary>
/// Esimerkkiohjelma, joka tulostaa tekstin "Hello World!"
/// </summary>
  • 7.10.2012: Korjattu lukua: 12.6 Reaalilukujen muotoilu String.Format-metodilla #-merkin osalta. Sehän ei varaa paikkaa tulostettavalle merkille kuten 0. Eli
String.Format("{0:###0.0}",3.1) === "3.1";
String.Format("{0:0000.0}",3.1) === "0003.1";

tilanvaraus pitää tehdä pituuden avulla:

String.Format("{0,6:0.0}",3.1) === "   3.1";
  • 13.10.2012: Korjattu lukua 14 taulukoiden .Equals metodin osalta, eli palauttaa false vaikka sisältö sama jos viite eri.
  • 16.11.2012: Muutettu numeroimattomista ohjelmakoodeista Main(string[] args) muotoon Main().
  • 16.11.2012: Lukujen 13.5 ja 21.4 kuvat laitettu uudestaan jotta ei estä lukujen 13.6 ja 22 hyppypaikkaa
  • 16.11.2012: Kääntäjävirhe-liitteen viimeisen esimerkin massa-attribuutin selitystä muutettu

Nämä korjaukset tehtiin syksyllä 2012 painettuun versioon

  • 3.9.2012 (2. korjattu painos): Lisätty paljon pieniä korjauksia ja tarkennuksia. Isoimpana loogisten operaattoreiden totuustaulut. Lisäksi korjattu väite että merkkijonotaulukot alustuisivat tyhjiksi merkkijonoiksi kun ne alustuvat null-viitteellä oleviksi taulukoiksi.

Nämä korjaukset tehtiin keväällä 2012 painettuun versioon

  • Useasta kohdasta korjattu sulutus muodosta
aliohjelma(parametrit) {
...
}

suositeltuun muotoon

aliohjelma(parametrit)
{
...
}
  • Taulukoihin lisätty numerointi.
  • 16.4.7 Esimerkki: arvosanan laskeminen taulukoilla -esimerkki pyöristi liikaa ja 5:n sai silloin liian vähällä. Aliohjelmaa LaskeRajat muutettu siten, että arvosanarajat ovat double-taulukossa, ja myös arvosanojen piste-erot lasketaan desimaaliluvuilla kokonaislukujen sijaan. Korjatun version lähdekoodit: LaskeArvosanat ja LaskeArvosanat2
  • ComTest: 11.1 Käyttö. ComTest-testit toimivat nyt myös <example>-tägillä @example:n lisäksi. Ks. alla.
    /// <example>
    /// <pre name="test">
    /// // Tähän kirjoitetaan testit.
    /// </pre>
    /// </example>
    
  • Luvun 16.4 for-silmukka vuokaavio for-silmukalle sisältöä tarkennettu: i-muuttuja alkaa 0:sta ja ehtona on nyt i < 10. Tulostuksessa oli myös kirjoitusvirhe, pitäisi olla huutomerkki "Hello World"-tekstin päätteeksi.
  • Lukua 16.4 for-silmukka muokattu seuraavasti:
    • Uusi esimerkki for-silmukasta, missä silmukan runko-osassa ei tulosteta mitään.
    • Esiteltiin ikuinen silmukka for-silmukalle for(;;) { ... }.
  • Lisätty aliluku 16.4.1 Huomautus: while ja for -silmukoiden yhtäläisyydet ja erot
    • for- ja while-silmukkarakenteilla voidaan periaatteessa tehdä täsmälleen samat asiat. for- silmukan yleisen muodon
      for (muuttujien alustukset; ehto; silmukan lopussa tehtävät toimenpiteet)
      { 
         lauseet; // silmukan runko-osa
      }
      
      voisi tehdä while-rakenteella seuraavasti.
      muuttujien alustukset;
      while (ehto) 
      {
        lauseet; // silmukan runko-osa
        silmukan lopussa tehtävät toimenpiteet;
      }
      
      Mihin for-silmukkaa sitten tarvitaan? Nuo kolme osaa – muuttujien alustus, ehto, lopussa tehtävät toimenpiteet – ovat osia, jotka jokaisessa silmukkarakenteessa tarvítaan. for-silmukassa ne kirjoitetaan selvästi perättäin yhdelle riville, jolloin ne on helpompi saada kirjoitettua kerralla oikein. Silmukan suoritusta ohjaavat tekijät on myös helpompi lukea yhdeltä riviltä, kuin yrittää selvittää sitä eri riveiltä (silmukkahan voi olla hyvinkin monta koodiriviä pitkä).
  • Lukua 7.8 Huomautuksia muokattu seuraavasti:
    • Lisätty aliluku 7.8.1 Kokonaisluvun tallentaminen liukulukumuuttujaan, jonka sisältö on aikaisemman luvun 7.8 sisältö.
    • Lisätty aliluku 7.8.2 Lisäys- ja vähennysoperaattoreista:
      On neljä tapaa kasvattaa luvun arvoa yhdellä.
      
        ++a;
        a++; // idiomi
        a += 1;
        a = a + 1; // huonoin muutettavuuden ja kirjoittamisen kannalta
      
      Vastaavasti, vaikkapa kahdella vähentämiseksi on kolme vaihtoehtoista tapaa.
      
        a -= 2;
        a += -2;  // lisättävä luku voisi olla muuttuja. Luku voi olla myös negatiivinen
        a = a - 2;
      
  • Lisätty luku 21 Piirtoalusta. Luvussa käsitellään Jypeli-kirjaston Canvas-piirtoalustaa (ks. http://r.jyu.fi/1L0h), jolla voidaan tässä vaiheessa piirtää viivoja. Esimerkki: http://r.jyu.fi/1MyT.
  • 22.1 Sierpinskin kolmio (1. painoksessa luku 21.1): Sierpinskin kolmio piirretään nyt viivoilla Canvaksen avulla. Monisteen 1. painoksessa kolmiot piirrettiin vasta lopetusehdon toteutuessa. Uusi versio on luettavampi ja lähempänä alkuperäistä Sierpinskin kolmion ideaa.
  • 23.2 Listat: List<T>:n Remove ja RemoveAt-metodien erot (1. painoksessa luku 22.2). Esimerkkejä dynaamisen tietorakenteen luonteesta: http://r.jyu.fi/1Lwu.
  • 13.8 taulukot (http://r.jyu.fi/1L0g): Taulukon koon muuttaminen selvennetty. Array.Resize (ks. http://msdn.microsoft.com/en-us/library/bb348051.aspx) ei muuta taulukon kokoa vaan luo uuden viitteen.
  • 12.6 reaalilukujen muotoilu pielessä (taulukko). Kuva korjattu ja esimerkin lähdekoodi lisätty svn:ään: http://r.jyu.fi/1LMA.
  • 28.2 Laajennettu BNF (1. painoksessa luku 27.2): Java BNF-linkki oli muuttanut toiseen paikkaan, uusi linkki on http://cui.unige.ch/db-research/Enseignement/analyseinfo/JAVA/BNFindex.html.
  • Substring(Int32, Int32): Substringin toiseksi parametriksi pitääkin lätkäistä se että monta merkkiä ensimmäisen parametrin antamasta indeksistä lähtien lähdetään nappaamaan. Moniste tosiaan sanoo: "Ensimmäinen parametri on palautettavan merkkijonon ensimmäisen merkin indeksi ja toinen parametri palautettavan merkkijonon viimeistä merkkiä seuraava indeksi."
  • 25.6.4 Liukulukujen tarkkuus: "Valmiit kokonaislukutyypit ovat yleensä laskennassa liukulukutyyppejä hitaampia, ..." -> korjattu nopeampia.
  • 23.2.2 Alkioiden lisääminen ja poistaminen (1. painoksessa luku 22.2.2 Listan peruskäyttö): Remove-metodi ei poista indeksin perusteella vaan arvon. Pitäisi siis lukea elokuvat.RemoveAt(0); eikä elokuvat.Remove(0);
  • 13.8 switch-rakenne: Toisin kuin monisteessa kerrottiin, switch-rakenteessa ei voi "valua" tapauksesta (case) toiseen, toisin kuin joissakin muissa kielissä (esim. C++).
  • 7.2 Alkeistietotyypit: byte ja sbyte listattu väärinpäin. byte on etumerkitön (0..255) ja sbyte etumerkillinen (signed, -128..127). Tässähän menee hieman erilailla kuin muissa tietotyypeissä, yleensä etumerkitön merkitään erikseen u (unsigned). Alkeistietotyyppien järjestys muutenkin korjattu: Nyt tyypit alkavat pienistä (bool, 1 bitti) ja päättyvät suurimpaan (decimal, 128 bittiä).

Ongelmia hyppypaikkojen kanssa

  • OpenOfficen kuvien sijoittelu voi rikkoa hyppypaikkoja. Jos jokin linkki ei toimi, kannattaa etsiä toimimatonta linkkiä edeltävä kuva ja tutkia sen raamin ankkuria. Jos ankkuri on kuvasta eteenpäin, on raami+kuva syytä tehdä uudelleen kappaleeseen kiinnitetyksi.

Monisteen julkaiseminen

  • korjaa OpenOfficella versionhallinasta otettua tiedostoa "luentomonistecsUusin.odt"
  • valiste menusta Vie PDF, tallenna samalle nimelle.
  • valitse menusta Esikatselu selaimessa
  • kopioi selaimesta URL leikepöydälle
  • mene I:-levyn hakemistoon I:\ITKP102\monistecs (net use i: \\eppu.it.jyu.fi\kurssit)
  • kirjoita komentiriville h ja kopioi perään leikepöydällä oleva URL.
  • kirjoita komentoriviltä pdf
  • kun tulee uusi paperiversio, kopioi nykyinen "luentomonistecsUusin.odt" juoksevalle numerolle.