Upload
lythu
View
239
Download
2
Embed Size (px)
Citation preview
СЪДЪРЖАНИЕ ИЗРАЗИ В QBASIC ............................................................................................................................................................................................................................ 2
ОСНОВНИ ОПЕРАТОРИ в QBASIC ................................................................................................................................................................................................... 3
ПРОМЕНЛИВИ В QBASIC ................................................................................................................................................................................................................. 4
КОМАНДИ ЗА УПРАВЛЕНИЕ НА ПРОГРАМАТА ............................................................................................................................................................................. 5
Безусловен преход ..................................................................................................................................................................................................................... 5
Условен преход .......................................................................................................................................................................................................................... 6
Множествен избор (SELECT CASE) ............................................................................................................................................................................................. 7
Цикли ............................................................................................................................................................................................................................................... 8
Цикъл с параметри ..................................................................................................................................................................................................................... 8
Цикъл с предусловие ............................................................................................................................................................................................................... 11
Цикъл с постусловие ................................................................................................................................................................................................................ 12
Цикъл WHILE … WEND .............................................................................................................................................................................................................. 12
Случайни числа в QBASIC ............................................................................................................................................................................................................. 14
МАСИВИ ........................................................................................................................................................................................................................................ 15
ОСНОВНИ АЛГОРИТМИ С МАСИВИ ............................................................................................................................................................................................. 16
Функции за работа с текст ........................................................................................................................................................................................................... 18
ИЗРАЗИ В QBASIC • АРИТМЕТИЧНИ;
• УСЛОВНИ;
• ЛОГИЧЕСКИ;
• ТЕКСТОВИ.
Аритметичните операции са следните:
Знак Значение Пример
^ повдигане на степен X^Y
* умножение X*Y
/ делене X/Y
+ събиране X+Y
- изваждане X-Y
\ целочислено делене X\Y; 10\4 (отговор-2)
MOD остатък от целочислено
делене
X MOD Y
10 MOD 3 (отговор-1)
х2 – х + 2 на QBASIC ( х ^ 2 – х + 2 ) / (х ^ 4+5*х^2+40)
пример:х4+5х
2+40
УСЛОВНИоператори:
= - равно;
>- по-голямо;
< - по-малко;
>= - по-голямо или равно;
<= - по-малко или равно;
<>- различно.
Условните оператори имат значение true или false. Използват се в логически изрази като:
IF k>0 THEN …
WHILE I=0
ЛОГИЧЕСКИ изразиОператорите се свързват с AND ("И", конюнкция), OR ("ИЛИ", дизюнкция), NOT (отрицание),
например:
a+b>c AND d<>8
NOT(a>b)
ОСНОВНИ ОПЕРАТОРИ в QBASIC ОПЕРАТОР пример Изход на екрана
Оператор за печат:
Print “tekst”;4*5 Print “tekst”,4*5
tekst 20 tekst 20
Оператор за изчистване на екрана:
Cls
Cls Print 4 Cls Print 6
6
Динамично въвеждане на данни: INPUT "Съобщение", списък променливи
CLS
INPUT "What is your name"; name$
PRINT "Hello, "; name$; "! ";
INPUT "How old are you"; age
PRINT "The user, "; name$; " is "; age; " years
old"
What is your name?Ina
Hello, INA!
How old are you? 23
The user, INA is 23 age years
old
Статично въвеждане на данни
DATAсписък константи
READсписък променливи
RESTOREномер на ред или
отметка
10 DATA 5,25,19.6,30,12,"ABC"
20 DATA "BASIC","Pascal",25.9
READ vk%, s%
RESTORE 20
READ z1$, z2$
vk%, s% присвояват значения
5 и 25, а променливите z1$, z2$ -
значения "BASIC" и "Pascal".
Ако липсваRESTORE се присвояват
5, 25,19.6 и 30
Коментари REM или ‘
REM program to input
' произволен текст
Не извежда текста, защото е
коментар
Позиционира следващия оператор на n- тия ред и m-тата позиция
locate n,m
CLS
LOCATE 14, 34 'position the left eye
PRINT "<=>" 'draw the left eye
LOCATE 14, 43 'position the right eye
PRINT "<=>" 'draw the right eye
LOCATE 16, 39 'position the nose
PRINT "o|o" 'draw the nose
LOCATE 18, 36 'position the mouth
PRINT "\_______/" 'draw the mouth
LOCATE 19, 42 'the bottom
PRINT "The Face by QBasic"
ПРОМЕНЛИВИ В QBASIC Променливата е величина, която може да се променя по време на програмата.
Името и е произволен набор от символи от 1 до 40 символа. Първият символ е латинска буква, а останалите произволни
латински букви или цифри. Буквите могат да бъдат главни и малки. Накрая на променливата може да се сложи символ за разпознаване
на типа на променливата.Типовете дании са следните:
A%=12
Z$=”Planina”
n!=-54.2
Променливи
символни (A$)
Дробни с двойна точност (A#)
Дробни (A!, A) Използват се по подразбиране
Цели с двойна точност (A&)
цели (A%)
REM PROGRAM TO INPUT DAYS AND CONVERT INTO YEARS, MONTHS AND DAYS
CLS
INPUT “ENTER DAYS”; D
Y = D \ 365
MO = D MOD 365
M = MO \ 30
D = MO MOD 30
PRINT Y; “YEARS ” ; M; “MONTHS”; D; “DAYS”
КОМАНДИ ЗА УПРАВЛЕНИЕ НА ПРОГРАМАТА
.
1. Команди за безусловен преход;
2. Команди за условен преход;
3. Команди за цикъл.
Безусловен преход
Формат:
GOTOномер на ред или отметка
Управлението предава командандването на указания ред или отметка
Например:
GOTOW
…
W: PRINT"Решение получено"
Условен преход
Условния оператор може да се запише в една от две форми: линейна ( на един ред) и блокова (на няколко реда).
Линейна форма:
IFлогически изразTHEN<блок оператори 1> [ELSE<блок оператори 2>]
Блокова форма:
IFлогически изразTHEN
<блок оператори 1>
[ELSE <блок оператори 2>]
ENDIF
Rem visokosna li e
Input year
If (year>0) then
If (year mod 400=0) or (year mod 4=0) then
Print ”godinata”, year, ” e visokosna”
Else
Print ”godinata”, year,” e nevisokosna”
Endif
Endif
Rem chetnoilinechetno e chisloto
INPUT "vavedetechislo?"; X
A$ = "chetno"
IF X MOD 2 <> 0 THEN A$ = "ne" + A$
PRINT "vavedenotochislo e ", A$
REMenter any three numbers and display the middle number.
CLS
INPUT “ENTER ANY THREE NUMBERS”; A, B, C
IF A > B AND A < C OR A < B AND A > C THEN
PRINT A; “IS MIDDLE NUMBER”
ELSEIF B > A AND B < C OR B < A AND B > C THEN
PRINT B; “IS MIDDLE NUMBER”
ELSE
PRINT C; “IS MIDDLE NUMBER”
END IF
Rem izbor s goto
PRINT "Press 1 to clear the screen, or 2 to say 'Hello'!"
INPUT "What do you want to do"; choice
IF choice = 1 THEN GOTO clrscr
IF choice = 2 THEN GOTO hello
clrscr: CLS
PRINT "Done."
END
hello: PRINT "Hello, hello, hello!"
Множествен избор (SELECT CASE) Формат
SELECTCASEаритметичен израз или символен израз
CASE условие 1
<блок оператори 1>
CASE условие 2
<блок оператори 2>
……………….
[CASE ELSE
<блокопертори n>]
END SELECT
Оператора CASEможе да се укаже в три форми:
1) CASE константа 1, константа 2, …
2) CASEISзнак за отношение константа
3) CASE константа 1 TO константа
Пример
INPUT "Въведете значение ",A SELECT CASE A CASE 1,5 PRINT "А = 1 или А= 5" CASE IS >5 PRINT "А е по-голямо от 5" CASE -8 TO 2.5 PRINT "А е не по-малко от -8, но не по-голямо от 2.5" CASE else PRINT "Нито едно не е изпълнено" END SELECT
Цикли
В езикаQbasic са предвидени два основни способа за организиране на цикли:
Повторение на блок от команди зададено количество пъти(цикъл с параметри);
Циклично повторение на блок от команди докато се изпълнява или не се изпълнява някакво условие.
Цикъл с параметри FOR I = IN TO IK [STEP H]
<оператори на тялото на цикъла>
NEXT I
I – име на променлива, която се явява параметър на цикъла;
IN - началната стойност на I
IK - крайна стойност на I
H – стъпка на изменение на I. По подразбиранеH=1.
при H> 0 IN<IK;
при H< 0 IN>IK.
Например: 1) FOR X=10 TO 100 STEP 2
Y=SQR (X)
PRINT X,Y
NEXT X
2) FOR X=10 TO 1 STEP – 1
Y=X - 2
PRINT X,Y
NEXTX
Ограничения при исползованe наоператора на цикъла FOR … NEXT:
1. Не изменяйте значението на параметъра на цикъла вътре в цикъла.
FOR I=1 TO 5
I=I+1 ' неправилно
NEXTI
2. Никога не предавайте управлението вътре в цикъла.
GOTO 10 ' неправилно
FOR I=1 TO 5
10 INPUT A
S=S+A
NEXTI
Преждевременен изход от цикъла
За цикълаFORе предвидена възможност за безусловен изход от цикъла ( преди завършването му). Управлението се предава на
оператора след NEXT.
Формат:
EXIT FOR
Например:
FOR I=1 TO 10
INPUT "Въведете значение";F
IF F=100 THEN EXIT FOR
S=S+F
NEXT I
PRINT "значение "; S
Ако трябва да сметнем:
Сума Количество Произведение
S=0 K=0 P=1
S=S+A K=K+1 P=P*A
Пример : Да сметнем броя на положителните и произведението на отрицателните числа от N въведеничисла:
INPUT “въведи брой ”;N
К=0
P=1
FOR I=1 TO N
INPUT "въведи значението на променливата";A
IF A>0 THEN K=K+1
IF A<0 THEN P=P*A
NEXTI
PRINT"броя на положителните числа =";K
PRINT"произведението на отрицателните числа е =";P
Задача за богатия дядо
Дядо ми дава на всеки рожден ден толкова долара,колкото години навършвами ми ги спестяват. Колко
долара ще имам спестени на N-тиями рожден ден?
cls
К=0 „ спестени пари в началото
Input“на колко години си“;N
For X=1 to N
К= К + X
Nextx
Print “за “;N;”години натрупахте “; К ;” долара”
Задача за амебата
Едноклетъчна амеба на всеки 3 часа се дели на 2 клетки. Определете колко клетки ще има амебата след
Nдена (по 24 часа на ден)
cls
Input“въведете броя дни”; N
S=1
у=N*24
For x=3 to у Step 3
S=S*2
Nextx
print“след ”;N;“броя дни амебата ще има ”;S;“клетки”
Цикъл с предусловие
DO WHILE условие
Тяло на цикъла LOOP
- Изпълнява се докато се изпълнява условието
DO UNTIL условие Тяло на цикла LOOP
- Изпълнява се докато не се изпълнява условието
Цикъл с постусловие
DO
Тяло на цикъла LOOP WHILE условие DO
Тяло на цикъла LOOP UNTIL условие
REM печата числата по-малки от 10 a=0 chislo=10 DO WHILE a<chislo PRINT a a=a+1
LOOP
REMброи четните числа, които делят на 7 CLS a = 1 c=0 DO WHILE a <> 0
INPUT "vavedete chislo ili 0 za izhod:"; a IF a MOD 2 = 0 AND a MOD 7 = 0 AND a <> 0 THEN c = c + 1 END IF
LOOP PRINT "broj->"; c
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
Цикъл WHILE … WEND Формат:
WHILEлогически израз
Блок от команди
WEND
Пример:
WHILEPAS$<>"Петя"
INPUT"Введите пароль";PAS$
WEND
PRINT"здравей"; PAS$ Rem exit do
Count% = 0
Total% = 0 DO READ Name$, amount% IF Name$ = "XXX" THEN EXIT DO PRINT Name$, amount%
Count% = Count% + 1 Total% = Total% + amount% LOOP PRINT "THERE WERE "; Count%; "PEOPLE IN THE FILE." PRINT "THE SUM OF THEIR DONATIONS WAS: $"; Total%
PRINT "the average is: "; Total% / Count% DATA JIM,500,SUE,100,RICK,50,ADAM,450
DATA ENRICA,600,KIM,400,TOM,500,PAM,200 DATA MARIO,400,CARLA,900,XXX,0
Случайни числа в QBASIC
Rnd –оператор , който връща случайно дробно число между 0 и 1; int-връща цялата част на числото RANDOMIZE TIMER - генерира различна поредица от числа при повторно пускане на програмата
CLS FOR x = 1 TO 5 PRINT RND NEXT
.7055475
.0533424
.5795186
.2895625
.901948
CLS FOR x = 1 TO 5 PRINT RND * 10 NEXT
7.055475 0.533424 5.795186 2.895625 9.01948
CLS FOR x = 1 TO 5 PRINT INT(RND * 10) NEXT
7 0 5 2 9
CLS RANDOMIZE TIMER num = INT(RND * 5) + 1
FOR count = 1 TO 5
INPUT "Pick a number between 1 and 5: ", answer IF answer = num THEN PRINT "You win after"; count; "guesses!": END NEXT PRINT "You lose"
RANDOMIZE TIMER
FOR i = 1 TO 100 nstr = INT(25 * RND) + 1 npos = INT(80 * RND) + 1
cv = INT(RND * 15 + 1) COLOR cv LOCATE nstr, npos: PRINT "*"; NEXT i
МАСИВИ
Масивът е поредица от еднотипни елементи с общо име и различен индекс. Обявяване на масив:
DIM име_масив (максимален_индекс)
DIM X(50) ' обявява едномерен масив с 50 числа
DIM V$(12) 'обявява едномерен масив с 12 символни елемента
Запълване на масив
1) статистическо – с операторите DATA, READ и оператора за присвояване;
2)динамично с оператора INPUT и функцията RND
1. Пример на
статистисческо запълване
на масива.
DATA “sliva”,”ananas”,”limon”
DATA “portokal”,”kivi”,”grozde”
DIM A$(6)
FOR I=1 TO 6
READ A$(I)
PRINT A$(i)
NEXT I
2. Пример с оператори с
присвояване
DIM A (5) A(0)=4: A(I)=-2.5
А(3)=10: A(4)=0 A(5)=6: A(2)=3
3. Пример на запълване на
масива с функцията RND
DIM V(12)
FOR I=1 TO 12
V(I)=INT(RND(1)*10)
PRINT V(I);
NEXT J
4. Пример на
динамично запълване
INPUT "N= ";N
DIM A(N)
FOR I=1 TO N
INPUT A(I)
NEXT I
ОСНОВНИ АЛГОРИТМИ С МАСИВИ
1. Сума DIM A (9) S=0 FOR I=1 TO 9
А(I)=INT(RND(1)*10)
FOR N=0 TO 9
S=S+A(N)
NEXT N
PRINT сумата=;S
2. Намиране на минималния елемент по неговия индекс DIM L (5)
L(0)=4: L(I)=-2.5 : L(2)=-33:L(3)=10: L(4)=-6: L(5)=6:
MIN=L(0): K=0
FOR i=1 TO 9
IF MIN>L(i THEN K=i
NEXT I
PRINT “мин=”; L(k)
3. This program records the names of your kids. CLS
INPUT "How many kids do you have "; N
DIM kid$(1 TO N)
FOR I = 1 TO N
PRINT "What is the name of kid #"; I;
INPUT kid$(I)
NEXT I
PRINT "These are the names you entered : "
FOR I = 1 TO N
PRINT kid$(I)
NEXT I
4. This program averages a list of numbers input by the user. CLS
INPUT "How many numbers are in your list "; N
DIM num(1 TO N)
FOR I = 1 TO N
PRINT "What is the value of number #"; I;
INPUT num(I)
NEXT I
sum = 0
FOR I = 1 TO N
sum = sum + num(I)
NEXT I
PRINT "The average of your numbers is"; sum / N
PRINT : PRINT "Bye"
DIM A(8)
DATA 15,3,-2,0,4,1,8,9
FOR I = 1 TO 8
READ A(I)
PRINT A(I)
NEXT I
FOR I = 1 TO 8
S = S + A(I)
NEXT I
S = S / 8
PRINT S
Функции за работа с текст
функция описание пример LEN(„текст“) определя
дължината на текста
INPUT A$ | Привет!
PRINT LEN(A$) | 7
LEFT$(<име на текстова променлива >, <брой символи>)
Изрязва броя символи отляво
A$ = «Информационни технологии» B$ = LEFT$(A$, 6) PRINT B$ | Информ
RIGHT$(<име на текстова променлива >, <брой символи>)
Изрязва броя символи отдясно
A$ = «Информационни технологии» C$ = RIGHT$(A$, 10) PRINT C$ | технологии
MID$(< име на текстова променлива >, <позиция на първия избран символ>, <количество избрани символи>).
Изрязва от текстовата променлива зададеното количество символи, като започва от посочената позиция
A$ = «Информационни технологии»
D$ = MID$(A$, 3, 5)
PRINT D$ | форма
* MID$(A$, 3, 2)=“**“
|Ин**рмационнитехнологии
STR$(<число>). Преобразува числото в текст
F = 1365 |
F$ = STR$(F)
VAL(<текст>). Пробразува текст в число
PRINT 2*VAL(“2”) | 4
PRINT VAL(“ПРИВЕТ!”) |0