Изучаем язык BASIC. Занятие 25 Цикл DO…LOOP

Раздел Информатика
Класс -
Тип Конспекты
Автор
Дата
Формат doc
Изображения Нет
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Занятие 25

Цикл DO…LOOP

Цикл DOLOOP позволяет организовывать циклы как с предусловием, так и постусловием, завершать цикл при истинности или ложности условия. Этот цикл выполняет блок оператора, пока условие верно (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

  1. A$=A$ + "‗" прибавляем один пробел, чтобы выделить последнее слово.

  2. K = 1 необходимо задать этот параметр для считывания первого слова с первой позиции.

  3. L = LEN(A$) записываем в переменную L длину предложения

  4. DO цикл начинающийся с постусловием

  5. N = INSTR (K,A$,"‗") определяем пробел с К позиции, т.е. начинаем искать первый пробел для дальнейшего выделения слова.

  6. S = S + 1 счетчик количества слов в предложении

  7. SL$(S) = MID$(A$, K, N-K) занесение слов в массив слов, начиная с К позиции, длиной N - K.

  8. SK(S)=LEN(SL$(S)) занесение в числовой массив длины соответствующего слова

  9. K = N + 1 определение К позиции для считывания следующего слова, т.к. N номер пробела, то следующее слово будет начинаться с позиции K = N + 1

  10. 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


© 2010-2022