SlideShare una empresa de Scribd logo
1 de 24
352 - Katedra automatizační
         techniky a řízení

Technické výpočty


   Ing. David Fojtík, Ph.D.
        A922, kl. 4193
Ladění
Princip ladění programů
• Laděná programů je účinná metoda odhalování
  chyb algoritmů
• Během ladění je program vykonáván příkaz po
  příkazu (krok za krokem)
• Po každém příkazu je možné sledovat obsah
  proměnných
• Každý příkaz se vykonává na podnět programátora
Sub Main()
    Dim D As Double                             'Diskriminant
    Dim a As Double, b As Double, c As Double   'Koeficienty kvadraticke rovnice
    Dim x1 As Double, x2 As Double              'Hledane reseni
'Ziskani koeficientu rovnice
    a = InputBox("Zadej A:", "Ax^2 + Bx + C")
    b = InputBox("Zadej B:", "Ax^2 + Bx + C")
    c = InputBox("Zadej C:", "Ax^2 + Bx + C")
'Vypocet diskriminantu
    D = b ^ 2 - 4 * a * c
'Vypocet korenu rovnice
    x1 = (-b + Sqr(D)) / (2 * a)
    x2 = (-b – D^(1/2)) / (2 * a)
'Vypis vysledku
    MsgBox "x1 = " & x1 & vbCrLf & "x2 = " & x2, , _
           "Řešení rovnice: " & a & "x^2 + " & b & "x + " & c
End Sub
Zahájení a ukončení ladění
• Tlačítkem Debug po
  výjimce
  – Program se pozastaví na
    příkazu (řádku), který
    výjimku způsobil
• Zahájením krokování
  – Ikonou Step Into na panelu
    Debug
  – Funkční klávesou F8
  – Krokování bude vždy od
    začátku makra
• Přerušením na zarážce
  – Program se pozastaví na
    příkazu (řádku), na kterém
    je zarážka
• Ukončení ladění
  – Ukončením programu
  – Příkazem Reset
Sledování obsahu proměnných
• Okamžitým náhledem
  – Zobrazí se po ponechání
    kurzoru nad proměnou
• Locals Window
  – Menu View, položka Locals
    Window
  – Zobrazí se všechny proměnné
    laděné subrutiny
  – Poklepáním nad hodnotou je
    možné provést změnu
• Watch Window
  – Menu View, položka Watch
    Window
  – Implicitně je prázdné, vložení
    proměnné přetažením,
    vepsáním
  – Je možné vložit výrazy
  – Poklepáním nad hodnotou je
    možné provést změnu
Krokování a zárážky
• Krok dovnitř
   – Provede se jeden příkaz
   – Klepnutím nad ikonou Step Into
   – Funkční klávesou F8
• Krok přes
   –   Klepnutím nad ikonou Step Over
   –   Funkční klávesou Shift + F8
   –   Pouze pro složitější makra
   –   Volání jiné subrutiny se vykoná jako
       jeden příkaz
• Přetažením kurzoru
   – Tažením žluté šipky lze libovolně
     přesunout bod pozastavení
• Vložení a zrušení zarážky
   – Klepnutím na levou lištou
     před zvoleným příkazem
   – Funkční klávesou F9
• Logický breakpoint
   – Vkládá se přes okno Watches
   – Pokročilé používání
Vývojové diagramy
Vývojový diagram – základní značky
Vývojový diagram je grafická metoda zápisu algoritmu. Zápis se
provádí pomocí grafických značek, které se různě kombinují tak,
aby vyjadřovali různé operace. Do značek se vypisují upřesňující
údaje, které specifikují konkrétní kroky/příkazy. Značky se propojují
spojovacími čárami (popřípadě šipkami), které specifikují směr
posloupnosti příkazů. Implicitně je směr shora-dolů, zleva-doprava.
• Základní značky
    Start                        – Začátek nebo konec algoritmu, buď jeden výstup
                        Stop       nebo vstup
            Příkaz               – Běžný příkaz (krok, operace) vepisuje se do
            Příkaz                 značky má vždy jeden vstup a jeden výstup
                                 – Větvení (podmíněný příkaz) má 1 vstup a 2
-            A>B               +   výstupy, které se označují Ano (+) je li výraz ve
                                   značce pravdivý, Ne (-) není li pravdivý
                                 – Příprava – obvykle cyklus se specifikovaným
            i = 1..10              počtem opakování má 2 vstupy a jeden výstup.
                                   Do značky se zapisuje počet opakování.
        A               A
                                 – Spojka (buď jeden vstup nebo výstup), používá
                                   se u složitějších algoritmů, kdy se tímto propojují
                                   různé vývojové diagramy.
                                 – Spojovací čára.
Vývojový diagram – další značky
•   Další vybrané značky dle ČSN ISO 5807 "Zpracování informací.
    Dokumentační symboly a konvence pro vývojové diagramy toku dat,
    programu a systému, síťové diagramy programu a diagramy zdrojů systému"
    ze dne 1. ledna 1996
                    – Podprogram, do značky se vepíše název podprogramu
                    – Interní paměť - představuje vnitřní paměť počítače.
                      Data mohou do z paměti vystupovat, nebo se mohou do
                      paměti ukládat. Symbol může tak mít jeden výstup nebo
                      jeden vstup.
                    – Paměť s přímým přístupem – pevný disk, disketa apod.
                      Symbol může tak mít jeden výstup nebo jeden vstup.
                    – Data - vstup a výstup dat, reprezentuje vstupně -
                      výstupní operace s daty, tj. dodání dat pro zpracování
                      nebo zpracování do požadované formy výstupu. Má
                      jeden vstup a jeden výstup.
                    – Dokument představuje zařízení pro tištěný výstup,
                      kterým může být klasická tiskárna, ale i zařízení pro
                      tvorbu mikrofilmu, pokladní tiskárna a jiné. Symbol má
                      jenom jeden vstup.
                    – Zobrazení představuje zařízení pro vizuální zobrazení
                      dat, jako je např. monitor počítače signální zařízení a
                      pod. Symbol má jenom jeden vstup.
           poznámka – Komentář, je spojen s značkou nebo sekvencí
                      ohraničenou obdélníkem z přerušované čáry
Příklady vývojových diagramů - větvení
 Sekvence            Větvení                 Větvení                      Větvení
příkazy jdoucí    Úplná alternativa     Neúplná alternativa      Několikanásobná alternativa
za sebou bez       vykoná se buď         příkaz se vykoná     Hodnota proměnné se porovnává
   jakýkoliv     jeden nebo druhý         jen je-li logický   s uvedenými konstantami, vybere
   odskoků             příkaz             výraz pravdivý       se větev se shodnou hodnotou




                           Log. výraz           Log. výraz         proměnná

                                                              1           2      3       nebo
Příklady vývojových diagramů - cykly
                 Cyklus                                  Cyklus
          S podmínkou na začátku                  S podmínkou na konci
Není-li podmínka na počátku pravdivá cyklus   Vždy se provede alespoň jednou
            se nikdy neprovede




                                                           Tělo cyklu
                Tělo cyklu
Příklady vývojových diagramů
  První část        Druhá část
Logické výrazy
Logické a relační operátory
Relační operátory          • Výsledkem relačního a
Matematický      Visual      logického výrazu je
  zápis          Basic
                             jedna ze dvou možností
   =             =              – True (výraz je pravdivý)
                <>             – False (výraz je nepravdivý) Priorita operátorů
   <             <         • Operátor = má dva                  ()
                             významy                            Not
   >             >                                              * /  Mod
                                – Přiřazení A = 10
   




                                                                              Priorita
                 <=                                             + -
                                – Porovnání if A = B then       < > <= >=
                >=                                             = <>
                                                                And
                                                                Or
                                                                = přiřazení
   Logické
  operátory                         True False True True False False
    And                   Not       False True
     Or                   And           False         True          False
     Not                  Or            True          True          False
Příklady logických výrazů
Option Explicit
Sub Main()
 Dim Hodnota As Integer
 Dim Odpoved As Boolean
 Hodnota = InputBox("Zadej hodnotu")

Odpoved = Hodnota > 0
MsgBox "Hodnota je kladna? „ & Odpoved

Odpoved = Hodnota <> 0
MsgBox "Hodnota není nula? „ & Odpoved

Odpoved = Hodnota >= 1 And Hodnota <= 12
MsgBox "Hodnota představuje číslo měsíce? „ & Odpoved

Odpoved = Hodnota = 7 OR Hodnota = 8
MsgBox "Hodnota představuje číslo prázdninového měsíce? „ & Odpoved

 Odpoved = Not (Hodnota = 7 OR Hodnota = 8 )
 MsgBox "Hodnota nepředstavuje číslo prázdninového měsíce? „ & Odpoved
End Sub
Větvení
Větvení
• Vždy když je potřeba se rozhodnou která část
  programu má být dále prováděna
• Jedno z nejčastějších programových implementací
• Ve Visual Basicu (obdobné je to téměř ve všech
  programovacích jazycích) jsou dvě základní varianty
  realizace větvení:
   – Větvení pomocí If-Else
   – Větvení pomocí Selec Case
   – Existuje také možnost použít funkci
     IIf(výraz, ProPravdu, ProNepravdu)
Větvení pomocí If-Else
• Jednořádková syntaxe
If logickýVýraz Then [PříkazPravdy] [Else příkazNepravdy]
   – Pouze máme-li jeden příkaz pro pravdu i nepravdu
   – Pouze jedna úroveň větvení
• Víceřádková syntaxe
If logickýVýraz1 Then
[PříkazyPravdyLogVýrazu1]
[ElseIf logickýVýraz2 Then
[PříkazyPravdyLogVýrazu2]                        - Nepravda           + Pravda

...                           příkaz(y) pro                   výraz              příkaz(y) pro
                              nepravdivý výraz                                   pravdivý výraz
[Else
[PříkazyNepravdy]]
End If
    – Je možné větvit neomezeně
    – Můžeme mít více příkazů
    – Musí končit příkazem End IF
Příklad větvení pomocí If-Else
Sub Main()
    Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel
    Dim cena As Currency ' Určená cena
    rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky")
    ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů
    If (rada >= 1 And rada <= 5) Or (rada > 20 And rada <= 25) Then
         'Pro interval 1..5 a 20..25 je cena 150 Kč
         cena = 150
    ElseIf rada >= 6 And rada <= 15 Then
         'Pro interval 6..15 je cena 180 Kč
         cena = 180
    ElseIf rada >= 16 And rada <= 20 Then
         'Pro interval 16..20 je cena 200 Kč
         cena = 200
    Else
         ' ve skutečnosti jde o zbytečný příkaz, jelikož každá
         ' proměnná ve VB je implicitně nulovaná
         cena = 0
    End If
    'Je-li cena nulová, uživatel zadal neplatnou řadu
    If (cena > 0) Then
         MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..."
    Else
         MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA !!!"
    End If
End Sub
Alternativa Příkladu větvení If-Else
Sub Main()
    Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel
    Dim cena As Currency ' Určená cena
    rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky")
    ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů
    If (rada >= 1 And rada <= 5) Or (rada > 20 And rada <= 25) Then
         'Pro interval 1..5 a 20..25 je cena 150 Kč
         cena = 150
    Else
         If rada >= 6 And rada <= 15 Then
            'Pro interval 6..15 je cena 180 Kč
            cena = 180
         Else
            If rada >= 16 And rada <= 20 Then
               'Pro interval 16..20 je cena 200 Kč
               cena = 200
            Else
               MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA
               Exit Sub
            End If
       End If               • Příkaz Exit Sub ukončí subrutinu (Makro)
    End If

    MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..."
End Sub
Větvení pomocí Select Case
• Syntaxe
Select Case výraz
[Case HodnotyVýrazu1
[PříkazySkupiny1]]
...                                         V = výraz
[Case Else
[PříkazyProOstatníHodnoty]]                               + Pravda
                                               V = k1                 Příkazy větve 1
End Select
    – Je možné větvit neomezeně                     - Nepravda

    – HodnotyVýrazu může být uvedena:                      + Pravda
       • Jako jedna hodnota 10, “Jaro“         V = k2                 Příkazy větve 2

       • Jako skupina hodnot                        - Nepravda
         oddělených čárkou 10,20,30
       • Jako jeden interval 1 to 12     implicitní příkazy

       • Více oddělených intervalů
          1 to 12, 20 to 40
       • Logickou podmínkou
          Is > 20
Příklad větvení pomocí Select Case
Sub Main()
    Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel
    Dim cena As Currency ' Určená cena
    rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky")
    ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů
    Select Case rada
    Case 1 To 5, 20 To 25
         'Pro interval 1..5 a 20..25 je cena 150 Kč
         cena = 150
    Case 6 To 15
         'Pro interval 6..15 je cena 180 Kč
         cena = 180
    Case 16 To 20
         'Pro interval 16..20 je cena 200 Kč
         cena = 200
    Case Else
         ' ve skutečnosti jde o zbytečný příkaz, jelikož každá
         ' proměnná ve VB je implicitně nulovaná
         cena = 0
    End Select
    'Je-li cena nulová, uživatel zadal neplatnou řadu
    If (cena > 0) Then
         MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..."
    Else
         MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA !!!"
    End If
End Sub
??? kontrolní otázky ???
• Jaký grafický symbol (značku) uvedeme pro běžný
  krok/příkaz v algoritmu?
• Jaké známe relační operátory ve Visual Basicu?
• Co znamená značka kosočtverce a jaké má
  vstupy/výstupy?
• Je možné mít ve vývojových diagramech komenátře?
• Vyjmenujte tři základní logické operátory
• Pro C=10, jaký bude výsledek výrazu C>=1 AND C<10 ?
• Jakými způsoby můžeme zahájit ladění programu?
• Jakými způsoby zjistíme hodnoty proměnných?
• Je možné měnit hodnotu proměnných během ladění?
• Co je a k čemu slouží zarážka (breakpoint)
• Kde je vhodnější použít větvení If-Else než Select Case
• Je možné u Select Case použít libovolné logické výrazy?
• K čemu slouží příkaz Exit Sub?
352 - Katedra automatizační techniky a řízení




Ing. David Fojtík, Ph.D.
     A922, kl. 4193
  david.fojtik@vsb.cz

Más contenido relacionado

La actualidad más candente (8)

KST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáškaKST/ICSHP - 3. a 4. přednáška
KST/ICSHP - 3. a 4. přednáška
 
KST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáškaKST/ICSHP - 2. přednáška
KST/ICSHP - 2. přednáška
 
Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#Pokročilé techniky programování .NET a C#
Pokročilé techniky programování .NET a C#
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
Databazove systemy5
Databazove systemy5Databazove systemy5
Databazove systemy5
 
KST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáškaKST/ICSHP - 5. a 6. přednáška
KST/ICSHP - 5. a 6. přednáška
 
PR2021
PR2021PR2021
PR2021
 
Java – Annotations
Java – AnnotationsJava – Annotations
Java – Annotations
 

Similar a Tv 07

Pa104 pa104-priprava-na-zk
Pa104 pa104-priprava-na-zkPa104 pa104-priprava-na-zk
Pa104 pa104-priprava-na-zk
Fatmir Vela
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
mdevtalk
 

Similar a Tv 07 (14)

Wa 10
Wa 10Wa 10
Wa 10
 
Grafy, zobrazení, vzorce
Grafy, zobrazení, vzorceGrafy, zobrazení, vzorce
Grafy, zobrazení, vzorce
 
Bi3011 algoritmy-uvod
Bi3011 algoritmy-uvodBi3011 algoritmy-uvod
Bi3011 algoritmy-uvod
 
Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)Arduino naplno (Arduino Day 2015)
Arduino naplno (Arduino Day 2015)
 
Izg lab 01_uvod
Izg lab 01_uvodIzg lab 01_uvod
Izg lab 01_uvod
 
Pa104 pa104-priprava-na-zk
Pa104 pa104-priprava-na-zkPa104 pa104-priprava-na-zk
Pa104 pa104-priprava-na-zk
 
Seminárka
SeminárkaSeminárka
Seminárka
 
Seminárka
SeminárkaSeminárka
Seminárka
 
MergadoFest 19 - Reguláry bez obav
MergadoFest 19 - Reguláry bez obavMergadoFest 19 - Reguláry bez obav
MergadoFest 19 - Reguláry bez obav
 
INPTP přednáška 01b 2016
INPTP přednáška 01b 2016INPTP přednáška 01b 2016
INPTP přednáška 01b 2016
 
Wa 8
Wa 8Wa 8
Wa 8
 
INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk Testovani
 

Más de 352 (6)

Ověření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulkyOvěření dat, maticové funkce, kontingenční tabulky
Ověření dat, maticové funkce, kontingenční tabulky
 
Práce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS ExcelPráce v prostředí aplikace MS Excel
Práce v prostředí aplikace MS Excel
 
Tv 13
Tv 13Tv 13
Tv 13
 
TV kombinovane studium
TV kombinovane studiumTV kombinovane studium
TV kombinovane studium
 
Tv 04 2011
Tv 04 2011Tv 04 2011
Tv 04 2011
 
TV 02 2011
TV 02 2011TV 02 2011
TV 02 2011
 

Tv 07

  • 1. 352 - Katedra automatizační techniky a řízení Technické výpočty Ing. David Fojtík, Ph.D. A922, kl. 4193
  • 3. Princip ladění programů • Laděná programů je účinná metoda odhalování chyb algoritmů • Během ladění je program vykonáván příkaz po příkazu (krok za krokem) • Po každém příkazu je možné sledovat obsah proměnných • Každý příkaz se vykonává na podnět programátora Sub Main() Dim D As Double 'Diskriminant Dim a As Double, b As Double, c As Double 'Koeficienty kvadraticke rovnice Dim x1 As Double, x2 As Double 'Hledane reseni 'Ziskani koeficientu rovnice a = InputBox("Zadej A:", "Ax^2 + Bx + C") b = InputBox("Zadej B:", "Ax^2 + Bx + C") c = InputBox("Zadej C:", "Ax^2 + Bx + C") 'Vypocet diskriminantu D = b ^ 2 - 4 * a * c 'Vypocet korenu rovnice x1 = (-b + Sqr(D)) / (2 * a) x2 = (-b – D^(1/2)) / (2 * a) 'Vypis vysledku MsgBox "x1 = " & x1 & vbCrLf & "x2 = " & x2, , _ "Řešení rovnice: " & a & "x^2 + " & b & "x + " & c End Sub
  • 4. Zahájení a ukončení ladění • Tlačítkem Debug po výjimce – Program se pozastaví na příkazu (řádku), který výjimku způsobil • Zahájením krokování – Ikonou Step Into na panelu Debug – Funkční klávesou F8 – Krokování bude vždy od začátku makra • Přerušením na zarážce – Program se pozastaví na příkazu (řádku), na kterém je zarážka • Ukončení ladění – Ukončením programu – Příkazem Reset
  • 5. Sledování obsahu proměnných • Okamžitým náhledem – Zobrazí se po ponechání kurzoru nad proměnou • Locals Window – Menu View, položka Locals Window – Zobrazí se všechny proměnné laděné subrutiny – Poklepáním nad hodnotou je možné provést změnu • Watch Window – Menu View, položka Watch Window – Implicitně je prázdné, vložení proměnné přetažením, vepsáním – Je možné vložit výrazy – Poklepáním nad hodnotou je možné provést změnu
  • 6. Krokování a zárážky • Krok dovnitř – Provede se jeden příkaz – Klepnutím nad ikonou Step Into – Funkční klávesou F8 • Krok přes – Klepnutím nad ikonou Step Over – Funkční klávesou Shift + F8 – Pouze pro složitější makra – Volání jiné subrutiny se vykoná jako jeden příkaz • Přetažením kurzoru – Tažením žluté šipky lze libovolně přesunout bod pozastavení • Vložení a zrušení zarážky – Klepnutím na levou lištou před zvoleným příkazem – Funkční klávesou F9 • Logický breakpoint – Vkládá se přes okno Watches – Pokročilé používání
  • 8. Vývojový diagram – základní značky Vývojový diagram je grafická metoda zápisu algoritmu. Zápis se provádí pomocí grafických značek, které se různě kombinují tak, aby vyjadřovali různé operace. Do značek se vypisují upřesňující údaje, které specifikují konkrétní kroky/příkazy. Značky se propojují spojovacími čárami (popřípadě šipkami), které specifikují směr posloupnosti příkazů. Implicitně je směr shora-dolů, zleva-doprava. • Základní značky Start – Začátek nebo konec algoritmu, buď jeden výstup Stop nebo vstup Příkaz – Běžný příkaz (krok, operace) vepisuje se do Příkaz značky má vždy jeden vstup a jeden výstup – Větvení (podmíněný příkaz) má 1 vstup a 2 - A>B + výstupy, které se označují Ano (+) je li výraz ve značce pravdivý, Ne (-) není li pravdivý – Příprava – obvykle cyklus se specifikovaným i = 1..10 počtem opakování má 2 vstupy a jeden výstup. Do značky se zapisuje počet opakování. A A – Spojka (buď jeden vstup nebo výstup), používá se u složitějších algoritmů, kdy se tímto propojují různé vývojové diagramy. – Spojovací čára.
  • 9. Vývojový diagram – další značky • Další vybrané značky dle ČSN ISO 5807 "Zpracování informací. Dokumentační symboly a konvence pro vývojové diagramy toku dat, programu a systému, síťové diagramy programu a diagramy zdrojů systému" ze dne 1. ledna 1996 – Podprogram, do značky se vepíše název podprogramu – Interní paměť - představuje vnitřní paměť počítače. Data mohou do z paměti vystupovat, nebo se mohou do paměti ukládat. Symbol může tak mít jeden výstup nebo jeden vstup. – Paměť s přímým přístupem – pevný disk, disketa apod. Symbol může tak mít jeden výstup nebo jeden vstup. – Data - vstup a výstup dat, reprezentuje vstupně - výstupní operace s daty, tj. dodání dat pro zpracování nebo zpracování do požadované formy výstupu. Má jeden vstup a jeden výstup. – Dokument představuje zařízení pro tištěný výstup, kterým může být klasická tiskárna, ale i zařízení pro tvorbu mikrofilmu, pokladní tiskárna a jiné. Symbol má jenom jeden vstup. – Zobrazení představuje zařízení pro vizuální zobrazení dat, jako je např. monitor počítače signální zařízení a pod. Symbol má jenom jeden vstup. poznámka – Komentář, je spojen s značkou nebo sekvencí ohraničenou obdélníkem z přerušované čáry
  • 10. Příklady vývojových diagramů - větvení Sekvence Větvení Větvení Větvení příkazy jdoucí Úplná alternativa Neúplná alternativa Několikanásobná alternativa za sebou bez vykoná se buď příkaz se vykoná Hodnota proměnné se porovnává jakýkoliv jeden nebo druhý jen je-li logický s uvedenými konstantami, vybere odskoků příkaz výraz pravdivý se větev se shodnou hodnotou Log. výraz Log. výraz proměnná 1 2 3 nebo
  • 11. Příklady vývojových diagramů - cykly Cyklus Cyklus S podmínkou na začátku S podmínkou na konci Není-li podmínka na počátku pravdivá cyklus Vždy se provede alespoň jednou se nikdy neprovede Tělo cyklu Tělo cyklu
  • 12. Příklady vývojových diagramů První část Druhá část
  • 14. Logické a relační operátory Relační operátory • Výsledkem relačního a Matematický Visual logického výrazu je zápis Basic jedna ze dvou možností = = – True (výraz je pravdivý)  <> – False (výraz je nepravdivý) Priorita operátorů < < • Operátor = má dva () významy Not > > * / Mod – Přiřazení A = 10  Priorita <= + - – Porovnání if A = B then < > <= >=  >= = <> And Or = přiřazení Logické operátory True False True True False False And Not False True Or And False True False Not Or True True False
  • 15. Příklady logických výrazů Option Explicit Sub Main() Dim Hodnota As Integer Dim Odpoved As Boolean Hodnota = InputBox("Zadej hodnotu") Odpoved = Hodnota > 0 MsgBox "Hodnota je kladna? „ & Odpoved Odpoved = Hodnota <> 0 MsgBox "Hodnota není nula? „ & Odpoved Odpoved = Hodnota >= 1 And Hodnota <= 12 MsgBox "Hodnota představuje číslo měsíce? „ & Odpoved Odpoved = Hodnota = 7 OR Hodnota = 8 MsgBox "Hodnota představuje číslo prázdninového měsíce? „ & Odpoved Odpoved = Not (Hodnota = 7 OR Hodnota = 8 ) MsgBox "Hodnota nepředstavuje číslo prázdninového měsíce? „ & Odpoved End Sub
  • 17. Větvení • Vždy když je potřeba se rozhodnou která část programu má být dále prováděna • Jedno z nejčastějších programových implementací • Ve Visual Basicu (obdobné je to téměř ve všech programovacích jazycích) jsou dvě základní varianty realizace větvení: – Větvení pomocí If-Else – Větvení pomocí Selec Case – Existuje také možnost použít funkci IIf(výraz, ProPravdu, ProNepravdu)
  • 18. Větvení pomocí If-Else • Jednořádková syntaxe If logickýVýraz Then [PříkazPravdy] [Else příkazNepravdy] – Pouze máme-li jeden příkaz pro pravdu i nepravdu – Pouze jedna úroveň větvení • Víceřádková syntaxe If logickýVýraz1 Then [PříkazyPravdyLogVýrazu1] [ElseIf logickýVýraz2 Then [PříkazyPravdyLogVýrazu2] - Nepravda + Pravda ... příkaz(y) pro výraz příkaz(y) pro nepravdivý výraz pravdivý výraz [Else [PříkazyNepravdy]] End If – Je možné větvit neomezeně – Můžeme mít více příkazů – Musí končit příkazem End IF
  • 19. Příklad větvení pomocí If-Else Sub Main() Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel Dim cena As Currency ' Určená cena rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky") ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů If (rada >= 1 And rada <= 5) Or (rada > 20 And rada <= 25) Then 'Pro interval 1..5 a 20..25 je cena 150 Kč cena = 150 ElseIf rada >= 6 And rada <= 15 Then 'Pro interval 6..15 je cena 180 Kč cena = 180 ElseIf rada >= 16 And rada <= 20 Then 'Pro interval 16..20 je cena 200 Kč cena = 200 Else ' ve skutečnosti jde o zbytečný příkaz, jelikož každá ' proměnná ve VB je implicitně nulovaná cena = 0 End If 'Je-li cena nulová, uživatel zadal neplatnou řadu If (cena > 0) Then MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..." Else MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA !!!" End If End Sub
  • 20. Alternativa Příkladu větvení If-Else Sub Main() Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel Dim cena As Currency ' Určená cena rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky") ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů If (rada >= 1 And rada <= 5) Or (rada > 20 And rada <= 25) Then 'Pro interval 1..5 a 20..25 je cena 150 Kč cena = 150 Else If rada >= 6 And rada <= 15 Then 'Pro interval 6..15 je cena 180 Kč cena = 180 Else If rada >= 16 And rada <= 20 Then 'Pro interval 16..20 je cena 200 Kč cena = 200 Else MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA Exit Sub End If End If • Příkaz Exit Sub ukončí subrutinu (Makro) End If MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..." End Sub
  • 21. Větvení pomocí Select Case • Syntaxe Select Case výraz [Case HodnotyVýrazu1 [PříkazySkupiny1]] ... V = výraz [Case Else [PříkazyProOstatníHodnoty]] + Pravda V = k1 Příkazy větve 1 End Select – Je možné větvit neomezeně - Nepravda – HodnotyVýrazu může být uvedena: + Pravda • Jako jedna hodnota 10, “Jaro“ V = k2 Příkazy větve 2 • Jako skupina hodnot - Nepravda oddělených čárkou 10,20,30 • Jako jeden interval 1 to 12 implicitní příkazy • Více oddělených intervalů 1 to 12, 20 to 40 • Logickou podmínkou Is > 20
  • 22. Příklad větvení pomocí Select Case Sub Main() Dim rada As Integer ' Cena vstupenky podle požadované řady sedadel Dim cena As Currency ' Určená cena rada = InputBox("Do které řady chcete vstupenku ?", "Cena vstupenky") ' pomocí And a Or lze vytvořit podmínku, která vrací True pro více intervalů Select Case rada Case 1 To 5, 20 To 25 'Pro interval 1..5 a 20..25 je cena 150 Kč cena = 150 Case 6 To 15 'Pro interval 6..15 je cena 180 Kč cena = 180 Case 16 To 20 'Pro interval 16..20 je cena 200 Kč cena = 200 Case Else ' ve skutečnosti jde o zbytečný příkaz, jelikož každá ' proměnná ve VB je implicitně nulovaná cena = 0 End Select 'Je-li cena nulová, uživatel zadal neplatnou řadu If (cena > 0) Then MsgBox "Cena lístků je: " & Format(cena, "Currency"), , "Odpověď..." Else MsgBox " Řada " & rada & " neexistuje !!!", vbExclamation, "CHYBA !!!" End If End Sub
  • 23. ??? kontrolní otázky ??? • Jaký grafický symbol (značku) uvedeme pro běžný krok/příkaz v algoritmu? • Jaké známe relační operátory ve Visual Basicu? • Co znamená značka kosočtverce a jaké má vstupy/výstupy? • Je možné mít ve vývojových diagramech komenátře? • Vyjmenujte tři základní logické operátory • Pro C=10, jaký bude výsledek výrazu C>=1 AND C<10 ? • Jakými způsoby můžeme zahájit ladění programu? • Jakými způsoby zjistíme hodnoty proměnných? • Je možné měnit hodnotu proměnných během ladění? • Co je a k čemu slouží zarážka (breakpoint) • Kde je vhodnější použít větvení If-Else než Select Case • Je možné u Select Case použít libovolné logické výrazy? • K čemu slouží příkaz Exit Sub?
  • 24. 352 - Katedra automatizační techniky a řízení Ing. David Fojtík, Ph.D. A922, kl. 4193 david.fojtik@vsb.cz