# Information Technology Grade 12 P1 NSC November 2019 Memo

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

- Page: https://www.hlayiso.com/library/information-technology-p1-nov-2019-memo-afr/2e13ea0e-b253-427a-b6ed-1b689480c1f0
- Updated: 2026-09-27
- Subject: Information Technology
- Grade: Grade 12
- Document type: Memorandum
- Year: 2019
- Exam period: NSC November Exam
- Paper: 1
- Curriculum: CAPS
- Pages: 24

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 2019 Memo](https://www.hlayiso.com/library/information-technology-p1-nov-2019-memo-afr/2e13ea0e-b253-427a-b6ed-1b689480c1f0)

## About this document

Information Technology · Grade 12 · NSC November Exam · 2019. Memorandum, 24 pages. 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 2019

                                   NASIENRIGLYNE

PUNTE: 150

                      Hierdie nasienriglyne bestaan uit 24 bladsye.

Kopiereg voorbehou                                                    Blaai om asseblief

### Page 2

Downloaded from hlayiso.com
Inligtingstegnologie/V1                         2                      DBE/November 2019
                                       NSC –

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-12) sluit die nasienrubriek vir elke om te gebruik
      vir enigeen van die twee programmeringstale in.

•     Bylaag E, F, G en H (bladsy 13-24) bevat voorbeelde in programmeringskode
      van oplossings vir Vraag 1 tot Vraag 4.

•     Kopieë van Bylaag A, B, C, D en die opsomming van die leerder se punte
      (bladsy 3-12) 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 2019
                                         NSC –

BYLAAG A
VRAAG 1: NASIENRUBRIEK - ALGEMENE PROGRAMMERINGSVAARDIGHEDE

SENTRUMNOMMER:                               EKSAMENNOMMER:
                                                                            MAKS. LEERDER-
VRAAG                             BESKRYWING
                                                                            PUNTE   PUNT
  1.1    Knoppie [1.1 – Vertoon bedrag verskuldig]

         Verklaar ‘n konstante veranderlike PRYS en ken waarde 14.95
         toe
         Verklaar ‘n reële veranderlike vir die bedrag verskuldig
         Verklaar 'n veranderlike vir die aantal pizzas                        8
         Kry getal uit spnV1_1
         Bereken bedrag deur PRYS te gebruik
         Verander skrifgrootte van byskrif ('label') na 20pt 
         Vertoon bedrag op lblV1_1 omgeskakel na string en
         geldeenheid-formaat 
  1.2    Knoppie [1.2 – Pythagoras]

         Skep veranderlikes vir sye A, B en C
         Ken lengte van 4 toe aan A 
         Lengte vir sy B  en skakel om na getal formaat
         C = sqrt  (sqr(A) + sqr(B))
               korrekte gebruik van sqr(A) OF A * A
               korrekte gebruik van sqr(rB) OF B * B                          10
               kry die som van die twee waardes
         Vertoon lengte van sy C op paneel
         geformatteer tot een desimale plek 

         Aanvaar:
         Sqr: Power(A,2)
         Sqrt: Power((sqr(A) +sqr(B)),0.5)
  1.3    Knoppie [1.3 – Bepaal kleinste getal]

         Ken ewekansige getal in die korrekte gebied  aan veranderlike
         toe
         Vertoon getal omgeskakel na string
         As (if) getal < kleinste 
               Ken getal toe aan kleinste 
         Vertoon kleinste in edtV1_3 omgeskakel na string                     9

         RandomRange(1,101)
         Random(100) + 1
         Ceil(Random() *100)

Kopiereg voorbehou                                                         Blaai om asseblief

### Page 4

Downloaded from hlayiso.com
Inligtingstegnologie/V1                              4               DBE/November 2019
                                            NSC –

  1.4    Knoppie [1.4 – Vertoon gedekripteerde string]

         Lees toevoerstring met 'n toevoerdialoogblokkie in 
           met korrekte parameters 
         Lus ('Loop')  van eerste  tot laaste karakter 
          Korrekte toets uitgevoer (if/case) 
            Verkry karakter by indeks 
            Toets teen syfer  vir vir al 10 syfers 
            Vervang syfer by korrekte indeks 
            Met korrekte karakter  vir al 10 karakters 
         Vertoon
                                                                               13
         KONSEPTE:
         Lees toevoerstring met 'n toevoerdialoogblokkie(1)
             met korrekte parameters (1)
         Lus ('Loop') (1) van eerste (1) tot laaste karakter (1)
          Korrekte toets (if/case) (1)
          Onttrek karakter by indeks (1)
          Toets teen syfer (1) vir al 10 syfers (1)
          Vervang syfer by korrekte indeks (1)
          Met korrekte karakter (1) vir al 10 karakters (1)
         Vertoon (1)

                                                      TOTAAL AFDELING A:       40

Kopiereg voorbehou                                                         Blaai om asseblief

### Page 5

Downloaded from hlayiso.com
Inligtingstegnologie/V1                           5               DBE/November 2019
                                         NSC –

BYLAAG B
VRAAG 2: NASIENRUBRIEK – DATABASISPROGRAMMERING

SENTRUMNOMMER:                            EKSAMENNOMMER:
                                                                    MAKS.      LEERDER-
VRAAG                             BESKRYWING
                                                                    PUNTE        PUNT
   2.1      SQL-stellings
  2.1.1      Knoppie [2.1.1 – Beste speler]
             SELECT SpelerVan, SpelerNaam FROM tblSpelers
             WHERE VaardigheidsVlak = 10
             KONSEPTE:                                                 3
             SELECT SpelerVan, SpelerNaam
             FROM tblSpelers 
             WHERE VaardigheidsVlak = 10

  2.1.2      Knoppie [2.1.2 – B-span-afrigters]
             SELECT Afrigter, SpanNaam FROM tblSpanne WHERE
             SpanNaam Like "%B"
             KONSEPTE:                                                 4
             SELECT Afrigter, SpanNaam 
             FROM tblSpanne 
             WHERE SpanNaam LIKE "%B"

  2.1.3      Knoppie [2.1.3 – Persentasie wedstryde gewen]
             SELECT SpanNaam, Afrigter,
             (GetalWedstrydeGewen/GetalWedstrydeGespeel*100)
             AS [PersentasieWedstrydeGewen]
             FROM tblSpanne
             WHERE SpanNaam = "' + sSpan + '"
             KONSEPTE:
             SELECT SpanNaam, Afrigter, 
                                                                       4
             (GetalWedstrydeGewen/GetalWedstrydeGespeel*100),
             AS [PersentasieWedstrydeGewen]
             FROM tblSpanne
             WHERE SpanNaam = " ' + sSpan + ' " '

             ALTERNATIEF:
             ‘WHERE SpanNaam = ‘ + QuotedStr(sSpan)

Kopiereg voorbehou                                                   Blaai om asseblief

### Page 6

Downloaded from hlayiso.com
Inligtingstegnologie/V1                                6                     DBE/November 2019
                                              NSC –

  2.1.4      Knoppie [2.1.4 – Spangemiddeld meer as 6]
             SELECT SpanNaam, ROUND(AVG(VaardigheidsVlak),1)
             AS [GemidVaardigheidsVlak]
             FROM tblSpelers
             GROUP BY SpanNaam HAVING AVG(VaardigheidsVlak)>6
             KONSEPTE:
             SELECT SpanNaam, ROUND(AVG(VaardigheidsVlak) ,1)                    5
             AS GemidVaardigheidsVlak 
             FROM tblSpelers
             GROUP BY SpanNaam
             HAVING AVG(VaardigheidsVlak) > 6

  2.1.5      Knoppie [2.1.5 – Dateer wedstryde gewen op]
             UPDATE tblSpanne
             SET GetalWedstrydeGewen = GetalWedstrydeGewen + 1
             WHERE SpanNaam <> "o/14 B"
                                                                                   3
             KONSEPTE:
             UPDATE tblSpanne 
             SET GetalWedstrydeGewen = GetalWedstrydeGewen + 1 
             WHERE SpanNaam <> "o/14 B"

                                                                    Subtotaal:    19

   2.2       Databasismanipulasie deur Delphi-kode te gebruik
  2.2.1      Knoppie [2.2.1 – Junior spelers in die o/18 A-span]
             AssignFile & Rewrite
             Stel tblSpelers om by eerste rekord te begin lees
             Lus ('Loop') terwyl NOT tblSpelers.EOF
                Toets of SpanNaam 'o/18 A' is  EN
                   of eerste 2 karakters van IDnommer-veld >=3 is
                      Skryf van en naam na lêer                                  11
                      Vermeerder teller met 1 
                Gaan na volgende rekord in tblSpelers
             Eindig lus
             Maak lêer toe
             Vertoon teller van getal junior speler in byskrif ('label') 

Kopiereg voorbehou                                                               Blaai om asseblief

### Page 7

Downloaded from hlayiso.com
Inligtingstegnologie/V1                            7                   DBE/November 2019
                                          NSC –

  2.2.2      Knoppie [2.2.2 – Afrigter en doelwagter se inligting]
             Lus ('Loop') terwyl NOT tblSpanne.EOF
               Stel tblSpelers om te begin lees by eerste rekord
               Lus ('Loop') terwyl NOT tblSpelers.EOF
                 Toets of
                    die SpanNaam-veld in tblSpanne gelyk is aan
                    SpanNaam-veld in tblSpelers 
                     EN DoelWagter = true
                       Voeg span se naam, afrigter se naam 
                       Speler se van en naam
                             in regte formaat by afvoerstring
                Gaan na volgende rekord in tblSpelers
                Vertoon afvoer in reel
              Gaan na volgende rekord in tblSpanne
                                                                            10

            Alternatief:
            Lus ('Loop') terwyl NOT tblSpelers.EOF (1)
             Toets of DoelWagter = true(1)
              Stel tblSpanne om te begin lees by eerste rekord(1)
              Lus ('Loop') terwyl NOT tblTeams.EOF(1)
               Toets of die SpanNaam-veld in tblSpanne gelyk is aan
                    SpanNaam-veld in tblSpelers (1)
                       Voeg span se naam, afrigter se naam (1)
                       Speler se van en naam
                            in regte formaat by afvoerstring(1)
                Gaan na volgende rekord in tblSpanne(1)
                Vertoon afvoer in reel(1)
             Gaan na volgende rekord in tblSpelers(1)

                                                              Subtotaal:    21

                                                  TOTAAL AFDELING B:        40

Kopiereg voorbehou                                                         Blaai om asseblief

### Page 8

Downloaded from hlayiso.com
Inligtingstegnologie/V1                             8                      DBE/November 2019
                                           NSC –

BYLAAG C

VRAAG 3: NASIENRUBRIEK - OBJEK-GEÖRIENTEERDE PROGRAMMERING

SENTRUMNOMMER:                              EKSAMENNOMMER:
                                                                               MAKS.     LEERDER-
VRAAG                               BESKRYWING
                                                                               PUNTE       PUNT
  3.1.1      Konstruktor-metode:
             Opskrif met regte parameters en datatipes
             Ken naam van speler parameterwaarde                 toe     aan
                fSpelerNaam                                                     4
             Ken gewig van speler parameterwaarde                toe     aan
                fGewigVanSpeler
             Stel fTelling op 0

  3.1.2      getTelling-metode:
              Funksie opskrif met heelgetal as terugstuur-datatipe              2
              fTelling aan 'result' toegeken 

  3.1.3      dateerTellingOp-metode:
             Prosedure-opskrif met heelgetalparameter                           3
             Vermeerder fTelling  met parameterwaarde 

  3.1.4      berekenLMI-metode:
              Funksie verklaar met reële terugstuur datatipe en ontvang
                reële parameterwaarde and return ‘n berekende LMI               3
             Calculation = fGewigVanSpeler / 
                       Sqr(parameterwaarde lengte van speler) 
  3.1.5      geskikVirSeleksie-metode:
             Toets of telling 'n waarde tussen 0 en 7 is (inklusief) 
               Result = Klein moontlikheid 
             Toets of telling 'n waarde tussen 8 en 14 is (inklusief)            4
               Result = Gemiddelde moontlikheid 
             Toets of telling > 14 is
               Result = Groot moontlikheid 

  3.1.6      toString-metode:
             Byskrifte (Naam, Gewig, Huidige telling)
             Regte attribute                                                    4
             Regte omskakelings (gewig – float; telling – integer) 
             Return string 

                                                    Subtotaal: Objekklas        20

Kopiereg voorbehou                                                             Blaai om asseblief

### Page 9

Downloaded from hlayiso.com
Inligtingstegnologie/V1                         9                           DBE/November 2019
                                      NSC – Nasienriglyne

VRAAG 3: NASIENRUBRIEK (VERVOLG)

                                                                              MAKS.      LEERDER
 VRAAG                              BESKRYWING
                                                                              PUNTE       - PUNT
   3.2.1       Knoppie [3.2.1 - Instansieer speler-objek]

              Instansieer die objSpeler-objek:
              objSpeler := TSpeler.Create
                Stuur naam en spelergewig in korrekte volgorde
                                                                                 5
                      met korrekte datatype (dieselfde as konstruktor) 
              Gebruik ‘n dialoogboks om aan te dui dat die objek ge-
              instansieer is 

   3.2.2       Knoppie [3.2.2 – Bereken LMI]

               Gebruik toevoerdialoogblokkie  om lengte in te sleutel
               Roep berekenLMI-metode deur gebruik van objek
                gebruik lengte as argument omgeskakel na reële getal            7
               Vertoon die inligting in redV3_2_2 
                    deur die toString-metode van die objek te gebruik 
               Vertoon die LMI in redV3_2_2 
                    in die regte formaat met een desimale plek 

   3.2.3       Knoppie [3.2.3 – Dateer telling op]

              Kry itemindex uit die radio group
                     Om die telling te kry 
              Roep die dateerTellingOp metode                                   6
                     met korrekte argument
              Vertoon opgedateerde telling op pnlV3_2_3 
                    deur die getTelling-metode te gebruik 

   3.2.4       Knoppie [3.2.4 – Geskik vir seleksie]

              Roep die relevante metode as volg:
                                                                                 2
              Vertoon op die byskrif ('label') lblV3_2_4
                Deur gebruik te maak van objSpeler.geskikVirSeleksie

                                                     Subtotaal: Form-klas       20

                                                    TOTAAL AFDELING C:          40

Kopiereg voorbehou                                                             Blaai om asseblief

### Page 10

Downloaded from hlayiso.com
Inligtingstegnologie/V1                        10                           DBE/November 2019
                                      NSC – Nasienriglyne

VRAAG 4: NASIENRUBRIEK – PROBLEEMOPLOSSING

SENTRUMNOMMER:                                  EKSAMENNOMMER:
                                                                               MAKS. LEERDER-
VRAAG                             BESKRYWING
                                                                               PUNTE   PUNT
  4.1      Knoppie [4.1 – Vertoon Doolhof]

          Kies doolhof uit kombinasieblokkie
          Regte lêernaam + '.txt' 
          Toets en vertoon ‘n boodskap indien die lêer nie bestaan nie
          Assign file, Reset die tekslêer                                       11
          Initialiseer indeks-veranderlike 
           Lus (Loop) deur die tekslêer 
                Inkrementeer die waarde van indeks 
                         (Posisie word bepaal deur beginwaarde)
                Lees reël  ken die reël toe aan die skikking arrDoolhof
                Vertoon die reëlnommer en die reël

Kopiereg voorbehou                                                             Blaai om asseblief

### Page 11

Downloaded from hlayiso.com
Inligtingstegnologie/V1                         11                          DBE/November 2019
                                       NSC – Nasienriglyne

  4.2      Knoppie [4.2 – Langste gang]

           Inisialieer veranderlike na 0 om maksimum waarde te stoor
           Lus (Loop) deur die skikking
             Initialiseer veranderlike vir langste gang in die reël 
             Initialiseer veranderlike om agtereenvolgende '-' in reël te tel
             Lus (Loop) deur elke karakter in die reël 
                 Toets of karakter 'n '-' is 
                      Inkrementeer dash-teller
                      As dash-teller meer is as langste gang in reël 
                           Vervang langste gang met dash-teller
                  Anders as karakter nie '-' is nie
                      Stel dash-teller na 0
             Stoor langste gang in die ry in arrRye skikking/ 'n string
             As langste in ry langer is as langste – vervang langste 
                                                                                   19
           Vertoon boodskap met lengte van langste gang
           Lus (Loop) deur skikking/string met langste gange per reël 
              Vertoon reëlnommer van rye 
                wat dieselfde as langste gang se lengte is
           KONSEPTE:
           Inisialiseer veranderlike vir langste gang na 0 (1)
           Lus deur skikking (1)
              Initialiseer dash-teller per reël(1)
                 en maksimum aantal aaneenlopende dashes per reël (1)
              Lus (loop) deur elke karakter in die reël (2)
                   Toets of karakter dash is (1)
                       Vermeerder die dash-teller (1)
                       Toets of die dash-teller langste in die reël (2)
                           en stoor in maksimum aantal(1)
                   As karakter nie dash is nie (1)
                        Herstel dash-teller na 0 (1)

          Bepaal die langste gang in al die lyne in die doolhof
          (Toets en stoor maksimum aantal) (2)
                  Vertoon langste (1)
          Toets vir lyne wat selfde lengte het as langste gang (2)
                  Vertoon lyn nommer(s) (1)

                                                     TOTAAL AFDELING D:            30

                                                             GROOTTOTAAL:         150

Kopiereg voorbehou                                                               Blaai om asseblief

### Page 12

Downloaded from hlayiso.com
Inligtingstegnologie/V1                   12                   DBE/November 2019
                                 NSC – Nasienriglyne

 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 13

Downloaded from hlayiso.com
Inligtingstegnologie/V1                 13               DBE/November 2019
                               NSC – Nasienriglyne

BYLAAG E: OPLOSSING VIR VRAAG 1

unit Vraag1_u;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Spin, pngimage;

type
  TfrmV1 = class(TForm)
    gpbV1_1: TGroupBox;
    gpbV1_4: TGroupBox;
    gpbV1_3: TGroupBox;
    btnV1_1: TButton;
    btnV1_4: TButton;
    edtV1_3: TEdit;
    btnV1_3: TButton;
    redV1_3: TRichEdit;
    btnReset: TButton;
    gpbV1_2: TGroupBox;
    btnV1_2: TButton;
    Label1: TLabel;
    pnlV1_2: TPanel;
    lblV1_1: TLabel;
    lbl1_2Pies: TLabel;
    edtV1_2Deursnee: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    edtV1_2Breedte: TEdit;
    Label4: TLabel;
    spnV1_1: TSpinEdit;
    Label5: TLabel;

      procedure btnResetClick(Sender: TObject);
      procedure btnV1_1Click(Sender: TObject);
      procedure btnV1_2Click(Sender: TObject);
      procedure btnV1_3Click(Sender: TObject);
      procedure btnV1_4Click(Sender: TObject);
      procedure FormActivate(Sender: TObject);

   private
     { Private declarations }
   public
     iKleinste: integer; // global
     { Public declarations }
   end;

var
  frmV1: TfrmV1;

implementation

{$R *.dfm}

Kopiereg voorbehou                                          Blaai om asseblief

### Page 14

Downloaded from hlayiso.com
Inligtingstegnologie/V1                14                DBE/November 2019
                              NSC – Nasienriglyne

====================================================================
                      Vraag 1.1 = 8 punte
====================================================================
procedure TfrmV1.btnV1_1Click(Sender: TObject);
const
  PRYS = 14.95;
var
  iGetal: integer;
  rBedrag: real;
begin
  lblV1_1.Font.Size := 20;
  iGetal := spnV1_1.Value;
  rBedrag := iGetal * PRYS;
  lblV1_1.Caption := FloatToStrF(rBedrag, ffCurrency, 10, 2);
end;

====================================================================
                      Vraag 1.2 = 10 punte
====================================================================
procedure TfrmV1.btnV1_2Click(Sender: TObject);
var
   rA, rB, rC : real;
begin
   rA := 4;
   rB := StrToFloat(edtV1_2.Text);
   rC := Sqrt(Sqr(rA) + Sqr(rB));
   pnlV1_2.Caption := FloatToStrF(rC,ffFixed,8,1);
end;
====================================================================
                      Vraag 1.3 = 9 punte
====================================================================
procedure TfrmV1.btnV1_3Click(Sender: TObject);
var // Kode wat voorsien is
  iGetal: integer;

begin
  iGetal := random(100) + 1;
  redV1_3.lines.Add(IntToStr(iGetal));
  if iGetal < iKleinste then
     iKleinste := iGetal;
  edtV1_3.Text := IntToStr(iKleinste);
end;

Kopiereg voorbehou                                          Blaai om asseblief

### Page 15

Downloaded from hlayiso.com
Inligtingstegnologie/V1                 15               DBE/November 2019
                               NSC – Nasienriglyne

====================================================================
                       Vraag 1.4 = 13 punte
====================================================================
procedure TfrmV1.btnV1_4Click(Sender: TObject);
const
  ALFA = 'ABCDEFGHIJ';

var // Kode wat voorsien is
  sString, sVertoon: String;
  I, iIndeks: integer;

begin
  // Kode wat voorsien is
  sString := InputBox('Sleutel ''n geënkripteerde string in: ', '','');
  sVertoon := '';
  for I := 1 to Length(sString) do
    if sString[I] in ['0' .. '9'] then
    begin
      iIndeks := StrToInt(sString[I]) + 1;
      sVertoon := sVertoon + ALFA[iIndeks];
    end
    else
      sVertoon := sVertoon + sString[I];
  ShowMessage(sVertoon);

end;

===================================================================
                      Kode wat voorsien is
===================================================================
procedure TfrmV1.btnResetClick(Sender: TObject);
begin
  // Kode wat voorsien is - moenie verander nie
  iKleinste := 100;
  redV1_3.Clear;
  edtV1_3.Clear;
end;

procedure TfrmV1.FormActivate(Sender: TObject);
begin
  // Kode wat voorsien is - moenie verander nie
  iKleinste := 100;
  redV1_3.Clear;
  edtV1_3.Clear;
  CurrencyString := 'R';
end;

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 16

Downloaded from hlayiso.com
Inligtingstegnologie/V1                   16                    DBE/November 2019
                                 NSC – Nasienriglyne

BYLAAG F: OPLOSSING VIR VRAAG 2

VRAAG 2.1: SQL kode

====================================================================
  Vraag 2.1: 2.1.1(3), 2.1.2(4), 2.1.3(4), 2.1.4(5), 2.1.5 (3)
====================================================================

2.1.1: SELECT SpelerVan, SpelerNaam
       FROM tblSpelers WHERE VaardigheidsVlak = 10

2.1.2: SELECT Afrigter, SpanNaam
       FROM tblSpanne
       WHERE SpanNaam Like "%B"

2.1.3: SELECT SpanNaam, Afrigter,
       (GetalWedstrydeGewen/GetalWedstrydeGespeel*100) AS
       [PersentasieWedstrydeGewen]
       FROM tblSpanne
       WHERE SpanNaam = "' + sSpan + '"'

2.1.4: SELECT SpanNaam, round(avg(VaardigheidsVlak),1) AS
       [GemidVaardigheidsVlak]
       FROM tblSpelers
       GROUP BY SpanNaam HAVING avg(VaardigheidsVlak) > 6

2.1.5: UPDATE tblSpanne
       SET GetalWedstrydeGewen = GetalWedstrydeGewen + 1
       WHERE SpanNaam <> "o/14 B"

QUESTION 2.2: DATABASE MANIPULATION met gebruik van Delphi-kode

// {$REGION 'VRAAG 2.2'}

=======================================================================
                      Vraag 2.2.1 = 11 punte
=======================================================================
procedure TfrmDBVraag2.btnV2_2_1Click(Sender: TObject);
var
  tFile: textfile;
  iTel, iJaar: integer;
begin

  AssignFile(tFile, 'Junior18A.txt');
  Rewrite(tFile);
  tblSpelers.first;
  iTel := 0;
  while not tblSpelers.eof do
  begin
    iJaar := StrToInt(copy(tblSpelers['IDNommer'], 1, 2));
    if (tblSpelers['SpanNaam'] = 'o/18 A') AND (iJaar>= 3) then
    begin
       Writeln(tFile,
         tblSpelers['SpelerVan'] + ' ' + tblSpelers['SpelerNaam']);
       inc(iTel);
    end;
    tblSpelers.Next;
  end;
Kopiereg voorbehou                                                    Blaai om asseblief

### Page 17

Downloaded from hlayiso.com
Inligtingstegnologie/V1                17                  DBE/November 2019
                              NSC – Nasienriglyne

  CloseFile(tFile);
  lblV2_2_1.Caption := 'Getal junior spelers in die o/18 A-span: ' +
IntToStr(iTel);

  // Kode wat voorsien is
  dbCONN.setupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
end;

=======================================================================
                      Vraag 2.2.2 = 10 punte
=======================================================================
procedure TfrmDBVraag2.btnV2_2_2Click(Sender: TObject);
var
  sAfvoer: String; // veranderlike om span wat geselekteer is te stoor

begin // Vraag 2.2.2
  // Kode wat voorsien is
  redV2_2_2.Clear;
  redV2_2_2.Paragraph.TabCount := 2;
  redV2_2_2.Paragraph.Tab[0] := 70;
  redV2_2_2.Paragraph.Tab[1] := 160;
  redV2_2_2.Lines.Add('Span' + #9 + 'Afrigter' + #9 + 'Doelwagter');

   // --------------------------------------------------
   // Sleutel jou kode hier in:

   tblSpanne.first;
   while NOT tblSpanne.eof do
   begin
     sAfvoer := tblSpanne['SpanNaam'] + #9 + tblSpanne['Afrigter'] + #9;
     tblSpelers.first;
     while NOT tblSpelers.eof do
     begin
       if (tblSpanne['SpanNaam'] = tblSpelers['SpanNaam']) AND
         (tblSpelers['DoelWagter'] = true) then
       begin
         sAfvoer := sAfvoer + tblSpelers['SpelerVan'] + ', ' + tblSpelers
           ['SpelerNaam'];
       end;
       tblSpelers.Next;
     end; tblSpanne.Next;
     redV2_2_2.Lines.Add(sAfvoer);
   end;

  // Kode wat voorsien is
  dbCONN.setupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
end;

Kopiereg voorbehou                                            Blaai om asseblief

### Page 18

Downloaded from hlayiso.com
Inligtingstegnologie/V1                18                DBE/November 2019
                              NSC – Nasienriglyne

===================================================================
{$REGION 'Provided code: Setup DB connections - DO NOT CHANGE!'}
===================================================================
procedure TfrmDBVraag2.bmbHerstelDBClick(Sender: TObject);
begin
  // Herstel die database
  dbCONN.RestoreDatabase;
  redV2_2_2.Clear;
  dbCONN.setupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
end;

// ================================================================
procedure TfrmDBVraag2.FormClose(Sender: TObject;

  var Action: TCloseAction);
begin // Diskonnekteer databasis en maak alle oop konneksies toe
  dbCONN.dbDisconnect;
end;

procedure TfrmDBVraag2.FormCreate(Sender: TObject);
begin
  CurrencyString := 'R';
end;

// =================================================================
procedure TfrmDBVraag2.FormShow(Sender: TObject);
begin // Stel konneksie met databasis op en maak die tabelle oop.
  dbCONN := TConnection.Create;
  dbCONN.dbConnect;
  tblSpanne := dbCONN.tblOne;
  tblSpelers := dbCONN.tblMany;

  dbCONN.setupGrids(dbgrdONE, dbgrdMany, dbgrdSQL);
  pgcDBAdmin.ActivePageIndex := 0;
end;
// =================================================================
// {$ENDREGION}

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 19

Downloaded from hlayiso.com
Inligtingstegnologie/V1                19                   DBE/November 2019
                              NSC – Nasienriglyne

BYLAAG G: OPLOSSING VIR VRAAG 3

Objekklas
unit Speler_U;

interface

uses StdCtrls, SysUtils;

type
  TSpeler = class(TObject)

   //Kode wat voorsien is - moenie verander nie
   private
       fSpelerNaam: String;
       fGewigVanSpeler : real;
       fTelling : integer;

   public
    //Kode wat voorsien is - moenie verander nie
     constructor create(sSpelerNaam : String; rGewigVanSpeler    : real);
     function getTelling : integer;

  //Voeg kode hier in
    function berekenLMI (rLengteVanSpeler : real) : real;
    procedure dateerTellingOp (iTelling : integer);
    function geskikVirSeleksie: String;
    function toString : String;
end;

implementation

{ TSpeler }

====================================================================
                     Vraag 3.1.1 = 4 punte
====================================================================
constructor TSpeler.create(sSpelerNaam : String; rGewigVanSpeler :
real);
begin
   fSpelerNaam := sSpelerNaam;
   fGewigVanSpeler := rGewigVanSpeler;
   fTelling := 0;
end;

====================================================================
                      Vraag 3.1.2 = 2 punte
====================================================================
function TSpeler.getTelling: integer;
begin
  result := fTelling;
end;
====================================================================
                      Vraag 3.1.3 = 3 punte
====================================================================
procedure TSpeler.dateerTellingOp(iTelling: integer);
begin
  fTelling := fTelling + iTelling;
end;
Kopiereg voorbehou                                              Blaai om asseblief

### Page 20

Downloaded from hlayiso.com
Inligtingstegnologie/V1                20                DBE/November 2019
                              NSC – Nasienriglyne

====================================================================
                      Vraag 3.1.4 = 3 punte
====================================================================
function TSpeler.berekenLMI(rLengteVanSpeler: real) : real;
begin
  result := fGewigVanSpeler / sqr(rLengteVanSpeler);
end;

====================================================================
                      Vraag 3.1.5 = 4 punte
====================================================================
function TSpeler.geskikVirSeleksie:string;
begin
 if fTelling < 8 then
     result := 'Klein moontlikheid'
 else
     if fTelling < 15 then
        result := 'Gemiddelde moontlikheid'
     else
        result := 'Groot moontlikheid'
end;

====================================================================
                      Vraag 3.1.6 = 4 punte
====================================================================
function TSpeler.toString : String;
begin
   result := 'Naam: ' + fSpelerNaam + #13 + 'Gewig: '+
              FloatToStr(fGewigVanSpeler)+ #13+ 'Huidige telling: ' +
              IntToStr (fTelling);
end;

end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 21

Downloaded from hlayiso.com
Inligtingstegnologie/V1                21                DBE/November 2019
                              NSC – Nasienriglyne

Hoofvormeenheid

unit Vraag3_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Speler_U, ComCtrls, ExtCtrls, Spin, DateUtils;

type
  TfrmVraag3 = class(TForm)
    lblNaamVanSpeler: TLabel;
    edtNaamVanSpeler: TEdit;
    btnV3_2_2: TButton;
    redV3_2_2: TRichEdit;
    pnlV3_2_3: TPanel;
    btnV3_2_3: TButton;
    btnV3_2_1: TButton;
    rgpV3_2_3: TRadioGroup;
    btnV3_2_4: TButton;
    lblV3_2_4: TLabel;
    Label1: TLabel;
    edtGewigVanSpeler: TEdit;
    Label3: TLabel;
    grpV3_2_1: TGroupBox;
    grpV3_2_2: TGroupBox;
    grpV3_2_3: TGroupBox;
    grpV3_2_4: TGroupBox;
    procedure btnV3_2_2Click(Sender: TObject);
    procedure btnV3_2_3Click(Sender: TObject);
    procedure btnV3_2_1Click(Sender: TObject);
    procedure btnV3_2_4Click(Sender: TObject);
  // procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmVraag3: TfrmVraag3;
  // Veranderlike wat reeds verklaar is
  objSpeler : TSpeler;
implementation

{$R *.dfm}

Kopiereg voorbehou                                          Blaai om asseblief

### Page 22

Downloaded from hlayiso.com
Inligtingstegnologie/V1                22                DBE/November 2019
                              NSC – Nasienriglyne

====================================================================
                      Vraag 3.2.1 = 5 punte
====================================================================
procedure TfrmVraag3.btnV3_2_1Click(Sender: TObject);
var
  sNaamVanSpeler : String;
  rGewigVanSpeler : real;
begin
      sNaamVanSpeler := edtNaamVanSpeler.Text; rGewigVanSpeler :=
      StrToFloat(edtGewigVanSpeler.Text); objSpeler :=
      TSpeler.create(sNaamVanSpeler,rGewigVanSpeler);
      ShowMessage('Speler-objek is ge-instansieer.');
end;

====================================================================
                      Vraag 3.2.2 = 7 punte
====================================================================
procedure TfrmVraag3.btnV3_2_2Click(Sender: TObject);
var
  rLengteVanSpeler, rLMI : real;
  sLMI : String;

begin
  redV3_2_2.Clear;
  rLengteVanSpeler := StrToFloat(InputBox('Lengte van die speler',
           'Sleutel die lengte van die speler in meter in: ',''));
  rLMI := objSpeler.berekenLMI(rLengteVanSpeler);
  sLMI := FloatToStrF(rLMI,ffFixed,3,1);
  redV3_2_2.Lines.Add(objSpeler.toString);
  redV3_2_2.Lines.Add ('LMI: '+ sLMI);
end;

====================================================================
                       Vraag 3.2.3 = 6 punte
====================================================================
procedure TfrmVraag3.btnV3_2_3Click(Sender: TObject);
var
  iTelling: integer;
begin
     iTelling := StrToInt(rgpV3_2_3.Items[rgpV3_2_3.ItemIndex]);
    objSpeler.dateerTellingOp(iTelling);
    pnlV3_2_3.Caption :=('Opgedateerde telling: ' +
                 IntToStr(objSpeler.getTelling));
end;

====================================================================
                      Vraag 3.2.4 = 2 punte
====================================================================
procedure TfrmVraag3.btnV3_2_4Click(Sender: TObject);
begin
  lblV3_2_4.Caption := objSpeler.geskikVirSeleksie;
end;
end.

Kopiereg voorbehou                                          Blaai om asseblief

### Page 23

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

BYLAAG H: OPLOSSING VIR VRAAG 4

unit Vraag4_U;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,Dialogs, StdCtrls, ComCtrls;
type
  TfrmV4 = class(TForm)
    gpbVrae: TGroupBox;
    btnV4_1: TButton;
    btnV4_2: TButton;
    cmbV4_1: TComboBox;
    Label1: TLabel;
    redV4: TRichEdit;
    procedure btnV4_1Click(Sender: TObject);
    procedure btnV4_2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // Kode wat voorsien is
const
  iRyTel = 16;

var
  frmV4: TfrmV4;
  arrDoolhof: array [1..iRyTel] of String;

implementation
{$R *.dfm}
========================================================================
                          Vraag 4.1 = 11 punte
========================================================================
procedure TfrmV4.btnV4_1Click(Sender: TObject);
var
  iIndeks: integer;
  sLeerNaam, sReel: String;
  tNaamLeer: TextFile;
begin
========================================================================
                          Kode wat voorsien is
========================================================================
  redV4.Clear;
========================================================================
                       Kode wat voltooi moet word
========================================================================
  iIndeks := 1;
  sLeerNaam := cmbV4_1.Text + '.txt';
  if FileExists(sLeerNaam) then
  begin
    AssignFile(tNaamLeer, sLeerNaam);
    Reset(tNaamLeer);

Kopiereg voorbehou                                           Blaai om asseblief

### Page 24

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

    while not(eof(tNaamLeer)) do
    begin
      Readln(tNaamLeer, sReel); arrDoolhof[indeks] :=
      sReel; redV4.Lines.Add(IntToStr(iIndeks) + #9 +
      sReel); Inc(iIndeks);
    end;
  end;
end;
========================================================================
                          Vraag 4.2 = 19 punte
========================================================================
procedure TfrmV4.btnV4_2Click(Sender: TObject);
var
  iRy, iKol, iTel, iLangsteInReel, iMaks: integer;
  arrRye: array [1..iRyTel] of integer;
  sRy: String;
begin
  iMaks := 0;
  for iRy := 1 to iRyTel do
  begin
    sRy := arrDoolhof[iRy];

      iLangsteInReel := 0;
      iTel := 0;
      for iKol := 1 to Length(sRy) do
      begin
        if sRy[iKol] = '-' then
        begin
          Inc(iTel);
          if iTel > iLangsteInReel then
            iLangsteInReel := iTel
        end
        else
          iTel := 0;
      end;
      arrRye[iRy] := iLangsteInReel;

     if iMaks < arrRye[iRy] then
       iMaks := arrRye[iRy];
   end;

  redV4.Lines.Add('');
  redV4.Lines.Add('Langste gang(e) met ' + IntToStr(iMaks)
      + ' spasies in ry(e):');
  for iRy := 1 to Length(arrRye) do
  begin
    if arrRye[iRy] = iMaks then
      redV4.Lines.Add(' ' + IntToStr(iRy));
  end;
end;

end.

Kopiereg voorbehou

## Related documents

- [Information Technology P1 Nov 2019 Afr](https://www.hlayiso.com/library/information-technology-p1-nov-2019-afr/0d13fffc-578b-4fce-954d-57bc720bc513) — Information Technology · QP · 2019 · Afr
- [Information Technology P2 Nov 2019 Memo Afr](https://www.hlayiso.com/library/information-technology-p2-nov-2019-memo-afr/f0daf576-62f9-42ca-a2fe-ebba567ac12e) — Information Technology · Memo · 2019 · Afr
- [Information Technology P2 Nov 2019 Memo Eng](https://www.hlayiso.com/library/information-technology-p2-nov-2019-memo-eng/8efd195a-e3f6-4bd2-8cd1-f711a796cb65) — Information Technology · Memo · 2019 · Eng
- [IT P1 GR12 MEMO SEPT 2019 English](https://www.hlayiso.com/library/it-p1-gr12-memo-sept-2019-english/e1bbda31-02cd-4390-8960-747e62fdb1ee) — Information Technology · Memo · 2019 · Eng
- [Information Technology P1 May June 2019 Memo Afr](https://www.hlayiso.com/library/information-technology-p1-may-june-2019-memo-afr/f015da31-32a4-4cf4-8538-1574817c4090) — Information Technology · Memo · 2019 · Afr
- [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

## 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.
