Уроци, уроци, наръчници от цял свят! Преглед на тема - Visual Basic - масиви, записи и
В този форум ще има огромен брой уроци и уроци, направете малък принос и публикувайте поне един урок.Текущ час: 21-04, 04:33 |
Часова зона: UTC + 3 часа
Visual Basic - масиви, записи и енуми
Страница1 от1 | [ 1 публикация ] |
печатна версия | Предишен тема Следваща предмет |
турбо дизел |

В предишния урок обсъдихме с вас толкова важно нещо като променливите. Променливите са части от паметта, където се съхраняват данни. Това означава, че ако използваме променливите ефективно, ние използваме ефективно паметта. И ако използваме паметта ефективно, тогава приложението се нуждае от по-малко памет и приложението работи по-бързо. И така, за да се използват тези данни с максимална ефективност и в същото време с лекота, бяха измислени „масиви“ (Arrays), „записи“ (Types) и „изброявания“ (Enums).
Масиви
Те се наричат още списъци. И така, какво представляват масивите? Масив (вектор) е набор от променливи от един и същи тип, обединени от едно име и достъпни чрез това име и поредния номер на променливата в набора. Броят на елементите на масива теоретично може да бъде безкраен, ограниченията се налагат от конкретен език за програмиране и операционна система. Елементите на масива имат непрекъсната номерация на определендиапазон.
Масивите се използват доста често в програмирането. Например, трябва да заредите съдържанието на файл в програмата. Ако този файл е низов файл, тогава можете да използвате низ и да правите без масив. Но ако файлът е двоичен (двоичен), тогава просто не можете без масив!
Във Visual Basic масивите се дефинират както следва:
Както може би сте забелязали, дефиницията на масив се различава от дефиницията на обикновена променлива само по индекса, посочен в скоби. Този индекс показва размера на масива. В този случай масивът myArray ще съдържа 11 елемента. Защо 11? Тъй като долната граница на масива започва от нула. [0,1,2. 9,10]. За да зададете конкретно измерение, можете да използвате запазената дума До:
Тук е дефиниран масив, чиято размерност е 6 елемента (5,6,7,8,9,10).
Общият синтаксис за дефиниране на масив е както следва:
Многомерни масиви
Масивите могат да бъдат направени многоизмерни. Например, нека декларираме масив - таблица от поле на шахматна дъска:
Този масив е таблица с осем клетки вертикално и хоризонтално.
Така че масивът е дефиниран. Сега трябва да разберете как можете да стигнете до елементите на този масив. Много просто! Елементите на масива трябва да бъдат достъпни чрез индекс, например, за да промените нулевия елемент на масива myArray, трябва да напишете:
Променливи масиви (динамични)
Динамичните масиви са такива масиви, чието измерение може да се променя в хода на програмата. Може би динамичните масиви се използват дори по-често от статичните. Помислете за типичен пример за използване на такъв масив. Да кажем, че имаме процедура, която зарежда съдържанието на двоичен файл в масив. Можем да дефинираме масивТака:
Но това е, ако файлът е с дължина 120 байта. Но какво ще стане, ако не знаем дължината на качения файл? Дефинирайте много голям масив, така че голям файл със сигурност да се побере там? Не. Не можеш да направиш това. Това е мястото, където трябва да използвате динамичен масив.
Visual Basic предоставя някои доста мощни инструменти за работа с такива масиви. Такъв масив се дефинира, както следва:
Сега масивът myArray има едно измерение с индекси от 0 до 4 (т.е. общо 5 елемента). Сега такъв масив може да бъде достъпен по същия начин като статичен. Ако в бъдеще се наложи отново да промените размерността на масива, можете да използвате ReDim отново.
Но! Тук има подводен камък! Нека да разгледаме малък пример:
Dim myLong As Long Dim myArray() As Long ' декларира масив
ReDim myArray (2) ' едно измерение [0,1,2] myArray (1) = 234 ' присвояване на втория елемент на номер 234 myLong = myArray (1) ' съхранява го в променливата myLong
ReDim myArray (3) ' променете измерението отново - сега [0,1,2,3] myLong = myArray (1) ' опитайте да съхраните втория елемент отново
На последния ред myLong ще бъде зададен на 0 вместо на 234! Това се случва, защото операторът ReDim реинициализира (нулира) всички елементи на масива до стойността по подразбиране (не забравяйте, че за числа е 0, за низове ""). Но какво ще стане, ако искаме да променим размера на масива, като запазим всички стари елементи? За да направите това, трябва да поставите думата Preserve след командата ReDim. така:
Сега всичко е наред.
Полезни съвети за работа с масиви във VB
Масивите могат да се съхраняват в променливи от тип Variant. Понякога това е удобно. В някои случаи без него е лесноне достатъчно! (Например, когато искате вашата функция да върне масив). За да съхраните масив в променлива от тип Variant, трябва само да присвоите желания масив на тази променлива:
Моля, обърнете внимание, че не е необходимо да посочвате никакви индекси!
Сега можете да използвате копието като нормален масив:
Тези, които са програмирали на други езици за програмиране (като C и Pascal), вероятно са се сблъскали с концепцията за структура (C) и запис (Record in Pascal). Във Visual Basic еквивалентът на структура е запис. Записът е нов, дефиниран от програмист тип данни, който се състои от една или повече променливи вътре. Нека да разгледаме това с пример. Например, необходимо е да се съхранява масив от студенти в програмата. Освен това всеки студент има свои собствени характеристики: пълно име, възраст, липса на диплома. Разбира се, за да съхранявате такива данни, можете да използвате например масив, който има две измерения. Но това не е най-добрият вариант. Тук записите са най-добрите! Тогава ще може да се направи масив от записа! За да дефинирате запис в програма, трябва да използвате запазената дума Type. Записът завършва с думите End
Private Type Student ' вместо Private може да е Public  FIO As String  Age As Byte  HasGramot As Boolean End Type
Имайте предвид, че Dim не е необходимо да предхожда името на променливата. И така, дефинирахме запис в програмата. Вече можете да декларирате променливи от тип - Student (т.е. нашият нов запис). Например:
Думата Student няма да бъде маркирана в синьо, т.к само запазени думи, вградени във Visual Basic, имат синя светлина
Сега полетата на записа могат да бъдат достъпни с помощта на точка:
Всичко е като в Паскал. (добре, почти като в C).
Visual Basicпредоставя възможност да не се указва името на променлива тип запис всеки път при достъп до нейните елементи. Това е особено полезно, когато записът има много вътрешни членове. Има дума за това:
Време е да декларираме масив от елементи от типа запис (по-точно тип Студент):
Тук сме декларирали масив от 21 студента. Сега имаме достъп до елементите на масива по същия начин, както правехме преди:
Както можете да видите, всичко гениално е просто! Особено във Visual Basic!
Изброявания
Изброяването също е доста важно и необходимо нещо. По принцип вече сте ги срещали. Където? И помните ли какво се случи, когато поставите знак за равенство срещу булевата променлива? Точно така, Visual Basic ви даде списък от две стойности, от които да избирате - True и False. Това е изброяването. С други думи, enum е списък от константи. Преди да използвате такъв списък, той трябва да бъде дефиниран в програмата. Например, помислете за изброяване на оценките, получени от учениците:
Не е необходимо да се присвояват стойности на константи вътре в Enum. Ако това не е направено, тогава константите ще приемат стойности 0,1,2. и т.н.
Сега можем да декларираме променлива от тип Ocenka:
И ако сега се опитате да присвоите стойност на такава променлива, Visual Basic ще върне списък (Neud, Horosho и Отлично), от който можете да изберете желаната стойност. Също така тези константи могат да се използват например при проверка на условия, т.е. Ако oc1 = Добре, тогава. Но повече за условията по-късно.
За да затвърдим наученото, нека предефинираме нашия запис за ученик към този:
Сега, за да поставите оценка 5 по математически анализ на ученик номер 3, трябва да напишете:
Забележка: Тези, които са програмирали на Pascal, помнят комплекти. И така, ето гоМога да ги разстроя, във Visual Basic няма набори. Но по принцип никой не ви пречи да ги внедрите сами, като напишете съответните функции.
Страница1 от1 | [ 1 публикация ] |
Часова зона: UTC + 3 часа
Кой е на конференцията в момента
Потребители, разглеждащи този форум: няма регистрирани потребители и гости: 0