Довольно часто условие продолжения цикла зависит от результатов, полученных в теле цикла. Следующая конструкция используется в VB.NET для построения цикла с неопределенным условием, тело которого выполняется минимум один раз (завершающая проверка):
Do
' Команды VB.NET (0 и более)
Until условие_выполняется
Конечно, условие не ограничивается простой проверкой равенства. В вашем распоряжении операторы сравнения, перечисленные в табл.4.1
Таблица 4.1 Операторы сравнения
Символ Проверяемое условие
<> Не равно
< Меньше
<= Меньше или равно
> Больше
>= Больше или равно
Строковые операнды по умолчанию сравниваются в соответствии с порядком символов Unicode. Таким образом, «А» предшествует «В», но «В» предшествует «а» (а пробел предшествует любому печатному символу). Строка «aBCD» предшествует строке «CDE» (то есть считается «меньше» ее), поскольку прописные буквы в кодировке стоят раньше строчных.
Вы можете игнорировать регистр символов во всех сравнениях модуля или формы; для этого в начало модуля или формы включается команда Option Compare Text. Команда Option Compare Binary возвращается к стандартному сравнению строк в соответствии с положением символов в кодировке ANSI. При активном режиме Option Compare Text используется порядок символов для страны, указанной при установке системы Windows.
Ключевое слово Unti1 можно заменить ключевым словом While (при этом следует заменить условие на противоположное). Например, фрагмент
Do
' Команды VB.NET (0 и более)
Loop Until X <> String.Empty
эквивалентен следующему фрагменту:
Do
' Команды VB.NET (0 и более)
Loop While X = String.Empty
Обратите внимание на использование константы String.Empty вместо пустой строки "", менее наглядной и чаще приводящей к ошибкам. Если переместить ключевое слово Whi1е или Unti1 в секцию Do, проверка будет выполняться в начале цикла (и при ложном условии цикл не будет выполнен ни одного раза). Пример:
Do While Text1.Text <> String.Empty
' Обработать непустой текст
Loop
Условия объединяются при помощи операторов Or, Not и And. Пример:
Do While count < 20 And savings < 1000000
Цикл For-Each
Содержимое массива часто перебирается в цикле от 0 до UBound(массив), однако вы также можете воспользоваться конструкцией For-Each. Синтаксис For-Each выглядит следующим образом:
For Each переменная In массив
[команды]
[Exit For при необходимости]
[команды] Next
Конструкция For-Each универсальна и может использоваться в тех случаях, когда структура данных поддерживает итеративный перебор элементов. Microsoft утверждает, что применение For-Each не будет приводить к существенному снижению быстродействия по сравнению с For-Next.
Пример цикла, обрабатывающего массив строк
Dim people={“Tom”,”Ivan”,”Dona”}
Dim person As String
For Each person In people
Console.WriteLine(person)
Next
Варианты заданий для выполнения работы
1. Дано натуральное n. Написать программу вычисления а^n.
2. Дано натуральное n. Написать программу вычисления значений
1 1 1
+ +...+ , n>=2
1*2 2*3 (n-1)*n
3. Дано натуральное n. Написать программу вычисления значений
(n-1)
1 (-1)
1- +...+
2 n
4. Дано натуральное n. Написать программу вычисления значений
1 1 1
1+ * 1 + *...* 1+
1^2 2^2 n^2
5. Дано число А. Написать программу получения в порядке убывания всех делителей данного числа.
6. Обозначим
1 1 1
f = + +...+ , i=0,1,...
i i^2+1 i^2+2 i^2+i+1
Написать программу вычисления произведения
f * f *...* f. n - дано.
0 1 n
7. Объем V - цилиндрической подковы вычисляется по формуле
h u(n)
V= [a(3r^2 - a^2) + 3r^2*(b-r) ].
3b 180
Составить алгоритм для построения графика зависимости V от угла u,если a,b и r известны, а u изменяется в диапазоне от u(1) до u(2) с шагом /\ u.
8. Составить алгоритм для расчета функции
0,95*(sin(x))^3
y =
1+0,95*x^2
при изменении x от 0 до 12 с шагом /\х=0.2.
9. Самолет летит из пункта А к пункту В со средней скоростью v. Составить алгоритм для нахождения времени полета t(1), если есть встречный ветер, скорость которого v(1), и времени t(2), если ветра нет. Расстояние между пунктами А и В считать известным и равным S. Скорость ветра v(1) может изменяться от 0 до 15 м/с. Считать шаг изменения /\v(1) =0.5 м/с.
10. Цех вводится в строй постепенно, выдавая в первый день х(1)% продукции от нормы, во второй - х(2)%, в третий -x(3)%,..., в n-й день - х(n)%. Составить алгоритм для расчета продукции S за n дней, если в первый день цех выдал А [т] продукции.
11. Составить алгоритм для расчета функции y при значениях х=0; 0.1; 0.2;...;10.
x-1
, если x<=1
y = 2*x^2+3
1.05*(x-1)^2, если x>1.
12. Дана функция y=0.5+sin(5x), причем х изменяется от 0 до 2п с шагом /\х=п/6.
13. Составить алгоритм для вычисления функции
1
===, если 0<y<1.36; /\y=0.136;
\/1+y
z = 0 , если y=0;
1
====, если -1.5<y<0; /\y=0.15.
\/1-2y
14. Постоянная времени Т электрической цепи равна Т=RC, где R и С - соответственно сопротивление и емкость цепи. Составить алгоритм решения задачи при условии, что R изменяется от 10^2 Ом до R(0)=10^3 Ом с шагом /\R=10^2 Ом.
15. Кинетическая энергия движущегося тела W(k)=m*v^2/2, где m - масса тела, v - его скорость. Составить алгоритм для получения зависимости W(k) от m при значенияхv, изменяющихся от v(1) до v(2) с шагом /\v. Масса изменяется от m(1) до m(2) с шагом /\m.
16. Дана функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17 а k=1,2,3,...,12.
17. Составить алгоритм для нахождения итерационным методом с точностью до е корня уравнения 2*x-3*sin(x)=0.
18. Дана функция y=-2*x^2+3*x+1.5. Составить алгоритм для поиска максимального значения y если х изменяется в диапазоне 0.1<=х<=1 с шагом /\х=0.01.
19. Слесарь-сантехник начинает работу в 8 ч. и заканчивает в 17 ч., делая перерыв на обед с 12 до 13 ч. Через каждые 30 мин работы он устраняет течь в кранах водопроводной системы одной из квартир жилого дома. Составить алгоритм для вычисления количества воды Q, которое вытечет из неисправных кранов за рабочий день слесаря - сантехника, если утечка воды в одной квартире составляет Q(1) [л/мин].
20. Даны функции y(1)=x^3 и y(2)=sin(x).Составить алгоритм для вычисления точки пересечения этих функций при х>0. Вычисления производить с точностью до е.
21. Даны целые числа n и K[n]. Получить сумму S последних цифр чисел K[n].
22. Дано целое число K. Найти знакочередующуюся сумму цифр числа К. (Пусть запись К в десятичной системе есть a[n]...a[2] a[1] a[0];найти a[0]+a[1]+a[2]+...+a[n]).
23. Даны действительные числа a,h, целое n. Вичислить:
f(a) + f(a+h)+f(a+2h)+...+ f(a+nh), где f(x)=(x^2+ 1)/x.
24. Даны целое n, действительное x. Вычислить:
Y=sinx+sin^2x+...+sin^2x.
25. Дано целое n. Чему равна сумма его цифр?
26. Дано целое число n. Найти первую цифру числа n.
27. Дано целое K. Сколько цифр в числе К?
28. Дано вещественное x. Вычислить:
s=(x-2)+(x-4)+(x-8)+...+(x-64);
p=(x-1)*(x-3)*(x-7)...(x-63).
29. Даны действительные числа x, a, целое число i. Вычислить:
((...((x+a)^2 +a)^2 +...+a)^2 +a)^2 +a, (0<a<_91_0).
30. Дано вещественное число x. Вычислить:
x-x^3/3!+ x^5/5!-x^7/7!+x^9/9!-x^11/11!+x^13/13!