Denne gongen tek me ein kikk på koden som me skreiv i den forrige delen og setjer oss inn i korleis han verker

Som sagt kjem eg til å gå meir i detalj korleis koden i del 1 ein verker. Denne delen kjem til å innehalde ein del teori om koding og ulike kommandoar. På grunnlag av dette vil eg difor seie ifrå om at dei som ikkje er så uhorveleg interesserte i programering treng å pløye seg gjennom denne delen av artikkelserien. Vil du derimot skjøne litt meir kva koden i den førre delen tyder og kva som gjer kva, bør derimot lese vidare.

Koding i seg sjølv er ikkje vanskeleg. Språket me programmerer i (C#) er på ein måte engelsk som er utruleg simplifisert. Det er ikkje nokon ord som vert lagde mellom for å få flyt, her vert alt tatt stykkvis. Koding er òg ganske logisk, så om ein baserer seg på tenkje logisk, så er det ikkje vanskeleg i det heile. I denne artikkelserien kjem det òg til å vere ein del matte innblanda, men for mesteparten er det stortsett på ungdomsskulenivå, noko som alle burde takle (gjeve at dei er ferdig med ungdomsskulen).

Fyrst må me ta ein kikk på syntaksen, eller gramatikken, til C#. Dei mest grunnlegjande tinga er at ein avslutter kvar linje med semikolon (;). Dette indikerer at ein har avslutta kommandoen, utan semikolon på slutten av linja vil ikkje VC# forstå at ein ferdig med denne kommandoen og vil ikkje forstå kva me held på med. Ein anna ting ein bør merkje seg er at eit sett med kode er avgrensa innanfor to krølleparantesar (“{” og “}”). Kvar kodesnutt som er innanfor krølleparantesane er avgrensa til ein eigen del av programmet. Med denne enkle teorien som grunnlag hiv me oss i det.

Me kjem no til å ta for oss linje for linje. Eg kjem ikkje til å forklare den koden som vart generert automatisk av Visual C# 2008 Express (heretter VC#). Denne koden er ikkje viktig når ein skal programmere på vårt nivå. Det eg derimot skal kommentere er avsnittet kor me skreiv koden til det vesle progammet som me laga.

Det fyrste me skal ta føre oss er koden er linja

private void btnReknUt_Click(object sender, EventArgs e)

Det de kan sjå her er kode generert av VC#. Denne koden er eigentleg ikkje så viktig, men det ein bør leggje merke til er “btnReknut”, som er namnet på knappen og “_Click”, som er hendinga som skal skje for at den følgjane koden skal utførast.

Det neste me skal sjå på er linjene

double lon = Convert.ToDouble(txtLon.Text);
double timar = Convert.ToDouble(txtTimar.Text);
double skatt = Convert.ToDouble(txtSkatt.Text);

På desse linjene deklarerer og definerer me tre variablar. Ein variabel er som ei lita eske; det er ein stad kor ein kan lagre eller leggje bort noko til seinare bruk. Ein variabel må òg få ein type, typen fortel kva type informasjon som ligg i variabelen, eller eska. Double er typen til variabelen, double er namnet desimaltal i C#, det finnst fleire typar tal, men det er double me kjem til å bruke her. Alle variablar må ha eit eige namn, som må vere unikt. Dei tre variablane våre heiter “lon”, “timar” og “skatt” (legg merke til at eg ikkje bruker æ,ø,å. Desse bokstavane kan skape trøbbel sidan programmet i hovudsak bruker engelsk).

På venstre side av “=” deklarer me variabelen: me gjer han ein type og me gjer han eit namn. På høgre side av “=” definerer me variabelen: me fortel kva som er lagra i han, fortel programmet kva han tyder. I dette tilfellet kan de sjå at me utfører ein konvertering i variabelen. Sidan ting som vert skrive inn i tekstboksen logisk nok er tekst, må me gjere strengen (streng er ei samling av teikn som kan vere bokstavar, tal eller andre teikn) om til eit desimaltal av typen double. For å utføre konverteringa skriv me Convert.ToDouble([det som skal konverterast]). I dette tilfellet teksten frå textboksane txtLon, txtTimar og txtSkatt.

Når ein skal bruke nokon av eigenskapane til eit objekt (knappar, tekstboksar, merkelappar osv) skriv ein fyrst namnet på objektet, punktum og til slutt eigenskapen: objekt.eigenskap. Som me seinare skal sjå kan ein òg endre eigenskapar med kode, til dømes txtLon.Text = "Skriv her...", ville endra teksten i tekstboksen til det som står mellom hermeteikna. Ein bruker hermeteikna rundt tekst (eller strengar) for å vise at det ikkje er variablar eller kommandoar.

Den neste bolken me skal sjå på er

double bruttolon = lon * timar;
double nettolon = bruttolon - ((bruttolon / 100) * skatt);

Som de kan sjå er det to nye variablar. Me deklarerer og definerer dei to variablane “bruttolon” og “nettolon”. Typane til variablane er igjen double, altså desimaltal. Som de sikkert òg ser er det noko anna som er lagra i variablane. I bruttolon er det eit reiknestykke: lon * timar. Dette er lønna ganga med timane, noko som gjer løna før skatt. Deretter bruker eg bruttolon-variabelen i det neste reknestykket: bruttolon – ((bruttolon / 100) * skatt). Her tar eg bruttoløn minus skatt (som er bruttoløn delt på hundre ganga med prosent i skatt). Altså enkel prosentrekning på ungdomsskulenivå.

Som de sikkert ser har eg brukt ein variabel inni ein annan. Då vert verdien eller informasjonen som er lagra i den variabelen brukt der. Som de ser er det berre å skrive inn namnet på variabelen og når programmet les gjennom koden vil variabelnamnet verte bytta ut med det som er lagra i variabelen. Difor er det greit å lagre ting i variablar, då er det enklare å få tak i det seinare.

Den siste delen av koden er

labMelding.Text = "Bruttolønn: " + bruttolon.ToString() + "\nNettoløn: " + nettolon.ToString();

Her ser du at me endrer på eigenskapen til eit objekt ved å bruke kode. Som det ser skriv me fyrst inn objektet, punktum og eigenskapen: labMelding.Text. Etter “=” skriv ein inn kva ein vil at den eigenskapen skal vere, i dette tilfellet tekst (sidan det er teksteigenskapen me endrar på).

Som nemnt tidlegare skriv ein teksten mellom to hermeteikn. Sidan ein kun kan ha tekst i ein streng (tal kan både vere tekst i ein streng og tal i ein talvariabel), må me gjere variablane bruttolon og nettolon om til strengar. Me utfører ein liten konvertering når me bruker variablane, me gjer dei om til strengar ved å skrive .ToString() etter variabelnamnet. For å hekte variablane og strengane i saman bruker ein plussteikn. Hugs å leggje til mellomromma i strengane, slik at ein får mellomrom mellom strengane og variablane. Det som ligg i variabelen vert lagt til rett etter det siste teiknet i strengen.

Ein annan ting de kan leggje merke til er “\n”. \n er det me kallar ein “escaped character”. Escaped characters er teikn som er tatt ut av den vanlege samanhenge deira og vert brukt til noko anna. I vårt tilfelle er bokstaven “n” tatt ut frå rolla som “n”, til å signalisere eit linjeskift. Her er ei liste over nokre escaped characters:

  • \n = linjeskift
  • \t = tabulator
  • \\ = teiknet “\” inne i ein streng
  • \” = hermeteikn
  • \’ = enkelt hermeteikn

Ein kan òg “escape” ein heil streng ved å skrive ein krøllalfa (@) foran strengen. Ein kan då bruke alle spesielle teikn fritt, men hermeteikn (“) må enno escapast ved å skrive dei dobbelt (“”).

Koden som vert skriven inn vert utført sekvensielt, dette tyder at han vert utført frå topp til bunn. Programmet leser fyrste linja og utfører den kommandoen, leser neste linje og utfører den kommandoen. Ein kan difor kun bruke variablar som er deklarert og definert tidlegare i koden. Denne koden ville ikkje verke, sidan bruttolon ikkje er deklarert eller definert:

double nettolon = bruttolon - ((bruttolon / 100) * skatt);
double bruttolon = lon * timar;

Her ville VC# sagt i frå om at bruttolon er ein variabel som ikkje finnst og kan difor ikkje kjøre programmet. Det er lett å sjå at programmet kjører sekvensielt og det er lett å oppfatte sidan programmet og me les i same rekkefølgjen.

Klikk for større bilete

Som ein liten bonus, skal me no leggje til ein ny funksjon i programmet: ein tømmeknapp. Tømmeknappen skal leggjast til slik at ein kan trykke på han og alle felta vert tømt. Opne VC# og opne prosjektet. Legg til ein knapp ved sida av den forrige og endre Name-eigenskapen til btnTom (Klikk for større bilete). Endre deretter Text-eigenskapen til Tøm. Dobbelklikk på knappen og skriv inn denne koden der markøren står:

private void btnTom_Click(object sender, EventArgs e)
{
txtLon.Text = "";
txtSkatt.Text = "";
txtTimar.Text = "";
labMelding.Text = "";br />
}

Som de ser endrar med Text-eigenskapane til tekstboksane txtLon, txtSkatt og txtTimar og merkelappen labMelding til ingenting. Me endrar strengen i dei fire objekta til ingenting ved å skrive to hermeteikn etter kvarandre.

Eg oppfordrar dykk til å bruke den nye lærdommen dykkar til å eksperimentere litt med koden og komme på eigne funksjonar og idear. Del dei gjerne ved å laste opp dykkar eigne versjonar av skattekalkulatoren og leggje ei lenke til filene i kommentarane.