avoin/avoin23
Huom! TÄMÄ ON AVOIMEN YLIOPISTON SIVU.
Et voi suorittaa kurssia, ellet ole ilmoittautunut täällä.
Ohj1 avoin 2023 vapaa keskustelu
Käyttäjälle: klikkaa tästä ja ruksi jos haluat postia muutoksista. Palaa sitten tänne antamaan mielipiteitä. Jos pidät selainta auki, ja joku laittaa lisää mielipiteitä, niin ne päivittyvät sinun selaimessasi.
Huomaa että kirjoittamasi tekstin päällä näkyy nimesi! Jos haluat että nimi ei näy, muokkaa tallennuksen jälkeen viestiä ja poista chat-rivi.
Voit lisätä uuden viestin painamalla Lisää viesti
. Tai voit avata kokonaan uuden keskustelun aiheen vastaavasta painikkesta.
Jos haluat kommentoida jotakin tiettyä viestiä, klikkaa ko viestiä, jolloin saat siihen C-painikkeen, josta voit kommentoida kappaletta.
Tässä on vielä sellainen vika, että joskus lisätty viesti tulee itselle tuplana, mutta onneksi häviää jos refreshaa (
) sivun.1. Mistä keskustellaan
Lisää viesti
⁞
2. Myllykirjeitä
Myllykirje, ks. https://fi.wikipedia.org/wiki/Myllykirje.
Alla olevat myllykirjeet ovat syksylle 2018, mutta eipä niiden lukeminen haittaa 2023 kursseillakaan :-)
Kun olen katsellut toimintaa pääteohjauksissa (muutenhan en oikein pääse kiinni siihen, mitä ihmiset tekevät), niin esille on noussut asioita joita kirjaan alle. Kaikki eivät koske kaikkia, mutta varmaan tuosta löytyy monelle jotakin.
Miettikää kielen syntaksia, älkää kirjoittako mitä sattuu. Syntaksia voi opiskella hyvin syntaktisestikin, mutta muistelemalla mitä on nähnyt, pääsee pitkälle. Tästä on kasattu dokumentti, johon on lyhennetty kurssilla käytetyt asiat.
- Kun teet Taunolla tehtäviä, lue minkälaista koodia Tauno kirjoittaa. Muista siitä miten taulukoita käytetään.
Muista ensin tehdä ongelmaa kynällä ja paperilla. Esimerkiksi taulukko, string ja StringBuilder tehtävissä kirjoita ensin taulukoita ja jonoja paperille. Taulukoissa jokaisen alkion yläpuolelle laita sen indeksinumero. Merkkijonoissa sama. Anna paperilla taulukoille ja jonoille nimet ja mieti miten esimerkiksi saisit paikassa 2 olevan alkion tai paikassa 4 olevan kirjaimen. Kirjoita tarvittava lauseke paperille. Esimerkiksi:
0 1 2 t 99 25 44 Saan paikassa 2 olevan alkion lausekkeella t[2] ja siis voin sen sijoittaa vaikkapa muuttujaan a lauseella (edellyttäen että a on esitelty) a = t[2]
Mieti olisiko järkeä jos kirjoitat jotakin. Esimerkiksi:
int[] t1 = {1,2,3}; int[] t2 = {99,25,44}; int a = [2]; // WWW mitä tämä voisi edes tarkoittaa???
Eli hakasulkujen edessä on aina oltava joku taulukon nimi. Eihän, siitä vaikkei kielestä tietäisi mitään, voisi muuten päätellä minkä taulukon toinen alkio halutaan. Eli edellä on oltava esim
int a = t2[2];
Jos kutsut aliohjelmaa, muista että esittelyriville ei tule arvoja, vaan muuttujia;
double k = Keskiarvo(4, 9); ... public static double Keskiarvo(int 4, int 9) // Mitä järkeä olisi tässä. Eihän se olisi edes aliohjelma jos // aina käytettäisiin samoja arvoja.
Eli oikea on joko:
public static double Keskiarvo(int a, int b)
tai
public static double Keskiarvo(double a, double b)
Muista että aliohjelmakutsu on aina sijoitus aliohjelman vastinparametreille.
- Suoritusjärjestyksellä on VÄLIÄ. Kielen lauseita suoritetaan ylhäältä alas järjestyksessä aloittaen pääohjelman ensimmäisestä lauseesta. Silmukat, ehtolauseet ja aliohjelmakutsut muuttavat toki suoritusjärjestystä niin että silmukassa palataa silmukan alkuun.
- Muistakaa kokeilla debuggerilla ja miettikää ennen jokaista Step että mitä pitäisi tapahtua ja Step jälkeen miettikää tapahtuiko mitä piti.
Lukekaa aina ensisijaisesti luentomonistetta, sitten luentojen malliohjelmia sivulta:
sitten tarvittava monisteen lisämateriaaleja (josta alussa tulikin yksi esimerkki) sivulta:
sitten kirjoja. Kaikkiin em on linkki jokaisen ohj1-sivun ylälaidassa.
Ja hyvin varovasti jos lainkaan tehdään mitään Google hakuja. Siinä menee vaan aikaa eikä aina tule oikeita tuloksia.
- Jypeliä varten teillä on kurssin kotisivulla kaksi tärkeää lähdettä:
Tsemppiä!
Vesa
Lisää mielipide myllykirjeestä
⁞
En ennen eilistä myllykirjettä ollut katsellut esimerkiksi demojen 5 vastauksia.
Taaskaan tämä ei koske kaikkia, mutta hirvittävän monta koskee :-(
- Demojen teko aloitetaan ihan liian myöhään. Nyt on jo sunnuntai pitkällä ja vielä on 100 jotka eivät ole edes aloittaneet tekemistä. On toista sataa, joilla ei ole edes yritetty PAKOLLISIA tähtitehtäviä.
- Edellisten demojen mallivastauksia ei ole hyödynnetty, vaan jos on itse tehty "väärin" edellisissä demoissa, jatketaan samasta. Mm Suurin ja Pienin.
- Tauno 5B: 150 opiskelijaa ei ole tätä (vielä) tehnyt. Mutta tässä olevia virheitä (joita on monella vaikka TIM olisi antanut 0.5 p):
- sisennykset mitä sattuu (koskee n. 80% vastaajista)
- pyydetään silmukka, mutta vastauksessa ei ole silmukkaa
- turhia tyhjiä rivejä
- käytetään < merkin sijaan <= merkkiä
- käytetään vakiota 6 taulukon pituuden tilalla
- ylimääräisiä muuttujia, tarvitaan vain apumuuttuja summaa varten ja toinen silmukkaa varten
- aliohjelma tulostaa, sitä se EI SAA tehdä (koska niin ei ole dokumentoitu)
- aliohjelmassa esitellään taulukko. Sitä EI SAA tehdä koska se tulee parametrina
- yleensä kannattaa käyttää < eikä >-vertailua
- foreach ei ole tähän oikea silmukka (for tai while ok)
- Tehtävä 1: StringBuilder: - sisennykset mitä sattuu - aliohjelma ei saa tulostaa! - muuttujien nimet huonoja - ei saa luoda uusia turhia StringBuilder olioita
- Erittäin suurella osalla on Sopuli-tehtävä väärin! Kirjoitin tehtävän alapuolelle vinkkejä siitä, millainen vastauksen pitäisi olla.
Lisäsin Demo 5:een eri tehtävien jälkeen avattavan alueen: "Yleisiä virheitä, katso onko sinulla". Avatkaa se ja katsokaa itseltänne onko teillä jotakin noista virheistä!
Miksi TIM ei tarkasta onko tehtävä kunnolla tehty? Yleisessä tapauksessa tuon tekeminen on todella työlästä ja sen tekemiseen meillä ei ole resursseja. Lisäksi mun vahva fiilis on että automaatit vain huonontavat oppimistuloksia, koska vastauksia annetaan automaattia vastaan, eikä oteta itse vastuuta vastauksen oikeellisuudesta. Näin ei voi menetellä työelämässä. Ei asiakkaalle voi antaa kerta toisensa jälkeen toimimatonta tuotetta ja katsoa milloin hän tyytyy siihen. Eli kurssilla pitää opetella ottamaan itse vastuuta!
Nyt koettakaa yllättää minut että huomenna totean olleeni väärässä :-)
Vesa
Lisää mielipide myllykirjeestä
⁞
3. Kurssille sopiva kone
Kysyttiin minkälainen kone Ohj1-kurssille. Käyttöjärjestelmä on tietysti ikuisen sodan kohde (Windows/Mac/Linux), eli siihen en ota kantaa. Luennoilla pyörii Windows, mutta kurssin voi tehdä muillakin järjestelmillä.
Itse koneesta. Minimini voisi olla: Intel Core I5 tason prosessori, 8 GB keskusmuistia, 256 SSD muistia. Tuollaisia on tarjouksissa näkynyt 400€ alkaen. Tuosta voi kasvattaa rajattomasti, mutta onko nyt sijoitettu 1000€ parempi kuin nyt sijoitettu 400€ ja parin vuoden päästä sijoitettu 4-500€ (koska parin vuoden päästä 4-500 € kone on yhtä tehokas kuin tänään 1000 € kone)? Tietysti hinnan noustessa paranee yleensä (tai pitää katsoa että varmasti paranee) seuraavat: ääni hiljenee, keveämpi, näyttö parempi, näppäimistö parempi. Näyttöä voi kompensoida sillä, että hankkii kotiin pöydälle yhden ison hyvän näytön. Sitten aktiiviset palaajat tietysti valitsevat koneet ihan eri kriteereillä.
Tästä on myös oma sivu
Onko teillä antaa plussia ja miinuksia Mac vs. PC välillä? :D
Tuohon riitaan ei kannata lähteä mukaan. Molemmilla ja myös Linuxilla voi tehdä. Erityisesti nyt tämänkin kurssin puitteissa kun Rider toimii samalla tavalla kaikissa.
Lisää viesti
⁞
4. Notepad++
Lisää viesti
⁞
5. Videoiden muokkaus
Lisää viesti
⁞
6. C#
Lisää viesti
⁞
7. Kurssin työkalut
Lisää viesti
⁞
8. Luennot/Luentovideot
Siellä oli vika ettei ryhmät menneet oikein. Nyt pitäisi liittyä oikein. Avoimen pitäisi katsoa JY:n vuoden 2023s luentoja. Mutta isoa eroa ei ole vaikka katsoisi vanhempiakin.
Mistä näitä 2023 syksyn luentoja pääsee näkemään nyt? Luennot -kohdassa on vain viime vuoden.
—Teen luento 04 LumiukkoAli tehtävää, ja kone herjaa sekä TIM:issä että Visual Codessa että "The modifier 'public' is not valid for this item (CS0106)". En tiedä kuinka lähteä korjaamaan tilannetta, sillä Visual Code vain ehdottaa laittaa 'private' sana 'public' sanan tilalle, mutta ohjelmaa ei siltikään saa ajettua.
Laitas koodi TIMiin ko tehtävän kohdalle ja tänne linkki siihen. Koodia näkemättä melko mahdotonta vastata.
Käytin tätä koodia https://svn.cc.jyu.fi/srv/svn/ohj1/esimerkit/2019s/luennot/luento04/LumiukkoAli/LumiukkoAli/LumiukkoAli.cs sain sen toimimaan TIM:issä, mutta Visual Codessa tekee edelleen omituista herjausta " Error CS5001: Program does not contain a static 'Main' method suitable for an entry point (CS5001)"
Mielestäni joku koodi minkä näin oli sellainen, missä olit muokannut Main-funktion paramtereja ja niitä ei saa muokata (pitää olla joko sulut pelkästään tai String[] args). Eli pääohjelmasta selkeästi kutsutaan esim sitä PiirraLumiukko
aliohjelmaa ja paramterit on siinä sitten oikein määritelty. Mutta oikeastiko teet Visual Studio Codessa etkä Riderissa (Visual Code nimistä ei ole olemassa)?
Mistä muuten noin vanhan linkki on, se pitää korjata (vaikka sisältö tuskin onkaan muuttunut,mutta palvelin ollaan poistamassa)?
Tein uudelleen tehtävää Riderissa, ja tulee entisestään lisää herjauksia. Erityisesti valittaa "Cannot resolve symbol 'PiirraLumiukko'" seuraavista PiirraLumiukko(this, 0, Level.Bottom + 200.0); PiirraLumiukko(this, 200.0, Level.Bottom + 300.0);
Tuon linkin löysin luento04 -> LumiukkoAli -> LumiukkoAli - lumiukko jossa pallokin piirretään aliohjelmalla
Yritän saada tehtyä demo2 tehtäviä, mutta en pääse niissä etenemään kun yritän saada selville miten mokasin tämän tehtävän. Laitan ohjelmakoodini kommenttiin tehtävään uudelleen. Erityisesti vain ihmetyttää kuinka sama koodi toimii TIM:issä moitteetta, mutta omassa Riderissa ei.
Lisää viesti
⁞
9. Vastaamatta jääneet luentokysymykset
Lisää viesti
⁞
10. Demot
Lisää viesti
⁞
11. Pääteohjaukset
Lisää viesti
⁞
12. Harjoitustyö
Lisää viesti
⁞
13. Ihan yleistä
Kysymys liittyen csc komennon käyttöönottoon. Saan "virhe" ilmoituksen csc komentoa käyttäessä.
"This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language"
Framework on päivitetty uusimpaan versioon, PATH on lisätty oikein. Onko tähän jotain toimivaa korjausta? Itse en sellaista löytänyt.
Mielestäni matskussa ei enää neuvota käyttämään tuota CSC, vaan esitetään se miten asiat tapahtuivat aidosti. Nykyisin dotnet hoitelee tuota ja piilottaa niitä aitoja vaiheita näkyvistä. Sillä csc pystyi näyttämään miten asiat tapahtuva esim c-maailmassa. Eli ideana meillä on että ensin kirjoitetaan lähdekoodi, sitten se käännetään, periaatteessa vielä linkitetään (csc teki molemmat) ja sitten erikseen ajetaan kaiken tuon tuloksena syntynyt konekielinen ohjelma. Windowsissa tuo csc vielä on mahdollista ajaa kun etsii mistä csc.ece löytyy, mutta ehkä se ei enää ole vaivan arvoista vain siksi että uskoo asioiden tapahtuvan noin. Siihen riittäköön luentovideo ja onhan se TIM-harjoitus, jossa tuon kaiken voi harjoitella TIMissä.
Lisää viesti
⁞
14. Kysymyksiä luennoista
Lisää viesti
⁞
15. Tentti
Onko syksyllä mahdollista tehdä tenttiä, jos ei ehdi suoriutua kesäkuuhun mennessä sille tasolle, että tentin tekeminen on järkevää?
Varmaan tarvittaessa järjestetään ainakin jos on useampia tarvitsijoita. Mutta jos tekee demoja, niin silloin kun on päässyt demo 11 asti, on riittävästi tietoa mitä tarvitaan. Melkein käyrä on tuon jälkeen ajansuhteen laskeva jos ei aktiivisesti ylläpidä ohjelmointitaitoa.
Samat kuin läsnätenttien.
Tentti-ilmo kohdassa on vain kevään 2023 tiedot.
—Syksyn 2023 tentin tiedot lisätty tentti-ilmoon.
Lisää viesti
⁞
16. Rikkinäisiä linkkejä
Kerro tähän jos löydät rikkinäisiä linkkejä tai linkkejä jotka vievät svn
tai trac
-alkuisiin osoitteisiin. Niitä ei pitäisi enää montaa olla.
Lisää mistä löysit väärän linkin
⁞
Lisää uusi keskustelun aihe
## ⁞Otsikko keskusteluaiheelle, vaihda vain tämä, älä koske muuhun
#- {forceclass="chat" .removePre}
\
[Lisää viesti]{.timButton .addAbove}
⁞
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.