Analytisk programmering

Tags:    delphi
Skrevet af Bruger #394 @ 26.10.2002
Analytisk Programmering

Solid og holdbar programmering er andet end at pløje den ene kommando af efter den anden. Stabile programmer har mange analytiske moduler, som checker om indstillinger og situationer er som de skal være for at der ikke skal opstå konflikter under udførelse af kommandoerne. Denne artikel vil gennemgå de mest basale måder at analysere på, samt et par enkelte tips og tricks.

Booleanske Værdier

De fleste har stiftet bekendtskab med typen "Boolean" også nogle gange under navnet "longbool". Det er de former for typer man oftest bruger når man skal analysere egenskaber. Lad os først kikke på hvordan vi checker om en checkbox er markeret med et kryds eller ej. Det ville man typisk gøre sådan :
if CheckBox1.Checked = True then
...
Dette er så et lille sidespring, men når boolean-værdier skal være "true" eller sande, behøver man faktisk ikke skrive " = True", i dette tilfælde ville det være godt nok bare at skrive
if CheckBox1.Checked Then
...
Det er jo ganske smart. Men lad os lige kikke på en gammel kending. Herunder vil jeg prøve at lave et checkbox som henholdsvis skjuler og viser statusbar1 alt afhængig af om checkbox1 er på true eller false. De fleste vil i starten typisk skrive dette
if CheckBox1.Checked = True then begin
CheckBox1.Checked := False;
Statusbar1.Hide;
end;
if CheckBox1.Checked = False then begin
CheckBox1.Checked := True;
Statusbar1.Show;
end;
Lige umiddelbart tænker man ikke over den komplikation som der opstår. Men faktisk hvis du kikker koden igennem een gang vil, du sikkert opdage at hvis checkbox er på true når proceduren starter, vil den også ende med at være true. Det der ganske enkelt sker er følgende : Hvis checkbox1 er markeret, så fjern markering og skjul statusbar1. Hvis der ikke er markering på checkbox1 så giv checkbox1 markering og vis statusbar1. Men det er da meget fedt at vi har fundet er problem, hvordan løses det så ? Det gør vi ved at bruge "else" i stedet for at køre endnu en if-sætning. Sådan her skal den funktionelle model se ud :
if CheckBox1.Checked = True then begin
CheckBox1.Checked := False;
Statusbar1.Hide;
end else begin
CheckBox1.Checked := True;
Statusbar1.Show;
end;
Det er så egentlig sker er : Hvis checkbox1 er markeret så fjern markering og skjul statusbar1 - ellers, hvis den ikke er markeret så marker den og vis statusbar1 Det lyder ikke som en stor forskel, men som du kan se er den altafgørende for om koden skal være funktionsdygtig eller ej. Men lad os kikke lidt nærmere på andre vigtige måder at checke om tingene er som de skal være på. Herunder vil vi se på hvordan man checker om filer og biblioteker eksisterer.
if FileExists('C:\\fil') then begin
ShowMessage('Filen findes');
end else begin
ShowMessage('Filen findes ikke');
end;
Og når du skal lede efter biblioteker skal du bare erstatte "FileExists" med "DirectoryExists". Der findes også andre handy måder at checke op til flere værdier på samtidig. Her i eksemplet vil vi se på hvordan man checker om tallet i variablen "Skruer" er større end 700 og om variablen "Pris" er mindre end 60.
var
  Skruer, Pris : Extended;
begin
  if (Skruer > 700) and (Pris < 60) then begin
  ...
  end;
end;
Hvis vi så vil checke om skruer er over 700 ELLER om pris er under 60, så erstatter du bare "and" med "or". Det forekommer som en form for logik at man også kan se om en værdi "Ikke er lige med". Det er der flere måder at gøre på.
De første to er næsten ens.

if not (Pris < 60) then begin
...
end;
I det næste eksempel skal vi vide specifik at dette ikke er lige med. Vi kan ikke sige om den ikke er større end 60, vi kan kun sige lige med.
if Pris <> 60 then begin
...
end;
Du kan selvfølgelig også lede med "større end" og "mindre end", hvis du skriver henholdsvis >= og <=.. og ja næbbet skal være først i begge tilfælde. Det forekommer egentlig oftere end man ligger mærke til, at man analysere frem for at udføre - og det er også den bedste måde at lave et godt, solidt og stabilt program på. Det forekommer ganske naturligt for øvede programmører, men for nye og tilkomne kan det være ganske brugbart at få informationer som disse.



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (0)

Du skal være logget ind for at skrive en kommentar.
t