C#, Hello World ja komentorivi (Windows)

Tässä tehtävässä oletetaan että olet asentanut kurssin työkaluista ainakin tekstieditorin ja Visual Studion tai Riderin.

1. Mikä ihmeen komentorivi?

Jos komentorivi ei ole tuttu, niin tutustu ehdottomasti ensimmäiseksi komentoriviohjeisiin:

Ylemmässä on kuvattu miten komentorivi avataan, ja yleisimpiä komentoja Windowsille, Linuxille ja Macille. Alemassa tarkempi kurssi Bashin käytöstä.

Tässä syksyn 2022 harjoituksessa käyteään Git Bash -liittymää. Mikäli haluat tutustua saman asian tekemiseen CMD Promtilla tai PowerShellillä, katso syksyn 2020 materiaalia.

2. Mikroluokissa: N-levyn liittäminen

Tämä luku koskee pääasiassa Agoran mikroluokkia, n:-levy ei toimi suoraan kotikoneissa, mutta ei sitä välttämättä tarvitakaan!

Avaa tämä jos olet mikroluokassa ja käytät mikroluokkien koneita

# mkdir

3. Hakemiston luominen ja sinne vaihtaminen

Windowsissa avataan ensin Git Bash:

  • ota vasemmasta alakulmasta ikkunan kuva ja kirjoita Git
  • pitäisi tulla näkyviin Git Bash
  • tätä kannattaa painaa hiiren oikealla ja kiinittää se tehtäväpalkkiin
  • avaa Git Bash

Macissa ja Linuxissa avataan ensin pääte (terminal).

Nyt järjestelmästä riippuen luodaan itselle hakemisto tätä ohjausta varten.

Agoran mikroluokissa hakemisto pitää olla MyTemp-hakemiston alla. Ja koska samaa hakemistoa käyttää moni muukin, pitää oma tunnus lisätä hakemiston nimeen (älä siis vielä kirjoita seuraavia mihinkään, vaan katso mitä nimeä jatkossa käytetään):

c:\MyTemp\Anonymous\kurssit\ohj1\paate\paate1  (mikroluokan kone, Windows muoto)
/c/MyTemp/Anonymous/kurssit/ohj1/paate/paate1  (mikroluokan kone, Linux-muoto)
c:\kurssit\ohj1\paate\paate1                      (oma Windows-kone, Windows muoto)
/c/kurssit/ohj1/paate/paate1                      (oma Windows-kone, Linux-muoto)
~/kurssit/ohj1/paate/paate1                       (Mac ja Linux)

Huomaa että nuoli ylös -painikkeella saat edellisen komennon, joten siihen on helppoa täydentää. Nyt koneesta ja paikasta riippuen kirjoita komentoriville:

Oma Windows-kone:

cd /c
mkdir -p kurssit/ohj1/paate/paate1
cd kurssit/ohj1/paate/paate1

Mikroluokassa:

cd /c/MyTemp
mkdir Anonymous
cd Anonymous
mkdir -p kurssit/ohj1/paate/paate1
cd kurssit/ohj1/paate/paate1

Mac/Linux:

cd ~
mkdir -p kurssit/ohj1/paate/paate1
cd kurssit/ohj1/paate/paate1

Eli mitä tehtiin?

  1. vaihdettiin c-levyn juureen (windows) tai kotihakemistoon (Mac, LInux)
  2. luotiin uusi hakemisto (mkdir, make directory) koko polku kerralla (-p eli path) ja sitten annetaan koko hakemistopolku joka halutaan luoda. Tätä ei tarvitse enää luoda toista kertaa vaikka sulkisit komentoikkunan.
  3. vaihdetaan hakemistoon (cd, change directory)

Tee ohjauksen tehtävät tähän hakemistoon. Jos joudut käynnistämään Git Bashin uudelleen, pitää cd-komennot hakemiston vaihtamiseksi tehdä uuudelleen.

# hello

4. Hello World

Macilla ja Linuxilla jatka nyt luvusta 5. Kääntäminen ja ajaminen dotnetillä.

Luodaan seuraavaksi ensimmäinen ohjelma.

Luo jollakin tekstieditorilla tiedosto nimeltä HelloWorld.cs, vaikkapa Notepad++:lla (kirjoita komentoriviltä npp.bat HelloWorld.cs jos olet tehnyt npp:n ohjeiden mukaan tai jos et ole, niin käynnistä tekstieditori muuten ja ole huolellinen että tallennat oikeaan paikkaan). Kopioi seuraavaksi alla oleva teksti HelloWorld.cs tiedostoon ja tallenna muutokset:

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

Nyt tiedosto HelloWorld.cs sisältää ensimmäisen ohjelman lähdekoodin. Lähdekoodi on normaalia tekstiä, jota voidaan muokata millä tahansa tekstinmuokkausohjelmalla. Lähdekoodi on aina kirjoitettu jonkin ohjelmointikielen sääntöjen mukaisesti.

Tietokoneet eivät kuitenkaan ymmärrä lähdekoodia, vaan lähdekoodi on ensin käännettävä (eng. "Compile") muotoon, jonka tietokone osaa suorittaa. Tämä tehdään kääntäjällä (eng. "Compiler"), erillisellä ohjelmalla jonka tehtävä on tuottaa lähdekoodista ajettava ohjelma.

Tällä kurssilla ohjelmamme lähdekoodi noudattaa C# (C-sharp) nimisen ohjelmointikielen sääntöjä. Voimme siis käyttää työkalua nimeltä csc (C-Sharp-Compiler) ohjelmamme kääntämiseen ajettavaksi ohjelmaksi.

4.1 Aluksi meidän pitää löytää hakemisto, josta csc.exe löytyy.

Vaihtoehtoja voi olla esimerkiksi:

VS2022 Community asennettuna (todennäköisin vaihtoehto):

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\Roslyn

Entäs jos ei olekaan täällä?

# path

4.2 Seuraavaksi lisätään se hakupolkuun:

Csc-ohjelman voi lisätä hakupolkuun seuraavalla komennolla:

export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/Roslyn:$PATH"

Nyt ohjelma on lisätty hakupolkuun tämän istunnon ajaksi. Jos suljet Git Bash:in ja avaat myöhemmin uudestaan, täytyy sama komento syöttää uudelleen.

Jotta yllä olevaa komentoa ei tarvitse toistaa joka kerta kun käynnistät Git Bash:in uudestaan, voidaan sama komento listätä .bashrc-nimiseen tiedostoon.

Tämän tehdäksesi mene omaan kotihakemistoosi. Kotihakemistosi polku on /c/Users/[oman käyttäjän nimi]. Helpoiten sinne pääsee

cd ~

Seuraavaksi anna komento (mutta älä enää anna sitä toista kertaa):

echo 'export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/Roslyn:$PATH"' >> .bashrc

Tämä kirjoittaa aiemmin käytetyn komennon .bashrc-nimiseen tiedostoon. Git Bash suorittaa kaikki tässä tiedostossa olevat komennot automaattisesti kun se käynnistyy.

Nyt csc-ohjelma löytyy aina komentoriviltä.

Siirry nyt takaisin kohdassa 3 luomaasi /c/kurssit/ohj1/paate/paate1 - kansioon.

cd /c/kurssit/ohj1/paate/paate1

Csc-ohjelman lisääminen pysyvästi hakupolkuun onnistuu myös Windowsin ohjauspaneelin kautta. Voit katsoa ohjeet täältä.

# kaantaminen

4.3 Ohjelman kääntäminen

Käännä sitten ohjelma kirjoittamalla komentoriville

csc.exe HelloWorld.cs

Nyt ohjelman lähdekoodi on käännetty ajettavaksi ohjelmaksi. Tarkista mitä tiedostoja kansiossa on:

ls -la

Kansiosta pitäisi nyt löytyä tiedosto nimeltä HelloWorld.exe. Tämä on ajettava ohjelma, jonka kääntäjä loi HelloWorld.cs tiedostosta.

Aja ohjelma kirjoittamalla

./HelloWorld.exe

Komentoriville pitäisi nyt tulostua sanat: "Hello World!".

Kokeile tehdä jokin muutos HelloWorld.cs:ssä olevaan lainausmerkkien väliseen tekstiin, tallenna, käännä ja aja uudelleen.

CMD:ssä riittäisi pelkästään (mutta älä nyt siitä välitä)

HelloWorld.exe

tai

HelloWorld
# dotnet

5. Kääntäminen ja ajaminen dotnetillä

Tämä on uudempi ja hieman yksinkertaisempi tapa kääntää komentoriviltä. Tätä käytetään seuraavana tehtävänä olevassa Lumiukko-ohjauksessa. Aluksi käytettiin tuota "vaikeampaa" tapaa, koska tämä uusi tapa peittää näkyvistä mitä taustalla tapahtuu. Eli dotnet-komento (ohjelma) luo uuden projektin eli tekee tarvittavat tiedostot annettujen mallien mukaan (esim ConsoleMain tao fysiikkapeli). Sitten kääntää ja ajaa ohjelman jos se on virheetön. Eli näitä vaiheita tehtiin itse edellisessä Windows-harjoituksessa.

Aluksi asenna tarvittavat projektimallit. Tämä tehdään yhden kerran/kone, tosin uudelleen antaminenkaan ei haittaa, jopa päivittää uudempaan versioon tarvittaessa.

dotnet new -i Jypeli.Templates

Vaihda hakemistoon johon haluat projektin (ks. 3. Hakemiston luominen ja sinne vaihtaminen).

Luo HelloWorld projekti

dotnet new ConsoleMain -n HelloWorld

Vaihda syntyneen projektin hakemistoon

cd HelloWorld

Katso mitä tiedostoja syntyi:

ls -la     

Tiedoston saa muokattavaksi antamalla komentoriviltä esim:

  • Windows: notepad HelloWorld.cs
  • Mac: open -e HelloWorld.cs
  • Linux: nano HelloWorld.cs

Muokkaa koodia (eli avaa editorilla tiedosto HelloWorld.cs) tiedostosta HelloWorld.cs laittamalla Main funktion sisään (eli siellä olevien aaltosulkujen {} väliseen alueeseen) esimerkiksi

System.Console.WriteLine("Hello World!");

Sisennä niin, että System-sana alkaa 4 välilyöntiä sisemää kuin aaltosulut. Katso koodiesimerkki kohdassa 4. Hello World.

Käännä ja aja ohjelma:

dotnet run

Huomioi, että komento dotnet run on annettava samasta kansiosta jossa sijaitsee .csproj loppuinen tiedosto (esimerkissä tiedosto on HelloWorld.csproj).

Komento dotnet run tekee saman kääntämisen kuin kohdassa 4.3 Ohjelman kääntäminen, mutta tämä komento hoitaa myös automaattisesti mm. kirjastojen liittämisen projektiin (vertaa syksyn 2020 ohjeisiin kääntää Jypeli ohjelma komentoriviltä käyttäen csc:tä).

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