/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Prøveeksamen - Finde det første tal i en s~
Fra : Christian Andersen


Dato : 26-05-02 11:14

Hejsa.

Vi havde prøveeksamen på Datamatiker-uddannelsen her i torsdags og en af
opgaverne var at finde det første tal i en string, så Post Danmark kunne
sende breve ud(whatever).

Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
også lavet en løsning der bruger while-løkker, men jeg synes ikke
kompleksiteten blev specielt formindsket.

Her kommer den med for-løkker.

-----------------------------------------------------

public int getHusNummer() // Opgave 3.5 - 4 point
{
int start = 0;
int slut = 0;
char eval, nyEval;
String resString;
int resTal = -1;
int fundet = 0;
int talletVarISlutningen = 0;

String adresse = "Violingade 18,3. TH";
//String adresse = "Bente Junckersstræde 17";

for (int i = 0; i < adresse.length(); i++)
{
eval = adresse.charAt(i);
int asciiCode = (int) eval;

if (asciiCode >= 48
&& asciiCode <= 57
&& fundet == 0)
{
start = i;

for (int k = start; k < adresse.length(); k++)
{
nyEval = adresse.charAt(k);
asciiCode = (int) nyEval;

if ((!(asciiCode >= 48 && asciiCode <= 57))
&& fundet == 0)
{
slut = k;
fundet++;
}

if (k == (adresse.length() - 1) && fundet == 0)
{
slut = k;
fundet++;
talletVarISlutningen++;
}
} // for(k)
} // if
} // for(i)

if (talletVarISlutningen != 0)
resString = adresse.substring(start);
else
resString = adresse.substring(start, slut);

resTal = Integer.parseInt(resString);

//System.out.println(
// "I strengen: >" + adresse + "<\n" + "er det første nummer: "
//    +resTal);
   
   return resTal;
}

----------------------------------

--
..signature

 
 
Ulrik Magnusson (26-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-05-02 11:57



Christian Andersen wrote:

> Hejsa.
>
> Vi havde prøveeksamen på Datamatiker-uddannelsen her i torsdags og en af
> opgaverne var at finde det første tal i en string, så Post Danmark kunne
> sende breve ud(whatever).
>
> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
> også lavet en løsning der bruger while-løkker, men jeg synes ikke
> kompleksiteten blev specielt formindsket.

Det kan da gøres lidt kortere:

public int findHusNummer( String adresse )
{
String tal = "0123456789";
StringBuffer result = new StringBuffer();
boolean found = false;
for( int i = 0; i < adresse.length(); ++i )
{
while( i < adresse.length() && tal.indexOf(adresse.charAt(i)) != -1 )
{
result.append( adresse.charAt(i) );
found = true;
++i;
}
if( found )
{
//der er fundet et tal, så vi skal ikke finde flere
return Integer.parseInt( result.toString() );
}
}
//fejl - exception? return -1?
}

Ulrik Magnusson


Christian Andersen (26-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 26-05-02 12:37

Ulrik Magnusson wrote:

> Det kan da gøres lidt kortere:

Det må man sige.

> while( i < adresse.length() && tal.indexOf(adresse.charAt(i)) != -1 )

Især kan jeg lide denne. Jeg kendte den ikke i forvejen, men den er
dæleme smart!

Men kan det mon være meningen at vi skal have en fuld JavaDOC (API?) med
til eksamen på 1. semester?

--
..signature

Ulrik Magnusson (26-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-05-02 12:58

Christian Andersen wrote:

> Ulrik Magnusson wrote:
> > while( i < adresse.length() && tal.indexOf(adresse.charAt(i)) != -1 )
> Især kan jeg lide denne. Jeg kendte den ikke i forvejen, men den er
> dæleme smart!
> Men kan det mon være meningen at vi skal have en fuld JavaDOC (API?) med
> til eksamen på 1. semester?

De forventer sikkert at I gør det en smule manuelt - dertil er java.util.regex

pakken nok for avanceret, selv om den er vildt smart. indexOf(char) kunne
du evt. lave selv og levere med løsningen - ellers er det jo bare at
udskifte ovenstående med:

while( i < adresse.length() &&
adresse.charAt(i) >= '0' &&
adresse.charAt(i) <= '9' )

Ulrik Magnusson



Christian Andersen (26-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 26-05-02 13:42

Ulrik Magnusson wrote:

>> Men kan det mon være meningen at vi skal have en fuld JavaDOC (API?) med
>> til eksamen på 1. semester?

> De forventer sikkert at I gør det en smule manuelt

<snip>

Det har du helt ret i. Jeg må nok hellere gennemlæse API'erne for de
forskellige klasser lidt. String og Vector ihvertfald, dem er de lidt
vilde med.

--
..signature

Lars Dam (26-05-2002)
Kommentar
Fra : Lars Dam


Dato : 26-05-02 13:05

On Sun, 26 May 2002 12:57:19 +0200, Ulrik Magnusson <ulrikm@yahoo.com>
wrote:

>
>
>Christian Andersen wrote:
>
>> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
>> også lavet en løsning der bruger while-løkker, men jeg synes ikke
>> kompleksiteten blev specielt formindsket.
>
>Det kan da gøres lidt kortere:

Eller endnu kortere:

public int findHusNummer( String adresse ){
int index = 0;
int result = 0;
while( index<adresse.length() &&
adresse.charAt(index)>='0' &&
adresse.charAt(index)<='9' ){
result = result*10 + ('0'-adresse.charAt(index++));
}
// evt. if(index==0)throw new Exception("no number...")
return result;
}

vh. ld

---
"Time is the fire in which we burn"

Christian Andersen (26-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 26-05-02 13:42

Lars Dam wrote:

>>> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
>>> også lavet en løsning der bruger while-løkker, men jeg synes ikke
>>> kompleksiteten blev specielt formindsket.

>>Det kan da gøres lidt kortere:

> Eller endnu kortere:

Hæ hæ

--
..signature

Lars Mosegård (26-05-2002)
Kommentar
Fra : Lars Mosegård


Dato : 26-05-02 17:04


"Lars Dam" <lars_simple_spam_protection_dam@post2.tele.dk> skrev i en meddelelse
news:r7j1fug0uumc7tico6jvub6hvbd1jto3q7@4ax.com...
> On Sun, 26 May 2002 12:57:19 +0200, Ulrik Magnusson <ulrikm@yahoo.com>
> wrote:
>
> >
> >
> >Christian Andersen wrote:
> >
> >> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
> >> også lavet en løsning der bruger while-løkker, men jeg synes ikke
> >> kompleksiteten blev specielt formindsket.
> >
> >Det kan da gøres lidt kortere:
>
> Eller endnu kortere:
>
> public int findHusNummer( String adresse ){
> int index = 0;
> int result = 0;
> while( index<adresse.length() &&
> adresse.charAt(index)>='0' &&
> adresse.charAt(index)<='9' ){
> result = result*10 + ('0'-adresse.charAt(index++));
> }
> // evt. if(index==0)throw new Exception("no number...")
> return result;
> }
>
> vh. ld
>
Hvad har du gaaang i?
Strengen "adresse" skal i så fald altid _starte_ med husnummeret!?!?

Mvh
Lars



Lars Dam (26-05-2002)
Kommentar
Fra : Lars Dam


Dato : 26-05-02 18:37

On Sun, 26 May 2002 18:04:15 +0200, "Lars Mosegård"
<lamos@FJERNpost8.tele.dk> wrote:

>
>"Lars Dam" <lars_simple_spam_protection_dam@post2.tele.dk> skrev i en meddelelse
>news:r7j1fug0uumc7tico6jvub6hvbd1jto3q7@4ax.com...
>> On Sun, 26 May 2002 12:57:19 +0200, Ulrik Magnusson <ulrikm@yahoo.com>
>> wrote:
>>
>> >
>> >
>> >Christian Andersen wrote:
>> >
>> >> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
>> >> også lavet en løsning der bruger while-løkker, men jeg synes ikke
>> >> kompleksiteten blev specielt formindsket.
>> >
>> >Det kan da gøres lidt kortere:
>>
>> Eller endnu kortere:
>>
>> public int findHusNummer( String adresse ){
>> int index = 0;
>> int result = 0;
>> while( index<adresse.length() &&
>> adresse.charAt(index)>='0' &&
>> adresse.charAt(index)<='9' ){
>> result = result*10 + ('0'-adresse.charAt(index++));
>> }
>> // evt. if(index==0)throw new Exception("no number...")
>> return result;
>> }
>>
>> vh. ld
>>
>Hvad har du gaaang i?
>Strengen "adresse" skal i så fald altid _starte_ med husnummeret!?!?

Detaljer, detaljer ,-)

Var det ikke en forudsætning?, nå i såfald, så indsæt følgende while
foran den der er:

while( index<adresse.length() &&
(adresse.charAt(index)<'0' ||
adresse.charAt(index)>'9' )){
index++;
}
while(osv...

desuden sneg der sig en lille fejl ind i ovenstående; der skal laves
flg. rettelse førend det bliver korrekt:

result = result*10 + (adresse.charAt(index++)-'0');


>Mvh
>Lars



vh. ld

Povl H. Pedersen (26-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 26-05-02 22:25

On Sun, 26 May 2002 19:36:45 +0200,
Lars Dam <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote:
> On Sun, 26 May 2002 18:04:15 +0200, "Lars Mosegård"
>>Hvad har du gaaang i?
>>Strengen "adresse" skal i så fald altid _starte_ med husnummeret!?!?
>
> Detaljer, detaljer ,-)
>
> Var det ikke en forudsætning?, nå i såfald, så indsæt følgende while
> foran den der er:
>
> while( index<adresse.length() &&
> (adresse.charAt(index)<'0' ||
> adresse.charAt(index)>'9' )){
> index++;
> }
> while(osv...

Så er der lige det lille problem at Nørregade 47,3 returnerer
473 som husnummer :)

Du skal terminere ved det første ikke-numeriske tegn efter
husnummeret.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Lars Dam (27-05-2002)
Kommentar
Fra : Lars Dam


Dato : 27-05-02 06:27

On Sun, 26 May 2002 21:24:48 +0000 (UTC), "Povl H. Pedersen"
<nospam@home.terminal.dk> wrote:

>On Sun, 26 May 2002 19:36:45 +0200,
>Lars Dam <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote:
>
>Så er der lige det lille problem at Nørregade 47,3 returnerer
>473 som husnummer :)
>
>Du skal terminere ved det første ikke-numeriske tegn efter
>husnummeret.

Det gør den sandelig også:

public int findHusNummer( String adresse ){
int index = 0;
int result = 0;
// find først ciffer
while( index<adresse.length() &&
(adresse.charAt(index)<'0' ||
adresse.charAt(index)>'9' )){
index++;
}
// læs indtild sidste ciffer i nummeret
while( index<adresse.length() &&
adresse.charAt(index)>='0' &&
adresse.charAt(index)<='9' ){
result = result*10 + ('0'-adresse.charAt(index++));
}
// evt. if(index==0)throw new Exception("no number...")
return result;
}



vh.ld




Povl H. Pedersen (26-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 26-05-02 12:03

On Sun, 26 May 2002 10:13:38 +0000 (UTC),
Christian Andersen <7kf2z58ugb001@sneakemail.com> wrote:
> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?

Jeg vil ihvertfald ikke bruge asciiCode som du gør. Men i stedet
anvende isDigit på en char. Det giver langt pænere kode.

Hvis jeg skulle bedømme din opgave vil anvendelsen af ascii trække
ned som grim og ikke-portabel kode.

Hvis det skal være meget kort, så kunne man anvende:

use java.util.regex.*;

Pattern p = new Pattern.compile("[0-9]+");
Matcher m = p.matcher(adresse);
if ( m.find() )
{
   resString = m.group();
   resTal = Integer.parseInt(resString);
   return resTal;
}
return 0; // En throw ville nok være mere korrekt.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Christian Andersen (26-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 26-05-02 12:38

Povl H. Pedersen wrote:

>> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?

> Jeg vil ihvertfald ikke bruge asciiCode som du gør. Men i stedet
> anvende isDigit på en char. Det giver langt pænere kode.

Enig. Men jeg kendte ikke isDigit(). Som jeg også skrev tidligere, kan
det vel ikke være meningen at man skal have en fuld JavaDOC med til
eksamen på 1. semester?

> Hvis jeg skulle bedømme din opgave vil anvendelsen af ascii trække
> ned som grim og ikke-portabel kode.

Det kan du have ret i.

--
..signature

Brian Matzon (26-05-2002)
Kommentar
Fra : Brian Matzon


Dato : 26-05-02 22:22

"Povl H. Pedersen" <nospam@home.terminal.dk> wrote in message
news:slrnaf1g6q.4h6.nospam@home.terminal.dk...
> On Sun, 26 May 2002 10:13:38 +0000 (UTC),
> Christian Andersen <7kf2z58ugb001@sneakemail.com> wrote:
> > Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?
>
> Jeg vil ihvertfald ikke bruge asciiCode som du gør. Men i stedet
> anvende isDigit på en char. Det giver langt pænere kode.
Enig

> Hvis jeg skulle bedømme din opgave vil anvendelsen af ascii trække
> ned som grim og ikke-portabel kode.
wtf?
hvorfor er det lige at det ikke er portabelt???
1 - Java er xplatform!
2 - ascii er ascii
3 - dit brug af RexEx er endnu mindre portabelt, da det
kun er understøttet i 1.4! (eller med addon, i hvilket
tilfælde koden alligevel skulle ændres)

/Brian Matzon



Povl H. Pedersen (26-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 26-05-02 22:31

On Sun, 26 May 2002 23:22:00 +0200,
Brian Matzon <brian@matzon.dk> wrote:
> "Povl H. Pedersen" <nospam@home.terminal.dk> wrote in message
> news:slrnaf1g6q.4h6.nospam@home.terminal.dk...
>> On Sun, 26 May 2002 10:13:38 +0000 (UTC),
>> Christian Andersen <7kf2z58ugb001@sneakemail.com> wrote:
>> > Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?
>>
>> Jeg vil ihvertfald ikke bruge asciiCode som du gør. Men i stedet
>> anvende isDigit på en char. Det giver langt pænere kode.
> Enig
>
>> Hvis jeg skulle bedømme din opgave vil anvendelsen af ascii trække
>> ned som grim og ikke-portabel kode.
> wtf?
> hvorfor er det lige at det ikke er portabelt???
> 1 - Java er xplatform!

Ja, langt hen ad vejen. Undtagelsen er når man begynder at lave
antagelser om underliggende datastrukturer og formater. Hvis data
er indlæst fra en fil, så kan der være problemer.

> 2 - ascii er ascii

Ja. Og Java anvender unicode. unicode != ascii. Og der er andre
tegnsæt på computere, f.eks. EBDIC. Nu er man så heldig at
ascii tegn er sammenfaldende med unicode når vi taler tal.

> 3 - dit brug af RexEx er endnu mindre portabelt, da det
> kun er understøttet i 1.4! (eller med addon, i hvilket
> tilfælde koden alligevel skulle ændres)

Enig - Men RegEx er i dag en del af standarden. Men det er stadig
den mest kompakte kode. Næstmest kompakt må være at skippe alt
der ikke er digit, og så konvertere resten af strengen.

Og f.eks. er swing også backportet til java 1.1

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Thorbjoern Ravn Ande~ (26-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 26-05-02 22:38

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:

> Ja. Og Java anvender unicode. unicode != ascii. Og der er andre
> tegnsæt på computere, f.eks. EBDIC. Nu er man så heldig at
> ascii tegn er sammenfaldende med unicode når vi taler tal.

Vi er faktisk så heldige at ASCII er en ægte delmængde af Unicode.

Herudover er typen char kompatibel med typen int. Der er altså ingen
forskel på om man skriver 65 eller 'A'.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Povl H. Pedersen (27-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 27-05-02 19:20

On 26 May 2002 23:37:49 +0200,
Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
> Vi er faktisk så heldige at ASCII er en ægte delmængde af Unicode.
>
> Herudover er typen char kompatibel med typen int. Der er altså ingen
> forskel på om man skriver 65 eller 'A'.

Det er alligevel ikke pænt med disse antagelser som giver dårlige
vaner til den man skifter til andre programmeringssprog.

Jeg er stadig af den holdning, at der i dag fokuseres for meget på
enkelte værktøjer/enkelte sprog, fremfor generelt at lære god
programmering.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 02:48

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:

> On 26 May 2002 23:37:49 +0200,
> Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
> > Vi er faktisk så heldige at ASCII er en ægte delmængde af Unicode.
> >
> > Herudover er typen char kompatibel med typen int. Der er altså ingen
> > forskel på om man skriver 65 eller 'A'.
>
> Det er alligevel ikke pænt med disse antagelser som giver dårlige
> vaner til den man skifter til andre programmeringssprog.

Unicode er vel det samme uanset programmeringssprog?

> Jeg er stadig af den holdning, at der i dag fokuseres for meget på
> enkelte værktøjer/enkelte sprog, fremfor generelt at lære god
> programmering.

Datamatikere har ikke tid til at gå i bredden. Derfor bliver deres
uddannelse ikke så meget værd.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Bertel Lund Hansen (28-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-05-02 06:18

Thorbjoern Ravn Andersen skrev:

>Datamatikere har ikke tid til at gå i bredden. Derfor bliver deres
>uddannelse ikke så meget værd.

Du mener "dybden". Jeg synes nu at vi er gået lidt i dybden med
programmering, men jeg kan se at vores skole adskiller sig fra
mange andre på det punkt. Meget af det som vi pukler med som
obligatorisk stof, er valgfag på andre datamatikerskoler. Men
naturligvis er der da grænser for hvor langt vi når ned.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 07:18

Bertel Lund Hansen <nospam@lundhansen.dk> writes:

> >Datamatikere har ikke tid til at gå i bredden. Derfor bliver deres
> >uddannelse ikke så meget værd.
>
> Du mener "dybden". Jeg synes nu at vi er gået lidt i dybden med
> programmering, men jeg kan se at vores skole adskiller sig fra
> mange andre på det punkt. Meget af det som vi pukler med som
> obligatorisk stof, er valgfag på andre datamatikerskoler. Men
> naturligvis er der da grænser for hvor langt vi når ned.

Nej, jeg mente faktisk i bredden, idet vi snakkede om at kende flere
programmeringssprog.

Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
deres respektive fordele og ulemper.

Jeg kender ikke jeres fulde pensum, men baserer blandt andet mine
fordomme på de udtalelser du igennem dit studieforløb er kommet med de
steder jeg har set dem.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Dennis Thrysøe (28-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 28-05-02 07:24

Thorbjoern Ravn Andersen wrote:
> Bertel Lund Hansen <nospam@lundhansen.dk> writes:
>
>
>>>Datamatikere har ikke tid til at gå i bredden. Derfor bliver deres
>>>uddannelse ikke så meget værd.
>>
>>Du mener "dybden". Jeg synes nu at vi er gået lidt i dybden med
>>programmering, men jeg kan se at vores skole adskiller sig fra
>>mange andre på det punkt. Meget af det som vi pukler med som
>>obligatorisk stof, er valgfag på andre datamatikerskoler. Men
>>naturligvis er der da grænser for hvor langt vi når ned.
>
>
> Nej, jeg mente faktisk i bredden, idet vi snakkede om at kende flere
> programmeringssprog.

Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på f.eks.
datalogstudiet?

> Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
> deres respektive fordele og ulemper.

Så længe du siger 'kendskab til' dækker studierne det vist cirka ligeså
godt.

-dennis


Katrine (28-05-2002)
Kommentar
Fra : Katrine


Dato : 28-05-02 07:31


"Dennis Thrysøe" <dt@netnord.dk> wrote in message
news:3CF32281.20001@netnord.dk...
> Thorbjoern Ravn Andersen wrote:
> Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
> Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på f.eks.
> datalogstudiet?
>

Jeg er kun nået til 2. semester af datalogistudiet på SDU, men jeg ved, at
vi ikke som sådan skal lære en hel masse programmeringssporg, fordi vi
istedet skal lære teorien bag de forskellige typer sprog, så vi har lettere
ved at skifte sprog, da vi kender til de forskellige kendetegn ved fx
objektorienteret programmeringssprog. Pt. arbejder vi med JAVA, men for bare
to år siden var det første programmeringssprog python.



t_p (24-06-2002)
Kommentar
Fra : t_p


Dato : 24-06-02 06:34

"Katrine" <hatikvah83@hotmail.com> wrote in message
news:3cf3241f$0$78784$edfadb0f@dspool01.news.tele.dk...
>
> Jeg er kun nået til 2. semester af datalogistudiet på SDU, men jeg ved, at
> vi ikke som sådan skal lære en hel masse programmeringssporg, fordi vi
> istedet skal lære teorien bag de forskellige typer sprog, så vi har
lettere
> ved at skifte sprog, da vi kender til de forskellige kendetegn ved fx
> objektorienteret programmeringssprog. Pt. arbejder vi med JAVA, men for
bare
> to år siden var det første programmeringssprog python.

Under min Datamatiker havde vi ikke fag såsom C++, Java osv.
Vi havde f.eks. et fag såsom "komplekse datastrukturer" og lign.
Det blev forventet af os at vi selv lærte sproget. Vi kom på den måde
i gennem Assembler, C++, Pascal, Java of Smalltalk.

Men dengang var undervisningen meget forskellig fra skole til skole,
ved ikke om den er sådan idag.

--
T



Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 07:32

Dennis Thrysøe <dt@netnord.dk> writes:

> Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
> Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på
> f.eks. datalogstudiet?

Deprimerende mange, fordi man også skal kende til andet end de typiske
impirative sprog som I har.

> > Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
> > deres respektive fordele og ulemper.
>
> Så længe du siger 'kendskab til' dækker studierne det vist cirka
> ligeså godt.

Beklager, jeg har valgt et dårligt eksempel. Sortering er et notorisk
svært område at få rigtigt, og valget af algoritme afhænger af
omstændighederne. Får man nok viden om dette til at kunne træffe et
kvalificeret valg, eller er det bare "brug Quicksort"?


--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Dennis Thrysøe (28-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 28-05-02 08:32

Thorbjoern Ravn Andersen wrote:
> Dennis Thrysøe <dt@netnord.dk> writes:
>
>
>>Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
>>Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på
>>f.eks. datalogstudiet?
>
>
> Deprimerende mange, fordi man også skal kende til andet end de typiske
> impirative sprog som I har.

Ja, det er jo så den dér klassiske "skal det være håndværker- eller
akedimikermåden".

>>>Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
>>>deres respektive fordele og ulemper.
>>
>>Så længe du siger 'kendskab til' dækker studierne det vist cirka
>>ligeså godt.
>
> Beklager, jeg har valgt et dårligt eksempel. Sortering er et notorisk
> svært område at få rigtigt, og valget af algoritme afhænger af
> omstændighederne. Får man nok viden om dette til at kunne træffe et
> kvalificeret valg, eller er det bare "brug Quicksort"?

Jeg synes, at vi blev rimeligt godt udstyret i sin tid. Vi fik da
indblik i hvilke algoritmer der fungerer bedst med hvilke former for
data, mængder af data osv.

Men jeg er nu godtnok blevet lidt rusten i mellemtiden, da jeg ikke
rigtigt har brugt det siden.

-dennis


Katrine (28-05-2002)
Kommentar
Fra : Katrine


Dato : 28-05-02 09:49


"Dennis Thrysøe" <dt@netnord.dk> wrote in message
news:3CF33276.3020202@netnord.dk...
>
> Ja, det er jo så den dér klassiske "skal det være håndværker- eller
> akedimikermåden".
>

Og det er vel lige præcis den forskel (at vi ser mere på teorien bag
programmeringssprog, og derfor har let(tere) ved at sætte os ind i nye
sprog) der gør, at ledigheden hos dataloger er ca. 5% (svarer til dem, der
er ifærd med at skifte job på det tidspunkt undersøgelsen foretages)
hvorimod den er ca. 78% hos datamatikerne.



Dennis Thrysøe (28-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 28-05-02 11:17

Katrine wrote:
> "Dennis Thrysøe" <dt@netnord.dk> wrote in message
> news:3CF33276.3020202@netnord.dk...
>
>>Ja, det er jo så den dér klassiske "skal det være håndværker- eller
>>akedimikermåden".
>>
>
> Og det er vel lige præcis den forskel (at vi ser mere på teorien bag
> programmeringssprog, og derfor har let(tere) ved at sætte os ind i nye
> sprog) der gør, at ledigheden hos dataloger er ca. 5% (svarer til dem, der
> er ifærd med at skifte job på det tidspunkt undersøgelsen foretages)
> hvorimod den er ca. 78% hos datamatikerne.

Nej, mon dog.

Jeg tror at de tal du nævner nok nærmere skyldes kompetencen af de folk
der har uddannelserne. Både før de får dem og efter.

Datamatikerstudier lider en del under, at der er mange der betrager det
som en nem løsning. Det betyder at der er en overrepræsentation af
dårligt motiverede og kvalificerede datamatikere og datamatikerstuderende.

Jeg vil forøvrigt vove den påstand, at det er ganske begrænset hvor stor
en fordel dataloger (uddannelsemæssigt) har i at sætte sig ind i nye sprog.

Vi stiftede også bekendtskab med funktionelle sprog, "rigtige" OO sprog
som Eiffel og Smalltalk mv. Vi skrev også parsere og lærte om
kompilerteori mv.

Jeg skal være den første til at medgive at der er forskelle på de to
uddannelser der diskuteres her. Min opfattelse er bare, at den største
fordel dataloger har optræder i den akademiske verden, og på det
teoretiske niveau.

I den "virkelige" verden tror jeg ikke man kan måle de to uddannelser
mod hinanden og komme frem til at den ene laver bedre kvalificerede
medarbejdere end den anden.

-dennis


Bertel Lund Hansen (28-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-05-02 11:04

Katrine skrev:

>Og det er vel lige præcis den forskel (at vi ser mere på teorien bag
>programmeringssprog, og derfor har let(tere) ved at sætte os ind i nye
>sprog) der gør, at ledigheden hos dataloger er ca. 5% (svarer til dem, der
>er ifærd med at skifte job på det tidspunkt undersøgelsen foretages)
>hvorimod den er ca. 78% hos datamatikerne.

Det er den bare ikke!

Prosas ledighedstal siger ca. 70 % alt i alt. MEN det er kun for
deres egne medlemmer.

Uddannelseslederne på datamatikeruddannelserne har nogle helt
andre tal. På min skole er der ca. 85 % der har job af de
datamatikere der er lukket ud (før 2002). Vores leder har kontakt
med næsten dem alle sammen, evt. via en hjemmeside for holdet
hvor der står hvem der har arbejde.

Hun siger at situationen er ca. den samme på de andre skoler -
jobprocenten er fra 56 til 100 for alle hold over hele landet.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Brian Matzon (28-05-2002)
Kommentar
Fra : Brian Matzon


Dato : 28-05-02 11:47

"Katrine" <hatikvah83@hotmail.com> wrote in message
news:3cf34478$0$78806$edfadb0f@dspool01.news.tele.dk...
>
> Og det er vel lige præcis den forskel (at vi ser mere på teorien bag
> programmeringssprog, og derfor har let(tere) ved at sætte os ind i nye
I så tilfælde burde I jo slet ikke beskæftige jer med sprog overhovedet!
Men det gør man, fordi i den virklige verden skal man rent faktisk
implementere noget, og ikke bare abstrahere over "stuff".
Granted, dataloger har en større del af teori end datamatikere, men sådan er
det jo, når datalog udd. tager den tid længere end den gør.

> sprog) der gør, at ledigheden hos dataloger er ca. 5% (svarer til dem, der
> er ifærd med at skifte job på det tidspunkt undersøgelsen foretages)
> hvorimod den er ca. 78% hos datamatikerne.
Kan du slet ikke sammenligne. Ledigheden for tagtækkere er også ekstremt
lav. Det har jo ikke noget med at de er specielt gode, men at der er en
noget
mindre mængde af dem!

Men datamatiker udd. er da ikke guld og grønne skove. Der er en masse der er
blevet lukket ud, som aldrig burde have påbegyndt udd. Men det er
industriens
skyld - de whiner over der ikke er nok folk - derfor "lempes" kravene.

I øvrigt skal det siges at mange valgte datamatiker udd. fordi de ville ud
NU
(dvs. 2 1/4 efter påbegyndelse) og ikke om 6 år. Nu hvor boblen så braste,
gik
det hårdest ud over dem med den svagere udd. - naturligt nok.

En datamatiker med 1-2 års erhvervs erfaring vil være ligeså god til det
erhverv
som en datalog med 1-2 års erhvervs erfaring. Det udjævner sig simpelthen.

Og til sidst - der er masser af dygtige datamatikere som ikke gider at
junglere
med bøger - det er ikke ensbetydende med at de er dårligere end dataloger...

/Brian Matzon <-- Datamatiker, men det havde i nok gættet ;)



Bertel Lund Hansen (28-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-05-02 11:00

Thorbjoern Ravn Andersen skrev:

>Beklager, jeg har valgt et dårligt eksempel. Sortering er et notorisk
>svært område at få rigtigt, og valget af algoritme afhænger af
>omstændighederne. Får man nok viden om dette til at kunne træffe et
>kvalificeret valg, eller er det bare "brug Quicksort"?

Midt imellem. Vi har lært om O-notation og snakket om QS'
worstcase o.lign. Ligefrem at kunne træffe det bedste valg under
alle omstændigheder vil jeg ikke påstå at jeg kan, men jeg ved
hvad jeg skal tænke på.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Povl H. Pedersen (28-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 28-05-02 20:31

On 28 May 2002 08:31:45 +0200,
Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
> Beklager, jeg har valgt et dårligt eksempel. Sortering er et notorisk
> svært område at få rigtigt, og valget af algoritme afhænger af
> omstændighederne. Får man nok viden om dette til at kunne træffe et
> kvalificeret valg, eller er det bare "brug Quicksort"?

Quicksort har O(n^2), så er i worst case lige så slem som bubblesort.
Heapsort er min foretrukne, og den har også et mere ens tidsforbrug,
og kører på O(n * log n)

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Ulrik Magnusson (28-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 28-05-02 20:36



"Povl H. Pedersen" wrote:

> On 28 May 2002 08:31:45 +0200,
> Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
> > Beklager, jeg har valgt et dårligt eksempel. Sortering er et notorisk
> > svært område at få rigtigt, og valget af algoritme afhænger af
> > omstændighederne. Får man nok viden om dette til at kunne træffe et
> > kvalificeret valg, eller er det bare "brug Quicksort"?
> Quicksort har O(n^2), så er i worst case lige så slem som bubblesort.
> Heapsort er min foretrukne, og den har også et mere ens tidsforbrug,
> og kører på O(n * log n)

En endnu mere uheldig egenskab ved Quicksort er at den ikke er stabil -
altså at objekter som har den samme værdi ved sorteringen ikke
nødvendigvis har den samme rækkefølge bagefter.

Altså at objekterne A(x=1,y=v1) og B(x=1,y=v2) ved sortering ikke
nødvendigvis er ordnet som A, B - hvis dette var deres rækkefølge
før sortering - men lige så godt kan være ordnet B, A.

Jeg har flere gange set at folk bare antager at "selvfølgelig" er
det sådan og det kan nogle gange have nogle lidt uigennemskuelige
konsekvenser.

Ulrik Magnusson


Ulrik Magnusson (28-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 28-05-02 20:40



Ulrik Magnusson wrote:

> En endnu mere uheldig egenskab ved Quicksort er at den ikke er stabil -
> altså at objekter som har den samme værdi ved sorteringen ikke
> nødvendigvis har den samme rækkefølge bagefter.
>
> Altså at objekterne A(x=1,y=v1) og B(x=1,y=v2) ved sortering ikke
> nødvendigvis er ordnet som A, B - hvis dette var deres rækkefølge
> før sortering - men lige så godt kan være ordnet B, A.

- og at v1 og v2 efter sorteringen så ligger i omvendt rækkefølge.

Ulrik Magnusson


Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 20:48

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:


> Quicksort har O(n^2), så er i worst case lige så slem som bubblesort.

Kun ved en naiv udvælgelses af pivot-elementet.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Ulrik Magnusson (28-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 28-05-02 20:51

Thorbjoern Ravn Andersen wrote:

> "Povl H. Pedersen" <nospam@home.terminal.dk> writes:
> > Quicksort har O(n^2), så er i worst case lige så slem som bubblesort.
> Kun ved en naiv udvælgelses af pivot-elementet.

?? Hvor har du det fra og hvad vil en "klog" udvælgelse af pivot være?

Ulrik Magnusson


Thorbjoern Ravn Ande~ (30-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 30-05-02 00:20

Ulrik Magnusson <ulrikm@yahoo.com> writes:

> Thorbjoern Ravn Andersen wrote:
>
> > "Povl H. Pedersen" <nospam@home.terminal.dk> writes:
> > > Quicksort har O(n^2), så er i worst case lige så slem som bubblesort.
> > Kun ved en naiv udvælgelses af pivot-elementet.
>
> ?? Hvor har du det fra og hvad vil en "klog" udvælgelse af pivot være?

Jeg har tilsyneladende udlånt min bog hvori det præcis er beskrevet.
Det var Robert Sedgewicks Algorithms in C, hvor han blandt andet
diskuterer sorteringsalgoritmer, og han har skrevet Ph.D. om QuickSort
under Donald Knuth.

Jeg kan derfor ikke slå efter hvad det var jeg så, men på hans
hjemmeside http://www.cs.princeton.edu/~rs/, er der et link til et
foredrag om "QuickSort is optimal". Deri siger han at QuickSort er
optimal (dvs NlogN), men jeg har ikke nærstuderet det.

Er det godt nok?
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Bertel Lund Hansen (29-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 29-05-02 09:49

Povl H. Pedersen skrev:

>> kvalificeret valg, eller er det bare "brug Quicksort"?

>Heapsort er min foretrukne ...

Altså "Bare brug Heapsort"? Det er ikke meget mere kvalificeret
end den første sætning.

Og algoritmen skal vurderes i forhold til den foreliggende
situation. Hvis en enkelt lang sorteringstid ikke har fatale
konsekvenser, kan QS være et fornuftigt valg fordi den i den
samlede praktiske søgetid giver de andre baghjul.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Povl H. Pedersen (29-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 29-05-02 20:00

On Wed, 29 May 2002 10:49:24 +0200,
Bertel Lund Hansen <nospam@lundhansen.dk> wrote:
> Povl H. Pedersen skrev:
>
>>> kvalificeret valg, eller er det bare "brug Quicksort"?
>
>>Heapsort er min foretrukne ...
>
> Altså "Bare brug Heapsort"? Det er ikke meget mere kvalificeret
> end den første sætning.

Der er forskel på "brug Quicksort", og at have en foretrukken.
Det at man foretrækker en frem for andre betyder man kender deres
eksistens, og generelt har en preference.

> Og algoritmen skal vurderes i forhold til den foreliggende
> situation. Hvis en enkelt lang sorteringstid ikke har fatale
> konsekvenser, kan QS være et fornuftigt valg fordi den i den
> samlede praktiske søgetid giver de andre baghjul.

Enig. Men i mange tilfælde hvor du ønsker konsistente svartider
frem for nødvendigvis gennemsnitligt hurtige svartider, så er
heapsort bedre. SÅ det er måske godt for user experience.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Povl H. Pedersen (28-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 28-05-02 20:29

On Tue, 28 May 2002 08:24:01 +0200,
Dennis Thrysøe <dt@netnord.dk> wrote:
> Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
> Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på f.eks.
> datalogstudiet?

Det er et af problemerne. Der skal læres en masse værktøjer, og en
række programmeringssprog alle afledt af Algol, fremfor mere fokus
på programmering.

>> Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
>> deres respektive fordele og ulemper.
>
> Så længe du siger 'kendskab til' dækker studierne det vist cirka ligeså
> godt.

Men der er mange i dag der ikke rigtigt ved hvad en algoritme er,
selv kan skrive sortering fra bunden, selv kan vurdere tidskompleksitet,
lave time/space tradeoffs etc.

Selvfølgelig er søgning og sortering som sådan ikke specielt relevant,
men det er passende simple eksempler til at lære en masse om
grundlæggende programmering.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Dennis Thrysøe (29-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 29-05-02 07:10

Povl H. Pedersen wrote:
> On Tue, 28 May 2002 08:24:01 +0200,
> Dennis Thrysøe <dt@netnord.dk> wrote:
>
>>Vi brugte i sin tid på datamatikerstudiet kun Object Pascal (Delphi),
>>Java og C++. Jeg ved ikke hvilke sprog man typisk bruge på f.eks.
>>datalogstudiet?
>
>
> Det er et af problemerne. Der skal læres en masse værktøjer, og en
> række programmeringssprog alle afledt af Algol, fremfor mere fokus
> på programmering.

Delphi var det eneste værktøj vi blev opfordreet til at bruge. Det er nu
også et helt hæderligt valg. Jeg kan ikke komme på andre værktøjer, som
vi lærte om på studiet. (Der blev selvfølgelig stillet nogle til
rådighed til f.eks. Java og C++, men det stod os frit for om vi ville
bruge dem eller noget andet).

Og ja, vi beskæftigede os overvejende med sprog der benyttes i "den
virkelige verden".

>>>Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
>>>deres respektive fordele og ulemper.
>>
>>Så længe du siger 'kendskab til' dækker studierne det vist cirka ligeså
>>godt.
>
> Men der er mange i dag der ikke rigtigt ved hvad en algoritme er,
> selv kan skrive sortering fra bunden, selv kan vurdere tidskompleksitet,
> lave time/space tradeoffs etc.

Det er rigtigt nok. Og dem fra mit studie, der gad interessere sig bare
lidt for den slags, havde alle muligheder for at blive gode til det.

> Selvfølgelig er søgning og sortering som sådan ikke specielt relevant,
> men det er passende simple eksempler til at lære en masse om
> grundlæggende programmering.

Enig.

-dennis



Bertel Lund Hansen (28-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-05-02 10:57

Thorbjoern Ravn Andersen skrev:

>Nej, jeg mente faktisk i bredden, idet vi snakkede om at kende flere
>programmeringssprog.

Åh, jamen så er det rigtigt. Jeg var heldig at starte på den
ordning hvor vi begyndte med C i to semestre inden vi gik over
til Java. Dem der kommer efter os, har kun lært Java. Man kan kun
supplere ved at vælge C++ i ét semester som valgfag.

>Dybden ville fx være kendskab til sorteringsalgoritmerne i Java og
>deres respektive fordele og ulemper.

Okay, så går vi i dybden på 3. semester (ADT'er,
sorteringsalgoritmer, søgetræer, grafer). Men der er naturligvis
mere at lære om disse emner.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Povl H. Pedersen (28-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 28-05-02 20:25

On 28 May 2002 03:48:21 +0200,
Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
>> Det er alligevel ikke pænt med disse antagelser som giver dårlige
>> vaner til den man skifter til andre programmeringssprog.
>
> Unicode er vel det samme uanset programmeringssprog?

Ja. Men unicode er ikke det dominerende tegnsæt. Der anvendes
rigtigt mange tegnsæt. Halvdelen af de ting jeg modtager er f.eks.
med koreansk tegnsæt, andet med iso-8859-1 eller varianter.

På min arbejdsplads har vi maskiner der anvende EBDIC, og så vil
selv en antagelse om at 0..9 har en passende rangordning som
karakterværdier vist ikke passe helt.

Der er en grund til, at der findes en isDigit metode.

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 20:39

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:

> På min arbejdsplads har vi maskiner der anvende EBDIC, og så vil
> selv en antagelse om at 0..9 har en passende rangordning som
> karakterværdier vist ikke passe helt.

I Java vil det. Her er det defineret i specifikationen at tegnsættet
er Unicode.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Povl H. Pedersen (28-05-2002)
Kommentar
Fra : Povl H. Pedersen


Dato : 28-05-02 22:08

On 28 May 2002 21:39:26 +0200,
Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> wrote:
> "Povl H. Pedersen" <nospam@home.terminal.dk> writes:
>
>> På min arbejdsplads har vi maskiner der anvende EBDIC, og så vil
>> selv en antagelse om at 0..9 har en passende rangordning som
>> karakterværdier vist ikke passe helt.
>
> I Java vil det. Her er det defineret i specifikationen at tegnsættet
> er Unicode.

Nu talte jeg om dårlige vaner i et programmeringssprog, som gør
at du måske laver skodkode eller fejl af gammel vane i et andet
sprog der opfører sig lidt anderledes.

Hvis du ikke bruger isDigit, hvorfor skulle du så bruge den ikke-binære
indlæsning fra fil ? Det er nok alligevel ascii det hele....

--
Povl H. Pedersen -
Use 2 letters from first+last name to form username@home.terminal.dk
This article was written without the use of Micros~1 Windows

Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 23:25

"Povl H. Pedersen" <nospam@home.terminal.dk> writes:

> Hvis du ikke bruger isDigit, hvorfor skulle du så bruge den ikke-binære
> indlæsning fra fil ? Det er nok alligevel ascii det hele....

Formentlig for at få tegnsæt konverteringen med.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Christian Andersen (27-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 27-05-02 17:23

Christian Andersen wrote:

> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?

Vi har i dag fået løsningsforslag fra vores lærer:



// Metoden ligger i klassen Medlem, der har en variabel
// private String adresse;
// der indeholder adressen.

public int getHusNummer()
{
   String a = adresse + " ";
   int index = 0;
   int startI,slutI;
   
   while (i<a.length() && a.charAt(i) <= '0' && a.charAt(i) >= '9')
      i++;
   
   startI = i;

   while (i<a.length() && a.charAt(i) >= '0' && a.charAt(i) <= '9')
      i++;
   slutI = i;

   String resString = a.subString(startI,slutI);
   int resTal = Integer.parseInt(resString);
   return resTal;
}

Den er skrevet fra hukommelsen, så eventuelle fejl er mine. Det burde
være klart nok hvad den gør, selvom der skulle være >=, <= fejl.

Dog undrer den første linie mig. Den er tilføjet (han tilføjede den endda
mens han præsenterede forslaget på tavlen) så vi ikke løb ind i
problemer, hvis adressen var "Liniestræde 30", altså tallet stod til
sidst i strengen. På den måde har vi altid et ikke-tal at terminere på.
Han kaldte det at "normalisere" input til at møde vores algoritmes krav.

Min umiddelbare reaktion var at det var en meget grim ting at gøre.
Det at ændre input til at passe til vores kode istedet for omvendt virker
"grimt" på mig.

Ved nærmere eftertanke kan jeg dog godt se at det giver en bedre kode og
at vi slipper for en if-sætning i bunden.

Men hvad mener I andre?

Tak til alle for jeres løsningsforslag indtil nu også!

/Christian

--
..signature

Lars Mosegård (27-05-2002)
Kommentar
Fra : Lars Mosegård


Dato : 27-05-02 19:08


"Christian Andersen" <7kf2z58ugb001@sneakemail.com> skrev i en meddelelse
news:actmhq$b4h$1@sunsite.dk...
> Christian Andersen wrote:
>
> > Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere?
>
> Vi har i dag fået løsningsforslag fra vores lærer:
>
> Den er skrevet fra hukommelsen, så eventuelle fejl er mine. Det burde
> være klart nok hvad den gør, selvom der skulle være >=, <= fejl.
>
Du har en lille fejl i første while.

> Dog undrer den første linie mig.
>
Også mig!

>Den er tilføjet (han tilføjede den endda
> mens han præsenterede forslaget på tavlen) så vi ikke løb ind i
> problemer, hvis adressen var "Liniestræde 30", altså tallet stod til
> sidst i strengen.
>
Hvilket problem er det lige det giver? Jeg kan ikke konstruere et eksempel som
fejler.
Prøv at kommentere + " " ud. Programmet virker alligevel.

Mvh
Lars




Bertel Lund Hansen (27-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 27-05-02 19:47

Christian Andersen skrev:

>Dog undrer den første linie mig. Den er tilføjet (han tilføjede den endda
>mens han præsenterede forslaget på tavlen) så vi ikke løb ind i
>problemer, hvis adressen var "Liniestræde 30", altså tallet stod til
>sidst i strengen.

Linjen er overflødig. Whileløkkerne tester på strengens længde,
og der startes ikke før man finder et ciffer - uanset hvor.

Teknikken med at skrive en sådan vagtpost (sentinel) er
imidlertid genial i andre sammenhænge hvor den kan spare en
løbende test.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Christian Andersen (27-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 27-05-02 21:04

Bertel Lund Hansen wrote:

> Teknikken med at skrive en sådan vagtpost (sentinel) er
> imidlertid genial i andre sammenhænge hvor den kan spare en
> løbende test.

Nemlig. Vores lærere sværger til søgeskabeloner. Gør jeres også det?

int i = 0;
int key = 7; // Det vi leder efter.
Vector v; // fyldt med Integer-objekter.
boolean found = false;

while (!found && i < v.size())
{
   int k = ((Integer)v.get(i)).intValue();
   if (k == key)
      found = true;
   else
      i++;
}

if (found)
   return i;
else
   return -1;

--
..signature

Bertel Lund Hansen (28-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 28-05-02 00:20

Christian Andersen skrev:

>Nemlig. Vores lærere sværger til søgeskabeloner. Gør jeres også det?

Nej. Min C- og C++-lærer sværger nok ikke til noget bestemt. Han
er suveræn til at præsentere os for vigtige detaljer, overordnede
strukturer og nyttige metoder.

Her er din kode med en vagtpost-metode i stedet for:

int key = 7; // Det vi leder efter.
Vector v; // fyldt med Integer-objekter.

v.add(key);   // Ved ikke om det hedder sådan,
      // men elementet skal tilføjes sidst.
      // Så er vi sikre på at finde det.

int i = 0;
while ( ( (Integer) v.get(i) ).intValue()!=key) ++i;

if (i==v.size()) return -1;
return i;

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Soren 'Disky' Reinke (28-05-2002)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 28-05-02 06:28


"Bertel Lund Hansen" <nospam@lundhansen.dk> wrote in message
news:mmf5fuk1thbstqjjp7eu7bd3h453h7v9dg@sunsite.auc.dk...
> Christian Andersen skrev:
>
> >Nemlig. Vores lærere sværger til søgeskabeloner. Gør jeres også det?
>
> Nej. Min C- og C++-lærer sværger nok ikke til noget bestemt. Han
> er suveræn til at præsentere os for vigtige detaljer, overordnede
> strukturer og nyttige metoder.
>
> Her er din kode med en vagtpost-metode i stedet for:
>
> int key = 7; // Det vi leder efter.
> Vector v; // fyldt med Integer-objekter.

Den Vector definerer du selvfølgelig med:

List v;

Istedet og først når du instantierer den angiver du typen, forresten
performer ArrayList bedre pga. manglende syncronization.

Ved at bruge interface typen istedet for class typen, kan du meget nemmere
udskifte typen i hele dit progra.


--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish



Christian Andersen (28-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 28-05-02 15:49

Bertel Lund Hansen wrote:

>>Nemlig. Vores lærere sværger til søgeskabeloner. Gør jeres også det?

> Her er din kode med en vagtpost-metode i stedet for:

Jep, men min(e) lærer(e) ville få et flip hvis jeg brugte den.

De er MEGET forhippede på søgeskabeloner. Det er nok for at det er
lettere at rette opgaverne på den måde...

--
..signature

Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 02:47

Christian Andersen <7kf2z58ugb001@sneakemail.com> writes:

> Nemlig. Vores lærere sværger til søgeskabeloner. Gør jeres også det?

Skabeloner er RIGTIGT godt. Det at man kan se hen over kode, genkende
udseendet og så vide hvad det gør uden at skulle næranalysere, er en
_GOD_ ting.



--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Christian Andersen (28-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 28-05-02 15:46

Thorbjoern Ravn Andersen wrote:

> Skabeloner er RIGTIGT godt. Det at man kan se hen over kode, genkende
> udseendet og så vide hvad det gør uden at skulle næranalysere, er en
> _GOD_ ting.

Ja, det er også nemt lige at fyre sådan en af i en eksamenssituation
(hvis det kræves selvfølgelig).

--
..signature

Ulrik Magnusson (27-05-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 27-05-02 22:16

Christian Andersen wrote:

> Vi har i dag fået løsningsforslag fra vores lærer:
> // Metoden ligger i klassen Medlem, der har en variabel
> // private String adresse;
> // der indeholder adressen.

Jeg synes det er en dårlig idé at have en public medlemsmetode
der parser en medlemsvariabel - enten skal den være static, så
den kan bruges globalt ellers skal den være private og kun bruges
én gang - ved konstruktion eller lign. Der er vel ingen grund til at
man udefra skal gennemløbe adressen for at finde et husnummer
hver gang. Her et måske ikke vildt gennemtænkt forslag, men et par
idéer:

class Adresse
{
public static Adresse parse( String adresse )
throws EnSlagsParseExceptionEllerLign
{
// find husnummer osv
return new Adresse(gadenavn og husnummer);
}

private Adresse( String gadenavn, int husnummer )
{
this.gadenavn = gadenavn;
this.husnummer = husnummer;
}

private int husnummer;
private int gadenavn;
etc

// ingen antagelse om husnummers type - skal måske snart udvides
// til at håndtere sal/side eller lign., så "public int getHusNummer()"
// har en god chance for hurtigt at blive ubrugelig
public void print()
{
System.out.print( husnummer );
}
public void draw( java.awt.Graphics g )
{
//...
}
etc
}

class Medlem
{
private Adresse adresse;
etc
}

lad debatten starte..

Ulrik Magnusson


Thorbjoern Ravn Ande~ (28-05-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 28-05-02 02:46

Christian Andersen <7kf2z58ugb001@sneakemail.com> writes:

> Dog undrer den første linie mig. Den er tilføjet (han tilføjede den endda
> mens han præsenterede forslaget på tavlen) så vi ikke løb ind i
> problemer, hvis adressen var "Liniestræde 30", altså tallet stod til
> sidst i strengen. På den måde har vi altid et ikke-tal at terminere på.
> Han kaldte det at "normalisere" input til at møde vores algoritmes krav.
>
> Min umiddelbare reaktion var at det var en meget grim ting at gøre.
> Det at ændre input til at passe til vores kode istedet for omvendt virker
> "grimt" på mig.

Det at du fjerner en randbetingelse (du behøver ikke at checke for om
du er ved slutningen af strengen, da du VED at det kan den ikke være),
er et meget velkendt trick til at gøre den slags behandling nemmere.

Tænk fx på hvordan du vil checke om tre tegnvariable indeholder samme
bogstav, uden at skelne mellem store og små bogstaver. Enten har du
en meget kompliceret if, eller også laver du tegnene om til fx små og
har en meget simpel if.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Christian Andersen (28-05-2002)
Kommentar
Fra : Christian Andersen


Dato : 28-05-02 15:45

Thorbjoern Ravn Andersen wrote:

>> Min umiddelbare reaktion var at det var en meget grim ting at gøre.
>> Det at ændre input til at passe til vores kode istedet for omvendt virker
>> "grimt" på mig.

> Det at du fjerner en randbetingelse (du behøver ikke at checke for om
> du er ved slutningen af strengen, da du VED at det kan den ikke være),
> er et meget velkendt trick til at gøre den slags behandling nemmere.
>
> Tænk fx på hvordan du vil checke om tre tegnvariable indeholder samme
> bogstav, uden at skelne mellem store og små bogstaver. Enten har du
> en meget kompliceret if, eller også laver du tegnene om til fx små og
> har en meget simpel if.

Ja det kan jeg godt se. Mange tak for afklaringen!

--
..signature

Mikkel Nielsen (29-05-2002)
Kommentar
Fra : Mikkel Nielsen


Dato : 29-05-02 23:48

Hej Christian !

He he ... det skal du ikke tage dig af ... jeg blev selv datamatiker for en
4-5 år siden, og med mindre lærer stabens kvalifikationer er højnet
væsentligt kan du roligt regne med at den løsning du har lavet er ganske
udemærket ... har sgu' endda oplevet at ryge en karrekter ned fordi at
idioten ikke kunne overskue sådanne "advancerede" løsninger (hvilket derfor
bliver konkluderet som skod kode)

Sådan er det

mn

"Christian Andersen" <7kf2z58ugb001@sneakemail.com> wrote in message
news:acqcgi$o6q$1@sunsite.dk...
> Hejsa.
>
> Vi havde prøveeksamen på Datamatiker-uddannelsen her i torsdags og en af
> opgaverne var at finde det første tal i en string, så Post Danmark kunne
> sende breve ud(whatever).
>
> Her er mit løsningsforslag i hvert fald. Kan det gøres nemmere? Jeg har
> også lavet en løsning der bruger while-løkker, men jeg synes ikke
> kompleksiteten blev specielt formindsket.
>
> Her kommer den med for-løkker.
>
> -----------------------------------------------------
>
> public int getHusNummer() // Opgave 3.5 - 4 point
> {
> int start = 0;
> int slut = 0;
> char eval, nyEval;
> String resString;
> int resTal = -1;
> int fundet = 0;
> int talletVarISlutningen = 0;
>
> String adresse = "Violingade 18,3. TH";
> //String adresse = "Bente Junckersstræde 17";
>
> for (int i = 0; i < adresse.length(); i++)
> {
> eval = adresse.charAt(i);
> int asciiCode = (int) eval;
>
> if (asciiCode >= 48
> && asciiCode <= 57
> && fundet == 0)
> {
> start = i;
>
> for (int k = start; k < adresse.length(); k++)
> {
> nyEval = adresse.charAt(k);
> asciiCode = (int) nyEval;
>
> if ((!(asciiCode >= 48 && asciiCode <= 57))
> && fundet == 0)
> {
> slut = k;
> fundet++;
> }
>
> if (k == (adresse.length() - 1) && fundet == 0)
> {
> slut = k;
> fundet++;
> talletVarISlutningen++;
> }
> } // for(k)
> } // if
> } // for(i)
>
> if (talletVarISlutningen != 0)
> resString = adresse.substring(start);
> else
> resString = adresse.substring(start, slut);
>
> resTal = Integer.parseInt(resString);
>
> //System.out.println(
> // "I strengen: >" + adresse + "<\n" + "er det første nummer: "
> // +resTal);
>
> return resTal;
> }
>
> ----------------------------------
>
> --
> .signature



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste