Ohj1 k 2025 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 2025 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
Lisää viesti
⁞
4. Notepad++
Lisää viesti
⁞
5. Videoiden muokkaus
Lisää viesti
⁞
6. C#
Lisää viesti
⁞
7. Kurssin työkalut
Lisää viesti
⁞
8. Luennot/Luentovideot
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ä
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.
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.