Lektion 07 - Klasser
Gomorron
Skall ta och börja läsa lite om klasser nu.
Om ni undrar vad det är jag läser ifrån så är det just nu från C# Station Tutorial
Tycker det är riktigt bra och förklara på ett bra sätt. Vissa fall kan det kanske vara lite svårt tycker jag för att förstå vissa saker där men då är det bara att googla vidare så hittar man alltid på en himla massa andra förklaringar och exempel.
Skulle det skita sig så frågar jag någon på jobbet helt enkelt :-)
Har i alla fall lyckats binda ihopp 2 stycken "solutions / projects" med varandra genom att länka in dom i en Solution Folder.
Har man redan fördigkompilerade filer så kör man ju bara in dessa dll filer som referenser.
Men har man bara ett par små Solutions som man även enkelt vill komma åt sorucen på så går det att lösa med Solutions Folders som blir som en Virtuell koppling, måste fortfarande lägga till cs filderna i references i din main/program.cs annars funkar det ju inte så bra!
Skall ta och börja läsa lite om klasser nu.
Om ni undrar vad det är jag läser ifrån så är det just nu från C# Station Tutorial
Tycker det är riktigt bra och förklara på ett bra sätt. Vissa fall kan det kanske vara lite svårt tycker jag för att förstå vissa saker där men då är det bara att googla vidare så hittar man alltid på en himla massa andra förklaringar och exempel.
Skulle det skita sig så frågar jag någon på jobbet helt enkelt :-)
Har i alla fall lyckats binda ihopp 2 stycken "solutions / projects" med varandra genom att länka in dom i en Solution Folder.
Har man redan fördigkompilerade filer så kör man ju bara in dessa dll filer som referenser.
Men har man bara ett par små Solutions som man även enkelt vill komma åt sorucen på så går det att lösa med Solutions Folders som blir som en Virtuell koppling, måste fortfarande lägga till cs filderna i references i din main/program.cs annars funkar det ju inte så bra!
Namespaces
Då var det dags att börja läsa lite om namespaces.
Gammle kan och förstår sig på ref!
Man kan ju undra om ordspråket lära gamla hudar att sitta stämmer?
Försökte förstå och lära mig detta med ref parametern i metoder men stirrade mig helt blind på det hela ett bra tag innan jag tror kronan föll ner ordentligt. Min övning skulle då utöva sig på följande sätt.
Lektion 05 del 4-6 (3 olika delar jag nu gått igenom i lektion 5)
4) Skriv ett program som från konsolen möjligör input av ett förnamn. För en variabel x i Main-metoden där du lagrar detta namn.
Skriv även en statisk void-metod som tar en string y som parameter och som till denna y lägger första bokstaven i namnet. Skriv sedan ut x. Fundera lite innan du ser resultatet om vad det bör stå!
Svar: x i detta fall har inte förändrats alls eftersom vi inte har gjort nått med det än. Y kan dessutom inte returneras.
Skulle det gå så skulle y i detta fall skriva ut första bokstaven i det inmatade förnamnet från x.
Program.cs
Console.Write("Please enter your firstname: ");
string x = Convert.ToString(Console.ReadLine());
Console.Write("\nHey there, " + x); //Skriver ut inmatat värde från användaren
Console.ReadLine();
Functions.cs
public void myName(string x)
{
string y = "";
y = x.Substring(0, 1); // Plockar fram första tecknet från värdet i x och kör in det i y.
// return = y //Funkar inte här eftersom man inte kan returnera ett värde i en void.
}
5) Använd ovanstående program men ändra i metoden så att första bokstaven tilldelas variabeln x istället. Skriv sedan ut x. Fundera på innan vad det borde stå!
Svar: Ändringen som behöver göras är att ändra void till sträng och returnera x.
Functions.cs
public void myName(string x)
{
string y = "";
y = x.Substring(0, 1);
x = y;
return x;
}
6) Använd ovanstående program men ändra i metodens parameteruppsättning så att inparametern är en referens (nyckelordet: ref). Fundera på innan vad det bör stå!
Svar: Om allt funkar som det skall borde resultatet bli första tecknet/bokstaven i förnamnet.
Program.cs
Console.Write("Please enter your firstname: ");
string x = Convert.ToString(Console.ReadLine());
Console.Write("\nHey there, " + x); //Skriver ut inmatat värde från användaren
FredrikBLL.BLL.Functions functions = new FredrikBLL.BLL.Functions(); // Skapar ett nytt objekt functions
functions.myName(ref x);
Console.WriteLine("\nYour names first letter is: " + x); //Returnerat värde från myPublicName
Console.ReadLine();
Functions.cs
public void myName(ref string x)
{
string y = "";
y = x.Substring(0, 1);
x = y;
}
Resultatet:

Kommer nu att fortsätta med sista i detta som är del 7.
7) Använd ovanstående program men ändra i metoden så att första bokstaven tilldelas variabeln y istället.
Skriv sedan ut x. Fundera....
Svar: Svaret blir ...... Det inmatade värdet!
Please enter your firstname: Fredrik
Hey there, Fredrik
Your names first letter is: Fredrik
Försökte förstå och lära mig detta med ref parametern i metoder men stirrade mig helt blind på det hela ett bra tag innan jag tror kronan föll ner ordentligt. Min övning skulle då utöva sig på följande sätt.
Lektion 05 del 4-6 (3 olika delar jag nu gått igenom i lektion 5)
4) Skriv ett program som från konsolen möjligör input av ett förnamn. För en variabel x i Main-metoden där du lagrar detta namn.
Skriv även en statisk void-metod som tar en string y som parameter och som till denna y lägger första bokstaven i namnet. Skriv sedan ut x. Fundera lite innan du ser resultatet om vad det bör stå!
Svar: x i detta fall har inte förändrats alls eftersom vi inte har gjort nått med det än. Y kan dessutom inte returneras.
Skulle det gå så skulle y i detta fall skriva ut första bokstaven i det inmatade förnamnet från x.
Program.cs
Console.Write("Please enter your firstname: ");
string x = Convert.ToString(Console.ReadLine());
Console.Write("\nHey there, " + x); //Skriver ut inmatat värde från användaren
Console.ReadLine();
Functions.cs
public void myName(string x)
{
string y = "";
y = x.Substring(0, 1); // Plockar fram första tecknet från värdet i x och kör in det i y.
// return = y //Funkar inte här eftersom man inte kan returnera ett värde i en void.
}
5) Använd ovanstående program men ändra i metoden så att första bokstaven tilldelas variabeln x istället. Skriv sedan ut x. Fundera på innan vad det borde stå!
Svar: Ändringen som behöver göras är att ändra void till sträng och returnera x.
Functions.cs
public void myName(string x)
{
string y = "";
y = x.Substring(0, 1);
x = y;
return x;
}
6) Använd ovanstående program men ändra i metodens parameteruppsättning så att inparametern är en referens (nyckelordet: ref). Fundera på innan vad det bör stå!
Svar: Om allt funkar som det skall borde resultatet bli första tecknet/bokstaven i förnamnet.
Program.cs
Console.Write("Please enter your firstname: ");
string x = Convert.ToString(Console.ReadLine());
Console.Write("\nHey there, " + x); //Skriver ut inmatat värde från användaren
FredrikBLL.BLL.Functions functions = new FredrikBLL.BLL.Functions(); // Skapar ett nytt objekt functions
functions.myName(ref x);
Console.WriteLine("\nYour names first letter is: " + x); //Returnerat värde från myPublicName
Console.ReadLine();
Functions.cs
public void myName(ref string x)
{
string y = "";
y = x.Substring(0, 1);
x = y;
}
Resultatet:

Kommer nu att fortsätta med sista i detta som är del 7.
7) Använd ovanstående program men ändra i metoden så att första bokstaven tilldelas variabeln y istället.
Skriv sedan ut x. Fundera....
Svar: Svaret blir ...... Det inmatade värdet!
Please enter your firstname: Fredrik
Hey there, Fredrik
Your names first letter is: Fredrik
Check if int
Har just blivit klar med ett program som kontrollerar om ett värde är ett heltal eller ej.

Lektionen:
Skriv ett program som möjliggör input av ett heltal. Skriv en metod som svarar med ett boolskt värde hurvida det är ett heltal. Meddela användaren svaret.
Kan ju börja med att berätta a tt ett boolskt värde är sant eller falskt (true/false, 1/0).
Så det hela skall då kolla om värdet man skriver in är ett heltal (integer) och om det är det skall värdet då blir true.
Program.cs
Console.Write("Enter a number or someting: ");
string value = Convert.ToString(Console.ReadLine());
bool output;
FredrikBLL.BLL.Functions functions = new FredrikBLL.BLL.Functions();
output = functions.IntOrNot(value);
Console.WriteLine("The value you entered was: " + value + "\nIs this an integer? " + output);
Console.ReadLine();
Functions.cs
/// <summary>
/// Kollar in invärdet (value) är ett heltal eller ej
/// </summary>
/// <param name="value">invärde</param>
/// <returns>returenrar true eller false beror på om invärde är en integer/heltal.</returns>
public bool IntOrNot(string value)
{
try
{
int tempvalue = Convert.ToInt32(value); // Försöker omvandla value till en INT om det ej går blir det en catch
return true;
}
catch (FormatException) { // möter inte upp parametern för ett intvärde och returnerar då false
return false;
}
Exempel med heltal:
Enter a number or someting: 3123123
The value you entered was: 3123123
Is this an integer? True
Exempel med övrig inmatning:
Enter a number or someting: 323g3r2323t33tgh
The value you entered was: 323g3r2323t33tgh
Is this an integer? False

Lektionen:
Skriv ett program som möjliggör input av ett heltal. Skriv en metod som svarar med ett boolskt värde hurvida det är ett heltal. Meddela användaren svaret.
Kan ju börja med att berätta a tt ett boolskt värde är sant eller falskt (true/false, 1/0).
Så det hela skall då kolla om värdet man skriver in är ett heltal (integer) och om det är det skall värdet då blir true.
Program.cs
Console.Write("Enter a number or someting: ");
string value = Convert.ToString(Console.ReadLine());
bool output;
FredrikBLL.BLL.Functions functions = new FredrikBLL.BLL.Functions();
output = functions.IntOrNot(value);
Console.WriteLine("The value you entered was: " + value + "\nIs this an integer? " + output);
Console.ReadLine();
Functions.cs
/// <summary>
/// Kollar in invärdet (value) är ett heltal eller ej
/// </summary>
/// <param name="value">invärde</param>
/// <returns>returenrar true eller false beror på om invärde är en integer/heltal.</returns>
public bool IntOrNot(string value)
{
try
{
int tempvalue = Convert.ToInt32(value); // Försöker omvandla value till en INT om det ej går blir det en catch
return true;
}
catch (FormatException) { // möter inte upp parametern för ett intvärde och returnerar då false
return false;
}
Exempel med heltal:
Enter a number or someting: 3123123
The value you entered was: 3123123
Is this an integer? True
Exempel med övrig inmatning:
Enter a number or someting: 323g3r2323t33tgh
The value you entered was: 323g3r2323t33tgh
Is this an integer? False
Lektion 05 - Metoder
Så har man läst en hel del om metoder och det var ju inte så himla mycket nytt egentligen.
Men nu har jag lekt en massa med det hela och första lektionen var då:
Skriv ett program som från konsolen möjliggör input av 2-4 tal som är kommaseparerade.
Skriv sedan tre statiska metoder, som alla har samma namn, som tar 2, 3 respektive 4 parametrar in och som returnerar summan av dessa (addera) och skriv sedan ut summan till användaren.
Anger användaren 2,2 (2 värden) så skall metoden med 2 parametrar anropas osv.
En lösning som jag fick lite hjälp med dock men som funkar riktigt ok är följande.
Program.cs
Console.Write("Ange 2-4 värden som är kommaseparerade (ex. 3,8,2,1): ");
string input = Convert.ToString(Console.ReadLine());
Console.WriteLine("Det värde du matade in är: \n");
Console.Write(input + "\n\n");
Console.Write("Vänligen vänta så anropar vi rätt metod........\n");
string output = FredrikBLL.BLL.Functions.myValuesMain(input);
Console.WriteLine("Resultatet:\n" + Convert.ToString(output));
Console.ReadLine();
Functions.cs
/// <summary>
/// HuvudMetonden som kommer att anropa under metoder beroende på antalet angivna värden med kommaseparationer.
/// </summary>
/// <param name="value1">Parameter 1 / Tal 1</param>
/// <param name="value2">Parameter 2 / Tal 2</param>
/// <param name="value3">Parameter 3 / Tal 3</param>
/// <param name="value4">Parameter 4 / tal 4</param>
/// <returns>Returnerar vilken metod som returnerar ett svar.</returns>
public static string myValuesMain(string input)
{
string output = "";
string[] inArray = input.Split(new char[] { ',' });
if (inArray.Length == 2)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]));
return returnvalue;
}
else if (inArray.Length == 3)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]), Convert.ToInt32(inArray[2]));
return returnvalue;
}
else if (inArray.Length == 4)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]), Convert.ToInt32(inArray[2]), Convert.ToInt32(inArray[3]));
return returnvalue;
}
else
{
return output = "Hittade inget passande";
}
}
public static string myValues(int value1, int value2)
{
int returnvalue = Convert.ToInt32(value1 + value2);
return Convert.ToString("Metod med 2 värden anropades.\nSumman av " + value1 + "+" + value2 + "=" + returnvalue);
}
public static string myValues(int value1, int value2, int value3)
{
int returnvalue = Convert.ToInt32(value1 + value2 + value3);
return Convert.ToString("Metod med 3 värden anropades.\nSumman av " + value1 + "+" + value2 + "+" + value3 + "=" + returnvalue);
}
public static string myValues(int value1, int value2, int value3, int value4)
{
int returnvalue = Convert.ToInt32(value1 + value2 + value3 + value4);
return Convert.ToString("Metod med 4 värden anropades.\nSumman av " + value1 + "+" + value2 + "+" + value3 + "+" + value4 + "=" + returnvalue);
}
Exempel:
Ange 2-4 värden som är kommaseparerade (ex. 3,8,2,1): 2,3,5,9
Det värde du matade in är:
2,3,5,9
Vänligen vänta så anropar vi rätt metod........
Resultatet:
Metod med 4 värden anropades.
Summan av 2+3+5+9=19
Men nu har jag lekt en massa med det hela och första lektionen var då:
Skriv ett program som från konsolen möjliggör input av 2-4 tal som är kommaseparerade.
Skriv sedan tre statiska metoder, som alla har samma namn, som tar 2, 3 respektive 4 parametrar in och som returnerar summan av dessa (addera) och skriv sedan ut summan till användaren.
Anger användaren 2,2 (2 värden) så skall metoden med 2 parametrar anropas osv.
En lösning som jag fick lite hjälp med dock men som funkar riktigt ok är följande.
Program.cs
Console.Write("Ange 2-4 värden som är kommaseparerade (ex. 3,8,2,1): ");
string input = Convert.ToString(Console.ReadLine());
Console.WriteLine("Det värde du matade in är: \n");
Console.Write(input + "\n\n");
Console.Write("Vänligen vänta så anropar vi rätt metod........\n");
string output = FredrikBLL.BLL.Functions.myValuesMain(input);
Console.WriteLine("Resultatet:\n" + Convert.ToString(output));
Console.ReadLine();
Functions.cs
/// <summary>
/// HuvudMetonden som kommer att anropa under metoder beroende på antalet angivna värden med kommaseparationer.
/// </summary>
/// <param name="value1">Parameter 1 / Tal 1</param>
/// <param name="value2">Parameter 2 / Tal 2</param>
/// <param name="value3">Parameter 3 / Tal 3</param>
/// <param name="value4">Parameter 4 / tal 4</param>
/// <returns>Returnerar vilken metod som returnerar ett svar.</returns>
public static string myValuesMain(string input)
{
string output = "";
string[] inArray = input.Split(new char[] { ',' });
if (inArray.Length == 2)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]));
return returnvalue;
}
else if (inArray.Length == 3)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]), Convert.ToInt32(inArray[2]));
return returnvalue;
}
else if (inArray.Length == 4)
{
string returnvalue = myValues(Convert.ToInt32(inArray[0]), Convert.ToInt32(inArray[1]), Convert.ToInt32(inArray[2]), Convert.ToInt32(inArray[3]));
return returnvalue;
}
else
{
return output = "Hittade inget passande";
}
}
public static string myValues(int value1, int value2)
{
int returnvalue = Convert.ToInt32(value1 + value2);
return Convert.ToString("Metod med 2 värden anropades.\nSumman av " + value1 + "+" + value2 + "=" + returnvalue);
}
public static string myValues(int value1, int value2, int value3)
{
int returnvalue = Convert.ToInt32(value1 + value2 + value3);
return Convert.ToString("Metod med 3 värden anropades.\nSumman av " + value1 + "+" + value2 + "+" + value3 + "=" + returnvalue);
}
public static string myValues(int value1, int value2, int value3, int value4)
{
int returnvalue = Convert.ToInt32(value1 + value2 + value3 + value4);
return Convert.ToString("Metod med 4 värden anropades.\nSumman av " + value1 + "+" + value2 + "+" + value3 + "+" + value4 + "=" + returnvalue);
}
Exempel:
Ange 2-4 värden som är kommaseparerade (ex. 3,8,2,1): 2,3,5,9
Det värde du matade in är:
2,3,5,9
Vänligen vänta så anropar vi rätt metod........
Resultatet:
Metod med 4 värden anropades.
Summan av 2+3+5+9=19
Autoformatering av kod i Visual Studio 2010
Autoformatering i Visual Studio 2010 är en bra funktion.
Bra funktion som jag använder på tok för lite!
- Håll ner CTRL och tryck sedan på K sedan D
Bra funktion som jag använder på tok för lite!
Får får inte lamm får foreach-loop
Då var det dags för lite ForEach-Loopar.
Behövde inte testa många gånger nu för att få detta rätt vilket jag vart riktigt glad över.
Inser att jag kanske börjar förstå en hel del...
Förklaring:
Skriv ett program som från konsolen möjliggör input av x antal kommaseparerade tal.
Skriv ut dessa värden på en egen rad med hjälp av en foreach-loop.
Koden i Program.cs
public static void Main(string[] args)
{
Console.Write("Ange ett antal siffror, separera med komma tecken!: ");
string input = Convert.ToString(Console.ReadLine());
Console.WriteLine("Orginal inmatade värden:\n{0}\n", input);
string output = FredrikBLL.BLL.Functions.myForEachLoop(input);
Console.WriteLine("Resultatet:\n" + output);
Console.ReadLine();
}
Koden i Functions.cs
/// <summary>
/// Returnerar värden mellan , på varje rad istället.
/// Ex. Inmatat värde = 1,2,3,4,5
/// Resultat:
/// 1
/// 2
/// 3
/// 4
/// 5
/// </summary>
/// <param name="input">siffror med , separator</param>
/// <returns>returnerar en rad med inmatade siffror som har varit , separerade.</returns>
public static string myForEachLoop(string input)
{
string output = "";
string[] values = input.Split(new char[] {','});
foreach(string value in values)
{
output += "\n" + value;
}
return output;
}
Behövde inte testa många gånger nu för att få detta rätt vilket jag vart riktigt glad över.
Inser att jag kanske börjar förstå en hel del...
Förklaring:
Skriv ett program som från konsolen möjliggör input av x antal kommaseparerade tal.
Skriv ut dessa värden på en egen rad med hjälp av en foreach-loop.
Koden i Program.cs
public static void Main(string[] args)
{
Console.Write("Ange ett antal siffror, separera med komma tecken!: ");
string input = Convert.ToString(Console.ReadLine());
Console.WriteLine("Orginal inmatade värden:\n{0}\n", input);
string output = FredrikBLL.BLL.Functions.myForEachLoop(input);
Console.WriteLine("Resultatet:\n" + output);
Console.ReadLine();
}
Koden i Functions.cs
/// <summary>
/// Returnerar värden mellan , på varje rad istället.
/// Ex. Inmatat värde = 1,2,3,4,5
/// Resultat:
/// 1
/// 2
/// 3
/// 4
/// 5
/// </summary>
/// <param name="input">siffror med , separator</param>
/// <returns>returnerar en rad med inmatade siffror som har varit , separerade.</returns>
public static string myForEachLoop(string input)
{
string output = "";
string[] values = input.Split(new char[] {','});
foreach(string value in values)
{
output += "\n" + value;
}
return output;
}
FÅR LOOP?!
Bääääähäähääää? Nej så var det nog inte men nu har jag börjat med att förstå olika loop satser.
Lektion 4 är det jag håller på med nu.
Exempel på min kod:
Console.WriteLine("Mata in ett värde: ");
int input = Convert.ToInt32(Console.ReadLine());
int i = 1;
int r = 1;
for (; r <= input; i = r * r)
{
if (r > input)
break;
if (i * i == 0)
continue;
Console.Write("{0}, {1} * {1}\n", i, r++);
}
Console.WriteLine();
Console.ReadLine();
Resultatet:
Mata in ett värde: 4
1, 1 * 1
4, 2 * 2
9, 3 * 3
16, 4 * 4
Vad var tänken här?
Skriv ett program som från konsolen har en input av ett numeriskt värde.
Skriv sedan ut kvadraten av alla siffror från och med 1 till och med det angivna inmatade värdet med kommaseparering och denna måste använda en for-loop.
Så kan det vara, satt och försökte luska ut hur detta skulle gå till ganska läge måste jag säga.
Men så kom lunchen och jag fick annat att tänka på en kort sväng och efter det så visste jag tydligen direkt hur jag skulle lösa det hela!
Lektion 4 är det jag håller på med nu.
Exempel på min kod:
Console.WriteLine("Mata in ett värde: ");
int input = Convert.ToInt32(Console.ReadLine());
int i = 1;
int r = 1;
for (; r <= input; i = r * r)
{
if (r > input)
break;
if (i * i == 0)
continue;
Console.Write("{0}, {1} * {1}\n", i, r++);
}
Console.WriteLine();
Console.ReadLine();
Resultatet:
Mata in ett värde: 4
1, 1 * 1
4, 2 * 2
9, 3 * 3
16, 4 * 4
Vad var tänken här?
Skriv ett program som från konsolen har en input av ett numeriskt värde.
Skriv sedan ut kvadraten av alla siffror från och med 1 till och med det angivna inmatade värdet med kommaseparering och denna måste använda en for-loop.
Så kan det vara, satt och försökte luska ut hur detta skulle gå till ganska läge måste jag säga.
Men så kom lunchen och jag fick annat att tänka på en kort sväng och efter det så visste jag tydligen direkt hur jag skulle lösa det hela!