Programmeringsteknik med Pascal

Bälter: Programmeringsteknik med Pascal, Fel och förtydliganden

Upplaga 2. Fel och förbättringar påpekade tom 970414

Vad gör man om man misstänker fel i boken?

Alla som läser boken uppmanas att meddela fel och oklarheter direkt till Olle Bälter. Om påpekandet leder till ändringar i boken kommer personen att belönas med godis och får sitt namn i tacklistan i nästa upplaga. Varje fel belönas endast en gång, den som först meddelar Olle får belöningen. Fel i detta dokument kan också påpekas, men ger normalt ingen notis i boken.

Tillkomna felpåpekare

s9 Eric Cardelius, Christina Lannes, Sara Söderstam, Barbro Hedlund, Marie Engfors, Robert Fåhraeus, Lars-Ake Larzon, Claes Norberg, Thomas Fasth, Lars-Åke Larzon, Anna Eklund, Patrik Nilsson, Anders Löfgren, Erik Fransén, Frans Heijbel förtjänar uppmärksamhet för noggrannt läsande och mod att påpeka fel och förbättringar.

Fel i texten

s15 r14 Write('Det motsvarar ... byts mot Writeln('Det motsvarar ...

s35 r13 Förtydligande: Semikolon saknas sist på raden.

s59 Thinkpascal garanterar inte att den använder lat evaluering. Ibland gör den det, ibland inte.

s59 Det finns en parentes för mycket fjärde raden från slutet.

 IF (x<>0) AND (a/x <3) THEN ...

s69 r-7

styrvariabel := styrvariabel
bör vara överstruken.

s88 I proceduren InitCharacterFrequency ska i vara deklarerad som en Char:

PROCEDURE InitCharacterFrequency(VAR v :IntegerArray);
{Initierar v till nollor}
VAR i :Char;
BEGIN
  FOR i:=Chr(0) TO Chr(255) DO v[i]:=0;
END; {InitCharacterFrequency}

s94 Ekvationssystemet, 2:a ekvationen har en positiv trea, men en bit nedan i matris A är trean helt plötsligt negativt inskriven.Trean på andra raden ska naturligtvis vara positiv hela tiden.

s144 I ansnittet VAX har en ruta blivit tom. Texten ska lyda:
VAX har ett operativsystemskommando för att koppla pascalutmatning till en viss fil. Det kan ges när som helst och gäller sedan alla pascalkörningar tills man ger ett kommando som återställer skärmutmatning eller loggar ut.

EX TABLES kompilera/kör som vanligt

s148 r10 och r8 från slutet. Byt "utfil" mot "Tabell" (totalt tre byten):

Assign(Tabell, 'Tabell.txt'); Rewrite(Tabell);
På Mac och Unixdatorer:
Rewrite/Tabell, 'Tabell.txt');

s157 Förtydligande: "något kvar att skriva" är pseudokod. Jämför med inläsningen där man läser till filslut. Det går inte vid utskrift.

s163 r3 Compact Disc stavas med c på engelska.

s184 r24 Förtydligande: Ett semikolon bör avsluta raden, men före END behövs inga semikolon så det blir inga kompileringsfel.

s190 r5 Världen stavas just så.

s214 Förtydligande: Random som är given i boken ger aldrig talet 0, endast tal i det öppna intervallet ]0..1[. Därmed fungerar även Normal och Negexp precis som de står. Om man har en annan Random som ger även talet 0 så måste Normal och Negexp modifieras t ex så här:

REPEAT
  slumptal := Random;
UNTIL slumptal <> 0;
Därefter används slumptal i st f Random i bägge funktionerna (observera de två anropen i Normal).

Fel i lösningarna

s222 Förtydligande: Övning 1.8. På datorer med 16-bitars Integer bör longint användas för att klara antalet sekunder under ett dygn.

s222 Övning 1.9. Svaret på f finns under j. Svaren f, g, h, k ska strykas.

s224 r11 Förtydligande: Ett semikolon bör avsluta raden, men före END behövs inga semikolon så det blir inga kompileringsfel.

s224 r17 Sin ska ersättas med Cos.

s224 r17 Förtydligande: Ett semikolon bör avsluta raden, men före END behövs inga semikolon så det blir inga kompileringsfel.

Fel i index

s297 TAB finns inte på sidan 301 utan på sidan 299 (detta fel uppstod under tryckningen).