C# Perusteita

Viestiketju osiossa 'C-Ohjelmointikielet' , käynnistäjänä JokkeZ, 03.05.2015.

?

Lisää?

  1. Kyllä

    8 ääntä
    88,9%
  2. Ei

    1 ääntä
    11,1%
  1. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Huomasin tämän C-Ohjelmointikielet osion olevan tyhjänä niin päätin että lykkään tänne jotain pientä. :D
    Varmaan ei tarvi alkaa neuvomaan, miten Visual Studio, tai vastaava IDE ladatataan ja asennetaan. Itse käytän Visual Studio 2013. (Kuitenkin jos apua tarvitsee niin voi kysyä.)

    Aloitellaas,
    Käynnistetään Visual Studio, luodaan uusi projekti.
    (Yläpalkista File > New > Project > Visual C# > Console Application ja nimetään se tässä tapauksessa vaikkapa HelloWorld)
    [​IMG]
    Sitten päässäänkin ohjelmoimaan. ^^

    Tältä koodin pitäisi näyttää kun Visual Studio on latautunut.
    PHP:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 
    HelloWorld
    {
        class 
    Program
        
    {
            static 
    void Main(string[] args)
            {

            }
        }
    }
    Seuraavaksi tulostetaan muuttujan avulla "Hello World!" konsoli-ikkunaan, tähän tapaan.
    PHP:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 
    HelloWorld
    {
        class 
    Program
        
    {
            static 
    void Main(string[] args)
            {
                
    // Yksi riviset kommentit voidaan merkitä kahdella "//" viivalla ja

                /*
                 * Useampi riviset kommentit näin.
                 * :D
                 */

                /* Kommentit eivät tule näkymään lopullisessa ohjelmassa, vaan helpoittavat koodin lukemista useimmissa tapauksissa. */



                // Määritetään muuttuja ja annetaan sille aloitusarvo.
                
    string helloworld "Hello World!"//Loppuu lähes AINA ; merkkiin!
                
    Console.WriteLine(helloworld); //Tulostetaan muuttujan aloitusarvo konsoli-ikkunaan.

                //Tämän saman voi tehdä helpomminkin,
                
    Console.WriteLine("Hello World!");
                
    //Aika yksinkertaista, vähän kuin pelkkää englantia kirjoittelisi, eikös =)
            
    }
        }
    }
    Seuraavaksi jos haluamme nähdä mitä ohjelma tekee, voimme avata "debugata" painamalla yläreunasta vihreää Start nappia tai vasen Ctrl + F5 yhdistelmällä.
    [​IMG]
    Ohjelman pitäisi tulostaa 2 kertaa Hello World! kuvan tapaan.

    Siinä olisi sitten tämänkertainen, äänestäkää jos haluatte lisää. :)
    Ehdotuksia otetaan vastaan. :)
     
    Bustanity, Hummas, Benzzii ja 3 muuta jäsentä tykkää tästä.
  2. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Osa 2. Muuttujat
    Elikkäs käydään lyhyesti ja toivottavasti ytimekkäästi muuttujat läpi. Mikä on muuttuja? No minä en sitä osaa selittää joten googletin sen teidän puolesta, kas näin:


    Ohjelman suorituksen aikana tarvittavaa tietoa voidaan tallentaa muuttujiin. Muuttuja on ohjelmointikielten termi sille, että jokin asia laitetaan "ylös muistiin". Normaalissa elämässä esimerkiksi ohi ajavista autoista voidaan pitää lukua: 1, 2, 3, ja niin edelleen. Aina kun auto ajaa ohi, lisätään edelliseen muistissa olevaan lukuun yksi.

    Muuttujassa oleva tieto voi muuttua ohjelman aikana - siksi sitä sanotaan muuttujaksi! Ohjelma tunnistaa muuttujan sille annetun nimen perusteella. - https://trac.cc.jyu.fi/projects/npo/wiki/Muuttujat

    ---Muuttujat---
    int = luku
    string = teksti
    bool = tosi

    Tässä muutama esimerkki kuinka käyttää muuttujia.
    PHP:
    string teksti "Tämä on tekstiä";
    int luku 214;
    int summa;
    summa 2Pluslasku -- Tulostaa 3
    //summa = 1 - 2; Miinuslasku -- Tulostaa -1
    //summa = 1 * 2; Kertolasku -- Tulostaa 2
    //summa = 1 / 2; Jakolasku -- Tulostaa 0

    //Tulostaa konsoliin: 3
    Console.WriteLine(summa);

    //Tulostaa konsoliin: Tämä on tekstiä
    Console.WriteLine(teksti);

    //Tulostaa konsoliin: 214
    Console.WriteLine(luku);
    Console.Write on myös olemassa, WriteLine aloittaa aina uudelta riviltä, pelkkä Write jatkaa samalta riviltä.
    PHP:
    WriteLine:
    Console.WriteLine("Moi");
    Console.WriteLine("Moi");

    Tulostus:
    Moi
    Moi

    Write
    :
    Console.Write("Moi");
    Console.Write("Moi");

    Tulostus:
    MoiMoi
     
    Bustanity, Odens ja Hummas tykkäävät tästä.
  3. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Osa 3. IF / ELSE IF / ELSE

    Tässä kuvainnollistaminen if / else if /else käytöstä.
    PHP:
    if(ehto1)
    {
        
    // jos ehto1 on tosi, suoritetaan tämä
    }
    else if(
    ehto2)
    {
        
    // jos ehto1 ei ollut tosi, mutta ehto2 on, suoritetaan tämä
    }
    else if(
    ehto3)
    {
        
    // jos ehto1 eikä ehto2 ei ollut tosi, mutta ehto3 on, suoritetaan tämä
    }
    else
    {
        
    // jos mikään ehdoista ei ollut tosi suoritetaan tämä
    }
    Esimerkki koodi:
    PHP:
    // Luodaan muuttuja, annetaan sille arvoksi 3.

    int numero;
    numero 3;

    //Jos muuttuja "numero" on yhtäkuin 3, suoritetaan tämä.
    if (numero == 3)
    {
        
    Console.WriteLine("Kyllä, numero on kolme.");  
    }

    //Jos muuttuja "numero" on yhtäkuin 2, suoritetaan tämä.
    else if (numero == 2)
    {
        
    Console.WriteLine("Numero ei ole 2");
    }

    //Jos muuttuja "numero" ei ole 2 tai 3, suoritaan tämä.
    else
    {
        
    Console.WriteLine("Numero ei ole 3 tai 2");
    }
    Lopullinen konsolin tulostus olisi seuraava: Kyllä, numero on 3.

    Toinen esimerkki:
    PHP:
    int numero;
    numero 3;

    if (
    numero 3)
    {
         
    Console.WriteLine("Numero on isompi kuin 3");
    }
    else if (
    numero 2)
    {
         
    Console.WriteLine("Numero on pienempi kuin 2");
    }
    else
    {
         
    Console.WriteLine("Numero ei ole isompi kuin 3, eikä pienempi kuin 2.");
    }
    Lopullinen konsolin tulostus olisi seuraava: Numero ei ole isompi kuin 3, eikä isompi kuin 2.

    Mitäs ootte mieltä, jatketaanko perusteiden parissa vai näytänkö miten vaikka nettiselain, laskin tjsp.. pieniä ohjelmia luodaan?
     
    Bustanity, Makke375, Odens ja nämä jäsenet tykkäävät tästä.
  4. Odens

    Odens Jäsen

    Viestejä:
    150
    Tykkäykset:
    81
    Aktiivisuuspisteet:
    28
    Jatka vain! Hieno saada tällekkin foorumi -osiolle täytettä!
     
    Allu, Hummas, JokkeZ ja nämä jäsenet tykkäävät tästä.
  5. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Osa 4. Konsoli
    Konsoli "luokalla" voidaan lukea tai kirjoittaa tekstiä. Kirjoittamiseen: Write & WriteLine, jotka ollaankin jo käyty läpi. Lukemiseen Read, ReadLine, ReadKey. Read lukee seuraavan merkin, ReadLine koko syötteen ja ReadKey painetun näppäimen (sekä onko ctrl, alt tai shift pohjassa). Konsolin voi tyhjentää metodilla Clear.

    Tehdään yksinkertainen laskin, aikasemmin oppimallamme + ReadLine:ä käyttämällä.
    PHP:
    //Luodaan 2 muuttujaa.
    int numero1numero2;

    Console.Write("Anna numero 1: ");
    numero1 int.Parse(Console.ReadLine()); //Luetaan ensinmäinen numero

    Console.Write("Anna numero 2: ");
    numero2 int.Parse(Console.ReadLine()); //Luetaan toinen numero

    //Luodaan muuttuja joka laskee muuttujat "numero1" ja "numero2" yhteen.
    int tulos numero1 numero2;

    //int tulos = numero1 - numero2;   MIINUSLASKU
    //int tulos = numero1 * numero2;   KERTOLASKU
    //int tulos = numero1 / numero2;   JAKOLASKU

    //Tulostetaan tulos muuttuja konsoliin, eli pluslaskumme vastaus.
    Console.WriteLine("Tulos: " tulos);
    Esimerkki tulostuksesta:
    [​IMG]

    Konsolin ulkonäköä voi myös muutella yksinkertaisesti:
    PHP:
    //Vaihdetaan otsikko
    Console.Title "Konsoli";
    //Leveys 100 merkkiä
    Console.WindowWidth 100;
    //Korkeus 50 merkkiä
    Console.WindowHeight 50;
    //Sininen teksti
    Console.ForegroundColor ConsoleColor.Blue;
    PHP:
    int numeronumero1;

    Console.Write("Numero 1: ");
    numero int.Parse(Console.ReadLine());

    Console.Write("Numero 2: ");
    numero1 int.Parse(Console.ReadLine());

    int tulos numero numero1;

    if (
    tulos == 100)
    {
         
    Console.ForegroundColor ConsoleColor.DarkGreen;
    }
    else if (
    tulos == 1000)
    {
         
    Console.ForegroundColor ConsoleColor.DarkRed;
    }
    else if (
    tulos == 9001)
    {
         
    Console.ForegroundColor ConsoleColor.DarkMagenta;
         
    Console.WriteLine("Wow over 9000");
    }
    else
    {
         
    Console.ForegroundColor ConsoleColor.Cyan;
    }

    Console.WriteLine("Tulos on: " tulos);

    Mitä "int.Parse" tarkoitti?
    Siitä seuraavalla kerralla ;)
     
    Makke375, Bustanity, Hummas ja nämä jäsenet tykkäävät tästä.
  6. Bustanity

    Bustanity Jumala

    Viestejä:
    8
    Tykkäykset:
    68
    Aktiivisuuspisteet:
    13
    Nice one. +1
     
    Allu, Hummas, Odens ja 2 muuta jäsentä tykkää tästä.
  7. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Osa 5. Tyyppimuunnokset
    Tyyppien Parse- ja TryParse-metodeilla voi ”parsia” arvon merkkijonosta. Näiden kahden ero on siinä, että Parse heittää virheen mikäli merkkijono ei ollut sopivassa muodossa. Kannattaa muistaa, että desimaalierottimena käytetään oletuksena järjestelmässä määriteltyä desimaalierotinta.

    Parse:
    PHP:
    string teksti1 "123";
    // toimii
    int luku int.Parse(teksti1);

    string teksti2 "true";
    bool tosi bool.Parse(teksti2);

    string teksti3 "123.2";
    // virhe
    luku int.Parse(teksti3);
    // tämäkin heittää virheen, jos desimaalierottimena käytetään pilkkua!
    float float.Parse(teksti3);
    TryParse:
    PHP:
    string teksti "123";
    int luku;
    if(
    int.TryParse(tekstiout luku))
    {
        
    // parsiminen onnistui
        // tulostaa 123
    }
    else
    {
        
    // parsiminen epäonnistui
    }
    Convert-luokka
    Convert-luokasta löytyy metodit To***, joilla perustietotyyppejä voi muuttaa toiseksi.
    PHP:
    string arvo "123,2";
    float luku Convert.ToSingle(arvo);
    byte arvo2 123;
    char merkki Convert.ToChar(arvo2);
    Lisäksi sieltä löytyy metodi ChangeType, jolla voi yrittää muuttaa minkä tahansa tyypin toiseksi.
    PHP:
    string arvo "123,2";
    float luku = (float)Convert.ChangeType(arvotypeof(float));
    as-operaattori
    As-operaattorilla voi yrittää muuttaa nullable-tyypin toiseksi. Jos tyypit eivät ole yhteensopivia, tulos on null.
    PHP:
    object linux = new Linux();
    Kayttojarjestelma kayttojarjestelma linux as Kayttojarjestelma;
    if(
    kayttojarjestelma != null)
    {
        
    // Linux-luokka on yhteensopiva Kayttojarjestelma-luokan kanssa
        
    kayttojarjestelma.TeeJotain();
    }
     
    Makke375 ja Hummas tykkäävät tästä.
  8. VisuaaliFX

    VisuaaliFX Grafiikko

    Viestejä:
    297
    Tykkäykset:
    192
    Aktiivisuuspisteet:
    43
    Hienoa ohjeita!

    Lukeminen on selvää ja soveltaminen näiden avulla on helppoa.
    Toivottavasti näitä ohjeita tulee lisää ja olen kyllä itsekkin oppinut näistä jo jotain uutta :rolleyes:

    Selkeälukuista, Hyvin selitettyä, Ei kauheaa C/P ohjetta.
    10/10 :eek:
     
    Odens, JokkeZ ja Hummas tykkäävät tästä.
  9. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Osa 6. Valintalause switch
    switch case
    Valintalauseen (switch) rakenne on seuraava:
    PHP:
    switch(lauseke)
    {
        case 
    arvo1:
            
    // suoritetaan jos lausekkeen arvo on arvo1
            
    break;
        case 
    arvo2:
            
    // suoritetaan jos lausekkeen arvo on arvo2
            
    break;
        case 
    arvo3:
        case 
    arvo4:
            
    // suoritetaan jos lausekkeen arvo on arvo3 tai arvo4
            
    break;
        default:
            
    // suoritetaan jos mikään case ei osunut kohdalle
            
    break;
    }
    Case-kohtia voi olla yhtä monta kuin mitä lauseke saa arvoja. Useamman case:n saa suorittamaan saman koodin laittamalla ne peräkkäin (kuten esimerkin arvo3 ja arvo4) ja laittamalla koodin vain viimeiseen kohtaan.
    Kunkin kohdan suoritus päättyy johonkin lauseista: break (poistutaan switch-lauseesta), goto (hypätään toiseen kohtaan, esim goto case 1; ), return (poistutaan metodista) tai throw (heitetään poikkeus).

    Seuraava koodi laskee kuinka paljon rahaa jäätelöautomaattiin tarvitsee laittaa eri pallomäärillä.
    PHP:
    int palloja;
    Console.Write("Kuinka monta jäätelöpalloa laitetaan (1-3): ");
    palloja int.Parse(Console.ReadLine());
    decimal hinta 0m;
    switch (
    palloja)
    {
        case 
    1:
            
    hinta += 2.0m;
            break;
        case 
    2:
            
    hinta += 1.0m;
            goto case 
    1;
        case 
    3:
            
    hinta += 0.5m;
            goto case 
    2;
        default:
            throw new 
    Exception("Kone ei voi tehdä pallottomia eikä yli kolmen pallon annoksia");
    }
    Console.WriteLine("Syötä koneeseen {0:0.00} euroa"hinta);
    Esimerkki tulostus:
    [​IMG]



     
    Virtual tykkää tästä.
  10. JokkeZ

    JokkeZ Valvoja, C#/.NET Developer Henkilökunta Valvoja

    Viestejä:
    172
    Tykkäykset:
    85
    Aktiivisuuspisteet:
    28
    Ajattelin pitkästä aikaa tehdä jotain tähänkin osioon, joten tässä olisi toivottavasti yksinkertainen esimerkki luokkien käytöstä (class). Jos jotain epäselvää niin voi kysyä. :D
    PHP:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 
    Esimerkki
    {
        class 
    Program
        
    {
            static 
    void Main(string[] args)
            {
                
    EsimerkkiLuokka esimerkki = new EsimerkkiLuokka();
                
    /* Määritetään muuttujalle arvoksi Hello World */
                
    esimerkki.EsimerkkiString "Hello World";
                
    /* Tulostetaan se. */
                
    Console.WriteLine(esimerkki.EsimerkkiString);

                
    /* Käytetään EsimerkkiLuokan Laskuri metodia. Tulostaa Summa: 12 */
                
    esimerkki.Laskuri(66); //6+6 = 12
            
    }
        }

        class 
    EsimerkkiLuokka
        
    {
            public 
    string EsimerkkiString getset; }

            public 
    EsimerkkiLuokka() {}

            public 
    void Laskuri(int numero1int numero2)
            {
                
    int tulos;

                
    tulos numero1 numero2;

                
    Console.WriteLine("Summa: " tulos);
            }
        }
    }
     

Jaa tämä sivu