C#-perusteet - luento 1

Luentotaltiointi

Ongelmia videon katselussa?

C# (lausutaan: C sharp) on Microsoftin kehittämä olio-ohjelmointikieli

C# on ECMA-organisaation standardoima kieli

C# on tulkattu kieli

Muistuttaa syntaksiltaan C++- ja Java-kieliä.

Kaikki muuttujat ovat tyypitettyjä

Isoilla ja pienillä kirjaimilla on merkitystä

C#:ssa on pelkästään olioita

Automaattinen roskien keruu (Garbage collection)

Kaikki muuttujat pitää alustaa ennen käyttöä

Tukee osoittimia (unsafe)

Tukee ominaisuuksia (properties), indeksoijia, delegaatteja, tapahtumia, muuttujien välitystä viitteinä

Nimeämiskäytäntö: Sama kuin Pascal-kielessä eli kaikkien sanojen ensimmäiset kirjaimet kirjoitetaan kapiteeleilla.

.NET Framework

Common Language Infrastructure (CLI)

Common Language Infrastructure on ympäristö jossa voidaan suorittaa korkean tason ohjelmointikielillä tehtyjä ohjelmia erilaisissa tietokoneympäristöissä. CLI on käytännössä ECMA-standardi, joka määrittelee .NET-rajapinnan. CLIn toteutuksia ovat mm. Microsoftin Rotor, Mono ja Portable .NET

Common Language Runtime (CLR)

Hello World

using System; // using on vastaava kuin Javan import
// "Hello World!" -ohjelma C#-kielellä
namespace HelloWorld // namespace on vastaava kuin Javan package
{
/// Tämä on dokumentaatiokommentti (vrt. javadoc)
    class Hello
    {
        static void Main()
        {
            Console.WriteLine("Hello World!");
//            System.Console.ReadKey();

        }
    }
/* myös monen rivin
   kommentit toimivat
*/
}

Tietotyypit

Built-In Types Table

Formatting Numeric Results

Varattuja sanoja

Seuraavassa on lueteltu joitakin Javasta poikkeavia c#-kielen käyttämiä sanoja. Näiden käyttämiseen palataan myöhemmin kurssin aikana.

Varattuja sanojakin voidaan käyttää metodien ja muuttujien niminä jos niihin laitetaan etuliitteeksi @.

Ehtolauseet ja silmukat

Ehtolauseet ja silmukat toimivat hyvin samaan tapaan kuin Javassa. Lisäyksenä kuitenkin foreach-silmukka ja goto-käsky.

            foreach (int apu in array3) {
                Console.WriteLine(apu);
                }

Taulukot

class TestArraysClass
{
    static void Main()
    {
        // Declare a single-dimensional array
        int[] array1 = new int[5];

        // Declare and set array element values
        int[] array2 = new int[] { 1, 3, 5, 7, 9 };

        // Alternative syntax
        int[] array3 = { 1, 2, 3, 4, 5, 6 };

        // Declare a two dimensional array
        int[,] multiDimensionalArray1 = new int[2, 3];

        // Declare and set array element values
        int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

        // Declare a jagged array
        int[][] jaggedArray = new int[6][];

        // Set the values of the first array in the jagged array structure
        jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
    }
}

Arrays tutorial (C#)

Merkkijonot

string s = "Hello, World!";
string hello = "Hello\nWorld!";
string filePath = "\\\\My Documents\\";
string p2 = @"\\My Documents\My Files\";

int year = 1999;
string msg = "Eve was born in " + year.ToString();

string s4 = "Hello, World";
char[] arr = s4.ToCharArray(0, s4.Length);

System.Console.Write(s4[3]);

String Class

StringBuilder Class

C#-kielen ominaisuuksia

            int myInt = 5;
            if (myInt < 0)  // ehdon pitää palauttaa true tai false.
                Console.WriteLine("Your number {0} is less than zero.", myInt);
            else
                Console.WriteLine("Your number {0} is more than zero.", myInt);


        switch (myInt)
        {
            case 0:
                Console.WriteLine("Your number is {0}.", myInt);
                break;
            case 1:
                Console.WriteLine("Your number is {0}.", myInt);
                break;
            case 2:
                Console.WriteLine("Your number is {0}.", myInt);
                break;
            default:
                Console.WriteLine("Your number {0} is not between 0 and 2.", myInt);
                break;
        }

Luokat

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace hello
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            // Alternative syntax
            int[] array3 = { 1, 2, 3, 4, 5, 6 };
            foreach (int apu in array3) {
                Console.WriteLine(apu);
            }
            Henkilo tommi = new Henkilo("Tommi", "Lahtonen");
            tommi.Tulosta();
            Duunari antti = new Duunari("Antti", "Ekonoja", "yliopistonopettaja");
            antti.Tulosta();
            Henkilo[] taulukko = { tommi, antti };
            foreach (Henkilo p in taulukko)
            {
                p.Tulosta();
            }
            antti.ika = -5;
            antti.Tulosta();
            antti.ika = 25;
            antti.Tulosta();

            Console.ReadKey();

        
        }
    }
}


public class Henkilo
{
    protected string etunimi;
    protected string sukunimi;

    public Henkilo()
    {
        etunimi = "Matti";
        sukunimi = "Meikäläinen";
    }

    public Henkilo(string etu, string suku)
    {
        etunimi = etu;
        sukunimi = suku;
    }

    // entäs virtual
//    public virtual void Tulosta()
    public void Tulosta()
    {
        Console.WriteLine(this.etunimi);
        Console.WriteLine(this.sukunimi);
    }
    ~Henkilo()
    {
        Console.WriteLine(this.etunimi + " " + this.sukunimi + " dies");
    }

}


public class Duunari : Henkilo
{
    private string tehtava;
    public Duunari(string etu, string suku, string tehtava)
//    public Duunari(string etu, string suku, string tehtava)
//        : base(etu, suku)
    {
        this.etunimi = etu;
        this.sukunimi = suku;
        this.tehtava = tehtava;
    }

    // mitäs jos new korvataan sanalla override?
//    public override void Tulosta()
    public new void Tulosta()

    {
        base.Tulosta();
        Console.WriteLine(this.tehtava);
        Console.WriteLine(ika);
    }

    private int m_ika = 20;

    public int ika
    {
        get
        {
            return m_ika;
        }
        set
        {
            if (value> 0) m_ika = value;
        }
    }


}

Lisätietoa

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/gko/luennot/luento1/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
Jukka Mäntylä (jmantyla@iki.fi) <http://www.iki.fi/jmantyla/>
2010-10-04 16:03:55
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta