Algoritmiek

advertisement
Algoritmiek
Strings & Stringmanipulaties;
Controle Structuren;
Floating-point notation.
Hoorcollege 4 - Ma. 25 sept. 2006
L.M. Bosveld-de Smet
Te behandelen onderwerpen

Strings



Elementaire Controle Structuren




String data en operatoren
Strings in Java
Logische operatoren
Boolse expressies
If-statements
Floating-point Notatie
Wat is een String?
Wat is een String in
programmeercontext?

String literals




String data type


“John”
(‘John’)
“Hi there!”
“This is John’s apple.”
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
J
a
v
a
0
1
2
3
4
R
u
l
e
s
!
5
6
7
8
9
10
Constructie van String
objecten
String str1 = “Java Rules!” ;
String object
str1
|J|a|v|a| |R|u|l|e|s|!|
String methoden

Hoe lang is de string?


Welk teken staat op positie 0?


int l = str1.length();
char ch = str1.charAt(0);
Waar in de string start de substring
“Rules”?

int i = str1.indexOf (“Rules”);
String concatenatie

Plak str2 achter str1


Verbinding van getallen met strings




String strNew = str1 + str2;
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 email adressen in
naam, domein1 en domein 2
[email protected] 
Naam: knking
Domein1: edu
Domein2: gsu
Voorbeeld 1 oplossing
int atIndex = emailAddress.indexOf(“@”);
int dotIndex = emailAddress.indexOf(“.”);
String name = emailAddress.substring
(0, atIndex);
String domain2 = emailAddress.substring
(atIndex + 1, dotIndex);
String domain1 = emailAddress.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 <test> then
<instructie 1>
else
<instructie 2>
 Voorwaarden/Testen in programma’s:



uitkomst: true / false (boolean type)
boolse expressies
vergelijkingsoperatoren



kleiner dan: <
kleiner dan of gelijk aan: <=
gelijk aan: ==
groter dan: >
groter dan of 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, 1815 - 1864
boolse operatoren
OR
vegetariërs
studenten
boolse operatoren
AND
vegetariërs
studenten
boolse operatoren
NOT
vegetariërs
studenten
boolse operatoren
NOT
vegetariërs
studenten
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
true
inner statement
false
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 < 0.0) && (banksaldo > -500.00) {
System.out.println (“U staat een beetje rood.”);
}
……
Testen op (on)gelijkheid
……
if (banksaldo == 1000.00 * 1000.00) {
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 (<expr>) {
<block 1>
} else {
<block2>
expr.
}
block 1
block 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 <= 5000.00) {
System.out.println (“Raadpleeg onze
website voor uw beleggingen.”);
} else {
if (banksaldo > 5000.00) {
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 <= 5000.00)
System.out.println (“Raadpleeg onze website voor
uw beleggingen.”);
else if (banksaldo > 5000.00)
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 <= 5000.00)
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:
$ 4000000000000
4.0E12
4.0e12
Floating point notation
SIGN
MANTISSA
EXPONENT
+
.142687
+3
142,687
0,14268710 * 103
-
.34128
-2
-0,0034128
0,3412810 * 10-2
decimaal
-
.101011
+11
-101,011
0,1010112 * 23
+
.10111
-10
0,0010111
0,101112 * 2-2
binair
Download