home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 December / Chip_2003-12_cd2.bin / oo / download / f_0019 / sbasic.jar / text / sbasic / common / 01020300.xml < prev    next >
Extensible Markup Language  |  2003-01-16  |  17KB  |  174 lines

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <html><head><title>Procedury a funkce</title><meta name="filename" content="text/sbasic/common/01020300"/><meta name="language" content="en-US"/><help:css-file-link xmlns:help="http://openoffice.org/2000/help"/><!--The CSS style header method for setting styles--><style type="text/css">
  3.  
  4.         table.Tabelle1{
  5.                 }
  6.         span.Tabelle1A{
  7.                 width:1.499cm;}
  8.         span.Tabelle1B{
  9.                 width:16.501cm;}
  10.         td.Tabelle1A1{
  11.                 }
  12.         table.Tabelle2{
  13.                 }
  14.         span.Tabelle2A{
  15.                 width:1.499cm;}
  16.         span.Tabelle2B{
  17.                 width:16.501cm;}
  18.         td.Tabelle2A1{
  19.                 }
  20.         table.Tabelle3{
  21.                 }
  22.         span.Tabelle3A{
  23.                 width:1.499cm;}
  24.         span.Tabelle3B{
  25.                 width:16.501cm;}
  26.         td.Tabelle3A1{
  27.                 }
  28.         table.Tabelle4{
  29.                 }
  30.         span.Tabelle4A{
  31.                 width:1.499cm;}
  32.         span.Tabelle4B{
  33.                 width:16.498cm;}
  34.         tr.Tabelle41{
  35.                 }
  36.         td.Tabelle4A1{
  37.                 }
  38.         p.P1{
  39.                 }
  40.         span.T1{
  41.                 font-weight:bold;}
  42.         span.T2{
  43.                 font-style:italic;}
  44.         span.fr1{
  45.                 }
  46.         span.fr2{
  47.                 }
  48.         </style></head><body>
  49.    
  50.    
  51.    <help:to-be-embedded Eid="prozedur" xmlns:help="http://openoffice.org/2000/help">
  52.    <p class="Head1"><help:link Id="66513">Procedury a funkce</help:link></p>
  53.    <p class="Paragraph">Toto t├⌐ma se v─¢nuje popisu procedur (procedura typu SUB) a funkc├¡ (procedura typu FUNCTION).</p>
  54.    </help:to-be-embedded>
  55.    <p class="Paragraph">Procedury a funkce umo┼╛┼êuj├¡ rozd─¢lit program na jednotliv├⌐ podprogramy a t├¡m udr┼╛uj├¡ jeho k├│d strukturovan├╜ a p┼Öehledn├╜.</p>
  56.    <p class="Paragraph">V├╜hodou procedur typu SUB a FUNCTION je, ┼╛e jakmile jednou vytvo┼Ö├¡te k├│d programu obsahuj├¡c├¡ sou─ì├ísti, kter├⌐ ┼Öe┼í├¡ jednotliv├⌐ d├¡l─ì├¡ ├║lohy, m┼»┼╛ete tento k├│d pou┼╛├¡t i v jin├╜ch m├¡stech projektu, a tak├⌐ v budouc├¡ch projektech. Pro ilustraci se pod├¡vejte na n├ísleduj├¡c├¡ p┼Ö├¡klad programu:</p>
  57.    <table><tr class=""><th class="Tabelle1A1" style="text-align:left;"><span class="Tabelle1A">
  58.        <p class="TextInTable"><draw:image draw:style-name="fr1" draw:name="HIND_1" text:anchor-type="paragraph" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="0" xlink:href="66732" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" draw:filter-name="GIF - Graphics Interchange" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:text="http://openoffice.org/2000/text" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/></p>
  59.       </span></th><th class="Tabelle1A1" style="text-align:left;"><span class="Tabelle1B">
  60.        <p class="TextInTable">Tento program m┼»┼╛ete zkop├¡rovat z n├ípov─¢dy aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> a vlo┼╛it jej p┼Ö├¡mo do rozhran├¡ IDE. Chcete-li zadat program ru─ìn─¢, klepn─¢te v nab├¡dce <span class="T1">N├ístroje</span> na p┼Ö├¡kaz <span class="T1">Makro</span> a zadejte do pole <span class="T1">N├ízev makra</span> n├ízev Start. Klepnut├¡m na tla─ì├¡tko <span class="T1">Nov├╜</span> p┼Öepn─¢te do prost┼Öed├¡ IDE.</p>
  61.       </span></th></tr></table>
  62.    <p class="Paragraph"/>
  63.    <p class="PropText">option explicit</p>
  64.    <p class="PropText"/>
  65.    <p class="PropText">Sub Start</p>
  66.    <p class="PropText"/>
  67.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Dim stext as String</p>
  68.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Dim sInfoText1 as String</p>
  69.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Dim sInfoText2 as String</p>
  70.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Dim sInfoText3 as String</p>
  71.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>Dim sTitleText as String</p>
  72.    <p class="PropText"/>
  73.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>sInfoText1 = "Please enter your text"</p>
  74.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>sInfoText2 = "This text contains"</p>
  75.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>sInfoText3 = " Words"</p>
  76.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>sTitleText = "Text input"</p>
  77.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/></p>
  78.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>stext = inputbox(sInfoText1, sTitleText, "")</p>
  79.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>print sInfoText2;WordCount%(stext);sInfoText3</p>
  80.    <p class="PropText"/>
  81.    <p class="PropText">End Sub</p>
  82.    <p class="PropText"/>
  83.    <p class="PropText"/>
  84.    <p class="PropText">REM *** This function counts the spaces (and words) in a string</p>
  85.    <p class="PropText"/>
  86.    <p class="PropText"/>
  87.    <p class="PropText">function WordCount(WordText as String) as Integer</p>
  88.    <p class="PropText"/>
  89.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>dim z as Integer</p>
  90.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>dim count as Integer</p>
  91.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>count=1</p>
  92.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>for z=1 to len(WordText)</p>
  93.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>if mid$(WordText,z,1)=" " then</p>
  94.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>count = count + 1</p>
  95.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>endif</p>
  96.    <p class="PropText"><text:tab-stop xmlns:text="http://openoffice.org/2000/text"/>next z</p>
  97.    <p class="PropText"/>
  98.    <p class="PropText">WordCount = count</p>
  99.    <p class="PropText"/>
  100.    <p class="PropText">end function</p>
  101.    <p class="Paragraph"/>
  102.    <p class="Paragraph"/>
  103.    <p class="Paragraph">Pokud spust├¡te tento program p┼Ö├¡mo z prost┼Öed├¡ IDE, za─ìne program p┼Ö├¡kazem SUB Start (proto┼╛e je na prvn├¡ pozici). V pr┼»b─¢hu procedury je u┼╛ivatel vyzv├ín k zad├ín├¡ textu. Tento text je potom p┼Öed├ín funkci <span class="T1">WordCount</span>, kter├í spo─ì├¡t├í po─ìet mezer a vr├ít├¡ po─ìet slov obsa┼╛en├╜ch v textu.</p>
  104.    <p class="Paragraph">Pou┼╛├¡v├ín├¡ funkc├¡ je v├╜hodn├⌐ z toho d┼»vodu, ┼╛e n├ízev funkce, nap┼Ö├¡klad <span class="T1">WordCount</span> (PocetSlov) ozna─ìuje, kter├í funkce bude provedena, a pot┼Öebujete-li tuto funkci je┼ít─¢ v jin├⌐m m├¡st─¢ programu, jednodu┼íe ji op─¢t zavol├íte. K├│d funkce je v┼íak v programu obsa┼╛en pouze jednou, co┼╛ ─ìin├¡ program kompaktn─¢j┼í├¡ a p┼Öehledn─¢j┼í├¡.</p>
  105.    <p class="Head2">P┼Öed├ín├¡ prom─¢nn├╜ch procedur├ím typu SUB nebo FUNCTION</p>
  106.    <p class="Paragraph">Prom─¢nn├⌐ je mo┼╛n├⌐ p┼Öedat procedur├ím typu SUB i FUNCTION; za p┼Öedpokladu, ┼╛e volan├í procedura typu SUB nebo FUNCTION o─ìek├ív├í parametr, mohou b├╜t prom─¢nn├⌐ pou┼╛ity jako pevn├⌐ sou─ì├ísti programovac├¡ho jazyka aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic. Deklarace je n├ísleduj├¡c├¡:</p>
  107.    <p class="PropText">SUB SubName(Parameter1 As Type, Parameter2 As Type,...)</p>
  108.    <p class="PropText"/>
  109.    <p class="PropText"/>
  110.    <p class="PropText">programov├╜ k├│d</p>
  111.    <p class="PropText"/>
  112.    <p class="PropText"/>
  113.    <p class="PropText">END SUB</p>
  114.    <p class="Paragraph">Proceduru typu SUB zavol├íte n├ísleduj├¡c├¡m p┼Ö├¡kazem:</p>
  115.    <p class="PropText">SubName(Value1, Value2,...)</p>
  116.    <p class="Paragraph">Ujist─¢te se, ┼╛e parametry p┼Öed├ívan├⌐ procedu┼Öe typu SUB jsou shodn├⌐ s parametry specifikovan├╜mi v deklaraci procedury typu SUB.</p>
  117.    <p class="Paragraph">Stejn├╜ postup plat├¡ tak├⌐ u procedur typu FUNCTION, chcete-li vr├ítit v├╜sledek funkce. Tento v├╜sledek lze definovat p┼Ö├¡mo je┼ít─¢ p┼Öed ukon─ìen├¡m funkce, p┼Öi┼Öad├¡te-li n├ízev funkce a jej├¡ parametr hodnot─¢, kterou m├í funkce vr├ítit. (Viz p┼Ö├¡klad.)</p>
  118.    <p class="PropText">FUNCTION FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type</p>
  119.    <p class="PropText"/>
  120.    <p class="PropText"/>
  121.    <p class="PropText">programov├╜ k├│d</p>
  122.    <p class="PropText"/>
  123.    <p class="PropText"/>
  124.    <p class="PropText">FunctionName=v├╜sledek funkce</p>
  125.    <p class="PropText"/>
  126.    <p class="PropText">End Function</p>
  127.    <p class="Paragraph">Proceduru typu FUNCTION zavol├íte n├ísleduj├¡c├¡m p┼Ö├¡kazem:</p>
  128.    <p class="PropText">Variable=FunctionName(Parameter1, Parameter2,...)</p>
  129.    <p class="Head3">Ur─ìen├¡ vr├ícen├⌐ hodnoty procedury typu FUNCTION</p>
  130.    <p class="Paragraph">Jak je uvedeno u definice procedury typu FUNCTION v p┼Ö├¡kladu v├╜┼íe, mus├¡ b├╜t ur─ìen typ vr├ícen├⌐ hodnoty. Podobn─¢ jako u prom─¢nn├╜ch jednodu┼íe zadejte znak deklaruj├¡c├¡ typ za n├ízev funkce nebo ozna─ìte jej├¡ typ v├╜razem As a odpov├¡daj├¡c├¡m kl├¡─ìov├╜m slovem, kter├⌐ uvedete na konci seznamu parametr┼». ┼ÿ├ídek definice m┼»┼╛e m├¡t n├ísleduj├¡c├¡ podobu:</p>
  131.    <p class="PropText">Function WordCount(WordText as String) as Integer</p>
  132.    <p class="Head3">P┼Öed├ív├ín├¡ prom─¢nn├╜ch jako hodnot a odkaz┼»</p>
  133.    <p class="Paragraph">P┼Öi p┼Öed├ív├ín├¡ prom─¢nn├╜ch procedur├ím typu FUNCTION nebo SUB je velmi d┼»le┼╛it├⌐ rozli┼íit <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>prom─¢nn├⌐ p┼Öed├ívan├⌐ jako odkazy nebo jako hodnoty.</p>
  134.    <p class="Paragraph">Jestli┼╛e nen├¡ ur─ìeno jinak, jsou prom─¢nn├⌐ v┼╛dy p┼Öed├ív├íny procedu┼Öe typu FUNCTION nebo SUB jako odkazy. To znamen├í, ┼╛e kdy┼╛ uprav├¡te prom─¢nnou v procedu┼Öe typu SUB nebo FUNCTION, je odpov├¡daj├¡c├¡m zp┼»sobem upravena prom─¢nn├í volan├í touto procedurou typu SUB nebo FUNCTION, kter├í se p┼Öed├ív├í v k├│du programu. V p┼Ö├¡kladu uveden├⌐m v├╜┼íe upravte program n├ísledovn─¢:</p>
  135.    <p class="Paragraph">Vlo┼╛te dal┼í├¡ p┼Ö├¡kazov├╜ ┼Ö├ídek do procedury SUB Start za p┼Ö├¡kaz <span class="T1">Print</span>.</p>
  136.    <p class="PropText">PRINT stext</p>
  137.    <p class="Paragraph">Vlo┼╛te dal┼í├¡ p┼Ö├¡kazov├╜ ┼Ö├ídek do k├│du funkce <span class="T1">WordCount%</span> p┼Öed ┼Ö├ídek s p┼Ö├¡kazem End Function:</p>
  138.    <p class="PropText">WordText$="Function ended"</p>
  139.    <p class="Paragraph">Nyn├¡ spus┼Ñte program a zadejte text. Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic vr├ít├¡ po─ìet mezer a vytiskne obsah prom─¢nn├⌐ <span class="T2"><text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>WordText$</span>: Function ended. Obsah t├⌐to prom─¢nn├⌐ je upraven, ne v┼íak hlavn├¡m programem, ale funkc├¡ <span class="T1">WordCount%</span>. Prom─¢nn├í byla p┼Öed├ína p┼Ö├¡mo funkci, proto bylo mo┼╛n├⌐ upravit jej├¡ obsah, i kdy┼╛ byla platn├í pouze uvnit┼Ö hlavn├¡ho programu.</p>
  140.    <p class="Paragraph">Chcete-li tomu zabr├ínit, vlo┼╛te p┼Öi vol├ín├¡ procedury typu SUB nebo FUNCTION p┼Öed p┼Öed├ín├¡m prom─¢nn├⌐ kl├¡─ìov├⌐ slovo ByVal (podle hodnoty). Upravte prvn├¡ ┼Ö├ídek <span class="T1">Print</span> v procedu┼Öe SUB Start n├ísledovn─¢:</p>
  141.    <p class="PropText">Print "This text contains";WordCount%(ByVal Text$);"words"</p>
  142.    <p class="Paragraph">Nyn├¡ se po op─¢tovn├⌐m spu┼ít─¢n├¡ programu zobraz├¡ text p┼Öesn─¢ ve tvaru, v jak├⌐m byl zad├ín. Obsah prom─¢nn├⌐ by nem─¢l b├╜t podprogramem upraven.</p>
  143.    <table><tr class=""><th class="Tabelle2A1" style="text-align:left;"><span class="Tabelle2A">
  144.        <p class="TextInTable"><draw:image draw:style-name="fr1" draw:name="HIND_2" text:anchor-type="paragraph" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="1" xlink:href="65980" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" draw:filter-name="GIF - Graphics Interchange" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:text="http://openoffice.org/2000/text" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/></p>
  145.       </span></th><th class="Tabelle2A1" style="text-align:left;"><span class="Tabelle2B">
  146.        <p class="TextInTable">Vytvo┼Ö├¡te-li nov├╜ modul, vlo┼╛├¡ aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic automaticky proceduru SUB Main. To je pouze v├╜choz├¡ n├ízev a nem├í nic spole─ìn├⌐ho s po┼Öad├¡m nebo v├╜choz├¡m bodem projektu aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic. Tuto proceduru m┼»┼╛ete libovoln─¢ p┼Öejmenovat.</p>
  147.       </span></th></tr></table>
  148.    <p class="Paragraph"/>
  149.    <p class="Head2">Platnost prom─¢nn├╜ch v procedur├ích a modulech nebo mimo moduly</p>
  150.    <p class="Paragraph">Je-li prom─¢nn├í definov├ína uvnit┼Ö procedury typu SUB nebo FUNCTION, je platn├í pouze b─¢hem prov├íd─¢n├¡ procedury a p┼Öi dal┼í├¡m vol├ín├¡ procedury typu SUB nebo FUNCTION je znovu vytvo┼Öena. Takov├í prom─¢nn├í je ozna─ìov├ína jako lok├íln─¢ definovan├í prom─¢nn├í. V mnoha p┼Ö├¡padech m┼»┼╛e v┼íak b├╜t nutn├⌐ definovat prom─¢nnou, kter├í bude platn├í ve v┼íech procedur├ích nebo dokonce ve v┼íech modulech v┼íech knihoven. M┼»┼╛ete tak├⌐ cht├¡t prom─¢nnou zachovat i po ukon─ìen├¡ procedury typu SUB nebo FUNCTION. Tato vlastnost je ┼Ö├¡zena v deklaraci prom─¢nn├⌐ v p┼Ö├¡kazu <span class="T1">Dim</span> prost┼Öednictv├¡m kl├¡─ìov├╜ch slov.</p>
  151.    <p class="Head3">Deklarace prom─¢nn├╜ch mimo proceduru typu SUB nebo FUNCTION</p>
  152.    <p class="PropText">DIM PUBLIC VarName As TYPENAME</p>
  153.    <p class="Paragraph">Prom─¢nn├í je platn├í ve v┼íech modulech.</p>
  154.    <p class="PropText">DIM PRIVATE VarName As TYPENAME</p>
  155.    <p class="Paragraph">Prom─¢nn├í je platn├í pouze v tomto modulu.</p>
  156.    <p class="PropText">DIM VarName As TYPENAME</p>
  157.    <p class="Paragraph">Viz v├╜┼íe.</p>
  158.    <p class="Head3">Ulo┼╛en├¡ obsahu prom─¢nn├⌐ po ukon─ìen├¡ procedury typu SUB nebo FUNCTION</p>
  159.    <p class="PropText">DIM STATIC VarName As TYPENAME</p>
  160.    <p class="Paragraph">Hodnota prom─¢nn├⌐ bude uchov├ína a┼╛ do p┼Ö├¡┼ít├¡ho vol├ín├¡ procedury typu FUNCTION nebo SUB. Deklarace mus├¡ existovat tak├⌐ uvnit┼Ö procedury typu SUB nebo FUNCTION.</p>
  161.    <table><tr class=""><th class="Tabelle3A1" style="text-align:left;"><span class="Tabelle3A">
  162.        <p class="TextInTable"><draw:image draw:style-name="fr1" draw:name="HIND_3" text:anchor-type="paragraph" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="2" xlink:href="66732" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" draw:filter-name="GIF - Graphics Interchange" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:text="http://openoffice.org/2000/text" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/></p>
  163.       </span></th><th class="Tabelle3A1" style="text-align:left;"><span class="Tabelle3B">
  164.        <p class="TextInTable">Dal┼í├¡ informace naleznete v t├⌐matu <help:link Id="66471" Eid="basicfehler" xmlns:help="http://openoffice.org/2000/help">Lad─¢n├¡</help:link>, kter├⌐ poskytuje dal┼í├¡ p┼Ö├¡klady platnosti prom─¢nn├╜ch a zvl├í┼ít─¢ pak mo┼╛n├╜ch chyb, je┼╛ se mohou vyskytnout p┼Öi jejich nespr├ívn├⌐m pou┼╛it├¡.</p>
  165.       </span></th></tr></table>
  166.    <p class="Paragraph"/>
  167.    <table><tr class="Tabelle41"><th class="Tabelle4A1" style="text-align:left;"><span class="Tabelle4A">
  168.        <p class="TextInTable"><draw:image draw:style-name="fr2" draw:name="HIND_4" text:anchor-type="paragraph" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="3" xlink:href="65640" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" draw:filter-name="GIF - Graphics Interchange" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:text="http://openoffice.org/2000/text" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/></p>
  169.       </span></th><th class="Tabelle4A1" style="text-align:left;"><span class="Tabelle4B">
  170.        <p class="TextInTable"><help:key-word value="Rekurzivn├¡ vol├ín├¡ procedur a funkc├¡" tag="kw66513_1" xmlns:help="http://openoffice.org/2000/help"/>Rekurzivn├¡ vol├ín├¡ procedur typu SUB a FUNCTION nen├¡ mo┼╛n├⌐.</p>
  171.       </span></th></tr></table>
  172.    <p class="Paragraph"/>
  173.   </body></html>
  174.