Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJonas Lemmens Laatst gewijzigd meer dan 10 jaar geleden
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.