wiki:cssyntaksi
Last modified 16 months ago Last modified on 2016-08-20 00:29:05

Sivu siirretty TIMiin

1. C#-pikasyntaksi kurssilla olevista asioista

Tällä sivulla käydään lyhyesti läpi C#-kielen syntaksia siltä osin, kuin se liittyy kurssilla esitettyihin asioihin.

C#-kielen (versio 5) koko syntaksi löytyy täältä.

1.1 C#-ohjelman yleinen rakenne

Tämä siis kurssilla esiintyneiltä osin, tarkemmin katso: MSDN C# General Structure of a C# Program.

// C#-ohjelman "luuranko"
using System;
namespace OmaNimiavaruus
{
    public class OmaLuokka
    {
    }

    delegate int OmaDelegate(int eka, double toka);

    public class OmaPaaLuokka
    {
        public static void Main(string[] args) // tai public static void Main() 
        {
            //Your program starts here...
        }

        public static int OmaFunktio(int luku)
        {
           ...
        }  
    }
}

1.2 Muuttujat

Lue myös muuttujien näkyvyys

  Tyyppi nimi;
  Tyyppi toinenNimi = alustus;
  nimi = sijoitus;
// HUOMAA että kohde = lähde; 
// joissakin kielissa on kohde := lähde tai jopa kohde <- lähde
// MUTTA ei siis ole toisinpäin, vaikka puhekielestä voisi johtaa tuon toisinpäin
// "sijoitetaan 5 muuttujalle sormia" - täytyy kuitenkin kirjoittaa sormia = 5;

esimerkki:
  double kuunEtaisyys;
  int sormia = 5;
  kuunEtaisyys = 3.85e+8;
  String teksti = "Kissa";
  StringBuilder jono = new StringBuilder("Koira");

1.3 Aliohjelman kutsuminen

Lue myös Aliohjelmien kutsuminen

  NimiavaruudenNimi.LuokanNimi.AliohjelmanNimi(arvo1,arvo2,arvo3);
  Tyyppi a = NimiavaruudenNimi.LuokanNimi.FunktionNimi(arvo1,arvo2,arvo3);

esimerkki:
  System.Console.WriteLine("Terve!");
  double ka = Keskiarvo(3.2,5.3);

1.4 Aliohjelman esittelyrivi

Lue myös Aliohjelmien kirjoittaminen

public static void AliohjelmanNimi(Tyyppi1 p1, Tyyppi2 p2, Tyyppi3 p3)
public static Paluutyyppi FunktionNimi(Tyyppi1 p1, Tyyppi2 p2, Tyyppi3 p3)

// esimerkki
public static void PiirraLumiukko(PhysicsGame peli, double x, double y)
public static double Keskiarvo(double a,double b)

1.5 Taulukot

Lue myös 1-ulotteiset taulukot, 2-ulotteiset taulukot

  Tyyppi[] nimi;
  Tyyppi[] toinenNimi = {alkiot};
  Tyyppi[] kolmasNimi = new Tyyppi[koko];
  Tyyppi[,] nimi2UlotteiselleTaulukolle = new Tyyppi[riveja,sarakkeita];
  Tyyppi a = nimi[indeksi];  // indeksi AINA int
  nimi[indeksi] = a;

esimerkki:
  int[] luvut;
  double[] lampotilat = {-12.3, -14.5, -3.2, 0.5, 4.5};
  Vector[] pisteet = new Pisteet[5];
  int[,] ruudukko = new int[5,6]; 

  int luku = luvut[2];
  double lampotila = lampotilat[3];
  pisteet[4] = new Vector(15.1,12.3);
  pisteet[4].X = 9.2; 
  int riveja = ruudukko.GetLength(0);
  int sarakkeita = ruudukko.GetLength(1);

1.6 Silmukat

Lue myös Silmukat monisteessa, sekä 1-ulotteiset taulukot

while (ehto) lause;

do 
{
  lause1;
  lause2;
  ...
  lauseN;
} while (ehto);


for (muuttujien alustukset; ehto; silmukan lopussa tehtavat toimenpiteet)
{ 
   lauseet; // silmukan runko-osa
}

vrt:

muuttujien alustukset;
while (ehto) 
{
  lauseet; // silmukan runko-osa
  silmukan lopussa tehtavat toimenpiteet;
}

foreach (taulukonAlkionTyyppi alkio in taulukko) 
{
   lauseet; // joista joku käyttää muuttujaa alkio
}

vrt:

for (int i=0; i<taulukko.Length; i++) 
{ 
   taulukonAlkionTyyppi alkio = taulukko[i];
   lauseet;
}


esimerkki:
  int[] t = {1,3,6,7,8};
  int s = 0; 

  int i = 0;
  while ( i < t.Length )
  {
     s += t[i];
     i++;
  }

  int i = 0;
  do
  {
     s += t[i];
     i++;
  } while ( i < t.Length )


  for (int i=0; i < t.Length; i++)
  {
     s += t[i];
  } 


  foreach (int luku in t)
  {
     s += luku;  // luvun muuttaminen ei muuttaisi taulukkoa
  } 

1.7 ehtolauseet

Lue myös Ehtolauseet monisteessa

  if ( ehto ) lause;

tai jos tarvitaan useita lauseita:

  if ( ehto )
  {
     lause1;
     lause2;
     ...
     lauseN;
  }  

  if ( ehto ) lause;
  else lause; 

  tai vastaavasti

  if ( ehto )
  {
     lause1;
     lause2;
     ...
     lauseN;
  }  
  else
  {
     lause1e;
     lause2e;
     ...
     lauseNe;
  }

esimerkki:

  if ( a > 5 ) b = a;

  if ( t[0] > t[1] )
  {
     int tmp = t[1];
     t[1] = t[0];
     t[0] = tmp;
  }

2. Asiat, joita ei kurssilla käsitellä

Näitä ei välttämättä ole myöskään muissa kielissä, esim. Javassa.

2.1 Viittaukset

  Tyyppi arvo; // Lähtökohtaisesti default (Tyyppi).
  Tyyppi? viittaus; // Lähtökohtaisesti null eli viittaus ei-minnekään.
  System.Nullable<Tyyppi> toinenViittaus; // Sama kuin edellinen.
  Tyyppi toinenArvo = viittaus ?? oletusarvo; // Viittauksen arvo, jos se osoittaa jonnekin; 
  // muussa tapauksessa oletusarvo.

  // esimerkki:
  bool totuusarvo = false;
  bool? tuntematonTotuusarvo = null;

2.2 Nimikkeet

Eng. Labels

Näiden käyttö ei ole suositeltavaa.

  int x = 0; //Näin voi tehdä jos haluaa sekavaa koodia.
alku:
  x++;
  if (x < 3) goto alku;

  int x = 0; // Näin kannattaa tehdä jos haluaa pysyä järjissään.
  while (x < 3) x++;

2.3 Muuta