Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet
Te behandelen onderwerpen Strings String data en operatoren Strings in Java Elementaire Controle Structuren Logische operatoren Boolse expressies If-statements Floating-point Notatie
Wat is een String?
Wat is een String in programmeercontext? String literals “John”(‘John’) “Hi there!” “This is John’s apple.” String data type Lijst tekens van variabele lengte String operatoren Combineren of manipuleren Strings Concatenatie, replicatie
Strings in Java String klasse aanwezig in de Java API behoort tot package java.lang java.lang wordt automatisch geïmporteerd String objecten String literals (bijv. “Java rules!”) String variables String str1 = “Java Rules!”, str2; Let op: geen gebruik van new en constructor
Visualisatie String objecten JavaRules!
Constructie van String objecten String str1 = “Java Rules!” ; str1 |J|a|v|a| |R|u|l|e|s|!| String object
String methoden Hoe lang is de string? int l = str1.length(); Welk teken staat op positie 0? char ch = str1.charAt(0); Waar in de string start de substring “Rules” ? int i = str1.indexOf (“Rules”);
String concatenatie Plak str2 achter str1 String strNew = str1 + str2; Verbinding van getallen met strings String str = “Value: ” + i; System.out.println(str + j + k); System.out.println(j + k + str); string object + niet-string object : String str = “Teller waarde: ” + ctr.toString(); String str = “Teller waarde: ” + ctr;
Werken met Strings: Voorbeeld 1 Probleem: dissectie van adressen in naam, domein1 en domein 2 Naam: knking Domein1: edu Domein2: gsu
Voorbeeld 1 oplossing int atIndex = int dotIndex = Address.indexOf(“.”); String name = Address.substring (0, atIndex); String domain2 = Address.substring (atIndex + 1, dotIndex); String domain1 = Address.substring (dotIndex + 1);
Werken met Strings: Voorbeeld 2 public class Star{ public static void main(String[] args){ String name = “Francis Albert Sinatra”; int index1 = name.indexOf(“ ”); int index2 = name.LastIndexOf(“ ”); String str1 = name.substring(0,index1); String str2 = name.substring(index1+1, index1+2); String str3 = name.substring(index2+1); System.out.println(str3 + ”, “ + str1 + “ “ + str2 + “.”); }
Voorwaardelijke instructies if then else Voorwaarden/Testen in programma’s: uitkomst: true / false (boolean type) boolse expressies vergelijkingsoperatoren kleiner dan: kleiner dan of gelijk aan: = gelijk aan: ==niet gelijk aan: !=
Voorbeeld in Java if (acct.getBalance() <= 0.0 ) { System.out.println(“Sorry, no money left.”); } else { System.out.println(“OK, still money left.”); }
George Boole G. Boole, Lincoln. UK,
boolse operatoren OR vegetariërsstudenten
boolse operatoren AND vegetariërsstudenten
boolse operatoren NOT vegetariërsstudenten
boolse operatoren NOT vegetariërsstudenten
Boole bestelt lunch
Boolse operatoren in Java OR: || (isVegetariër(x) || isStudent(x)) AND: && (isVegetariër(x) && isStudent(x)) NOT: ! !(isVegetariër(x)) !(isStudent(x)) ± short circuit evaluation
Controle structuren
Controle structuren in programmeren Basic control structures: if statements while statements for statements
Simple if-statement …… if (banksaldo < 0.0) { System.out.println (“U staat rood.”); } …… boolse expressie inner statement false true
Block of inner statements …… boolean rekeningIsGeblokkeerd = false; if (banksaldo < 0.0) { System.out.println (“U staat rood.”); rekeningIsGeblokkeerd = true; } ……
Complex boolean expression …… boolean rekeningIsGeblokkeerd = false; if (banksaldo ) { System.out.println (“U staat een beetje rood.”); } ……
Testen op (on)gelijkheid …… if (banksaldo == * ) { System.out.println(“Bedenk wel, ”); System.out.println(“geld maakt niet gelukkig.”); } ……
Strings vergelijken …… String inputUser = SimpleIO.readLine(); String password = “Algoritmiek”; if (!inputUser.equals(password)) { System.out.println (“Toegang geweigerd.”); } …… String naam1 = SimpleIO.readLine(); String naam2 = SimpleIO.readLine(); if (naam1.compareTo (naam2) > 0) { System.out.println (naam2); System.out.println (naam1); } ……
Boolean type Directe waardetoekenning passwordIsAccepted = inputUser.equals(password);
If-statement with else-clause …… boolean deurOpen = true; if (!(draagtOverhemd && draagtDas)) { System.out.println (“Sorry. Geen toegang.”); deurOpen = false; } else { System.out.println (“Welkom. Treedt binnen”); ……
De Morgan’s Laws !(draagtOverhemd && draagtDas) !draagtOverhemd || !draagtDas !(draagtOverhemd || draagtDas) !draagtOverhemd && !draagtDas draagtTShirt || draagtTrui
If with else if ( ) { } else { } expr. block 1block 2
Cascaded if-statement expr1 expr2 expr3 expr4
Cascaded if-statement …… if (banksaldo < 0.0) { System.out.println (“Beleggen kunt u wel vergeten.”); } else { if (banksaldo >= 0.0 && banksaldo <= ) { System.out.println (“Raadpleeg onze website voor uw beleggingen.”); } else { if (banksaldo > ) { System.out.println (“Raadpleeg uw personal banker.”); } ……
Complex boolean expressions - De Morgan’s Law - Cascading structure …… if (banksaldo < 0.0) System.out.println (“Beleggen kunt u wel vergeten.”); else if (banksaldo >= 0.0 && banksaldo <= ) System.out.println (“Raadpleeg onze website voor uw beleggingen.”); else if (banksaldo > ) System.out.println (“Raadpleeg uw personal banker.”); ……
Complex boolean expressions …… if (banksaldo < 0.0) System.out.println (“Beleggen kunt u wel vergeten.”); else if (banksaldo <= ) System.out.println (“Raadpleeg onze website voor uw beleggingen.”); else System.out.println (“Raadpleeg uw personal banker.”); ……
Floating numbers
Floating point numbers float: 4 bytes double: 8 bytes long double: 16 bytes Twee aspecten: range precision
Compacte weergave Nationale schuld: $ E12 4.0e12
Floating point notation 142,687 0, * , , * ,011 0, * 2 3 0, , * decimaal binair SIGNMANTISSAEXPONENT