Автор работы: Пользователь скрыл имя, 14 Ноября 2010 в 08:37, Не определен
Лекции
Этот цикл отличается от предыдущего только тем, что он выполняется до тех пор пока условие не истинно (т.е. совсем наоборот).
Пример: Вывести все натуральные числа меньше данного.
REM Вывод всех чисел меньше
данного
a=0
chislo=10
DO WHILE a<chislo
PRINT a
a=a+1
LOOP
END
Стоит обратить внимание на то, что цикл может быть не выполнен ни разу (если условие первоначально не истинно, например, a=5, а chislo=4). И наоборот, если условие будет истинно при любых значениях переменный, то цикл будет выполнятся бесконечное число раз (произойдет зацикливание).
Пример цикла, который будет выполнятся бесконечное число раз:
REM зацикливание
DO WHILE a=a
PRINT "Это сообщение будет выводится
на экран постоянно"
LOOP
PRINT "А это сообщение вы не увидите никогда"
END
Вам надо поточить все карандаши в коробке. Вы точите один карандаш и откладываете его в сторону. Затем проверяете, остались ли карандаши в коробке. Если условие ложно, то снова выполняется действие 'заточить карандаш'. Как только условие становится истинным, то цикл прекращается.
Циклы такого вида называют - циклы с постусловием.
На языке Basic они записываются следующим образом:
DO
Тело цикла
LOOP WHILE условие
DO
Тело цикла
LOOP UNTIL условие
Циклы такого рода отличаются
тем, что хоть один раз, но тело цикла
будет выполнено вне
Пример: Вычислите сумму цифр в числе.
REM Сумма цифр числа
DIM a, chislo, s AS INTEGER
INPUT "Введите число: ", chislo
a=chislo
DO
s=s+a MOD 10
a=a/10
a=INT(a)
LOOP UNTIL a=0
PRINT "Сумма цифр числа ",chislo ," равна:
", s
END
Переменную s используем для хранения суммы цифр. До начала цикла в переменную a заносим значение переменной chislo. Все дальнейшие преобразования осуществляем с переменной а. В цикле берем остаток от деления на 10 (последняя цифра числа) и прибавляем к тому, что уже есть в переменной s; делим значение переменной а на 10, берем целую часть (т.е. отбрасываем последнюю цифру числа) и заносим в а. Цикл продолжается до тех пор пока значение переменной а не окажется равным нулю (перебрали все цифры числа). Результат выводим на экран.
Учимся программировать!
Конспекты школьника.
При работе с большим числом данных одного типа очень удобно использовать массивы.
Итак, что же такое
массивы...
Массив, это разновидность переменной.
Он дает возможность хранить сколько угодно
значений под одним и тем же именем. К каждому
конкретному значению массива, необходимо
обращаться через числовой индекс.
Массив - это набор переменных, имеющих одинаковое имя (идентификатор), но различающихся порядковыми номерами (индексами).
Обычно массивы
применяют для группировки
Отсчет элементов массива во многих языках начинается с нуля. Поэтому имя первого (по классному журналу) ученика будет храниться в переменной name(0), второго - в переменной name(1), а последнего (тридцатого) - в переменной name(29).
Для того чтобы использовать массив его надо сначала объявить в программе. Для этого используют оператор DIM. По умолчанию (если нет оператора DIM в программе) считается заданным массив из 10 элементов.
Пример:
DIM a(100) AS INTEGER
Это массив из ста элементов, каждый из
которых может быть целым числом.
DIM name(30) AS STRING
DIM mas(20)
Это массив из 20 элементов, тип переменных
явно не указан.
DIM mas1(10) AS INTEGER
mas1
| |||||||||||
|
Обращение к элементам массива:
a(24)
name(5)
mas(2)
mas(3)
Основное преимущество массивов перед обычным набором разноименных переменных состоит в том. что индекс нужного элемента можно записывать не числом, а переменной или даже вычислять по выражению. Это дает возможность использовать массивы внутри циклов - собственно для этого они и были придуманы. Если в программе есть массив, то, скорее всего, в ней же вы найдете и цикл.
Можно также объявить массив и таким образом:
DIM mas2(1 TO 10) AS INTEGER
mas2
| |||||||||||
|
или даже так:
DIM a2(5 TO 10) AS INTEGER
В чем отличие? В том что данном случае индексация элементов массива начинается не с нуля, а с нужного вам индекса (в примере массив mаs2 имеет индексы от 1 до 10, массив а2 - от 5 до 10).
Допустим в классе 30 учеников. Предположим, что для хранения их оценок по предмету создан массив DIM mark(30) AS INTEGER. Следующая программа, поставит каждому учащемуся случайную оценку от 3 до 5. Конечно, так расставлять оценки нельзя, но этот пример показывает, что программа не становиться сложнее, если в классе не 30 учеников, а сто пятьдесят миллионов. Сочетание массивов и циклов позволяет достичь удивительной простоты.
REM Выставление оценок
:)
DIM mark(30) AS INTEGER
FOR I=0 TO 29
mark(I)=3+INT(RND*3)
NEXT
END
mark
| |||||||||||
|
Для создания случайных чисел в языке Basic служит стандартная функция RND. Она создает случайное число в диапазоне от 0 до 1. Умножив его на 3, мы получаем случайное число от 0 до 3. А взяв от него целую часть (с помощью функции INT), получим целое случайное число в диапазоне от 0 до 2. Прибавив к нему число 3, мы поучаем случайную оценку, которая не меньше 3 и не больше 5.
Пример: Составить программу заполнения массива из 15 элементов случайными числами в диапазоне от 1 до 10. Предусмотреть вывод массива на экран.
REM Заполнение и вывод
массива
DIM mas(15) AS INTEGER
FOR I=0 TO 14
mas(I)=1+INT(RND*10)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO 14
PRINT mas(I);
NEXT
END
CLS - очистка экрана. Точка с запятой (;) в операторе PRINT позволяет выводить элементы массива в строку.
Тоже самое задание, но отличающиеся объявлением массива:
REM Заполнение и вывод
массива
DIM mas(1 TO 15) AS INTEGER
FOR I=1 TO 15
mas(I)=1+INT(RND*10)
NEXT
CLS
PRINT "Вывод массива"
FOR I=1 TO 15
PRINT mas(I);
NEXT
END
Всё очень просто. Какой из вариантов использовать решать вам.
Пример: Вывести количество
отрицательных элементов
REM Вывести количество
отрицательных элементов
INPUT "Введите число элементов массива",
n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
INPUT "Введите элемент массива", mas(I)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
FOR I=0 TO n-1
IF mas(I)<0 THEN k=k+1
NEXT
PRINT
PRINT "Число отрицательных элементов:
",k
END
Подсчет количества
отрицательных элементов массива происходит
в цикле:
FOR I=0 TO n-1
IF mas(I)<0 THEN k=k+1
NEXT
Пример: Составить программу для вычисления наибольшего элемента массива и его номера.
REM вычисления наибольшего
элемента массива и его номера
INPUT "Введите число элементов массива",
n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
INPUT "Введите элемент массива", mas(I)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
max=mas(0)
nomer=1
FOR I=0 TO n-1
IF mas(I)>max THEN
max=mas(I)
nomer=I+1
END IF
NEXT
PRINT
PRINT "Максимальный элемент: ", max, "
с номером ", nomer
END
Задание выполняется
в строчках:
max=mas(0)
nomer=1
FOR I=0 TO n-1
IF mas(I)>max THEN
max=mas(I)
nomer=I+1
END IF
NEXT
Вначале примем за наибольший элемент
- первый элемент массива mas(0). Затем
перебирая все элементы по очереди сравниваем
их со значение max и если mas(I)>max,
то принимаем этот элемент за наибольший.
Пример: составить программу сортировки массива по возрастанию.
REM сортировка массива
INPUT "Введите число элементов массива",
n
DIM mas(n) AS INTEGER
FOR I=0 TO n-1
mas(I)=1+INT(RND*10)
NEXT
CLS
PRINT "Вывод массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
REM сортировка массива
FOR I=0 TO n-2
FOR J=I+1 TO n-1
IF mas(I)>mas(J) THEN
REM если нашли меньший элемент, то обменяем
их местами
a=mas(I)
mas(I)=mas(J)
mas(J)=a
END IF
NEXT J
NEXT I
REM конец сортировки массива
PRINT
PRINT "Вывод отсортированного массива"
FOR I=0 TO n-1
PRINT mas(I);
NEXT
END
Иногда для ввода
данных удобно использовать операторы
DATA и READ.
DATA указывает значения для чтения
последующими операторами READ. READ
считывает эти значения и присваивает
их переменным. RESTORE позволяет READ
заново считать значения в указанном операторе
DATA.
DATA константы
READ переменные
Пример: ввод массива с использование оператора DATA.
REM Ввод данных из DATA
DIM mas(5) AS INTEGER
DATA 2, -4, 1, 5, 9
REM ввод массива
FOR I=0 TO 4
READ mas(I);
NEXT
REM вывод массива
FOR I=0 TO 4
PRINT mas(I);
NEXT
END
Учимся программировать!
Конспекты школьника.
Двумерные массивы можно представить себе как таблицы, в ячейках которых хранятся значения элементов массива, а индексы элементов массива являются номерами строк и столбцов.
Объявляются двумерные массивы так же, как переменные и одномерные массивы. Например, целочисленный числовой массив, содержащий 3 строк и 4 столбца объявляется следующим образом:
DIM tabl(3 ,4)
DIM tabl(3 ,4) AS INTEGER
tabl
| |||||||||||||||||
|
|