Cи тілінде бағдарламалау Берикжан Касымов, 2018-2019
31
http://astanabilim.kz/infor/c
Шектеуші шартқа тәуелді қосынды
Элементтер саны белгісіз болғандағы күрделі есептерді қарастырайық
Есеп. Тізбектің барлық элементтерінің қосындысын табу керек
𝑆 =
1
2
−
2
4
+
3
8
−
4
16
+ ⋯,
модулі бойынша 0,001 –ден кем емес болған жағдайда
Бұл есептің шешімі тізбектің элементтері модулі бойынша кемитін және
нольге қарай ұмтылған жағдайда ғана болады.
Қанша элемент қосындыға
кіретіндігін біз білгендіктен while немесе do-while циклдерін қолданған жөн.
Есепті шығару жолының бір нүсқасы төменде көрсетілген.
Егер
а айнымалысының мәні
0,001 –ден кіші болған кезде цикл аяқталады.
Бағдарлама бірінші қадамнан циклге кіру үшін
а айнымалысына
0,001 –ден
басқа кезкелген мәнді беру керек.
Егер
а айнымалысы азаймайтын болса, онда
циклдің тақырыптағы шарт
ақиқат болады және бағдарлама «циклденеді».
5. Бағдарламаны тексеру әдістері
𝐃𝐞𝐯 − 𝐂 + + бағдарламасының тексеру құралдары
«Тексеру» («откладка») деген не?
«Тексеру» сөзі «іздеу және бағдарламадағы қателерді дұрыстау дегенді
білдіреді.
Сәйкесінше ағылшынның debugging (тікелей аударғанда «шіркейді
жою») деген сөзінен шыққан. Ол 1940 жылы Mark II компьютерінің
байланысыстарына шіркей кіріп кеткен, сол кезде
есептеуіш техникада ақау
пайда болған.
Бағдарламаларда үш түрлі қателер бөлінеді:
Cи тілінде бағдарламалау Берикжан Касымов, 2018-2019
32
http://astanabilim.kz/infor/c
синтаксистік – операторларды жазу кезіндегі қателер (мысалы: printf
операторының орынына көбінесе print деп қате жазады); мұндай
қателерді қай жолда тұрғандығын транслятор лезде тауып бергендік-
тен тез арада оңай түзетуге болады;
орындаудағы уақыттың қателері (ощибки времени выполнения)-
жұмыс істеу «апаттық» жағдайлар
болғанда болатын қателер,
мысалы: «нольге бөлу» кезңнде т.с.с.
логикалық – алгоритімдегі қателер (бағдарлама жұмыс істеп тұрады,
бірақ басқа нірселерді орындайды, бұндай жағдайда не қылу керек);
мұндай қателерді айқындау және анықтау қиынға түседі, сондықтан
олар кей кездерде қате жазылған команданың
қасында емес басқа
жерлерді көрсетіп тұрады.
«Тексеру» кезінде ең қиыны –ол қателерді табу, яғни қате жазылған
операторды
анықтап
табу.
Қате
жазылған
операторды
табу
автоматтандырылмаған, оны тек адам тауып түзете алады.
Мұндай тексеру
жұмысын жеңілдету алдамшы тәсілдер ойлап тапқан және ол үшін арнайы
«тексерушілер» («отладчики») бағдарлама жазған.
Трассировка
Трассировка – ол жұмыс істеу кезіндегі бағдарламаның қандай да бір
нүктесінде сигналдық хабарламаларды шығаруды ұйымдастырады.
Біріншіден: ондай хабарламаны алғанан кейін
біз білеміз бағдарлама сол
нүктеге түскендігін (жұмысты апаттық жағдайда аяқтаған жоқ және циклденген
жоқ). Екіншіден: бұл хабарламалар арқылы тек мәтіннің қателіктерін ғана емес,
сонымен қатар айнымалының мәндерін дұрыс есептегендігін тексеруге мүмкін-
дік береді. Егер екінші бақылау нүктесіндегі барлық айнымалылардың мәндері
ақиқат болса, ал үшінші бақылау нүктесінде жалған болса,
онда қатені осы екі
нүктелердің арасынан іздеу керек.
Бұл бағдарламаның үш нүктесінде (1,2 және 3) трассировка операторлары
орналасқан: