- Преподавателю
- Информатика
- Изучаем язык BASIC. Занятие 25 Цикл DO…LOOP
Изучаем язык BASIC. Занятие 25 Цикл DO…LOOP
Раздел | Информатика |
Класс | - |
Тип | Конспекты |
Автор | Гегелашвили Т.П. |
Дата | 13.08.2015 |
Формат | doc |
Изображения | Нет |
Занятие 25
Цикл DO…LOOP
Цикл DO…LOOP позволяет организовывать циклы как с предусловием, так и постусловием, завершать цикл при истинности или ложности условия. Этот цикл выполняет блок оператора, пока условие верно (WHILE) или до тех пор, пока не станет верным (UNTIL).
С предусловием DO [{WHILE/UNTIL} условие]
Тело цикла
LOOP
C постусловием DO
Тело цикла
LOOP[{WHILE/UNTIL} условие]
Выделение слов из предложения и подсчет их длин
CLS
INPUT A$
A$=A$ + "‗"
K = 1 : S=0
L = LEN(A$)
DO
N = INSTR (K,A$,"‗")
S = S + 1
SL$(S) = MID$(A$, K, N-K)
SK(S)=LEN(SL$(S))
K = N + 1
LOOP WHILE N <> L
-
A$=A$ + "‗" прибавляем один пробел, чтобы выделить последнее слово.
-
K = 1 необходимо задать этот параметр для считывания первого слова с первой позиции.
-
L = LEN(A$) записываем в переменную L длину предложения
-
DO цикл начинающийся с постусловием
-
N = INSTR (K,A$,"‗") определяем пробел с К позиции, т.е. начинаем искать первый пробел для дальнейшего выделения слова.
-
S = S + 1 счетчик количества слов в предложении
-
SL$(S) = MID$(A$, K, N-K) занесение слов в массив слов, начиная с К позиции, длиной N - K.
-
SK(S)=LEN(SL$(S)) занесение в числовой массив длины соответствующего слова
-
K = N + 1 определение К позиции для считывания следующего слова, т.к. N номер пробела, то следующее слово будет начинаться с позиции K = N + 1
-
LOOP WHILE N <> L - закрываем цикл по условию, т.е. когда N = L выходит из цикла, цикл будет выполняться до тех пор пока N < > L
Распечатать слова четной длины
Ввод
FOR I = 1 TO S
IF SK(I)/2<>SK(I)\2 THEN PRINT SL$(I); "‗";
NEXT I
Распечатать слова длиной больше 3, но меньше 10
Ввод
FOR I = 1 TO S
IF SK(I) > 3 AND SK(I)< 10 THEN PRINT SL$(I); "‗";
NEXT I
Найти самое длинное слово и распечатать его.
Ввод
max = -1000
FOR I = 1 TO S
IF SK(I) > max THEN max = SK(I) : D = I
NEXT I
PRINT SL$(D)
Найти самое короткое слово и распечатать его.
Ввод
min = 1000
FOR I = 1 TO S
IF SK(I) < min THEN min = SK(I) : D = I
NEXT I
PRINT SL$(D)
Найти самое длинное слово и распечатать его зеркально.
Ввод
max = -1000
FOR I = 1 TO S
IF SK(I) > max THEN max = SK(I) : D = I
NEXT I
PRINT SL$(D)
FOR J = SK(D) TO 1 STEP -1
PRINT MID$(SL$(D),J,1);
NEXT J
Определить является ли заданное слово палиндромом или нет
CLS
INPUT A$
FOR I = 1 TO LEN(A$) \ 2
IF MID$(A$,I,1) = MID$(A$, LEN(A$) - I + 1,1) THEN d = d + 1
NEXT I
IF d = LEN(A$) \ 2 THEN PRINT "yes" ELSE PRINT "no"
Найти самое длинное слово и проверить является ли оно палиндромом или нет
Ввод
max = -1000
FOR I = 1 TO S
IF SK(I) > max THEN max = SK(I) : D = I
NEXT I
PRINT SL$(D)
FOR I = 1 TO SK(D)\ 2
IF MID$(SL$(D)I,1) = MID$(SL$(D), SK(d) - I + 1,1) THEN m = m + 1
NEXT I
IF m = LEN(SK(D) \ 2 THEN PRINT "yes" ELSE PRINT "no"
Домашнее задание
Создать одномерный массив из слов заданного предложения так, что слова располагаются в обратном порядке, т.е. сначала последнее, потом предпоследнее и т.д.
Ввод
FOR I = S TO 1 STEP -1
B$(I) = SL$(S - I + 1)
NEXT I
FOR I=1 TO S
PRINT B$(I); "‗";
NEXT I
В заданном предложении перевернуть все слова, в которых есть буква b в обратном порядке.
Ввод
FOR I = 1 TO S
W = 0
FOR J=1 TO SK(I)
IF MID$(SL$(I),J,1)="B" THEN W = 1
NEXT J
IF W = 1 THEN
FOR J = SK(I) TO 1 STEP -1
PRINT MID$(SL$(I),J,1);
NEXT J
PRINT "‗";
ENDIF
NEXT I
Распечатать все слова предложения четной длины, расположенных после слова с наибольшим количеством символов, предполагается, что слово с максимальной длинной единственное.
Ввод
max = -1000
FOR I = 1 TO S
IF SK(I)>max THEN max = SK(I): d =I
NEXT I
FOR I = d + 1 TO S
IF SK(I)/2 = SK(I)\2 THEN PRINT SL$(I); "‗";
NEXT I