Ohjelmointi 1, syksy 2022, luento 03

# L03

3. luento: ma 5.9.2022 klo 12:15-14:45: Aihe: Yksinkertainen graafinen C#-ohjelma, aliohjelmat, dokumentointi

Suosituksia opiskeluun

  • kertausta kurssin sivujen rakenteesta
    • (PÄÄTE)OHJAUKSET (kurssilla n. 300, n. 200 ilmoittautui, 144 kävi!)
    • ks em lista luennon aiheista
    • jos menuista puuttuu jotakin, kerro niin lisätään
    • lue huolella!
    • laiskuus (lazy), ks demo1
    • muutosten tilaaminen
    • muista klikata punaiset pois!!!
    • Pisteet/eteneminen

Tällä sivulla kerrotaan, kuinka Ohjelmointi 1 -kurssi on suunniteltu suoritettavaksi "ihanteellisesti".

Varaa kurssille vähintään 15 tuntia/viikko.

Ohjelmointi 1 -kurssin viikkorytmi joka toistuu 11 viikon ajan
Ohjelmointi 1 -kurssin viikkorytmi joka toistuu 11 viikon ajan

Viikon ensimmäisellä luennolla jaetaan seuraavan viikon demotehtävät. Tehtäviin kannattaa tutustua jo samantien ja jopa yrittää niiden tekemistä ennen viikon jälkimmäistä luentoa. Demotehtävien omatoimiseen tekemiseen on varattu keskimäärin 4 tuntia per viikko, mutta varsinkin alkuvaiheessa niiden tekemiseen voi mennä enemmänkin aikaa. Lisäksi työmäärän yksilöllinen vaihtelu on huomattavan suurta. Varaa siis riittävästi aikaa opiskeluun.

Ja ennen kutakin luentoa kannattaa lukea luennolle M: merkityt luvut!

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

Hello World

Ohjelman tekemiseksi tarvitaan siis

  • tapa kirjoittaa ohjelman tarvitsema teksti (lähdekoodi, source)
    • siksi siis se editori
    • lähdekoodisella tiedostolla on tarkennin, joka kuvaa kieltä, esim .cs
    • muista tallentaa aina muutosten jälkeen
  • ohjelmakielen kääntäjä joka lukee lähdekoodin ja tuottaa siitä konekielisen version
    • esim csc C# ohjelmien kääntämiseksi
    • tuottaa esim .exe tiedoston (executable)
  • lähdekoodi käännetään kääntäjällä
  • ajetaan konekielinen ohjelma
    • esim: ./HelloWorld.exe
# helloeka
  • Ohjelman kääntäminen komentoriviltä

  • Hello World

      export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/bin/Roslyn/:$PATH"
      csc.exe HelloWorld.cs
      ./HelloWorld.exe
  • Lumiukkko
    Ennen:

      csc Lumiukko.cs /reference:Jypeli.dll;Jypeli.Physics2d.dll;MonoGame.Framework.dll /platform:x86

    Nyt:

      dotnet run

Notepad++:aan ajokomento

  1. paina F5

  2. kirjoita

    cmd /C "cd /d $(CURRENT_DIRECTORY) && dotnet run"
  3. Save vaikka nimelle dotnet ja vaikka Ctrl-F5

  4. Nyt kun painaa Ctrl-F5 niin ajaa

Lumiukko

# lumiukko1
// Otetaan käyttöön Jyväskylän yliopiston Jypeli-kirjasto
using Jypeli;

/// @author  Vesa Lappalainen, Antti-Jussi Lakanen
/// @version 22.12.2011
///
///
/// <summary>
/// Luokka, jossa harjoitellaan piirtämistä lisäämällä ympyröitä ruudulle
/// </summary>
public class LumiukkoTyhma: PhysicsGame
{

    /// <summary>
    /// Piirretään oliot ja zoomataan kamera niin että kenttä näkyy kokonaan.
    /// </summary>
    public override void Begin()
    {
        Camera.ZoomToLevel();
        Level.Background.Color = Color.Black;

        {
            double x = -200;
            PhysicsObject p1 = new PhysicsObject(2 * 100.0, 2 * 100.0, Shape.Circle);
            p1.X = x;
            p1.Y = Level.Bottom + 200.0;
            this.Add(p1);

            PhysicsObject p2 = new PhysicsObject(2 * 50.0, 2 * 50.0, Shape.Circle);
            p2.X = x;
            p2.Y = p1.Y + 100 + 50;
            this.Add(p2);

            PhysicsObject p3 = new PhysicsObject(2 * 30.0, 2 * 30.0, Shape.Circle);
            p3.X = x;
            p3.Y = p2.Y + 50 + 30;
            this.Add(p3);
        }
        {
            double x = 200;
            PhysicsObject p1 = new PhysicsObject(2 * 100.0, 2 * 100.0, Shape.Circle);
            p1.X = x;
            p1.Y = Level.Bottom + 200.0;
            this.Add(p1);

            PhysicsObject p2 = new PhysicsObject(2 * 50.0, 2 * 50.0, Shape.Circle);
            p2.X = x;
            p2.Y = p1.Y + 100 + 50;
            this.Add(p2);

            PhysicsObject p3 = new PhysicsObject(2 * 30.0, 2 * 30.0, Shape.Circle);
            p3.X = x;
            p3.Y = p2.Y + 50 + 30;
            this.Add(p3);
        }

    }
}
  • komentoriviltä
  • Visual Studiolla
  • 2 lumiukkoa
# tekstia

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