# Information Technology Grade 12 P1 NSC November 2021 Memo

> Grade 12 Information Technology Paper 1 memorandum from the NSC November Exam 2021 (Afrikaans), 23 pages. Read online or download the free PDF.

- Page: https://www.hlayiso.com/library/information-technology-p1-nov-2021-mg-afr/a6e7a37a-edf0-43a3-946d-eeafc7051d4b
- Updated: 2026-10-29
- Subject: Information Technology
- Grade: Grade 12
- Document type: Memorandum
- Year: 2021
- Exam period: NSC November Exam
- Paper: 1
- Curriculum: CAPS
- Pages: 23

Breadcrumbs: [Home](https://www.hlayiso.com/) › [Library](https://www.hlayiso.com/library) › [Grade 12](https://www.hlayiso.com/library/grade-12) › [Information Technology](https://www.hlayiso.com/library/grade-12/information-technology) › [Information Technology Grade 12 P1 NSC November 2021 Memo](https://www.hlayiso.com/library/information-technology-p1-nov-2021-mg-afr/a6e7a37a-edf0-43a3-946d-eeafc7051d4b)

## About this document

Information Technology · Grade 12 · NSC November Exam · 2021. Memorandum. Read online or download the PDF.

Read it free online on the page above; download the PDF from there.

## Document text

Text extracted from the PDF. Layout, diagrams and tables may not survive extraction.

### Page 1

Downloaded from hlayiso.com

                                  NASIONALE
                              SENIOR SERTIFIKAAT

                                     GRAAD 12

                            INLIGTINGSTEGNOLOGIE V1

                                   NOVEMBER 2021

                                   NASIENRIGLYNE

PUNTE: 150

                      Hierdie nasienriglyne bestaan uit 23 bladsye.

Kopiereg voorbehou                                                    Blaai om asseblief

### Page 2

Downloaded from hlayiso.com
Inligtingstegnologie/V1                        2                       DBE/November 2021
                                    NSS – Nasienriglyne

ALGEMENE INLIGTING:

     Hierdie nasienriglyne moet as die basis vir die nasiensessie gebruik word. Dit is
      voorberei om deur nasieners gebruik te word. Daar word na alle nasieners
      verwag om 'n deeglike standaardiseringsvergadering by te woon om seker te
      maak dat die riglyne konsekwent geïnterpreteer en tydens die nasien van die
      kandidate se werk toegepas word.

     Let op dat leerders wat 'n alternatiewe korrekte oplossing as wat as voorbeeld
      van 'n oplossing in die nasienriglyne gegee word verskaf, volle krediet vir die
      relevante oplossing moet kry tensy die spesifieke instruksies in die vraestel nie
      gevolg is nie of die vereistes van die vraag nie nagekom is nie.

     Bylaag A, B, C en D (bladsy 3 tot 10) sluit die nasienrubriek vir elke om te
      gebruik vir enigeen van die twee programmeringstale in.

     Bylaag E, F, G en H (bladsy 11 tot 22) bevat voorbeelde in programmeringskode
      van oplossings vir Vrae 1 tot 4.

     Kopieë van Bylaag A, B, C, D en die opsomming van die leerder se punte
      (bladsy 3 tot 10) moet vir elke leerder gemaak word en tydens die nasiensessie
      voltooi word.

Kopiereg voorbehou                                                         Blaai om asseblief

### Page 3

Downloaded from hlayiso.com
Inligtingstegnologie/V1                         3                       DBE/November 2021
                                        NSS – Nasienriglyne

BYLAAG A
VRAAG 1: NASIENRUBRIEK - ALGEMENE PROGRAMMERINGSVAARDIGHEDE
SENTRUMNOMMER:                             EKSAMENNOMMER:
                                                                                 MAKS. LEERDER-
VRAAG                              BESKRYWING
                                                                                 PUNTE   PUNT
1.1       'FormCreate'-gebeurtenis

          Stel caption van lblV1_1 op 'Coding is ' 
          Stel font se kleur van lblV1_1 op groen                                   4
          Stel grootte van skrif van lblV1_1 op 16 
          Stel naam van skriftipe op 'Arial' 

1.2       Knoppie - [1.2 – Getal rolletjies]

          Skep konstante LEKKERS_PER_ROL = 8
          Verklaar heelgetalveranderlikes 
          Onttrek getal rustye uit spin edit 
          Bereken total getal lekkers (rustye x 4) 
                                                                                     8
          Bereken total aantal rolletjies
          (lekkers / LEKKERS_PER_ROL) // OF (lekkers/8)
              Rond op deur Ceil-funksie te gebruik 
          Vertoon getal rolletjies lekkers op lblV1_2 
             omgeskakel na String 

1.3       Knoppie – [1.3 – Bereken volume]

          rRadius := 3;
          rVolume := rTetraVolume + 4/3* PI  *
          power(rRadius,3) /2 
          Vertoon
          Deur ShowMessage te gebruik met ”Volume “-teks 
          Waarde van volume 
          Geformatteer na een desimale plek 
                                                                                     7
          Let wel:
          In die formule:
          Aanvaar die waarde van 133 in plaas van rTetraVolume
          Aanvaar die waarde van 3 in plaas van rRadius
          In plaas van PI, aanvaar 22/7 of 3.14
          In plaas van 4/3, aanvaar 1.33
          Aanvaar enige korrekte alternatief vir power(rRadius, 3) waar die
          antwoord = 27
          Aanvaar * 0.5 in plaas van /2

Kopiereg voorbehou                                                            Blaai om asseblief

### Page 4

Downloaded from hlayiso.com
Inligtingstegnologie/V1                           4                       DBE/November 2021
                                          NSS – Nasienriglyne

1.4       Knoppie - [1.4 – Vertoon patroon]

          Maak afvoerarea skoon 
          Verkry simbool uit combo box 
          iGrootte = posisie van simbool in combo box  // (indeks + 1)
          Lus  rye van 0  tot iGrootte  // Lus van 1 tot iGrootte
             Inisialiseer afvoerstring  (Of voeg #13 by)
             Geneste Lus  kolomme van 0 tot iGrootte 
                  Voeg simbool by afvoerstring 
                                                                                  11
             Vertoon afvoerstring 

          Let wel:
          Die beginwaarde van die lus sal afhang van of 1 by die iGrootte
          getel is (of 0 of 1)
          „n Korrekte oplossing wat nie van „n geneste lus gebruik maak nie
          moet met 1 punt gepenaliseer word
          Die punt wat aan die geneste luswaardes toegeken word moet
          dieselfde as die buitenste lus wees
1.5       Knoppie - [1.5 – Karakters]

          Genereer ewekansig „n aanvaarbare waarde 
          Gebruik die waarde om die ooreenstemmende karakter te
          onttrek
          Lus 
            Voeg karakter  by afvoerstring 
            Stel huidige karakter as vorige karakter                             10
            Genereer nuwe huidige karakter 
          Totdat huidige karakter  = vorige karakter 
          Vertoon afvoerstring 

          Let wel:
          ACSII-tabel in die reeks van 65 tot 91
          String, skikking of case-stelling bv. 1 tot 26
                                                      TOTAAL AFDELING A:          40

Kopiereg voorbehou                                                            Blaai om asseblief

### Page 5

Downloaded from hlayiso.com
Inligtingstegnologie/V1                          5                    DBE/November 2021
                                         NSS – Nasienriglyne

BYLAAG B
VRAAG 2: NASIENRUBRIEK – SQL EN DATABASISPROGRAMMERING

SENTRUMNOMMER:                              EKSAMENNOMMER:
                                                                        MAKS. LEERDER-
 VRAAG                              BESKRYWING
                                                                        PUNTE   PUNT
2.1          SQL-stellings
2.1.1         Knoppie [2.1.1 – Klubs van Gauteng en SA-geaffilieer]
              SELECT KlubNaam, KlubDorp FROM tblKlubs 
              WHERE Provinsie = "GP" 
              AND SA_Geaffilieer = True                                   3

              Aanvaar WHERE Provinsie LIKE "%GP%" OF enige
              korrekte gebruik van LIKE
2.1.2         Knoppie [2.1.2 – Geboortejaar]
              SELECT LidNaam, LidVan, GeboorteDatum 
              FROM tblLede 
              WHERE year(GeboorteDatum) = 2002 

              Alternatiewe vir jaar:                                       3
              WHERE year(GeboorteDatum) = "2002"
              BETWEEN #2002/01/01# AND #2002/12/31#
              LEFT(GeboorteDatum,4)
              MID(GeboorteDatum,1,4)
              LIKE "%2002%" OF LIKE "2002%"
2.1.3         Knoppie [2.1.3 – Vertoon lede]
              SELECT LidVan, LidNaam 
              FROM tblKlubs,tblLede 
              WHERE tblKlubs.KlubID = tblLede.KlubID 
              AND KlubNaam = "' + sKlubNaam + '"'

              Aanvaar ook JOIN
              SELECT LidVan, LidNaam
              FROM tblKlubs INNER JOIN tblLede                             4
              ON tblKlubs.KlubId = tblLede.KlubId
              WHERE tblKlubs.KlubNaam = "' + sKlubNaam +'"'

              QuotedStr(sKlubNaam)

              Aanvaar die gebruik van „aliasses‟

Kopiereg voorbehou                                                       Blaai om asseblief

### Page 6

Downloaded from hlayiso.com
Inligtingstegnologie/V1                        6                      DBE/November 2021
                                       NSS – Nasienriglyne

2.1.4         Knoppie [2.1.4 – Gemiddelde lidmaatskapfooi]
              SELECT Provinsie,
              FORMAT(AVG(LedeGeld) ,"CURRENCY")
              AS GemFooi 
              FROM tblKlubs
              GROUP BY Provinsie                                           6
              HAVING AVG(LedeGeld) > 400 

              Aanvaar ook:
              FORMAT(AVG(LedeGeld), "R0.00")

2.1.5         Knoppie [2.1.5 – Verander naam van lid]
              UPDATE tblLede                                               3
              SET LidNaam = "Ainsley" 
              WHERE LidNaam = "Aiensley"

                                                             Subtotaal:    19

Kopiereg voorbehou                                                        Blaai om asseblief

### Page 7

Downloaded from hlayiso.com
Inligtingstegnologie/V1                          7                          DBE/November 2021
                                         NSS – Nasienriglyne

VRAAG 2: NASIENRUBRIEK (VERVOLG)

2.2          Databasisprogrammering
2.2.1        Knoppie [2.2.1 – Uitstaande fooie]

             Gaan na eerste rekord in die tblKlubs 
             Gebruik lus om deur die tblKlubs tabel te stap 
               Vertoon die klub se naam en jaarlikse fooi vir elke klub 
               Gaan na die eerste rekord van die tblLede tabel 
               Gebruik 'n geneste lus om deur tblLede te stap 
                 As die KlubID-veld in tblKlubs = die
                      KlubID-veld in tblLede 
                         Bereken uitstaande fooi 
                         // Ledegeld – BedragBetaal                              12
                      Vertoon die van, bedrag betaal en uitstaande
                            bedrag in die richedit 
                  Beweeg na volgende rekord in tblLede 
               Eindig lus (Lede tabel)
               Beweeg na volgende rekord in tblKlubs 
             Eindig lus (tblKlubs)

             Let wel:
             Aanvaar die repeat ..until-lus in plaas van die While-lus met
             die regte voorwaardes
2.2.2        Knoppie [2.2.2 – Dateer voltooide roetes op]

             Edit-mode                                                          4
             Voeg 1  by RoetesVoltooi-veld 
             Post 
2.2.3        Knoppie [2.2.3 – Voeg lid by]

             Verkry die KlubID uit die radiogroup 
             Insert-mode 
             Ken waardes toe aan regte velde                                    5
             Ken die KlubID wat verkry is aan KlubID-veld toe 
             Post 

             Aanvaar tblLede.Append
                                                                Subtotaal:       21

                                                  TOTAAL AFDELING B:             40

Kopiereg voorbehou                                                             Blaai om asseblief

### Page 8

Downloaded from hlayiso.com
Inligtingstegnologie/V1                             8                           DBE/November 2021
                                            NSS – Nasienriglyne

BYLAAG C

VRAAG 3: NASIENRUBRIEK - OBJEK-GEÖRIENTEERDE PROGRAMMERING

SENTRUMNOMMER:                                  EKSAMENNOMMER:
                                                                                  MAKS. LEERDER-
VRAAG                                  BESKRYWING
                                                                                  PUNTE   PUNT
3.1.1         getGetalDae funksie
              Opskrif van funksie met heelgetalwaarde as terugstuurtipe             2
              fGetalDae aan Result toegeken 
3.1.2         berekenAfstPerDag
              Funksie se opskrif met integer as terugstuur-tipe                     3
              Result = round  (fAfstand/fGetalDae) 
3.1.3         bepaalVlak funksie
              afstand per dag = berekenAfstPerDag 
              As afstand per dag > 15 EN
                  (tipe terrein = „rocky‟  of tipe terrein = „sandy‟) 
                 // (tipe terrein = „rotsagtig‟ of tipe terrein = „sanderig‟)
                 'Gevorderde' toegeken aan Result 
              Anders 
                                                                                     10
               As afstand per dag van 10  tot 15 is  // ingesluit
                 Result = 'Gemiddelde' 
               Anders
                 Result = 'Maklike' 
              Aanvaar ook:
              As afstand per dag > 15 // 1 punt
              en (NOT(tipe_terrein == „Flat‟)) // 2 punte
3.1.4         berekenTotKoste funksie
              Opskrif van funksie met real as terugstuur datatipe 
              en heelgetal parameter 
                                                                                     4
              Result = fKoste * parameter 
              Aanvaar ook currency, string of integer as terugstuurtipe op
              voorwaarde dat dit reg gebruik is
3.1.5         toString metode

              Opskrif van funksie met String terugstuur datatipe 
              Stuur roeteNaam, tipeTerrein, afstand, getal dae,                      4
              koste terug 
              Omgeskakel na regte formaat 
              Regte teks en reel-onderbrekings 
                                                         Subtotaal: Objekklas        23

Kopiereg voorbehou                                                                 Blaai om asseblief

### Page 9

Downloaded from hlayiso.com
Inligtingstegnologie/V1                           9                     DBE/November 2021
                                          NSS – Nasienriglyne

VRAAG 3: NASIENRUBRIEK (VERVOLG)

                                                                           MAKS.      LEERDER
 VRAAG                               BESKRYWING
                                                                           PUNTE       - PUNT
3.2.1         Combobox - cmbStapRoetes

              Assignfile met lêernaam wat verkry is + '.txt' 
              Reset lêer 
              Lees 4 reels uit lêer 
              Instansieer die objStapRoete-objek:                             8
              objStapRoete  := TStapRoete.Create 
                   Gebruik vyf argumente 
                      (sRoeteNaam,sTerrein,iGetal,iAfstand,rKoste)
                   met regte datatipes en in die regte volgorde 
              Vertoon boodskap deur „n showMessage te gebruik 

3.2.2         Knoppie [3.2.2 – Vertoon besonderhede van staproete]

              Gebruik objStapRoete.toString-metode 
                                                                              2
              om inligting van staproete in die rich edit-komponent te
              vertoon 

3.2.3         Knoppie [3.2.3 – Vertoon koste]

              Sleutel getal lede in groep in 
              Koste = objStapRoete.berekenTotKoste -metode                  4
              (groepgrootte) 

              Aanvaar berekenKoste as naam van die funksie
3.2.4         Knoppie [3.2.4 – Afstand per dag]
              Vertoon getal km deur die gebruik van
              IntToStr(objStapRoete.berekenAfstPerDag) 
              Vertoon moeilikheidvlak deur die gebruik van
              objStapRoete.bepaalVlak                                        3
              Vertoon die getal dae deur die gebruik van
              IntToStr(objStapRoete.getGetalDae) 
              Aanvaar die moeilikheidgraad vertoon in kleinletters of
              hoofletters
                                             Subtotaal: Vormeenheidklas      17

                                                   TOTAAL AFDELING C:        40

Kopiereg voorbehou                                                         Blaai om asseblief

### Page 10

Downloaded from hlayiso.com
Inligtingstegnologie/V1                          10                       DBE/November 2021
                                         NSS – Nasienriglyne

BYLAAG D
VRAAG 4: NASIENRUBRIEK – PROBLEEMOPLOSSING
SENTRUMNOMMER:                                   EKSAMENNOMMER:
                                                                                 MAKS. LEERDER
VRAAG                                BESKRYWING
                                                                                 PUNTE - PUNT
4.1         Knoppie - [4.1 – Vertoon afstandskaart]
            Lus van 1 tot 5 
              Voeg naam by afvoerstring 
              Lus van 1 tot 5 
                Voeg afstand by afvoerstring 
              Vertoon afvoerstring  in rich edit                                    5
            Let wel:
            Twee stelle blokhakies kan gebruik word in plaas van
            indekswaardes wat met „n komma geskei word bv.
            arrAfstande[iRy][iKol]

4.2         Knoppie - [4.2 – Validering]
            Lus van 1 tot 5 
             Lus van 1 tot 5 
             Toets of afstand in [iRow,iCol] <> afstand in [iKol,iRy] 
              Toets of afstand in [iRow,iCol] < afstand in [iKol,iRy] 
                  Afstand in [iRow,iCol] = Afstand in [iKol,iRy] 
                      Bou string met ry- en kolom-indeks
                            en afstand                                              8
                  Vertoon afvoerstring 

            Aanvaar die lengte van die skikking in plaas van die waarde 5 in
            lusse
            Alternatiewe toets:
            Toets of afstand in [iRow,iCol] < afstand in [iKol,iRy] (2 punte)

Kopiereg voorbehou                                                              Blaai om asseblief

### Page 11

Downloaded from hlayiso.com
Inligtingstegnologie/V1                         11                     DBE/November 2021
                                        NSS – Nasienriglyne

4.3         Knoppie - [4.3 – Roetebeplanner]

            Onttrek roete uit combo box en
                      inisialiseer totale afstand 
            Lus 4 keer  (onttrek alle moontlike kombinasies)
                Onttrek die eerste kontrolepunt  (Ry se indeks)
                Onttrek die tweede kontrolepunt  (Kolom se indeks)
                Vee eerste 2 karakters uit  (logika om by volgende indeks
                      te begin)
                Lees afstand uit 2D  deur Ry en Kolom te gebruik
                Dateer totale afstand op  (Voeg afstand uit 2D by)               17
                Bereken tyd (tyd X afstand) 
                Toets of roete tussen 2 punte by 2 and 4 is OF 4 and 2 is 
                     Vermenigvuldig tyd met 2 
                Dateer tyd per dag op 
                Vertoon die name van die twee kontrolepunte 
                Vertoon afstand en tyd  (in enige formaat)
                Toets of tyd per dag > 480 
                    Vertoon naam van kontrolepunt om te bespreek 
                    Herstel tyd per dag na 0 
              Vertoon totale afstand 
                                                     TOTAAL AFDELING D:          30
                                                          GROOTTOTAAL:           150

OPSOMMING VAN LEERDER SE PUNTE:

SENTRUMNOMMER:                      LEERDER SE EKSAMENNOMMER:

                   AFDELING A AFDELING B AFDELING C AFDELING D
                                                                                       GROOT-
                     VRAAG 1      VRAAG 2          VRAAG 3       VRAAG 4
                                                                                       TOTAAL
   MAKS.
                          40          40               40            30                   150
   PUNTE

 LEERDER
 SE PUNTE

Kopiereg voorbehou                                                            Blaai om asseblief

### Page 12

Downloaded from hlayiso.com
Inligtingstegnologie/V1                12                DBE/November 2021
                               NSS – Nasienriglyne

BYLAAG E: OPLOSSING VIR VRAAG 1

//===================================================================
// Vraag 1.1          4 punte
//===================================================================
procedure TfrmVraag1.FormCreate(Sender: TObject);
begin
  lblV1_1.Caption := 'Coding is ';
  lblV1_1.Font.Color := clGreen;
  lblV1_1.Font.Size := 16;
  lblV1_1.Font.Name := 'Arial';
end;

//===================================================================
// Vraag 1.2          8 punte
//===================================================================
procedure TfrmVraag1.btnV1_2Click(Sender: TObject);
var
  iAantBreke, iAantRolle, iTotLekkers: integer;
const
  LEKKERS_PER_ROL = 8;
begin
  iAantBreke := spnV1_2.Value;
  iTotLekkers := iAantBreke * 4;
  iAantRolle := Ceil(iTotLekkers / LEKKERS_PER_ROL);
  lblV1_2.Caption := IntToStr(iAantRolle);
end;

//===================================================================
// Vraag 1.3          7 punte
//===================================================================
procedure TfrmVraag1.btnV1_3Click(Sender: TObject);
var
  rVolume, rRadius, rTetraVolume : real;
begin
  rRadius := 3;
  rTetraVolume := 133;
  rVolume := rTetraVolume + 4/3 * PI * power(rRadius,3)/2;
  ShowMessage('Volume: ' + FloatToStrF(rVolume,ffFixed,10,1));
end;

Kopiereg voorbehou                                          Blaai om asseblief

### Page 13

Downloaded from hlayiso.com
Inligtingstegnologie/V1                 13               DBE/November 2021
                                NSS – Nasienriglyne

//===================================================================
// Vraag 1.4          11 punte
//===================================================================
procedure TfrmVraag1.btnV1_4Click(Sender: TObject);
var
  sSimbool, sReel: String;
  iRye, iKol, iGrootte: integer;
begin
  redV1_4.Clear;
  sSimbool := cmbV1_4.Text;
  iGrootte := cmbV1_4.ItemIndex + 1;

   for iRye := 1 to iGrootte do
     begin
       sReel := '';
       for iKol := 1 to iGrootte do
          sReel := sReel + sSimbool + ' ';
     redV1_4.Lines.Add(sReel);
   end;

//Alternatiewe oplossing

 //for iRye := 1 to iGrootte do
 // sReel := sReel + sSimbool + ' ';
 //for iRye := 1 to iGrootte do
 // redV1_4.Lines.Add(sReel);
end;

//===================================================================
// Vraag 1.5          10 punte
//===================================================================
procedure TfrmVraag1.btnV1_5Click(Sender: TObject);
var
  cHuidigeKar: char;
  cVorigeKar: char;
  sAfvoer: String;
begin
//Kode wat voorsien is
  redV1_5.Clear;
  sAfvoer := ''; //veranderlike om afvoerstring te bou

  cHuidigeKar := Char(random(90 - 65 + 1) + 65);
  repeat
     sAfvoer := sAfvoer + cHuidigeKar;
     cVorigeKar := cHuidigeKar;
     cHuidigeKar := Char(random(90 - 65 + 1) + 65);
  until (cHuidigeKar = cVorigeKar);
  sAfvoer := sAfvoer + cHuidigeKar;
  redV1_5.Lines.Add(sAfvoer);
end;

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 14

Downloaded from hlayiso.com
Inligtingstegnologie/V1                14                DBE/November 2021
                               NSS – Nasienriglyne

BYLAAG F: OPLOSSING VIR VRAAG 2

//======================================================================
// Vraag 2.1 – Afdeling: SQL-stellings
//======================================================================

//======================================================================
// Vraag 2.1.1          3 punte
//======================================================================
     sSQL1 :=   'SELECT KlubNaam, KlubDorp
                FROM tblKlubs
                WHERE Provinsie = "GP"
                AND SA_Geaffilieer = true ';
                // of sonder = true

//======================================================================
// Vraag 2.1.2          3 punte
//======================================================================
     sSQL2 :=   'SELECT LidNaam, LidVan, GeboorteDatum
                FROM tblLede
                WHERE year(GeboorteDatum) = 2002';
     // Alternatief vir jaar: BETWEEN #01/01/2002# AND #31/12/2002#';

//======================================================================
// Vraag 2.1.3          4 punte
//======================================================================
     sSQL3 :=   'SELECT LidVan, LidNaam FROM tblKlubs,tblLede
                WHERE tblKlubs.KlubID = tblLede.KlubID
                AND KlubNaam = "' + sKlubNaam + '"';
//======================================================================
// Vraag 2.1.4          6 punte
//======================================================================
     sSQL4 :=    'SELECT Provinsie, FORMAT(AVG(LedeGeld),"CURRENCY") AS
                 GemFooi FROM tblKlubs ' +
                'GROUP BY Provinsie HAVING AVG(LedeGeld) > 400';
//======================================================================
// Vraag 2.1.5          3 punte
//======================================================================
     sSQL5 :=   'UPDATE tblLede
                SET LidNaam = "Ainsley"
                WHERE LidNaam = "Aiensley"';

//======================================================================
// Vraag 2.2 – Afdeling: Delphi-kode
//======================================================================

//======================================================================
// Vraag 2.2.1         12 punte
//======================================================================
   procedure TfrmDBQuestion2.btnV2_2_1Click(Sender: TObject);
   var
     rVerskil : real;
   begin
   // Vraag 2.2.1
      tblKlubs.First;

Kopiereg voorbehou                                          Blaai om asseblief

### Page 15

Downloaded from hlayiso.com
Inligtingstegnologie/V1                  15                DBE/November 2021
                                 NSS – Nasienriglyne

      while not tblKlubs.EOF do
        begin
          redV2_2_1.Lines.Add(tblKlubs['KlubNaam'] + ', jaarlikse fooi =
                 ' + FloatToStrF(tblKlubs['LedeGeld'],ffCurrency,10,2));
          redV2_2_1.Lines.Add('=====================================');
          tblLede.First;
          redV2_2_1.Lines.Add('Van'+ #9 + 'Betaal' + #9 + 'Uitstaande');
          while not tblLede.EOF do
            begin
              if tblLede['KlubID'] = tblKlubs['KlubID'] then
                 begin
                   rVerskil := tblKlubs['LedeGeld'] –
                                       tblLede['BedragBetaal'];
                   redV2_2_1.Lines.Add(tblLede['LidVan'] + #9 +
                            FloatToStrF(tblLede['BedragBetaal'],
                            ffCurrency,10,2) + #9 +
                            FloatToStrF(rVerskil,ffCurrency,10,2));
                 end;
                tblLede.Next;
              end;
          redV2_2_1.Lines.Add('');
          tblKlubs.Next;
      end;
     // Kode wat voorsien is
     dbCONN.SetupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
   end;
// ==========
===========================================================
// Vraag 2.2.2          4 punte
// =====================================================================
procedure TfrmDBQuestion2.btnV2_2_2Click(Sender: TObject);
begin
// Vraag 2.2.2

 tblLede.Edit;
 tblLede['RoetesVoltooi'] :=    tblLede['RoetesVoltooi'] + 1;
 tblLede.Post;
end;

// =====================================================================
// Vraag 2.2.3         5 punte
// =====================================================================
   procedure TfrmDBQuestion2.btnV2_2_3Click(Sender: TObject);
   var
     sVan, sNaam, sJaar, sLidKode : String;
     dGebDatum : TDateTime;
     iRoetesVoltooi, iKlubID : integer;
     rBedragBetaal : real;
   begin
     //Kode wat voorsien is
     sVan := 'Nkosi';
     sNaam := 'Mothupi';
     dGebDatum := 18-08-2003;
     sLidKode := 'Nko2140';

       //Vraag 2.2.3
       iKlubID := rgpV2_2_3.ItemIndex + 1;
Kopiereg voorbehou                                              Blaai om asseblief

### Page 16

Downloaded from hlayiso.com
Inligtingstegnologie/V1                  16                  DBE/November 2021
                                 NSS – Nasienriglyne

      tblLede.Insert;
      tblLede['LidKode'] := sLidKode;
      tblLede['LidVan'] := sVan;
      tblLede['LidNaam'] := sNaam;
      tblLede['GeboorteDatum'] := dGebDatum;
      tblLede['KlubID'] := rgpV2_2_3.Items[rgpV2_2_3.ItemIndex][1];
      tblLede.Post;
      tblLede.Refresh;
    end;

    // =====================================================
    // {$ENDREGION}
    // =====================================================
    // {$REGION 'Provided code: Stel DB konneksies - MOENIE VERANDER
         NIE!'}
    // =====================================================
    procedure TfrmDBQuestion2.bmbHerwinDBClick(Sender: TObject);
    begin
      // Herwin die Databasis
      dbCONN.RestoreDatabase;
      redV2_2_1.Clear;
      dbCONN.SetupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
    end;

    // =====================================================
    procedure TfrmDBQuestion2.FormClose(Sender: TObject;
    var Action: TCloseAction);
    begin // Diskonnekteer databasis EN maak oop konneksies toe
      dbCONN.dbDisconnect;
    end;

    procedure TfrmDBQuestion2.FormCreate(Sender: TObject);
    begin
      redV2_2_1.Paragraph.TabCount := 4;
      redV2_2_1.Paragraph.Tab[0] := 70;
      redV2_2_1.Paragraph.Tab[1] := 150;
      redV2_2_1.Paragraph.Tab[2] := 300;
      redV2_2_1.Paragraph.Tab[3] := 400;
    end;

    // =====================================================
    procedure TfrmDBQuestion2.FormShow(Sender: TObject);
    begin // Stel konneksie met databasis op EN maak tabelle oop.
      dbCONN := TConnection.Create;
      dbCONN.dbConnect;
      tblKlubs := dbCONN.tblOne;
      tblLede := dbCONN.tblMany;
      dbconn.RunSQL('SELECT * FROM tblLede'); //WHERE KlubID = 1');

       dbCONN.setupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
       pgcDBAdmin.ActivePageIndex := 0;

    end;
    // =====================================================
    // {$ENDREGION}

    end.
Kopiereg voorbehou                                              Blaai om asseblief

### Page 17

Downloaded from hlayiso.com
Inligtingstegnologie/V1                  17               DBE/November 2021
                                 NSS – Nasienriglyne

BYLAAG G: OPLOSSING VIR VRAAG 3

Objekklas

unit StapRoete_U;

interface

uses SysUtils;

type

   TStapRoete = class(TObject)

   private
   var
     // Kode wat voorsien is
     fRoeteNaam,fTipeTerrein: String;
     fGetalDae: integer;
     fAfstand: integer;
     fKostePP: real;

   public
     constructor create(sRoeteNaam,sTipeTerrein: String;
            iGetalDae: integer; rAfstand: integer; rKoste: real);
     function getGetalDae: integer;
     function berekenAfstPerDag: integer;
     function bepaalVlak: String;
     function berekenTotKoste(iGetal: integer): real;
     function toString:String;
   end;

implementation

{ TStapRoete }

// Kode wat voorsien is

constructor TStapRoete.Create(sRoeteNaam,sTipeTerrein: String;
      iGetalDae: integer; rAfstand: integer; rKoste: real);
begin
  fRoeteNaam := sRoeteNaam;
  fTipeTerrein := sTipeTerrein;
  fGetalDae := iGetalDae;
  fAfstand := rAfstand;
  fKostePP := rKoste;
end;

// =====================================================================
// Vraag 3.1.1         2 punte
// =====================================================================
function TStapRoete.getGetalDae: integer;
begin
  Result := fGetalDae;
end;

Kopiereg voorbehou                                           Blaai om asseblief

### Page 18

Downloaded from hlayiso.com
Inligtingstegnologie/V1                18                DBE/November 2021
                               NSS – Nasienriglyne

// =====================================================================
// Vraag 3.1.2          3 punte
// =====================================================================
function TStapRoete.berekenAfstPerDag: integer;
begin
  Result :=(Round(fAfstand/fGetalDae));
end;
// =====================================================================
// Vraag 3.1.3          10 punte
// =====================================================================
function TStapRoete.bepaalVlak: String;
var
  rAfstPdag :real;
begin
  //rAfstPdag := fAfstand / fGetalDae;
  rAfstPdag := berekenAfstPerDag;    // roep funksie
  if ( rAfstPdag > 15 ) and ((fTipeTerrein = 'Rocky') or //'Rotsagtig'
            (fTipeTerrein = 'Sandy')) then                //'Sanderig'
     Result := 'Gevorderde'
  else if (rAfstPdag >=10) AND(rAfstPdag <=15) then
          Result := 'Gemiddelde'
        else Result := 'Maklike' ;
end;
// =====================================================================
// Vraag 3.1.4          4 punte
// =====================================================================
function TStapRoete.berekenTotKoste(iGetal: integer): real;
begin
  Result := fKostePP * iGetal;
end;
// =====================================================================
// Vraag 3.1.5          4 punte
// =====================================================================
function TStapRoete.toString: String;
begin
  Result := fRoeteNaam + ': ' + fTipeTerrein + #13+
  IntToStr(fAfstand) + ' km in ' + IntToStr(fGetalDae) +' dae '+ #13+
  'Koste per persoon: ' + FloatToStrF(fKostePP,ffCurrency,10,2);
end;

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 19

Downloaded from hlayiso.com
Inligtingstegnologie/V1                19                DBE/November 2021
                               NSS – Nasienriglyne

Hoofvormeenheid

// =====================================================================
// Vraag 3.2.1           8 punte
// =====================================================================
procedure TfrmStap.cmbV3_2_1Change(Sender: TObject);
var
  tLeer: TextFile;
  sRoeteNaam,sTerrein,sAfstand,sGetal,sKoste: String;
  rAfstand,iGetalDae: integer;
  rKoste: real;
begin
// Kode wat voorsien is - moenie verander nie
  sRoeteNaam := cmbV3_2_1.Text;
  imgRoete.Picture.LoadFromFile(sRoeteNaam + '.jpg');

//Vraag 3.2.1
  assignFile(tLeer,sRoeteNaam+'.txt');
  reset(tLeer);
  readln(tLeer,sTerrein);
  readln(tLeer,sAfstand);
  readln(tLeer,sGetal);
  readln(tLeer,sKoste);

objStapRoete := TStapRoete.create(sRoeteNaam,sTerrein,StrToInt(sGetal),
           StrToInt(sAfstand),StrToFloat(sKoste));
  MessageDlg('Objek is geinstansieer.',mtInformation,[mbOk],0);
  //Kode wat voorsien is
  btnV3_2_2.Enabled := True;
  btnV3_2_3.Enabled := True;
  btnV3_2_4.Enabled := true;
end;
// =====================================================================
// Vraag 3.2.2        2 punte
// =====================================================================
procedure TfrmStap.btnV3_2_2Click(Sender: TObject);
begin
// Vraag 3.2.2
  redV3_2_2.Lines.Clear;
  redV3_2_2.Lines.Add(objStapRoete.toString);
end;
// =====================================================================
// Vraag 3.2.3         4 punte
// =====================================================================
procedure TfrmStap.btnV3_2_3Click(Sender: TObject);
var
  iGetal : integer;
  rKoste: real;
begin
// Vraag 3.2.3
  iGetal := StrToInt(InputBox('Sleutel getal mense in','','7'));
  rKoste := objStapRoete.berekenTotKoste(iGetal);

//Kode wat voorsien is
  pnlV3_2_4.Caption := FloatToStrF(rKoste,ffCurrency,10,2);
end;

Kopiereg voorbehou                                            Blaai om asseblief

### Page 20

Downloaded from hlayiso.com
Inligtingstegnologie/V1                20                DBE/November 2021
                               NSS – Nasienriglyne

// =====================================================================
// Vraag 3.2.4          3 punte
// =====================================================================
procedure TfrmStap.btnV3_2_4Click(Sender: TObject);
begin
// Vraag 3.2.4
  redV3_2_4.Lines.Clear;
  redV3_2_4.Lines.Add('Jy moet ten minste ' +
     IntToStr(objStapRoete.berekenAfstPerDag) + ' km per dag stap
      om hierdie ' + UpperCase(objStapRoete.bepaalVlak) + ' staproete
      in ' + IntToStr(objStapRoete.getGetalDae) + ' dae te voltooi.' );
end;

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 21

Downloaded from hlayiso.com
Inligtingstegnologie/V1                 21                DBE/November 2021
                                NSS – Nasienriglyne

BYLAAG H: OPLOSSING VIR VRAAG 4

// =====================================================================
// Vraag 4.1          5 punte
// =====================================================================
procedure TfrmVraag4.btnV4_1Click(Sender: TObject);
var
  iRy, iKol: integer;
  sAfvoer: String;
begin
  // Kode wat voorsien is
  redV4.Lines.Add(sOpskrif);
  redV4.Lines.Add(' ');

   // Vraag 4.1

  for iRy := 1 to 5 do
  begin
     sAfvoer := #13 + arrName[iRy] + #9;
     for iKol := 1 to 5 do
     begin
       sAfvoer := sAfvoer + FloatToStr(arrAfstande[iRy, iKol]) + #9;
     end;
     redV4.Lines.Add(sAfvoer);
  end;
end;
// =====================================================================
// Vraag 4.2          8 punte
// =====================================================================
procedure TfrmVraag4.btnV4_2Click(Sender: TObject);
var
  iRy, iKol: integer;
  sAfvoer: String;
begin
// Kode wat voorsien is
  redV4.Clear;
  redV4.Lines.Add('Vervang die afstand by:');

  // Vraag 4.2
  for iRy := 1 to 5 do
  begin
     for iKol := 1 to 5 do
     begin
       if arrAfstande[iRy, iKol] < arrAfstande[iKol, iRy] then
         begin
           arrAfstande[iRy, iKol] := arrAfstande[iKol, iRy];
           redV4.Lines.Add('[' + IntToStr(iRy) + ',' + IntToStr(iKol)
             + '] met ' + FloatToStr(arrAfstande[iKol, iRy]);
         end;
       end;
     end;
  end;
end;

Kopiereg voorbehou                                           Blaai om asseblief

### Page 22

Downloaded from hlayiso.com
Inligtingstegnologie/V1                  22                  DBE/November 2021
                                 NSS – Nasienriglyne

// =====================================================================
// Vraag 4.3         17 punte
// =====================================================================
procedure TfrmVraag4.btnV4_3Click(Sender: TObject);
var
  iTel, iRy, iKol: integer;
  rTotAfstand, rTydPerDag, rTydMinute: Real;
  sRoete: String;

begin
  // Kode wat voorsien is
  redV4.Clear;

   // Vraag 4.3
   sRoete := cmbRoetes.Text;
   redV4.Lines.Add('Roete: ' + sRoete + #13);
   rTotAfstand := 0;
   rTydPerDag := 0;

   for iTel := 1 to 4 do
   begin
     iRy := StrToInt(copy(sRoete, 1, 1));
     iKol := StrToInt(copy(sRoete, 3, 1));
     Delete(sRoete, 1, 2);

      if (iRy IN [2, 4]) AND (iKol IN [2, 4]) then
        rTydMinute := 20 * 2 * arrAfstande[iRy, iKol]
      else
        rTydMinute := 20 * arrAfstande[iRy, iKol];

      redV4.Lines.Add(arrName[iRy] + ' tot ' + arrName[iKol] + ': ' +
                  FloatToStr(arrAfstande[iRy, iKol]) +
                  ' (' + FloatToStr(rTydMinute) + ' minute)');

      rTotAfstand := rTotAfstand + arrAfstande[iRy, iKol];

      rTydPerDag := rTydPerDag + rTydMinute;

     if rTydPerDag > 480 then
     begin
       redV4.Lines.Add('Bespreek by ' + arrName[iKol] + #13);
       rTydPerDag := 0;
     end;
   end;

  redV4.Lines.Add(#13 + 'Totale afstand: ' + FloatToStrF
  (rTotAfstand, ffFixed, 8, 1)+' km');
end;

Kopiereg voorbehou                                              Blaai om asseblief

### Page 23

Downloaded from hlayiso.com
Inligtingstegnologie/V1                23                DBE/November 2021
                               NSS – Nasienriglyne

// =============================================================
// Kode wat voorsien is - moenie verander nie
// =============================================================
procedure TfrmVraag4.FormActivate(Sender: TObject);
var
  i, iPos: integer;
begin
  redV4.Paragraph.TabCount := 6;
  iPos := 78;
  for i := 1 to 6 do
  begin
     redV4.Paragraph.Tab[i] := iPos;
     inc(iPos, 78);
  end;
  sOpskrif := ''+#9 + 'Morgan' + #9 + 'Haga Haga' + #9 + 'Cintsa' + #9 +
     'Beacon' + #9 + 'Gonubie';
end;

end.

Kopiereg voorbehou

## Related documents

- [Information Technology P1 Nov 2021 Eng](https://www.hlayiso.com/library/information-technology-p1-nov-2021-eng/17164583-d33b-4fb5-8673-baf85007b1fc) — Information Technology · QP · 2021 · Eng
- [INFO TECH P1 GR12 MEMO SEPT2021 ENG D](https://www.hlayiso.com/library/info-tech-p1-gr12-memo-sept2021-eng-d/ff05fb64-9f3d-4fe4-bb3d-3fe016928d51) — Information Technology · Memo · 2021 · Eng
- [IT P1 Nov 2020 Afr REWRITE (NO MEMO)](https://www.hlayiso.com/library/it-p1-nov-2020-afr-rewrite-no-memo/50e776f8-b245-4554-9243-5cf350cf10d2) — Information Technology · Memo · 2020 · Afr
- [IT P1 Nov 2020 Memo Afr](https://www.hlayiso.com/library/it-p1-nov-2020-memo-afr/85279e2b-2e1a-44a8-a2ac-7db9df151ff7) — Information Technology · Memo · 2020 · Afr
- [Information Technology P1 Nov 2017 Memo Eng](https://www.hlayiso.com/library/information-technology-p1-nov-2017-memo-eng/5a6ed3b8-fff3-4502-bac4-5e1e988da4fc) — Information Technology · Memo · 2017 · Eng
- [Information Technology P1 Nov 2015 Memo Afr](https://www.hlayiso.com/library/information-technology-p1-nov-2015-memo-afr/ed0f17ad-2120-4f04-b0c6-56098d626046) — Information Technology · Memo · 2015 · Afr

## More from Grade 12 Information Technology

- [IT-P2-GR12 QP-Afr-SEP-2025 watermark](https://www.hlayiso.com/library/it-p2-gr12-qp-afr-sep-2025-watermark/569cc299-ae7c-4635-9514-cf03f9242ebc) — QP · 2025 · Afr
- [IT P2 QP GR12 SEPT 2024 AFR](https://www.hlayiso.com/library/it-p2-qp-gr12-sept-2024-afr/9016098b-e233-49f4-b1dc-f0838363c6af) — QP · 2024 · Afr
- [IT P2 QP GR12 SEPT 2024 English](https://www.hlayiso.com/library/it-p2-qp-gr12-sept-2024-english/83309154-2856-47f1-82cc-cc04c8ab38b1) — QP · 2024 · Eng
- [Information Technology P1 Nov 2024 Afr](https://www.hlayiso.com/library/information-technology-p1-nov-2024-afr/f4b19c44-77ce-482a-9f85-438813c25f87) — QP · 2024 · Afr
- [Information Technology P2 Nov 2024 Eng](https://www.hlayiso.com/library/information-technology-p2-nov-2024-eng/3afa20d1-1c0f-4969-8a56-d690e9b24d70) — QP · 2024 · Eng
- [Information Technology P1 May-June 2023 MG Eng](https://www.hlayiso.com/library/information-technology-p1-may-june-2023-mg-eng/f868554b-8f4f-4370-aa4e-cfa745fc806d) — Memo · 2023 · Eng

## Collection

- [Grade 12 past papers](https://www.hlayiso.com/grade-12/past-papers)

---

Hlayiso: free CAPS and IEB past papers, memos, notes and study guides for South African learners. When citing, link the page URL above, not a PDF or /api/ URL.
