Если вдохновенный
невинный
любящий
витающий в облаках
мечтатель
верует во Вселенную радости,
и света, и совершенного бытия
и если он ошибается
и умирает,
то заблуждается не он,
а Вселенная.

Категории каталога

Форма входа

Приветствую Вас Гость!

Логин:
Пароль:

Поиск

Мини-чат

Наш опрос

Как часто вы замечаете нечто необычное?
Всего ответов: 41

Статистика


В сети всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Уроки » Visual Basic .NET

Урок 4. Циклы, основные математические операторы и переменные
Для начала расскажу в общих чертах о сути циклов. Циклы используются для повторов определённого участка программного кода. В 3-ем уроке мы при помощи меток создавали уже нечто подобное циклу, но это далеко не единственный вариант работы с циклами.
Основные циклы, это безусловные циклы, циклы с условием(предусловием, постусловием и выходом из середины) и циклы со счётчиком.
Попробую ка я не разъяснять каждый случай в отдельности, как это было в 3-ем уроке, а объясню вам ключевые моменты, если они будут непонятны, то думаю до конца разберётесь при написании программы.

Циклы с условием и безусловные начинаются с ключевого слова Do и заканчиваются ключевым словом Loop. Дойдя до строки со словом Loop, программа переходит к строке со словом Do, и так до тех пор, пока не будет выполнено условие, либо пока не произойдёт выход из цикла. Эта конструкция напоминает рассмотренную в уроке 3, где можно сказать что метка(например метка K) это строка к которой переходит программа достигнув строки в которой обозначен переход к этой метке(например GoTo K). Но стоит помнить, что если программа будет повторять один и тот же отрезок бесконечное колличество раз без возможности выхода, то она зависнет. Однако конструкция Do...Loop немного сложнее чем конструкция с использованем меток, в ней имеет место пред- или постусловие. Для этого используются ключевые слова While(в данном случае цикл будет действовать до тех пор пока условие истинно) и Until(будет действовать до тех пор пока условие ложно), которые пишутся сразу после слова Do или Loop. Использование их сходно с использованием условий. Например так выглядит цикл, который будет действовать до тех пор, пока A>B:
Do While A>B
[некоторый повторяющийся текст программы]
Loop


Как только A станет меньше или равно B, программа автоматически перейдёт к концу цикла и выйдет из него. А если например написать текст While A>B после ключевого слова Loop, то тогда код используемый внутри цикла(тела цикла) пройдёт, и только дойдя до строки Loop While A>B, выйдет из цикла.
Но в некоторых ситуациях выход из цикла нужно осуществить внутри него, после его начала, но до его конца, в таких случаях используется выход из цикла: Exit Do. Дойдя до такого текста программа перейдёт к выполнению программы после строки Loop, как и в случаях с условиями, но переход будет осуществлён не с начала или конца цикла, а из любой строки. Текст Exit Do наиболее уместно применять при некотором условии(работа с условиями была рассмотрена ранее).

Циклы со счётчиком имеют совершенно иную стркутуру, он не может быть бесконечным, и повторяется указанное колличество раз, при этом меняя перечисляя значения своей переменной(как правило целочисленной, но бывают и иные ситуации). Начинается такой цикл с ключевого слова For, после которого обязательно следует указать переменную, значение которой будет перечисляться от начального до конечного значения с указанным шагом(если шаг не указывать, то он будет автоматически = 1). Ну например, создадим цикл где перечисляется переменная i от 0 до 20 с шагом 5.
For i = 0 To 20 Step 5
[Некоторый повторяющийся текст программы]
Next

Или например подобная ситуация но с шагом 1.
For i = 0 To 20
[Некоторый повторяющийся текст программы]
Next


Переменная i будет последовательно принимать значения от 0 до 20, в первой ситуации переменная будет принимать значения: 0, 5, 10, 15, 20; во второй ситуации: 0, 1, 2, 3 и т.д. до 20.
Лично для меня циклы со счётчиком видятся куда более удобными нежели цыклы с условием, но всёже в зависимости от ситуации, все виды циклов бывают полезны.

Ещё есть другая конструкция цикла со счётчиком, For Each. Возможно встретимся с ней при изучении массивов, но основную информацию я дам сейчас, если хотите можете её пропустить, но вернутся к ней после изучения массивов если хотите.
Цикл
For Each поочерёдно задаёт переменной значения из массива, при этом не суть дела какие значения содержит массив, главное чтобы он был одного типа с используемой переменной.
Например, пусть у нас будет переменная с именем i и массив с именем A, тогда цикл будет иметь следующий вид:
For Each i In A
[Некоторый повторяющийся текст программы]
Next
Число повторов будет равно колличеству значений содержащихся внутри массива. Например если массив у нас целочисленного типа, ну скажем описан так:
Dim A() As Long = {1, 5, 2, 0, 3}
то переменная i поочерёдно примет значения 1, 5, 2, 0, 3 и затем произойдёт выход из цикла.

Теперь немного расскажу о некоторых математических операторах, немного, потому что тут всё крайне просто, основные из них это всё те же знаки +(сложение), -(вычитание), *(умножение), /(деление) и ^(возведение в степень), с которыми все вы наверное уже знакомы после общения, например со стандартным калькулятором. Ну приведу один пример:
A = B * C
Тоесть переменной A присваивается значение произведения переменных B и C.

Ну и одной из базовых тем в программировании являются переменные, до сих пор мы рассматривали только логические и строковые переменные, я поначалу думал тут написать только о числовых переменных, но, их довольно много, так что думаю рассказать о всех переменных будет уместно.
Переменные бывают не только строковыми, логическими и числовыми, они могут содержать любую информацию, например изображение, время, дату... Каждая переменная имеет определённый размер, который важно учитывать. Переменные хранятся в оперативной памяти и на жестком диске, но, например при использовании переменных в оперативной памяти лучше не скупиться на размер, а следовать некоторым стандартам, которые будут зависить от компьютера. Как вам известно компьютеры имеют свою разрядность, наверное слышали 32-х разрядный(или битный) компьютер, 64-х разрядный(или битный) компьютер, или подобные термины применяются к операционном системам, и все говорят что чем выше разрядность тем лучше, тем быстрее компьютер. Так поясняю что же это обозначает. Это тот объём памяти, который может обрабатывать компьютер за один такт работы процессора.
Как вы надеюсь знаете, в одном байте содержится 8 бит, тоесть 8 двоичных значений, таким образом получается что 32-х разрядный компьютер будет за один такт работы процессора борабатывать 4 байта, а 64-х будет обрабатывать 8 байт. Так вот в чём штука с использованием переменных, если переменная имеет меньший размер чем разрядность процессора компьютера, то процессору прийдётся совершать лишнюю работу по разделению переменной, и например 32-х разрядный компьютер быстрее обработает переменную в 4 байта, чем переменную в 1 или 2 байта. На первое время, пока нам не требуется например повторять циклы по несколько миллионов раз, это не будет иметь ключевого значения, падение скорости будет незначительно, но при написании программ которые будут совершать большое колличество действий, лучше подстраиваться для ускорения работы программы.

Итак, таблица переменных:

Тип Имя Идентификатор Размер(байт) Принимаемые значения
Логический
Boolean
Отсутствует
2
True и False
Строковый
String
$
зависит от длинны переменной
Простой текст
Строковый
Char
Отсутствует1
1 Символ
Числовой
Byte
Отсутствует1
Целое число от 0 до 255
ЧисловойSByte
Отсутствует1
Целое число от -128 до 127
ЧисловойShort или Int16
Отсутствует2
Целое число от -32768 до 32767
ЧисловойInteger или Int32%
4
Целое число от -2147483648 до 2147483647
ЧисловойLong или Int64&
8
Целое число от -9223372036854775808 до 9223372036854775807
ЧисловойUShort или UInt16Отсутствует2
Целое число от 0 до 65535
ЧисловойUInteger или UInt32Отсутствует4
Целое число от 0 до 4294967295
ЧисловойULong или UInt64Отсутствует8
Целое число от 0 до 18446744073709551615
Временной
Date или DateTime
Отсутствует8Дата/время от 01.01.0001/0:00:00 до
31.12.9999/23:59:59
ОбщийObjectОтсутствуетЗависит от вводимых данных
Любое значение записываемое в переменную любого из существующих типов данных
ЧисловойSingle!4Дробное число с плавающей точкой с уровнем точности от -3.40282347E+38 до 3.40282347E+38
ЧисловойDouble#
8Дробное число с плавающей точкой с уровнем точности от 1.7976931348623157E+308 до 1.7976931348623157E+308
ЧисловойDecimal@
8Дробное число от  -79228162514264337593543950335 до 79228162514264337593543950335
с точностью до 14 знаков после точки
Информация взята из браузера объектов VB.NET 2005


Теперь рассмотрим простой пример программы с использованием математических операторов и числовых переменных.

Ну, для начала думаю ничего сложного двух целых чисел, сделаем программу которая будет складывать два значения и выводить результат, затем после нажатия клавиши Enter будет завершаться:
Module Module1
    Sub Main()
        Dim A, B, C As Long
        Console.Write("А = ")
        A = Console.ReadLine()
        Console.Write("B = ")
        B = Console.ReadLine()
        C = A + B
        Console.WriteLine("A + B = " & C)
        Console.ReadLine()
    End Sub
End Module



Как видите всё довольно просто.
Теперь напишем программу посложнее, например программу вычисляющую ряд чисел фибоначчи(Если не знаете что это такте, смотрите тут: http://ru.wikipedia.org/wiki/Числа_Фибоначчи ), для этого как раз требуется применение цикла:
Module Module1
    Sub Main()
        Dim i, A, B, C As Long
        A = 1
        For i = 1 To 20
            C = A + B
            A = B
            B = C
            Console.Write(A & " ")
        Next
        Console.ReadLine()
    End Sub
End Module



Ну и в качестве последнего примера рассмотрим работу цикла с предусловием, например с теми же числами фибаначи, но в данном случае у нас будет выводиться не указанное колличество чисел(в предыдушем примере как видите 20), а до тех пор пока не окажется больше, например числа 1000.
Module Module1
    Sub Main()
        Dim i, A, B, C As Long
        A = 1
        Do
            C = A + B
            A = B
            B = C
            Console.Write(A & " ")
        Loop Until A > 1000
        Console.ReadLine()
    End Sub
End Module



Как видите, сразу после того как выводится число значением больше чем 1000, цикл прерывается.
Категория: Visual Basic .NET | Добавил: Electron (24.03.2009)
Просмотров: 1378 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]