21. Zakládání proměnných

Ilustrační obrázek k článku: Zakládání proměnných
V tomto článku si ukážeme jak nejjednodušším způsobem založit proměnnou. A zároveň si naprogramujeme funkci faktoriál pomocí cyklu.

V předchozích článcích jsme si ukázali jak spočítat v CombiScriptu faktoriál pomocí rekurze. Nicméně to není úplně typický přístup. Mnohem častěji bychom faktoriál počítali třeba pomocí cyklu while, který bude běžet od zadaného čísla do jedné.

V takovém případě ovšem potřebujeme někam ukládat počítaný výsledek. Potřebujeme tedy založit proměnnou, což se ovšem v JS neobejde bez klíčových slov var či let, které ovšem přes PHP parser neprojdou.

Co s tím?

Nejjednodušším řešením, je tuto proměnnou deklarovat mezi vstupními parametry funkce. Ovšem PHP vyžaduje abychom každé deklarované proměnné nastavili při volání hodnotu. Abychom ji nemuseli plnit z volací funkce tak jí musíme nastavit výchozí hodnotu. Nastavení výchozí hodnoty deklarované a při volání funkce nepoužité proměnné je v PHP i v JS stejné, takže tím se náš kód pro oba jazyky sjednotí.

A aby se nám tato proměnná "nepletla" mezi opravdové argumenty funkce, tak si zavedeme konvenci, že takovéto proměnné budeme psát na druhý řádek funkce.

Kdo byl zvyklý programovat třeba v Pascalu s tím nebude mít problém, tam se také vždy všechny proměnné deklarovaly na začátku funkce.

Takový zápis funkce pak vypadá takto:

  1. <!-- --><?php
  2. "use strict";
  3. function my_fact($n,
  4. $ret=1)
  5. {
  6. while ($n>1)
  7. {
  8. $ret = $ret * $n;
  9. $n--;
  10. }
  11. return $ret;
  12. }

Knihovnu opět uložíme a použijme v JS aplikaci:

  
  1. <!doctype html>
  2. <HTML lang="cs">
  3. <HEAD>
  4. <META charset="UTF-8">
  5. <META name="viewport" content="width=device-width">
  6. <TITLE>Funkce faktorial</TITLE>
  7. </HEAD>
  8. <BODY style="text-align:center">
  9. <INPUT id=argument>
  10. <INPUT type=button value="Spocti faktorial" onclick="Spocti()">
  11. <DIV id=Vysledek></DIV>
  12. <SCRIPT src="./my_lib.php.js"></SCRIPT>
  13. <SCRIPT>
  14. function Spocti()
  15. {
  16. var value = document.getElementById("argument").value;
  17. document.getElementById("Vysledek").innerHTML = my_fact(value);
  18. }
  19. </SCRIPT>
  20. </BODY>
  21. </HTML>
  1. <!-- --><?php
  2. "use strict";
  3. function my_fact($n,
  4. $ret=1)
  5. {
  6. while ($n>1)
  7. {
  8. $ret = $ret * $n;
  9. $n--;
  10. }
  11. return $ret;
  12. }

A zcela stejnou knihovnu použijeme i v PHP aplikaci:

  
  1. <!doctype html>
  2. <HTML lang="cs">
  3. <HEAD>
  4. <META charset="UTF-8">
  5. <META name="viewport" content="width=device-width">
  6. <TITLE>Funkce faktorial</TITLE>
  7. </HEAD>
  8. <BODY style="text-align:center">
  9. <FORM method=GET>
  10. <INPUT name=argument value="<?= $_GET['argument'] ?>">
  11. <INPUT type=submit value="Spocti faktorial">
  12. </FORM>
  13. <?php
  14. include_once('./my_lib.php.js');
  15. if ($_GET['argument']!==null)
  16. {
  17. echo my_fact($_GET['argument']);
  18. }
  19. ?>
  20. </BODY>
  21. </HTML>
  1. <!-- --><?php
  2. "use strict";
  3. function my_fact($n,
  4. $ret=1)
  5. {
  6. while ($n>1)
  7. {
  8. $ret = $ret * $n;
  9. $n--;
  10. }
  11. return $ret;
  12. }

Tímto umíme vytvářet naše vlastní funkce. Ovšem každý jazyk potřebuje nejen vytvářet vlastní funkce, ale i mít přístup k nějakým základním funkcím pro práci s čísly, stringy, poli, atd... A zde máme zásadní problém, protože tyto funkce se samozřejmě jmenují jinak v JS a jinak v PHP.

V příštím článku si ukážeme jak volat systémové funkce PHP a JS jednotným přístupem. Konkrétně si to ukážeme na funkci sqrt() / Math.sqrt(). V rámci rozvíjení kreativity o tom můžete zatím přemýšlet.

Předchozí   Následující