- •Bведение
- •1. Основы языка Basic
- •1.1. Основные структуры
- •1.2. Операторы ввода, вывода, позиционирования
- •1.3. Числа
- •1.4. Строки
- •1.5. Операторы def, dim, пользовательский тип
- •1.6. Разветвление и альтернатива
- •1.7. Циклы
- •If k then print "пароль принят" else print "ошибка пароля"
- •Input "Введите произвольный текст : ", txt
- •Input X
- •1.8. Программные стэки
- •1.9. Массивы
- •If I and jb then
- •Input n
- •1.10. Функции, подпрограммы
- •1.11. Файлы
- •1.12. Сегментирование программы
- •Input n
- •1.13. Работа с графической информацией
- •If nu then gosub Move 'перемещение рисунка
- •1.14. Звуковое воспроизведение
- •2. Элементы vba
- •2.1. Типы переменных
- •2.2. Использование массивов
- •2.3. Разветвление и циклы
- •2.4. Работа с ячейками листа
- •If y X Then
- •If Check Then
- •2.5. Элементы управления
- •If X 0 Then
- •2.6. Пользовательские классы
- •If IsEmpty(Text2) Then Exit Sub
- •2.7. Построение графиков в excel
- •2.8. Построение графиков и таблиц в word
- •3. Ключи в word
- •4. Гипертекстовая разметка
- •4.1. Основные тэги html
- •4.2. Форматирование таблиц
- •4.3. Фреймы
- •5. Основы программирования в среде MathCad
- •5.1. Особенности языка MathCad
- •5.2. Некоторые вычислительные модели
- •5.2.1. Системы уравнений
- •5.2.1.1. Системы линейных уравнений
- •Iter(a, b, e) n Last (b)
- •5.2.1.2. Нелинейные уравнения и системы
- •5.2.2. Определенный интеграл
- •5.2.3. Функции на дискретном множестве
- •5.2.4. Обыкновенные дифференциальные уравнения
- •5.2.5. Минимизация функций
- •5.2.5.1. Функции одной переменной
- •5.2.5.2. Функции многих переменных
- •5.2.6. Pазностная модель и прогноз
- •1 Otherwise (коэффициенты непрерывной модели)
- •5.2.7. Сглаживание и осреднение рядов
- •Задания
- •Литература
1.7. Циклы
Ц икл
Заголовок цикла и конец цикла образуют своеобразные "операторные
скобки", которые, собственно, и определяют тип цикла.
а) Безусловный цикл: заголовок
конец
b) Цикл пересчета имеет сложный заголовок:
[ ]
конец
c) Цикл с предусловием
заголовок |
while ‹ усл. › |
do while ‹ усл. › |
do |
конец |
Wend |
loop |
loop while ‹ усл. › |
d) Цикл с постусловием
-
заголовок
do until ‹ усл. ›
Do
конец
loop
loop until ‹ усл. ›
Выход из цикла можно осуществить с помощью оператора EXIT
с указателем типа цикла, т.е. EXIT DO или EXIT FOR.
Циклы помогают организовать паузы, например:
FOR i = 0 TO n : NEXT или
WHILE INKEY$ = "" : WEND (пауза пока не нажата любая
клавиша). Аналогично можно организовать при необходимости опрос
клавиатуры (см. примеры ниже).
Пример 1. Найдем наименьшее натуральное число, синус которо-го по абсолютной величине не превосходит 0.001:
DEF INT I : DEFSNG E, S
i = 0 : eps = 0.001 : s = 1
WHILE s => eps
i = i + 1 : s = ABS(sin(i))
WEND : PRINT "i = " ; i ; "; sin(i) = " ; sin(i)
Пример 2. Пусть введено произвольное положительное число . По опросу клавиатуры следует либо сгенерировать случайное число из промежутка (-5, 5), либо прекратить работу программы. Работа должна прекратиться и в том случае, когда сумма случайных чисел превзойдет
число . Задачу можно решить с помощью кода:
DEFSNG M-S
DEFSTR T 'предопределение типов
RANDOMIZE TIMER
INPUT "Введите число mu ", mu: sum = 0
DO: t = "": WHILE t = "": t = INKEY$: WEND 'опрос клавиатуры
IF ASC(t) = 27 THEN 'выход (Esc)
PRINT "Работа закончена": END
END IF
sum = sum + 10 * RND – 5
IF sum > mu THEN
PRINT "Перебор": END
LOOP
Циклы удобно использовать при анализе текстовой информа-ции (см. примеры 3 - 5 ).
Пример 3. Составить программу, определяющую по опросу кла-виатуры, есть ли в скрытом тексте символ, соответствующий нажатой клавише. Здесь полезно использовать некоторые коды служебных
клавиш, как, например, 13 – код "Enter", 27 – код "Escape" и др.
DEFSTR S-T 'предопределение типов
txt = " … ": st = UCASE$(txt) 'верхний регистр
s = "": WHILE s = "": s = INKEY$: WEND 'опрос клавиатуры
IF ASC(s) = 27 THEN END 'выход по ESC
IF INSTR(1, st, UCASE$(s)) = 0 THEN PRINT "символа нет" ELSE PRINT "есть"
Аналогично, если необходимо опознать пароль, то код можно ор-
ганизовать следующим образом (parole – переменная, содержащая
скрытый текст):
DEFSTR S-T
DEFINT J-K 'предопределение типов
j = 0: k = 1 'признак совпадения пароля
DO: s = "": WHILE s = "": s = INKEY$: WEND 'опрос клавиатуры
IF ASC(s) = 27 OR ASC(s) = 13 THEN EXIT DO 'выход из цикла
j = j + 1: PRINT "*";
IF s <> MID$(parole, j, 1) THEN k = 0 'проверка символа
LOOP : if LEN(parole) <> j THEN k = 0