Använd vänsterpil och högerpil för att navigera

Eller Ctrl+P för att skriva ut till PDF (eller på papper)

Idag

Sammanfattning av förra lektionen

Vilka var de viktigaste lärdomarna?

Lektion 4

Komposita datatyper

Klasser och objekt

Samlingar av namngivna värden

Beskriv en person med variabler

  1. string firstName = "Brad";
  2. string lastName = "Pitt";
  3. int age = 53;

Beskriv två personer med variabler

  1. string firstName1 = "Brad";
  2. string lastName1 = "Pitt";
  3. int age1 = 53;
  4. string firstName2 = "Will";
  5. string lastName2 = "Smith";
  6. int age2 = 48;

Gruppera värden per person

  1. Person person1 = new Person {
  2. FirstName = "Brad",
  3. LastName = "Pitt",
  4. Age = 53
  5. };
  6. Person person2 = new Person {
  7. FirstName = "Will",
  8. LastName = "Smith",
  9. Age = 48
  10. };

Egen datatyp för personer

  1. using System;
  2. ...
  3. namespace ConsoleApp {
  4. class Person {
  5. public string FirstName;
  6. public string LastName;
  7. public int Age;
  8. }
  9. class Program {
  10. static void Main(string[] args) {
  11. Person person = ...;
  12. }
  13. }
  14. }

Skapa och använd värden av typen Person

  1. Person person1 = new Person {
  2. FirstName = "Brad",
  3. LastName = "Pitt",
  4. Age = 53
  5. };
  6. Person person2 = new Person {
  7. FirstName = "Will",
  8. LastName = "Smith",
  9. Age = 48
  10. };
  11. bool sameName = person1.FirstName == person2.FirstName;
  12. int ageDifference = person1.Age - person2.Age;

Förändra värden

  1. Person person = new Person {
  2. FirstName = "Brad",
  3. LastName = "Pitt",
  4. Age = 53
  5. };
  6. person.Age = person.Age + 1;
  7. person.LastName = "Svensson";

Arrays

Samlingar av icke-namngivna värden av godtyckligt antal

Ett värde per variabel

  1. int firstScore = 20;
  2. int secondScore = 28;
  3. int thirdScore = 15;
  4. int fourthScore = 49;
  5. int fifthScore = 10;
  6. int numberOfScores = 5;

Gruppera värden i en array

  1. int[] scores = { 20, 28, 15, 49, 10 };
  2. int firstScore = scores[0];
  3. int secondScore = scores[1];
  4. int thirdScore = scores[2];
  5. int fourthScore = scores[3];
  6. int fifthScore = scores[4];
  7. int numberOfScores = scores.Length;

Hitta sista värdet oavsett antal

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int lastScore = ...;

Hitta sista värdet oavsett antal

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int numberOfScores = scores.Length;
  3. int lastScore = scores[numberOfScores - 1];
  4. // eller:
  5. int lastScore = scores[scores.Length - 1];

Summera samtliga värden

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int totalScore = 0;
  3. totalScore += scores[0];
  4. totalScore += scores[1];
  5. totalScore += scores[2];
  6. ...
  7. totalScore += scores[scores.Length - 1];

Summera med while-loop

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int totalScore = 0;
  3. int i = 0;
  4. while (i < scores.Length) {
  5. int number = scores[i];
  6. totalScore += number;
  7. i += 1;
  8. }

Summera med for-loop

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int totalScore = 0;
  3. for (int i = 0; i < scores.Length; i += 1) {
  4. int number = scores[i];
  5. totalScore += number;
  6. }

Summera med foreach-loop

  1. int[] scores = { 20, 28, 15, 49, 10, ... };
  2. int totalScore = 0;
  3. foreach (int number in scores) {
  4. totalScore += number;
  5. }

Förändra värden

  1. int[] scores = { 20, 28, 15, 49, 10 };
  2. scores[0] = 5;
  3. scores[1] = 17;

Strängar

Bokstäver i en sträng

  1. string name = "Jakob";
  2. int numberOfLetters = name.Length;
  3. char firstLetter = name[0];
  4. char secondLetter = name[1];
  5. char thirdLetter = name[2];
  6. char lastLetter = name[name.Length - 1];

Loopa över bokstäver i en sträng

  1. string name = "Jakob";
  2. string spaced = "";
  3. foreach (char letter in name) {
  4. spaced += letter + " ";
  5. }

Strängar eller arrays av tecken?

  1. // vanlig sträng
  2. string name1 = "Jakob";
  3. // konceptuellt likvärdigt
  4. // (men vissa skillnader i praktiken)
  5. char[] name2 = { 'J', 'a', 'k', 'o', 'b' };

Icke-muterbarhet

  1. string name = "Jakob";
  2. // ej möjligt
  3. name[0] = 'X';

Nästlade komposita datatyper

Komposita datatyper i komposita datatyper

Objekt inuti array

  1. class Person {
  2. public string FirstName;
  3. public string LastName;
  4. ...
  5. }
  6. Person[] people = {
  7. new Person { FirstName = "Thorin", ... },
  8. new Person { FirstName = "Balin", ... },
  9. new Person { FirstName = "Kili", ... }
  10. };

Array inuti objekt

  1. class Person {
  2. public string FirstName;
  3. public string LastName;
  4. public string[] Nicknames;
  5. }
  6. Person frank = new Person {
  7. FirstName = "Frank",
  8. LastName = "Sinatra",
  9. Nicknames = new string[] {
  10. "The Voice",
  11. "Ol' Blue Eyes",
  12. "Swoonatra"
  13. }
  14. };

Ännu mer?