Тақырыбы: Флойд әдісі бойынша программаның дұрыстығын дәлелдеу
1. Түйін нүктелер. Программаның орындалу жолдары
2. Верификациялау шарттарының ақиқаттығын тексеру
1. Флойд әдісі бойынша программаның дұрыстығын дәлелдеу дегенміз соңғышарттың ақиқаттығы алғышарт ақиқаттылығынан және барлық аралықшарттар ақиқаттылығынан шығатындығын дәлелдеу.
Сонымен талданатын Р программасы р1,р2,...,ри программалық бірліктерінен тұрғызылған болсын, яғни, әрбір программалық бірлік р1(t=1,n) меншіктеу операторы, тармақталу операторы, тармақталу операторы, қайталану операторы немесе, топталу операторы болады. Р программасының верификациялау шарты cν (Р,ір,ор) арқылы белгіленсін, яғни,
cν (Р,ір,ор)→(ір(Х,)∩rр1(х,у)|р2 )&( rр1(х,у) ∩ rр2(х,у)р2) &...&( rрn-1(х,у) ∩ор(X,y)
М±нда енгізу векторы Х(х1,х2), Х1-бµліггіш, х2-бµлгіш ; аралыќ векторы (у1,у2), у1-аралыќ бµлінді, у2-аралыќ ќалдыќ;
Шыѓару векторы Z=(z1,z2), z1-бµлінді, z2-ќалдыќ.
a,b жєне c-программаныњ т‰йін н‰ктелері, б±л н‰ктелерде келесі т±жырымдар ќ±рылады:
a: ір (х1,х2)х1 0х2 0
b: rp1(x1,x2,y1,y2)x1=y1*x2+y2y20
c: op(x1,x2,z1,z2)x1=z1*x2+z2z20x2z2
b т‰йін н‰ктесінде ќайталау тілінеді, нєтижесінде программа ‰ш жолѓа бµлінеді: бірінші жол-а-дан b-ѓа дейін (1-ші жєне 2-ші жол кесінділері), екінші жол ќайталау бойынша b-дан b-ѓа дейін (2-ші, 3-ші жєне 4-ші жол кесінділері), ‰шінші жол b-дан c-ѓа дейін (2-ші, 5-ші жєне 6-шы жол кесінділері).
Верификациялау шарттарын ќ±ру жол операторларын кері баѓытта (ретте) ќарастыру нєтижесінде ж‰зеге асырылады.
Бірінші жол ‰шін:
Ір(х1,х2,) (х1,х2,у1,у2,)у10,у2х1
Яѓни, х10х20х10*х1+х2х10
Екінші жол ‰шін:
rp1(х1,х2,у1,у2,)(у2х2rp2(х1,х2,у1,у2,)у1у+1,у2у2-х2
Үшінші жол үшін:
rp2(X1, X2, y1, y2) (x2 y2 op (x1,x2,z1,z2) z1=y1 ),
z2=y2
яғни,
x1=y1x2+y2 y2 O (x2y2x1=y1* x2+y2 y2 O x2 y2) (3)
2. Берілген программаның дербес дұрыстығын дәлелдеу, осы программадағы барлық жолдарға арнап құрылған (1), (2) және (3) верификациялау шарттарының ақиқаттығын орнатуға келіп тіреледі.
(1)- формуладан арифметикалық амалдардф орындап біткен соң мынадай x1 x2 o x1=x1 x1 o логикалық өрнек шығады, мұндағы x1=x1- 2h әр қашанда ақиқат (тавтология), сондықтан оны қысқартып тастап өрнектен мынадай X1Ox2Ox1 O формула алуға болады.
(2)- формуладан арифметикалық амалдарды орындап біткен соң және (С) және С түріндегі формулалардың логикалық теңмәнділігін, сондай-ақ, конъюнкцияның коммутативтілігін ескере отырып, түріндегі аксиоманы (мәні әрқашан ақиқат формуланы) алуға болады, яғни,
x1=y1* x2+y2 y2x2 y2 O x1=y1 * x2+y2x2
A B A
(3)- формуланы түрлендіре отырып D D түріндегі аксиоманы алуға болады, мұнда D арқылы мына х1=y1 *x2+y2 y2 x2 y2 әрнегі белгіленеді.
Енді алынған (1), (2) және (3) верификациялау шарттарының ақиқаттығын тексеру үшін мән орнату функциясы VAL-ң көмегімен х1 және х2 енгізу айнымалылары үшін нақты тестілік деректер алайық, мысалы, VAL (х1, х2) = (7,3) болсын. Сонда верификациялау шарттары бойынша айнымалылар үшін келесі мәндерді аламыз:
7О 3О 7=О*7+7 7О; (1)
7=1*3+4 & 4O (43 Й 7=(1+1)* 3+4-3 & 43; (2)
7=2*3+1& 1 O (317=2*3+1& 31) (3)
(1’’). (2’’)және (3’’) өрнектердің ақиқаттығы көрініп тұр, яғни, P программасын верификациялау шарты сv (Р, і, о ) ақиқат болады, ол жоғарыдағы теорема V. 1 бойынша ір {p}op-ң ақиқаттығын көрсетеді. Ендеше, біз қарастырған бүтін санды бүтін санға бөлуді орындайтын З программасы дербес дұрыс.
Лекция 14 Таќырыбы: Программалау тілдерініњ сипаттары
-
Машиналық тіл. Жасанды тіл.
-
Программаның орындалуы
1. Алгоритмніњ машиналыќ тілдегі бейнесі программа деп аталады. Ал программа жазуѓа арналѓан тілі программалау тілі дейді. Сондыќтан машиналыќ тілдердегі барлыќ б±йрыќтар мен н±сќаулар комьпютердіњ ќ±рамына кіретін функционалдыќ бµліктер арќылы орындалады. Машиналыќ тілдер комьпютерлердіњ алѓашќы интеллектуалдыќ (зерделік) дењгейін аныќтайды. Кейін неше т‰рлі программаларды комьпютердіњ жадына саќтай отырып, оныњ интеллектуалдыќ дењгейін кµтеруге болады.
Машиналыќ тіл де барлыќ б±йрыќтар мен н±сќаулар тек “0” мен “1”-ден т±ратын тізбектер арќылы арќылы бейнеленеді. Сондыќтан машиналыќ тіл де программаларды жазу адам ‰шін µте ќиын. Себебі бір жаѓынан барлыќ амалдар мен н±сќаулардыњ екілік бейнелерін (кодтарын) есте саќтау керек, екіншіден кез келген алгоритімді осы машиналыќ амалдар мен н±сќаулар арќылы µрнектеліп білу ќажет. Алѓашќы деркетер, нєтиже жєне олардыњ адрестері екілік сандар арќылы бері леді. Тармаќталу н±сќауын жазу ‰шін басќару беретін адресті ќолмен есептеу ќажет Сол сияќты т±рын істелмеген кµптеген ж±мыстарды басынан бастап ќайтадан жасау керек. М±ныњ бєрі бір ден кµзге кµрінбейтін еµптеген ќателер жіберуге соќтырады. Жазылѓан программалар оќуѓа жєне т‰сінуге ќолайсыз болѓандыќтан, олардыњ ішіндегі жіберілген ќателерді тауып т‰зету µте кµп уаќытты жєне жылдамдылыќты ќажет етеді. Сондыќтан адамдар µздерініњ ж±мыстарын жењілдету ‰шін программа жазуѓа ыњѓайлы басќа жасанды тілдер ойластыра бастады.
2. Жасанды тілі компюьтер µзініњ машиналыќ тіліне адамныњ ќатысуынсыз (автоматты т‰рде) аударатындай етіп жасайды. Аударуды программа орындайды. Ондай программаны аѓылшын тілінде “транслятор” (аудармашы) деп атайды, ал аудару процесін “трансляция” дейді. Сондыќтан программаны жасанды тіл де пайдаланып жазѓан кезде комьпютердіњ ж±мысы екі кезењнен т±рады.
-
Жасанды тілден машиналыќ тілге трансляциялау;
-
Машиналыќ тілдегі программаны орындау.
Программаны орындаудаѓы осы екі кезењде кµрсетілген ж±мысты ж‰зеге асырудыњ екі т‰рлі єдісі бар:
1.Компиляция єдісі-алдымен жасанды тілдегі программа т‰гелдей машиналыќ тілге аударылады, сонан кейін б±л программа басынан орындалады.
2.Интерпретация єдісі- жасанды тілдегі программаныњ єрбір єрекеті (н±сќауы немесе амалы) жеке алдын ала аударылмастан бірден машиналыќ тілде орындала бастайды.
Яѓни, компиляция єдісінде жасанды тілдегі программа тек ќана бір рет ќарастырылады жєне аударылѓан программаны бірнеше рет орындауѓа болады, ал интерпретация єдісінде єр орындау алдында жасанды тілдегі программаны ќайтадан ќарастыру ќажет. Сондыќтан компиляциялау єдісі бойынша шыќќан орындалуѓа дайын программа жылдам ж±мыс істейді, біраќ программаны т‰гел орналастыру ‰шін жадыныњ кµп орнын алады. Керсінше, интерпретациялау єдісі жадыныњ аз кµлемін ќажет етеді де, біраќ аќыры (шабан) ж±мыс істейді.
Сонымен осындай жасанды тілдер де комьпютерге т‰сінікті болады, сондыќтан оларды да біз программалау тілдері дейміз.
Ќазіргі кезде комьпютердіњ кµмегімен єрт‰рлі есептерді шыѓаруѓа м‰мкіндік беретін сан алуан программалау тілдері бар. Єр тілдіњ кемшілігі де, жетістігі де бар. Мысалы, кейбір тілде программаны жазу оњай болѓанымен оны орындау µте кµп уаќытты талап етеді немесе жадыныњ кµп орнын алады.
Достарыңызбен бөлісу: |