9.9.2002 Algoritmus - postup řešení daného úkolu -> grafické znázornění algoritmu = vývojový diagram *) značky na papírku znak pro přiřazení ve VB = znak pro porovnání ve VB = Základní programovací struktury: 1.) posloupnost (Př. sečítání dvou čísel) 2.) větvení na základě podmínky if (!document.all) { .. } else/then { .. } (Př. dělení dvou čísel ) 3.) cyklus opakovaná činnost prováděná, pokud je splněna podmínka (položená na začátka či konci jedné iterace) =============================================================== 16.9.2002 Základy algoritmizace a programování ve MS Visual Basic 6.0 - umožňuje objektově orientované a událostmi řízené programování PROJEKT - obsahuje tři části 1. hlavní soubor *.vbp - pro nás zatím jen "standard EXE" 2. jeden či fíce formulářových souborů *.frm 3. Modul = programový kód - připojený či standardní formulář 4. Designers - připojení vnějších částí do projektu Lišta - Add Standard EXE Project -- Standard EXE: založení nového projektu - Add Form: pro přidání nového formuláře, modulu - Start - Break - End Objekty ve Visual Basic Každý objekt má vždy ZAPOUZDŘENÍ (povolení přístupu pro jiné kódy či projekty) a DĚDIČNOST (každý objekt dědí vlastnosti po objektu nadřazeném a získává další) TOOLBAR - GENERAL: hlavní nástroje pro práci - Picture Box: vložení obrázku na formulář - Label: jmenovka či popisek- text s vlastností unactive - Textbox: okno pro vepis uživatele i programátora - Frame: spojení přepínačů + popiska - Command Button: tlačítko TOOLBAR - PROJECT: zobrazuje všecny části projektu - tříděno na formuláře, moduly, designers - připojení databáze Objekty: Každý objekt ma předdefinovány vlastnosti (mění se v Properties) - udávají vzhled a chování objektu v aplikaci, metody a události. appearance: vzhled behavior: chování Dostupnost vlastností: Metody: činnosti, jež může ovládací prvek vykonávat nebo mohou být vykonány na něm. Události: každý prvek má seznam událostí, které mohou vzniknout v souvislosti s daným prvkem; slouží k naprogramování procedur, jež jsou reakcí na událost 24.9.2002 Programový modul - připojený k formuláři -- součást General: deklarace promněných a procedur -- seznam objektů: programování událostních procedur - standardní modul: připojený volně k projektu -- pouze obecné procedury v General Procedura: - událostní: uvezena "Sub" a ukončena "End Sub" - obecná: uvození "Sub" nebo "Function"; procedura s návratovou hodnotou; procedury se spouští voláním [Private|Friend|Static|Public] Sub jmeno (seznam, parametru) DIM jmenopromene As Integer .. kód End Sub * Private: není dostupná pro jiné moduly v proceduře * Friend: dostupná i pro jiné moduly jednoho projektu * Public: dostupnáa měnitelné pro všechny moduly a projekty * Static: promněnné jsou neměnné Událostní procedura Př.: CmdPreved_Click 30.9. 2002 Deklarace promněnných 1) V proceduře pomocí DIM - promněnné soukromé v rámci jedné procedury 2) V General části modulu pomocí DIM, PRIVATE - soukromé pro jeden modul 3) PUBLIC - veřejně přístupné promněnné Vždy deklarovat promněnnou! Promněná: 255 znaků, písmena anglické abecedy, číslice, _ Doba platnosti DIM ... platí po dobu provádění procedury STATIC DIM ... trvalá platnost Datové typy - Celočíselné datové typy: BYTE - zabírá 1B obsahuje 0 až 255 INTEGER - 2B obsahuje -32768 až 32768 LONG - 4B obsahuje - 2mld. až 2mld. - Datové typy pro reálná čísla: SINGLE - 4B obsahuje -3,4×10.38 až -1,4×10.45 a 1,4×10.-45 a 3,4×10.38 DOUBLE - 8B, 4 desetinná čísla CURRENCY - 8B VARIANT - datový typ pro libovolný obsah; vždy 16B Operátory: celočíselné jsou +, -, *, \ Je dán počet sekund. Určete kolik je to hodin, minut a sekund. 7.10. 2002 ^ ... umocnění (anglická klávesnice Shift + Ž) & ... zřetězení (sečítání řetězců Funkce pro celočíselné datové typy Sqr(x) ... druhá odmocnina x Abs(x) ... absolutní hodnota x Round(x,y) ... zaokrouhlení x na y desetinných čísel Relační operátory >,<,=,<> -- Řetězcový datový typ String ... pro textový řetězec Větvení programu na základě podmínky IF podmínka THEN příkazy při splnění podmínky: odděleny dvojtečkou ELSE příkazy při nesplnění podmnky END IF nebo IF podmínka THEN příkaz příkaz příkaz ELSE příkazy příkazy END IF 14.10.2002 ELSEIF - větvení podmínky if isnumeric ... pokud je číslo msgbox ("") Datový typ boolean nabývá hodnot true nebo false použitelné relační operátory <,>,<>,<=,>=,= použitelné logické operátory AND (konjunkce, a zároveň), OR (diskjunkce, nebo), NOT (negace), IMP (implikace), EQV (ekvivalence), XOR (úplná disjunkce) ... pokud je alespoň jedna podmínka nepravdivá A B NOT A A AND B A OR B A IMP B A EQV B A XOR B 1T 1T 0 1 1 1 1 0 1 0F 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 If (X=0) XOR (y=0) then Msg("Nulou nedělím") 21.10.2002 Cykly Příklad: Sečti libovolnou řadu čísel, ukončenou číslem 100. 1. cyklus s podmínkou na začátku DO WHILE podmínka příkazy LOOP DO UNTIL podmínka příkazy [Exit do] ukončení podmínky příkazy LOOP Tělo cyklu nemusí proběhnout ani jedenkrát. 2. Cyklus s podmínkou na konci Proběhne vždy minimálně jednou. InputBox ("Co zadat", "titulek") - alert pro zadání DO příkazy [exit do] příkazy LOOP WHILE podmínka (podmínka musí platit aby pokračoval) DO příkazy LOOP UNTIL podmínka (podmínka nesmí platit aby pokračoval) InputBox("prompt - požadavek po uživateli","title - titulek",["default - standardní hodnota","xpos",ypos","helpfile","context - číslo stránky v helpfile"]) MsgBox("prompt","buttons - vbOKonly, vbOkCancel, vbAbortRetryIgnore, vbYesNoCancel, vbYesNo, vbRetryCancel ","title","helpfile","context") Please, silence your speakers :oĐ OK - 1, Cancel - 2, Abort - 3 Zpět, Retry - 4 Znovu, Ignore - 5, Yes - 6, No - 7 4.11.2002 Uživatel zadává příjmy kladné, výdaje záporné. Zadávání ukončí nulou. Vypište příjmy, výdaje, a zisk Cyklus se známým počtem opakování FOR řídící promněnná = počáteční hodnot TO konec [STEP - o kolik] příkazy NEXT řídící promněnná FOR I = 1 TO N STEP 1 NEXT I Private Sub Command1_Click() Dim S,A,N As Integer S=0 N = Text1.Text FOR I=1 TO N A = InputBox("Zadej A") S = S + A NEXT I Text2.Text = S End Sub 11.11. 2002 End ... ukončí aplikaci 18.11.2002 Spočítejte ciferný součet daného přirozeného čísla. Zeptejte se uživatele, zda chce pokračovat? 1. Samostatná složka root:\jpetrak\ciferny_soucet 2. Pořádek ve zdroji 3. Pojmenování promněných a objektů 25.11.2002 Uživatel zadá deset čísel, zjistěte největší z nich a počte výskytů. Objekt TIMER (časovač) Slouží k naprogramování pravidelně se opakujícího děje po přesném, stejném časovém intervalu. Vlastnosti: Name (jméno), Interval (délka prodlení v ms), Left a Top (poloha levého horního rohu časovače vokně) Objekt PICTUREBOX Vložení obrázku do formuláře Name: jméno; Picture: adresa k souboru s obrázkem Top a left: poloha levého horního rohu obrázku Height a width: rozměry obrázku Visible: viditelný T/F Program - v jednom obejktu image se zobrazují střídavě dva různé obrázky ančítané ze dvou image-hidden objektů. Private Sub Form_Load() PCTMSN.Picture = PCTOpen.Picture End Sub Private Sub Timer1_Timer() Static p As Boolean If p Then PCTMSN.Picture = PCTOpen.Picture Else PCTMSN.Picture = PCTClose.Picture End If p = Not p End Sub Form.ScaleHeight ... výška formuláře Form.ScaleWidth ... šířka formuláře Private Sub Form_Load() PCTMSN.Picture = PCTOpen.Picture End Sub Private Sub Timer1_Timer() Static p As Boolean If p Then PCTMSN.Picture = PCTOpen.Picture Else PCTMSN.Picture = PCTClose.Picture End If p = Not p PCTMSN.Top = PCTMSN.Top - 100 PCTMSN.Left = PCTMSN.Left + 100 If PCTMSN.Top + PCTMSN.Height < 0 Then PCTMSN.Top = MSN.ScaleHeight PCTMSN.Left = 0 End If End Sub 9.12.2002 Datový typ Date Slouží k uložení data a času. Hodnota 1.1.100 až 31.12.9999 a čas 0:0:0 - 23:59:59 Date = "12.10.2002" nebo "12. říjen 02" nebo "10|12|2002" ... nastavení systémového datumu Time = "16:12" nebo "16:12:25" nebo "4:12:25PM" .. nastavení systémového času Text1.Text = Now ... vypíše aktuální datum a čas Funkce ... Day Month Year Přiřazení ... Day(Date) Text1.Text = MouthName(poř.číslo.měsíce) ... vypíše jméno měsíce Text1.Tetx = WeekDayName(poř.číslo.dne v týdnu) ... vypíše jméno dne v týdne Text1.Text = Time ... vypíše systémový čas Text1.Text = Timer ... počet sekund od půlnoci Funkce ... Hour(Time) ... aktuální hodina Minute(Time) ... aktuální minuta second(Time) ... aktuální sekunda Projekt Budík Vertikální posuvník VScrollBar - Min: minimální hodnota - Max: maximální hodnota Private Sub Timer1_Timer() FBudik.Caption = Time If ChBudit.Value = 1 And LCas1.Caption = Hour(Time) And LCas2.Caption = Minute(Time) Then WindowState = 0 Beep End If End Sub Private Sub VScroll1_Change() LCas1.Caption = VScroll1.Value End Sub Private Sub VScroll2_Change() LCas2.Caption = VScroll2.Value End Sub 16.12.2002 SNEntity 'Admin': ritter.siegfried@centrum.cz 6.1. 2003 http://go.icq.com/ 63063600 Cougar 179271149 dj Padák http://www.netmarine.net/forces/aviat/rafale/photos.htm Příkaz pro výstup informace: Print Vypíše se přímo do formuláře Print 15 Print cislo ListBox Seznam s přidávatelnými hodnotami LSHalf.Clear LSHAlf.AddItem Option Explicit Private Stav As Boolean Private casStart As Date Private mezicas As Date Private Sub CMEnd_Click() End End Sub Private Sub CMHalf_Click() LSHAlf.AddItem = Format(mezicas, "HH:MM:SS") End Sub Private Sub CMNull_Click() TDisplay.Text = Format(0, "HH:MM:SS") LSHAlf.Clear End Sub Private Sub CMStart_Click() Stav = True casStart = Time End Sub Private Sub CMStop_Click() Stav = False End Sub Private Sub Timm_Timer() Dim cas As Date cas = Time If Stav = True Then mezicas = cas - casStart TDisplay.Text = Format(mezicas, "HH:MM:SS") End If End Sub