Лекция: 68 сағ. Практикалық сабақтар: 136 сағ СӨЖ: 33 сағ обс¤Ж: 33 саѓ Барлық сағат саны: 270 сағ


K=1: R=1 IF K>N THEN 70 R=R*K: K=K+1



бет7/15
Дата14.06.2016
өлшемі1.39 Mb.
#135151
түріЛекция
1   2   3   4   5   6   7   8   9   10   ...   15
    Бұл бет үшін навигация:
  • K=1: R=1

K=1: R=1


  1. IF K>N THEN 70

R=R*K: K=K+1

COTO 40


  1. PRINT N,”!=”; R

END

40- жолдағы шарт сақталмаса, келесі жолдағы серия орындалады. Шарт сақталмаса басқару 70- жолға өтеді де R- дің мәнін экранға шығарылады.


WHILE WEND операторы бойынша:

REM факториал

INPUT “R=”;N

K=1: R=1


WHILE K<=N

R=R*K: K+1


WEND


PRINT n;”!=”;R

Ескерту: Кез-келген циклді құру кезінде оның аяқталу болатынын алдын-ала тексеріп алған жөн. Себебі дұрыс құрылмаған циклден шыға алмай (циклденіп) қалуы мүмкін. Мысалы шексіз цикл:


REM факториал

INPUT “n=”;N

K=1: r=1

WHILE K<=N

R=R*K

WEND


PRINT n;”!=”;R

“Дейін” циклі

Бұл цикл де IF операторын пайдаланып құрылады. “Дейін” циклінде алдымен серия орындалып, кейін шарт тексеріледі.
REM факториал

INPUT “n=”;N


K=1: R=1


40 R=R*K: K=K+1

IF K<=N THEN 40

PRINT ”n”!=”;R
40- жолдағы серия орындалады. Кейін шарт тексеріледі. Шарт сақталса басқару 40- шы жолға беріледі. Ал шарт сақталмаса PRINT операторы орындалады.

3. Оператор DO … LOOP


DO… LOOP операторы WHILE … WEND операторына ұқсас. Бірақ оның қолданылу мүмкіндігі едәуір кең. Тексерілетін шарт оператордың тек басында ғана емес, соңында да қолданылуы мүмкін.

1-ші


DO UNTIL шарт

цикл денесі (серия)

LOOP
2-ші

DO WHILE шарт

цикл денесі (серия)

LOOP
3-ші

DO

цикл денесі (серия)



LOOP UNTIL шарт
4-ші

DO

цикл денесі (серия)



LOOP WHILE шарт

DO-делать

LOOP-цикл

UNTIL-до


WHILE-пока

WEND-двинтесь


Егер UNTIL сөзі қолданылса, онда (серия) цикл денесі шарт сақталмаған кезде ғана орындалады.

WHILE сөзі қолданылса шарт сақталғанда ғана серия орындалады.


REM

UNTIL “n=”;N

K=1: R=1

DO UNTIL K>n DO WHILE K<=n

R=R*K: K=K+1 R=R*K: K=K+1

LOOP LOOP

PRINT R PRINT R

END END


REM

INPUT “n=”:N

K=1 : R=1

DO DO


R=R*K: K=K+1 R=R*K: K=K+1

LOOP UNTIL K

PRINT R PRINT R
Лекция 12

Таќырыбы: “Үшін” циклы. FOR, NEXT операторлары. Цикл ішінде цикл.

Жоспар:


  1. “Үшін” циклы.

  2. Цикл ішінде цикл.


Пайдаланылѓан єдебиеттер:

О. Камординов. “Есептеуіш техника және программалау”

Г. Свитозарова, А. А. Мельников, А.В. Козловий “Практикум по программированию на языке Бейсик”

Егер цикл де қайталану саны белгілі болса, программада “Үшін” циклон пайдаланған дұрыс. Бейсикте бұл құрылымның жүрілісі:

FOR k=k0 TO Kn [STEP H]

S

NEXT<[цикл параметрі]>



FOR- цикл басының операторы, не цикл тақырыбы деп.,NEXT-цикл соңы операторы деп., К-цикл параметрі, цикл санауыш, не басқарушы айнымалы деп те аталады; K0 мен Kn-параметрдің , бастапқы және соңғы мәндері. (FOR-үшін, NEXT-келесі, n-қадам ұзындығы, s-цикл денесі)

Цикл денесі басқарушы айнымалының мәні К0-ден бастап Kn-нен асқанға дейін қайталанып орындала береді. Құрылымда көрсетілгендей , FOR операторының құрамында TO (дейін) және STEP (қадам) қызметші сөздері бар. Егер n=1 болса, STEP H қызметші сөзін праграммада тастап кету де мүмкін, NEXT операторында да цикл параметрін жазбауға болады, ол жазылған кезде басқарушы айнымалы атымен бірдей болуы тиіс. Цикл санауыш Бейсикте рұқсат етілген кез-келген идентификатор бола алады. K0, Kn, n-бүтін, бөлшекте, теріс сандар немесе арифметикалық өрнек түрінде берілуіде мүмкін.

Өткен тақырыптағы факториалды есептейтін программаның FOR-NEXT операторын пайдаланып құрылған түрі:

10 REM Факториал

20 INPUT”n=”; N& R=1

30 FOR k>1 TO N

40 k=k*k

50 NEXT


60 PRINT “ ”n” 1=”; R

  1. END

Бұл программаның 20-жолына к=1 командасының кіргізілмегені көрініп тұр, ал FOR операторында бірінші жолы пайдаланылады.

Ескерту. FOR k=k0 TO Kn STEP H циклінде K0>Kп , n>0 болса, цикл орындалмай, тастап кетіледі, сондай-ақ k0

Мысалы y=ln(1+x)/(x^2+1) функциясын [0; 1] кесіндісінде c.2 қадам бойынша кестелеу керек.

Программаның орындалу нәтижесін автоматты түрде кесте бойынша беру есептің талабына сай келеді. Осыған сәйкес, прогрмманы төмендегіше құру мүмкін.



  1. REM кестелеу

  1. INPUT “a, b, n=”; A, B, N

  1. H=(B-A)/N

  1. PRINT STRING $ (38, “-”)

  1. PRINT “k”; TAB (4) “/”; TAB (10) “x”; TAB (20) “/”; TAB (26) “4”; TAB (38) “/”;

  1. PRINT STRING $ (38, “-”)

  1. FOR k=1 TO N

  1. X=A+K*H

  1. Y= LOG (1+X)/(S^2+1)

  1. PRINT “K”; TAB (4) “/”; TAB (10) X:TAB (20) “/”; TAB (22) Y:TAB (38) “/”;

  1. PRINT STRING $ (38, “-”)

Rub

?-0, 1,5



К

х

Y

0

.0

0

1

.2

.175309







5

10

.346573

Программада:

20: a,b,n- мәндерін ендіру (а=0, в=1, n=5, n-[a,b] кесіндісін тең бөліктерге бөлу саны); 30: h мәнін есептеу (егер 20- жолға n-нің орнына h енгізілсе 30- жолдағы меншіктеу командасын N=INT((B-A)/h) түрінде жазу керек. 40-60 кесте басындағы екі кесіндіні сызып, аралығына k,x,y айнымалыларын енгізу: 70-110: цикл х=в-ға дейін (b=a+n*h) y функциясының мәндерін n қадаммен жай дәлдік бойынша есептеу, кестеге сызу (100 жол) 120: кестенің төменгі сызығын сызу.
Цикл ішінде цикл

Бейсикте цикл ішінде циклдің жазылу түрі.

FOR K=K0 TO Kn

FOR J=J0 TO Jn

S

NEHT j: NEHT K


Мұндағы j – ішкі цикл параметрі, К – сыртқы цикл параметрі, NEHT J: NEHT K операторын N=x,j,k түрінде жазу да мүмкін (бірінші параметр ішкі цикл параметрі болуы тиіс)

Мысалы: Көбейту кестесін есептеп , көбейту нәтижелерін экранға шығару керек.


10 REM кесте

  1. FOR K=1 TO 10

  1. FOR j=1 TO 10

  1. A=K*J

50 PRINT USING “###”; A:

  1. NEHT j

  1. PRINT K

  1. NEHT K

Программадағы сыртқы цикл параметрі бірінші мәнді қабылдаған кезде (К=1 кезінде) ішкі цикл параметрі кезектен 1,2,3,4,5,6,7,8,9,10 мәндерін қабылдап шығады да , 50- Жол 40- жолдың орындалу нәтижесі болатын мәндерді (1,2,3,4,5,6,7,8,9,10 сандарын) бір жол бойында экранда көрсетеді. 50- жол соңына нүктелі үтір символы сол үшін қойылған. 70- жолдың орындалу нәтижесінде курсор экранның бір жолын бос тастап кетіп, онан соңғы жол басына орналасады. Бұдан әрі ішкі цикл к=2 үшін орындала бастайды.т.с.с

Программаның орындалу нәтижесінің матрица түрінде экранда көріну түрі мынадай:
1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

• • • • • • • • • • •


  1. 20 30 40 50 60 70 80 90 100

Кестенің әр бағанында көрінген сандардың соңғы цифрлары әр баған бойында жазылуы, ол PRINT USING операторының әрекеті (оператора әр сан үш орындық цифрлар тізбегімен тұратын атіп шығару енгізілген орындар оң жақтан бастап есептеледі)


Әр түрлі есептеу жұмыстарын орындайтын көлемді программаларды шығып программалар-процедуралар түрінде құрып, оларды негізгі программада біріктірген ыңғайлы.Процедурада функия сияқты нәтижені қайтарып бермейді, ол тек қана-операторлар тізбегін орындайды. Процедурада функция сияқты құрылады.

Правка→Редактирование→Новая сув

Subvoutine →процедура-акыл.

Диалогтың терезеде процедура атын енгіземіз. Атына типті білдіретін символды тіркеп жазудың қажеті жоқ.


SUB процедура аты

END SUB
Мысалы: Тік бұрышты үшбұрыштың гипотенузасын есептейтін процедура құру керек.Катеттер берілген.


SUB Gipotenusa (A,B)

C= SAR (A^2+B^2)

PRINT C

END SUB
Процедураны негізгі программаның кез-келген жерінде шақыру үшін төмендегі екі тәсілдің бірін пайдаланамыз.




    1. CFLL GIPOTENUSA (a,B)

    2. GIPOTENUSA A,B

ҮСҮ табу процедурасы.

SUB ҮСҮ (A,B,C) DECLARE SUB GIPO TENUSA (A,B)

IF A>B THEN DECLARE SUB ҮСҮ (A,B,C)

X=A INPUT A,B,C,D,E

ELSE GIPOTENUSA A,B

L=B CALL ҮСҮ (C,D,E)

END IF

IF x>c THEN



X=X

ELSE


X=C

END If


PRINT X

END SUB


Лекция 13

Таќырыбы: Сандық массивтер.

F(x) функциясының [a,b] кесіндісіндегі ең кіші және ең үлкен мәндері. DIM, OPTION, BASE операторлары.

Сандық массивтің ең кіші және ең үлкен элементтерін табу.

F(x) фнкциясының [a,b] кесіндісіндегі ең кіші және ең үлкен мәндері.


Жоспар:

  1. Массив үғымы және оның түрлері.

  2. DIM, OPTION, BASE операторлары.

  3. Массивтің ең үлкен және ең кіші элементтерін табу.


Пайдаланылѓан єдебиеттер:

Д. Камардинов “Есептеуіш техника және программалау”

Г. Светозарова, А.А Мельников, А.В. Козловский “Практикум по программировнию на языке Бейсик”

1. Бір типті шамалардың бір ғана ат беріліп реттелген тізбегі массив деп аталады. Массивпен жұмыс істеу үшін оның әр элементінің мәні белгілі болуы тиіс. Массивтің бүтін не нақты сандардан тұратын сандық және символдық типтері бар. Массивтердің бір өлшемді, екі өлшемді түрлері бар. Алгоритм курсындағы сызықтық таблица – бір өлшемді массив, тіктөртбұрышты таблица – екі өлшемді массив. Екі өлшемді массивті - матрица деп атайды.

Бейсикте бір өлшемді массивтермен және матрицалармен жұмыс істеу мүмкін, массив элементі осы массивтің атымен белгіленіп, оның қатарына элементтің нөмірі (индекс) жай жақшаларға алынып жазылады және элементтерді нөмірлеу әдетте 0-ден басталады. Мысалы, төрт нақты сандардан тұратын сызықтық А-массиві элементтерінің белгіленуі: А(0), А(1), А(2), А(3) мұндағы 0,1,2,3 – элемент нөмірлері.

2. IBM бейсикте құрылатын программада пайдаланылатын массивтен бұрын OPTION BASE операторын енгізіп қоюға болады. (Option base – берілгендерді таңдау). Ол А(N) массиві үшін жадыдан n орын қалдырып кетеді. Бұл кезде массив элементтерін 1-ден бастап нөмірлеген дұрыс.

Массивтермен жұмыс істеу программасына оларды сипаттайтын DIM операторын алдын-ала енгізіп қою керек. Оператордың сипатталу үлгісі:
DIM <айнымалы> (индекстер) [<айнымалы> (индекстер)]
<айнымалы> - массив аты , оның соңына элементтер типін сипаттау символы енгізілуі тиіс. (%,$); индекстер – ең соңғы элементтің индекстері (не индексі). Мысалы DIM операторы арқылы сипатталған. DIM % (15) сипатамасын оқып шығып, жадыдан бүтін типті А% массиві үшін қатар орналасқан, әр қайсысы екі байттық 16 ұяшық қалдырып кетеді (Программаға OPTION BASE 1 операторы енгізілген жағдайда 15 ұяшық қалдырылады).

Егер бүтін типті массив шағын программаға енгізілсе , оның атауына % сипаттамасын тікелей тастап кету де мүмкін.

Бейсикте жолдары мен бағандарының саны n+1, m+1 болатын А матрицасының элементтері А(k,g) түрінде белгіленеді (k=0,1,2…n; j=0,2…m).

Мысалы


А= матрицасының элементтері:

А(0,0)=1, A(0,1)=4, A(0,2)=1,6, A(1,0)=2, A(1,0)=-7, A(1,2)=15

Матрицаның сипатталуы : DIM(1,2).

Оперативті жадты үнемдеу қажет болса, матрица үшін де программаға алдын-ала OPTION BASE 1 операторын енгізіп , индекстерді 1-ден бастауға болады.

Мысалы, мәндері 5,8,4,10,14, 2.6, 9.8 болатын сызықтық А массиві элементтерінің қосындысы және 0.001 дәлдік бойынша олардың орта мәнін табу керек.
10 REM қосынды , орта мән

20 OPTION BASE 1

30 INPUT “n =” ; N: DIM A(N): S=0

40 FOR k=1 to n

50 PRINT “ А(“k”)=” ; : INPUT A(k)

60 S= S+A(k)

70 NEXT K: ORTMN=S/N

80 PRINT “S=”; S

90 PRINT “орта мән =”;

100 PRINT USING “##.###” ; ORTMN

110 FOR j=1 to n

120 PRINT A(j)

130 NEXT j

140 END
50 – жолда алдымен PRINT “А(“К”) = “ ; операторы жазулы. Себебі бұл жолды 50 INPUT “А(“K”) =”; А(K) түрінде жазу синтаксистік қате.

INPUT операторының сұрақ түрінде жазылған параметрінің ішіне қосымша тырнақшалар жазу мүмкін емес.


  1. Сандық массивтің ең кіші және ең үлкен элементтерін табу.

Практикада компьютер арқылы сандық массивтің ең кіші және ең үлкен элементін табу жиі кездеседі. N элементтен тұратын сызықтың А массивінің ең кіші элементін (М) және оның нөмірін (L) табу тәсілі мынадай:



  1. M және L үшін бірінші элементтің мәні мен оның нөмірі алынады.

М = A(1) ; L = 1 ;



  1. Екінші элементтен бастап массивтің әр элементінің мәні бірінші элементтің мәнімен цикл бойынша біртіндеп салыстырылып, алдымен кездескен А(1)-ден кіші мән мен осы элементтің нөмірі M және L айнымалыларына меншіктеледі ( бұл кезде машинаның M,L ұяшықтарына жаңа сандар ендірілгендіктен, оларды сақтауға бұрынғы мәндер өшіп қалатыны белгілі).

  2. Қалған массив элементтері біртіндеп М – нің осы жаңа мәнімен салыстырылады да,

2-пунктегі сияқты кезекті әрекет орындалған соң циклді орындау одан әрі қарай жалғаса береді.

  1. Цикл аяқталған кезде табылған ең кіші элемент пен оның нөмірі экранға шығарылады . ( массивтің ең үлкен элементін табу тәсілі де осы сияқты)

Мысалы, мәндері 5,8,2,4,10,2,3, 9.7 массивінің ең кіші және ең үлкен элементтерін табу программасын құру керек.


    1. REM

    1. DEF FNY (X) = < функция >

  1. INPUT “ n – [a,b]-ның бөлу саны, a,b,N=”; A,B,N

40 DIM Y(N): H=(B-A)/N : K=0

50 FOR X=A TO B STEP H



  1. y(k) = FNY(X) : K=K+2

70 NEXT

80 F1 = Y(0) : F2 = Y(0)



  1. FOR K=1 TO N

100 IF Y(K)110 IF Y(K)>F2 THEN F1=Y(K)

120 NEXT

130 PRINT “ең кіші мән”; F1

140 PRINT “ең үлкен мән”; F2


Сандық массивті реттеу SWAP операторы.

N элементтен тұратын сандық массивті өспелі не кемімелі түрде реттеу (сорттау) , ал текстік массивті алфавит бойынша реттеу және ғылыми басқару есептерінде жиі кездеседі. Сандық массивті реттеудің бірнеше тәсілі бар:

Минимумды тізбекті іздеу арқылы, қабықша тәсілі бойынша, шелл әдісі бойынша, жылдам реттеу, т.б. Біз мұнда бірінші тәсілден баяндаумен шектелеміз. Минимумды тізбекті іздеу арқылы реттеу тәсілінде бірінші рет А массивінің ең кіші элементі табылады да, ол массивтің бірінші элементімен (А(1)-мен) алмастырылады. Одан әрі қалған N-1 элементтің ең кіші элементі ізделіп, табылған мән А(2)-мен алмастырылады, т.с.с. А(K) мен A(L) элементтерін алмастыруды SWAP A(K), A(L) операторы не

M=A(K): A(K) = A(L) : A(L)=M

Командалары арқылы орындау арқылы мүмкін. (SWAP-алмастыру)
Өткен тақырыптағы массивті өспелі түрде реттеу керек.


  1. REM өсу бойынша реттеу

  1. INPUT “n=’’ ; N: DIM A(N)

  1. FOR I=1 TO N: READ A(I): NEXT I

  1. FOR K=1 TO N-1

  1. M=A(K) ; L=K

  1. FOR j=K+1 TO N

  1. IF A(j)

  1. NEXT j

  1. A(K)=A(L): A(L)=M

100 NEXT K

110 FOR K=1 TO N : PRINT A(K) ; : NEXT

120 DATA 5, 8.2, 4,10, 2, 3, 9.7

130 END
SWAP операторын пайдаланып құрылатын программаның жоғарыдағы программадан өзгешелігі тек 90 – жолында. Оны 90 SWAP A(K), A(L) түрінде жазса болғаны.




Лекция 14

Таќырыбы: Матрица мен жұмыс. INT, RND, RANDOMIZE, SGN функциялары.
Жоспар:

    1. Матрица.

    2. INT функциясы.

    3. RND , RANDOMIZE функциялары.

    4. SGN функциясы.



Пайдаланылѓан єдебиеттер:

О.Камардинов “Есептеуіш техника және программалау”.

Г.Светазарова, А.А.Мелоников, А.В.Козловский “Практикум по программированию на языке Бейсик”.

Матрицаны жадыға ендіру , шығару программалары цикл ішінде циклді пайдаланрып құрылады.

A(N,M) матрицасын жадыға ендіру операторы:
m FOR k=1 to n : FOR j =1 to m

… INPUT A(k,j)

n NEXT j,k
k – сыртқы цикл параметрі (матица жолының нөмірі).

N – жол саны, j – ішкі цикл параметрі (баған нөмірі).

M – баған саны.

Циклде INPUT орнына READ операторын пайдалану да мүмкін. Цикл алдында DIM A(N,M) арқылы матрицаның сипатталып қойылуы тиіс.

Нәтижені әкранға матрица түрінде шығару үшін PRINT операторын орналастыру қажет.
А=

Матрицасын ЭЕМ жадына ендіру және эранға шығару программасын құру керек.


10 REM матрицаны ендіру , шығару

20 INPUT “n,m=”, N,M : DIM A(N,M)

30 FOR K=1 TO N : FOR j=1 TO M


  1. READ A(k,j): PRINT USING “####”; A(k,j);

50 NEXT j: PRINT : NEXT K

60 DATA 0, 2, 5, 13, 4, -7, 3.9, -12, 85, 9, 16


Мысалы:
А=; B=

Үшінші ретті квадрат матрицалардың қосындысы мен көбейтіндісін табу керек.

Табылатын S=A+B және C=A*B матрицалары да, үшінші иретті квадрат матрицалар болатыны математика курсынан белгілі. Олардың элементтері:

S(k,j)=a(k,j)+(k,j)

C(k,i)=

формулалары бойынша есептеледі.


10 REM матрицаларды қосу.

20 INPUT “n=”,N: DIM A(N,N), B(N,N), S(N,N)

30 FOR K=1 TO N: FOR j=1 TO N

40 READ A(K,j), B(K,j)

50 S(K,G)=A(K,G)+B(K,G)

60 PRINT USING “###” ; S(K,j);

70 NEXT j: PRINT: NEXT K

80 DATA 3, 1, 2, 2, 0, 4, 3, 0, 1, 5, 5, 2,-4, 1, 0, 1, 7


10 REM матрицаларды көбейту

20 INPUT “n=”,N: DIM A(N,N), B(N,N), C(N,N)

30 FOR K=1 TO N: FOR G=1 TO N

40 READ A(K,j), B(K,j): NEXT j,K

50 FOR K=1 TO N: FOR I=1 TO N

60 C(K,I) =0

70 FOR j=1 TO N

80 C(K,I) =C(K,I)+A(K,j)*B(j,I)

90 NEXT j

100 PRINT USING “####” ; C(K,I);

110 NEXT I: PRINT: PRINT : NEXT K

120 DATA 3, 1, 2, 2, 0, 4, 3, 0, 1, 5, 5, 2,-4, 1, 0, 1, 7


Матрицаларды көбейту формуласына k,j,i параметрлері қатысқандықтан программада бір-біріне салынған үш цикл пайдаланылды. Мұндай циклдерде алдымен ішкі цикл , сонан соң ортаншы цикл, ең соңында сыртқы цикл орындалады. Егер цикл бір-біріне салынған төрт не одан да көп циклдерден тұрса, ондай күрделі циклдің орындалу реті де осылайша.

Практикада INT , RND, RANDOMIZE, SGN стандартты функцияларын пайдалану жиі кездеседі (integer-бүтін, random не randomize- кездейсоқ, sign- таңба).

INT(X) – X нақты санынан кіші ең үлкен бүтін санды анықтайтын функция, мысалы, INT(3.6)=3, INT(-3.6)=-4 (х-тің мәні оң болса, INT функциясының орындайтын әрекеті FIX(X) функциясының әрекетімен бірдей).

Әдетте INT(X) ЭЕМ арқылы х нақты санын кез-келген n ондық разрядты дәлдікпен дөңгелектеу үшін пайдаланылады. Дөңгелектеу формуласы:

INT (x*10^n+0.5/10^n) (n=0,1,2…)

Мысалы INT (15.8376+0.5)=16 (n=0)

INT (15.8376*10+0.5)/10=15.8 (n=1)

INT (15.8376*10^2+0.5)/10^2=15.84 (n=2)


RND(x) – 0 мен 1 аралығында кездейсоқ нақты санды өндіретін функция. Мұнда х-тің мәні үшін кез-келген санды, мысалы, 1-ді алуға болады, не оған сандық мән берілуі де мүмкін. RND функциясы стандартты функция болғандықтан, оның мәнін ендіру программасы Бейсик интерпретаторымен бірге тұрақты жазып қойылған. Сондықтан бұл функцияның кездейсоқ деудің орнына псевдокездейсоқ деп те атайды. (псевдо-жорамал, жалған). Мысалы, 10 PRINT RND(1) операторының орындалу нәтижесі экранда .1213501 түрінде көрінуі мүмкін. Осы операторды циклдің денесі ретінде пайдаланып экранға (0,1) аралығындағы басқа кездейсоқ сандарды да шығаруға болады, мысалы,
10 FOR n=1 to 5

20 PRINT RND (1)



  1. NEXT

run

. 1213501

. 651861

. 8688612

. 7297625

. 7988531


RUN командасын қайталап берсе де, экранға осы мәндер шығады. Оларды осы аралықтағы басқа мәндер бойынша өндіру үшін цикл алдында RANDOMIZE (TIMER) командасын беру қажет. (TIMER-ді жақшаға алмай да жазу мүмкін ).

Кейде кез-келген (a:b) аралығындағы кездейсоқ санды пайдалануға тура келеді. Бұл кезде RND функциясын (B-A)* RND (1)+A түрінде алу керек. Мысалы, әр жолы (20:50) аралығындағы кез-келген 5 бүтін санды экранға шығару программасы мынадай:

10 RANDOMIZE (TIMER)

20 FOR K=1 TO 5

30 Y=INT (30*RND(1)+20)

40 PRINT Y

50 NEXT K

SGN(X) функциясы х санының таңбасын анықтайтын функция (мұны сигнум функция деп те атайды):



Программада бұл функцияны кейде шартты өту (IF) операторының орнына пайдалану да ықтимал, мысалы, А(20) массивінің нольге тең элементтерінің санын анықтау программасының мынадай үзіндісін

100 j = 0

110 FOR k=1 to 20

120 IF A(k)< > 0 THEN 140

130 j=j+1



  1. NEXT

төмендегіше жазу да мүмкін.

100 j=0


110 FOR k=1 to 20

120 j =j +1 – SGN(ABS(A(k)))



  1. NEXT

Мұнда алғашқы үзіндіге қарағанда бір жол үнемделгені көрініп тұр.

Динамикалық массивтер.

Көптеген массивтерде массив өлшемін алдын-ала емес, программа жұмысы барысында анықтаудың маңызы зор. Бұл үшін массив өлшемдерін еркімізше бірнеше рет өзгерте алу мүмкіндігі болу керек. Қандай жағдайда керек болуы мүмкін. Мысалы, массив ойында әскерлердің Санин сақтауға арналған болсын. Басында әскерлер саны 100 болсын, ойында оларды жою барысында олардың саны азаяды. Ойында жаңадан бастаған кезде қайтадан 100-ге тең болады. Мұндай жағдайларды элементтерінің саны белгісіз массивтерді пайдаланған дұрыс.

DIM операторы арқылы статикалық (орныққан) массивтер деп. аталатын массивтер сипатталды. Олардың элементтерін сақтау үшін жады інтерпретатор арқылы бөлінеді және жұмыс барысында өзгермейді. Программада элементтерінің саны айнымалы болатын динамикалық массивті пайдалану үшін REDIM операторы қолданылады. Оның DIM операторынан айырмашылығы жоқ, тек ол арқылы сипатталған масив динамикалық деп. аталады және оларға жады программа жұмысы кезінде бөлінеді.

REDIM DinArr (100) AS INTEGER

Динамикалық массивті анықтаудың мынадай да екі жолы бар:


  1. DIM операторында массив шекаралары ретінде сан емес, айнымалы немесе өрнек қолданылады. Олардың мәні тек программалық жұмыс істеу кезінде анықталады, сондықтан мұндай операторды QBASIC динамикалық массивті анықтау операторы деп есептейді.

DIM ABC (X1% TO X2%+12) AS STRING

  1. DIM операторының алдындағы жолды дәйекше ‘ символынан соң немесе REM операторынан массив құрылымдарын көрсету керек. Құрылым статикалық ($STATIC) немесе динамикалық ($DINAMIC). Мысалы, бастапқы өлшемдері 100 және 1000 болатын екі динамикалық массивті сипаттау үшін төмендегі операторларды орындау керек.

‘$DINAMIC

DIM A1 (100) AS INTEGER, A2 (1000) AS INTEGER

345 элементтен тұратын статикалық массив былай сипатталады.

‘$STATIC


DIM A (345) AS INTEGER

Динамикалық массивтер өлшемдерін өзгерту үшін құрылған. Өзгерту үшін REDIM операторы арқылы жаңа шекарасын көрсетіп, қайтадан анықтау керек.

Мысалы:

REDIM A% (1 TO 2)



A%(2)=2

‘AY.(3) элементі жоқ

REDIM A% (2 TO 3)

A%(3)=3


‘Енді A%(1) элементі жоқ.

Динамикалық массив өлшемдерін өзгертуді үйрендік. Егер массив өлшемдері нақты сандары арқылы емес, айнымалы шама арқылы берілсе, онда массивтің ағымдық шекараларын анықтау үшін LBOUND( ) және UBOUND( ) деген стандартты функциялар қолданылады.

Жазылуы:

LBOUND {массив аты},{өлшем нөмірі}

UBOUND {массив аты},{өлшем нөмірі}

LBOUND функциясы динамикалық массивтің төменгі шекарасының ағымдық мәнін анықтау үшін қолданылады. Өлшем нөмірі ағымдық шекараның қай өлшем үшін анықталатынын көрсетеді (1-бірінші, 2-екіншісі т.с.). Егер массивте бір – ақ өлшем болса. бұл өлшемді көрсетпей-ақ қоюға болады.

Мысалы:

x%=5


REDIM A%(X% TO 15, 200)

x%=UBOUND (A%) ‘x% 15-ке тең болады

x%=LBOUND (A%,2) ‘x% 0-ге тең болады
Массивті тазалау.

ERASE операторы динамикалық массивке бөлінген жадының барлығын тазалайды. Бұл кезде массивте бірде-бір элемент қалмайды. Тазаланған массивпен жұмыс істеу қатеге әкеледі. Бұл массивпен қайтадан жұмыс істеу үшін REDIM операторы арқылы оның шекараларын анықтап алу керек.

ERASE операторы сандық типті статикалық массивке қолданылса, оның барлық элементері 0-ді қабылдайды, STRING типті массив болса бос жолдар болады.

Оператордың жазылуы.

ERASE (үтір арқылы ажыратылған массив аттары)

Мысалы

REDIM A% (20)



DIM B% (1 TO 1)

B%(1)=5


ERASE B%

A%(0)=B%(1) ‘A%(0) 0-мәнін қабылдайды

ERASE A%,B%

‘A% массивімен жұмыс істеуге болмайды

. . .

REDIM A%(50 TO 100)



‘A массивімен қайтадан жұмыс істеуге болады.

Лекция 15

Таќырыбы: Функция

Жоспары:

1. Көмекші программалар

2. Функцияны анықтау

3. Функция параметрлері

4. Функция ішіндегі айнымалыларды анықтау

5.Негізгі программаға оралу

6.Жергілікті айнымалылардың мәндерін анықтау

Пайдаланылѓан єдебиеттер:

С. Бобровский. Программирование на язике Qbasic

О. Камардинов. Есептеуіш техника және программалау
1) Программа құру барысында программаны аяқталған логикалық әрекеттерді орындайтын тәуелсіз кішігірім модульдерге бөлген ыңғайлы. Олар әрекеттерді орындап болған соң басқаруды негізгі программаға береді. Құрылымы дұрыс ойластырылған модульдердің дайын мүмкіншіліктерін басқа қосымшаларда (программаларда) қайта пайдалануға болады.

Мұндай модульдерді Бейсикте функция және процедура түрінде ұйымдастыруға болады. Оларды жалпы көмекші программа деп атайды. Функцияның процедурадан айырмашылығы: функция жұмысының нәтижесін негізгі программаға береді, ал процедура операторлар тізбегін орындайды. Функция немесе процедура өңдейтін мәндер – параметрлерді беру үшін оларды функция атынан соң жай жақшалардың ішінде үтір арқылы бөліп көрсету керек.

2) Жаңа функцияны анықтау үшін Qbasic редакторында Редактирование - Function комдасын орындау керек. Шыққан диалогты терезеде функция атын жазу керек. Функция атына қойылатын талап, айнымалы атына қойылатын талаппен бірдей. Типті сипаттайтын символдар арқылы функцияның типін , яғни негізгі программаға қайтаратын мәнің типін көрсету керек.

Мысалы F 1 %

Көрсетілген атпен жаңа функция құрылады.Бұл терезеде мынадай терезе автоматты түрде пайда болады.

FUNCTION F1 %

END FUNCTION

Бірінші жолда FUNCTION қызметші сөзі арқылы бүтін мәндер қабылдайтын F 1% жаңа функция анықталады. Операторлар тізбегі осы екі жолдың аралығында орналасуы керек.

3) Функцияның атынан соң жай жақшалардың ішінде үтір арқылы ажыратылған параметрлер ( аргументтер) тізімі көрсетіледі. Олардың типті сипаттайтын символдар арқылы немесе AS командасы арқылы көрсетілуі керек. Ешқандай тип көрсетілмесе компьютер ! белгісін қойып, SINGLE типті деп қабылдайды.

Мысалы F1%(X1%)

4) Керекті есептеу жұмыстарын жүргізу үшін функцияға аралық есептеулер мен әрекеттердің нәтижесін сақтайтын уақытша ( жергілікті - локальные) айнымалылар қажет болады. Мұндай жергілікті айнымалылар функцияның ішінде DIM операторы арқылы сипатталады. Функцияның орындалуы аяқталған кезде, бұл жергілікті айнымалылар жоғалып , олар алып тұрған жолды босатады.

5) Жаңа функция құру QBASIC редакторында жеке терезеде орындалады. Негізгі программа қайда ? Әрине ол жоғалып кеткен жоқ. Көмекші программалармен жұмыс істеу кезінде QBASIC редакторы программистердің негізгі программаны, көмекші программаны жеке-жеке терезеде орындауын қамтамасыз етіп ыңғайлы жағдайды қалыптастырады. Негізгі прораммадан көмекші программаға және керісінше тез өту үшін Просмотр - Subs командасын немесе F2 клавишін басып, көрсетілген терезеде керектісін таңдау керек. Мұндағы тізімде әруақытта бірінші жолда негізгі программа аты, одан кейінгі жолдарда көмекші программалар аты көрінеді.

Функция құрып болып, F2 клавишін басып негізгі программаға өткен кезде QBASIC негізгі программаның бас жағына автоматты түрде енгізілген функцияның сипаттамасын қосып қояды.

DECLARE FUNCTION F1 %(X1%)

Мысалы X1=1.7, X2= 3,52 , X3=35,4 үшін Y=3*X^4 + SQR(5*X)-8 функцияның мәндерінің қосындысын табу керек.


  1. Редактирование - Новая Function командасын орындау.

  2. Функция атын жазып (SUM) ENTER-ді басу.

Function Sum

END Function шығады.

3. Функцияның атынан соң жай жақшаның ішінде параметрді көрсетіп, одан соң функцияны жазу керек.

FUNCTION SUM (X)

SUM = 3*X^4+SQR (5+*8)-8)

END FUNCTION

4. F2 клавишін басып, шыққан терезеде негізгі программаны таңдап Enter-ді басу.

5. Declare Function Sum ! (x!)

Input X1, X2, X3

S= SUM (X1) + SUM(X2)+SUM (X3)

PRINT S

Лекция 16

Тақырыбы: Процедура.

Жоспар:

1. Процедураның қолданылуы.

2. Процедураның сипатталуы.
Пайдаланылѓан єдебиеттер:

С.Бобровский. Программирование на языке QBASIC. Москва, 2001.

Камардинов О. Есептеуіш техника және программалау. Алматы, 1997
Єр т‰рлі есептеу ж±мыстарын орындайтын кµлемді программаларды шаѓын программалар –процедуралар т‰рінде ќ±рып оларды негізгі программа біріктірген ыњѓайлы.

Процедура функция сияќты нєтижені ќайтарып бермейді, ол тек ќана операторлар тізбегін орындайды.

Процедурада функция сияќты ќ±рылады

Правка – редактирование- новая- sub

Subvoutine- процедура- аты.

Диологтыќ терезеде процедура Атын енгіземіз . Атына типті білдіретін символды тіркеп жазудыњ ќажеті жоќ.

Sub процедура аты.

End sub.

Мысалы тік б±рышты ‰шб±рыштыњ гипотенузасын есептейтін процедура ќ±ру ќ±ру керек. Катеттері берілген .

Sub gipotenusa (A,B)

C=sqr (A^2+B^2)

Print C


End sub


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   ...   15




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет