Git Product home page Git Product logo

ohjelmointi-19's Introduction

Material template

This repository contains both the source code of this course's webpage and the source for the content of the course. The content is located in the data folder and everything else is for the website.

Contributing to the content

If you spot a mistake, feel free to open an issue in this repo after consulting with the course assistants.

If you'd help us making the correction, you can open a pull request with your proposed changes. You may find these resources helpful for doing this:

Development environment

Below are instructions on how to setup a development environment on your own machine. These instructions are only relevant to you if you wish to chage how the course's website works or looks like. If you don't know how to program or only wish to contribute to the content of the course, please skip this section.

Requirements: recent Node

npm ci
npm run develop

Content is in the data folder.

Custom markdown components are located in src/partials

If you want to use local, unpublished version of moocfi-quizzes for testing, run ./use-local-quizzes.sh before running the application. If your configuration differs from the default, add the path to the moocfi-quizzes as the first argument to the script. An illustration of the default configuration:

  (parent directory)
  /                \ 
(this repo)      [quizzes](https://github.com/rage/quizzes)
                      |
                  packages
                      |
                  moocfi-quizzes

Sometimes when making certain type of changes to the queries, you may wish to restart Gatsby automatically each time the development server exits. To accomplish this you can run the script: ./develop-loop.sh.

Authors

Material template created by Henrik Nygren and Antti Leinonen.

License

Material template

Copyright 2018 Henrik Nygren, Antti Leinonen, and the Agile Education Research group.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Course material

The course material is licensed under a Creative Commons BY-NC-SA 4.0 license.

ohjelmointi-19's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ohjelmointi-19's Issues

Osa 2 iän tarkistus

Testatessa Osa 2 tehtävä 12 iän tarkistus, näyttää menevän oikein, mutta ladatessa palvelimelle, antaa virheilmoituksen "Jotain kummallista tapahtui. Saattaa olla että class Karkausvuosi-luokan public static void main(String[] args) -metodi on hävinnyt
tai ohjelmasi kaatui poikkeukseen." Mikä neuvoksi?

Reactin NavLinkit tehtävälistauksessa

Feature request:

Tehtävälistaukseen osien etusivuilla (https://ohjelmointi-19.mooc.fi/osa-123) voisi laittaa listaan navlinkit, joista pääsee suoraan kyseiseen tehtävään.
Tehtävien identifiointi (css identifioija johon sivun voi avata) voidaan tehdä h-123 listan avaimen perusteella (loihtii divin jolla on esimerkiksi tämä avain classNamena ja tekee navigoinnin siihen)

Osa3_33 Joka toinen sana, testit puutteellisia

Tehtävänannossa pyydetään toteuttamaan logiikka: "Kirjoita ohjelma, joka lukee käyttäjältä merkkijonoja. Kun käyttäjä syöttää merkkijonon, ohjelma tarkastelee syötettyä merkkijonoa. Mikäli syötetty merkkijono on tyhjä, ohjelma lopettaa käyttäjältä lukemisen ja ohjelman suoritus päättyy."

Testeissä testataan vain yksittäinen kokonainen merkkijono, ei tyhjää merkkijonoa eikä monen merkkijonon pilkkomista. Testit voivat siis mennä läpi, vaikka testattavassa koodissa syötteitä luettaisiin vain yksi.

Parempi ohjeistus tehtävien palauttamiseen

Telegramissa raportoitu usean (5+) ihmisen missaneen ohje jossa kerrotaan kuinka NB:stä käsin palautetaan tehtäviä. Ovat palauttaneet käsin zipattuja tiedostoja TMC:n verkkokälin kautta.

Materiaaliin voisi tämän estämiseksi laittaa ekan tehtävän yhteyteen jonkin ison punaisen huomion jossa käsketään erikseen lukea TMC-Netbeansin asennusohjeen lopussa oleva palautusohje.

Osa 02_33 TulosteluaLikeABoss ei hyväksy ratkaisua

Kohdassa joulukuusen tulostus TMC test results sanoo, että joulukuusen ensimmäisellä rivillä pitäisi olla kolme tyhjää ja tähti. Oma tulokseni on mielestäni oikea:

   *
  ***
 *****
*******
  ***
  ***

Joulukuusi koodini:
(Metodit tulostaTahtia ja tulostaTyhjaa toimivat molemmat).

    public static void jouluKuusi(int korkeus) {
        // tehtävän osa 3
        int luku = 0;
        while (luku <= korkeus) {
            tulostaTyhjaa(korkeus - luku);
            tulostaTahtia(luku * 2 - 1);
            luku++;
        }
        tulostaTyhjaa(luku -3);
        tulostaTahtia(3);
        tulostaTyhjaa(luku -3);
        tulostaTahtia(3);
    }

Osa04_14.Huone ei hyväksy pyydettyä vastausta

Tehtävämateriaalissa pyydetään luokalle Huone oliomuuttujalle Koodi arvoa "B221" Tehtävän tarkastus ei hyväksy tätä arvoa, vaan pyytää:
" Konstruktorin tulee asettaa parametrina annettu arvo oliomuuttujan arvoksi. Nyt oliomuuttujaa "koodi" ei asetettu. expected:<[b]221> but was:<[B]221> "

Kun koodiksi asettaa "b221", niin tulee virheilmoitus:
"Konstruktorin tulee asettaa parametrina annettu arvo oliomuuttujan arvoksi. Nyt oliomuuttujaa "koodi" ei asetettu. expected:<b2[15]> but was:<b2[21]>"

Ja tämän jälkeen kun asettaa koodiksi "b215", saa vastaukseksi:
"
Konstruktorin tulee asettaa parametrina annettu arvo oliomuuttujan arvoksi. Nyt oliomuuttujaa "koodi" ei asetettu. expected:<b2[21]> but was:<b2[15]> "

Tehtävässä 03_15 TulostaRajatut testin virheviesti väärin

Testeissä seuraava pätkä koodia:

 for (int i : odotetut) {
            assertTrue("Kun metodia tulostaRajatutLuvut kutsutaan listalla:\n" + luvut + "\n sekä alarajalla " + alaraja + " ja ylärajalla " + ylaraja + "\nTulostuksessa pitäisi olla luku " + odotetut + "\nTulostus:\n" + out, out.contains("" + i));
        }

Tulostuksen keskeltä odotetut pitäisi olla i, nyt käyttäjä saa vain ikävän näköisen muistiviitteen keskelle virheviestiä.

Osa 2 Tehtävä: Ykkösten osuus

Onkohan osan 2.1 tehtävässä Ykkösten osuus virhe yksikkötestissä? Testi odottaa syötteelle 2 1 0 tulokseksi 1, vaikka eikös sen pitäisi olla 0.5?

Malliratkaisussa 02_22 virhe

Tehtävän 02_22 malliratkaisussa on sellainen virhe, että se ei pyydä käyttäjää syöttämään lukua. Ohjelmassa on otettu lukija scanner käyttöön, mutta käyttäjältä ei pyydetä lukua. Siten malliratkaisulla ohjelma "toimii", mutta ei pyydä käyttäjältä mitään eikä siten tulosta mitään.

Osa 2, Tehtävä 33, 3 rivin kokoisen kolmion testi case väärä?

Rivillä 82 testi vaikuttaa hämärältä... Ei kai tuollaista kolmiota pitäisi tulostaa?
assertEquals("Tulostit väärin kun kutsuttiin tulostaKolmio(3).", " \n \n\n", out);

Olisiko oikeampi ao.?
assertEquals("Tulostit väärin kun kutsuttiin tulostaKolmio(3).", " \n \n*\n", out);

4_08 MittauksetTiedostosta outo virhe

Tässä on koodini: https://tmc.mooc.fi/paste/t3HPAAjo6w2ePY7riP0zXQ

Saan tuolla oikean vastauksen, ainoaksi ongelmaksi näyttää muodostuvan se, että kun yritän tuota lähettää ja se testataan, syöttää serveri (tai mikälie) syötteet ohjelmaan niin nopeasti, että sen sijaan että tulosteet näyttäisivät:

Tiedosto? mittaukset-1.txt
Alaraja? 5
Yläraja? 20
Lukuja:3

Lopputulos onkin:

FAIL: MittauksetTiedostostaTest testaaMittaukset1
Kun syöte on:
mittaukset-1.txt
5
20
Odotettiin, että tulostuksessa olisi "Lukuja: 3".
Nyt tulostus oli:
Tiedosto? Alaraja? Yläraja? Lukuja:3

Tehtävä Osa01_39NegatiivistenLukujenMaara antaa virheen

Tehtävä Osa01_39NegatiivistenLukujenMaara ei hyväksy vastausta

Tehtävä Osa01_39.NegatiivistenLukujenMaara ei kelpuuta edes mallivastausta vaan testi epäonnistuu. Ongelmaksi kuvataan, että ohjelman pitäisi tulostaa vain negatiivisten lukujen lukumäärä vaikka ohjelma toistaa myös pyynnön Syötä luku. Tämä antaa virheen ja tehtävää ei voi tallettaa serverille.
Miten pitäisi toimia, että tehtävän saa suoritetuksi ?

Pieni typo tehtäväkolikkojen selityksessä

Tehtävänantojen lopussa olevassa kolikoista kertovassa tekstissä on typo. Sen ensimmäinen lause alkaa nyt

Joka kerta kun olet saanut 16:ta tehtävää tehtyä, saat kolikon.

Ongelma on siis ilmauksessa "16:ta", joka on auki kirjoitettuna "kuuttatoista", tässä kontekstissa siis "Joka kerta kun olet saanut kuuttatoista tehtävää tehtyä, saat kolikon.". Pitäisi siis olla ihan vain "16" ilman auki kirjoitettua sijapäätettä.

Kts. http://www.kielitoimistonohjepankki.fi/haku/numerot/ohje/269

osa 4 tehtävä 16

Hei, testi antoi virheet:
Konstruktori Ovi() puuttuu.
ja
ei tarvitse Ovi-luokalle kuin nimen muistavan oliomuuttujan, poista ylimääräiset.
En taju mitä tässä on ylimääräistä ja mitä puuttuu.

public class Main {

public static void main(String[] args) {
   Ovi alexander = new Ovi("Who's there?");
   
    alexander.koputa();
    alexander.koputa();
}

}

public class Ovi {

private String Ovi;

public Ovi(String Ovi) {
    this.Ovi = Ovi;
}
public void koputa() {
    System.out.println(this.Ovi);
}

}

Aikatauluttoman kurssin kuvaus on harhaanjohtava

ohjelmointi-19/src/pages/index.js:
"Kurssin kaksi versiota

Kurssista julkaistaan aluksi aikataulutettu versio, jossa on viikoittaiset deadlinet. Myöhemmin kurssista aukeaa myös aikatauluton versio, jossa tehtäviä voi tehdä täysin omaan tahtiin. Voit siirtyä aikataululliselta kurssilta aikatauluttomaan mikäli niin haluat. Kurssin vaihtaminen toiseen suuntaan ei ole mahdollista. Huomaa kuitenkin että aikatauluttomasta versiosta ei voi hakea opinto-oikeutta."

Mielestäni yllä oleva teksti on harhaanjohtava, koska se antaa ymmärtää kurssimatriaalin olevan valmis ja aikatauluttoman version etuna aikataululliseen verrattuna kurssin mahdollisesti nopeampi läpäisy. Nyt kuitenkin näyttäisi olevan niin, että uusi osio aukeaa viikon välein eikä aikatauluttoman version valitsemisesta saa etua, joka johtaisi kurssin nopeampaan läpäisemiseen. Tätä seikkaa olisi syytä painottaa merkittävästi enemmän.

Aikatauluttoman kurssin haittapuolina on lueteltu aikataulun puute ja siitä johtuva kurssin suurempi keskeyttämisriski sekä arvosanan perustuminen puhtaasti kokeeseen sen lisäksi, että kokeeseen päästäkseen pitää tehdä suurempi osa tehtävistä. Näitä haittoja kompensoimaan kurssimateriaalin avaaminen kokonaan olisi ollut pelkästään järkevää.

Henkilökohtaisesti olisin halunnut kurssin tarjoamat 10 op mahdollisesti jo maaliskuussa.

Osa 2 tehtävä 6 MerkkijonojenLukumaara - virheilmoitus

En ymmärrä, mikä tässä on vialla. Saan virheilmoituksen:

"Jotain kummallista tapahtui. Saattaa olla että class MerkkijonojenLukumaara-luokan public static void main(String[] args) -metodi on hävinnyt
tai ohjelmasi kaatui poikkeukseen. Lisätietoja java.util.NoSuchElementException: No line found"

Koko koodi:
`
import java.util.Scanner;

public class MerkkijonojenLukumaara {

public static void main(String[] args) {
    Scanner lukija = new Scanner(System.in);

    int summa = 0;
            
    while (true) {
        String luettu = lukija.nextLine();
        
        if (luettu.equals("lopeta")) {
            break;
        }
        summa = summa + 1;
    }
    System.out.println(summa); 
}  

}
`

Tehtävä Osa03_19.EtsitynAlkionIndeksi luku 0 löytyy indeksistä 9

Taulukko on 10 pitkä, mutta vain kahdeksaan asetetaan arvo muualla kuin alustuksessa. Oletuksena int alustetaan nollaksi. Tehtävänannossa käsketään etsimään lukua taulukosta joka on 10 pitkä, joten viimeinen nolla löytyy kuin löytyykin indeksistä 9. Ehkä taulukon on tarkoitus olla 8 pitkä tai sitten jokaiseen paikkaan voisi asettaa arvon?

Osa01_42.LukujenKeskiarvo.java - ohjelma toimii, mutta palautuksessa virhe

Palauttaessa vastausta tulee seuraava virheilmoitus:
FAIL: LukujenKeskiarvoTest test1
Kun syötettiin:
-5
4
-3
1
0

Ohjelmassa pitäisi olla tulostus "Lukujen keskiarvo -0.75".
Nyt tulostus oliSyötä luku
Syötä luku
Syötä luku
Syötä luku
Syötä luku
Keskiarvo on -0.75

Tämä sama ongelma minulla esiintyi jo edellisessä tehtävässä, mutta sain sen läpi mallivastauksen avulla. Ohjelma toimii juuri niin kuin pitää ja muutenkin oikein tehty. Miksi ihmeessä tämä virheilmoitus?

Osa 3 Tehtävä 33 Joka toinen sana, virheellinen sanamuoto?

Osan 3 Tehtävässä 33 Joka toinen sana pyydetään luettelemaan joka toinen syötetty sana ensimmäisestä indeksistä lähtien. Tehtävä kuitenkin menee läpi vain jos aloitetaan indeksistä 1, joka on tietenkin toinen indeksi sillä ensimmäinen indeksi on 0. Tai näin ainakin itse oletin, ja se tuntuu luontevimmalta. Vai mikäs indeksi 0 sitten olisi järjestysnumeroilla ilmaistuna, nollas indeksi?

Materiaalissa "Osa 4 - Johdatus olio-ohjelmointiin" lievä kirjoitusvirhe?

Kurssimateriaalin osassa 4 “Johdatus olio-ohjelmointiin” -osion sisälletyssä (embedded) materiaalissa on esimerkkikoodissa luokalle määritelty kolme muuttujaa, joiden tietotyypit ovat String, String ja int. Konstruktorissa muuttujat ovat kuitenkin String, String ja String.

public class Kirja {
private String nimi;
private String kirjoittaja;
private int julkaisuvuosi;
public Kirja(String nimi, String kirjoittaja, String julkaisuvuosi)
...

Osa02_04.TietoaLuvuista, palautusongelma.

Tietoa luvuista tehtävä toimii omalla koneellani virheettömästi. Lähetettäessä tehtävän saan vataukseksi että yhtäsuurien numeroiden tulostus ei toimi. En koodannut ohjelmaa toiseen muotoon, vielä. Olisiko jokin bugi? Muualla kuin minun päässä? Win 10, kaikki softallisesti päivitetty mitä löytyy.
Alla virheilmo:

Kun syöte oli 5
5
, odotettiin tulostusta: yhtä suuri Tulostusta ei löytynyt

Minun koodi:

    //Luetaan kaksi lukua ja vertaillaan niitä
    int ekaLuku = Integer.valueOf(lukija.nextLine());
    int tokaLuku = Integer.valueOf(lukija.nextLine());
    
    if (ekaLuku < tokaLuku){    //Onko ekaLuku pienempi kuin tokaLuku
        System.out.println("luku " + ekaLuku  + " on pienempi kuin " + tokaLuku + ".");
    }else if(ekaLuku > tokaLuku){   //Onko ekaLuku suurempi kuin tokaLuku
        System.out.println("luku " + ekaLuku  + " on suurempi kuin " + tokaLuku + ".");
    }else{  //Muutoin niiden on oltava yhtäsuuret
        System.out.println("luku " + ekaLuku  + " on yhtäsuuri kuin " + tokaLuku + ".");
    }

Mallivastaus-parannusehdotus

Mallivastauksissa on yksi merkittävä ongelma, nimittäin kun sellaisen katsot, et pääse palaamaan takaisin alkuperäiseen tehtävä-/esimerkkiosioon, sillä mallivastaus peittää kaiken alleen. Ainakaan Chromessa paluumahdollisuutta ei ole, ei pientä ruksia missään kulmassa eikä mitään, millä pääsisin palaamaan takaisin. Url on kuitenkin täsmälleen sama, eli vastauksen katsominen ei vie sinua mihinkään uuteen osoitteeseen.

Typo tehtävänanto-templatessa

Kolikoiden selostuksen jälkeen tulee lause "Pysyt katsomaan mallivastauksen ilman kolikkoja Test My Code -palvelusta sen jälkeen kun olet saanut tehtävän oikein.".
Lauseen pitäisi varmaan alkaa sanalla "pystyt"?

Osa 5.5: Submission-luokan esimerkissä typoja

Esimerkissä on kirjoitettu tulostettavissa merkkijonoissa "ikä" ja "ikäisiä" virheellisesti "ika" ja "ikaisia":
Rivi 8: System.out.println("Anna ikasi: ");
Rivi 10: System.out.println("Anna jonkun toisen henkilön nimi ja ika: ");
Rivi 23: return "Olette samanikaisia";

Osa 01 tehtävä 35, Poistutaanko

Ohjelman suoritus ei breikannut jos oli ä-kirjain:

if (syote.equals("kyllä")) {

mutta breikkasi jos oli a-kirjain:

if (syote.equals("kylla")) {

Ohjelman tarkistuksen läpimeno taas edellytti että oli "ä"

Osa 6_07.Velkakirja

Kurssimateriaali sanoo (Osa 6 tehtävä 07 Velkakirja):

"
metodi public void asetaLaina(String kenelle, double maara) tallettaa velkakirjaan merkinnän lainasta tietylle henkilölle.
"
Kun taas tarkastin olettaa, että metodin ensimmäinen parametri on "String kuka".

Terkuin,
Petri

Materiaaliin selvennys keltaisen ehdotusmerkin ja puneisen virhemerkin erosta rivin vieressä

NetBeans käyttää rivin vieressä keltaista kolmiota ehdottamaan vaihtoehtoista syntaksia. Aloittelija luulee herkästi keltaista virheen indikaattoriksi, mikä aiheuttaa hämmennystä.

Esim. seuraava keskustelu Telegramissa:

ensin oli vaikea ymmärtää ero noitten "ehdotusten" ja virheilmoitusten välillä. mietin yli puolituntia yhdessä tehtävässä että mikä tässä muka mättää :(

Materiaalissa voisi olla pieni selitys siitä että keltaisella kolmiolla merkitään ehdotusta mallia "Hei, tämän voisi tehdä myös tällä toisella tavalla" ja että vain punainen kolmio merkitsee virhettä mallia "tässä ei nyt ole mitään järkeä.

Yleinen kuvaava virheviesti virheeseen "java.util.NoSuchElementException: No line found"

Esiintyy esim

Jotain kummallista tapahtui. Saattaa olla että class Poistutaanko-luokan public static void main(String[] args) -metodi on hävinnyt tai ohjelmasi kaatui poikkeukseen. Lisätietoja java.util.NoSuchElementException: No line found

Kyse on siis yleensä siitä että Scannerilta on luettu sen jälkeen kun syötettä ei enää testeissä ole enempää saatavilla.

Mahdollinen typo tehtävänannossa 2-2

Välitetty telegramryhmästä:

Onkohan jo raportoitu, Tehtävänannon osa 2-2, ennen "Lukusarjan summa" tehtävää on tekstinpätkä "Toistolauseen suoritus loppuu kun muuttujan summa arvo on 12 ja muuttujan i arvo on 4 (ehto i < 4 on tällöin epätotta).", joka on varmaan copy-paste virhe (muuttujaa summa ei tuossa ole, ja sen arvoksi ei muutenkaan tulis koskaan 12)

Esimerkkitulosteet näkyvät väärin

Tavattu Firefoxilla (Win10) ja Safarilla.

<programming-exercise> lohkon sisällä olevat <sample-output> lohkot näkyvät väärin ainakin ym. selaimilla.

Esimerkki

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.