Пәні бойынша ОҚУ-Әдістемелік кешен


Стандартты математикалық функциялар



бет25/111
Дата11.09.2020
өлшемі1,21 Mb.
#77805
1   ...   21   22   23   24   25   26   27   28   ...   111
Байланысты:
UMK Ci tilinde programmalau (1)
Delphi программалау тілі , Бөлім 2 Объектілік
3. Стандартты математикалық функциялар

Си тілінде математикалық функциялардың тізімінде 60 аса атау бар. Олардың түпнұсқалары тақырыптық және файлдарында сипатталған. Барлық функциялардың ( abs, lexp, poly, pow10 және random басқалары) типтері double және бұлардың барлығы( abs, labs, rand және random функцияларынан басқалары ) double типті мән қайтарады. Егер функция атынан кейін L( ) суффиксі болса,ол Long, double типтес деректер өңдеуге арналған. Тригонометриялық функциялардың бұрыштары радианмен беріледі. Математикалық функциялар кестесі №5 кестеде келтірілген.



5 кесте






Матем.функциялар






Мат.функ-лар

1

sin(x)

sinx

C++ жүйесінің мат.функ.

2

cos(x)

cosx



3

tan(x)

tgx

21

mod(x,&y)

x mod y (y-адр)

4

asin(x)

arcsin x,

22

poly(x,n,a)

a0,..an.x,n-бер.

5

acos(x)

arccosx,

23

polar(r,f)

z=r(sinf+icosf)

6

fmod(x,y)

x mod y

24

hypot(x,y)



7

atan(x)

arctgx

< complex.h>

8

atan2(y,x)

arctg(y/x)

25

Real(z)

Rez=x

9

sinh(x)

shx=(ex-e-x)/2

26

imag(z)

Imz=y

10

cosh(x)

chx =(ex+e-x)/2

27

norm(z)



11

tanh(x)

thx=(ex-e-x)/(ex-e-x)

28

arg(z)

Бас мән z=x+iy

12

exp(x)

ex

29

conj(x)



13

log10(x)

lgx x>0

30

imag(z)

Imz=y

14

pow(x,y)



31



15

fdexp(x,n)



32

Rand()

[0,RAND_MAX]

16

sqrt(x)



33

Random(n)

( 0,n-1)

17

log(x)

lnx, x>0



18

ceil(x)

-x санынан кем емес бүтін

34

Түрлендіру функциялары

(unsigned int)(x), long(x)



19

floor(x)

-x санынан аспайтын бүтін

35

(long double)(x), float(x)

20

fabs(x)



36

sizeof(x), өрнектің немесе х типтің мөлшері (байт)



Дәріс №4. Операторлардың жалпы синтаксисі. Операторлық өрнек. Си тілінің стандартты функциялары: енгізу - scanf(), gets(), getch() және шығару prinf (), puts(), putchar() функциялары. Енгізу және шығару стандартты функциялары.

Си тілінде енгізу-шығару операторлары жоқ болғанмен, оның орнына программада мәліметтерді енгізіп-шығарудың стандарттық жүйесін қамтамасыз ететін көптеген Си кітапханалық функциялар бар: стандартты пішімделген енгізу scanf() және шығару printf() функциялары; жолдар мен символдарды енгізу - gets(), getch() және шығару puts(), putchar() функциялары. Сонымен бірге түрлендіру, таңбалы, таңбасыз бүтін, жылжымалы үтірлі санды, олардың ерекшеліктерінің нұсқалары бар. Стандарттық енгізу-шығару функциялар жиынтығы мол, әртүрлі типті деректер, әртүрлі құрылғылар және пішімсіз енгізу-шығару жұмыстарына арналған ( cout<<, cin>> ) және т.б. көптеген функциялар бар. Сыртқы ортамен деректер алмасу файлындағы енгізу-шығару функциялар кітапханасын пайдалану арқылы орындалады. Си тілінде деректерді компьютер жадына енгізу-шығарудың екі түрлі тәсілі бар: ағындық файлын іске қосу және пішімдеп файлын іске қосу арқылы.



1. Стандартты пішімделген енгізу және шығару. Printf() және scanf() функциялары консолға (экранға, баспаға, пернетақтадан) пішім делген енгізу және шығаруды іске асырады. Пішімдеп енгізу және шығару дегеніміз функция көмегімен деректердің әртүрлі пішімін (форматын) өзіміз басқара алатындай оқу және консолға (экранға,баспаға) шығару. Жалпы жағдайда баспаға беру printf() функциясына қатынаудың түрі:

printf( <пішім тіркесі>, <1-өрнек>, <2-өрнек>,...,);

мұндағы <1-өрнек> ,..., аргументтер тізімі, олар нәтижесін шығару керек тілдің кезкелген объектісі ( айнымалылар, тұрақтылар, өрнектер) болуы мүмкін; ал <пішім тіркесі >- екі жағынан ( ” ) тырнақшамен шектеледі және аргументтердің көрсетілімінің түрін бейнелейді.



printf() функция аргументінің негізгі түрлендірулері :

d,i - int; ондық бүтін сан;

u- int; таңбасыз ондық бүтін сан;

o( octal)- int; таңбасыз сегіздік бүтін;

x - unsigned int; таңбасыз оналтылық бүтін сан; 2F5A

f - жылжымалы нүктелі ондық нақты сан (санды dddd.dddd түрде баспалайды);

s - сhar; типті символдар тіркесі ('\0’ таңбасына дейінгі орналасқан символдарды( жол);

c- int; бір(жалғыз) символ;

e, E- экспоненциалды түрде көрсетілген нақты сан;(dd.ddddedd -түрінде)

g, G- нақты санның ең қысқа көрсетілі;

//Матеметикалық функциялар

#include

#include

#include

main() { clrscr(); float x,y,w; int a,b,c,f, m; float si,co;

puts(" енгізіңіз arg x=?"); scanf("%f",&x);

y=exp(x); printf("x=%4.2f\t y=%4.2f\n",x,y); /* x=2 y=7.39 */

puts(" енгізіңіз arg x<1 ?"); scanf("%f",&x);

y=asin(x); printf("x=%4.2f\t y=%4.2f\n",x,y); / * x=0.5 y=0.52 */

puts(" енгізіңіз aarg x= ?"); scanf("%f",&x);

w=atan(x); printf("x=%4.2f\t w=%4.2f\n",x,w); / * x=6.28 w=1.41 */

puts("енгізіңіз arg x= ?"); scanf("%f",&x);

c=ceil(x);f=floor(x); printf("x=%4.2f\t c=%d\t f=%d\n",x,c,f); /* x=3.62 c=4 f=3 */

puts("енгізіңіз arg a & b = ?"); scanf("%d%d",&a,&b);

m=fmod(a,b); printf("a=%d\t b=%d\t m=%d\n",a,b,m); /* a=50 b=9 m=5 */

puts("енгізіңіз x & y=?"); scanf("%f%f",&x,&y); w=hypot(x,y); printf("x=%4.2f\t y=%4.2f\t w=%4.2f\n ",x,y,w); /*x=1.57 y=3.14 w=3.51 */ si=sin(x);co=cos(x);

printf("x=%4.2f\t si=%4.2f\t co=%4.2f\n ",x,si,co); /* x=1.57 si=1.00 co=0.00*/ }


Кездейсоқ сандар туралы. Int rand (void) функциясы [0,RAND_MAX] аралығындағы (псевдо) кездейсоқ сан береді, мұндағы RAND_MAX <=32767.

X=(double) rand()/ (double) RAND_MAX ;

кездейсоқ нақты сан. Кездейсоқ санның бастапқы мәні randomize() ; операторымен беріледі. Rand() және randomize() операторларының анықтамаларының түпнұсқасы < stdlib.h> , файлдарында */.

// Кездейсоқ сандар

#include

#include

#include

#include

#include



main(){ clrscr();int n,m,z; float y; randomize();

m=rand(); /* */

printf("m=%6d\n",m); /* m=27608 */



puts("Vvedite chislo < RAND_MAX");

scanf("%d",&n); m=random(n); ); /* */

printf("n=%6d z=%6d\n",n, m); /* n=10 000 m= 9728 */



y=(double)rand()/(double)RAND_MAX; /* */

printf("y=%6.4f",y); /* y= 0.0093 */ }


Символдарды енгізу және шығару. getchar() және putchar() функциялары. Консольдық енгізу-шығару функцияларының қарапайымы getchar() функциясы пернетақтадан енгізген символды оқиды да, пернетақтада басылған символдарды экранға шығарады. Мысалы, getchar() функциясына бір қатнағанда текстік ағыннан келесі символ оқиды да, ол функция нәтижесі болады. Айталық, ch=getchar( ); орындалғанда ch-айнымалысының мәні кезекті пернетақтадан енгізген символдарды қабылдайды. Мәтіндік ағын экранға беріледі. Ал, putchar() функциясына қатынау бір символды баспаға береді, курсорды келесі жолға өтеді. Мысалы, putchar(ch) орындалғанда бүтін ch айнымалысының бір символын баспаға береді.

//getchar()- putchar( ) функцияларының жұмысы

# include

#include

main() { clrscr(); char ch;

ch= getchar(); putchar(ch);}


/*__BORLAND ___нәтиже______ B_____________________*/

6. gets() және puts() функциялары. gets() функциясы пернетақтадан енгізілген символдар тіркесін Enter пернесі басылғанша оқиды, Enter пернесі басылғаннан кейін символдық жол соңы ‘\O’ (нөлдік байт) символымен толықтырылады. puts() функциясы символдық жолды экранға шығарады да курсорды экранның жаңа ( келесі) жолына өтуін орындайды. Мысалы, puts (” Turbo Pascal”). Мұнда “\n” ( эскейп тізбек) пайдаланбайды, себебі бұл функция курсорды келесі жолға өтуді автоматты түрде орындайды.

//gets()- puts( ) функциялар жұмысы

#include

main() {clrscr();

char prog[15]; printf(" Turbo \t");

gets(prog);

puts(prog);}

/* Пернетақтадан Borland C C++ енгіземіз 

нәтиже: Turbo Borland C C++ ___________________________*/

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

8. getche() функциясы. Ал, getche() функциясы пернетақтаның қандай бір пернесі басылуын күтеді, перне басылғаннан кейін оның шартбелгісін енгізеді. getchе() функциясын көбіне программада бір символ енгізу үшін пайдаланады.

//17 ____gets() және getch() функцияларымен жұмыс

#include

#include

main() {clrscr(); char str[10];

printf(" str-->"); gets(str); /* str- - */

printf(" str====%s\n",str); /*Turbo C C++*/

printf(" str<10 -->"); scanf("%s",str); /* str< 10- C C++ */

printf("str====%s\n",str); getch(); /*str==== C */ }

/*_______________________________eo program _____________*/

/*_ C_19____Танысу , символдар тіркесімен жұмыс __________ */

# include main ( )

{ int data, month, year; char name[15], town [15];

puts (“ Сіздің атыңыз ?”); scanf (“%s”, name);

puts (“ Туған күнің ? Жұлдызы: ”); scanf (“%d”,&data);

puts (“ Айы( цифрмен) : ”); scanf (“%d”,&month);

puts (“ Жылы ? : ”); scanf (“%d”,&year);

puts (“ Қала ? ”); scanf (“%s”,town);

puts (“ Міне біз таныстық …”);

puts (“ Сіздің атыңыз : %s \n”,name );

printf(“ Сіздің туған қалаңыз %s туған күніңіз %d айы %d жылы %d ”, town, data, month, year); getch(); }

/*_____________________eo program ___________________*/

/* Міне біз таныстық… Сіздің атыңыз: Нурлан Сіздің туған қалаңыз Атырау туған күніңіз 21, айы 12, жылы 1991________ */

/* _ C_20___ getche() функциясымен жұмыс _________________*/

#include

#include

main() { clrscr(); char ch;

puts(" Бір пернені басыңыз l");

ch=getche();

printf( " Сіздің басқан пернеңіз : %c",ch)



Дәріс №5. Белгілеу операторы. Құрамды оператор. Шартты оператор. Цикл операторларының түрлері. Switch, break, continue, return, goto операторлары. Құр оператор.

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

{ операторлар тізбегі }

Күрделі оператор соңына ( соңғы жүйелі ' } ' жақшадан кейін) “;” нүктелі үтір символы қойылмайды , ал егер соңғы жүйелі жақшадан кейін “;” нүк телі үтір болса, оның алдында құр оператор бар болғаны. Кезкелген оператор алдына тамға (метка) жазуға болады, содан кейін осы операторға сілтеме жасауға болады. Тамға бұл атау, ол оператор алдына жазылады да одан кейін « : » қос нүкте қойылып, оператордан айырлады.



Меншіктеу операторы. Меншіктеу операторы '' = '' символымен белгіленеді және жалпы түрі:

<идентификатор>= <өрнек>;

Мысалы: x=5; y=2*x+7; a=y/4; Меншіктеу операциясында өрнектің оң жағының мәні оның сол жағының типіне түрлендіріледі. Мысалы,floаt x; int y; x=2.7389; y=x; нәтижесінде x=2,7389; y=2. Си тілінде меншіктеу операторын арифметикалық операция сияқты өрнектер құрамында (өрнектің мәтінінің ішінде-контекстте) қолдануға рұқсат етілген. Сонда меншіктеу операторы операция ретінде де қарастырылады, ал,өрнекті есеп тегенде операциялар артықшылығы және жақшаларды ескеру қажет. Мысалы, y=(x=(a=5)*2+7)/2 нәтижесі x=17, y=8. Арифметикалық операциялар, оның ішінде меншіктеу операторы арнайы



+= , -=, *=, /=, %=, <<=, >>=, &= ,^=, |=

оперциялармен кеңейтілген. Си тілінде меншіктеу операторын қысқаша жазу нұсқасы:



< идентификатор > < операция таңбасы> = < өрнек>

Мұндағы, <операция таңбасы> жоғарыда келтірілген кезкелген бинарлық арифметикалық немесе биттік операциялардың бірі болуы мүмкін:



x=x+y; x+=y; x=x-y; x-=y; x=x*y; x*=y;

x=x/y; x/=y; x=x%y; x%=y;

Мысалы: int x,y; x=y=5;



x+=2; / *x=7* /

y-=3; / *y=2* /

x*=y; / x=2*7=14 */

x/=++y ; /* y=y+1=3, x=14/3=4 * /

x*=5; /* x=20 */

x%=(y+=3); /* x = 20%6 */

x[i+3]* = 4; /* x[i+3]=x[i+3]*4 */

Cи тілінде меншіктеу операторының кейбір ерекшіліктері:

1) меншіктеу операциясын тізбектей жазуға және бастапқы мән таға -йындауға болады: a=b=c өрнегінде меншіктеу операциясы оңнан солға қарай орындалады, мұнда бастапқыда c мәнін b объектісіне меншіктеп, содан кейін b мәнін a объектісіне меншіктейді. Мысалы, a=b=2+c=3; өрне гінің нәтижесі a=5,b=5,c=3. Мұндай өрнекті Си тілінде lvalue деп атайды. Жәй жақшаға алынған кезкелген меншіктеу операторының оң жағындағы өрнек мәні анықталған болуы керек.

Мысалы, x=(y=2)+3; /* x= 5, y=2 */

v=w=2+3 ; /* v= 5, w=5 */

v/=(w+=3); / * v=1 , w=8 */



p= (( q=x+y)<=w); /* q=7, p=1 */
Си тілінің негізгі түзілімдері. Программадағы ағындарды басқару операторлар көмегімен, асырылады, ал сипаттау программаға айнымалылар, тұрақтылар аттарын енгізуге пайдаланылады. Сипаттаулар да операторлар болғандықтан, олар басқару операторларымен бірге қолданыла береді. Си тілінде жазылған программа операторларының орындалуы басқарушы операторлармен реттеледі. Мұндай басқарушы операторларды (синтаксистік түзілімдерді) 3- топқа бөлуге болады:

  1. Шартсыз өту операторы goto ;

  2. Шартты операторлар if, if-else, else if және switch;

  3. Цикл операторлары for, while және do-while;

Шартсыз өту операторы . Өту операторының пішімі:

Goto < тамға > ;

………………


< тамға >: < операторлар>;

мұнда < тамға > программаның әрі қарай орындалуы қай жолға өтетінін нұсқайды, басқаруды шартсыз тамғасы бар операторға береді.

Си тілінде тамға алдын ала хабарланбайды (сипатталмайды). Тамға (label) дегеніміз идентификатор, тек соңына қос нүкте қойылады. Бірі біріне енгізілген басқарушы операторлардан шығу үшін қолданылады.

Программада goto операторы кездескенде программаның орындалуы < тамға > бар жолға ешқандай шартты тексермей-ақ өтеді, сондықтан да оны шартсыз өту оператры деп атайды.


//Өту операторы _ GOTO

#include< stdio.h>

main() { int x=0, y=2, z;

z=x+y; goto a: z=z/x;

a: z=z*y; printf( '' z=%d\n'',z)}

/*_________________________________________ eo program__*/

/*________________________ нәтиже z=4________________*/

Шартты операторлар if-else . Шартты оператордың толық және толымсыз түрі бар. Шартты оператордың толық түрінің жалпы жазылу пішімі:

if (<өрнек>) <1-оператор>;

else <2-оператор>;

Мұнда <өрнек> кейбір логикалық шарт, оның мәні ақиқат немесе жалған болады. Орындалуы: бастапқыда <өрнек> мәні есептелінеді , егер өрнектің (кейбір шарт) мәні ақиқат болса (нөлге тең болмаса) <1-оператор> орындалады. Егер өрнек жалған болса (мәні нөлге тең) онда <2-оператор> орындалады, әрине else бөлігі болса. Мұндағы операторлар қарапайым да , құрамды да болуы мүмкін. Құрамды оператор { } жүйелі жақшаларға алынған бірнеше операторлар жиынтығы, жақша ішіндегі әр бір оператор “;” нүктелі үтір символымен аяқталады. if операторында шарт екі жағынан жәй жақшаға алынуы міндетті және else түйінді сөзінің алдында “;” нүктелі үтір символы қойылады !.

//Бүтін екі a,b сандарының үлкенін табу

#include< stdio.h>

main() { int a,b; puts(“ 1-ші санды енгіз ”); scanf(“%d”,&a);

puts(“ 2-ші санды енгіз ”); scanf(“%d”,&b);

if (a>b) printf (“a>b”); else printf(“b>=a”);}

/*_________________________________________ eo program__*/



Таңдау операторы - Switсh. Егер программада бірнеше нұсқаның біреуін таңдау керек болған жағдайда ауыстырып қосқыш switсh операторы қолданылады. Оның жазылу пішімі :

switch (<өрнек>);

{ case <1-constant>: < 1-операторлар тізбегі >; break;

case <2-constant>:< 2-операторлар тізбегі >; break;

… … …;



case :< n-операторлар тізбегі>; break;

default:< операторлар тізбегі >;}

Ауыстырғыш-оператордың орындалуы: switch операторынан кейінгі жақшаның ішіндегі өрнектің мәні есептелінеді де, ол мән программадағы case сөзінен кейінгі тұрақтылардың (constant–тамғалар) мәндерімен салыстырылады. Тамғалар тізімінен осы мәнге сәйкесін іздейді. Егер олардың бірі <өрнек> мәніне тең болса, программаны басқару осы жолға беріледі де, осы жолдағы операторлар блогі орындалады. Егер тұрақтылардың мәндерінде <өрнек> мәніне тең болатыны (сәйкес тамға) табылмаса, онда түйінді сөз default тамғасы бар жолдағы (әрине бар болса) операторды орындайды. Бұл түзілімде default түйінді сөз болмауы да мүмкін. <өрнек> мәні ешбір константамен сәйкес келмесе және default түйінді сөзі болмаса басқару switch түзілімінен кейінгі операторларды орындауға беріледі. switch операторындағы жақшаның ішіндегі өрнектің мәні бүтін немесе символ типті болуы керек.



Дәріс №6. Препроцессор директивалары. Препроцессордың логикалық принциптері. Макроанықтауыштар мен макроқойылымдар. Файлдарды қосу. Pragma, #error директивалары.
Препроцессор директивалары. Препроцессор директивалары Си тіліндегі программа текстісінде жазылған және программаны трансляциялау процесіне дейін орындалатын нұсқаулар болып табылады. Олар программа текстісін өзгертуге мүмкіндік береді, айталық, кейбір лексемаларды ауыстыру, басқа файлдан текст әкеліп қою, текст бөлігін трансляциялауды болдырмау т.б. Барлық препроцессор директивалары # таңбасынан басталады. Олардың соңынан нүктелі үтір қойылмайды.

1. #include директивасы


#include директивасы көрсетілген файл құрамын программа текстісіне енгізеді. Бұл директива екі түрде болады:

#include " файл аты "

#include < файла аты >

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

#include директивасы енгізілген түрде болуы мүмкін, яғни файл ішінде де #include директивасы болуы мүмкін. Ал ол осы директиваны қамтитын файл іске қосылғаннан кейін орналасады.

#include директивасы программаға кітапханалық функциялардың прототиптерін қамтитын тақырыптық файлдарды қосуға кең қолданылады, сондықтан Си тіліндегі программалардың көпшілігі осы директивадан басталады..




Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   111




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

    Басты бет