Mere om tilfældige tal
|
|
- Peder Kirkegaard
- 6 år siden
- Visninger:
Transkript
1 Denne guide er oprindeligt udgivet på Eksperten.dk Mere om tilfældige tal Denne artikel bygger oven på den forrige artikel om tilfældige tal. Den forudsætter at man har læst den forrige artikel og har et vist kendskab til matematik. Skrevet den 14. Feb 2010 af arne_v I kategorien Programmering / Generelt Historie: V1.0-23/05/ original V1.1-29/12/ tilføj links V1.2-12/02/ smårettelser Tænke sig godt om Forrige artikel "Tilfældige tal" har forhåbentligt gjordt det klart at man skal tænke sig godt om i forbindelse med bruge af tilfældige tal generatorer. Man skal: 1) vælge en god algoritme 2) vælge en fornuftig initialisering af algoritmen 3) undlade at ødelægge algoritmen med uheldige transformeringer Med hensyn til #1 så er det bedste at finde en kendt algoritme som diverse matematikere ha sagt god for, det næstbedste er at basere sig på at den indbyggede tilfældige tal generator i ens sprog er god nok mens det dårligste er at forsøge at brygge noget sammen selv. Med hensyn til #2 så skal man tænke sig godt om. Jeg kommer om lidt med yderligere et eksempel. Med hensyn til #3 så skal man lade være med at transformere mere en allerhøjest nødvendigt. Punktum. Når det drejer sig om initialisering så er det vigtigt at forstå at den rigtige initialisering afhænger af konteksten. I alle de foregående eksempler har jeg brugt tiden. Det er også meget godt til mange formål. Lad os tage et par eksempler fra Poker (det er jo meget moderne). Hvor stor er sandsynligheden for at få en flush (5 kort af samme farve)? For nemheds skyld inkluderer vi straight flush og royal straight flush
2 i statistikken. Poker1.java import java.util.arraylist; import java.util.list; import java.util.random; public class Poker1 private static Random rng = new Random(System.currentTimeMillis()); private List deck; public Poker1() deck = new ArrayList(); for(int i = 0; i < 52; i++) deck.add(new Integer(i)); public int takecard() Integer card = (Integer)deck.remove(rng.nextInt(deck.size())); return card.intvalue(); public int[] takehand() int[] res = new int[5]; for(int i = 0; i < 5; i++) res[i] = takecard(); return res; public static int getcolour(int card) return (card / 13); public static int getvalue(int card) return (card % 13); public static boolean isflush(int[] hand) if((getcolour(hand[0]) == getcolour(hand[1])) && (getcolour(hand[1]) == getcolour(hand[2])) && (getcolour(hand[2]) == getcolour(hand[3])) && (getcolour(hand[3]) == getcolour(hand[4]))) return true; else return false; private static final int REP = ; private static final int PLAYERS = 4; public static void main(string[] args) int nflush = 0; int[] hand = new int[5]; for(int i = 0; i < REP; i++) Poker1 game = new Poker1(); for(int j = 0; j < PLAYERS; j++) if(poker1.isflush(game.takehand()))
3 nflush++; System.out.println(PLAYERS*REP/(double)nflush); Programmet udskriver et tal som i de fleste tilfælde vil ligge mellem 500 og 510, hvilket passer meget fint da den ægte sandsynlighed er 1 ud af 505. Med andre ord virker vores tilfældige tal generator glimrende. Så er vi vel klar til at lave et poker spil? Poker2.java import java.util.arraylist; import java.util.list; import java.util.random; public class Poker2 private static Random rng = new Random(System.currentTimeMillis()); private List deck; public Poker2() deck = new ArrayList(); for(int i = 0; i < 52; i++) deck.add(new Integer(i)); public int takecard() Integer card = (Integer)deck.remove(rng.nextInt(deck.size())); return card.intvalue(); public int[] takehand() int[] res = new int[5]; for(int i = 0; i < 5; i++) res[i] = takecard(); return res; public static int getcolour(int card) return (card / 13); public static int getvalue(int card) return (card % 13); private static final int PLAYERS = 4; public static void main(string[] args) int[][] hand = new int[players][5];
4 Poker2 game = new Poker2(); for(int i = 0; i < PLAYERS; i++) hand[i] = game.takehand(); for(int j = 0; j < 5; j++) System.out.print(" " + hand[i][j]); System.out.println(); Eksempel på output: Forskellige statistiske test på de hænder vil se OK ud. Men prøv lige og check det her program. Poker3.java import java.util.arraylist; import java.util.arrays; import java.util.list; import java.util.random; public class Poker3 private Random rng; private List deck; public Poker3(long seed) rng = new Random(seed); deck = new ArrayList(); for(int i = 0; i < 52; i++) deck.add(new Integer(i)); public int takecard() Integer card = (Integer)deck.remove(rng.nextInt(deck.size())); return card.intvalue(); public int[] takehand() int[] res = new int[5]; for(int i = 0; i < 5; i++) res[i] = takecard();
5 return res; public static int getcolour(int card) return (card / 13); public static int getvalue(int card) return (card % 13); public static boolean issamehand(int[] h1, int[] h2) int[] h1x = (int[])h1.clone(); int[] h2x = (int[])h2.clone(); Arrays.sort(h1x); Arrays.sort(h2x); if((h1x[0] == h2x[0]) && (h1x[1] == h2x[1]) && (h1x[2] == h2x[2]) && (h1x[3] == h2x[3]) && (h1x[4] == h2x[4])) return true; else return false; private static final int PLAYERS = 4; public static void main(string[] args) int[] myhand = 8, 36, 4, 18, 16 ; int[][] hand; long seed = System.currentTimeMillis(); while(true) hand = new int[players][5]; Poker3 game = new Poker3(seed); for(int i = 0; i < PLAYERS; i++) hand[i] = game.takehand(); if(poker3.issamehand(myhand, hand[0])) break; seed--; for(int i = 0; i < PLAYERS; i++) for(int j = 0; j < 5; j++) System.out.print(" " + hand[i][j]); System.out.println(); Output:
6 Udfra sin egen hånd og kendskab til koden i Poker2.java kan man på få sekunder regne ud hvad de andre sidder med af kort. Ikke smart. Problemet er at initialisering med tid er godt nok til at give en pæn statistisk fordeling. Men det er ikke godt nok til at forhindre andre i at genskabe sekvensen af tilfældige tal. der er altså forskel på gode statistiske egenskaber og det at være svær/umulig at forudsige. Hvis man f.eks. kørte på Linux kunne man lave en: ps aux > md5.txt på serveren og så læse md5.txt ind og beregne MD5 hash af den. Den vil være meget sværere at gætte end tiden. De fleste større biblioteker (inkl. Java og.net) har såkaldte secure random number generatorer, som er svære at forudsige. De findes normalt sammen med kryptografi funktionerne. Lidt teori Langt den mest udbredte algoritme til generering af tilfældige tal er LCG (Linear Congruential Generator): x(i) = (a*x(i-1) + b) mod c Den har så en specialisering MLCG (Multiplicative Linear Congruential Generator): x(i) = (a*x(i-1)) mod c Og en generalisering MRG (Multiple Recursive Generator): x(i) = (a1*x(i-1) + a2*x(i-2) an*x(i-n) + b) mod c Når man skal generere et tilfældigt heltal 0..N-1 så kan man bruge x(i) direkte hvor N=c. Nogle gange vil man dog bruge x(i)>>m for at smide nogle af low bits væk. Det er en kendt svaghed ved LCG at low bits er mindre tilfældige end high bits. Når man skal generere et tilfældigt decimal tal (hvor 0.0 er inklusive og 1.0 eksklusive) så kan man bruge x(i)/n. Et nøgle begreb er cycle. Efter at have genereret et antal tilfældige
7 tal vil disse algoritmer altid starte forfra og gentage samme sekvens. Cycle angiver hvormange tilfældige tal de kan generere førend de begynder at gentage sig selv. Det er absolut nødvendigt at en cycle er stor nok for en given problem stilling. Men en algoritme er ikke nødvendigvis bedre fordi den har større cycle. Man kan betragte en algoritme som en serie af tal skrevet i en cirkel. Initialiseringen (seed) bestemmer hvor man starter i cirklen. Cycle fortæller hvor mange tal der er i cirklen. Det er indlysende at for en LCG kan cycle aldrig være større end c. Det er bevist at hvis c er en potens af 2, så vil cycle være c, hvis: - a mod 4 er 1 - b er ulige Nogle af de kendte navne indenfor tilfældige tal algoritmer er: Knuth, Marsaglia og L'Ecuyer. Inden vi kaster os over algoritmerne skal vi lige se en lille fix omskrivning som tit er nødvendig for LCG for at undgå integer overflow som enten kan give fejl eller negative tal. rewrite2.c #include <stdio.h> static long int seed1; void mysrand1(long int ss) seed1 = ss; return; long int myrand1() long long int tmp = seed1; tmp = (3125LL * tmp) % LL; seed1 = tmp; return seed1; static long int seed2; void mysrand2(long int ss) seed2 = ss; return;
8 long int myrand2() seed2 = (3125L * seed2) % L; return seed2; static long int seed3; void mysrand3(long int ss) seed3 = ss; return; long int myrand3() long int help1 = L % 3125L; long int help2 = L / 3125L; long int tmp = 3125L * (seed3 % help2) - help1 * (seed3 / help2); if(tmp >= 0) seed3 = tmp; else seed3 = tmp L; return seed3; int main() int i; mysrand1( ); mysrand2( ); mysrand3( ); for(i=0;i<20;i++) printf("%d %d %d\n",myrand1(),myrand2(),myrand3()); return 0; Output:
9 Nogle anerkendte algoritmer Nu vil jeg vise 4 af de rimeligt anerkendte tilfældige tal generatorer i objektorienteret framework i både Java og C#. RNG.java abstract public class RNG abstract public int getint(); abstract public int getmaxint(); public double getdouble() return (getint() / (double)getmaxint()); LCG.java public class LCG extends RNG private long a; private long b; private long c; private long seed; public LCG(int a, int b, int c, int seed) this.a = a; this.b = b; this.c = c; this.seed = seed; public int getint() seed = (a * seed + b) % c; return (int)seed; public int getmaxint() return (int)c;
10 MRG.java public class MRG extends RNG private long[] a; private long b; private long c; private long[] seed; public MRG(int[] a, int b, int c, int[] seed) this.a = new long[a.length]; for(int i = 0; i < a.length; i++) this.a[i] = a[i]; this.b = b; this.c = c; this.seed = new long[seed.length]; for(int i = 0; i < seed.length; i++) this.seed[i] = seed[i]; public int getint() long tmp = 0; for(int i = 0; i < a.length; i++) tmp = tmp + a[i] * seed[i]; tmp = tmp + b; tmp = tmp % c; for(int i = 1; i < seed.length; i++) seed[i] = seed[i-1]; seed[0] = tmp; return (int)seed[0]; public int getmaxint() return (int)c; MLCG.java public class MLCG extends LCG public MLCG(int a, int c, int seed) super(a, 0, c, seed); MinStd.java Minimal Standard algoritme Oprindeligt foreslået af Lewis, Goodman & Miller 1969, men populariseret af Park & Miller CACM Oct 1988.
11 Navnet har den fordi man aldrig bør vælge en algoritme som er dårligere end denne. cycle = = 2^31-1 public class MinStd extends MLCG public MinStd(int seed) super(16807, , seed); LEcuyer.java L'Ecuyer algoritme Ecuyer & Blouin & Coutre ACM Simulations cycle = ca. 1E46 public class LEcuyer extends MRG public LEcuyer(int[] seed) super(new int[] , 0, 0, 0, , 0, , seed); Combiner.java public interface Combiner public int combine(int[] num); public int getmaxint(); Combined.java public class Combined extends RNG private RNG[] g; private Combiner cmbn; public Combined(RNG[] g, Combiner cmbn) this.g = g; this.cmbn = cmbn; public int getint() int[] num = new int[g.length];
12 for(int i = 0; i < num.length; i++) num[i] = g[i].getint(); return cmbn.combine(num); public int getmaxint() return cmbn.getmaxint(); Uniform32.java Uniform32 algoritme L'Ecuyer CACM Jun cycle = ca. 2.31E18 public class Uniform32 extends Combined public Uniform32(int seed1, int seed2) super(new RNG[] new MLCG(40014, , seed1), new MLCG(40692, , seed2), new Uniform32Combiner()); class Uniform32Combiner implements Combiner public int combine(int[] num) long tmp = num[0] - num[1]; tmp = (tmp ) % ; return (int)tmp; public int getmaxint() return ; CMRG.java CMRG algoritme L'Ecuyer Operations Research cycle = 2^205 = 1E61 public class CMRG extends Combined public CMRG(int[] seed1, int[] seed2) super(new RNG[] new MRG(new int[] 0, 63308, , 0,
13 , seed1), new MRG(new int[] 86098, 0, , 0, , seed2), new CMRGCombiner()); class CMRGCombiner implements Combiner public int combine(int[] num) long tmp = num[0] - num[1]; tmp = (tmp ) % ; return (int)tmp; public int getmaxint() return ; Test.java public class Test public static void main(string[] args) testminstd(); testuniform32(); testlecuyer(); testcmrg(); private static void testminstd() MinStd rng = new MinStd( ); for(int i = 0; i < 10; i++) System.out.println(rng.getInt()); for(int i = 0; i < 10; i++) System.out.println(rng.getDouble()); private static void testuniform32() Uniform32 rng = new Uniform32( , ); for(int i = 0; i < 10; i++) System.out.println(rng.getInt()); for(int i = 0; i < 10; i++) System.out.println(rng.getDouble()); private static void testlecuyer() LEcuyer rng = new LEcuyer(new int[] , , , , ); for(int i = 0; i < 10; i++) System.out.println(rng.getInt());
14 for(int i = 0; i < 10; i++) System.out.println(rng.getDouble()); private static void testcmrg() CMRG rng = new CMRG(new int[] , , , new int[] , , ); for(int i = 0; i < 10; i++) System.out.println(rng.getInt()); for(int i = 0; i < 10; i++) System.out.println(rng.getDouble()); RNG.cs abstract public class RNG abstract public int GetInt(); abstract public int MaxInt get; public double GetDouble() return (GetInt() / (double)maxint); public class LCG : RNG private long a; private long b; private long c; private long seed; public LCG(int a, int b, int c, int seed) this.a = a; this.b = b; this.c = c; this.seed = seed; public override int GetInt() seed = (a * seed + b) % c; return (int)seed; public override int MaxInt
15 get return (int)c; public class MRG : RNG private long[] a; private long b; private long c; private long[] seed; public MRG(int[] a, int b, int c, int[] seed) this.a = new long[a.length]; for(int i = 0; i < a.length; i++) this.a[i] = a[i]; this.b = b; this.c = c; this.seed = new long[seed.length]; for(int i = 0; i < seed.length; i++) this.seed[i] = seed[i]; public override int GetInt() long tmp = 0; for(int i = 0; i < a.length; i++) tmp = tmp + a[i] * seed[i]; tmp = tmp + b; tmp = tmp % c; for(int i = 1; i < seed.length; i++) seed[i] = seed[i-1]; seed[0] = tmp; return (int)seed[0]; public override int MaxInt get return (int)c; public class MLCG : LCG public MLCG(int a, int c, int seed) : base(a, 0, c, seed) Minimal Standard algoritme
16 Oprindeligt foreslået af Lewis, Goodman & Miller 1969, men populariseret af Park & Miller CACM Oct Navnet har den fordi man aldrig bør vælge en algoritme som er dårligere end denne. cycle = = 2^31-1 public class MinStd : MLCG public MinStd(int seed) : base(16807, , seed) L'Ecuyer algoritme Ecuyer & Blouin & Coutre ACM Simulations cycle = ca. 1E46 public class LEcuyer : MRG public LEcuyer(int[] seed) : base(new int[] , 0, 0, 0, , 0, , seed) public interface Combiner int Combine(int[] num); int MaxInt get; public class Combined : RNG private RNG[] g; private Combiner cmbn; public Combined(RNG[] g, Combiner cmbn) this.g = g; this.cmbn = cmbn; public override int GetInt() int[] num = new int[g.length]; for(int i = 0; i < num.length; i++) num[i] = g[i].getint();
17 return cmbn.combine(num); public override int MaxInt get return cmbn.maxint; Uniform32 algoritme L'Ecuyer CACM Jun cycle = ca. 2.31E18 internal class Uniform32Combiner : Combiner public int Combine(int[] num) long tmp = num[0] - num[1]; tmp = (tmp ) % ; return (int)tmp; public int MaxInt get return ; public class Uniform32 : Combined public Uniform32(int seed1, int seed2) : base(new RNG[] new MLCG(40014, , seed1), new MLCG(40692, , seed2), new Uniform32Combiner()) CMRG algoritme L'Ecuyer Operations Research cycle = 2^205 = 1E61 internal class CMRGCombiner : Combiner public int Combine(int[] num)
18 long tmp = num[0] - num[1]; tmp = (tmp ) % ; return (int)tmp; public int MaxInt get return ; public class CMRG : Combined public CMRG(int[] seed1, int[] seed2) : base(new RNG[] new MRG(new int[] 0, 63308, , 0, , seed1), new MRG(new int[] 86098, 0, , 0, , seed2), new CMRGCombiner()) Test.cs using System; public class Test public static void Main(string[] args) TestMinStd(); TestUniform32(); TestLEcuyer(); TestCMRG(); private static void TestMinStd() MinStd rng = new MinStd( ); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetInt()); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetDouble()); private static void TestUniform32() Uniform32 rng = new Uniform32( , );
19 for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetInt()); for(int i = 0; i < 10; i++ ) Console.WriteLine(rng.GetDouble()); private static void TestLEcuyer() LEcuyer rng = new LEcuyer(new int[] , , , , ); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetInt()); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetDouble()); private static void TestCMRG() CMRG rng = new CMRG(new int[] , , , new int[] , , ); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetInt()); for(int i = 0; i < 10; i++) Console.WriteLine(rng.GetDouble()); Ikke uniformt fordelte Alt hidtil har drejet sig om uniformt fordelte tal, men der er jo også sommetider brug for andre fordelinger. Imidlertid kan de som oftest laves udfra uniform fordelte tal. Hvis man f.eks. skal bruge et normal fordelt tal, så kan man bruge den såkaldte Box Mueller transformation. u1 og u2 er uniform fordelte h1 = sqrt(-2*log(u1)); h2 = 2*PI*u2
20 n1 = e + s*h1*sin(h2) n2 = e + s*h1*cos(h2) så vil n1 og n2 være normal fordelte N(e,s) Normal.cs using System; public class Normal public const int N = ; public static void Test(double e, double s) Random rng = new Random(); int[] one1 = new int[4]; int[] one2 = new int[4]; for(int i=0; i<n; i++) double u1 = rng.nextdouble(); double u2 = rng.nextdouble(); double h1 = Math.Sqrt(-2*Math.Log(u1)); double h2 = 2*Math.PI*u2; double n1 = e + s*h1*math.sin(h2); double n2 = e + s*h1*math.cos(h2); if(n1<e-1.96*s) one1[0]++; else if(n1<e) one1[1]++; else if(n1<e+1.96*s) one1[2]++; else one1[3]++; if(n2<e-1.96*s) one2[0]++; else if(n2<e) one2[1]++; else if(n2<e+1.96*s) one2[2]++;
21 else one2[3]++; for(int i=0; i<4; i++) Console.WriteLine(one1[i] + " " + one2[i]); public static void Main(string[] args) Test(0, 1); Test(7, 3); Output: Hvilket jo ser meget fornuftigt ud (det skal være 2.5% 47.5% 47.5% 2.5%). Videre Se artiklen: * "Endnu mere om tilfældige tal" som forklarer lidt mere teori og har nogle eksempler i PHP og ASP Kommentar af simonvalter d. 25. Apr meget interessant Kommentar af mikze d. 28. Apr interessant Kommentar af gaflen89 d. 03. May Selvom jeg ikke har forstand på java, så skal den da ikke have den værste karakter, da jeg kan se den beskriver det titlen.
22 Kommentar af hyberpreprocessor d. 25. Apr Kommentar af tobiasahlmo d. 10. Oct super
Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.
Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter
Læs mereEndnu mere om tilfældige tal
Denne guide er oprindeligt udgivet på Eksperten.dk Endnu mere om tilfældige tal Denne artikel bygger oven på de to forrige artikler om tilfældige tal. Den indeholder lidt matematik og anvendelse på PHP
Læs mereSingleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Læs mereSingleton pattern i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs mereThreads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Læs mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mereBits, bit operationer, integers og floating point
Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter
Læs mereDM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11
DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4
Læs merePrepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.
Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010
Læs mereHvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mere//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Læs mereAnvendelse af metoder - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur
Læs mereRMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.
Denne guide er oprindeligt udgivet på Eksperten.dk RMI avanceret Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Den forudsætter
Læs mereProgrammering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.
Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af
Læs mereDen forudsætter kendskab til XML og C# men ikke til brug af XML i C#.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i C# Denne artikel vil vise lidt om hvordan man kan bruge XML i C#. Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.
Læs mereHvilket sprog er hurtigst
Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereParameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med
Læs mereTest med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.
Denne guide er oprindeligt udgivet på Eksperten.dk Test med JUnit 3 Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereAt klippe en streng over på det mest hensigtsmæssige sted
Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på
Læs mereJacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense
7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres
Læs mereSend fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.
Denne guide er oprindeligt udgivet på Eksperten.dk Send email fra Java Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende email fra Java. Simple eksempler ikke noget vildt
Læs mereIntroduction til.net remoting i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab
Læs mereKontrol-strukturer i PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende
Læs mereSom sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste
Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4
DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens
Læs mereLogging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.
Denne guide er oprindeligt udgivet på Eksperten.dk Logging i Java Denne artikel beskriver baggrunden for logging frameworks og viser hvordan man bruger 2 af de mest almindelige: Apache Log4J og J2SE/Java
Læs mereJava Klasse nedarvninger
Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering
Læs mereDen forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereNye features i Java 1.7/7.0
Denne guide er oprindeligt udgivet på Eksperten.dk Nye features i Java 1.7/7.0 Denne artikel beskriver nye features i Java 1.7/7.0, som blev releaset 28. juli 2011. Den forudsætter et vist kendskab til
Læs mereKursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mereBRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Læs mereDatabase design for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter
Læs mereSkrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel
Læs mereUndtagelseshåndtering i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide
Læs mereDM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Læs mereb) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.
Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning
Læs mereBRP Tal. Om computer-repræsentation og -manipulation. Logaritmer
BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave
Læs mereXML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.
Denne guide er oprindeligt udgivet på Eksperten.dk XML parsning i Java Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Den forudsætter kendskab til Java og XML.
Læs mereNye features i Java 1.5/5.0
Denne guide er oprindeligt udgivet på Eksperten.dk Nye features i Java 1.5/5.0 Denne artikel beskriver nye features i Java 1.5/5.0, som lige er kommet i final (ikke-beta) udgave. Den forudsætter et vist
Læs mereVideregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
Læs mereIntroduction til.net remoting i VB.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereDenne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.
Denne guide er oprindeligt udgivet på Eksperten.dk XML i ASP Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Den forudsætter
Læs mereOffset til terminalskærm i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Offset til terminalskærm i Java Ikke en atikkel - men en Classe til java der gør det nemt at skrive ud på avancerede måder når man kun opererer i dosvindue.
Læs mereIntroduktion til AOP i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til AOP i C# Denne artikel giver en introduktion AOP (Aspect Oriented Programming) i C#. Den forudsætter et pænt kendskab til programmering,
Læs mereDen forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i VB.NET Denne artikel vil vise lidt om hvordan man kan bruge XML i VB.NET. Den forudsætter kendskab til XML og VB.NET men ikke til brug af
Læs mereCivilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104
Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs mereUpload af billeder/filer for nybegyndere Del. 2
Denne guide er oprindeligt udgivet på Eksperten.dk Upload af billeder/filer for nybegyndere Del. 2 I denne Del vil jeg ikke gaa saa dybt i fil upload som i sidste. Jeg vil i stedet forklare om funktioner
Læs mere! "# $$ &'()*"* +*, & &"*0* & "# % %- %
!"! "# $$ & &'()*"* +*, &- & &"./+0 & &"*0* & & & 1 2 ()))))$$" "# - " # $!&!!" 34 3((5(4 6()))))5 3((5# 7())))) 4 3((58 43((58 3((5#9! 3((5#4 3((584 6 9 # '"!&()!" * " 49 9-3 :; & Private Sub Workbook_Open()
Læs mereDelphi - CrackMe og Keygen
Denne guide er oprindeligt udgivet på Eksperten.dk Delphi - CrackMe og Keygen Dette er min første artikel! :) Men jeg synes nu den er blevet meget god! :D Jeg giver et et eksempel på hvordan man kan lave
Læs mereArkitektur for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle
Læs mereapplikation----x----odbc driver manager----foobar ODBC driver----foobar database
Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereAsymptotisk analyse af algoritmers køretider
Asymptotisk analyse af algoritmers køretider Analyse af køretid Recall: Vi ønsker at vurdere (analysere) algoritmer på forhånd inden vi bruger lang tid på at implementere dem. De to primære spørgsmål:
Læs mereDatabase tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk
Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som
Læs mereTest med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.
Denne guide er oprindeligt udgivet på Eksperten.dk Test med NUnit Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab
Læs mereForelæsning Uge 3 Mandag
Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mere2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.
Denne guide er oprindeligt udgivet på Eksperten.dk I gang med Python I denne artikel vil jeg forsøge at give et kort og hurtigt indblik i programmeringssproget Python, der desværre er alt for overset.
Læs mereA Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Læs mereArrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Arrays i PHP De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger
Læs mereForelæsning Uge 4 Mandag
Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder
Læs mere9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..
9.8 Kildekode Pakke Klasse Sidenummer db Aktivitetstype 91 Behandler 91 ConnectDB 92 DagensKommentar 93 Helligdag 94 IkkePrimaerTid 94 Patient 96 Patientaftale 96 PatientAktivitet 97 Patientgruppe 98 PatientgruppeItem
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereTest af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
Læs mereTabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations
Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning
Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:
Læs mereForskellige Java versioner
Denne guide er oprindeligt udgivet på Eksperten.dk Forskellige Java versioner Denne artikel beskriver lidt om de forskellige Java versioner. Den forklarer J2SE/J2ME/J2EE, plugin/jre/sdk og Sun Java/Microsoft
Læs mereKursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Læs mereI denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Læs mereCVS som KS-værktøj E3-104. Branching, Merging m.v.
CVS som KS-værktøj E3-104 Branching, Merging m.v. Gennemgang af Oprettelse af CVS-træ Tilføj filer Commit Fil forskelle Merging Branching Ekstra værktøjer Avanceret Oprettelse af CVS-træ report graphics
Læs mereAlgoritmeskabeloner: Sweep- og søgealgoritmer C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte
Læs mereStart på Arduino og programmering
Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget
Læs mereForelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999
sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid
Læs mereLinguistic support for unit testing
Linguistic support for unit testing Af K. E. Gray & M. Felleisen Mads Bach-Sørensen mbs@cs.aau.dk 1. november 2007 1 Indhold Forfatterne TestJava Traditionel Unit-testing Sproglige Konstruktioner i TestJava
Læs mereAsymptotisk analyse af algoritmers køretider
Asymptotisk analyse af algoritmers køretider Analyse af køretid (RAM-modellen vs. virkeligheden) public class Linear { public static void main(string[] args) { long time = System.currentTimeMillis(); long
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%
Læs mereSekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen
Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.
Læs merePrioritetskøer ved»heap«, simulering
Datastrukturer & Algoritmer, Datalogi C Forelæsning 25/11-2003 Prioritetskøer ved»heap«, simulering Yet another teknik til at repræsentere mængder Hvor hashtabellen fremviste: Konstant tid for finde og
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)
Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer
Læs mereKursusarbejde 3 Grundlæggende Programmering
Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................
Læs mereDM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7
DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4
Læs mereHashing og hashtabeller
Datastrukturer & Algoritmer, Datalogi C Forelæsning 12/11-2002 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt
Læs mereMed register_globals = On får du automatisk adgang til en række variabelnavne i dit script.
Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.
Læs mereDatabase programmerings tips
Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler
Læs mereFind største element, sæt det på sidste plads. Grundidé i hobsortering. er er
Programming 1999 KVL Side 19-2 Tidsforbruget, dvs asymptotisk proportionalt med Sorting af element: Tidsforbrug de mindste element, sortet øvrige element 0 Løkkeinvariant for udvalgssorting osv Find tredjemindste
Læs mereKlasser og nedarvning
Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere
Læs mereIndledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?
Læs mere