СИ тіліндегі директивалар және
СИ тілінің сипаттамасы
СИ тілінің элементтері.
Қолданылатын таңбалар.
СИ тілінде қолданылатын таңбалардың көпшілігін
1. Өзекті сөздерді және идентификаторларды
1-кесте
Латын алфавитінің бас әріптері A
Латын алфавитінің кіші әріптері a
Астын сызу таңбасы _
2. Орыс алфавитінің бас және
2-кесте
Орыс алфавитінің бас әріптері
Орыс алфавитінің кіші әріптері а
Араб цифрлары 0 1
3. Нөмірлеу белгілері және арнайы
3-кесте
Символ Таңбаның аталуы Символ Таңбаның
, үтір ) оң жақша
. нүкте ( сол жақша
; үтірлі нүкте } оң
: қос нүкте { сол
? сұрақ белгісі < аз
‘ апостроф (дәйекше) > көп
! леп белгісі [ квадрат
| тік сызықша ] квадрат
/ бөлшек сызық # нөмір
\ кері сызық % пайыз
~ тильда (мәт) & амперсанд
* жұлдызша ^ логикалық терістеу
+ қосу = тең
- алу “ тырнақша
4. Басқаратын және бөлетін таңбалар.
5. Бөлініп көрсетілген топ таңбаларынан
4-кесте
Басқаратын бір ізділік Аталуы Он
\a Қоңырау 007
\b Бір қадам қайтару 008
\t Көлденең табуляция 009
\n Жаңа жолға өту 00А
\v Тік табуляция 00В
\r Каретканы қайтару 00С
\f Форматты ауыстыру 00D
\” Тырнақшалар 022
\’ Апостроф 027
\0 Нөл-таңба 000
\\ Кері бөлшек сызық 05С
\ddd Сегіздік көрсетудегі ПЭВМ теру
\xddd Он алтылық көрсетудегі ПЭВМ
\ddd және \xddd (мұнда d
\r – жалпы басқаратын бір
\015 – сегіздік басқаратын бір
\x00D – он алтылық басқаратын
Жол тұрақтыларында әрқашан да міндетті
“ABCDE\x009FGH” берілген жолдың команда СИ
Бұл жағдайды көрсете кетейік, егер
Константалар
Программадағы өлшемдердің түгелделіп шығуы константалар
Бүтін константа: бұл ондық, сегіздік
Сегіздік константа міндетті түрде нөлден
Он алтылық константа міндетті жүйелілік
Бүтін константалардың мысалдары:
Ондық константа
16
127
240
Сегіздік константа
020
0117
0360
Он алтылық константа
0x10
0x2B
0XF0
Егер теріс бүтін константа құру
Әр бүтін константаға түрленуді анықтайтын
Константа типі келесі түрде анықталады:
ондық константалар белгілері бар өлшем
сегіздік және он алтылық константаларға
5-кесте
Он алтылық констан-талар ауқымы Сегіздік
0x0 – 0x7FFF 0 -
0X8000 – 0XFFFF 0100000 -
0X10000 – 0X7FFFFFFF 0200000 -
0X80000000 – 0XFFFFFFFF 020000000000 -
Кез келген бүтін константаны long
5l, 6l, 128L, 0105L, OX2A11L.
Жылжымалы нүктелі константа – бұл
Формат келесі түрге ие:
[цифрлар].[цифрлар][Е|е[+|-]цифрлар].
Жылжымалы нүктелі сан бүтін және
Жылжымалы нүктелі константа екі еселенген
Теріс өлшемді анықтау үшін минус
Мысалдар: 115.75, 1.5E-2, -0.025, 0.075,
Символды константа – апострофта қорытындыланған
Басқарушы тізбек және символ түрінде
‘’ – бос орын,
‘Q’ – Q әріпі,
‘\n’ – жаңа жол символы,
‘\\’ – кері бөлшекті сызық,
‘\v’ – тік табуляция.
Символды константалар int типіне ие
Жолдық константа (бедербелгі) – тырнақшамен
Айта кетейін, барлық басқаратын символдар
Жолдың бедербелгі символдары оперативті сақтау
Әр жолдық бедербелгі аяғында құрастырушы
Жолдық бедербелгі char[] типіне ие.
Маңызды ерекшелікті ескерейін, нөлдік символ
“белгісіз ұзындықты жол \n”
бедербелгіге толығымен ұқсастық
“белгісіз ұзындықты жол”.
Жолдық бедербелгіні тіркеу үшін ашық
Идентификатор
Идентификатор деп – сандар және
Ең маңызды мәселе құрастырушы идентификаторда
Біріншіден, идентификатор өзекті сөздермен, қосарланған
Екіншіден, (_) астын сызу символын
Үшіншіден, сыртқы айнымалыларды анықтау үшін
Түйінді сөздер
Түйінді сөздер – бұл белгілі
Түйінді сөздердің тізмін келтірейік
auto double int struct break
register tupedef char extern return
unsigned default for signed union
volatile continue enum short while
Сондай-ақ, қарастырылып отырған жағдайда СИ
_asm, fortran, near, far, cdecl,
far, huge, near түйінді сөздері
Түйінді сөздер идентификатор ретінде қолданыла
Программа мәтінінде түсініктемелерді қолдану
Түсініктемелер – бұл символдар жиынтығы,
/* программаға түсініктеме */
/* алгоритм бастамасы */
немесе
/* түсініктемені келесі түрде жазуға
Түсініктемелерді қате анықтау.
/* алгоритмге түсініктеме /* негізгі
немесе
/* алгоритм шешіміне түсініктеме */
СИ тіліндегі директивалар және оларды
Жүйенің кірістік мәліметтері ретінде, жүйе
Жүйеде келесі директивалар анықталды:
$func – формулалар хабарламасы;
$insert_c – СИ тіліндегі формуланың
$func_i – $func және $insert_c
$str, $str_df – формуланы мәтін
$diff – формуланы дифференциалдау;
$calc – формуланың сандық мәндерін
$Jacob – якобианды есептеу;
$Taylor_coef – Тейлор қатарының коэффициентін
$Taylor1 – бір айнымалы функцияны
Бұл директивалардың ішінен тек $func,
//insert жүйесі жұмысының нәтижесімен файлды
$func директивасы
$func директивасы формуланы жариялау үшін
$func формула_аты(аргумент_1, …, аргумент_n)=формула_денесі;
Мұндағы
формула_аты – берілген формула аты.
аргумент_1, ..., аргумент_n – формула
Формулалар ішінде программаның ауқымды айнымалыларын
Мысалы:
$func f(x,y)=x^2+u*y+1;
Мұндағы u – f функциясына
Күрделі функцияларды көрсету үшін аралық
$func u(x,y)=x+y-1;
$func v(x,y)=sin(u)*x;
$func g(x,y)=u*v-y/x.
$insert_c директивасы
$insert_c директивасы формуланы СИ тіліндегі
$insert_c директивасы келесі пішімге ие:
$insert_c(формула_аты);
Мысалы:
$func f(x,y)=x^2+3*y+1;
$insert_c(f);
Нәтижесінде Diff жүйесі келесі СИ-функциясының
double f_c(double x, double y)
{return(pow(x,2.0)+3.0*y+1);}
Бұл директиваны бір формула үшін
$func_i директивасы
$func_i директивасы $func және $insert_c
$str, $str_df директивалары
$str және $str_df директивалары формуланың
$str(мәтін_буфері, формула_аты);
Мұндағы
мәтін_буфері – программада анықталатын мәтін
формула_аты – формула аты, буферге
Басқа директивадан ерекшелігі, $str және
Мысалы:
$func_i u(x,y)=x+y-1;
$func_i v(x,y)=sin(u)*x;
$func_i g(x,y)=$diff(v,x);
$str (s,g);
$str_df (s,g);
Жүйе жұмысының нәтижесінде келесі көріністер
/*$func_i u(x,y)=x+y-1;*/
/*$func_i v(x,y)=sin(u)*x;*/
/*$func_i g(x,y)=$diff(v,x);*/
/*$str (s,g);*/
$strcpy(s,”g(x,y)=$diff(v,x)”);
/*$str_df (s,g);*/
$strcpy(s,”g(x,y)=sin(u(x,y))+cos(u(x,y))*x”);
$diff директивасы
Директива формула денесінің ішінде қолданылады
Директива келесі пішімге ие:
diff(бастапқы_формула, аргумент_1 {:дәреже_1}, ..., аргумент_n
Мұндағы
бастапқы_формула – міндетті түрде дифференциалданатын
аргумент_1 {:дәреже_1}, ..., аргумент_n {:дәреже_n}
Мысалы:
$func f(x,y)=x^2/y+3*y+1;
$func g(x,y)=$diff(f,x:2,y);
Дифференциалдау операциясының нәтижесі болып, келесі
$func g(x,y)=-2.0/y^2;
$calc директивасы
$calc директивасы формула аргументтерінің мәндері
$calc(формула, аргумент_1=сан_1, ..., аргумент_n=сан_n)
Мұндағы
формула – мәндерін табу керек
аргумент_1=сан_1, ..., аргумент_n=сан_n – есептелетін
Мысалы:
$func f(x,y)=x^2+3*y+1;
$func g(x,y)=f+$calc(f,x=5, y=0.7);
Нәтижесі ретінде g(x,y) функциясының хабары
$func g(x,y)= x^2+3*y+29.1;
$Jacob директивасы
$Jacob директивасы формула денесінің ішінде
$Jacob директивасы келесі пішімге ие:
$Jacob(формула_1, …, формула_n, аргумент_1, …,
Мұндағы
формула_1, …, формула_n, – якобианды
Есептеу нәтижесінде аналитикалық түрдегі функционалды
Мысалы:
$func u(x,y)=x+y-1;
$func v(x,y)=sin(u)*x;
$func g(x,y)=$Jacob(u,v,x,y);
Нәтижесінде cos(u)*x-(sin(u)+cos(u)*x) алынады.
$Taylor_coef директивасы
$Taylor_coef директивасы формула денесінің ішінде
$Taylor_coef директивасы келесі пішімге ие:
$Taylor_coef(формула, аргумент_1: дәреже_1: мән_1, ...,
Мұндағы
формула – Тейлор қатарының коэффициентін
аргумент_1: дәреже_1: мән_1, ..., аргумент_n:
мән_i – i-ші аргумент мәні.
Жұмыс нәтижесінде бірнеше айнымалылардың жалпы
Мысалы, x=1.5 нүктесінде v(x,y)=sin(x+y-1)*x функциясының
$func_i u(x,y)=x+y-1;
$func_i v(x,y)=sin(u)*x;
$func_i a2(y)=$Taylor_coef(v, x:2:1.5);
Жұмыс нәтижесінде келесі көріністер алынады:
double u_c(double x, double y)
{return(x+y-1.0);}
double v_c(double x, double y)
{return(sin(u_c(x,y))*x);}
double a2_c(double x, double y)
{return((-sin(y+0.5)*1.5-2.0*cos(y+0.5))/2.0);} ??
$Taylor1 директивасы
$Taylor1 директивасы формула денесінің ішінде
$Taylor1(формула, аргумент_1: дәреже_1: мән_1, ...,
Мұндағы
формула – міндетті түрде Тейлор
аргумент_1: дәреже_1: мән_1, ..., аргумент_n:
Нәтижесі ретінде, көрсетілген функцияның жіктелу
$func_i v(x)=sin(x);
$func_i g(x)=$Taylor1(v,x:5:0)/x-1;
фрагменті орындалғаннан кейін
double v_c(double x)
{return(sin(x));}
double g_c(double x)
{return((x-0.16667*x*x*x+0.00833*pow(x,5.0))/x-1.0);}
алынады.
Тейлор қатарының коэффициенттері double пішімінде