Turbo Pascal
Turbo Pascal je systém pro vývoj softwaru, který obsahuje překladač a vývojové prostředí (VP) pro programovací jazyk Pascal běžící na systémech CP/M, CP/M-86 a DOS, vyvinutý firmou Borland pod vedením Phillippe Kahna. Od verze 6 byly prodávány dvě verze, levný Turbo Pascal a dražší Borland Pascal; Borland Pascal obsahoval více knihoven a zdrojový kód standardních knihoven.
Vývojář | Borland |
---|---|
Operační systém | CP/M, CP/M-86, DOS, Windows 3.x, Macintosh |
Vyvíjeno v | jazyk symbolických adres |
Typ softwaru | Vývojové prostředí |
Některá data mohou pocházet z datové položky. |
Turbo Pascal také představuje jedno z nejvýznamnějších rozšíření jazyka Pascal, které usnadňují jeho používání pro praktické programování.
Borland vydal tři staré verze Turbo Pascalu zdarma, důvodem byl jejich historický význam: Původní Turbo Pascal (nyní známý jako 1.0), a dále verze 3.02 a 5.5 pro DOS.[1][2][3]
Motivace a vydání
Philippe Kahn viděl pro svoji nově založenou softwarovou společnost Borland příležitost na poli programovacích nástrojů. V počátcích počítačů IBM PC (1981-83) většina dodavatelů programovacích nástrojů vytvářela svoje produkty s cenami řádu stovek dolarů pro profesionální vývojáře. Jednotlivé nástroje byly samostatné – programátoři psali zdrojový kód v textovém editoru, pomocí překladače vytvořili cílový (objektový) kód (překladač často prováděl několik průchodů kódem), a nakonec linker zkombinoval objektový kód s knihovnami, aby vytvořil spustitelný program. Na počítačích s omezenými prostředky, jakými byly první modely IBM PC (např. s jednou disketovou jednotkou a bez pevného disku), mohl tento proces zabrat celé minuty.
Kahnova idea byla zabalit všechny funkce do integrovaného programovacího prostředí, které bude mít mnohem lepší výkon a nízkou cenu. Místo prodeje pomocí zavedených prodejních cest (maloobchodníci nebo větší prodejci) by se jejich nový produkt prodával levněji pomocí objednávek poštou.
Jako prodejní tah, proti větším prodejcům, neměly disky Turbo Pascalu žádnou ochranu proti kopírování, Turbo Pascal vyšel se slavnou "Knižní licencí": "You must treat this software just like a book... [it] may be used by any number of people... may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it's being used at another."[4] Volně přeloženo: "Zacházejte s tímto softwarem prostě jako s knihou… může být použit jakýmkoliv počtem lidí… může být volně přesouván z jednoho počítače na druhý, za předpokladu, že nebude používán na více místech současně."
Rozšíření jazyka
Turbo Pascal implementuje celou řadu rozšíření jazyka Pascal, které z původně výukového programovacího jazyka dělají poměrně účinný nástroj pro praktické programování:
- Řetězce proměnné délky
- Přístup k parametrům příkazového řádku
- Možnost nastavení návratového kódu programu
- Práce se soubory
- Zkrácené vyhodnocování logických výrazů
- Předčasné ukončení cyklu
- Příkaz else v case
- Operátor @ pro získání adresy objektu
- Samostatně překládané moduly
- Možnost vkládat strojový kód do programu
Řetězce proměnné délky
Kromě řetězců s pevnou délkou ze standardního jazyka standardní Pascal (packed array [1..n] of char), umožňuje Turbo Pascal používat řetězce s proměnnou délkou (max. 255 znaků) typu String
. Ke zpracování řetězců tohoto typu jsou k dispozici funkce length, která vrací délku řetězce, pos, která vrací pozici podřetězce v řetězci, a copy, která vrací část řetězce od zadaného znaku a zadané délky.
Parametry příkazového řádku
Pro zpřístupnění parametrů příkazového řádku slouží funkce ParamCount, která vrací počet parametrů, a ParamStr, která vrací řetězec odpovídající parametru se zadaným číslem.
Možnost nastavení návratového kódu programu
Pro okamžité opuštění procedury nebo funkce slouží příkaz exit. Pro okamžité ukončení programu a nastavení návratového kódu slouží funkce halt;
Práce se soubory
Funkce Assign se volá před otevřením souboru a umožňuje zadat, jméno souboru (včetně případné cesty). Funkce Close umožňuje zavřít soubor kdykoli v průběhu programu. Funkce Seek umožňuje posunout ukazovátko v souboru na nové místo, kde se bude provádět další operace čtení nebo zápisu. Proměnná IOResult udává chybový kód vrácený poslední operací se soubory.
Zkrácené vyhodnocování logických výrazů
Zkrácené vyhodnocování logických výrazů umožňuje používat výrazy jako
while (ptr <> nil) and (ptr^.next <> nil) do
ptr := ptr^.next;
Standardní Pascal trvá na kompletním vyhodnocování logických výrazů, takže když ptr má hodnotu nil (a je jasné, že podmínka nemůže být splněna), pokusí se program vyhodnotit výraz ptr^.next <> nil
, což způsobí chybu, protože ukazatel s hodnotou nil není dovoleno dereferencovat. Turbo Pascal vyhodnocuje složené logické výrazy zleva doprava a vyhodnocování ukončí, když je hodnota výrazu jasná.
Výskok z cyklu pomocí break a continue
Cykly lze okamžitě ukončit příkazem break; příkaz continue znamená přechod na začátek další iterace cyklu.
Příkaz else v case
V Turbo Pascalu lze pomocí else
definovat větev, která se provede, pokud výraz nevyhovuje ani jedné možnosti. Standardní Pascal tuto možnost nemá, a pokud se neexistuje vyhovující větev má program skončit chybou, což znemožňuje použít příkaz case
pro zpracování situací s otevřeným vstupem.
Operátor @ pro získání adresy objektu
Ve standardním Pascalu tvoří proměnné alokované dynamicky pomocí funkcí New a uvolňované funkcí Dispose samostatný ostrov, na kterém se pro přístup k proměnným používají ukazatele. V Turbo Pascalu lze do ukazatele uložit adresu libovolné proměnné nebo procedury nebo funkce pomocí operátoru @:
var
p: ^integer;
i, j: integer;
...
p := @i;
j := p^;
...
Samostatně překládané moduly
Turbo Pascal umožňuje modulární programování mechanismem samostatně překládaných modulů. Každý modul je ve zvláštním souboru, který začíná klíčovým slovem unit a identifikátorem modulu. Následuje rozhraní modulu, které je uvozené klíčovým slovem interface, a obsahuje deklarace jednotlivých konstant, typů, proměnných a procedur nebo funkcí, které modul poskytuje. Za klíčovým slovem implementation následují privátní deklarace a definice procedur a funkcí. Následovat může mít tělo modulu, které je uzavřené mezi příkazy begin a end, které slouží k inicializaci modulu.
Možnost vkládat strojový kód do programu
function InvertAttr(Attr:byte):byte;
inline(
$58/ { POP AX }
$8A/$E0/ { MOV AH,AL }
$25/$8877/ { AND AX,8877H }
$D0/$C8/ { ROR AL,1 }
$D0/$C8/ { ROR AL,1 }
$D0/$C8/ { ROR AL,1 }
$D0/$C8/ { ROR AL,1 }
$0A/$C4 { OR AL,AH }
);
Windows verze
Byly vydány dvě verze pojmenované "Turbo Pascal for Windows" (TPW), pro Windows 3.x, TPW 1.0, která vycházela z Turbo Pascalu 6, ale vyšla asi o 2 roky později a verze 1.5, která vyšla po verzi Turbo Pascal 7; následoval Borland Pascal 7, který měl podporu Windows. Překladač pro Windows v Pascalu 7 nesl název Borland Pascal for Windows'.
Obě verze vytvářely programy kompatibilní s operačním systémem Windows a obsahovaly VP založené na Windows, na rozdíl DOS VP Turbo Pascalu. VP a příkazy editoru odpovídaly uživatelskému rozhraní (UI) Microsoft Windows na rozdíl od klasického UI Turbo Pascalu. Podpora programů pro Windows požadovala knihovny ObjectWindows, podobné nikoliv však identické těm, které byly vytvořeny pro první vydání Borland C++ a radikálně odlišné od dřívějších DOS Turbo Vision prostředí. Turbo Pascal byl pro platformu Windows nahrazen prostředím Delphi; Překladač Delphi dokáže kromě GUI aplikací produkovat také konzolové aplikace, tudíž používání Turbo a Borland Pascalu nebylo nadále nutné.
Ukázkový kód
Toto je ukázka klasického Hello world programu v Turbo Pascalu:
program HelloWorld;
begin
WriteLn('Hello World')
end.
Tato úloha se zeptá na jméno a vypíše na obrazovku stokrát pozdrav:
program WriteName;
var
i : Integer; {proměnná použitá pro cyklus}
Name : String; {deklarace proměnné Name typu String}
begin
Write('Jak se jmenujes prosim?: ');
ReadLn(Name); {ReadLn vrací hodnotu zapsanou uživatelem}
for i := 1 to 100 do
begin
WriteLn('Hello ', Name)
end
end.
Reference
V tomto článku byl použit překlad textu z článku Turbo Pascal na anglické Wikipedii.
- INTERSIMONE, David. Antique Software: Turbo Pascal v1.0 [online]. Embarcadero Technologies, 2000-02-01. Dostupné online. (anglicky)
- INTERSIMONE, David. Antique Software: Turbo Pascal v3.02 [online]. Embarcadero Technologies, 2000-02-10. Dostupné online. (anglicky)
- INTERSIMONE, David. Antique Software: Turbo Pascal v5.5 [online]. Embarcadero Technologies, 2002-02-21. Dostupné online. (anglicky)
- Google Groups
Externí odkazy
- Obrázky, zvuky či videa k tématu Turbo Pascal na Wikimedia Commons
- Borland Developer Network Museum, nyní na Embarcadero Technologies
- All about Turbo Pascal
- Turbo Pascal 3 Code Generation, popis překladače Turbo Pascal 3.0
- comp.lang.pascal.borland at Google Groups
- Turbo Pascal Compiler Internals Archivováno 27. 4. 2011 na Wayback Machine, kompletní zdrojový kód překladače Turbo Pascalu 7.0.
- Turbo Pascal : problems, solutions
- Borland®/Inprise® Pascal Versions