Please to interact with this component.

{}

Ohjelmointi 1, syksy 2020, luento 23

# L23

23. luento: ma 23.11.2020 klo 12:15-14:00: Kertausluento, Luentokysymyksiä

Versionhallinnassa

Tiedotettavaa:

  • tentti
    • harjoittele tekemällä Taunot demoista 1-11 uudelleen "sokkona"
    • harjoittele kuvan piirrot uudelleen "sokkona" (d10, d11 ja luento 11)
    • myös string ja StringBuilder on syytä osata
  • demo 11 ja korjaaminen 7 pisteeseen!
  • Mitä ohjelmointi on-kysely, auta kaveria väitöskirjassa
  • samoin virallinen kurssikysely...
  • tiistaina luento 24 katsotaan kimpassa videolta, käyttöliittymän tekeminen
# GLO_DemoN2

Open JS-frame

 

Osaamistavoitteet

Kurssin aikana sinun on tarkoitus oppia seuraavia asioita (osaamisen taso sovelletulla Bloomin asteikolla: 1=muistaa, 2=ymmärtää, 3=osaa soveltaa, 4=osaa analysoida, 5=osaa arvioida, 6=osaa luoda)

Siirrä alla osaamisesi (punainen pallukka) aina sitä vastaavalle kohdalle. Keltainen ruutu on tavoite johon tulisi päästä kurssin lopuksi. Ruksaa ensin muokkaa.

# goaltable2

Please to interact with this component.

Osattava asia123456
Rakenteisen ohjelmoinnin perusajatus o
Algoritminen ajattelu o
C#-kielen perusteet o
Peräkkäisyys o
Muuttujat o
Aliohjelmat ja funktiot o
Parametrin välitys o
Ehtolauseet o
Silmukat o
Taulukot o
Tiedostot ohjelmasta käytettynä o
Olioiden käyttö o
Yksikkötestit (TDD) o
Debuggerin käyttö o
Lukujärjestelmät, ASCII-koodi o
Rekursio o
Dokumentointi ja sen lukeminen o

Pallot

Kertausta terminologiasta

Aliohjelma: Yleisnimenä mikä tahansa aliohjelma, funktio tai metodi. Aliohjelma ei ota nimenä kantaa parametrien määrään tai paluuarvon tyyppiin. void-aliohjelmassa, eli aliohjelmassa joka ei palauta arvoa, voi olla return-lause, mutta sen perässä ei silloin ole lauseketta (vrt. return-lause funktiossa). Tällöin return-lauseen rooliksi jää vain hypätä aliohjelmasta pois.

Joissakin kielissä, esimerkiksi C++:ssa, kaikista aliohjelmista käytetään yleisnimeä funktio. Java-kirjallisuudessa kaikista aliohjelmista käytetään usein yleisnimeä metodi.

Tällä kurssilla käytetään yleisnimeä aliohjelma silloin kun ei erikseen haluta korostaa että kyseessä on erityisesti funktio tai metodi. Tarkennetaan funktion ja metodin käsitteitä seuraavaksi.

Erisnimenä aliohjelma tarkoittaa tällä kurssilla staattista void-tyyppistä aliohjelmaa.

Funktio: Aliohjelma, joka palauttaa arvon, esimerkiksi kahden luvun keskiarvon. Tämän määritelmän mukaan funktiossa on aina vähintään yksi return-lause, jonka perässä on lauseke, esimerkiksi return (a+b)/2.0;

Tässä määritelmässä ei oteta kantaa parametrien määrään.

Funktion on useimmiten syytä olla static. Ihannetilanteessa puhtaalla funktiolla ei ole sivuvaikutuksia, eli se ei esimerkiksi muuta parametrina vietyä taulukkoa.

Metodi: Aliohjelma, joka tarvitsee tehtävän suorittamiseksi kohteena olevan olion omia tietoja. Metodeja käytetään tällä kurssilla (esimerkiksi merkkijono.IndexOf), mutta ei tehdä itse muuten kuin peliluokan metodeja (esimerkiksi Begin). Joku voi myös mahdollisesti tehdä loppukurssilla uuden luokan, jolle sitten kirjoitetaan omia metodeja. Käytännössä metodissa tarvitaan this-viitettä ja se ei saa silloin olla static.

Metodi voi myös funktion tapaan palauttaa arvon tai void-aliohjelman tapaan olla palauttamatta.

Muuttujat:

  • lokaalit muuttujat
  • parametrimuuttujat
  • attribuutit
  • globaalit muuttujat (hyi hyi)

Tutkittava ohjelma

ÄLÄ aja alla olevaa ohjelmaa ennen kuin olet vastaillut luennolla tai itsenäisesti kysymyksiin ohjelman alapuolella!

# Plugin1
using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Effects;
using Jypeli.Widgets;

public class Pallot : PhysicsGame
{
    private PhysicsObject pallo;
    private double x = -200;

    public override void Begin()
    {
        PhysicsObject p = Luo(this, 100, 100);
        Lisaa();
        pallo.Color = Color.Yellow;
        Lisaa();
        Vaihda(Color.Red);
        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
    }


    public void Vaihda(Color c)
    {
        pallo.Color = c;
    }


    public void Lisaa()
    {
        pallo = Luo(this, x += 100, -200);
    }


    public static PhysicsObject Luo(Game peli, double x, double y)
    {
        PhysicsObject o = new PhysicsObject(70, 70, Shape.Circle);
        peli.Add(o);
        o.Position = new Vector(x, y);
        return o;
    }
}

 

# arvosana

Open plugin

Kysymyksiä

# nelit

Open plugin

# ympyroita

Open plugin

# metodit

Open plugin

# funktioita

Open plugin

# lokaalejaBegin

Open plugin

# likaalejaVaihda

Open plugin

# Lisaa

Open plugin

# lokaalitLuo

Open plugin

# missaX

Open plugin

# aiheuttaaVirheen

Open plugin

# muutetaan

Open plugin

# viitemuuttujat

Open plugin

# montakoLuokkaa

Open plugin

# voikoVaihdaStatic

Open plugin

# miksiEiVoi

Open plugin

Attribuuttien poistoa

  • yritetään poistaa turhia attribuutteja

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.