Föreläsning 1 ”DATATYPER OCH VARIABLER”

VAD ÄR ETT PROGRAM?
Ett program är en organiserad lista av instruktioner som när det…
…körs får datorn att uppföra sig på ett förutbestämt sätt.

Att konstruera ett program kan gå till på följande vis:
–    Fundera ut vad programmet skall göra         (design)
–    Skriv programmet i ett högnivåspråk         (implementera)
–    Kör programmet                 (exekvera)

OLIKA HÖGNIVÅSPRÅK
Det finns många olöika typer av högnivåspråk.

Olika språk har olika egenskaper och ändamål, t.ex. PERL för små webbapplikationer och C#, C++ och Java som är objektorienterade.

En del språk passar för mindre applikationer medan andra lämpar sig väl för stora system.

Valet av språk beror på:
–    Vilket sorts program som ska utvecklas
–    I vilket sammahang ochsystem det är tänkt att användas
–    Vilka krav som ställs

KOMPONENTER I PROGRAMSPRÅK
Literaler: ”100.50″
Konstanter: ”const float HOURPAY”
Variabler: ”wage”
Tilldelningsfaser: ”=”
Operatorer: + – / * < ! || &&

”const float HOURPAY = 100.50;”
”int wage = 120;”
”wage = HOURPAY * 40;”

IDENTIFIERARE
För att kunna referera till tal och annat vi hanterar i programmet sätter vi namn på dem, kallas identifierare.

En följd av bokstäver, siffror och understreck.

Får inte börja på siffra.

C#, C++ och Java skiljer på gemener och versaler.

Före identifierare skrivs vad det är för någon datatyp:
–    int skostorlekt = 48;
–    float momssats;

DATATYPER OCH VARIABLER
Programmering handlar i grunden om att lagra, behandla och flytta data.

För att lagra information i ett program behöver datorn veta följande:
–    VAR informationen lagras
–    VILKET värde som lagras där
–    VILKEN slags information som lagras där

För att lagra data använder man något som kallas datatyper och variabler

Datatypen eskriver vad som finns i minnet, om t.ex. 10011000 är ett tal eller en bokstav.

Variabler används för att identifiera lagrade data.

Variabler:
–     Används för att lagra värden och information
–    En variabel har identifierare (namn) och lagrar data av en viss datatyp.
–    En variabel har en viss räckvidd och livslängd.

VARIABLER
En variabel har tre delar:
–    Typ av data
–    Identifierare
–    Kan inte ändras efter att variabeln har namngivits.
–    Värde
–    Kan ändras under programmets gång… variabelt!

Ex: int myFortune = 50000;
där ”int” är datatypen, ”myFortune” är variabeln och ”5000″ är värdet.

DATATYPER OCH VARIABLER
En variabel deklareras:
–    int myFortune;

och ges ett värde:
–    myFortune = 5000;

Går även att komvinera:
–    int myFortune = 5000;

Med ett namn på variabeln behöver vi inte hålla reda på datorns minne, det gör datorn åt oss.

Variabel        Innehåll        Adress (plats i minnet)
0            0×00000006
0            0×00000007
myFortune    5000            0×00000008
0            0×00000009
0            0x0000000A
0            0x0000000B

Se som en byrålåda. All data kan läggas i varsin låda, men ska mer in måste något slängas ut.

DATATYPER I C#
Value Types                    Reference Types
Value Types innehåller faktiska data            Reference Types innehåller bara referenser till data

Data Typer som beskriver:                Datatyper som:
Heltal                        Class
Decimaltal                    Interface
Tecken                        Delegate
Object
String (OBS!)
Är Value Types                    Är Reference Types

HELTAL
I C#, C++, Java och även mängde urav andra språk som scriptspråk finns flera olika sorters datatyper som beskriver heltal.

Det som skiljer dem åt är hur stora värden de kan lagra.

Exempel på renodlade heltalstyper i C# är:
–    byte (System.byte)
–    short (System.Int16)
–    int (System.Int32)
–    uint (System.UInt32)
–    long (System.Int64)

”int” är en förkortning av engelska ”integer” som betyder… heltal!

HELTAL
De går från ett negativt värde till ett positivt värde om de inte föregås av bestämmare.

unsigned – då börjar vädet från 0 till ett stort positivt värde.
En signed short går från -32768 till 32767.
En unsigned short går från 0 65535.

I C# så beskrivs en unsigned short genom ett u före datatypen short:
–    En ushort (kallas även UInt16)

En variabel som är unsigned kan aldrig ha ett negativt värde.

Om högsta värdet överstigs så börjar vädet om från minsta värdet.
Signed short: 32766 -> 32767 -> -32768 -> -32767 etc

HELTAL, CHAR
Datatypen ”char” representerar både heltal och tecken.
–    char letter = ”A”; //OBS måste skriva apostroferna!
–    Char number = 65;

Varje nummer motsvarar ett tecken i en teckenstandard.

Det finns flera teckenstandarder:
–    ASCII, enbart engelska
–    Unicode, multispråk

Vi använder ASCII under grundkursen.

SANT ELLE FALSKT? BOOLEANS!
För att lagra om en variable har ett sant eller falskt värde finns en special-datatyp!

I C# heter den bool (System.Boolean)
Är uppkallad efter matematikern George Boole, som gjorde ett system för logikens lagar.
En variabel av typen bool kna ha värdet true (sant) eller false (falskt).
I C++ så motsvaras true utav siffran 1 och false utav siffrand 0, men INTE i C#.

Exempel:
–    bool iAmRich = false;
–    iAmRich = myFortune > 1000000;
Den här logiska operatorn svarar med sant eller falskt, som sedan tilldelas till variabeln iAmRich.

FLYTTAL, DECIMALER
I C# finns det tre flyttalstyper som skiljs åt av hur stora (exakta) värden de kan lagra:
–    float (System.Single)
–    double (System.Double)
–    decimal (System.Decimal)

Decimaltecknet skrivs med punkt-tecknet (”.”), inte komma!
–    double pi = 3.141592654;

En double har mycket större precision än en float.
–    float: 7-8 siffrors noggrannhet (4 bytes)
–    double: 16-17 siffrors noggrannhet (8 bytes)

En decimal är som en double, men långsammare för datorn att räkna med, men högre precision!

NYCKELORD
Fördefinerade ord (nyckelord) får inte användas som identifierare

Exempel på nyckelord:
–    if
–    int
–    float
–    return
–    for
–    value
–    object
–    med flera…

KONSTANTER
Skrivs som
–    const datatyp identiferare = uttryck;

Exemepl
–    const float PI = 3.14159;

const char ORGNAMN[] = ”BTH”;

Använd konstanter för data som inte ska ändras under programkörningen.

——
Kan ej ändras under program exekvering
Minskar risken för felskrivningar
Exempel på användning utav konstanter kan vara:
–    hastigheten som spelaren max får förflytta sig med i ett spel
–    den maximala höjden som spelaren kan hoppa i spelet
——

UTTRYCK, EXPRESSION
Ett uttryck evalueras (beräknas) till ett värde.

Exempel på uttryck
–    5+4 ger värdet 9
–    a*123.56 ger värdet av a:s värde multiplicerat med 123.56
–    antal > 100 ger värdet true om antal är större än 100, annars värdet false

sqrt( pow(x,2) + pow(y,2) )

Pythagoras sats! (viktigt vid spelutveckling, varför då?!)

SATSER
Med exekvering (utförande) menas att satser bearbetas.

Tilldelningssats:
–    variabel = uttryck; värdet av uttryck beräknas och ges till variabel.

Exempel:
–    float salary;
salary = 99.50 * (40 + 12 * 1.5);

–    bool isLeapyear;
isLeapyear = year %4 == 0;

OPERATORER, ARITMETISKA
negering (unärt minus)
–    result = -result;

*/ multiplikation och division
–    area = pi * (dia/2) * (dia/2);

/ heltalsdivision
–    hours = sec/3600;
–    euros = allCents /100;

% modulo (rest)
–    cents = allCents % 100;

+ – addition, subtraktion

Om båda operanderna är heltals vid / blir resultatet ett heltal:
–    int i = 11;
–    int j = 4;
–    float x;
–    x = i/j; // ger resultatet 2

OPERATORER, ARITMETISKA
Öknings- och minskningsoperatorer:
–    ++ ökar en variabels värde med 1, ex: i++;
–    – minskar en variabels värde med 1, ex: j–;

Operatorerna kan stå före eller efter variabelnamnet: health++; eller ++health;
–    health++ är postfixoperator.
–    ++health är prefixoperator

Värdet av uttrycket beror på om det är post- eller prefixoperator
–    i = 2; j = 3;
–    i++ ger värdet 2(!);  ++j ger värdet 4

Vad blir j=i++ + ++j;?
–    Först ökas i och j till 3 resp. 4, sedan adderas värdena av ++ operatorerna

–    i = i +1; // i = 3, värdet av i++ blir 2
–    j = j + 1; //j = 4, värdet av ++j blir 4
–    k = i + j; //k = 6

SPECIELLA TILLDELNINGSOPERATORER
Ofta ska en variabels värde ändras med en enkel operation, t.ex. ökas med något eller divideras med något.

Sådana operationer har fått sina egna operatorer!

Sammansatt tilldelning fås med:
–    *’=
–    /=
–    %=
–    +=
–    -=
–    <<=
–    >>==
–    &=
–    |=

Följande uttryck är samma sak!
–    a = a + b och a += b;
–    c = c / d och c /= d;
–     e = e* (3+f) och e *= 3+f;

Öka pris med 5%:
–    pris *= 1.05;
–    är det samma som pris = pris * 1.05;

OPERATORER, JÄMFÖRELSE
Jämförelseoperatorer ger resultatet:
–    true eller false
< mindre än
–    bool fattig = pengar < 100;

<= mindre än eller lika med
–    bool fattig = pengar <= 99;

> större än
–    bool rik = pengar > 9999;

>= större än eller lika med
–    bool rik = pengar >= 10.000;

== lika med
–    resultat = x == 5;

!= skilt från, inte lika med
–    resultat = x != 5;
–    används bland annat i så kallade if-satser!
–    if (x != 5)….

OPERATORER, LOGISKA
Ofta är det flera villkor som avgör vad som ska hända i programmet.
Logiska operatorer kräver att operanderna är av typen bool.

Not
–    uf (!( x < 5))…
And
–    result = x < 5 && y == 0;
Or
–    result = x >= 5 || y != 0;

STRÄNGAR, STRING
Används för att lagra hela rader med text
Är inte en datatyp utan en datastruktur
–    Egentligen en array utav char

Deklareras enligt följande:
–    string myName = ”Jonas”;

Stränga kan kombineras!
–    String surname = ”Jonas”;
–    String familyName = ”Svegland”;
–    String wholeName = surname + ” ” + familyName;
–    Console.WriteLine(wholeName);

Write skriver efter varann
WriteLine skriver, sen tar ny rad

 

 

Komponenter i programspråk

 

Const float HOURPAY = 100.50;

Litteraler=:100.50(litteraler är fast värde)

Konstanter: const float HOURPAY

 

Tilldelningssatser :  =

 

Int wage = 120;

Variabel( är en låda i lådan är det wage)

 

Operatorer: +?-

 

 

Wage= kan ha en stor bokstav så blir det ett ny objekt.

 

 

Identifierare

För att kunna referea till tal och annat vi hanterar i programmet sätter vi namn på dem, kallas identifierare

 

Variabler

Static void main(string[] angs)

{

Int number = 1234;

Number++;

}  Variabel ´number´ finns inte längre efter denna raden

 

 

Ex:int myFortune=5000;

Int= datatyp

Variabel= myFortune

5000= värde

 

Variabel            innehåll             adress(plats i minnet)

0                                        0×00000006

0                                        0×00000007

myFortune      5000                    0×00000008

0                                        0×00000009

0                                        0x0000000A

0                                        0x0000000B

 

Datatyper i C#

 

Reference Types

Referenser types innehåller bara referenser till data

 

Datatyper som….

class

interface

delegate

Object

String

 

……är Reference Types

Int=heltal

 

Börjar inte med ett utan med 0. Så har man 3 apelsiner så är det 0,1,2

 

Heltal,char

 

Char letter =’A’; ska man ha en bokstav så måste man ha apostrofer

Char number =65;

 

 

 

Operatorer, aritmetiska

 

int i = 10+;

int number = i++;                                                    Blir 11( 10+1)

console.Writeline(number);

console.Writeline(i);

 

i:20

number:10

i:11

 

int number= ++i;                                                     Blir20(10+10)