Apua javaohjelmointiin

Viestiketju alueella 'Ohjelmointi' , aloittaja jubideemus, 07.01.2019.

  1. jubideemus

    Rekisteröitynyt:
    04.01.2019
    Viestejä:
    3
    Hei! Löytyiskö joku joka haluaisi auttaa java-kielen kanssa? Suoritan avoimessa etänä Ohjelmointi 1-kurssia ja luentotallenteista huolimatta tuntuu hankalalta ymmärtää ohjelmointia. Tehtäviä on monta ja pitäisi saada oivallus ohjelmoinnista, nyt se on vielä aika kaukana. Olen valmis jonkinlaiseen korvaukseen vaivannäöstä.
     
  2. Desgorr

    Rekisteröitynyt:
    11.10.2010
    Viestejä:
    2 669
    Viimeksi muokattu: 07.01.2019
  3. jubideemus

    Rekisteröitynyt:
    04.01.2019
    Viestejä:
    3
    Nythän tässä ei ollut haussa tehtävien tekijää, vaan henkilöä joka olisi halukas korvausta vastaan neuvomaan, jotta oppisin asiat itse.
     
  4. Desgorr

    Rekisteröitynyt:
    11.10.2010
    Viestejä:
    2 669
    Ok, ymmärsin väärin. Melkein lähtisin kuitenkin kokeilemaan tuota moocia jonka linkkasin. Saattaisi tuon myötä ohjelmointi lähteä aukeamaan.
     
  5. telcoM

    Rekisteröitynyt:
    27.08.2015
    Viestejä:
    649
    Pystytkö yhtään tarkentamaan minkälaista "oivallusta" kaipaat, tai mikä on hankalaa ymmärtää?

    Ongelma saattaa olla se, että Ohjelmointi 1-kurssilla kuluu paljon aikaa peruspalikoitten opettelun parissa, ennen kuin päästään tekemään mitään sellaista mikä tuntuu oikeasti hyödylliseltä. Toisaalta samaan aikaan opetellaan kuinka koneen suoritettavaksi tarkoitettu asia pitää pilkkoa pienemmiksi ja pienemmiksi osiksi, kunnes jokainen ongelman osanen on ratkaistavissa käytettävissä olevilla palikoilla. Yksi merkittävä oivalluksen paikka tulee siinä kun nämä kaksi asiaa kohtaavat toisensa ja alkavat tehostaa toinen toisiaan. (Tosin se ei välttämättä tunnu oivallukselta: tuo piste on mahdollista ohittaa huomaamatta asiaa itse, ennen kuin tulet katsoneeksi aikaisemmin ratkaistuja tehtäviä ja tajuat kuinka paljon monimutkaisempia tehtäviä pystyt jo ratkaisemaan.)

    Kokonaisvaltainen "ymmärrys" tulee sitten ajan kanssa, kun kasassa on tarpeeksi tietoa yleisimmistä peruspalikoista ja esimerkkejä siitä miten niitä käytetään. Ohjelmointi 1-kurssin tehtävien tarkoitus on opettaa asioita yksi peruspalikka kerrallaan, joten yksittäiset tehtävät eivät välttämättä tunnu kovin järkeviltä. Niiden tarkoitus onkin vain opettaa kunkin peruspalikan käyttöä mahdollisimman pelkistetyssä muodossa, ennen kuin sitä aletaan käyttää yhdessä aiemmin opitun kanssa.

    Tarkoitus ei ole ymmärtää koko ohjelmaa yhtenä kokonaisuutena viimeistä koodiriviä myöten, vaan oppia siirtämään tarkastelutasoa tarpeen mukaan: yksittäisiä alirutiineja/funktioita/objekteja koodattaessa ei tarvitse miettiä mistä sen syöte tulee ja mitä lopputulokselle tapahtuu, vaan voit mielessäsi siirtää syrjään kaiken mikä ei liity juuri käsillä olevan osaongelman ratkaisemiseen. Sitten kun olet sen tehnyt, sinulla on uusi "palikka": jos teit sen hyvin, pääohjelmassa (tai muuten vaan ylemmällä tasolla) ei tarvitse välittää *miten* alirutiini/funktio/objekti ratkaisee jonkin asian, vaan voit ajatella sitä mustana laatikkona johon tarvitsee vain syöttää sisään tarvittavat lähtötiedot ja luottaa että se hoitaa oman osansa hommasta, ja voit keskittyä suurempiin kuvioihin.
     
    Desgorr tykkää tästä.
  6. jubideemus

    Rekisteröitynyt:
    04.01.2019
    Viestejä:
    3
    Kiitos hyvin selventävästä vastauksesta! Itselleni Ohjelmointi 1 starttasi hyvin, mutta sitten aliohjelmien ja pääohjelmien kanssa ajatus katosi. Perusidea on hallussa eli, että pääohjelmassa kutsutaan aliohjelmaa ja aliohjelma varsinaisesti tekee "työt". Varmaan tuo peruspalikkakuvio on se miksi ei jotenkin hahmotu mitä pitää tehdä ja missä. Materiaalissa on kyllä käyty ihan varmasti kaikki läpi, mutta joskus olisi hyvä voida käydä jonkun (joka siis jo osaa) kanssa läpi noita tehtäväksi antoja ja sitä miten olen yrittänyt toteuttaa sitä. Google auttaa toki, mutta ei riittävästi. Onko mielenkiintoa yksityisviestillä kommentoida/selittää mikä on mennyt pieleen tai miksi joku asia pitää tehdä jollain muulla tavalla jos laitan tehtävän ja ratkaisuyrityksen? Demoja on aika monta ja ohjelmointi 1 on edellytyksenä muutamalle muulle kurssille.
     
  7. telcoM

    Rekisteröitynyt:
    27.08.2015
    Viestejä:
    649
    Ohjelmoinnin alkeisharjoituksissa voi olla tehtävänannossa määritelty että jokin asia pitää tehdä aliohjelmana, mutta koneen kannalta sillä ei ole mitään väliä. Oikeassa ohjelmointityössä voit itse valita mitkä asiakokonaisuudet lohkaiset aliohjelmiksi.

    Aliohjelmien idea on se, että jos sinulla on jokin käskysarja jota muuten joutuisit toistamaan useaan kertaan monessa kohtaa ohjelmassasi, voit tehdä siitä aliohjelman, jonka jälkeen ei tarvitsekaan toistaa muuta kuin se yksi aliohjelmakutsu. Ja jos sitä toistuvaa käskysarjaa pitää muuttaa, ei tarvitse tehdä muutoksia kuin yhteen kohtaan ja muutos on kerralla voimassa kaikkialla.

    Tämän jälkeen voit olla satavarma että jokaisen aliohjelmakutsun kohdalla suoritetaan sama käskysarja täsmälleen samalla tavalla, eli sitä ei tarvitse miettiä joka kerta erikseen. Olet käytännössä opettanut koneelle yhden uuden käskyn, jota voit sitten käyttää ohjelman osana aivan kuin ohjelmointikielen peruskäskyjäkin. Tekemällä fiksuja ja käyttökelpoisia aliohjelmia teet samalla pääohjelman kirjoittamisen helpommaksi itsellesi.

    Mutta usein ei tarvita täsmälleen saman asian toistamista, vaan sama operaatio pitää saada tehdyksi eri kohteisiin, tai muuten hiukan muunneltuna. Esimerkiksi ihmisten aliohjelmalle "keitä pannullinen kahvia" saattaisi olla hyödyllistä voida antaa sellaisia parametreja kuin "vahvaa", "laihaa", "kofeiinitonta" tms. Tietokoneen aliohjelmissa näin voi tehdäkin, ja se on erittäin oleellinen asia jotta aliohjelmista saisi täyden hyödyn irti. Siksi sitä pitää harjoitella... mutta koska kyseessä on hyvin perustavanlaatuinen asia, se tulee eteen ohjelmoinnin alkeiskurssilla niin varhaisessa vaiheessa että harjoitustehtävät ovat enemmän tai vähemmän väkisin tiettyyn muotoon väännettyjä.

    Tässä kohtaa jotkut opiskelijat alkavat sitten miettiä "miksi tässä pitää tehdä juuri näin? mikä mystinen syy tähän on?" Ja usein se mysteeri onkin se, että mitään mysteeriä ei ole: asian voisi tehdä monella muullakin tavoin (ja saattaisi olla tehokkaampaakin toimia toisin), mutta harjoituksen tavoitteena on saada opiskelijat ymmärtämään miten aliohjelmakutsu toimii, joten sitten tehdään aliohjelmakutsuja. Eli harjoitusten tehtävänantoa kannattaa katsoa ensisijaisesti sillä mielellä, että "tässä harjoitellaan päivän/viikon luentojen aihetta X".

    Toinen syy aliohjelmiksi lohkomiseen on se, että aliohjelman sisäisten muuttujien ei tarvitse näkyä pääohjelmalle, eikä myöskään päinvastoin. Siirtämällä jokin osaongelma aliohjelman ratkaistavaksi saadaan "pöytä puhtaaksi": aliohjelman sisällä on käytössä vain juuri sen aliohjelman omat muuttujat + aliohjelmakutsussa välitetyt parametrit eikä tarvitse pelätä muuttujanimien päällekkäisyyksiä. Vastaavasti pääohjelman puolella ei tarvitse olla kaikkia niitä tilapäismuuttujia joita jokin yksittäinen aliohjelma saattaa tarvita. Alkeiskurssilla tästä asiasta tuskin tulisi ongelmia, mutta isommissa ohjelmointiprojekteissa tämä on erittäin tärkeä juttu.

    Kolmas syy on sitten se, että pitkää yhtenäistä koodipötköä on hankalampaa seurata kuin fiksusti aliohjelmiin jaettua. Isompaa ohjelmaa tehtäessä homma pysyy hanskassa paljon paremmin, kun yksittäinen aliohjelma (tai pääohjelmakin) mahtuu kerralla "ohjelmoijan päähän". Siinä vaiheessa kun koodilohko ei enää mahdu kerralla ruudulle, voi olla hyvä alkaa miettiä olisiko siinä jotakin jonka voisi lohkaista omaksi aliohjelmakseen.
     
Tagit:

Jaa tämä sivu

Alibi
Anna
Deko
Dome
Erä
Hymy
Kaksplus
Kippari
Kotilääkäri
Kotiliesi
Koululainen
Ruoka.fi
Parnasso
Seura
Suomen Kuvalehti
TM Rakennusmaailma
Tekniikan Maailma
Vauhdin Maailma
Golfpiste
Vene
Nettiauto
Ampparit
Plaza
Muropaketti