Учебная работа. Реферат: Бейсик

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Бейсик

Содержание.

1. методы.

2. Введение в язык программирования Basic.

3. Линейная структура программки.

4. Ветвление в методах и программках.

5. Циклы в методах и программках.

6. Массивы. Одномерные массивы.

7. Массивы.Двумерные массивы.

8. Символьные и строчные переменные.

9. Подпрограммы.Процедуры.

10. Подпрограммы. Функции.

11. Графический режим работы.

12. Создание передвигающихся изображений.

13. Работа с файлами.

14. Комбинированные типы.

15. Задания для самостоятельного выполнения.

16. Литература.

Данный материал не является всеполноценным учебником по программированию на языке Basic, а содержит лишь нужный минимум для выработки у школьников алгоритмического мышления и исходных способностей программирования.

В качестве системы программирования можно употреблять QBasic.

При использовании материалов ссылка на источник неотклонима.

Обучаемся программировать!
Конспекты школьника.

методы.

Возникновение алгоритмов связывают с зарождением арифметики. Наиболее 1000 лет вспять (в 825 году) ученый из городка Хорезма Абдулла (либо Абу Джафар) Мухаммед бен Муса аль-Хорезми сделал книжку по арифметике, в какой обрисовал методы выполнения арифметических действий над неоднозначными числами. Само слово метод появилось в Европе опосля перевода на латынь книжки этого математика.

метод – описание последовательности действий (план), серьезное выполнение которых приводит к решению поставленной задачки за конечное число шагов.

Вы повсевременно сталкиваетесь с сиим понятием в разных сферах деятель человека (кулинарные книжки, аннотации по использованию разных устройств, правила решения математических задач…). Обычно мы исполняем обычные деяния не задумываясь, механически. к примеру, вы отлично понимаете, как открывать ключом дверь. Но, чтоб обучить этому малыша, придется верно объяснить и сами эти деяния и порядок их выполнения:
1. Достать ключ из кармашка.
2. Вставить ключ в замочную скважину.
3. Повернуть ключ дважды против часовой стрелки.
4. Вытащить ключ.

Если вы пристально обернитесь вокруг, то обнаружите огромное количество алгоритмов которые мы с вами повсевременно исполняем. мир алгоритмов весьма разнообразен. Невзирая на это, удается выделить общие характеристики, которыми владеет хоть какой метод.

характеристики алгоритмов:

1. Дискретность (метод должен состоять из определенных действий, последующих в определенном порядке);
2. Детерминированность (хоть какое действие обязано быть строго и недвусмысленно определено в любом случае);
3. Конечность (каждое действие и метод в целом обязаны иметь возможность окончания);
4. Массовость (один и этот же метод можно употреблять с различными начальными данными);
5. Результативность (отсутствие ошибок, метод должен приводить к правильному результату для всех допустимых входных значениях).

Виды алгоритмов:

1. Линейный метод (описание действий, которые производятся однократно в данном порядке);
2. Повторяющийся метод (описание действий, которые должны повторятся обозначенное число раз либо пока не выполнено задание);
3. Разветвляющий метод (метод, в каком зависимо от условия производится или одна, или иная последовательность действий)
4. Вспомогательный метод (метод, который можно употреблять в остальных методах, указав лишь его имя).

Для наиболее приятного представления метода обширно употребляется
, которая составляется из обычных графических объектов.


Вид обычного графического объекта

Предназначение



Начало метода


Конец метода


Выполняемое действие записывается снутри прямоугольника


Условие выполнения действий записывается снутри ромба


Счетчик кол-во повторов


Последовательность выполнения действий.

Стадии сотворения метода:

1. метод должен быть представлен в форме, понятной человеку, который его разрабатывает.
2. метод должен быть представлен в форме, понятной тому объекту (в том числе и человеку), который будет делать описанные в методе деяния.

объект, который будет делать метод, обычно именуют исполнителем.

Исполнитель — объект, который делает метод.

Безупречными исполнителями являются машинки, боты, компы…

Комп – автоматический исполнитель алгоритмов.

метод, записанный на «понятном» компу языке программирования, именуется программкой.

Обучаемся программировать!
Конспекты школьника.

Введение в язык программирования Basic.

Для представления метода в виде, понятном компу, служат
. Поначалу разрабатывается метод действий, а позже он записывается на одном из таковых языков. В итоге выходит текст программки — полное, законченное и детализированное описание метода на языке программирования. Потом этот текст программки особыми служебными приложениями, которые именуются
, или переводится в машинный код (язык нулей и единиц), или исполняется.

Языки программирования — искусственные языки. От естественных они различаются ограниченным числом «слов», операторов
).

Для написания текста программки можно употреблять обыденный текстовый редактор (к примеру, Блокнот), а потом при помощи компилятора перевести её в машинный код, т.е. получить исполняемую программку. Но проще и удобнее воспользоваться особыми вставленными средами программирования.

Basic (Бейсик) создавался в 60-х годах в качестве учебного языка и весьма прост в исследовании. По популярности занимает 1-ое пространство в мире.

Некие операторы языка Basic.

REM
– оператор комментария. Все что следует опосля этого оператора до конца строчки игнорируется компилятором и предназначено только для человека. Т.е. тут можно писать что угодно. Комфортно употреблять комментарий сначала программки для указания её наименования и предназначения.

пример:
REM Это комментарий
можно и так:
‘ Это тоже комментарий

CLS
— очистить экран. Вся информация, которая была на дисплее стирается.

PRINT
(вывод, печать) – оператор вывода.

пример:
PRINT «Привет! Меня зовут Саша.»

INPUT
(ввод) – оператор ввода. Употребляется для передачи в программку каких-то значений.

пример:
INPUT а

INPUT «Введите число а: «, а

DIM
– оператор описания типа переменной.

Под переменной
языках программирования соображают программный объект (число, слово, часть слова, несколько слов, знаки), имеющий имя и значение, которое быть может получено и изменено программкой.
Если «заглянуть» в комп, то переменную можно найти так:

Переменная — это имя физического участка в памяти, в каком в любой момент времени быть может лишь одно

Переменная — это ячейка в оперативки компа для хранения какой-нибудь инфы.

Само заглавие «переменная» предполагает, что содержимое этого участка может изменяться.
В качестве имен переменных могут быть латинские буковкы с индексами. При этом быть может не одна буковка, а несколько.

Пример:
DIM a, b, chislo1 AS INTEGER

Integer

Если в программке употребляются переменные не описанные при помощи оператора DIM, то комп будет разглядывать их как всепригодные переменные. Это может привести к неэффективному использованию оперативки. К тому же, такие программки не постоянно легки для восприятия — плохо читаемы.

Для задания значения переменной служит оператор присваивания. Он записывается так:
LET

=
(либо просто:
=
)

Пример:
LET a = 3
chislo1 = 15

END
– оператор конца программки.

Арифметические операции на языке Basic.


Операция
Обозначение
Пример
Итог

Сложение
+
2+5
7

Вычитание
-
10-8
2

Умножение
*
3*4
12

Деление
/
15/3
15/4
5
3.75

Целочисленное деление

154
3

Возведение в степень
^
2^3
8

Остаток от деления
MOD
13 MOD 5
3

Математические функции на языке Basic.


Корень
SQR(X)

Модуль числа
ABS(X)

Синус
SIN(X)

Косинус
COS(X)

Тангенс
TAN(X)

Целая часть числа
INT(X)

Натуральный логарифм
LOG(X)

Сейчас уже без осложнений можно перебегать конкретно к составлению программ..

Обучаемся программировать!
Конспекты школьника.

Линейная структура программки.

Программка имеет линейную структуру, если все операторы (команды) производятся поочередно друг за другом.

Пример: программка, выводящая на экран сообщение: Привет! Меня зовут Саша!

REM 1-ая программка
PRINT “Привет! Меня зовут Саша!”
END

Пример: программка, складывающая два числа

REM Сумма 2-ух чисел
a = 5
b = 6
c = a + b
PRINT «Итог: «, c
END

илитак:

REM Суммадвухчисел
DIM a, b, c AS INTEGER
a = 5
b = 6
c = a + b
PRINT «Итог: «, c
END

Пример: Вычислите площадь прямоугольника по его сторонам.

REM Площадь прямоугольника
INPUT «Введите сторону а», а
INPUT «Введите сторону b», b
s = a * b
PRINT «Площадь равна: «, s
END

Пример: Вычислить выражение

REM Вычисление выражения
INPUT «Введите а», а
INPUT «Введите b», b
c = SQR(2*a*b)/(a+b)
PRINT «Площадь равна: «, с
END

Пример: Вычислите длину окружности и площадь круга по данному радиусу.

REM Вычисление длины окружности и площади круга
INPUT «Введите радиус «, r
PI = 3.14
l = 2 * PI * r
s= PI * r * r
PRINT «Длина окружности равна: «, l
PRINT «Площадь равна: «, s
END

Обучаемся программировать!
Конспекты школьника.

Ветвление в методах и программках.

Разветвляющий метод – это метод, в каком зависимо от условия производится или одна, или иная последовательность действий.

В почти всех вариантах требуется, чтоб при одних критериях производилась одна последовательность действий, а при остальных — иная.

Вся программка состоит из установок (операторов). Команды бывают обыкновенные и составные (команды, снутри которых встречаются остальные команды). Составные команды нередко именуют управляющими конструкциями. Сиим подчеркивается то, что эти операторы управляют предстоящим ходом программки.

Разглядим запись условного оператора на языке Basic.

Обычная форма оператора смотрится последующим образом:

IF <УСЛОВИЕ> THEN <ОПЕРАТОР>

либо

IF <УСЛОВИЕ>
<ОПЕРАТОР 1>
<ОПЕРАТОР 2>

<ОПЕРАТОР N>
END IF

Если
, то программка
тот оператор, который стоит опосля главного слова THEN
(либо серию операторов от главного слова THEN
до END IF
), и далее управляется обыденным порядком действий. Если уловие не
справедливо

, то оператор, стоящий опосля THEN
(либо серия операторов от THEN
до END IF
) не
производится

, и программка сходу перебегает к обыкновенному порядку действий.
Система IF…THEN
дозволяет зависимо от справедливости условия или выполнить оператор, или пропустить этот оператор.
Система IF…THEN…END IF
дозволяет зависимо от справедливости условия или выполнить группу операторов, или пропустить эту группу операторов.

Условия — еще один тип логических выражений. В их употребляются последующие
:


=
равно

<>
не равно

>
больше

<
меньше

>=
больше либо равно

<=
меньше либо равно

Справа и слева от знака сопоставления должны стоять величины, относящиеся к одному типу. В итоге сопоставления выходит логическая величина, имеющее

Пример:
5<7 — правда;
8=12 -ЛОЖЬ (проверяем равно ли 8 12,
);

Прошлые конструкции дозволяли обойти либо выполнить серию оператор зависимо от справедливости условия. Это еще не было ветвлением. Чтоб вычисления могли разветвляться по нескольким фронтам, служит система IF…THEN…ELSE…END IF
.

IF <УСЛОВИЕ> THEN
<ОПЕРАТОРЫ 1>
ELSE
<ОПЕРАТОРЫ 2>
END IF

Если условие справедливо (правда), то производятся <операторы 1> (стоящие меж THEN
и ELSE
), а <операторы 2> (стоящие меж ELSE
и END IF
) будут пропущены.
Если условие не справедливо (ЛОЖЬ), то <операторы 1> игнорируются и производятся <операторы 2>.

IF — если, THEN — тогда, ELSE — по другому.

Если
в комнате мрачно, тогда
нужно включить свет.

Если
пойдет дождик, тогда
нужно взять зонт,
по другому
, зонт не брать.

Пример: Проверить, равно ли введенное число некому значению, и в случае равенства выдать на экран сообщение о равенстве чисел.

REM сопоставить число со каким-то значением
INPUT «Введите а», а
IF a=7 THEN PRINT «Числа равны»
END

Опосля пуска программки проверяется равно ли введенное

Пример: Найти большее из 2-ух чисел, вывести его на экран, потом — прирастить его в двое и вывести итог на экран.

REM найти большее из 2-ух чисел…
INPUT «Введите а», а
INPUT «Введите b», b
IF a>b THEN
PRINT «Большее число: «, a
с=2*a
ELSE
PRINT «Большее число: «, b
с=2*b
END IF
PRINT «итог: «, c
END

Поначалу программка запрашивает оба числа, потом инспектирует условие a>b. Если условие правильно, то на экран выводится число a, потом это число умножается. По другому на на экран выводится число b, потом число b умножается. В окончании на экран выводится двойное

Направьте внимание: программка имеет один недочет — не учитывается тот вариант, когда введенные числа равны. Исправим это, использовав вложение 1-го условия в другое.

REM найти большее из 2-ух чисел…
INPUT «Введите а», а
INPUT «Введите b», b
IF a=b TNEN
PRINT «Числа равны»
с=2*a
ELSE
IF a>b THEN
PRINT «Большее число: «, a
с=2*a
ELSE
PRINT «Большее число: «, b
с=2*b
END IF
END IF
PRINT «итог: «, c
END

В данной нам программке два условных оператора, первым проверяется условие равенства чисел и, в случае его выполнения, будет выдано сообщение о равенстве чисел, если числа не равны, то проверяется 2-ое условие…

Пример: Решение квадратного уравнения.
Решение квадратного уравнения зависит от значения дискриминанта.

REM Решение квадратного уравнения
INPUT «Введите коэффициент a: «, а
INPUT «Введите коэффициент b: «, b
INPUT «Введите коэффициент c: «, c
d=b*b-4*a*c
IF d<0 THEN
PRINT «Корней нет»
ELSE
IF d=0 THEN
x=-b/(2*a)
PRINT «корень уравнения: «, x
ELSE
x1=(-b-SQR(d))/(2*a)
x2=(-b+SQR(d))/(2*a)
PRINT «корешки уравнения: «, x1, x2
END IF
END IF
END

структура «Выбор».

Структура IF…
дозволяет избрать меж 2-мя вариациями. Если требуется выполнить выбор меж огромным числом вариантов, то это можно организовать используя только структуру IF
… Но можно (что почаще проще) и при помощи структуры «Выбор». Эта структура имеет вид:

SELECT CASE <Выражение>
CASE <условие 1>
<серия 1>
CASE<условие 2>
<серия 2>

CASE ELSE
<серия по другому>
END SELECT

Выражение, данное опосля главных слов SELECT CASE
, сравнивается с определенными значениями — критериями и если они истинны, то производится соответственная серия установок. Если не одно условие не поистине, то производится серия установок меж CASE ELSE
и END SELECT.

Пример: Выдать словесное

REM Преобразование чисел в слова
INPUT «Введите число», a
SELECT CASE a
CASE 1
PRINT «один«
CASE 2
PRINT «два»
CASE 3
PRINT «три»

CASE 10
PRINT «10»
CASE ELSE
PRINT «эточислонемогуперевести»
END SELECT
END

В данном примере введенное число сравнивается с числами от 1 до 10 и если наше число равно одному из этих чисел, то на экран выводится словесное могу перевести».

Обучаемся программировать!
Конспекты школьника.

Циклы в методах и программках.

Наилучшее свойства компов появляются не тогда, когда они рассчитывают значения сложных выражений, а когда неоднократно, с незначимыми переменами, повторяют сравнимо обыкновенные операции. Даже весьма обыкновенные расчеты могут поставить человека в тупик, если их нужно повторить тыщи раз, а повторять операции миллионы раз человек совсем не способен.

С необходимостью циклических вычислений программеры сталкиваются повсевременно. к примеру, если нужно подсчитать, сколько раз буковка «о» встречается в тексте нужно перебрать все буковкы. При всей простоте данной нам программки исполнить ее человеку весьма тяжело, а для компа это задачка на несколько секунд.

Повторяющийся метод — описание действий, которые должны повторяться обозначенное число раз либо пока не выполнено данное условие.

Список циклических действий именуют телом цикла.

к примеру, на уроке физкультуры вы должны пробежать некое количество кругов вокруг стадиона.

Такие циклы именуются — циклы со счетчиком
.

На языке Basic они записываются последующим образом:

FOR Счетчик=НачЗнач TO КонЗнач [STEP шаг]
тело цикла
NEXT [Счетчик]

Характеристики обозначенные в квадратных скобках являются не неотклонимыми (их можно не записывать). По дефлоту шаг цикла равен одному, т.е. всякий раз опосля прохождения тела цикла счетчик возрастает на единицу.

Пример: Вывести на экран все числа от 1 до 100. Для этого можно было бы написать последующую программку:

REM Выводчиселот 1 до 100
PRINT 1
PRINT 2
PRINT 3
PRINT 4
PRINT 5
PRINT 6
PRINT 7

PRINT 98
PRINT 99
PRINT 100
END

Всего каких-либо 102 строки ;-). Хотя эту же программку можно написать намного короче:

REM Выводчиселот 1 до 100
FOR I=1 TO 100
PRINT I
NEXT
END

Мало исправив программку можно создать, чтоб она выводила все числа от a до b.

REM Выводчиселот a до b
a=55
b=107
FOR I=a TO b
PRINT I
NEXT
END

В этом случае счетчик при первом прохождении цикла воспринимает слова NEXT. Опосля этого счетчик возрастает на единицу и сравнивается со

Просто создать чтоб программка выводила числа в оборотном порядке. Для этого шаг цикла должен быть равен -1 (минус один). В этом случае значение счетчика всякий раз опосля прохождения цикла будет уменьшено на единицу.

REM Выводчиселот b до a
a=55
b=107
FOR I=b TO a STEP -1
PRINT I
NEXT
END

Пример: Вычислить сумму двухзначных натуральных чисел.

REM Вычислить сумму двухзначных натуральных чисел
FOR I=10 TO 99
s=s+I
NEXT
PRINT «Итог = «,s
END

программка перебирает числа от 10 до 99 всякий раз выполняя деяния s=s+I
. Исходя из убеждений арифметики это совсем глупая запись, но разглядим её внимательней.
процесс решения вычислительной задачки — это процесс поочередного конфигурации значений переменных. В итоге — в определенных переменных выходит итог. Переменная получает определенное присваивания
. Вы помните, что присваивание — это занесение в ячейку, отведенную под переменную, определенного значения в итоге выполнения команды.
В итоге операции а=5
переменная а
получает В итоге операции с=a+b
переменная с
получает а
и b
.
В итоге операции s=s+I
переменная s
получает s
и значения переменной I
. Т.е., если до операции присваивания s
было равно 5, а переменной I
равно 3, то опосля операции s
будет равно 8 (5+3, старенькое s
+ I
).
Означает опосля выполнения нашей программки в переменной s будет хранится сумма всех двузначных чисел от 10 до 99.

Пример: вычислить факториал числа а (записывается так: а!). Факториал — это произведение чисел от 1 до а. к примеру, 5! (факториалпяти) — это 5!=1*2*3*4*5

REM Вычислитьфакториалчисла
a=5
f=1
FOR I=1 TO a
f=f*I
NEXT
PRINT f
END

Вы, естественно, увидели, что до начала цикла мы присвоили переменной f

В субботу вечерком вы смотрите телек. время от времени поглядываете на часы и если время меньше полуночи, то продолжаете глядеть телек, если это не так, то вы заканчиваете просмотр телепередач.

Циклы такового вида именуют — циклы с предусловием
.

На языке Basic они записываются последующим образом:

DO WHILE условие
тело цикла
LOOP

В этом цикле проверяется условие и если оно производится (правда), то производится тело цикла до главного слова LOOP, потом условие проверяется опять … и так до того времени пока условие истино.

Этот цикл различается от предшествующего лишь тем, что он производится до того времени пока условие не поистине (т.е. совершенно напротив).

Пример: Вывести все натуральные числа меньше данного.

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, берем целую часть (т.е. отбрасываем последнюю цифру числа) и заносим в а
. Цикл длится до того времени пока а
не окажется равным нулю (перебрали все числа числа). Итог выводим на экран.

Обучаемся программировать!
Конспекты школьника.

Массивы. Одномерные массивы.

При работе с огромным числом данных 1-го типа весьма комфортно употреблять массивы.

Итак, что все-таки такое массивы…
Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений под одним и этим же именованием. К любому определенному значению массива, нужно обращаться через числовой индекс.

Массив — это набор переменных, имеющих однообразное имя (идентификатор), но различающихся порядковыми номерами (индексами).

Обычно массивы используют для группировки переменных, имеющих много общих параметров. К примеру, если в классе 30 учеников, то имя всякого ученика можно было бы сохранить в отдельной строковой переменной: name1, name2, … Но вводить 30 новейших переменных очень неловко. Можно создать проще: объявить один массив name(), имеющий 30 частей. В скобках проставляется индекс когда нужно обратиться к какому-то определенному элементу.

Отсчет частей массива в почти всех языках начинается с нуля. Потому имя первого (по потрясающему журнальчику) ученика будет храниться в переменной name(0), второго — в переменной name(1), а крайнего (тридцатого) — в переменной name(29).

Для того чтоб употреблять массив его нужно поначалу объявить в программке. Для этого употребляют оператор DIM
. По дефлоту (если нет оператора DIM
в программке) считается данным массив из 10 частей.

Пример:

DIM a(100) AS INTEGER
Это массив из 100 частей, любой из которых быть может целым числом.
DIM name(30) AS STRING
DIM mas(20)
Это массив из 20 частей, тип переменных очевидно не указан.

DIM mas1(10) AS INTEGER

mas1


5
2
23
111
65
87
65
333
7
21




0
1
2
3
4
5
6
7
8
9




Воззвание к элементам массива:

a(24)
name(5)
mas(2)
mas(3)

Основное преимущество массивов перед обыденным набором разноименных переменных заключается в том. что индекс подходящего элемента можно записывать не числом, а переменной либо даже вычислять по выражению. Это дает возможность употреблять массивы снутри циклов — фактически для этого они и были выдуманы. Если в программке есть массив, то, быстрее всего, в ней же вы отыщите и цикл.

Можно также объявить массив и таковым образом:

DIM mas2(1 TO 10) AS INTEGER

mas2


66
34
76
2
99
345
2
90
4




1
2
3
4
5
6
7
8
9
10




либо даже так:

DIM a2(5 TO 10) AS INTEGER

В чем отличие? В том что данном случае индексация частей массива начинается не с нуля, а с подходящего для вас индекса (в примере массив mаs2
имеет индексы от 1 до 10, массив а2
— от 5 до 10).

Допустим в классе 30 учеников. Представим, что для хранения их оценок по предмету сотворен массив DIM mark(30) AS INTEGER
. Последующая программка, поставит любому учащемуся случайную оценку от 3 до 5. естественно, так расставлять оценки недозволено, но этот пример указывает, что программка не становиться труднее, если в классе не 30 учеников, а 100 50 миллионов. Сочетание массивов и циклов дозволяет достигнуть умопомрачительной простоты.

REM Выставление оценок 🙂
DIM mark(30) AS INTEGER
FOR I=0 TO 29
mark(I)=3+INT(RND*3)
NEXT
END

mark


3
3
5
3
4
5
5
3

4




0
1
2
3
4
5
6
7

29




Для сотворения случайных чисел в языке 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

Сначала примем за больший элемент — 1-ый элемент массива 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


0
1
2
3




0

1

2



2
7
8
3

22
1
3
34

5
56
9
777




DIM tabl1(1 TO 3 ,1 TO 4) AS INTEGER

tabl1


1
2
3
4




1

2

3



2
7
8
3

22
1
3
34

5
56
9
777




При помощи двумерного массива 9х9 и 2-ух вложенных циклов можно просто составить программку, реализующую таблицу умножения. Сомножителями будут значения индексов строк и столбцов, а их произведения будут значениями частей массива.

DIM tablum(1 TO 9 ,1 TO 9) AS INTEGER

tablum


1
2
3
4
5
6
7
8
9




1

2

3

4

5

6

7

8

9



1
2
3
4
5
6
7
8
9

2
4
6
8
10
12
14
16
18

3
6
9
12
15
18
21
24
27

4
8
12
16
20
24
28
32
36

5
10
15
20
25
30
35
40
45

6
12
18
24
30
36
42
48
54

7
14
21
28
35
42
49
56
63

8
16
24
32
40
48
56
64
72

9
18
27
36
45
54
63
72
81




REM Таблица умножения
DIM tabum(1 TO 9, 1 TO 9) AS INTEGER
REM Наполнение массива — создание таблицы умножения
FOR I=1 TO 9
FOR J=1 TO 9
tabum(I, J)=I*J
NEXT J
NEXT I
REM Вывод массива на экран в виде таблицы
FOR I=1 TO 9
FOR J=1 TO 9
PRINT tabum(I,J);
NEXT J
PRINT
NEXT I
END

Пример: В таблице 3х4 вычислить количество отрицательных частей, сумму четных частей, произведение частей 2-ой строчки.

REM вычислить количество
DIM tabl(1 TO 3, 1 TO 4) AS INTEGER
REM Наполнение массива
FOR I=1 TO 3
FOR J=1 TO 4
INPUT «Введите элемент массива:», tabl(I, J)
NEXT J
NEXT I
REM Вывод массива на экран в виде таблицы
CLS
FOR I=1 TO 3
FOR J=1 TO 4
PRINT tabl(I,J);
NEXT J
PRINT
NEXT I
REM требуемые вычисления
k=0
s=0
p=1
FOR I=1 TO 3
FOR J=1 TO 4
IF tabl(I, J)<0 THEN k=k+1
IF tabl(I, J) MOD 2 = 0 THEN s=s+tabl(I, J)
IF I=2 THEN p=p*tabl(I, J)
NEXT J
NEXT I
PRINT
PRINT «результ:»
PRINT «отрицательных частей: «, k
PRINT «сумма четных частей: «, s
PRINT «произведение частей 2-ой строчки: «,p
END

Обучаемся программировать!
Конспекты школьника.

Символьные и строчные переменные.

Весьма нередко в программках требуется употреблять символьные либо строчные переменные. Что все-таки это такое? Это переменные, значениями которых являются или алфавитно-цифровые знаки, или несколько таковых знаков.

Строчки — последовательность алфавитно-цифровых знаков.

Для того, чтоб употреблять такие переменные в программке нужно их подходящим образом объявить. Для этого употребляется уже узнаваемый оператор DIM
.

DIM s AS STRING
s=»Cтрока123″

Либо добавлять справа от переменной знак $
.

s$=»Тоже строчка 987″

Пример: Эта программка выводит на экран две строчки. Обратите внимание на два метода использования и объявления строковых переменных.

DIM stroka AS STRING
stroka=»один«
stroka2$=»Два»
PRINT stroka
PRINT stroka2$
END

Еще пример: Та же программка, но с ОШИБКАМИ. Не обозначено, то что наши переменные строчные.

REM ЗДЕСЬОШИБКИ
stroka=»один«
stroka2=»Два»
PRINT stroka
PRINT stroka2
END

Строчные переменные можно склеивать и ассоциировать друг с другом. Для склеивания строк (конкатенации) употребляют символ плюс (+).

Пример.

REM конкатенация строк
s1$=»Привет! «
s2$=»МенязовутСаша.»
s$=s1$+s2$
PRINT s$
END

На дисплее покажется надпись: Привет! Меня зовут Саша.

Для сопоставления срок употребляют операции: >, <, =, >=, <=, <>.

Пример:

REM Сравнениестрок
s1$=»abc»
s2$=»abc»
s3$=»klmn»
IF s1$=s2$ THEN PRINT «Строкиравны»
IF s1$=s3$ THEN PRINT «Строкиравны»
END

программка выведет «Строчки равны лишь один раз».

Функции для работы со строчками:


LEN(s$)
Вычисляет длину строчки (количество знаков).

MID$(s$,n,k)
Выделяет из строчки s$ k знаков начиная с n-го знака.

VAL(s$)
Конвертирует числовую часть начала строчки в число.

STR$(x)
Конвертирует число в символьную форму.

ASC(s$)
Вычисляет десятичный код знака.

CHR$(x)
Конвертирует код в знак.

INKEY$
Функция опроса кнопок, нажатых на клавиатуре.

Пример: составить программку подсчитывающую, количество букв «а» в предложении.

REM кол-вобукв «а»
INPUT «Введитепредложение», s$
FOR I=1 TO LEN(s$)
IF MID$(s$,I,1)=»а» THEN k=k+1
NEXT
PRINT «Кол-вобуква =», k
END

Пример: Поменять все буковкы «а» в предложении на буковкы «о».

REM заменабукв
ss$=»»
INPUT «Введитепредложение», s$
FOR I=1 TO LEN(s$)
IF MID$(s$,I,1)=»а» THEN
ss$=ss$+»о»
ELSE
ss$=ss$+MID$(s$,I,1)
END IF
NEXT
PRINT «Исправленнаястрока: «, ss$
END

Пример: Получить предложение в оборотном порядке следования знаков.

REM оборотный порядок букв
ss$=»»
INPUT «Введите предложение», s$
FOR I=LEN(s$) TO 1 STEP -1
ss$=ss$+MID$(s$,I,1)
NEXT
PRINT «Исправленная строчка: «, ss$
END

Обучаемся программировать!
Конспекты школьника.

Подпрограммы. Процедуры.

При разработке средних по размеру программ употребляется
, мысль которого состоит в том, что структура программки обязана отражать структуру решаемой задачки, чтоб метод решения был ясно виден из начального текста.

С данной нам целью в программирование введено понятие
. программка разбивается на огромное количество подпрограмм, любая из которых делает некое действие, предусмотренное начальным заданием.

Подпрограммой именуется группа операторов, к которой обращаются из главный программки несколько раз.

Сочитая подпрограммы, удается сформировать итоговый метод используя блоки кода (подпрограммы), имеющих определенную смысловую нагрузку. Обращаться к сиим подпрограммам можно по их имени.

Принято различать два вида подпрограмм — процедуры и функции. Вообщем, это деление очень условно, поэтому что они весьма близки. Различаются они тем, что процедура просто делает группу операторов, а функция вприбавок вычисляет некое

Когда в программке нужно выполнить некое обычное действие происходит вызов процедуры. Процедура делает действие и возвращает управление назад программке, которая ее вызвала. В процессе работы процедуры могут вызвать остальные процедуры. Прием когда подпрограмма вызывает саму себя именуют рекурсией.

Весьма принципиальная черта подпрограмм — это возможность их повторного использования.

Чтоб работа подпрограммы имела смысл, ей нужно получить данные из наружной программки, которая эту подпрограмму вызывает. Данные передаются подпрограмме в виде характеристик либо аргументов, которые обычно описываются в ее заголовке так же, как и переменные.

Вы уже употребляли обычные процедуры и функции при составлении программ. сейчас пришло время научиться создавать свои процедуры и функции.

Процедуры состоят из 3-х частей: заголовка, тела процедуры, окончания процедуры.

SUB имя (перечень характеристик)
тело процедуры — перечень операторов
END SUB

Пример:

SUB hello (s$)
PRINT «Привет, «, s$,»! Как твои дела
END SUB

REM приветствие
name1$=»Саша»
name2$=»Вася»
REM функцию можно вызвать так
CALL hello(name1$)
REM а можно вызвать так
hello(name2$)
REM либо даже так
hello(«Марина»)
END

В итоге выполнения программки на дисплее будет выведено:
Привет, Саша! Как твои дела?
Привет, Вася! Как твои дела?
Привет, Марина! Как твои дела?

Характеристики, которые указываются в заголовке подпрограммы, именуются формальными. Они необходимы лишь для описания тела подпрограммы. А характеристики (определенные значения), которые указываются в момент вызова подпрограммы, именуются фактическими параметрами. При выполнении операторов подпрограммы формальные характеристики вроде бы временно заменятся на фактические.

Обучаемся программировать!
Конспекты школьника.

Подпрограммы. Функции.

Функции различаются от процедур тем, что не только лишь делают определенные деяния, но к тому же возвращают вызывающей программке некое

Процедуры и функции бывают обычными и необычными. Обычные подпрограммы входят в библиотеку, которая поставляется совместно с системой программирования. Неординарные процедуры и функции программеры пишут сами.

Вы уже употребляли обычные функции, сейчас давайте напишем свою функцию.

FUNCTION имя (перечень характеристик)
тело функции — перечень операторов
END FUNCTION

Пример: функция возвращающая куб числа

FUNCTION kub (x)
kub=x*x*x
END FUNCTION

REM Выводкубовнатуральныхчиселот 1 до 10
CLS
FOR I=1 TO 10
PRINT kub(I)
NEXT
END

В данной нам программке в цикле происходит воззвание к функции kub
, которая вычисляет куб числа.

процесс, когда в процедуре происходит воззвание к самой для себя, именуется рекурсией (рекурсия — возврат). (Происходит от латинского recurreus — возвращающийся).

Рекурсия — это таковой метод организации подпрограммы, при котором в процессе выполнения она обращается сама к для себя.

Ниже приведена программка вычисления факториала числа, в какой употребляется рекурсивная процедура fak
:

FUNCTION fak (f)
IF f = 0 OR f = 1 THEN
fak = 1
ELSE
fak = fak(f — 1) * f
END IF
END FUNCTION

REM «Вычислениефакториала»
INPUT «Введитечисло: «, a
PRINT «Факториал = «, fak(a)
END

Для вычисления факториала числа n, т.е. n! нужно помножить поочередно n натуральных чисел от 1 до n: n!=1*2*3*4. Так, 4! будет равно: 4!=1*2*3*4. Это прямой путь вычисления либо итеративный.
Вероятен и иной путь вычисления: n!=n*(n-1)*…*1. Т.е. 4!=4*3*2*1. Этот путь можно именовать возвратимым либо рекурсивным.
Конкретно на этом принципе базирована работа приведенной функции.

Обучаемся программировать!
Конспекты школьника.

Графический режим работы.

Ну и сейчас, наверняка, самое увлекательное. Будем отрисовывать. Кто же не любит это занятие?!

Программки могут выводит данные на экран в текстовом и графическом режиме работы. Для перехода в графический режим работы служит оператор:

SCREEN <mode>

<mode> — целочисленная константа, указывающая режим работы для данного экрана и адаптера.

Пример:

SCREEN 1
SCREEN 2

SCREEN 11

Для рисования можно употреблять последующие операторы:


CLS
Чистка экрана

PSET(X,Y),C
Изобразить точку. X,Y — координаты точки, С —цвет.

PSET STEP(X,Y),C
Изобразить точку. X,Y — смешение от данной точки, С — цвет.

LINE(X1,Y1)-(X2,Y2),C
Ровная линия.X1,Y2 и X2,Y2- координаты концов полосы, С — цвет.

LINE -(X2,Y2),C
Ровная линия. От текущего положения курсора до X2,Y2- координаты конца полосы, С — цвет.

LINE(X1,Y1)-(X2,Y2),C,B
Прямоугольник. X1,Y2 и X2,Y2- координаты концов диагонали, С — цвет.

LINE(X1,Y1)-(X2,Y2),C,BR
Закрашенный прямоугольник. X1,Y2 и X2,Y2- координаты концов диагонали, С — цвет.

CIRCLE(X,Y),R,C
Окружность. X,Y — координаты центра, С —цвет.

CIRCLE STEP(X,Y),R,C
Окружность. X,Y — смешение от данной точки, С —цвет.

CIRCLE(X,Y),R,C,A1,A2
Дуга окружности. X,Y — координаты центра, С —цвет, А1,А2 — угловые меры исходной и конечной точки дуги.

CIRCLE(X,Y),R,C,,,K
CIRCLE(X,Y),R,C,А1,А2,K
Элипс. К — коэффициент сжатия.

Paint(X,Y),C1,C2
Закрасить область. С1 — цвет закраски, С2 — цвет границы.

LOCATE T1,T2
Установка курсора в данную позицию. Т1, Т2 — номер строчки и столбца.

PRINT
Оператор вывода текста

Пример: использования LINE

REM внедрение LINE
SCREEN 12
LINE (10, 10)-(200, 10)
LINE (10, 20)-(200, 40), 2, B
LINE (10, 50)-(200, 70), 2, BF
END

Итог работы программки:

Пример: внедрение CIRCLE

REM ОКРУЖНОСТЬ, ДУГА, ЭЛЛИПС
CONST PI = 3.141593
SCREEN 2
REM ОКРУЖНОСТЬ
CIRCLE (350, 115), 30
REM ДУГА ОКРУЖНОСТИ
CIRCLE (320, 100), 200, , -PI, -PI / 2
REM ОКРУЖНОСТЬ
CIRCLE STEP(-100, -42), 100
REM ЭЛЛИПС
CIRCLE STEP(0, 0), 100, , , , 5 / 25
REM ВЫВЕСТИ НАДПИСЬ В СТРОКЕ 25 И СТОЛБЦЕ 1
LOCATE 25, 1: PRINT «Press any key to end.»;
REM ЖДЕМ НАЖАТИЯ ЛЮБОЙ КЛАВИШИ
DO
LOOP WHILE INKEY$ = «»

Итог работы программки:

Пример: построение окружности

REM окружность
CLS
INPUT «Введите координаты центра x,y: «, x,y
INPUT «Введите радиус окружности R: «, r
SCREEN 1
CIRCLE (x, y), r
END

на данный момент на улице зима, а означает и …
Пример: программка «Снеговик»

REM Снеговик
SCREEN 12
x = 320
y = 240
r = 50
c = 3
c1 = 8
c2 = 5
c3 = 6

REM Снег
FOR i = 1 TO 300
PSET (RND * 640, RND * 480), 1
NEXT

REM Сугроб
FOR i = 1 TO 20
LINE (0 + 2 * i, y + 3 * r + 61 — i)-(640 — 2 * i, y + 3 * r + 61 — i), 1
NEXT

REM тело снеговика
CIRCLE (x, y — 80), r — 20, c
CIRCLE (x, y), r, c
CIRCLE (x, y + 120), r + 20, c
CIRCLE (x — 52, y — 30), 10, c
CIRCLE (x + 52, y — 30), 10, c

Paint (x, y — 80), c, c
PAINT (x, y), c, c
PAINT (x, y + 120), c, c
PAINT (x — 52, y — 30), c, c
Paint (x + 52, y — 30), c, c

REM Оформление лица
CIRCLE (x — 15, y — 90), 2, 1
Paint (x — 15, y — 90), 1, 1
CIRCLE (x + 15, y — 90), 2, 1
PAINT (x + 15, y — 90), 1, 1
CIRCLE (x, y — 80), 10, 4, , , .5
Paint (x, y — 80), 4, 4
CIRCLE (x, y — 75), 20, 4, 4, 6, 0.5

REM Метла
LINE (x — 50, y — 100)-(x — 54, y + 100), c1, BF
FOR i = 1 TO 20
LINE (x — 53, y — 100)-(x — 53 — 40 * RND + 20, y — 100 — 40 * RND), c1
NEXT

REM Ведро
LINE (x — 30, y — r — 2 * (r — 20) + 10)-(x + 30, y — r — 2 * (r — 20) + 10), c2
LINE (x — 15, y — r — 2 * (r — 20) — 30)-(x + 15, y — r — 2 * (r — 20) — 30), c2
LINE (x — 30, y — r — 2 * (r — 20) + 10)-(x — 15, y — r — 2 * (r — 20) — 30), c2
LINE (x + 15, y — r — 2 * (r — 20) — 30)-(x + 30, y — r — 2 * (r — 20) + 10), c2
Paint (x, y — r — 2 * (r — 20)), c2, c2

REM Пуговицы
FOR i = 1 TO 5
CIRCLE (x, y — r + 30 * i), 3, c3
Paint (x, y — r + 30 * i), c4, c3
NEXT

END

Итог работы программки:

Пример: построение графика функции.

FUNCTION F (x)
F = x * x
END FUNCTION

REM ГРАФИКФУНКЦИИ
SCREEN 12
REM Строимоси
FOR I = 0 TO 3
LOCATE 16, 38 + 10 * I: PRINT 4 * I
NEXT
FOR I = 0 TO 3
s$ = «-» + STR$(4 * I)
LOCATE 16, 38 — 10 * I: PRINT s$
NEXT
FOR I = 0 TO 4
LOCATE 16 — 3 * I, 38: PRINT 5 * I
NEXT
FOR I = 0 TO 3
s$ = «-» + STR$(5 * I)
LOCATE 16 + 3 * I, 37: PRINT s$
NEXT
LINE (10, 240)-(630, 240)
LINE (320, 10)-(320, 470)
COLOR 3
LOCATE 1, 38: PRINT «Y»
LOCATE 17, 77: PRINT «X»
REM Строимграфикфункции
COLOR 2
PSET (20*(-10) + 320, 240 — 10 * F(-10))
FOR x = -10 TO 10 STEP .1
XX = 20 * x + 320
YY = 240 — 10 * F(x)
LINE -(XX, YY)
NEXT
END

Итог работы программки для y=x2


Итог работы программки для y=x3
-2.5

Оператор DRAW
дозволяет делать различные графические операции.

· Команды черчения по восьми фронтам: U, D, L, R, E, F, G, H
.


H
U
E

L

R

G
D
F

  • Команда М
    чертит от текущей точки до точки с координатами x, y. Если перед координатами стоит символ плюс либо минус, то координаты относительные, а не абсолютные.
  • Команда S
    изменяет масштаб черчения.
  • Команда А
    поворачивает изображение (А0
    -0, А1
    -90, А2
    -180, А3
    -270 градусов).

Пример: Рисование флагов.

REM Флаги
SCREEN 1
PSET (50, 10)
DRAW «R20 G5 F5 L20 U10»
DRAW «B D20»
DRAW «S5 R20 G5 F5 L20 U10»
DRAW «BD20»
DRAW «S4 R20 G5 F5 L20 U10»
DRAW «BD20»
DRAW «R20 G5 F5 L20 U10»
DRAW «BD40»
DRAW «A3 R20 G5 F5 L20 U10»
END

Итог работы программки:

Обучаемся программировать!
Конспекты школьника.

Создание передвигающихся изображений.

Как нарисовать графический объект для вас уже понятно. Но как вынудить его двигаться?

Весьма просто!
1. Рисуем объект цветом хорошим от цвета фона.
2. Рисуем объект цветом фона.
3. Изменяем координаты.
4. Повторяем 1-3 столько раз сколько будет нужно.

Пример 1: Передвигающийся круг.

REM Передвигающийся круг
SCREEN 1
x = 1
y = 1
REM цвет фона — 0(темный), цвет рисунка — 1

FOR i = 1 TO 150

REM Рисуем объект цветом хорошим от цвета фона.
c = 1
CIRCLE (x, y), 2, c

REM задержка
FOR j = 1 TO 250000
NEXT j

REM Рисуем объект цветом цветом фона.
c = 0
CIRCLE (x, y), 2, c

REM Изменяем координаты
x = x + 2
y = y + 1

NEXT i
END

Для того чтоб глаз мог зафиксировать нарисованное изображение используем пустой цикл:
REM задержка
FOR j = 1 TO 250000
NEXT j

Пример 2: Усложним линию движения движения. Пусть шарик прыгает по поверхности, а когда поверхность завершится — свалится вниз.

REM Прыгающийшарик
SCREEN 1
x = 1
y = 100

REM поверхность
LINE (0, y + 20)-(220, y + 20)

FOR i = 1 TO 140

c = 1
CIRCLE (x, y), 2, c
Paint (x, y), c, c

FOR j = 1 TO 250000
NEXT j

c = 0
CIRCLE (x, y), 2, c
PAINT (x, y), c, c

x = x + 2
IF i < 115 THEN
y = y + 10 * COS(.5 * i)
ELSE
y = y + 4
SOUND 200, 1
END IF

NEXT i

LOCATE 10, 15: PRINT «GAME OVER :)»
END

Пример 3: Шарик, заключенный в прямоугольную область. При касании границ отскакивает назад.

REM Шарик, заключенный в прямоугольную область
SCREEN 1

REM Границы области
xx1 = 1
xx2 = 200
yy1 = 1
yy2 = 150

LINE (xx1, yy1)-(xx1, yy2)
LINE (xx2, yy1)-(xx2, yy2)
LINE (xx1, yy1)-(xx2, yy1)
LINE (xx1, yy2)-(xx2, yy2)

REM Исходные координаты и скорость шарика
x = RND * (xx1 + (xx2 — xx1) / 2)
y = RND * (yy1 + (yy2 — yy1) / 2)
vx = RND * 20 — 10
vy = RND * 20 — 10

CIRCLE (x, y), 2, c
Paint (x, y), c, c

REM Движение шарика, до того времени пока не нажмем всякую кнопку

DO

c = 1
CIRCLE (x, y), 2, c
Paint (x, y), c, c

FOR j = 1 TO 150000
NEXT j

c = 0
CIRCLE (x, y), 2, c
PAINT (x, y), c, c

IF x < (xx1 + 5) OR x > (xx2 — 5) THEN vx = -vx
IF y < (yy1 + 6) OR y > (yy2 — 7) THEN vy = -vy
x = x + vx
y = y + vy

LOOP WHILE INKEY$ = «»

LOCATE 10, 15: PRINT «GAME OVER :)»
END

LOCATE
— перемещает курсор на дисплее в обозначенную позицию.

Пример 4: Идущие часы (заходит в состав примеров QBasic 4.5).

‘ *** DRAW_EX.BAS ***

‘ Объявление процедуры.
DECLARE SUB Face (Min$)

установка графического режима 640 x 200
SCREEN 2
DO
CLS
‘ Получаем строковое Min$ = MID$(TIME$,4,2)
‘ Рисуем изображение часов
Face Min$
‘ Ждем пока не поменяется минутка либо пока не будет нажата кнопка
DO
‘ Печатаем время вверху экрана
LOCATE 2,37
PRINT TIME$
‘ Проверяем нажатие клавиши
Test$ = INKEY$
LOOP WHILE Min$ = MID$(TIME$,4,2) AND Test$ = «»
‘ Конец программки если нажата кнопка
LOOP WHILE Test$ = «»
END

‘ Процедура рисования часов
SUB Face (Min$) STATIC
LOCATE 23,30
PRINT «Press any key to end»
CIRCLE (320,100),175
‘ Преобразовываем строчку в число
Hr = VAL(TIME$)
Min = VAL(Min$)
‘ Преобразовываем число в угол
Little = 360 — (30 * Hr + Min/2)
Big = 360 — (6*Min)
‘ Рисуем стрелки
DRAW «TA=» + VARPTR$(Little) + «NU40»
DRAW «TA=» + VARPTR$(Big) + «NU70»
END SUB

INKEY$
считывает знак с клавиатуры.

Пример:
PRINT «Для выхода нажмите Esc…»

DO
LOOP UNTIL INKEY$ = CHR$(27)

’27 — это ASCII коддляклавиши Esc.

INKEY$
возвращает нулевую строчку знаков, если нет знака для
возврата.
— Для обычных кнопок INKEY$
возвращает 1-байтовую строчку знаков,
содержащую считанный знак.
— Для расширенных кнопок INKEY$
возвращает 2-байтовую строчку знаков,
состоящую из знака нуля (ASCII 0) и скан-кода клавиатуры.

Нетрудно выполнить не попросту движение объекта, а управляемое движение.
Пример 5: Живописец (заходит в состав примеров QBasic). Управление живописцев кнопками со стрелками.

CONST UP = 72, DOWN = 80, LFT = 75, RGHT = 77
CONST UPLFT = 71, UPRGHT = 73, DOWNLFT = 79, DOWNRGHT = 81
CONST SPACEBAR = » «

‘ Null$ это 1-ый б(знак) 2-байтовой строчки знаков
‘ для расширенных кнопок (таковых, к примеру, как ВВЕРХ и ВНИЗ)

Null$ = CHR$(0)

‘ Plot$ = «» рисование линий; Plot$ = «B» лишь перемещение
‘ Перемещаемся, но не рисуем полосы:
Plot$ = «»

PRINT «Use the cursor movement keys to draw lines.»
PRINT «Press the spacebar to toggle line drawing on and off.»
PRINT «Press <ENTER> to begin. Press q to end the program.»

‘ ждемнажатиеклавишидляначаларисования
DO: LOOP WHILE INKEY$ = «»

SCREEN 1
CLS

DO
SELECT CASE KeyVal$
CASE Null$ + CHR$(UP)
DRAW Plot$ + «C1 U2»
CASE Null$ + CHR$(DOWN)
DRAW Plot$ + «C1 D2»
CASE Null$ + CHR$(LFT)
DRAW Plot$ + «C2 L2»
CASE Null$ + CHR$(RGHT)
DRAW Plot$ + «C2 R2»
CASE Null$ + CHR$(UPLFT)
DRAW Plot$ + «C3 H2»
CASE Null$ + CHR$(UPRGHT)
DRAW Plot$ + «C3 E2»
CASE Null$ + CHR$(DOWNLFT)
DRAW Plot$ + «C3 G2»
CASE Null$ + CHR$(DOWNRGHT)
DRAW Plot$ + «C3 F2»
CASE SPACEBAR
IF Plot$ = «» THEN Plot$ = «B » ELSE Plot$ = «»
CASE ELSE
‘ Пользовательнажалкакую-тоизклавиш,
‘ кромеклавишуправления (ввысь, вниз, на Право, на лево, пробел, выход(q))
‘ такчтоничегонеделаем
END SELECT

KeyVal$ = INKEY$

LOOP UNTIL KeyVal$ = «q»

END

Обучаемся программировать!
Конспекты школьника.

Работа с файлами.

Файлы обширно используются для решения разных задач. В их располагаются данные, созданные для долгого хранения. Любому файлу присваивается неповторимое имя, которое употребляется для воззвания к нему. Внедрение файлов высвобождает разраба от хранения требуемых данных в тексте программки либо неоднократном вводе их с клавиатуры, что {само по себе} очень мучительно и приводит к возникновению разных ошибок в программках. Еще удобнее ввести эту информацию один раз и сохранить ее в файле на диске.

Названия файлов состоят из 2-ух частей, разделяемых точкой: filename.ext (имя_файла.расширение)
Название файла может включать от 1 до 8 символов, а соответственное расширение — до 3-х символов.

Названия файлов и расширения могут содержать последующие знаки:

A-Z 0-9 () {} @ # $ % ^ ! — _ ‘ / ~

Файлы можно создавать, переименовывать, стирать; создавать операции считывания и записи.

Basic дает три разных метода сохранения и востребования инфы с диска: поочередный, прямой и двоичный ввод/вывод файла. У всякого есть свои достоинства и недочеты.

способ поочередных файлов — это метод прямого чтения и записи файлов. Команды поочередных файлов в Basic делают текстовые файлы: файлы ASCII-символов с парами «возврат каретки/перевод строчки», разделяющими записи. возможно одной из главных обстоятельств использования поочередных файлов является степень их «переносимости» в остальные программки, языки программирования и компы. Они читаются программками подготовки текстов и редакторами, принимаются иными прикладными программками и могут посылаться через серийные порты на остальные компы.

В базе поочередных файлов лежит сама простота: пишите в их так, будто бы они — экран, и читайте с их так, будто бы они — клавиатура.


1. ОТКРЫТЬ файл в режиме поочередного ВВОДА. Для сотворения файла нужно употреблять оператор OPEN
.

В поочередных файлах есть два пути подготовки файла к выводу:

OUTPUT
(ВЫВОД): Если файл не существует- создается новейший файл. Если файл уже существует, его содержание уничтожается, а сам файл рассматривается как новейший.

APPEND
(ДОБАВИТЬ В КОНЕЦ): Если файл не существует- создается новейший файл. Если файл уже существует, любые данные дописываются в конец этого файла.

2. Ввод данных в файл. Используйте WRITE# PRINT#
либо PRINT#USING
для записи данных в поочередный файл.

3. ЗАКРЫТИЕ файла. Оператор CLOSE
закрывает файловую переменную опосля окончания всех операций ввода/вывода.


1. ОТКРЫТЬ файл в режиме поочередного ВВОДА. Приготовить файл для считывания.

2. Считывать данные с файла. Применять операторы INPUT#
, INPUT$
, либо LINE INPUT#
.

3. ЗАКРЫТЬ файл. Оператор CLOSE
закрывает файловую переменную опосля выполнения всех операций ввода/вывода.

Недочет поочередных файлов в том, что вероятен лишь поочередный доступ к данным.

Можно создавать поочередные файлы 2-ух типов: 1 — поочередные файлы с разбитыми полями, где все поля на каждой строке файла делятся (ограничиваются) особенными знаками, и 2- неразделенные поочередные файлы, когда любой файл смотрится полностью идиентично и на дисплее, и на распечатке. Эти два типа файлов создаются при помощи операторов WRITE#
и PRINT#.
соответственно. Используйте INPUT#
, INPUT$
, либо LINE INPUT#
для оборотного считывания инфы с поочередного файла хоть какого типа.

Пример 1: записать строчку в файл, считать строчку из файла.

REM Работа с файлами. Пример 1.
REM Запись в файл
OPEN «file01.dat» FOR OUTPUT AS #1
A$ = «Это наша текстовая строчка»
PRINT #1, A$
CLOSE #1
REM Чтение из файла
OPEN «file01.dat» FOR INPUT AS #1
INPUT #1, B$
PRINT b$ ‘вывод на экран
CLOSE #1

В итоге выполнения программки будет сотворен файл «file01.dat» и файл будет содержать строчку
Потом файл будет открыт для чтения и из него будет прочитана и выведена на экран данная строчка.

Пример 2. Напишем программку для записи в файл отметки ученика на уроке. В файле будет хранится последующая информация:


ФИО

дата

отметка


Иванов Иван
22 февраля
4

Петров Петя
3 марта
5





REM Работа с файлами. Пример 2.
REM Запись в файл
OPEN «journal.dat» FOR APPEND AS #1
INPUT «Введите ФИО», FIO$
INPUT «Введите дату», DAY$
INPUT «Введите отметку», MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN «journal.dat» FOR INPUT AS #1
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK ‘вывод на экран
CLOSE #1

Эта программка будет создавать файл journal.dat, записывать введенные юзером данные, а потом считывать из файла journal.dat данные и выводить их на экран. Но в данной версии программки из файла мы будем получать постоянно первую строку (порцию) данных. Исправим это. Будем употреблять функцию EOF
, проверяющую достигнут ли конец файла.

REM Работа с файлами. Пример 2_2.
REM Запись в файл
OPEN «journal.dat» FOR APPEND AS #1
INPUT «Введите ФИО», FIO$
INPUT «Введите дату», DAY$
INPUT «Введите отметку», MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN «journal.dat» FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK ‘вывод на экран
LOOP
CLOSE #1

сейчас программка выводит из файла все данные.

Продолжим работу. Упростим задачку юзера — дату будем получать при помощи функции DATE$
, которая возвращает текущую дату в формате mm-dd-yyyy.

REM Работа с файлами. Пример 2_3.
REM Записьвфайл
OPEN «journal.dat» FOR APPEND AS #1
INPUT «ВведитеФИО», FIO$
INPUT «Введитеотметку», MARK
WRITE #1, FIO$, DATE$, MARK
CLOSE #1
REM Чтениеизфайла
OPEN «journal.dat» FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK ‘выводнаэкран
LOOP
CLOSE #1

Итак, что у нас вышло? Мы написали программку для наполнения и вывода на экран потрясающего журнальчика (для простоты мы не стали делить эти две части программки). Данные журнальчика хранятся в файле на диске.

Итог работы программки:

Примечание: Не считая операторов для сотворения, считывания и записи файлов, Basic имеет средства для воплощения определенных DOS-подобных сервисных программ снутри программки. Оператор NAME
переименовывает файлы, KILL
— стирает файлы, MKDIR
— делает сборники, CHDIR
— меняет текущий каталог, RMDIR
— уничтожает сборники.

Примечание: разглядим еще два примера (предназначение ясно из коментариев).

‘Пример открыть файл, назначенный принтеру
OPEN «LPT1:» AS #1
‘отправить строчку на принтер
PRINT# 1,»THIS IS A TEST»
CLOSE# 1 ‘закрыть переменную файла

‘открыть два различных файла
OPEN «CLOSEFIL.ONE» FOR AS #1
OPEN «CLOSEFIL.TWO» FOR AS #2
‘вписать строчку в любой файл
PRINT# 1,»THIS IS A TEST»
PRINT# 2,»THIS IS A TEST»
‘закрыть все файлы
CLOSE
END

Обучаемся программировать!
Конспекты школьника.

Комбинированные типы.

Под переменной
в языках программирования соображают программный объект
(число, слово, часть слова, несколько слов, знаки), имеющий имя и значение, которое быть может получено и изменено программкой. При объявлении переменных можно указать тип данных. Это делается при помощи оператора DIM
. В бейсике имеется несколько интегрированных типов: числовые (integer, long, single, double) и стоковые (string, string *).

При работе с огромным числом данных 1-го типа весьма комфортно употреблять массивы. Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений 1-го типа под одним и этим же именованием. К любому определенному значению массива, нужно обращаться через числовой индекс.

При написании программки, возникает необходимость обрисовать свойства
(характеристики) некого объекта
, представляемого и обрабатываемого в программке. Таковым объектом быть может человек, некий вычислительный комплекс, письмо, посылаемое по почте и т. д. Во всех схожих вариантах характеристики объекта представляются значениями разных типов и потому для их описания не могут быть применены массивы.

Для описания объекта «ученик» могут пригодиться, к примеру, последующие свойства:

  • фамилия, имя и отчество (строчки);
  • возраст (integer);
  • пол (строчка);
  • класс (integer);
  • буковка класса (знак);
    и т.д.

Для представления таковой разнородной, но логически связанной инфы комфортно употреблять комбинированный тип
. нужно отметить, что в данном случае определенные составляющие комбинированного типа, ввиду их различной природы, не могут идентифицироваться порядковыми номерами (индексами), как в массивах, потому для обозначения компонент употребляются идентификаторы (имена). Таковым образом, описание комбинированного типа представляет собой перечень описаний его частей; каждое описание похоже на описание обычный переменной. Для примера, приведенного выше, описание комбинированного типа PUPIL (ученик) может смотреться последующим образом:

TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE

Определив свой тип данных, вы сможете употреблять его для объявления переменных этого типа.

DIM Schoolchildrens AS Pupil

DIM Group(1 TO 25) AS Pupil

Доступ к компонентам (свойствам) переменной пользовательского типа осуществляется методом указания точки опосля имени переменной.

Schoolchildrens.fio = «ИвановИван»
Schoolchildrens.age = 15
Schoolchildrens.sex = «male»
Schoolchildrens.class = 10
Schoolchildrens.classname = «А»

PRINT Schoolchildrens.fio, Schoolchildrens.age, Schoolchildrens.sex, Schoolchildrens.class, Schoolchildrens.classname

Пример обычный программки:

REM использованиекомбинированныхтипов

REM описаниетипаученик
TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE

REM объявлениемассиваиз 3 элементовтипаученик
DIM Group(1 TO 3) AS Pupil

Group(1).fio = «ИвановИван»
Group(1).age = 15
Group(1).sex = «male»
Group(1).class = 10
Group(1).classname = «А»

Group(2).fio = «ПетроваМаша»
Group(2).age = 14
Group(2).sex = «female»
Group(2).class = 10
Group(2).classname = «Б»

Group(3).fio = «СидоровВася»
Group(3).age = 16
Group(3).sex = «male»
Group(3).class = 11
Group(3).classname = «В»

REM выводимнаэкранучеников 10 класса
FOR i=1 TO 3
IF Group(i).class = 10 THEN PRINT Group(i).fio
NEXT i

END

]]>