Provinsie van die

OOS-KAAP ONDERWYS

Steve Vukile Tshwete Onderwyskompleks • Sone 6 Zwelitsha 5608 • Privaatsak X0032 • Bhisho 5605 REPUBLIEK VAN SUID-AFRIKA

HOOFDIREKTORAAT – KURRIKULUMBESTUUR

GRAAD 12 LEERDER ONDERSTEUNINGSPROGRAM

HERSIENING EN REMEDIËRENDE ONDERRIG INSTRUMENT: ANTWOORDE

VAK: INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL

Junie 2009 Hierdie dokument bestaan uit 18 bladsye.

Streng gesproke nie vir toets/eksamen doeleindes nie.

2

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

(MEMO 06/09)

AFDELING A: DELPHI PROGRAMMERING VRAAG 1: DELPHI DATABASIS-KONNEKTIWITEIT Puntetoekenning Q 1.1 1.2

1.3 1.4 1.5

1.6

1.7

1.8

VRAAG 1 – MERKBLAD Aspek Kies alle velde uit die tabel tblData 9 Gesorteer volgens Season-veld 9in dalende volgorde 9 dan in stygende volgorde 9 van Team-veld 9 Seleksie van Season , Team , Placing velde uit tblData 9 Season >= 2006 voorwaarde spesifiseer 9 AND operator gebruik om voorwaardes te kombineer 9 Not LIKE of operator gespesifiseer 9 ‘Wildcard’ gebruik (SA%) 9 INSERT INTO tblTeams gespesifiseer 9 VALUES 9 Korrekte waardes bygevoeg 9 UPDATE tblData 9 SET Team 9 = 'AU4’ 9 WHERE Team = ‘AU5’ 9 Seleksie van Season en Placing velde uit tblData 9 WHERE Team = sTeam gespesifiseer 9 AND operator gebruik om voorwaardes te kombineer 9 Placing = 15 and TF 1) 9 Seleksie van Season, Team, Won, Drawn , Lost-velde uit tblData 9 Byvoeging van ‘Win Percentage’ as ʼn berekende veld9 Korrekte berekening (Won / (Won+Drawn+Lost) * 100) 999 Afgerond 9 tot een desimale plek 9 Seleksie van Season-veld uit tblData 9 Max Tries as berekende veld bygevoeg 9 Max funksie op TF veld toegepas 9 Resultate volgens seisoen gegroepeer 9 TOTAAL

Maks Punte 5

5 3 4

4

8

7

4 40

Leerder se punt

(MEMO 06/09)

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

3

VOORBEELD VAN DELPHI OPLOSSING VRAAG 1 var frmQ1: TfrmQ1; implementation {$R *.dfm} //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_1Click(Sender: TObject); // 1.1 begin qryDatabase.Active := False; qryDatabase.SQL.Text := 'SELECT * FROM tblData ORDER BY Season DESC, Team' ; qryDatabase.Active := true; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_2Click(Sender: TObject); // 1.2 begin qryDatabase.Active := False; qryDatabase.SQL.Text := 'SELECT Season , Team , Placing FROM tblData Where Season >= 2006 And Team not Like ''SA%''' ; qryDatabase.Active := true; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_3Click(Sender: TObject); // 1.3 begin qryDatabase.SQL.Text := 'INSERT INTO tblTeams ' + 'VALUES ("SA6", "Eastern Province","Telkom Park", "Mighty Elephants")'; qryDatabase.ExecSQL; qryDatabase.SQL.Text := 'SELECT * FROM tblTeams'; qryDatabase.Active := True; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_4Click(Sender: TObject); // 1.4 begin qryDatabase.Active := False; qryDatabase.SQL.Text := 'UPDATE tblData SET Team = ''AU4'' WHERE Team = ''AU5'' '; qryDatabase.ExecSQL; qryDatabase.SQL.Text := 'SELECT * FROM tblData'; qryDatabase.Active := true; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_5Click(Sender: TObject); // 1.5 var sTeam , sPlacing :string; begin sTeam := InputBox('Enter team''s code(e.g. SA1) ', '', 'SA1'); sPlacing := ( InputBox('Enter the minimum placing in a season required ', '', '4')); qryDatabase.Active := False; qryDatabase.SQL.Text := 'SELECT Season , Placing FROM tblData' + ' WHERE Team = "' + sTeam + '" and Placing = 15 and TF 1) '; qryDatabase.Active := true; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_7Click(Sender: TObject); // 1.7 begin qryDatabase.Active := False; qryDatabase.SQL.Text := 'SELECT Season, Team, Won, Drawn , Lost , Round (Won / (Won+Drawn+Lost) * 100 , 1) as [Win Percentage] From tblData' ; qryDatabase.Active := true; end; //-------------------------------------------------------------------------------------------------------------------------procedure TfrmQ1.btn1_8Click(Sender: TObject); // 1.8 begin qryDatabase.Active := False; qryDatabase.SQL.Text :='SELECT Season, Max(TF) as [Max Tries] FROM tblData Group by Season '; qryDatabase.Active := true; end; //--------------------------------------------------------------------------------------------------------------------------

(MEMO 06/09)

5

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

VRAAG 2: DELPHI OOP PROGRAMMERING Punte toekenning VRAAG 2 – MERKBLAD Aspek

Q 2.1.1

2.1.2

Verklaring van Klas: Nuwe klas verklaar 9 Klas se naam is TGame 9 Byvoeging van velde: Velde as privaat velde bygevoeg 9

Maks Punte

2

2.1.3

Volgende velde verklaar: fSeason as ʼn Integer tipe 99 fTeam1 as ʼn String tipe 99 fTeam2 as ʼn String tipe 99 fScore1 as ʼn Integer tipe 99 fScore2 as ʼn Integer tipe 99 Byvoeging van konstruktor met parameters

2

2.2.1

Create konstruktor bygevoeg 9 Parameterlys korrek bygevoeg 9 Verklaring van skikking van objekte

2

2.2.2

Skikking arrGames van tipe TGame verklaar 9 Kan 600 elemente stoor 9 Lees van tekslêer en byvoeging van objekte (a) Gebruik van Assign stelling om aan tekslêer te koppel 9 Toets of lêer bestaan 9 Toepaslike foutboodskap as lêer nie bestaan nie 9 Program word beëindig as lêer nie bestaan nie 9 (b) Reset stelling om lêer oop te maak. 9 Voorwaardelike lus 9gebruik om lêer te verwerk 9 (c) Readln stelling gebruik om reël van teks in te lees 9 en aan ʼn stringveranderlike toe te ken. (d) Eerste 4 karakters 9 gekopieer en omgeskakel na ʼn Integer tipe 9 vir die seisoen Karakters 6 – 8 gekopieer as Team1 9 Karakters 10 – 12 gekopieer as Team2 9 Posisie van komma voor of na eerste telling bereken 99 Eerste telling bepaal 99 en omgeskakel na ʼn Integer tipe 9 Tweede telling bepaal 99 en omgeskakel na ʼn Integer tipe 9

11

4 3 1

12

Leerder se punt

6

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

(e) (f) 99

Globale integer veranderlike iNumber verklaar 9 iNumber aan zero binne prosedure gelykgestel9 Tellingveranderlike iNumber inkrementeer 9 Nuwe objek by skikking bygevoeg met Create metode

2.3.1

Byvoeging van toString metode

2.3.2

String metode/funksie geskep 9 Al vyf velde bygevoeg 9 Omskepping na string vir Season en albei ‘Score’ velde 9 Korrekte spasiëring 9 en ‘skeikarakters’ bygevoeg 99 Byvoeging van CalcPointsDiff metode

2.3.3

Integer metode/funksie geskep 9 Verskil tussen twee tellings bereken 9 Resultaat as ʼn a positiewe getal teruggestuur 9 Byvoeging van CalcPointsTeam1 metode

2.4

Integer metode/funksie geskep 9 Totaal veranderlike aan nul gelykgestel 9 Stel vas of dit ʼn wenresultaat vir Team1 is9 Byvoeging van 4 punte vir ʼn wen 9 Stel vas of dit ʼn gelykopuitslag is 9 Byvoeging van 2 punte by totaal vir ʼn gelykopuitslag 9 Stel vas of dit ʼn verloorwedstryd was vir Team1 9 Byvoeging van 2 punte by totaal 9 vir ʼn verlies van sewe punte of minder 9 Kodering van ListResults prosedure Lus om deur skikking te loop (van 1 tot iNumber ) 99 Afvoer na memo-kontrole 9 toString- metode geroep as deel van afvoer 9 CalcPointsDiff-metode geroep 9 en omgeskakel na tipe string vir afvoerdoeleindes. 9 CalcPointsTeam1-metode geroep 9 en omgeskakel na string tipe vir afvoerdoeleindes. 9 Korrekte opskrifte bygevoeg (‘PD’ en 'Points vir Team 1) 9 Tabelstoppunte / spasiëring bygevoeg waar nodig 9

(MEMO 06/09)

2 3

6

3

9

10

(MEMO 06/09)

2.5

7

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

Kodering van WinningAverage-prosedure GetTeamScore1 integer metode /funksie geskep 9om telling van Team1 terug te stuur9 GetTeamScore2 integer metode /funksie geskep 9om telling van Team2 terug te stuur9 Inisialiseer die Teller en Totaal veranderlikes 99 Lus om deur skikking te loop (van 1 tot iNumber ) 99 Toets en uitsluiting van gelykop wedstryde 9 Inkrementering van telling van wedstryde wat nie gelykop geëindig het nie 9 Wentelling 99by totaal bygetel 9 Afvoer na memo-kontrole 9 Aantal wedstryde word vertoon 9 Berekening van gemiddelde wentelling 9 Gemiddelde vertoon 9 korrek tot twee desimale plekke 9

2.6.1

Byvoeging van SwopTeams-metode:

2.6.2

SwopTeams-metode bygevoeg 9 Kontroleer of Team1 gelyk is aan eerste parameter 9 en vervang 9 Daar word verhoed dat Team1 nie weer omgeruil word as dit gelyk is aan die tweede parameter nie (Else klousule) 9 Kontroleer of Team1 gelyk is aan tweede parameter 9 en vervang 9 Kontroleer of Team2 gelyk is aan eerste parameter 9 en vervang 9 Verhoed dat Team2 nie weer omgeruil word as dit gelyk is aan die eerste parameter nie (Else klousule) 9 Kontroleer of Team1 gelyk is aan tweede parameter 9 en vervang 9 Kodering van SwopTeams-prosedure: Kry gebruiker se invoerwaarde vir eerste span 9 Kry gebruiker se invoerwaarde vir tweede span 9 Lus om deur skikking te loop (van 1 tot iNumber ) 99 SwopTeams-metode geroep 9

18

11

5

8

2.6.3

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

(MEMO 06/09)

Kodering van FirstDraw-prosedure Lusteller veranderlike inisialiseer 9 ‘Ontdek’ vlagveranderlike inisialiseer 9 Voorwaardelike lus gebruik om skikking te verwerk 9 (geen punt toegeken as For-lus nie gebruik word nie) Lus loop terwyl laaste element in skikking nie bereik is nie 9 en passende rekord nie gekry word nie 9 (of totdat passende rekord gekry word of hele skikking verwerk is). Inkrementeer lusteller veranderlike met een 9 Integer metode(s)/funksie geskep om name van twee spanne terug te stuur. 99 Eerste twee karakters van albei spanne word bepaal om die lande van albei spanne vas te stel. 99 Kontroleer vir gelykopwedstryd 9 vir spanne van dieselfde land 9 Stel van ‘ontdek’ vlag as passende rekord gevind word 9 Boodskap word vertoon as geen passende ‘rekord’ gevind word nie 9 Vertoon van passende rekord 9 met toString-metode 9 TOTAAL

16 (120 ÷ 2) 60

(MEMO 06/09)

9

INLIGTINGSTEGNOLOGIE – EERSTE VRAESTEL (INFT)

VOORBEELD VAN DELPHI OPLOSSING VRAAG 2 Object Class (Games_U) unit Games_U; interface uses sysUtils , dialogs; type TGame = class // 2.1.1 Private fSeason : Integer; fTeam1 : String; fTeam2 : String; // 2.1.2 fScore1 : Integer; fScore2 : Integer; Public Constructor Create(pTeam1, pTeam2 : String ; pSeason, pScore1, pScore2 : Integer ); Function CalcPointsDiff: Integer; Function CalcPointsTeam1: Integer; Function toString:string; Function GetTeamName1: String; Function GetTeamName2: String; Function GetTeamScore1: Integer; Function GetTeamScore2: Integer; Procedure SwopTeams(pTeam1 , pTeam2 : String); end; implementation //--------------------------------------------------------------------------------------------------------------------------constructor tGame.Create(pTeam1, pTeam2 : String ; pSeason, pScore1, pScore2 : Integer); // 2.1.3 begin fSeason := pSeason; fTeam1 := pTeam1; fTeam2 := pTeam2; fScore1 := pScore1; fScore2 := pScore2 end; //-------------------------------------------------------------------------------------------------------------------------function TGame.toString: String ; // 2.3.1 begin Result := IntToStr(fSeason) + ': '+ fTeam1 + ' vs ' + fTeam2 + ' '+ IntToStr(fScore1)+ ' - ' + IntToStr(fScore2) ; end; //---------------------------------------------------------------------------------------------------------------------function tGame.CalcPointsDiff : Integer; // 2.3.2 begin Result := Abs (fScore1 - fScore2); end; //--------------------------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------------------------function tGame.CalcPointsTeam1 : Integer; Var Points : Integer; begin Points := 0; If fScore1 > fScore2 then Inc (Points , 4) ; If fScore1 = fScore2 then Inc (Points , 2) ; If (fScore1 < fScore2) and (fScore2 - fScore1 0) and (iNewCol > 0) and (arrSpectators[iNewRow , iNewCol] = cSpectator) Then Inc(iCount); // Check for cell diagonally above to right iNewRow := iRow - 1; iNewCol := iCol + 1; If (iNewRow > 0) and (iNewCol