Tv 07

2,911 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,911
On SlideShare
0
From Embeds
0
Number of Embeds
2,088
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tv 07

  1. 1. 352 - Katedra automatizační techniky a řízeníTechnické výpočty Ing. David Fojtík, Ph.D. A922, kl. 4193
  2. 2. Ladění
  3. 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átoraSub 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 reseniZiskani 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 * cVypocet 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 + " & cEnd Sub
  4. 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. 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. 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í
  7. 7. Vývojové diagramy
  8. 8. Vývojový diagram – základní značkyVývojový diagram je grafická metoda zápisu algoritmu. Zápis seprová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ěrposloupnosti 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. 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. 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á alternativaza 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. 11. Příklady vývojových diagramů - cykly Cyklus Cyklus S podmínkou na začátku S podmínkou na konciNení-li podmínka na počátku pravdivá cyklus Vždy se provede alespoň jednou se nikdy neprovede Tělo cyklu Tělo cyklu
  12. 12. Příklady vývojových diagramů První část Druhá část
  13. 13. Logické výrazy
  14. 14. Logické a relační operátoryRelační operátory • Výsledkem relačního aMatematický 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. 15. Příklady logických výrazůOption ExplicitSub Main() Dim Hodnota As Integer Dim Odpoved As Boolean Hodnota = InputBox("Zadej hodnotu")Odpoved = Hodnota > 0MsgBox "Hodnota je kladna? „ & OdpovedOdpoved = Hodnota <> 0MsgBox "Hodnota není nula? „ & OdpovedOdpoved = Hodnota >= 1 And Hodnota <= 12MsgBox "Hodnota představuje číslo měsíce? „ & OdpovedOdpoved = Hodnota = 7 OR Hodnota = 8MsgBox "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? „ & OdpovedEnd Sub
  16. 16. Větvení
  17. 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. 18. Větvení pomocí If-Else• Jednořádková syntaxeIf 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á syntaxeIf 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. 19. Příklad větvení pomocí If-ElseSub 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 IfEnd Sub
  20. 20. Alternativa Příkladu větvení If-ElseSub 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. 21. Větvení pomocí Select Case• SyntaxeSelect Case výraz[Case HodnotyVýrazu1[PříkazySkupiny1]]... V = výraz[Case Else[PříkazyProOstatníHodnoty]] + Pravda V = k1 Příkazy větve 1End 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. 22. Příklad větvení pomocí Select CaseSub 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 IfEnd Sub
  23. 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. 24. 352 - Katedra automatizační techniky a řízeníIng. David Fojtík, Ph.D. A922, kl. 4193 david.fojtik@vsb.cz

×