De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 9.3-4 Strings en arrays. Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden.

Verwante presentaties


Presentatie over: "Hoofdstuk 9.3-4 Strings en arrays. Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden."— Transcript van de presentatie:

1 Hoofdstuk 9.3-4 Strings en arrays

2 Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden false, true nchar losse symbolen’A’, ’B’, ’Z’, ’a’, ’4’, ’#’, ’:’

3 string versus char nstringchar nklasseprimitief type nobject-verwijzingdirecte waarde nnul, een of meer…precies één symbool n"" "A" "hello" ’A’ noperatoren, methoden properties, indexeroperatoren u==, +==, +, <= uSubstring, ToUpper uLength us[i]

4 String-methodes nint Length nboolEquals(string s) nstringConcat(string s) nstringSubstring(int start) nstringSubstring(int start, int eind) nstringToUpper( ) nstringToLower( )

5 concat en substring nString s, t, u, v, w; ns = “ham”; nt = “burger”; nu = s.Concat(t); nv = u.Substring(3); nw = u.Substring(3, 7); s t u v w hamburger hamburger burger burg hamburger 012345678 s + t ; “van en met” “tot en zonder”

6 Publieksvraag nSchrijf een methode Beginstuk met twee string-parameters x en y die bepaalt of x het beginstuk van y is nSchrijf een methode Onderdeel met twee string-parameters x en y die bepaalt of x ergens als substring van y voorkomt

7 Methode Beginstuk (string x, string y)boolpublic static kortlang {}{} y. Substring( 0, x.Length ) x == return ; Beginstuk

8 Methode Onderdeel (string x, string y)boolpublic static {}{} Onderdeel y. Substring(t) Beginstuk(x, ) if ( ) return true; for (t=0; t<y.Length; t++) return false; int t;

9 Meer string-methodes nboolStartsWith(string s) nboolEndsWith(string s) nintindexOf(string s) public static bool Onderdeel(string x, string y) { return y.IndexOf(x)>=0 ; }

10 string versus array nKlassen Type met speciale syntax nSpeciale index-notatie string s = new string();char[] a = new char[10]; c = a[2];a[3] = c; nSpeciale quote-notatie s = "hallo"; nProperty a.Length nProperty s.Length nMethoden s.Substring(3,5); s.IndexOf(t); nIndexer -notatie c = s[2];s[3] = c;

11 Publieksvraag n//schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string n//voorbeeld-aanroep: int n; n = Demo. Freq(’e’, "some text" ); n// hint: gebruik een for opdracht

12 Tel symbool-frequentie public static int Freq(char x, string s) { s[t]==x for (int t=0; t<s.Length; t++) if ( ) aantal++; int aantal; aantal = 0; return aantal; }

13 IBM/DOS Geschiedenis van char n1970s:6 bits = 64 symbols 26 letters, 10 digits, 28 leestekens n1980s: 7 bits = 128 symbols +26 lowercase, +5 leestekens, 33 control n1990s: 8 bits = 256 symbols +letters met accenten n2000s: 16 bits = 65536 symbols +Grieks, Cyrillisch, Japans, Devangari,... ASCII ANSI/ISO Unicode

14 Character coding code 0 code 127 code 48 code 32 code 65 code 97

15 char bijzonderheden nalfabetisch geordend char c; if ( ’A’<=c && c<=’Z’ ) … nconverteerbaar naar int int n; n = c + 32; nen terug c = (char) n;

16 Conversies nConversie naar “grotere” waarde kan altijd double d; int n; d = n; int n; char c; n = c; Control x; Button b; x = b; nConversie naar “kleinere” waarde is gevaarlijk n = (int) d;c = (char) n;b = (Button) x;

17 twee tekens in de broncode, toch één character! Speciale char-waarden nLetterlijk symbool nSpeciaal symbool nHet quote-symbool nHet backslash-symbool ’A’ ’\n’ ’\’’ ’\\’ ’&’ ’\t’ ’\”’

18 LetterTeller TextBox invoer Label uitvoer StaafDiagram diagram class LetterTeller : Form class StaafDiagram : UserControl class TurfTab

19 Letterteller hoofdklasse class LetterTeller : Form { } TextBox invoer; Label uitvoer; StaafDiag diagram; LetterTeller() { invoer = new TextBox(); invoer.MultiLine = true; uitvoer = new Label(); diagram = new StaafDiag(); } invoer. TextChanged += this.bereken; void Bereken(object o, EventArgs ea) { } TurfTab tabel = new TurfTab(); invoer.Text tabel.Turf ( ); tabel.ToString() uitvoer.Text = ; tabel.Waardesdiagram.Waardes =;

20 De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; public TurfTab ( ){... } public void Turf (string s){... } override public string ToString ( ) {... } private void turf (char c){... } } klasse-ontwerp: wat is... & wat kan... & hoe? public int Totaal {... } public int Waardes{... }

21 De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; public TurfTab ( ) { } tellers = new int [26]; } public void Turf (string s) { } this.turf ( s[t] ); for (t=0; t<s.Length; t++) int t;

22 public class TurfTab { private int [ ] tellers; private int totaal; De klasse TurfTab private void turf (char c) { } tellers [ ] ++; totaal++; } if (c>='A' && c<='Z') { } c - 'A' if (c>='a' && c<='z') { tellers [ c - 'a' ] ++; totaal++; }

23 public class TurfTab { private int [ ] tellers; private int totaal; t + ":" + tellers[t] + "keer\n" ; De klasse TurfTab override public string ToString( ) { } } string result; return result; result = ""; result += for (t=0; t<26; t++) int t; result += "totaal:" + totaal; ( + 'A')(char)

24 public class TurfTab { private int [ ] tellers; private int totaal; De klasse TurfTab } public int Totaal { } een eigen property! get { } set { } return totaal; totaal = value; "mini- methodes"

25 public class TurfTab { private int [ ] tellers; private int totaal; De klasse TurfTab } public int Totaal { } een eigen property! get { } set { } return totaal; totaal = value; "mini- methodes" geen set-minimethode: read-only property

26 public class TurfTab { private int [ ] tellers; private int totaal; De klasse TurfTab } public float Gemiddelde { } get { } return (float)totaal / tellers.Length; get mag ook nog rekenwerk doen public int[] Waardes { } get { } return tellers.Clone(); geef een kopie van de private array

27 alleen set-minimethode: write-only property public class StaafDiag : UserControl { De klasse StaafDiag } public StaafDiag() { this.Paint += this.teken; } private void teken(object o, PEA pea) { } //...FillRectangle...waardes... private int[] waardes; public int[] Waardes { } set { } this.waardes = value; this.Invalidate(); wie de property verandert, forceert een Paint

28 public class StaafDiag : UserControl { De klasse StaafDiag } private void teken(object o, PEA pea) { private int[] waardes; } pea.Graphics.FillRectangle( for (int t=0; t<waardes.Length; t++) Brushes.Blue, 0, t * balkH, balkU * this.waardes[t], balkH-1 ); float balkH = this.Height / waardes.Length; float balkU = this.Width / max; int max= Bieb.Grootste(max); if (max<10) max = 10;

29 naamtype void () blok parameters methode member

30 naamtype void operator op () blok parameters methode member

31 naamtype void operator op () blok parameters naam()parameters methode constructor member

32 naamtype base void operator op () blok parameters naam()parameters ()expressie, this : methode constructor member

33 naamtype base void operator op () blok parameters naam()parameters ()expressie, this : methode constructor naamtype, =initialisatieconst ; veld member

34 naamtype base void operator op () blok parameters naam()parameters ()expressie, this : methode constructor naamtype, =initialisatieconst ; veld naamtype{}blok set get member property

35 naamtype base void operator op () blok parameters naam()parameters ()expressie, this : methode constructor naamtype, =initialisatieconst ; veld naamtype{}blok set get typeparameters[]this indexer member property


Download ppt "Hoofdstuk 9.3-4 Strings en arrays. Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden."

Verwante presentaties


Ads door Google