Ohjelmointi 1, syksy 2022, luento 04

# L04

4. luento: ti 6.9.2022 klo 14:15-16:00: Aihe: Aliohjelmat, muuttujat

Kurssista

Kun tehtävien vastaukset on julkistettu (esim demopalautuksissa), pitää jokaisen korjata omat vastauksensa niin, että ainakin Tauno ja perustehtävät 1-6 tuottavat vähintään 1p kukin. Eli demon palautuksen jälkeen pitää demosivun näyttää 7 p.

Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla mainittu pistemäärä.

Oikeastaan 90% kurssin sisällöstä on jo noissa kahdessa:

  • tämän päivän lumiukko joka piirretään PiirraPallo avulla

Demo 1, tiedoston tekeminen

# teht2cs

Teht2.cs

public class Teht2
{
    public static void Main()
    {
        System.Console.WriteLine("Harjoittelen tekstitiedoston tekemistä!");
    }
}

 

Lauseita avuksi

    for (int i=1; i<=100; i++)
    Console.Write("-");
    Console.WriteLine();
    Console.WriteLine("{0,2:00}", i);
public static void Main()
{
    for (int i = 1; i <= 1; i++)
        System.Console.WriteLine("Harjoittelen tekstitiedoston tekemistä!");

    Viiva(80);

    for (int i = 1; i <= 40; i++)
        System.Console.WriteLine("{0,2:00}", i);

    Viiva(4);
}


public static void Viiva(int pituus)
{
    for (int i = 1; i <= pituus; i++)
        System.Console.Write("-");
    System.Console.WriteLine();
}
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;

/// @author vesal
/// @version 15.9.2020
/// <summary>
/// Esimerkki tulostamisesta
/// </summary>
public class Teht2
{
    /// <summary>
    /// Tulostetaan demo 1 tehtävän 2 tarvittavat jutut
    /// </summary>
    public static void Main()
    {
        for (int i = 1; i <= 4; i++)
        {
            Console.WriteLine("Harjoittelen tekstitiedoston tekemistä!");
        }
        Viiva(80);
        for (int i = 1; i <= 12; i++)
        {
            Console.WriteLine($"{i,2:00}");
        }
        Viiva(80);
    }


    public static void Viiva(int pituus)
    {
        for (int i = 1; i <= pituus; i++)
        {
            Console.Write("-");
        }
        Console.WriteLine();
    }
}
# teht2csb
using System;
using System.Linq;

Console.WriteLine(string.Concat(Enumerable.Repeat("Harjoittelen tekstitiedoston tekemistä!\n", 100)));
// System.Console.WriteLine(new System.Text.StringBuilder().Insert(0, "Harjoittelen tekstitiedoston tekemistä!\n", 100));
System.Console.WriteLine(new string('-', 80));
for (int i = 1; i <= 40; i++) System.Console.WriteLine("{0,2:00}", i);
System.Console.WriteLine(new string('-', 80));

 

LumiukkoAli

Open plugin

  • LumiukkoAli - lumiukko jossa pallokin piirretään aliohjelmalla
  • dokumentaatiokommentti C#:issa alkaa ///, vrt tavallinen //
  • Dokumentaatio Katso myös alla olevassa ohjelmassa linkki Dokumentaatio ja lisää aliohjelmiin kunnon dokumentaatio ja katso uudelleen.
  • Jypeli dokumentaatio
# lumiukko1

LumiukkoAli

using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;

namespace LumiukkoAli;
public class LumiukkoAli : PhysicsGame
{
    public override void Begin()
    {
        Camera.ZoomToLevel();
        Level.Background.Color = Color.Black;
        PiirraLumiukko(this, 0.5, Level.Bottom + 200);
        PiirraLumiukko(this, 200, 0);
        PiirraLumiukko(this, 310, -20);
        PiirraLumiukko(this, -200, 200);
    }

    public static void PiirraLumiukko(LumiukkoAli peli, double x, double y)
    {
        PhysicsObject p1 = new PhysicsObject(2 * 100.0, 2 * 100.0, Shape.Circle);
        p1.X = x;
        p1.Y = y;
        peli.Add(p1);

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

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

 

/// <summary>
/// Aliohjelma piirtää lumiukon
/// annettuun paikkaan.
/// </summary>
/// <param name="peli">Peli, johon lumiukko tehdään.</param>
/// <param name="x">Lumiukon alimman pallon x-koordinaatti.</param>
/// <param name="y">Lumiukon alimman pallon y-koordinaatti.</param>
/// <param name="r1">Lumiukon alimman pallon säde.</param>
public static void PiirraLumiukko(PhysicsGame peli, double x=0, double y=0, double r1=100.0)
{
    PhysicsObject p1, p2, p3;
    double r2 = r1*0.5;
    double r3 = r1*0.3;

    p1 = PiirraPallo(peli, x, y, r1);
    p2 = PiirraPallo(peli, x, p1.Y + r1 + r2, r2);
    p3 = PiirraPallo(peli, x, p2.Y + r2 + r3, r3);

    p2.Color = Color.Red;
}


public static PhysicsObject PiirraPallo(PhysicsGame peli, double x, double y, double r)
{
    PhysicsObject p = new PhysicsObject(2 * r, 2 * r, Shape.Circle);
    p.X = x;
    p.Y = y;
    peli.Add(p);
    return p;
}
Level.CreateBorders();
Gravity = new Vector(0, -200);  // ei toimi TIMissä koska TIM ottaa yhden kuvan

Huom! Demotehtävässä muuten sama, mutta ei tarvita PiirraLumiukko!

Binäärilukuja

# intn
   int n;
   n = 1;

 

# binaaribitti

 

Reikäkortti
Reikäkortti
# binluvut

Kirjoita binääriluvuista tähän

 

Ohjelmia

  • M: 7. Muuttujat
  • Keski.cs - yksinkertainen esimerkki funktioaliohjelmasta joka laskee ja PALAUTTAA keskiarvon
# helloeka

Tee tähän keskiarvoa

public class HelloWorld
{
    public static void Main()
    {
        System.Console.WriteLine("Hello World!");
    }
}

 

Muuttujat

tyyppi nimi;

# intn2
        int n;
        n = 1;

 

# muuttujanSijoitus

Tehtävä: Sijoitus

Aukaise Tauno. Sijoita n-muuttujaan arvo 1 vetämällä sen päälle <--1 'laatikko'. Aja ohjelma. Tulostuksen tulisi olla n=1. Kokeile sitten kasvattaa (vedä +1 n:än päälle) ja vähentää (vedä -1) muuttujan arvoa ja seuraa minkälaista ohjelmakoodia Tauno kirjoittaa.

 

# muuttujanAlustusEsittelyssa
//
        bool onkoKalastaja = true;
        char merkki = 't';
        int kalojenLkm = 0;
        double luku1 = 0, luku2 = 2.0, luku3 = 3+2.4;

 

# intiinDouble
//
        int ika = 2.5; // TÄMÄ KOODI EI KÄÄNNY

 

# doubleenInt
//
        double hinta = 20000;

 

# intylivuoto

Tehtävä 7.1

Aja ensin ohjelma muuttamatta. Poista sitten toisesta int-muuttujasta yksi 0. Aja. Mitä tapahtui. Laita takaisin 0. Vaihda tyypit niin, että laskut menevät oikein.

        int luku1 = 1000000000;
        int luku2 = 2000000000;
        int summa = luku1 + luku2;
        byte b = 254;
        b++; b++;
        sbyte sb = 127;
        sb++;

 

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