Skip navigation

Bookboon.com Gratis studiebøger og e-bøger

Choose a category

C# 5

Implementering af algoritmer og datastrukturer

C# 5
Ingen anmeldelse endnu
ISBN: 978-87-403-0505-0
1. udgave
Sider : 282
  • Pris: 75,50 kr
  • Pris: €8,99
  • Pris: £8,99
  • Pris: ₹150
  • Pris: $8,99
  • Pris: 75,50 kr
  • Pris: 75,50 kr

4 nemme skridt til din e-bog

Vi beklager, men for at kunne downloade vores bøger eller se vores videoer, kræves det at din browser tillader JavaScript.
Efter du har indtastet din email addresse, modtager du en bekræftelsesmail. Venligst acceptér denne for at modtage vores ugentlige eBooks update. Vi giver ikke din personlige information videre.
eLib
Opnå din organisations potentiale
Se Demo

Corporate eLibrary

Se vores erhvervsløsninger til intern uddannelse

Dette er en Premium eBog

Bookboon Premium - Få adgang til over 800 eBøger - uden annoncer

Du kan få gratis adgang i 30 dage til denne - og 800 andre bøger via Premium abonnementet. Du kan også købe bogen nedenfor

  • Start et 30 dages prøveabonnement. Efter 30 dage: 39,99 kr pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: €5,99 pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: £4,99 pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: ₹299 pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: $3,99 pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: 39,99 kr pr/måned
  • Start et 30 dages prøveabonnement. Efter 30 dage: 39,99 kr pr/måned
eLib
Opnå din organisations potentiale
Klik her

Corporate eLibrary

Se vores erhvervsløsninger til intern uddannelse

Om bogen

  1. Beskrivelse
  2. Indledning
  3. Indholdsfortegnelse
  4. Om forfatteren
  5. Appendiks

Beskrivelse

Bogen er en praktisk introduktion til algoritmer og collection klasser, og hvordan de kan implementeres i C#. Den første del omhandler algoritmer og analyse af algoritmer primært mht. deres tidsforbrug og herunder specielt algoritmer til søgning og sortering. Bogens anden del behandler de klassiske datastrukturer som f.eks. træer og grafer. Vedr. træer er der primært fokus på binære søgetræer og herunder balancerede træer. Kapitlet om grafer giver et eksempel på implementering af en graf og i tilknytning hertil en implementering af nogle af de klassiske grafalgoritmer.

Indledning

Denne bog er sammen med de andre bøger i denne serie en bog om programmering og C#. Når man taler om programmering, tænker man på metode, og hvordan man i praksis skriver gode programmer, og når man taler om C#, tænker man på programmeringssprog, og hvordan man skriver de enkelte sætninger til et program. De to begreber er naturligvis ikke uafhængige, og er vel to sider af samme sag, og man er ikke en god programmør, med mindre man er god til begge dele: Man skal kende og bruge velafprøvede metoder, og man skal kunne sit sprog. Denne bog har primært fokus på metode.

Man hører ofte, at programmering er svær at lære, hvilket nok også er korrekt. I hvert fald er der mange, som opgiver, men det skyldes nu nok mere, at man ikke finder programmering særlig spændende, end fordi det er svært, og faktisk er det endda blevet lettere, end det har været. Det er blevet lettere med fremkomsten af nye programmeringssprog, som dels kan lette arbejdet, da man skal skrive mindre, og dels resulterer i mere robuste programmer, fordi sprogene stiller en langt større værktøjskasse til rådighed, end tidligere var tilfældet. Omvendt er kravene til de programmer, der skal laves, vokset tilsvarende, og set fra programmørerne er udfordringerne egentlig de samme, at kunne udarbejde en god algoritme til at løse et konkret problem. Alle programmer er ikke lige heldige, og der er masser af eksempler på programmer, som er ineffektive og løser bestemte opgaver på en uhensigtsmæssig måde, og ofte er problemet, at der ikke har været fokus på algoritmen, men at man i lang større udstrækning har haft fokus på at få opgaven løst uden at skele til, hvordan opgaven blev løst. Derfor er algoritmen én af de to centrale emner i denne bog.

I virkeligheden skulle jeg nok have startet min historie om programmering med algoritmer, da det er det, som det hele drejer sig om. Man skal være god til algoritmer for at være en god programmør, men det gør det ikke alene, og en anden vigtig ting er motivation og herunder lysten til at arbejde med programmering og softwareudvikling. Man kan lære om algoritmer og metode, men man kan ikke skrive færdige programmer, som kan køre på en maskine, uden at have et programmeringssprog. Derfor starter de fleste indgange til programmeringsfaget med sproget, fordi man på den måde hurtigt når frem til at kunne skrive færdige programmer. De fleste vil gerne hurtigt "have fingrene på tasterne" og skrive færdige programmer, som laver noget interessant.

Denne bog er inddelt i to dele, og den første del omhandler algoritmer. Den første del belyser nogle vigtige begreber inden for algoritmer og herunder teknikker til at skrive algoritmer samt teknikker til at vurdere algoritmers egenskaber i forhold til hinanden. Bogens anden del omhandler datastrukturer og har i tilknytning hertil også stor fokus på algoritmer. Bogens del 1 er således en forudsætning for bogens del 2, som beskriver de klassiske datastrukturer.

En datastruktur er blot et andet navn for det, som .NET kalder for en collection klasse. Målet er at beskrive og forklare de klassiske collection klasser, men også at implementere dem som færdige klasser skrevet i C#. Man kan spørge, hvorfor man skal det, når nu de allerede findes som færdige og afprøvede klasser, og det er der to årsager til. For det første er det vigtigt at vide, hvordan klasserne er lavet, så man ved hvordan klassernes metoder i princippet virker og har de egenskaber, som dokumentationen beskriver. Kun med den viden til rådighed er man i praksis i stand til at træffe de rigtige valg og vælge den collection klasse, som passer bedst på den algoritme, som man skal skrive. Som en anden begrundelse for at beskæftige sig med implementeringen af de klassiske collection klasser kan nævnes, at ved at studere disse implementeringer introduceres man til nogle teknikker og metoder, som er vigtige for praktisk programmering. Det er altså vigtigt at understrege, at det ikke er målet at skrive et nyt collection API og collection klasser, som skal erstatte de klasser, som kommer som en del af .NET, men målet er at forklare, hvordan disse klasser i princippet er implementeret.

Da mange af datastrukturerne og også de eksempler, som skal illustrere anvendelser af både algoritmer og datastrukturer fylder meget, har jeg kun i begrænset udstrækning medtaget koden som en del af bogens tekst. Det er i modsætning til de øvrige bøger i samme serie, hvor sproget og dermed programkoden har været i centrum. For at få det fulde udbytte af bogen er det derfor vigtigt, at du også studerer de færdige programmer, og her specielt hvordan datastrukturerne er implementeret i C#. Al koden er samlet i en Visual Studio solution, som igen indeholder to projekter. Det ene projekt er et class library og dermed det projekt, som det hele drejer sig om. Dette library indeholder en række algoritmer fra del 1 (typisk implementeret som statiske metoder og evt. som extension metoder) samt alle collection klasser forklaret i del 2. Det andet projekt indeholder testklasser til algoritmer og collection klasser fra class librariet. Da selve programkoden kun i mindre grad er forklaret i bogens kapitler har jeg til gengæld gjort mere ud af kommentarer i koden, og den præcise forklaring til programkoden skal findes i disse kommentarer.

Indholdsfortegnelse

Forord

    Del 1: Algoritmer

  1. Eksempler på algoritmer
    1. Rekursion
    2. Søgning
    3. Fibonacci tallene
    4. Euklids algoritme
    5. Tværsum
    6. Primtal
  2. Sweep
  3. Algoritme analyse
    1. Kompleksiteten af lineær søgning
    2. Tidskompleksitet af binær søgning
    3. Flere eksempler
    4. Summen af det mindste og største tal
    5. Sortering
    6. Definition af kompleksitetsmål
    7. Merge
    8. Tidskompleksitet i praksis
    9. Pladskompleksitet
    10. Medianen
  4. Korrekthed af algoritmer
    1. Korrekthed af Euklids algoritme
  5. Sortering
    1. Bubble sort
    2. Selection sort
    3. Insertion sort
    4. Shell sort
    5. Merge sort
    6. Del, løs og kombiner
    7. Quick sort
  6. Backtracking
    1. Permutation
  7. Grådige algoritmer
  8. Dynamisk programmering
    1. Primtal
    2. 0/1 Knapsack problemet
  9. Del 2: Collectionklasser

  10. Array
  11. Sequence
  12. Stack
  13. Buffer
  14. Lister
    1. Enkelthægtet liste
    2. Dobbelthægtede lister
    3. Andre muligheder
    4. En ordnet liste
  15. Køer
    1. Prioritets kø
  16. Bitmap
    1. Eratosthenes
  17. Træer
    1. Binære træer
    2. Binære søgetræer
    3. Egenskaber ved binære træer
    4. AVL træ
    5. Rødt-sort træ
    6. Afslutning på binære træer
    7. Søgetræer
    8. B træer
    9. B+ træer
  18. Heap
    1. Klassen BinaryHeap
    2. Klassen Heap
    3. Heap sort
    4. Priority queue
  19. Hashing
    1. Klassen Hashing
    2. Set
    3. HashTable
  20. Grafer
    1. Implementering
    2. GraphTools
    3. Traversering af grafer
    4. Korteste veje
    5. Topologisk sortering
    6. Mindst udspændende træ

Om forfatteren

Poul Klausen er uddannet cand. scient. i matematik fra Aarhus Universitet med speciale i algebraisk topologi. Efter universitetet og et efterfølgende pædagogikum har Poul Klausen primært arbejdet som underviser og det især inden for it uddannelser og gennem de sidste mange år som underviser på datamatiker uddannelsen. Her har han især undervist i programmering og har i den sammenhæng både beskæftiget sig med og undervist i en række forskellige programmeringssprog og herunder også C#. Ud over programmering har Poul Klausen beskæftiget sig med andre emner inden for systemudvikling, hvor specielt kan nævnes design, modellering og databaser. Han har desuden undervist i mere tekniske fag som operativsystemer og computer netværk.

Ud over undervisning har Poul Klausen arbejdet i det private som softwareudvikler dels i perioder som fuldtids systemudvikler og dels parallelt med jobbet som underviser. Opgaverne har været mange og specielt kan nævnes udvikling af administrative løsninger og en række web relaterede produkter. I de sidste år har Poul Klausen i forbindelse med praktisk systemudvikling primært beskæftiget sig med business intelligence, og i relation hertil har han primært interesseret sig for data mining.

This website uses cookies to improve user experience. By using our website you consent to all cookies in accordance with EU regulation.