Учебная работа. Реферат: Бейсик
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
]]>