Programmering i C++ - 2. semester - D/E-retning

Indtil 2004

Indledning

På basis er det besluttet, at der skal være et grundlæggende kursus i programmering på D og E-retningerne. I Esbjerg har man besluttet, at dette skal foregå i C++. Det er derpå blevet besluttet, at det skal være i et Windows-miljø, hvorfor man her anvender Borlands C++ Builder, som det praktiske værktøj.
Kurset er et StudieEnhedskursus (SE-kursus), det betyder bl.a. at kurset evalueres med en eksamen.
Kurset evalueres ved en mundtlig prøve. Bedømmelsen vil der blive afsluttet med et Bestået eller Ikke bestået. Bedømmelsen vil blive baseret på en diskussion over et miniprojekt.
Miniprojektet er en større skriftlig opgave inde for det gennemgåede pensum. Miniprojektet kan udarbejdes af hele gruppen i fællesskab, eller gruppen kan beslutte at dele sig i undergrupper, på basis af aktuelle interesser. Et miniprojekt er et program udarbejdet i Borland C++ Builder, programmet skal demonstreres i funktion under gruppens fremlæggelse. Programmet skal være velstruktureret, læseligt og med forståelige kommentarer i tilstrækkeligt omfang.
Arbejdsindsatsen for miniprojektet forventes at svare til ca. 2 dage pr. deltager i projektgruppen. Under udarbejdelsen af miniprojektet vil der være mulighed for at få hjælp af kursusholderen i begrænset omfang.

Om disse hjemmesider

Man vil ikke på disse sider finde en oversættelse af lærebogen. Forudsætningen for at forstå disse sider er, at man læser i lærebogen, hvorefter disse sider vil være supplering til lærebogens tekst. Desuden vil der på disse sider være ekstra eksempler og forslag til øvelser, som der kan arbejdes med i kursusperioden. Disse sider er ikke fuldstændig selvforklarende, det anbefales, at man inden hver lektion udskriver siderne og anvender siderne til at tage notater på, når programteksterne gennemgås.

Aflevering

Programmet afleveres til storgruppesekretæren i form af 2 stk. sidenummererede programudskrifter, samt 2 stk. disketter med kildetekster og hjælpefiler. Afleveringsfristen meddeles senest efter 6. kursusgang. Hvis gruppen selv har formuleret opgaven, skal gruppen endvidere selv formulere en kort beskrivelse af det problem, som programmet løser.

Husk klart at angive gruppe-nr. og navnene på alle deltagerne i miniprojektet, både på udskrifterne og på disketter/CD'er.

Eksamination

Den mundtlige prøve finder sted med de gruppemedlemmer, som har udarbejdet miniprojektet sammen. Rækkefølgen af gruppernes eksamination vil fremgå af eksamensplanen.
Hver studerende medbringer en kopi af miniprojektet, som er identisk med den afleverede kopi, dvs. både udskrift og diskette. Eksaminationen starter med en kort demonstration af det udviklede program på en PC i eksamenslokalet. Hver studerende eksamineres via en samtale i kursets teoretiske stof. Samtalen belyser det teoretiske stof så vidt muligt med udgangspunkt i det udviklede program.
Der afsættes ca. 15 min. pr. studerende til eksamen, dvs. 45 min., til en gruppe med 3 studerende. Bedømmelsen foretages individuelt og er en helhedsvurdering med hovedvægten lagt på den mundtlige præstation.
Pensum fremgår af disse hjemmesider.

Projektemner

Emnet for miniprojektet fastlægges efter projektgruppens valg. Nedenfor er vist nogle eksempler på miniprojekter, men gruppen er velkommen til selv at finde på projekter. Gruppen kan efter ønske få en vurdering af egnetheden af egne forslag til et miniprojekt. Dette sker ved henvendelse til kursusholderen.

Følgende er eksempler på emner til miniprojekter:

  1. Database, med mulighed for at indsætte data, redigere data, slette data og udskrive data både til skærmen og på papir, f.eks. med et af følgende emner, grupperne må også selv finde andre emner.
    Advarsel: Brug ikke Builderens indbyggede databasefunktion, hvis der kun udarbejdes et simpelt databaseprogram, I vil udvikle. Det vil give for lidt programmering, og så er der risiko for at dumpe:
        a. Adresselister
        b. CD-kartoteker
        c. Bogregistrer

  2. Matematiske programmer, som beregner volumen, overflade, tyngdepunkt osv. af geometriske emner.

  3. Diassjov, f.eks. billeder af familien eller en sommerferie, billederne kan enten vises sekventielt eller med mulighed for at vise billederne i tilfældig orden.

  4. Oprettelse af en aftalekalender.

  5. Spil.
        a. Hangman
        b. Yatzy
        c. Mastermind
        d. Kabaler
        e. Minefelt
        f. Mahjong
        g. Find selv på andre

  6. Histogrammer til illustration af statistiske problemer.

  7. Opgave i tilknytning til gruppens P1?

For at man skal have en rimelig chance for at bestå eksamen skal, der i programmet indgå både løkker og forgreninger, det er ikke nok med blot en enkelt løkke og eller en enkelt forgrening. Hvis I er i tvivl så tal med vejlederen, således at I ved, om omfanget af programmeringen kan tilfredsstille eksamenssituationen.

Læsevejledning og bogliste

Da lærebogen endnu ikke er ankommet, kan det anbefales, at man læser lektionerne på hjemmesiderne på adressen:
     www.aue.auc.dk/c-kursus.

  1. Introduktion til Borland C++ Builder
         Lærebogen siderne 1 - 16 og 165 - 190
         Gennemgang af programmeringsfladen
         Ethvert Windows-program er hændelsesstyret (Event driven)
         Et simpel program udarbejdes
  2. Farver og billeder
        Lærebogen siderne 261 - 297 og 357 - 274
       
Indsætning af objekter (komponenter) på en form
        Konstruktion af kode til at få objekterne til at reagere
        Et simpelt eksempel på træk og slip teknik til flytning af egenskaber
  3. Typebegrebet og listebokse

        Lærebogen siderne 17 - 43 og 279 - 292
       Gennemgang af typer til erklæring af variabler
       Konstruktion af kode til demonstration af heltalstyper
       Konstruktion af et program til demonstration af tekster
       Konstruktion af program med forskellige funktioner i relation til Listebokse
  4. Menuer og mere om hændelsesstyring
       Lærebogen siderne 129 - 148 og 241 - 259
       Der fremstilles et lille program, hvor funktionerne styres via en menu
       Der fremstilles et eksempel med en Popup-menu
       De næste eksempler handler om afkrydsningsknapper og alternativknapper
       Sidste eksempel viser, hvorledes man kan registrere forskellige museklik
  5. Forgreninger, løkker og selvdefinerede typer
       Lærebogen siderne 43 - 78
       Simple forgreninger og forgreninger med flere valg
       Tælleløkker og uendelige løkker
       Tabeller og poster
       Selvdefinerede typer
  6. Procedurer og funktioner
       Lærebogen siderne 79 - 110 og 317 - 334
       Der arbejdes med selvdefinerede procedure og funktioner
       Der arbejdes med pointerbegrebet
  7. Units uden forme og flere forme og dialogbokse
       Lærebogen siderne 111 - 128 og 191 - 206
       Der oprettes et matematik unit, som kan anvendes ved matematiske beregninger i forskellig sammenhæng
       Der oprettes en dialogboks til indstilling af andre forme
  8. Strenge og faneblade
       Lærebogen siderne 149 - 164 og 207 - 240
       Der udarbejdes et program, som udskriver standard tegnsættet
       Der arbejdes med AnsiString-begrebet
       Der oprettes et program med flere sider fordelt på faneblade
  9. Filer og filhåndtering
       Lærebogen siderne 299 - 316 og 335 - 355 og 383 - 396
       Tekst under udarbejdelse
10. Projekteksempler
       Lærebogen siderne 375 - 382 og 397 - 426
       Der introduceres et Mastermind-spil
11. Projekteksempler
       Der introduceres et Yatzy-spil
12. Projekteksempler
       Der introduceres en kabale med et fuldt kortspil

Lærebogen der undervises efter er:

                    Ken Reisdorph, Teach Yourself Borland C++ Builder 4 in 24 hours, SAMS, 1999 eller nyere udgave                     

Andre bøger der kan anbefales:

God grundbog
Deitel & Deitel, C How To Program, Introducing C++ and Java, Prentice Hall

Bøger specielt om C++ Builder
John Miano, m.fl., Borland C++ Builder HOW-TO, Waite Group Press. Dårlig som lærebog, men indeholder mange gode praktiske eksempler
Kent Reisdorph, m.fl., Borland C++ Builder 3 eller 4 Unleashed, SAMS Borland Press. Bogen til version 3 har de bedste eksempler for begyndere, i øvrigt handler begge bøger meget om Builderens databasefunktioner.
Jarrod Hollingworth, m.fl., C++ Builder 5 Developer's Guide, SAMS Publishing. En næsten komplet vejledning til C++ Builder, indeholder mange praktiske eksempler, men bogen kan godt virke lidt svært tilgængelig, den kræver en del kendskab til generel C++, for at man får det fulde udbytte af bogen.

Lærebogen er obligatorisk, de øvrige bøger er dyrere og mere omfattende end dem, som er listet først. Det er valgfrit at købe disse, de anbefales kun til dem, som ønsker at vide mere end det, der gennemgås på kurset.

En internetadresse, hvor der kan hentes meget inspiration til projekter, er: www.programmersheaven.com, men der ud over, findes der et væld af adresser med C++ programmører, som gerne vil dele erfaringer på nettet, hvis man har tid. Ofte er princippet det, at man ikke blot kan få. Hvis man afleverer ideer, får man derpå adgang til andres erfaring og viden.