Object Pascal - 01: Úvod k výuce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Object Pascal - 01: Úvod k výuceObject Pascal - 01: Úvod k výuce

 

Object Pascal - 01: Úvod k výuce

Google       Google       31. 8. 2008       48 427×

Vítám vás v malém seriálu o jazyku Object Pascal. Seriál je určen pro začátečníky, kteří se chtějí seznámit se základními principy a pojmy z oblasti programování.

Mohl by se hodit jako materiál k samostudiu nebo jako pomůcka k výuce základů programování ve škole (myslím třeba na svoje studenty v době nemoci apod.). Pokud by pomohl při výuce některé kolegyni či kolegovi na jiné škole, budu rád. V každém případě předem děkuji za ohlasy a připomínky.

Seriál nemůže být důkladný jako dobrá učebnice, ale někomu snad může být užitečný.

Úvodní díl seriálu má dvě části: v první části uvádím stručný přehled o vývoji programovacích jazyků s některými počátečními pojmy, ve druhé části už něco z Pascalu: stavbu programu, přiřazovací příkaz a úvodní úkoly.

Na Programujte.com a nejen zde už velmi pěkné kurzy o Pascalu jsou. Ten můj by mohl být snad užitečný v tom, že se nevěnuje už zastaralým verzím Pascalu (Borland Pascal, Turbo Pascal) jako některé starší, a také tím, že zpočátku odděluje práci s formuláři a komponentami v Delphi od samotného programování – začátečníkovi doporučuji nejdříve pracovat v konzole Delphi, ať ho další věci zbytečně neruší. O vývojovém prostředí, které Vám doporučuji, se píše na konci článku. Také brzy přejdeme k principům Objektově orientovaného programování v Delphi, což třeba v novějších učebnicích Pascalu myslím zcela chybí(!), přitom jde snad o zásadní věc. Tak s chutí do toho!

1. část: Programovací jazyky, základní přehled a vývoj

Začnu výstižnou větou: „Historie programování je proložena neustálým rozporem mezi rychle narůstající výkonností počítačů a pomalým nárůstem produktivity programátorské práce.“ (volně citováno z některé z knih pana R. Pecinovského). Jazyky se proto postupně vyvíjejí od nejprimitivnějších po vyšší:

  1. Strojový kód: instrukce programu jsou zapsány čísly tak, že jim procesor přímo rozumí. Instrukce tedy představují nejjednodušší, základní operace, které je procesor schopen přímo provést. Program by mohl vypadat snad nějak takto (nikdy jsem to nezkoušel):
    00010110
    00001100
    00001011
    …
    
    Takové programování je jistě obzvláště obtížné a už se nepoužívá. Na druhou stranu takto napsaný program by byl nejrychlejší, což už ale při dnešní rychlosti PC není rozhodující.
  2. Assembler (jazyk symbolických adres), 50. léta 20. století: čísla instrukcí byla nahrazena názornějšími písmenovými zkratkami a absolutní adresy paměťových míst byly nahrazeny místy v paměti, která si programátor sám pojmenoval a kam mohl ukládat hodnoty – byly tedy použity proměnné (viz dále). Názvu proměnné se říká identifikátor. Program by mohl vypadat snad nějak takto:
    INV C
    STO 1
    LBL 1
    …
    
    Také nic příjemného, nicméně velký pokrok. V počítači ale musel být přítomen navíc další program – tzv. překladač – který přeložil program v assembleru do strojového kódu, kterému jedině procesor rozumí.
  3. Vyšší programovací jazyky, problémově orientované, 60. léta: Fortran, Algol, Cobol. Tyto jazyky byly opět o další velký krok blíže běžnému jazyku člověka (a dál od vyjadřování procesoru), byly zaměřeny na jistou oblast použití (Fortran: Formula Translation, hlavně pro vědeckotechnické výpočty. Cobol: Common Business Oriented Language, pro zpracování hromadných dat.).
  4. Vyšší programovací jazyky, obecnější, 60. a 70. léta: Basic, Pascal, C… Pascal představoval univerzální důsledně procedurální programování (program je složen ze samostatnějších bloků, procedur či funkcí, které lze opakovaně na různých místech použít (vyvolat)). Procedurální programovací jazyky přinesly další velký nárůst v produktivitě programátorovy práce na cestě psát snáze stále složitější programy.
    Cena návrhu programu a jeho vytvoření totiž postupně zcela převládla nad cenou strojového času počítače, nad původním nedostatkem prostředků (paměti, rychlosti počítače), a tak cesty k usnadnění práce programátora se staly i do budoucna nejdůležitější. Pan R. Pecinovský ve své knize Myslíme objektově v jazyku Java 5.0 velmi pěkně píše: „Prakticky každý program zaznamená během svého života řadu změn. Tak, jak se průběžně mění požadavky zákazníka, je program postupně upravován, rozšiřován a vylepšován. Celé současné programování je proto vedeno snahou psát programy nejenom tak, aby pracovaly efektivně, tj. rychle a s minimální spotřebou různých zdrojů, ale aby je také bylo možno kdykoliv jednoduše upravit a vylepšit.“ Pak dodává a čtenáři klade na srdce další pěkný citát: „Napsat program, kterému porozumí počítač, umí i hlupák. Dobrý programátor píše programy, kterým porozumí i člověk.“
  5. Objektově orientované jazyky, 70. a 80. léta: prvním byl jazyk Simula 67, dál systém Smalltalk. Na ně navázaly jazyky C++ (objektové rozšíření jazyka C) a objektové verze Pascalu. Jednotlivé části programu – objekty – jsou ještě samostatnější, univerzálnější, dají se snáze opakovaně i v různých programech využít. Objektově orientované programování (OOP) se stalo další revolucí. V mém seriálu proto na OOP brzo také dojde.
  6. Objektový jazyk nezávislý na platformě (operačním systému), 90. léta: Java.
  7. Grafická vývojová prostředí pro výrazné urychlení a usnadnění tvorby aplikací, 90. léta a dál: vesměs používají OOP: Delphi, Visual Basic, C++ Builder,… Delphi je pro nás zajímavé tím, že jazykem, ve kterém se v Delphi píší aplikace, je Object Pascal.
  8. Pokračování 6. i 7. – platforma .NET od Microsoftu, rok 2000: využívá upravenou Javu (J#), Visual Basic.NET a hlavně pro tuto platformu vytvořený jazyk C#, navazující na Javu a C++.

Proč volím pro výuku Pascal (Object Pascal)?

  1. Jde o jazyk původně přímo určený k výuce programování, takže je dobře srozumitelný (viz ukázky dále).
  2. Profesionální vývojové prostředí Delphi používá jako programovací jazyk objektovou nástavbu Pascalu Object Pascal, takže se s Pascalem takto setkáme i v komerční sféře; inzeráty, hledající programátory v Delphi, jsou sice vzácné, ale občas se objeví.
  3. Hlavně mi jde o to, že pro začátečníka, který se chce s programováním seznámit, ale nemá na to moc času a neví ještě, jestli se programování bude chtít věnovat více (např. student gymnázia) se mi zdá obtížné pouštět se třeba do C++ nebo Javy. Pascal je je sice oproti těmto jazykům rozhodně méně používaný, ale na ně je čas spíše na specializované počítačově orientované střední škole nebo na VŠ, na gymnáziu s menší hodinovou dotací výuky počítačů však stěží.
    Šikovný a zapálený student gymnázia se možná třeba s Javou seznámí samostudiem. I pro něj ale nemusí být Object Pascal ztrátou času, protože mnohé principy jsou stejné a budoucímu profesionálovi se znalost práce v Delphi také může hodit. Pro podobné nadšence se budu snažit občas poznámku o Javě zařadit.

Pro ukázku jednoduchý program třeba v jazyku C:

#include 
int main() {
   int i, j;
   printf(“Zadej dvě čísla“);
   scanf(“%d“, &i);
   scanf(“%d“, &j);
   printf(“Součet čísel je %d“, i + j);
   return 0;
}

v jazyku C++:

#include <iostream>
using namespace std;
int main() {
   cout << “Zadej dve cisla“ << endl;
   int i, j;
   cin >> i >> j;
   cout << “Soucet cisel je “ << i + j << endl;
   return 0;
}

a v Javě (metodu pro načtení čísla jsem si vypůjčil z knihy P. Herouta "Učebnice jazyka Java" a trochu jsem ji zestručnil):

import java.io.*;
public class Soucet {
   public static int ctiInt()  throws IOException {
      byte[] pole = new byte[20];
      String nacteno;
      int i;
      System.in.read(pole);
      nacteno = new String(pole).trim();
      i = Integer.valueOf(nacteno).intValue();
      return i;
   }
   public static void main (String[] args)  throws IOException {
      System.out.println("Zadej dve cisla");
      int i = ctiInt();
      int j = ctiInt();
      System.out.print("Soucet cisel je " + (i + j));
   }
}

a potom totéž v Pascalu:

program soucet;
var i, j: integer;
begin
    writeLn(‘Zadej dvě čísla‘);
    readLn(i);
    readLn(j);
    writeLn(‘Součet čísel je ‘‚ i + j);
    readLn;
end.

Úplný začátečník myslím v pohodě porozumí smyslu posledního programu v Pascalu, těžko však předchozím programům v C, C++ a Javě.

Na studentských stránkách citátů a vtipů z Matematicko-Fyzikální fakulty UK v Praze se u jednoho vyučujícího uvádí tato věta: "Pascal je jako bezpečná náruč matky, zatímco Céčko představuje spíš procházku bosýma nohama mezi břitvami a žiletkami". Mluví se tu sice o starém jazyku C, ale trochu to myslím postihuje i situaci začátečníka při setkání s dalšími uvedenými jazyky.

A tak protože v seriálu budeme mít málo času, takže bychom těžko nástrahy Céčka, C++ či Javy zvládli, budeme se věnovat základům programování v Pascalu. (Nejlepší by ovšem bylo, kdybyste stihli programovat paralelně i v Javě nebo v jiném jazyku, není to ale legrace :-)

2. část: Stavba programu, přiřazovací příkaz

Stavba programu v Pascalu

Každý program v Pascalu se skládá ze dvou částí:

  1. Hlavička programu: obsahuje klíčové slovo program, za kterým je napsán název programu (bez interpunkčních znamének a mezer) a středník. My budeme psát programy v prostředí Delphi, kde je přípona zdrojového souboru .dpr (Delphi Project) a název programu stejný jako pojmenování souboru. Po překladu vznikne výsledná aplikace – spustitelný soubor (s příponou .exe). Příklad hlavičky programu:
    program prvocisla;
    a program bude uložen s názvem prvocisla.dpr a po překladu bude vytvořena aplikace s názvem prvocisla.exe. (Ve starších verzích Pascalu se název programu nemusel shodovat s pojmenováním zdrojového souboru. Ten měl příponu .pas).
  2. Blok programu: je rozdělen na dvě části:
    • Deklarační část: obsahuje zavedení (deklaraci) proměnných, ale také vhodných konstant, datových typů, popř. procedur a funkcí nebo knihoven.
    • Příkazová část: obsahuje posloupnost příkazů, ohraničenou příkazy begin a end (za tímto příkazem je tečka, protože končí celý program). Tato příkazová část se nazývá složený příkaz a je složena z příkazů vlastního programu. Příkazy dělíme na jednoduché (přiřazovací příkaz, příkaz procedury) a strukturované (větvení, cykly, také samotný složený příkaz,…).

Příklad celého programu v Pascalu

Nejdřív vysvětlení některých dosud nevysvětlených pojmů:

  • kulatá závorka a hvězdička (* *) začínají a končí vysvětlivku v programu, tedy pomocný text pro programátora, který je programem ignorován (nenaruší tedy chod programu). Totéž zařídí složené závorky { }. Komentář jen do konce řádku lze začít značkou //.
  • příkaz sqrt(x) znamená výpočet druhé odmocniny z čísla x
  • klíčové slovo real znamená reálná čísla
  • značka := (dvojtečka a rovnítko) znamená příkaz přiřazení. Např. zápis x := 2 znamená, že proměnné x přiřadíme hodnotu 2.
program zkusebni;   (* ad 1: Hlavička programu. *)
{$APPTYPE CONSOLE} // informace - direktiva - že jde o konzolovou aplikaci
uses SysUtils; // přiložená knihovna vývojového prostředí
var a, b, c, x1, x2: real;  { ad 2: Blok programu.	
        To byla deklarace proměnných, všechny jsou typu real. }
begin  // Začíná vlastní program - složený příkaz.
	writeLn('Zadej koeficienty:');
	write('a: '); readLn(a);
	write('b: '); readLn(b);
	write('c: '); readLn(c);
	x1 := (-b + sqrt(b*b - 4*a*c))/(2*a);
	x2 := (-b - sqrt(b*b - 4*a*c))/(2*a);
	writeLn('Prvni koren je ', x1);
	writeLn('Druhy koren je ', x2);
	write('Pro ukonceni programu stiskni libovolnou klavesu. ');
	write('Preji pekny den.');
	readLn;
end.	

Pro větší přehlednost zdrojového textu by šlo vynechat mezi jednotlivými částmi programu (hlavička, deklarace proměnných, vlastní program – složený příkaz) volný řádek. Hlavně však příkazy patřící k sobě (patřící do jednoho složeného příkazu) všechny o něco odsadím, stačí o 2 nebo 3 mezery, nejlépe vhodně nastaveným tabelátorem. Přijdete na to, co program počítá? Po instalaci vývojového prostředí Delphi si ho zkuste napsat, uložit a spustit.

I v tak jednoduchém prográmku by se dalo určitě něco vylepšit (1. zefektivnit tak, aby se diskriminant kvadratické rovnice nemusel počítat dvakrát, 2. doplnit kvůli funkčnosti pro případ záporného diskriminantu). To by mohla být dobrovolná cvičení.

Přiřazovací příkaz

Je jedním ze základních příkazů všech programovacích jazyků.

Jak bylo napsáno výše, slouží tento příkaz k přiřazení nějaké hodnoty do proměnné. Proměnná je paměťové místo, kterému programátor dal nějaké jméno. Jméno proměnné nazýváme také identifikátor.

Přiřazovací příkaz se v Pascalu značí dvojtečkou a rovnítkem ( := ) pro odlišení od samotného rovnítka, které slouží pro zjištění rovnosti dvou výrazů. Např.:

zápis x := 2 znamená, že proměnné x přiřadíme hodnotu 2, ale zápis x = 2 říká, že hodnota proměnné x je rovna číslu 2, což může, ale nemusí být pravda. (Jedná se tedy spíš o jakousi podmínku).

Následují dva skoro stejné úseky programu lišící se jen v přiřazovacím příkazu:

x := 2;
if x = 2 then write(‘V proměnné x je hodnota 2.‘);
...
x := 351;
if x = 2 then write(‘V proměnné x je hodnota 2.‘);
...

Jistě chápete tzv. podmíněný příkaz (if podmínka then příkaz) a to, že v prvním příkladu by se text vypsal, zatímco v druhém příkladu podmínka (x = 2) nebude splněna, takže se příkaz write neprovede.

Poznámka: V mnohých programovacích jazycích (C, C++, Java, JavaScript,…) se přiřazení zapisuje jen jdením rovnítkem (=). Pak je ale nutno nějak odlišit zápis rovnosti dvou výrazů. Použije se k tomu třeba dvojice rovnítek. Předchozí úsek programu v JavaScriptu:

x = 2;
if (x == 2) then document.write(“V proměnné x je hodnota 2.“);

Úkol č. 1

Pozor! Na rozdíl od Pascalu se zde pro ohraničení textového řetězce použily uvozovky. Podívejte se do ukázek, jak se uzavírá text v Pascalu. Odpověď s praktickým tipem je na konci dnešní lekce.

Syntaxe

Jak je vidět, gramatická pravidla (pravidla pravopisu) jsou v různých programovacích jazycích různá. Nazýváme je syntaktická pravidla (stručně syntaxe).

Instalace Delphi a psaní prvního programu

Verze Personal č. 7 je dostupná zdarma na www.borland.com, snáze však na adrese www.stahuj.cz. Po stažení a instalaci je nutná registrace (napsat si o zaslání klíče, pak registrace zaslaným souborem, už jsem to dlouho nedělal, jistě to zvládnete). Možná bude mít kamarád(ka) Delphi na CD. Pro své studenty umístím instalační soubor i kód k registraci na školní moodle.

V Delphi pak otevřete konzoli (File > New > Other, vybrat Console Application). Otevře se konzola, do které můžete mezi příkazy begin a end rovnou začít psát kód programu.

Nezapomeňte program raději hned zpočátku uložit (bez uložení může někdy zlobit) a nevymažte z něj úvodní části (direktivu {$APPTYPE CONSOLE} a sekci přiložených knihoven uses SysUtils, o všem později. Část textu { TODO -oUser -cConsole Main : Insert code here } smazat můžete). Víme už, že soubor se uloží s příponou .dpr

Jak jste si mohli všimnout v předchozí ukázce, před první begin, ale za příkaz uses je v Pascalu nutno umístit deklaraci proměnných (příkaz var).

Shrnutí 1. části seriálu

Co byste z první lekce seriálu o Object Pascalu měli znát (ve škole by to byly požadavky na zkoušení :-)): stavba programu v Pascalu (hlavička, deklarační část, vlastní program – složený příkaz), blok programu (deklarační část + složený příkaz), příkazy ohraničující složený příkaz, přiřazovací příkaz, proměnná, identifikátor, syntaktická pravidla jazyka.

Úkoly a řešení

Úkol č. 2

Nainstalujte si Delphi.

Úkol č. 3

Zkuste napsat program pro:

  1. výpis pozdravu, třeba tradiční "Ahoj světe".
  2. řešení lineární rovnice a * x + b = 0.

Můžete také z této stránky vybrat a přenést do schránky kód programu řešení kvadratické rovnice (raději bez hlavičky v 1. řádku, tu si Delphi samo opraví po uložení souboru), pak vložit do konzole a vyzkoušet. Pozor jen stále na správnou stavbu programu (aby se vám vložením neobjevil na konci dvakrát příkaz end. apod.)

Odpověď na Úkol č. 1

Texty (tzv. řetězce znaků) se v Pascalu uzavírají do apostrofů (jedna čárka ' narozdíl od dvou čárek u uvozovek ").

Tip: Apostrof napíšete kombinací Levý Alt + 39. V programech se také často vyskytuje středník. Ten lze zapsat kombinací Levý Alt + 59, snáze ale klávesou zcela vlevo pod klávesou Escape. Pokud si zvyknete psát programy v anglické klávesnice, tyto "problémy" odpadnou.

Závěr

Přeji hodně úspěchů a radosti v programování! A nezapomeňte na základní pravidlo programování: „V každém programu je zpočátku aspoň jedna chyba“. Tak to prostě je, čili nenechte se odradit nutnými neúspěchy.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
autor je středoškolským profesorem matematiky, fyziky a informatiky na Gymnáziu ve Frýdlantu nad Ostravicí.
Web    

Nové články

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý