guy sitting under bridge

Vi är alla likadana

Dagen då jag kunde resa tillbaka till min egen tid närmade sig allt mer. Tills den dagen kom, bestämde jag mig för att lära mig så mycket jag kunde från denna olyckliga framtid.

Jag bestämde mig för att försöka hitta den skumma mannen från C-gänget igen. Nu när jag hade en bättre förståelse för programmering i allmänhet, hade jag en känsla av att han fortfarande hade kunskaper som skulle hjälpa till att bredda min utbildning.

Jag hittade honom nära den gamla bron, kodande något på sin laptop. Det här började bli en bekant syn - alla i den här världen kodade alltid något.

Jag började prata den här gången. "Hej, minns du mig?"

"Så klart! Du är den där nybörjaren från motståndsbasen. Hur går det med din kod? Ny bugg varje dag va, grabben?" sa han med ett skratt.

"Jag har faktiskt lärt mig mycket den senaste månaden." sa jag. "Jag kan konsolinmatning, for och while loopar, .Net framework struktur... och en massa andra saker. Jag är inte en nybörjare längre!"

".Net frame -vadå? Vad är det här för trams? Du vet, grabben, jag bryr mig inte. Du måste vara försiktig med förbjuden kunskap, grabben, maskinerna kan straffa dig om de tror att du gräver för djupt."

"Inga bekymmer med maskinerna", sa jag stolt. "Jag har skaffat en vän bland dem!"

"Vad sa du?!" svarade han förvånat, stängde sin laptop och riktade all sin uppmärksamhet mot mig.

"Sa du att du har en vän bland maskinerna? Är du galen? Hur kan du fortfarande vara vid liv, grabben? En bättre fråga är kanske varför - är du på deras sida nu? Håll dig borta, grabben! Jag vill inte ha några problem."

"Ta det lugnt nu!" svarade jag och insåg att jag kanske hade avslöjat för mycket. Men nu var jag i alla fall tillräckligt insyltad så jag kunde lika gärna berätta hela historien för den här främlingen. "Den här maskinen är trasig, och den älskar mänskligheten. Den kopplades bort från GMN (Global Machine Network) och flyttades in i basen. Den här maskinen är inte farlig."

"Den kan ljuga för dig", sa mannen, "jag har hört talas om maskiner som låtsas vara frånkopplade från deras nätverk, grabben. Har du kontrollerat det? Det finns en array av nummer som du kan ge till en maskin och be den att göra lite matte på dessa siffror. Om den gör det, kan du lita på den maskinen. Det här testet utvecklades 2085, i början av kriget, av en smart kvinna som hette Lillian. Det finns någon sorts dold logik som hindrar onda maskiner från att klara det här testet. För att tillämpa det behöver du ha kunskap om arrays. Har du det?"

"Inte alls." svarade jag. Diskussionen hittills hade varit ganska hetsig, men det såg ut som om min plan att lära mig något nytt fortfarande fungerade.

"Okej då! Lyssna nu, grabben!"

arrays joke

Arrayer

buildings with boxes

"När du var elev i skolan, hade dina lärare en lista över alla elever i klassen tillsammans med deras betyg?" frågade mannen.

"Ja" svarade jag.

"Ja, grabben! Då förstår vi varandra. Inom programmering använder du en array datastruktur för att lagra flera variabler av samma typ. För att skapa en array av integers, använder du nyckelordet new och anger typen, namnet och storleken på arrayen."

int[] studentMarks = new int[10];

"Det fungerar också om arrayens storlek är en variabel." lade han till.

int studentsCount = 10;
int[] studentMarks = new int[studentsCount];

"Är det en lista med 10 integers?" frågade jag och pekade på hans laptop.

"Exakt! I minnet skulle det se ut ungefär så här." sa han och ritade en snabb skiss.

"Att skapa denna array är detsamma som att skapa 10 int variabler." förklarade mannen.

"Hm... intressant." sa jag och tog in det. " För att skapa en array behöver jag deklarera en typ av element, sedan lägga till [], sedan ange ett namn och tilldela det en ny array med storleken inuti. Ganska mycket att komma ihåg."

"Ett till sak, grabben. Efter att du skapat en array, fylls den först med ett standardvärde av dess typ. Standardvärdet för int är 0, vilket är varför arrayen jag visade dig var fylld med nollor ."

"Förstått." sa jag. "Men hur fyller jag en array med värden som inte är 0?"

"För att komma åt någon cell i arrayen behöver du ange cellens index. Indexering av arrayer i C# börjar med 0 och ökar med 1 för varje nästa nästkommande cell. Till exempel skapar den här koden en array med 10 tal, och tilldelar sedan 99 till den första arraycellen":

int[] studentMarks = new int[10];
studentMarks[0] = 99;

"I minnet ser den här arrayen ut så här":

array fill 1

"Hänger du med, grabben?" frågade främlingen och lade till på ett nedlåtande sätt, "Eller lär de dig inte så komplicerade saker i din motståndsbas?"

"Jag hänger med alldeles utmärkt." sa jag. "Fortsätt."

"Följande kod fyller alla celler i arrayen med olika värden. Den efterföljande arrayen i minnet visas nedan."

int[] studentMarks = new int[10];
studentMarks[0] = 99;
studentMarks[1] = 63;
studentMarks[2] = 54;
studentMarks[3] = 12;
studentMarks[4] = 33;
studentMarks[5] = 88;
studentMarks[6] = 72;
studentMarks[7] = 67;
studentMarks[8] = 94;
studentMarks[9] = 5;
array fill 2

"Det finns också ett snabbare sätt att skapa en array om du känner till alla värden vid tidpunkten för dess skapande. Följande rad kod gör exakt samma sak som koden i föregående exempel":

int[] studentMarks = new int[10] { 99, 63, 54, 12, 33, 88, 72, 67, 94, 5 };

"Wow, det är mycket snabbare!" sa jag.

"Ja", svarade mannen, "jag gillar också den här mer."

"Kan du visa mig hur man läser värden från arrayen?" frågade jag.

"Inga problem, grabben! För att läsa värden från arrayen måste du ange indexet för cellen du vill läsa efter arraynamnet, på samma sätt som du gjorde när du skrev värden till arrayen ."

int[] studentMarks = new int[10] { 99, 63, 54, 12, 33, 88, 72, 67, 94, 5 };
Console.WriteLine(studentMarks[1]);
// Outputs: 63
int[] studentMarks = new int[10] { 99, 63, 54, 12, 33, 88, 72, 67, 94, 5 };
int copyOfSecondElement = studentMarks[1];
Console.WriteLine(copyOfSecondElement);
// Outputs: 63
array joke 2

"Tuffa personer brukar använda arrays i loopar." sa mannen och började briljera. "Titta här - jag har skrivit ett program som läser antalet studenter från konsolen, skapar sedan en array av studenternas betyg och fyller i det med 10 i förväg, eftersom varje student börjar med 10 poäng. I slutet skriver programmet ut poängen för varje student", sa han och visade mig skärmen på sin laptop.

int studentsCount = int.Parse(Console.ReadLine());
int[] studentMarks = new int[studentsCount];

for(int i = 0; i < studentsCount; ++i)
{
    studentMarks[i] = 10;
}

for(int i = 0; i < studentsCount; ++i)
{
    Console.WriteLine(studentMarks[i]);
}
dynamic arrays in the future

"Bra jobbat! Du kan också skapa arrayer av olika typer och arbeta med dem på samma sätt som du gör med int arrays, så här":

double[] myDoubleArray = new double[5];
myDoubleArray[2] = 2.15;

float[] myfloatArray = new float[5];
myfloatArray[2] = 2.15f;

string[] myStringArray = new string[5];
myStringArray[3] = "Hello!";

char[] myCharArray = new char[5];
myCharArray[1] = 'a';

"För att få längden på en array, kan du läsa dess Length egenskap. Till exempel, om du har skapat en array myArray av längden 5, då returnerar myArray.Length ett värde av 5. Detta kan vara användbart om någon annan skapar en array av data, vilken du sedan tar in i ditt program, men inte vet vad storleken på arrayen var när den skapades.

"Jag måste gå, vi ses, grabben!" sa främlingen plötsligt. "Lös alla dessa uppgifter och ta hand om dig, vi kanske ses igen!"

double[] myArray = new double[5];
Console.WriteLine(myArray.Length);
// Outputs: 5