Файл: Основы программирования на языке QBasic (Работа с переменными).pdf
Добавлен: 24.04.2023
Просмотров: 144
Скачиваний: 2
End
При выполнение нового варианта программы результат будет иным. Вы можете запускать программу любое количество раз- но второй оператор PRINT все равно работать не будет. Оператор END прерывает выполнение программы и у нас будет выводиться только:
Это моя программа
Qbasic имеет три оператора, которые прерывают выполнение программы--END,Stop и System. Когда Qbasic встречает команды End и System, он закрывает вусе файлы и прекращает выполнение программы. Команда Stop отличается тем, что оставляет текущие файлы открытыми, временно приостанавливает выполнение и возвращает на экран текст программы. При следующем запуске выполнение программы начнется с оператора, следующего за оператором Stop.Но лучше всего использовать оператор End .
2.2 Ввод данных в программу. Оператор Input
Какими же способами можно ввести данные в программу? Во-первых , эта проблема решается с помощью оператора присваивания. Вот пример программы с оператором присваивания:
Rem программа суммирования двух чисел
Cls
Number1=3
Number2=7
summa=number1+number2
Print "number1=";number1
Print "number2=";number2
Print"summa=";summa
end
После запуска этой программы мы увидим на экране это:
Number1=3
number2=7
Summa=10
Сразу можно понять то, чтобы вычислить сууму другой пары чисел, мы должны будем вернуться в окно редактора и изменить программу.Решение возможное, но не самое лучшее. Как раз для этого случая в Qbasic вы можете присвоить переменной значение непосредственно с клавиатуры во время выполнения программы. Простейшая форма оператора, дающего вам возможность это сделать:
INPUT number,
где number-имя переменной, для которой требуется ввод значения
Команда INPUT NUMBER является уже достаточой командой, при встрече с которой программы выполняет следующие действия:1)После запуска программы на экране появиться знак вопроса.2) Программа приостанавливает работу и ждет, когда вы наберете какие-либо значение на клавиатуре. Нажатие клавиши ввода (то бишь ENTER)сообщает программе, что ввод окончен.3) Введенное значение присваивается перем и когда мы запускали программу у нас просто высвечивался значок вопроса(чтобы мы ввели переменную). А если мы напишем: Input "высота"; hТо он бы нам написал после запуска не просто вопросительный знак , а:высота?Ну что вы видите как полезно это свойство оператора Input. Надо только запомнить, что описание пишется в двойных кавычках и отделяется от переменной точкой запятой(;)Ну посмотрите как написал это я раньше. Кстати надо еще отметить, что оператор Print обладает таким же свойством, как и Input. Зачем спросите вы а я отвечу: Для того же зачем и у Input(Вот например у вас ответов десять и после выполнения программы он вам выведет десять чисел и фиг знает, где какое число. Надо помнить что тоже надо отделять точкой с запятой).Вот пример:Print "Площадь треугольника равна=";s.
2.3 Управляющие конструкции QBasic
1. Оператор безусловного перехода GOTO N, где N-метка. В качестве N можно взять любое число, не обязательно совпадающее с номером строки, так как в QBasic 4.5 строки можно не нумеровать. Но двух одинаковых меток в одной программе не должно быть. Исполнение программы будет продолжено с той её части, которая начинается с указанной метки.
Пример:
.......
GOTO 10
.......
10 PRINT "Текст"
.......
2. Условный оператор IF...THEN...ELSE (Если...Тогда...Иначе):
IF <условие> THEN <список операторов> ELSE <список операторов>
Если заданное условие истинно, выполняется список операторов, стоящий после THEN, в противном случае выполняется список операторов, стоящий после ELSE.
Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...THEN.
Условия представляют собой логические соотношения: равенства или неравенства = равно, <> неравно, > больше, < меньше, >= больше или равно, <= меньше или равно.
При использовании сложных условий (объединении двух и более условий) применяют слова AND (И) и OR (ИЛИ): Условие1 AND (или OR) Условие2...
Условный оператор позволяет реализовать алгоритм с ветвлением.
Пример 1:
CLS
INPUT "Введите год основания Москвы: M="; M
IF M = 1147 THEN PRINT "Выправы!" ELSE PRINT "Вы ошиблись!"
Пример 2:
CLS
PRINT "Вычислите y=1/(x-2) для всех x"
INPUT "Введите x=", x
IF x = 2 THEN PRINT "При x=2 функция не определена!": END
y = 1 / (x - 2)
PRINT "y="; y
Применяется также частный случай условного оператора - оператор условного перехода: IF <условие> GOTO N ELSE <список операторов> Число N - метка. Если условие выполняется, то происходит переход по метке N, а иначе выполняется список операторов, стоящих после ELSE. Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...GOTO.
Пример 3:
CLS
INPUT "Если хочешь каникулы, вводи 1. Если нет, любое число. n=", n
IF n = 1 THEN GOTO 10 ELSE GOTO 20
10 PRINT "Хочу каникулы!": END
20 PRINT "Хочу учиться!"
3. Оператор цикла FOR...TO...NEXT... позволяет реализовать циклический алгоритм, когда часть программы может быть выполнена много раз подряд. FOR...TO... - начало цикла, NEXT... - конец цикла.
То, что стоит между началом и концом цикла, называется телом цикла. Иногда также применяются вложенные циклы, то есть циклы могут быть вложенными один в другой.
FOR X=A TO B STEP H
...................
NEXT X
Здесь X - переменная, A - начальное значение переменной, B - конечное значение переменной, H - шаг, с которым меняется переменная. Если шаг STEP H отсутствует, то по умолчанию шаг H=1. При этом переменная X называется счётчиком цикла. Повторение участка программы с шагом H происходит до тех пор, пока XB.
Пример 1: Напечатать на экране текст 20 раз.
CLS
FOR X=1 TO 20
PRINT "СНовымГодом!"
NEXT X
Пример 2: Вычислить сумму n первых членов ряда S=1+1/4+1/9+...+1/n^2
CLS
INPUT "Введите число членов ряда: n=", n
FOR i = 1 TO n
S = S + 1 / i ^ 2
NEXT i
PRINT "Сумма n первых членов ряда равна: S=", S
Пример 3: Нарисуйте 15 разноцветных концентрических окружностей.
SCREEN 7
FOR i = 1 TO 15
CIRCLE (160, 100), i * 6, i
NEXT i
Пример 4: Разлинуйте экран в клеточку.
SCREEN 7
FOR i = 1 TO 32
LINE (0, 10 * i)-(320, 10 * i), 15
LINE (10 * i, 0)-(10 * i, 200), 15
NEXT i
Примеры 5,6 : Одновременное использование циклического и условного операторов. Вычисление функций, имеющих ограничения в области определения.
Примечание: Оператор IF...THEN...ELSE в QBasic должен быть записан в одну строку!
Пример 5.
CLS
REM Вычислить функцию y=1/(x^2-5*x-6)
FOR x = -10 TO 10
IF x ^ 2 - 5 * x - 6 = 0 THEN PRINT "При x=-1, x=6 функциянеопределена!"
ELSE y = 1 / (x ^ 2 - 5 * x - 6)
PRINT "x="; x, " y="; y
NEXT x
Пример 6.
CLS
REM Вычислить функцию y=1/SQR(x^2-3*x+2)
FOR x = -5 TO 5
IFx>= 1 ANDx<= 2 THENPRINT "При 1<=x=<2 функция не определена!"
ELSE y = 1 / SQR(x ^ 2 - 3 * x + 2)
PRINT "x="; x, " y="; y
NEXT x
2.4 Некоторые полезные команды QBasic
Оператор LOCATE a, b - указывает позицию экрана (a-строка, b-столбец), начиная с которой будет печататься текст или число. Обычно используется перед оператором PRINT. Пример: LOCATE 4, 10: PRINT "Здравствуй, мир!"
Оператор SWAP X1, X2 - заставляет переменные X1 и X2 обменяться своими значениями. Пример:
X = 3
Y = 5
SWAP X, Y
Директива FILES выдает список подкаталогов и файлов в текущем каталоге. Кроме того, выдается свободная память на жестком диске.
Директива SHELL осуществляет сеанс связи с MS-DOS. Возвращение обратно из DOS в QBasic - команда EXIT.
Кроме того, директива SHELL "name" позволяет запускать программу name.exe или name.com, указанную в кавычках. Эта программа должна находиться в текущем каталоге, там же, где и *.bas файл. Расширение exe или com можно не указывать.
2.5 Примеры некоторых программ
Пример 1. Первая программа - Привет мир[4]!
1 PRINT "Hello world!"
Пример 2. Произведение элементов массива
|
1 2 3 4 5 6 7 8 9 10 11 |
<span style="font-family: sans-serif;">CLS</span> N = 10 <span style="font-family: sans-serif;">DIM</span> M(N) P = 1 FOR I = 1 TO N M(I) = <span style="font-family: sans-serif;">INT</span>(<span style="font-family: sans-serif;">RND</span> * 100)+1 <span style="font-family: sans-serif;">PRINT</span> I; "-"; M(I) P = P * M(I) NEXT I <span style="font-family: sans-serif;">PRINT</span> "_________" <span style="font-family: sans-serif;">PRINT</span> "Proizvedenie = "; P |
Пример 3. Среднее арифметическое элементов массива
|
1 2 3 4 5 6 7 8 9 10 |
CLS N = 15 DIM M(N) SUMM = 0 FOR I = 1 TO N M(I) = INT(RND * 100) PRINT I; "-"; M(I) SUMM = SUMM + M(I) NEXT I PRINT "Среднее арифметическое чисел = "; SUMM/N |
Пример 4. Нахождение минимального элемента массива
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
CLS INPUT "N"; n DIM e(n) FOR i = 1 TO n INPUT e(i) NEXT CLS min1 = e(1) PRINT "Массив:" FOR i = 1 TO n PRINT e(i); IF e(i) < min1 THEN min1 = e(i): min2 = i NEXT PRINT "Минимальный :"; min1; PRINT "Порядковыйномер:"; min2 SWAP e(min2), e(n) PRINT "Новыймассив:" FOR i = 1 TO n PRINT e(i); NEXT |
Пример 5. Чётное или не чётное число
1
2
3
4 CLS
INPUT "Введите число N=", N
IF N MOD 2 THEN PRINT "Числонечётное" ELSE PRINT "Числочётное"
END
Пример 6. Сумма элементов массива
|
1 2 3 4 5 6 7 8 9 10 11 |
CLS N = 15 DIM M(N) SUMM = 0 FOR I = 1 TO N M(I) = INT(RND * 100) PRINT I; "-"; M(I) SUMM = SUMM + M(I) NEXT I PRINT "_________" PRINT "SUMM = "; SUMM |
Пример 7. Максимальный элемент массива[5]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span style="font-family: sans-serif;">CLS</span> N = 15 <span style="font-family: sans-serif;">PRINT</span> "Massiv: "; <span style="font-family: sans-serif;">DIM</span> M(N) FOR I = 1 TO N M(I) = <span style="font-family: sans-serif;">INT</span>(<span style="font-family: sans-serif;">RND</span> * 100) <span style="font-family: sans-serif;">PRINT</span> M(I) ; NEXT I MAX=M(1) FOR I = 2 TO N IF MAX < M(I) THEN MAX=M(I) NEXT I <span style="font-family: sans-serif;">PRINT</span> <span style="font-family: sans-serif;">PRINT</span> "_________" <span style="font-family: sans-serif;">PRINT</span> "Maximum = "; MAX |
Пример 8. Сортировка случайного массива
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<span style="font-family: sans-serif;">CLS</span> N = 10 <span style="font-family: sans-serif;">DIM</span> M(N) <span style="font-family: sans-serif;">PRINT</span> "Massiv:" FOR I = 1 TO N M(I) = <span style="font-family: sans-serif;">INT</span>(<span style="font-family: sans-serif;">RND</span> * 100) <span style="font-family: sans-serif;">PRINT</span> M(I); NEXT I FOR I = 1 TO N - 1 FOR J = I + 1 TO N IF (M(I) > M(J)) THEN <span style="font-family: sans-serif;">SWAP</span> M(I), M(J) NEXT J NEXT I <span style="font-family: sans-serif;">PRINT</span> <span style="font-family: sans-serif;">PRINT</span> "Sort massiv:" FOR I = 1 TO N <span style="font-family: sans-serif;">PRINT</span> M(I); NEXT I |
|
|
1 |
[/spoiler] |
|
Пример 9. Счастливый билет или нет?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
REM Анализ "счастливого" билета DECLARE FUNCTION LUCK (M AS LONG) INPUT "Введите номер билета "; N& IF LUCK(N&) = 1 THEN PRINT "Радуйтесь - счастливый" ELSE PRINT "Нет счастья в жизни" END IF END FUNCTION LUCK (M AS LONG) REM Подсчет и сравнение сумм старших и младших цифр M REM Если суммы совпадают, то LUCK=1 DIM A(6) LUCK = 0 IF M < 0 OR M > 999999 THEN PRINT "luck : недопустимыйаргумент": EXIT FUNCTION END IF FOR I = 0 TO 5 A(I) = M MOD 10: ' Выделение очередной цифры M = (M - A(I)) / 10: ' Удаление обработанной цифры NEXT I IF (A(0) + A(1) + A(2) = A(3) + A(4) + A(5)) THEN LUCK = 1 END FUNCTION |
Пример 10. Разложение числа на простые множители
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
REM Разложение числа на простые множители CLS K& = 2: J% = 0 INPUT "Введите целое число: ", M&: M1& = M& / 2 PRINT M&; "="; M1: IF M& MOD K& = 0 THEN J = 1: M& = M& / K&: PRINT K&; IF M&<> 1 THEN PRINT "*"; ELSE K& = K& + 1 END IF IF K&<= M1& THEN GOTO M1 IF J = 0 THEN PRINT " простое число" END |
Заключение
Подведя итог работы, сделаем некоторые выводы. Язык BASIC (расшифровывается как Beginner's All-purpose Symbolic Instruction Code. Его разработчиками выступили Джон Кимини и Томас Куртц в Дартмутском колледже. США, в середине 1960-х годов.
Язык программирования BASIC является достаточно важным в линейке языков высокого уровня и занимает среди них почетное место. С самого начала данный язык задумывали как универсальный для начинающих пользователей, даже средства программирования на BASIC до сих пор включаются в комплект поставки персональных компьютеров, — как обязательный элемент технологии.
Перечислим некоторые достоинства BASIC исходя из позиций массового пользователя):
• простота в синтаксисе;
• простота организации данных, а также самих управляющих структур;
• достаточно полный набор встроенных команд и функций, которые могут легко позволить выполнить различные операции, например - управление текстовым и графическим экраном, или же обработать символьные строки, ошибки и пр).
Среди достоинств BASIC особо следует подчеркнуть наличие возможности работы в режиме интерпретации, когда резко упрощается сам процесс отладки программ: исполнение почти каждой команды можно проверить сразу после ее написания. И ведь правда – достаточно трудно будет найти иной другой язык, программа которого (завершенная программа!) состояла бы только из единственного оператора Print «привет»