Мавзу: VBA (Visual Basic for Application) нинг стандарт функциялари
Амалий машғулот мақсади: VBAда ишлаш кўникмаларини ошириш, стандарт функциялар ёрдамида турли масалаларни ечишни ўрганиш.
Ўқитишни методи ва техникаси : Суҳбат, масалаларни ва топшириқларни ечиш.
Ўқитиш воситалари : ўқув материаллар, компьютерли технология , проектор.
Ўқитиш формаси: гуруҳларда ишлаш.
Мониторинг ва баҳолаш: гуруҳларда ўқув топшириқларини бажариш, жадвални тўлдириш.
УСЛУБИЙ КЎРСАТМАЛАР
VBAда дастурлашни енгиллаштирувчи кўпгина стандарт функция ва процедуралар мавжуд. Бу функциялар вазифасига кўра қуйидаги турларга бўлинади:
- Математик функци ялар
- Сатрларни қайта ишловчи функциялар
- Маълумотлар типини ўзгартирувчи функциялар
- Маълумотлар типини текширувчи ф ункци лар
- Вақт ва сана ф ункци ялари
Математик функци ялар
№
Функция номи
1
Қайтарадиган қиймати
Abs ( сон )
2
Atn ( сон )
Соннинг абсолют қиймати (модули)
3
Соннинг а рктангенс и
Cos ( сон )
4
Ехр ( сон )
5
Соннинг к осинус и
Соннинг экспонентаси, асос e даража эса кўрсатилади, e ≈ 2,7
Log ( сон )
6
Rnd ( с о н )
Соннинг натурал логарифми Ln Lnb = log e b , e ≈ 2,7
[0,1) интервалдаги тасодифий сон .
Агар сон нолдан кичик (манфий) бўлса, у ҳолда ҳар сафар бир хил сон қайтаради;
Агар сон нолдан катта (мусбат) ёки аргумент тушириб қолдирилган бўлса, у ҳолда [0,1) интервалдаги тасодифий сонни қайтаради;
[0;∞) оралиқдаги тасодифий бутун сонларни ҳосил қилиш учун дастур кўринишини қуйидагича ёзиш мумкин:
Randomize
MsgBox (Int((6 * Rnd ) + 1))
Натижа: 1 дан 6 гача бўлган бутун тасодифий сонлардан бири ҳосил бўлади.
Rnd функциясини ишлатишдан олдин Randomize кўрсатмасини аргументсиз ёзиш зарур.
Математик функци ялар
7
Sgn ( с о н )
8
Соннинг ишорасини қийматлар ёрдамида қайтаради, яъни
мусбат бўлса 1
манфий бўлса -1
ноль бўлса 0
Sin ( с о н )
9
Sqr ( с о н )
Соннинг с инус и
10
Соннинг квадрат илдизини қайтаради
Tan ( с о н )
11
Fix ( с о н ) ва
Int ( с о н )
Соннинг т ангенс и
Бу иккала функциялар ҳам соннинг қолдиқ қисмини ташлаб юборади ва бутун қисмини қайтаради .
Уларнинг асосий фарқи шундаки сонимиз манфий бўлганида
Int фукцияси кичик бутун сонга кўра
Fix фукцияси эса катта бутун сонга кўра қабул қилади.
Масалан:
MsgBox (Int(5.8)) Натижа 5
MsgBox (Fix(5.8)) Натижа 5
MsgBox (Int(-2.3)) Натижа -3
MsgBox (Fix(-2.3)) Натижа -2
Сатрлар (матнлар)ни қайта ишловчи функциялар
№
Функция номи
1
Қайтарадиган қиймати
ASC
2
Chr
Сўзнинг биринчи ҳарфи ASCII-код ини қайтаради .
Синтаксис и :
Asc ( сўз, ҳарф, белги ёки сон )
Масалан: Asc ("а") = 97
3
ASCII кодига мос ҳарф ёки белги ёки сонни қайтаради .
Синтаксис и :
Chr (Код)
Масалан : Chr ( 13 ) = янги сатрга ўтиш
Chr ( 97 ) = "а"
L c ase
Берилган сўз , гап ёки ҳарфни кичик ҳарфларда ифодалаш (пастки регистрга ўтказиш)
Синтаксис и :
L c ase ( Сатр )
Сатрлар (матнлар)ни қайта ишловчи функциялар
4
Ucase
5
Берилган сўз , гап ёки ҳарфни катта ҳарфларда ифодалаш (юқори регистрга ўтказиш)
Синтаксиси:
Ucase (Сатр)
Left
6
Right
Берилган сўзни бошидан бошлаб белгилар сонига кўра олиш Синтаксис и :
Left (string, length)
Аргумент лари :
- length – белгилар сони
- string – берилган сўз ёки гап
Берилган сўзни охиридан бошлаб белгилар сонига кўра олиш
Синтаксис и :
Right (string, length)
Аргумент лари :
- length – белгилар сони
- string – берилган сўз ёки гап
Масалан: Left("Uzbek iston Respublikasi ", 10 ) = Uzbe kiston
Масалан: Right ("Uzbek iston Respublikasi ", 12 ) = Respublikasi
Сатрлар (матнлар)ни қайта ишловчи функциялар
7
Mid
8
Берилган сўзни кўрсатилган сондаги ҳарфидан бошлаб маълум кўрсатилган сондаги ҳарфларини қайтаради
Синтаксис и :
Mid (string, start, length)
Аргумент лари :
Len
9
- string – берилган сўз ёки гап
- start – олиниши керак бўлган сўздаги дастлабки ҳарф позицияси рақами
- length – олиниши керак бўлган ҳарфлар сони
LTrim
Сўз ёки гапдаги белгилар (символлар) сонини қайтаради ( бўш жой, яъни пробел ҳам ҳисобга олинади ).
Синтаксис и :
Len ( Сўз ёки гап )
Масалан: Len("Uzbekiston Respublikasi") = 23
Масалан: Mid("Uzbekiston Respublikasi", 1, 5) = Uzbek
Берилган сўзнинг чап томонидаги бўш жойлар (пробеллар)ни олиб ташлаб, шу сўз нусхасини қайтаради
Синтаксис и :
LTrim ( Сўз )
Масалан: LTrim(" Uzbekiston ") = "Uzbekiston "
Сатрлар (матнлар)ни қайта ишловчи функциялар
10
Rtrim
11
Берилган сўзнинг ўнг томонидаги бўш жойлар (пробеллар)ни олиб ташлаб, шу сўз нусхасини қайтаради
Синтаксис и :
RTrim ( Сўз )
Масалан: R Trim(" Uzbekiston ") = " Uzbekiston"
Trim
12
Space
Берилган сўзнинг ҳам ўнг томони ҳам чап томонидаги бўш жойлар (пробеллар)ни олиб ташлаб, шу сўз нусхасини қайтаради
Синтаксис и :
Trim ( C ўз )
Масалан: Trim(" Uzbekiston ") = "Uzbekiston"
Курсор турган жойдан бошлаб кўрсатилган қиймат бўйича бўш жой (пробел) ҳосил қилиш
Синтаксис и :
Space ( Қиймат )
Сатрлар (матнлар)ни қайта ишловчи функциялар
13
String
14
Кўрсатилган миқдорга кўра белги ёки ҳарфларни такроран қайтаради
Синтаксис и :
String (number, character)
Аргумент лари :
StrComp
- number – такрорланувчи белги (символ) миқдори
- character – такрорланувчи белги (символ)
Иккита сўзнинг ҳарфлар (символлар) сонини таққослаш .
Синтаксис и :
StrComp(stringl, string2)
Аргумент лари :
Масалан: String( 3 , 97 ) = aaa
Масалан: String(5, "b") = bbbbb
- string1 – биринчи сўз ёки гап
- string2 - иккнчи сўз ёки гап
Қайтарувчи қийматлари:
Агар биринчи сўздаги ҳарфлар сони иккинчисидан кўпбўлса 1
Агар биринчи сўздаги ҳарфлар сони иккинчисига тенг бўлса 0
Агар биринчи сўздаги ҳарфлар сони иккинчисдан кам бўлса -1
Масалан: StrComp( " Bir " , " Ikki " ) = -1
Сатрлар (матнлар)ни қайта ишловчи функциялар
15
InStr
Бир сўз ичидан бошқа сўз ёки бир сўз ичидан бошқа ҳарфнинг нечанчи ўринда турганлигин қайтаради
Синтаксис и :
InStr ( start , stringl , string 2 , compare )
Аргумент лари :
- start – сонли қиймат бўлиб, қидириш нечанчи ўриндан бошланишини кўрсатади . Агар ушбу аргумент тушириб қолдирилса қидириш биринчи ўринда турган ҳарфдан бошланади.
- stringl – сўз ёки матн, ундан керакли ҳарф ёки сўз қидирилади.
- string2 – қидирилувчи ҳарф (символ) ёки сўз
- compare – сўзларни таққослаш усулини кўрсатувчи қиймат . Жимлик коидаси бўйича 1 туради.
0 - ҳарф (символ) кодлари орқали таққослаш ,
1 - ҳарф (символ)ларни регистрларини (катта-кичиклигини) ҳисобга олмасдан таққослаш
Масалан:
InStr(3, "Guruh", "u", 1) = 4 (учинчи ҳарфдан бошлайди)
InStr(1, "Guruh", "u", 1) = 2 (биринчи ҳарфдан бошлайди)
InStr("Guruh", "u") = 2 ( биринчи ҳарфдан бошлайди )
InStr( 1, "Guruh", " U " ,0 ) = 0 (катта U ҳарфи йўқ)
InStr( 1, "Guruh", " U " , 1) = 2 (катта ёки кичик ҳарф бўлишидан қатий назар)
Маълумотлар типини ўзгартирувчи асосий функциялар
№
Функция номи
1
Қайтарадиган қиймати
Val ( сатр )
2
Str ( сон)
Матнли типдан сонли типга ўтказади ва сонли тип қайтаради.
Масалан:
a = Val("15")
b = Val("20")
Selection.TypeText (a + b)
Натижа: 35
Сонли типдан матнли типга ўтказади ва матнли тип қайтаради.
Масалан :
a = Str(15)
b = Str(20)
Selection.TypeText (a + b)
Натижа: 15 20 ( ўртада пробел ҳосил бўлади )
МАСАЛА ЕЧИМИДАН НАМУНА
- Масаланинг қўйилиши: Исмоилов Нусрат Солиевич 1990 кўринишидаги матн берилган. Бу матнни юқорида айтиб ўтилган функциялар ёрдамида таҳрирлаб, Исмоилов Н.С. 21 ёшда кўринишига келтиринг.
Алгоритми:
- Белгиланган тартибда матнни киритинг
- Берилган матндан дастлабки пробел ўрнини аниқланг
- Матндаги биринчи сўзни тўлиқ ва иккинчи сўзнинг биринчи ҳарфини олинг ва нуқта қўйинг
- Матннинг кейинги иккинчи пробел ўрнини аниқланг
- Дастлабки олинган натижавий матнга иккинчи пробелдан кейинги ҳарфни олиб қўшинг ва нуқта қўйинг
- Берилган матндан йил кўрсаткичини олиб, жорий йилдан уни айиринг
- Ҳосил қилинган натижавий матнга айирмада чиққан йилни матнли типга ўгириб қўшиб ёзинг ҳамда “ёшда” сўзини ҳам унинг ўнг томонидан жойлаштиринг
- Натижани экранга чиқаринг
Дастури:
- Selection.HomeKey unit:=WdStory (Курсорни матн бошига келтириш)
- Selection.EndKey unit:=WdStory, Extend:=WdExtend (Матнни тўлиқ белгилаб олиш)
- Matn = Selection.Text (Исмоилов Нусрат Солиевич 1990 матни ўзлаштирилади )
- k = InStr( Matn , " ") (Берилган матндан пробелнинг ўрнини топиш=9)
- S = Mid( Matn , 1, k + 1) + "." (S ўзгарувчисига матндан 1 дан 10 гача бўлган ҳарфлар олинади ва охирига нуқта (.) қўйилади = Исмоилов Н.)
- k = InStr(k + 1, Matn, " ") (10 чи ҳарфдан бошлаб матндан кейинги пробелнинг ўрнини топиш=16)
- S = S + Mid( Matn , k + 1, 1) + "." (S ўзгарувчисига олдинги S қўшилиб, матндан 17 дан 18 гача
- яъни 1 та ҳарфни олади ва нуқта (.) қўяди = Исмоилов Н.С.)
- yil = val (Right(Matn, 5 )) (yil номли ўзгарувчи матн охиридан 4 та ҳарф олади= 1990)
- yosh = 2011 - yil (yosh ўзгарувчисига 2011-1990 айирма (21) ўзлаштирилади)
- S = S + Str(yosh) + " ёшда" (S ўзгарувчисига олдинги S натижаси ва ёш матнли типга ўгирилиб ёзилади ҳамда ёшда сўзи алоҳида қўшиб ёзилади)
- Selection.TypeText (S) (Натижа жорий ҳужжатда ҳосил бўлади)
Натижа: Исмоилов Н.С. 21 ёшда
ГУРУҲЛАР УЧУН ў қув топшириқлари
- Берилган топшириқлардан бирини танланг ва уни ечиш алгоритмини тушунтиринг.
- Топшириқ шартига кўра дастурини тузишда қўлланиладиган функция номларини, уларни қўллашдан мақсад ва кутилаётган натижаларини берилган жадвалга киритинг.
№
Функция номи
1
Қўлланилиш мақсади
2
InStr
Кутилаётган натижа
3
Берилган матндан пробелнинг ўрнини аниқлаш
....
Пробел ўрни қийматини қайтаради
3. Топшириқни ечиш дастурини тузинг.
1-Топшириқ
- 14 сўздан иборат матн берилган, сўзлар ўзаро 1 та пробел билан ажратилган. Таркибида 3 та ҳарфдан иборат сўзларни ва шу сўзларнинг тартиб рақамини қайтарувчи дастур тузинг.
- Масалан: Visual Basic For Application дастурлаш муҳитида энг асосий тушунча курсорнинг ҳар томонга ҳаракати ҳисобланади
- Натижа: For 3 - ўринда, энг 7 - ўринда, ҳар 12 - ўринда
2-Топшириқ
- Ихтиёрий сондаги рақамларни сўзлар орқали ифодаловчи дастур тузинг.
- Масалан: 3471
- Натижа: уч тўрт етти бир
3-Топшириқ
- Берилган матндаги сатри сўзини қатори сўзига алмаштиринг.
- Берилган матн:
Word ойнасининг менюлар сатри пастида ёрдамчи тугмалар сатри жойлашган
Word ойнасининг менюлар қатори пастида ёрдамчи тугмалар қатори жойлашган
Уйга вазифа учун масалалар:
- Берилган 3 та сўзлар ўрнини тасодифий алмаштириш дастурини тузинг.
Масалан: мен институтда ўқийман
Натижа: ўқийман мен институтда
2. 13.04.2011 сана кўриниши берилган, уни 13-апрел 2011 йил Чоршанба кўринишига келтирувчи дастур тузинг.
Гуруҳлардаги ишлар баҳосининг жадвали :
Гуруҳ
Жавобнинг тўлиқ ва аниқлиги
(1 балл )
1
Ахборотни кўргазмали тасвирлаш
(0,5 балл )
2
Гуруҳдаги ҳар бир аъзонинг активлиги (0,5 балл )
3
Умумий баллар йиғиндиси
(2 балл )
Баҳо
Амалий машғулот бўйича талаба 1 баллдан 2 баллгача йиғиши мумкин:
1,7 – 2 балл – “аъло”
1,4 – 1,6 балл – “яхши”
1 - 1,3 балл – “қониқарли”
0 – 0,9 балл – “қониқарсиз”
1-Топшириқ алгоритми
- Матн бошига ўтинг
- Матнни тўлиқ белгилаб олинг
- Бирор ўзгарувчига матнни ўзлаштиринг
- 2 та ўзгарувчига 1 ни ўзлаштиринг
- Цикл токи 14 га тенг бўлганича берилган матндаги пробелларнинг ўрнини кетма-кет аниқланг ва унинг қийматини бирор ўзгарувчига ўзлаштиринг
- 3 та ҳарфлик сўзларни текшириш йўли билан ажратиб олинг
- Натижани ҳосил жойлаштиринг
1-Топшириқ дастури
- Selection.HomeKey unit:=WdStory (Курсорни матн бошига келтириш)
- Selection.EndKey unit:=WdStory, Extend:=WdExtend (Матнни тўлиқ белгилаб олиш)
- Matn = Selection.Text (Берилган матн ўзлаштирилади)
- m = 1 ( m ўзгарувчиси дастлаб 1 ни олади)
- j = 1 ( j ўзгарувчиси дастлаб 1 ни олади)
- While j (токи j 14 га тенг бўлганича цикл бажарилади)
- k = InStr(m + 1, Matn, " ") (Берилган матндаги дастлабки пробел ўрнини аниқлайди k= 7 )
- (иккинчи циклда кейинги пробел ўрнини аниқлайди, яъни 8 дан бошлаб қидирганида 13 чи ўринда k= 13)
- S = Mid(Matn, m + 1, k - m - 1) (Матндан дастлаб 2 чи ҳарфидан бошлаб 5 та ҳарф олади S= isual )
- (иккинчи циклда матндан 8 чи ҳарфидан бошлаб 13-7-1=5 та ҳарф олади
S=Basic )
- If Len(S) = 3 Then ( S сўзи узунлиги 3 га тенгми = йўқ )
- s1 = s1 + S + Str(j) + " - ўринда " ( S сўзи узунлиги 3 га тенг бўлганида шу сўзни ва унинг ўрнини ўзлаштиради )
- End If ( Шарт тугатилиши )
- j = j + 1 ( j биттага ошади j=2 )
( кейинги циклда j яна биттага ошади j=3 )
- m = k ( m = k =7 бўлади )
( кейинги циклда m =k=13 бўлади ва ҳ.к.з )
- Wend ( цикл охири )
- Selection.EndKey unit:=wdStory ( Матн охирига ўтиш )
- Selection.TypeParagraph ( 1 абзац пастга )
- Selection.TypeText (s1) ( Натижани жойлаштириш )
2-Топшириқ алгоритми
- Матн бошига ўтинг
- Матнни тўлиқ белгиланг
- 1 та символ чапга, белгиланган ҳолда ҳаракат
- Ўзгарувчига матнни ўзлаштиринг
- Ўзгарувчига матн сўзи узунлигини ўзлаштиринг
- 1 дан то сўз узунлигигача циклни амалга оширинг
- Матннинг дастлабки (кейинги ва ҳ.к.з.) қийматини сонга ўгириб, бирор ўзгарувчига ўзлаштиринг
- Танлов оператори ёрдамида сонларни (0 дан 9 гача) сўз орқали ифодаланг
- Натижани кетма-кет бирор ўзгарувчига ўзлаштиринг
- Матн охирига ва бир абзац пастга тушиб, натижани жойлаштиринг
2-Топшириқ дастури
- Selection.HomeKey unit:=wdStory
- Selection.EndKey unit:=wdStory, Extend:=wdExtend
- Selection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdExtend
- Matn = Selection.Text
- n = Len(Matn)
- For i = 1 To n
- k = Val(Mid(Matn, i, 1))
- Select Case k
- Case 0: Son = "Nol"
- Case 1: Son = "Bir"
- Case 2: Son = "Ikki"
- Case 3: Son = "Uch"
- Case 4: Son = "To`rt"
- Case 5: Son = "Besh"
- Case 6: Son = "Olti"
- Case 7: Son = "Etti"
- Case 8: Son = "Sakkiz"
- Case 9: Son = "To`qqiz"
- End Select
- Natija = Natija + " " + Son
- Next i
- Selection.EndKey unit:=wdStory
- Selection.TypeParagraph
- Selection.TypeText (Natija)
3-Топшириқ алгоритми
3-Топшириқ дастури
- Selection.HomeKey unit:=wdStory
- Selection.EndKey unit:=wdStory, Extend:=wdExtend
- Matn = Selection.Text
- m = 0
- j = 1
- While j
- k = InStr(m + 1, Matn, " ")
- s = Mid(Matn, m + 1, k - m - 1)
- If s = "satri" Then
- s1 = Left(Matn, k - 6) + "qatori " + Right(Matn, Len(Matn) - k)
- Matn = s1
- End If
- j = j + 1
- m = k
- Wend
- Selection.EndKey unit:=wdStory
- Selection.TypeParagraph
- Selection.TypeText (s1)
ЭЪТИБОРИНГИЗ УЧУН РАҲМАТ !