ITHS_C#_Tenta_1 Flashcards
Vad omvandlar kod til maskinkod som datorn förstrpr?
De nya språken kan översättas till maskinkod av ett separat datorprogram som heter kompilator. (compile: sammanställa) Några exempel på språk som man kompilerar är: C, C++, C#, Java, Visual Basic, Objective-C, Haskell och Erlang.
Förklara skillnaden på ett expression och ett statment
Ett statement talar om för kompilatorn “gör det här”.
Alla statements ska avslutas med ett semikolon: ;
Console.WriteLine(“jag är ett statement”);
Ett expression är ett statement som evalueras till ett värde.
Exempel: 1 + 2
Nämn de 6 viktigaste Datatyperna
bool - true eller false
byte - tal, 0..255
short, int, long, ushort, uint, ulong - heltal
float, double, decimal - flyttal (tal med decimaler, punkt i stället för komma)
char - ett enstaka tecken, skrivs med apostrof, ‘c’
String - en sträng av chars, skrivs med citattecken, den enda som inte är primitiv
Vad kallar man en variabels namn?
En variabels namn kallas identifier.
Vart sparas komlicerade objekt och strängar
Komplicerade värden som objekt och strängar ligger på heapen. Variabeln pekar på det verkliga värdet.
Vad är “stacken”?
The stack is a segment of memory where data like your local variables and function calls get added and/or removed in a last-in-first-out (LIFO) manner.
Vad är “Heapen”
The heap is the segment of memory that is not set to a constant size before compilation and can be controlled dynamically by the programmer. Think of the heap as a “free pool” of memory you can use when running your application.
Beskriv skillnaderna på en referens variabel och en primitiv variabel
En referens variabel pekar till ett annat objekt. En primitiv variabel pekar på ett direkt värde
Vad är ett statement?
Ett statement utgörs endast på 2 sätt.
Sätt nummer ett:
Utgörs av en rad kod som avslutas med ett semikolon. Sätt 2 utgör ett statement av en eller flera rader kod som avslutas med ett block.
Beskriv anatomin av dessa statements
bool isDone;
int heltal = 5;
const float decimalTal = 0.1f;
Exempel 1 är bara en deklaration(eng. Declaration).
Exempel 2 & 3 tilldelar variablerna värden. Kallas assignment.
Vad består ett expression statement av?
Ett Expression statements består ut av en eller fler operander och noll eller fler operators. Nedanför är tre exempel på Expression statements i underskrift:
5 > 4; //Två operander samt en operator blir ett expression statement
i = 5; //En operand samt noll operators blir ett expression statement
((5 + 5) * 10) / 1; //Sex operander samt tre operatorer blir ett expression statement.
Parenteserna är “grouping operands” därmed är de med i räkningen.
Operand Operator
Vad måste ett expression statement returnera?
Ett Expression statement måste även returnera ett resultat som är ett enskild värde, ett objekt, en metod eller ett namespace. Därför är även dessa tre exempel i underskrift expression statements:
float myPrice = GetPrice(); //returnerar ett enskilt float värde, som i sig är en operand
Console.WriteLine(“Hello World”); //returnerar void, en datatyp som representerar inget värde.
Dog myPoodle = GetPoodle(); //returnerar ett objekt (I detta exempel)
För varje uttryck nedan, svara på frågorna:
Vilka datatyper är operanderna? (operand = det som är på sidorna om operatorn)
Vad blir resultatet? Vilken datatyp är resultatet?
1 + 1 1 + "1" 1 + '1' 5 + 5.5 "10" - "5" 2 / 0 15 % 12
true + 1 1 + "'1'" (int)101.01 (string)42 (2 * 3) + 1 2 * (3 + 1)
1 + 1
Blir integern 2. Då int med en + operator adderar värdet på integern med den andra operanden.
1 + “1”
Blir strängen “11” då det inte går att använda en + operator på en integer med en sträng utan att först “Parse’a” strängen. Implicit blir hela uttrycket:
1.ToString() + “1”
1 + ‘1’
Blir integern 50. char datatypen har en representation av nummer för alla karaktärer. ‘1’ har en representation som 49. Summan av 1 och 49 är 50.
- 5 + 5.5
Detta blir en double med värdet 10.5 det görs antagligen då en 10.5. 5.5 har ingen implicit konverting till en int. Utan behövs göras explicit. 5 - “10” - “5”. Båda operanderna är strängar. Och det finns inte en - operator för sträng uttryck. Så detta är olagligt och kompilerar inte. Du får en röd rad under uttrycket
- 2 / 0
Båda typer blir implicit integers. Det är dock olagligt att dela med 0, så detta kompilerar inte. Du får en röd rad under uttrycket - 15 % 12
15 är en integer operand, 12 är en integer operand. % är en operator som finns till integers. Datatypen blir integer. svaret blir 3. Forts. nästa sida.
true + 1
Även om true oftast representeras som 1 i andra C Språk (c/c++) så har true och false ingen siffer representation i c#. Så därför kompileras inte detta uttrycket. Om man vill multiplicera, addera, etc, med true eller false får man göra ett shorthand if statement. (true ? 1 : 0)
1 + “‘1’”
“1’1’” som en sträng. Eftersom ‘1’ är omringat av citattecken så räknas ‘ som en del utav strängen. Implicit blir detta 1.ToString() + “‘1’”
(int) 101.01
101. 01 är en double som vi explicit “typecast’ar” till en int. Detta “rundar” alltid neråt. (Tekniskt sätt avrundas det inte, decimalen tas bort)
- (string)42
integer har ingen typecast till string. För att göra detta måste vi använda en annan metod. t ex 42.ToString(); - (2 * 3) + 1
integer operander, integer operatorer. integer med resultatet 7 då:
(2 * 3) -> 6 + 1 = 7 - 2 * (3 + 1)
integer operander, integer operatorer. integer med resultatet 8 då:
(3 + 1) -> 2 * 4 = 8
Vad är modulo? & vad används det mest till?
Modulo är en matematisk operation som räknar ut talet som blir över efter a är delat med b.
Det är inte särskilt använt förutom när man vill testa ifall ett tal är jämnt eller udda.
Vad är ett block?
Ett block är ett antal statements. Tecknen { och } (curly brackets, blockparentes, måsvingar) avgör var blocket börjar och slutar.
Man behöver bara använda { } om blocket innehåller mer än ett statement.
Vad är ett Scope ?
Man kan ha block inuti andra block. Variabler är bara synliga på lägre nivåer.
{
int x; // högsta nivån, kan använda x
{
int y; // lägre nivå, kan använda x och y
{
int z; // lägsta nivån, kan använda x, y och z
y = 1; // ok!
}
}
y = 2; // inte ok! y är inte synlig här
}
Nämn 2 vanliga kontrollstrukturer
If & Switch statements
Vad är en Enum varför använder man dem?
Enum är en värdetyp definition, som bara kan ha de värden som man anger. Fungerar på samma sätt som bool. En stor fördelen med enums är att de gör programmet lättare att läsa.
Vad är en lokal variabel?
Ett värde som man skriver direkt i koden kallas också för lokala variabler. Exempel:
Variabler som definieras inuti en funktion kallas lokala. De existerar bara i den funktionen. Man kan definiera fält (eng. fields) som är oberoende av en funktion.
Vad används loopar till?
Används för att upprepa det som står i ett block ett viss antal gånger.
Vad är konkatenering & string interpolation? Vad kan man använda dem till?
Det finns flera sätt att skriva ut värdet på en variabel.
Alternativ ett: lägg ihop strängar med variabeln med hjälp av konkatenering.
string result = “The result is: “ + answer + “!”;
Alternativ två: använd string interpolation.
string result = $”The result is: {answer}!”;
Dollartecknet framför strängen talar om att man kan använda blockparenteser för att lägga in värdet på en variabel direkt i strängen.
Vad är ette syntax fel?
Syntax error är när man skriver någonting som inte är korrekt C#. Det finns inga möjligheter för kompilatorn att bygga programmet, utan den rapporterar “syntax error” och ger upp.
Vad är et körfel?
Runtime error är när ett fel inträffar under körning. Det beror på vad olika variabler har för värden för tillfället. Det vanligaste är när man försöker göra något med ett objekt som råkat bli null (senare i kursen) eller misslyckas med att konvertera ett värde till en annan datatyp.
Körfel går ofta inte att förutsäga. Man undviker dem genom att vara lite paranoid. Kontrollera variablernas värden i stället för att hoppas att de är ok.
Exempel:
int x = int.Parse(“fem”);
“Input string was not in a correct format”
Vad är ett logiskt fel?
Ett logiskt fel är när vi har sagt åt datorn att göra något annat än det vi menade. Programmet kan lyckas köra utan att generera några syntaxfel eller körfel.
Logiska fel hittar man oftast genom att man märker att programmet gör fel saker och man börjar titta närmare på det. Några tips för att felsöka:
Skriv ut värdet på varje variabel - även de du är bombsäker på
Använd debug verktygen och följ programmet, det blir uppenbart vart programmet “fastnar”
Reducera komplexitet: kommentera bort saker tills det fungerar igen
Exempel:
for( int x = 1; x < 3; x– ) { } // oändlig loop
Vad är en bugg?
Ordet bug används för att beteckna när ett program inte gör det som det ska. Bug används både för körfel och logiska fel. (syntaxfel hittas tidigare)
Processen att avlägsna buggar kallas debugging, avlusning på svenska.
Inom modern programmering lägger man mycket tid på att undvika buggar.
Vad används felhantering för? Nämn ett par verktyg som går att använda sig av.
Ett sätt att låta användaren veta att något har gått fel är att man visar en felkod eller ett felmeddelande.
Körfel (eng, runtime error) kan hanteras med hjälp av try, catch, throw och finally.
Man kan orsaka ett fel med avsikt genom att använda throw.
När är det användbart?
Exempel:
throw new Exception(“Felmeddelande”);
Om man debuggar i Visual Studio så kommer programmet att pausa som om man hade haft en brytpunkt där.
vad är en array?
En array är en samling(eng. collection) värden av samma datatyp.
En array har en bestämd längd.
nör du vill komma åt ett värde i arrayen vad kallas detta?
Vi säger att vi indexerar när vi vill komma åt ett element i arrayen. Man använder hakperenteser (square brackets), [].
Vad anävnder man mest för att gå igenom en hel array?
Här är två vanliga sätt att loopa igenom en array, med for och med foreach. Variabeln i kallas index. for(int i = 0; i < array.Length; i++ ) { Console.WriteLine( array[i] ); } foreach(var x in array) { Console.WriteLine(x); }
Vad är en multidimensionell array?
En vanlig array har en dimension. Det går att göra arrayer med flera dimensioner: int[,] array = new int[4, 2]; // Skapar en tvådimensionell array med fyra rader och två kolumner int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; var three = array2D[0, 1]; array2D[0, 1] = 33; int[, ,] array1 = new int[4, 2, 3]; // 3d-array
Vad är en funktion?
En funktion är något som har noll eller flera parametrar och kan returnera (skicka tillbaka) ett värde.
Måste definieras innan den kan användas
Anropas i koden, med värden (argument) för varje parameter
Har noll eller flera parametrar
Utför instruktionerna i funktionsblocket { }
Kan returnera ett värde
Används för att undvika upprepningar, strukturera kod, lösa svårare problem
vad menas med implicit och explicit returvärde i en funktion?
static void Funktionsnamn( parametrar ) { // funktionens innehåll, en void-funktion returnerar //implicit, om det inte görs explicit. } static int Funktionsnamn( parametrar ) { return 0; // funktionen returnerar ett värde av typen int } parametr
Finns det alltid en Main Funktion och vad används den till?
När man startar programmet anropas alltid Main först. Man kan skicka med strängvärden till parametern args. Nya funktioner måste definieras “utanför” Main. går att göra i C#