nika.blog.matfyz.sk

Veronika Dropčová
veronika.dropcova(at)gmail.com

03 – premenné

Na minulej hodine sme trénovali používanie konštánt. Tie sú fajn, pretože ak chceme zmeniť pozíciu, na ktorej sa nám čosi vykresľuje, stačí to zmeniť na jednom mieste (pri deklarovaní konštánt) a v pokračovaní programu sa už budú používať tieto nové hodnoty.

 

Má to však jeden háčik.

 

Hodnotu konštanty nemôžeme nijako zmeniť, keď program už beží. Čo ak by sme chceli program, ktorý po kliknutí na tlačidlo vykreslí štvorec vždy na inej pozícii?

 

Musíme teda objaviť nejaký nástroj, ktorý nám práve takéto zmeny umožní. Keďže názvom tejto stránky je slovičko „premenné“, už asi tušíte, že tým nástrojom bude práve premenná.

 

Čo je premenná? Predstavte si ju ako škatuľku. Uloženú niekde v pamäti počítača. Je to ale trochu špeciálna škatuľka: vždy musíte na začiatku povedať, čo do nej budete ukladať (či to bude celé číslo, desatinné číslo, písmeno alebo dokonca celé slová a vety). A potom do nej môžete uložiť práve jeden takýto prvok (celé číslo, desatinné číslo, …).

 

Ako deklarovať (povedať, že budeme používať) premenné?

Podobne, ako pri konštantách, aj tu je na to vyhradené špeci miesto: medzi procedure TForm1.(blablabla) beginom. Pri konštantách sme použili čarovné slovíčko „const„, pri premenných použijeme čarovné slovíčko „var“ (skratka od variables).

Pri konštantách sme rovno určovali aj konkrétne hodnoty, ktoré majú zadeklarované konštanty mať. Pri premenných to takto (aspoň teraz) robiť nebudeme. Musíme ale povedať, akého typu budú prvky, ktoré do tej-ktorej premennej budeme vkladať.

Aby sme takto na začiatku nemali veľa trápenia, budeme sa zatiaľ zaoberať iba celými číslami. Tak poďme teda na to:

procedure TForm1.(blablabla)

var 

  x : integer;

  y : integer;

begin

 

Takto som si zadeklarovala premennú, ktorá sa volá x a budem do nej ukladať iba celé čísla (integer). Všimnite si, že medzi názvom premennej (x) a jej typom (integer) som dala dvojbodku (:). A tiež si všimnite, že za typom premennej (integer) som dala bodkočiarku (;). Okrem toho som si zadeklarovala aj premennú y. Keďže premenné  sú rovnakého typu (integer), nemusela som to písať v dvoch riadkoch tak, ako je to vyššie, ale mohla som (a stále môžem) zápis skrátiť:

procedure TForm1.(blablabla)

var 

  x, y : integer;

begin

 

Teda oddeliť názvy premenných čiarkami a zapísať ich deklaráciu v jednom riadku.

 

Keď chceme premennej x priradiť nejakú hodnotu (niečo do škatuľky zapísať), postaráme sa o to v časti programu medzi beginom a endom. A použijeme na to staré dobré známe „:=“.

Takže napríklad:

 

begin

x := 100;

y := 100;

image1.canvas.ellipse(x-30,y-30,x+30,y+30);

end;

 

Tento program vykreslí kruh so stredom v bode [100;100] a polomerom 30. Čo sa ale stane, keď tento program doplním o pár riadkov?

 

begin

x := 100;

y := 100;

image1.canvas.ellipse(x-30,y-30,x+30,y+30);

x := 150;

y := 150;

image1.canvas.ellipse(x-30,y-30,x+30,y+30);

end;

 

Vykreslia sa mi kruhy dva. Jeden bude mať stred v bode [100;100] a ten druhý v bode [150;150].

 

Do premennej však môžeme priradiť aj nejaký matematický výraz (neľakať sa, nejde o nič komplikované!). Tak napríklad toto:

 

x := 2*3;      //čo bude v premennej x?

 

Ale dovoliť si môžeme aj takéto niečo:

x := 5;

y =: x + 10;        //čo bude v premennej y?

 

1. úloha

Zadeklarujte si dve konštanty, a to jednotkovaCena Priplatok. Okrem toho si zadeklarujte aj dve premenné: VahaCena. Vašou úlohou bude naprogramovať program, ktorý vypočíta celkovú cenu za nejaký tovar (je nepodstatné vedieť aký), pričom:

– jednotkovaCena určuje cenu za 1kg (napríklad 10)

– Priplatok určuje cenu za expresne rýchle vybavenie (napríklad 5)

– Vaha je premenná, do ktorej na začiatku programu priradíte množstvo tovaru, ktoré kupujete (napríklad 7 (kíl))

– Cena je celková cena, ktorú máte za expresný nákup zaplatiť

Takto vyrátanú cenu potom vypíšte do image-u.

 

2. úloha

Vyrátajte ciferný súčet nejakého trojciferného čísla. Zadeklarujte si premenné:

– cislo – do tejto premennej priradíme trojciferné číslo

– cifra1, cifra2, cifra3 – do týchto premenných si postupne pomocou nejakých operácií priradíme jednotlivé cifry čísla cislo

– sucet – do tejto premennej priradíme súčet jednotlivých cifier

 

Na to, aby ste mohli túto úlohu vyriešiť, potrebujete spoznať dve nové matické operácie (zatiaľ poznáte +, -, *). Týmito dvoma operáciami sú:

– div – celočíselné delenie (návrat do tretieho ročníka na základnej škole). Podľa tejto operácie je „10 div 4“ rovné 2. Prečo? Lebo „celá štvorka sa tam zmestí iba dvakrát“. 15 div 5 = 3. 16 div 5 = 3 (tiež).

– mod  – zvyšok po delení (tiež návrat na základnú školu). Tak teda: „10 mod 3“ je rovné 1. Prečo? Lebo celé trojky sú tam tri (3 * 3 je 9) a zvyšok je 1. 15 mod 5 = 0 (lebo neostáva žiadny zvyšok). 16 mod 5 je 1.

 

3. úloha

Pomocou Image1.Width a Image1.Height môžeme zistiť presné rozmery grafickej plochy. Nakreslite obdĺžnik, ktorý je od všetkých okrajov vzdialený presne o 10 bodov.

 

4. úloha

Zadané dvojciferné číslo (v konštante Cislo) rozoberte na cifry (premenné Cifra1 a Cifra2), a potom z nich zložte prevrátené číslo (najprv druhá cifra potom prvá). Toto prevrátené číslo vypíšte.

 

Nepovinná domáca úloha za 2 body

– deadline pre 3A2: 13.10.2015 o 22,00

– deadline pre 3A1: 18.10.2015 o 22,00

– deadline pre 3B2: 19.10.2015 o 22,00

– deadline pre 3B1: 20.10.2015 o 22,00

 

Napíšte program, v ktorom si zadeklarujete 4 premenné: a, b, obvod, obsah. Program potom vyráta a vypíše obvod a obsah obdĺžnika.

a, b: dĺžky strán obdĺžnika

obvod, obsah (do týchto premenných potom uložíte výsledky, ktoré získate výpočtom)

Výsledky potom vypíšte do Image-u a to tak, že najskôr vypíšete obvod a pod ním bude vypísaný obsah.

 Ako odovzdať úlohu z programovania?

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *